如何利用BAPISD_SALESDOCUMENT_CHANGE修改SalesOrder的字段
假设我想修改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的原创文章,请关注公众号"汪子熙":
当前文章:如何利用BAPISD_SALESDOCUMENT_CHANGE修改SalesOrder的字段
网页地址:http://myzitong.com/article/ihidho.html