如何使用BAPI_OUTB_DELIVERY_CHANGE更新HEADER_DEADLINES参数(更改日期)?

2020-09-23 13:23发布

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

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


您好,专家们,我是ABAP的新手,也是使用BAPI的新手,需要您的帮助。 如果解决方法非常简单并且我犯了愚蠢的错误,请原谅我。

我要解决此问题,因为需要更新LIKP表中WADAT,KODAT,LDDAT和TDDAT字段的值。

我编写了以下代码,只是为了填充一个字段(即WADAT)一些示例值。

数据:bapiobdlvhdrchg的it_header_data类型表,
       wa_header_data TYPE bapiobdlvhdrchg。
 数据:bapiobdlvhdrctrlchg的it_header_control类型表,
       wa_header_control类型bapiobdlvhdrctrlchg。
 数据:it_return bapiret2的类型表,
 数据:it_header_deadlines bapidlvdeadln的类型表,
       wa_header_deadlines TYPE bapidlvdeadln。

 数据:l_delivery TYPE vbeln_vl。
 wa_header_data-deliv_numb ='0180190163'。
 将wa_header_data附加到it_header_data。


 wa_header_control-deliv_numb ='0180190163'。
 wa_header_control-gdsi_date_flg ='X'。

 wa_header_deadlines-deliv_numb ='0180190163'。
 wa_header_deadlines-timetype ='WSHDRWADAT'。
 wa_header_deadlines-timestamp_utc ='20180308'。

 将wa_header_deadlines附加到it_header_deadlines。
 l_delivery ='0180190163'。

 通话功能'BAPI_OUTB_DELIVERY_CHANGE'
   出口
     header_data = wa_header_data
     header_control = wa_header_control
     交付= l_delivery
   桌子
     header_deadlines = it_header_deadlines
     return = it_return。

 调用功能'BAPI_TRANSACTION_COMMIT'。

运行此代码后,表不会针对给定的字段进行更新,最大的问题是表'it_return'未被任何错误消息填充。

我认为在填充 TIMETYPE TIMESTAMP_UTC 字段时犯了一些错误。

我已经阅读了有关此BAPI的文档,但了解不多。

如果需要为更多参数添加值,请告诉我。 使用参数 HEADER_DEADLINES 的代码示例将不胜感激。

请忽略以下事实:代码包含一些未使用的内部表和工作区。

此外,请让我知道是否有更好的方法来更新LIKP表中的字段 WADAT,KODAT,LDDAT和TDDAT。 我知道我们应该避免对标准表使用MODIFY或INSERT语句的事实。

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

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


您好,专家们,我是ABAP的新手,也是使用BAPI的新手,需要您的帮助。 如果解决方法非常简单并且我犯了愚蠢的错误,请原谅我。

我要解决此问题,因为需要更新LIKP表中WADAT,KODAT,LDDAT和TDDAT字段的值。

我编写了以下代码,只是为了填充一个字段(即WADAT)一些示例值。

数据:bapiobdlvhdrchg的it_header_data类型表,
       wa_header_data TYPE bapiobdlvhdrchg。
 数据:bapiobdlvhdrctrlchg的it_header_control类型表,
       wa_header_control类型bapiobdlvhdrctrlchg。
 数据:it_return bapiret2的类型表,
 数据:it_header_deadlines bapidlvdeadln的类型表,
       wa_header_deadlines TYPE bapidlvdeadln。

 数据:l_delivery TYPE vbeln_vl。
 wa_header_data-deliv_numb ='0180190163'。
 将wa_header_data附加到it_header_data。


 wa_header_control-deliv_numb ='0180190163'。
 wa_header_control-gdsi_date_flg ='X'。

 wa_header_deadlines-deliv_numb ='0180190163'。
 wa_header_deadlines-timetype ='WSHDRWADAT'。
 wa_header_deadlines-timestamp_utc ='20180308'。

 将wa_header_deadlines附加到it_header_deadlines。
 l_delivery ='0180190163'。

 通话功能'BAPI_OUTB_DELIVERY_CHANGE'
   出口
     header_data = wa_header_data
     header_control = wa_header_control
     交付= l_delivery
   桌子
     header_deadlines = it_header_deadlines
     return = it_return。

 调用功能'BAPI_TRANSACTION_COMMIT'。

运行此代码后,表不会针对给定的字段进行更新,最大的问题是表'it_return'未被任何错误消息填充。

我认为在填充 TIMETYPE TIMESTAMP_UTC 字段时犯了一些错误。

我已经阅读了有关此BAPI的文档,但了解不多。

如果需要为更多参数添加值,请告诉我。 使用参数 HEADER_DEADLINES 的代码示例将不胜感激。

请忽略以下事实:代码包含一些未使用的内部表和工作区。

此外,请让我知道是否有更好的方法来更新LIKP表中的字段 WADAT,KODAT,LDDAT和TDDAT。 我知道我们应该避免对标准表使用MODIFY或INSERT语句的事实。

付费偷看设置
发送
2条回答
Cikesha
1楼-- · 2020-09-23 13:35

嗨阿南德,

您正在正确填充HEADER_DEADLINES表。

如果还没有调试BAPI,则对逻辑进行一些解释。

在HEADER_DEADLINES表中使用正确的TIMETYPE填充更多记录可以使您更新这些日期。

实际上,BAPI在包括LV50IF04中调用FORM SPAN VBKOK_OBDLV_FILL,并根据TIMETYPE处理该表以更新CS_VBKOK结构和标志(如果需要使用正确的结构和标志,只需在表单中双击常量即可) 。

最后,BAPI调用FM WS_DELIVERY_UPDATE,后者调用WS_DELIVERY_UPDATE_2。

此FM调用include LV50LF01中的FORM DELIVERY_UPDATE_HEADER,在其中检查先前填充的标志和字段

因此,基本上,您位于正确的路径上,只需要在HEADER_DEADLINES表上添加更多记录,以告知BAPI要更新的正确字段/标志。

Alawn_Xu
2楼-- · 2020-09-23 13:42

该表具有 交货号为关键!

您似乎没有调试代码。

具有相同交货编号的多条记录意味着更新有关MULTIPLE FIELDS的SAME记录(在您的情况下为1条)

一周热门 更多>