如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段
Posted JerryWangSAP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段相关的知识,希望对你有一定的参考价值。
假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE:
首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日
使用如下代码,将这个字段的值改成2020年1月2日。
REPORT zchange_so1.
DATA: lv_num TYPE bapivbeln-vbeln,
ls_doc_header TYPE bapisdhd1,
lt_vbap TYPE STANDARD TABLE OF vbap.
lv_num = ‘0000000268‘.
CALL FUNCTION ‘SD_VBAP_READ_WITH_VBELN‘
EXPORTING
i_vbeln = lv_num
TABLES
et_vbap = lt_vbap
EXCEPTIONS
record_not_found = 1
OTHERS = 2.
BREAK-POINT.
DATA: i_order_header_in LIKE bapisdhd1 .
DATA: i_order_header_inx LIKE bapisdhd1x,
lt_bapiret2 LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
i_order_header_inx-updateflag = ‘U‘.
i_order_header_in-serv_date = ‘20200102‘ .
i_order_header_inx-serv_date = ‘X‘.
CALL FUNCTION ‘SD_SALESDOCUMENT_CHANGE‘
EXPORTING
salesdocument = lv_num
order_header_in = i_order_header_in
order_header_inx = i_order_header_inx
TABLES
return = lt_bapiret2.
clear: lt_bapiret2.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘
IMPORTING
RETURN = lt_bapiret2.
BREAK-POINT.
执行之后,从输出参数lt_bapiret2里查看到这个Sales Order已经成功被更新了。
从后台数据库表VBKD里查看到这个字段的值也已经成功更新了:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
以上是关于如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段的主要内容,如果未能解决你的问题,请参考以下文章
abap 如何测试BAPI ? 就是有一个新的BAPI,怎么知道用哪个结构或表里面的哪个字段呢?多谢啊!