假设我想修改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的原创文章,请关注公众号"汪子熙":
相关推荐
项目中遇到一个需求需要修改SO的抬头增强字段,通常增强字段只能通过BAPI的EXTENSIONIN和EXTENSIONINX参数传递。
凭证导入 BAPI_ACC_DOCUMENT_POST
BAPI 修改CJ20N 创建的项目网络中的组件等信息 BAPI_NETWORK_COMP_CHANGE
BAPI_ACC_DOCUMENT_POST增强
用BAPI_PO_CHANGE修改(ME23N)PO出貨日期的方法
BAPI_ACC_DOCUMENT_POST 字段扩展 财务过账BAPI 有时找不到相应的字段,需要结构字段扩展 来满足bapi 的过账需求
采用BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单,很经典的实例
ABPA 销售订单创建BAPI批导程序的源码,有详细的检查和美观的界面。主要用两个BAPI:BAPI_SALESORDER_CREATEFROMDAT2和SD_SALESDOCUMENT_CREATE
通过JCo接口利用BAPI函数创建PO订单
下达项目网络的BAPI 使用BAPI_NETWORK_MAINTAIN 可以Release项目网络,将系统状态更为REL
关于用BAPI批量创建工艺路线 解决BAPI_ROUTING_CREATE不可以创建定额工艺路线的问题
BAPI_User_Guide word文档 BAPI函数使用手册,适合SAP开发者的帮助文件。
LSMW_BAPI_MM02_CS01
采购订单BAPI增强数值型字段转换方法
详细介绍 采购订单抬头和行项目屏幕增强&BAPI传入自定义字段
VL02N 发货过账
ABAP开发中调用BAPI执行业务,有时会遇到所需字段在标准BAPI没提供,可以通过该方法实现字段扩展
这是SAP ABAP 中BAPI GOODS的函数说明,有利于用户进行更深入的了解
SAP_ABAP_FI_BAPI清单案例教程——采购付款/销售收款_BAPI_ACC_DOCUMENT_POST_F-02
SAP常用后台表&BAPI