"需求:SRM调用接口进行入库和冲销的时候,需要检查传过来的采购订单号和 "行项目号,将最近收货日期(EKPO-LEWED)调用BAPI清空,打开采购订单,"进行入库和冲销,当入库凭证或者物料凭证产生后将最近收货日期(EKPO-"LEWED)打上关闭标识,即赋值20190101
DATA:
LS_POITEM TYPE BAPIMEPOITEM ,
LS_POITEMX TYPE BAPIMEPOITEMX ,
LS_RETURN TYPE BAPIRET2 ,
LT_RETURN TYPE TABLE OF BAPIRET2 ,
LT_POITEM TYPE TABLE OF BAPIMEPOITEM ,
LT_POITEMX TYPE TABLE OF BAPIMEPOITEMX .
"将最近收货日期(EKPO-LEWED)调用BAPI清空
LOOP AT it_mseg.
LS_POITEM-PO_ITEM = it_mseg-ebelp.
LS_POITEM-GR_TO_DATE = '00000000'. "最近收货日期
APPEND LS_POITEM TO LT_POITEM.
CLEAR:LS_POITEM.
LS_POITEMX-PO_ITEM = it_mseg-ebelp.
LS_POITEMX-GR_TO_DATE = 'X'. "允许的未限制的过量交货
APPEND LS_POITEMX TO LT_POITEMX.
CLEAR:LS_POITEMX.
-
修改采购订单号 CALL FUNCTION 'BAPI_PO_CHANGE' EXPORTING purchaseorder = it_mseg-ebeln TABLES RETURN = LT_RETURN POITEM = LT_POITEM POITEMX = LT_POITEMX .
-
报错处理 READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'. IF SY-SUBRC = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
-
ENDLOOP.提交 ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. ENDIF. CLEAR:LT_RETURN[],LT_POITEM[],LT_POITEMX[].
"打上关闭标识
LOOP AT it_mseg.
LS_POITEM-PO_ITEM = it_mseg-ebelp.
LS_POITEM-GR_TO_DATE = '20190101'. "最近收货日期
APPEND LS_POITEM TO LT_POITEM.
CLEAR:LS_POITEM.
LS_POITEMX-PO_ITEM = it_mseg-ebelp.
LS_POITEMX-GR_TO_DATE = 'X'. "允许的未限制的过量交货
APPEND LS_POITEMX TO LT_POITEMX.
CLEAR:LS_POITEMX.
-
修改采购订单号 CALL FUNCTION 'BAPI_PO_CHANGE' EXPORTING purchaseorder = it_mseg-ebeln TABLES RETURN = LT_RETURN POITEM = LT_POITEM POITEMX = LT_POITEMX .
-
报错处理 READ TABLE LT_BAPIRET2 INTO LS_RETURN WITH KEY TYPE = 'E'. IF SY-SUBRC = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
-
提交 ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. ENDIF. CLEAR:LT_RETURN[],LT_POITEM[],LT_POITEMX[]. ENDLOOP.