SAP BAPI BAPI_PO_CHANGE

"需求: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'.
    
  •  提交
    ELSE.
       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
         EXPORTING
           WAIT   = 'X'.
    ENDIF.
    CLEAR:LT_RETURN[],LT_POITEM[],LT_POITEMX[].
    
    ENDLOOP.

"打上关闭标识
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.
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值