如何在表格标准中更新物料编号

2020-08-13 17:15发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

以前,我设法使用FM'BAPI_MATERIAL_SAVEDATA'更新了BRGEW字段。
现在,我需要更新字段MATNR,但是不能使用此FM,因为BAPIMATHEAD中的Material结构只有18 Lenght,而我需要更新18以上 lenght.is 有什么办法可以解决此问题?

这是我在更新字段BRGEW时的代码。
 DATA:普通型p小数2。
 数据:xheaddata类似于bapimathead OCCURS 0 WITH HEADER LINE,
       xclientdata像bapi_mara的OCCURS 0,带有标题行,
       xclientdatax像bapi_marax的OCCURS 0,带有标题行,
       xunitsofmeasure类似于bapi_marm的OCCURS 0,带有标题行,
       xunitsofmeasurex像bapi_marmx的OCCURS 0,带有标题行,
       xreturn像bapi_matreturn2一样,在标题行中出现了0,
       返回带有标题行的bapiret2占位0。

 参数p_matnr像mara-matnr。
 参数p_brgew TYPE i。

 刷新xheaddata。
 xheaddata-material = p_matnr。  " <=在此设置材料编号
 xheaddata-basic_view ='X'。
 xheaddata-inp_fld_check ='W'。
 附加xheaddata。

 xclientdata-net_weight ='111'。  " <=在此处设置净重
 xclientdatax-net_weight ='X'。
 xclientdata-unit_of_wt ='TO'。  " <=此处设置测量单位
 xclientdatax-unit_of_wt ='X'。
 附加xclientdata。
 附录xclientdatax。

 xunitsofmeasure-gross_wt = p_brgew。  " <=在此处设置毛重
 xunitsofmeasurex-gross_wt ='X'。
 xunitsofmeasure-unit_of_wt ='TO'。  " <=此处设置测量单位
 xunitsofmeasurex-unit_of_wt ='X'。
 xunitsofmeasure-alt_unit ='ST'。  " <=在此设置ALT的测量单位
 xunitsofmeasurex-alt_unit ='ST'。  " <=在此设置ALT的测量单位
 附录xunitsofmeasure。 附录xunitsofmeasurex。

 通话功能'BAPI_MATERIAL_SAVEDATA'
   出口
     headdata = xheaddata
     clientdata = xclientdata
     clientdatax = xclientdatax
   桌子
     计量单位= x计量单位
     度量单位x = x度量单位x
     returnmessages = xreturn。
 如果sy-subrc = 0。
   通话功能'BAPI_TRANSACTION_COMMIT'
     出口
       等待='X'。
   IF return-type ='S'。
     写:"材料",p_matnr," Berhasil di update",/。
   ELSEIF return-type ='E'。
     写:" Gagal",/。
   万一。
 ENDIF。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

以前,我设法使用FM'BAPI_MATERIAL_SAVEDATA'更新了BRGEW字段。
现在,我需要更新字段MATNR,但是不能使用此FM,因为BAPIMATHEAD中的Material结构只有18 Lenght,而我需要更新18以上 lenght.is 有什么办法可以解决此问题?

这是我在更新字段BRGEW时的代码。
 DATA:普通型p小数2。
 数据:xheaddata类似于bapimathead OCCURS 0 WITH HEADER LINE,
       xclientdata像bapi_mara的OCCURS 0,带有标题行,
       xclientdatax像bapi_marax的OCCURS 0,带有标题行,
       xunitsofmeasure类似于bapi_marm的OCCURS 0,带有标题行,
       xunitsofmeasurex像bapi_marmx的OCCURS 0,带有标题行,
       xreturn像bapi_matreturn2一样,在标题行中出现了0,
       返回带有标题行的bapiret2占位0。

 参数p_matnr像mara-matnr。
 参数p_brgew TYPE i。

 刷新xheaddata。
 xheaddata-material = p_matnr。  " <=在此设置材料编号
 xheaddata-basic_view ='X'。
 xheaddata-inp_fld_check ='W'。
 附加xheaddata。

 xclientdata-net_weight ='111'。  " <=在此处设置净重
 xclientdatax-net_weight ='X'。
 xclientdata-unit_of_wt ='TO'。  " <=此处设置测量单位
 xclientdatax-unit_of_wt ='X'。
 附加xclientdata。
 附录xclientdatax。

 xunitsofmeasure-gross_wt = p_brgew。  " <=在此处设置毛重
 xunitsofmeasurex-gross_wt ='X'。
 xunitsofmeasure-unit_of_wt ='TO'。  " <=此处设置测量单位
 xunitsofmeasurex-unit_of_wt ='X'。
 xunitsofmeasure-alt_unit ='ST'。  " <=在此设置ALT的测量单位
 xunitsofmeasurex-alt_unit ='ST'。  " <=在此设置ALT的测量单位
 附录xunitsofmeasure。 附录xunitsofmeasurex。

 通话功能'BAPI_MATERIAL_SAVEDATA'
   出口
     headdata = xheaddata
     clientdata = xclientdata
     clientdatax = xclientdatax
   桌子
     计量单位= x计量单位
     度量单位x = x度量单位x
     returnmessages = xreturn。
 如果sy-subrc = 0。
   通话功能'BAPI_TRANSACTION_COMMIT'
     出口
       等待='X'。
   IF return-type ='S'。
     写:"材料",p_matnr," Berhasil di update",/。
   ELSEIF return-type ='E'。
     写:" Gagal",/。
   万一。
 ENDIF。
付费偷看设置
发送
3条回答
浮生未央
1楼-- · 2020-08-13 17:57

您好史葛(Stedward McKnight)

我认为无法更新物料编号。 您应该将现有的物料编号复制到新的物料,并将删除标志设置为旧的物料编号。

SAP小菜
2楼-- · 2020-08-13 17:55

更新物料编号的长度,不仅仅是修改值。 它还检查所有特定代码,以确保您在EDI的CALL FUNCTION中使用正确的字段大小。 您没有使用MATN18 ...

第二点,更新MARA表的值将直接影响所有现有文档:采购订单,销售订单,物料清单... ... 计划管理此项目?

能不能别闹
3楼-- · 2020-08-13 17:53

史蒂夫·麦克奈特,

建议您 请仔细阅读OSS注释2215852。

Sap通过引入以_LONG结尾的字段清楚地解决了这一差距。 如果您进入标头结构并到达最后一个字段,则在您引用的同一BAPI中可以找到必填字段。 在屏幕快照下面供参考,请尝试填充该字段,您的问题将得到解决。

一周热门 更多>