一、 在IDOC段中增加自定义段
当开发在MARA中已经增加了字段(以下举例均以MARA表增强字段为例。)那么需在在IDoc中增加段,以及在自定义段中增加自定义字段。
MASS/MM17的更新逻辑是,通过IDoc增强,将需要修改的数据及IDoc段等信息插入一条到参照结构的内表中,然后通过用户出口中根据结构字段SDATA将数据与字段名做对应关系并赋值。该示例中,我们对MARA表中的“材质”(MARA-ZCL)进行修改。首先,为IDoc的MATMAS03段类型进行扩充增强。
事务码WE31:创建一个新的段类型。点击“创建”,然后在新建界面中,增加可MASS/MM17批量修改的字段。如材质字段(MARA-ZCL)。点击保存,创建自定义段完成。返回界面如下,暂时无需处理。二、 为IDoc MATMAS03创建新的扩展类型
事务码:WE30,输入扩展段的名称,选择扩展,然后点击新建。
在新建界面中,链接基本的类型MATMAS03,然后输入描述等。在Z1MARAM这个扩展段中的E1MARAM段下,点新建,增加第一步创建的IDOC段。
这样就将新增字段分配给自定义段,自定义段分配给标准的IDOC扩展了。保存。
三、 释放IDOC段及扩展
事务码:WE31,输入自定义段的名称,在进入界面后,选择菜单中的“编辑-设置批准。”批准后,版本后打钩表示释放完成。然后再使用事务码:WE30 进入扩展段,进行释放。顺序不能颠倒。
释放完成后,该扩展即生效。
设置后无法更改,只有取消发布后才能进行更改。
每个发布创建之后,开发工作都会产生新的IDoc版本。所有旧版本仍然存储于系统中,从而保留了将现有版本回溯为旧版本的可能,确保向后兼容,所以同样为了向后兼容,新的IDoc版本相对旧版本只能增加数据段和数据字段,而不能减少。
注:一个标准的IDoc类型只能创建一个扩展类型,但是一个扩展类型里可以创建多个扩展类型段。
四、 将扩展段分配给消息类型
事务码:WE82,将创建的扩展段,分配给IDOC的消息类和基本类型。
五、BADI—IDOC段值的获取和写入
此步骤的目的是为了将数据填充到新创建的段中,必须实现BADI: MG_MASS_NEWSEG中的ADD_NEW_SEGMENT方法。
事务码:SE19。新增增强 ZIMP_MG_MASS_NEWSEG。
在类IF_EX_MG_MASS_NEWSEG~ADD_NEW_SEGMENT中增加函数。
剩余部分,请看②。