SAP FICO 会计凭证冲销BAPI

DATA : L_BKPF    TYPE BKPF.
  DATA : L_REVERSAL TYPE BAPIACREV,
         L_BUS_ACT  TYPE BAPIACHE09-BUS_ACT,
         L_OBJ_KEY  TYPE BAPIACREV-OBJ_KEY,
         GT_RETURN  TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
         I_RETURN   TYPE BAPIRET2.
  DATA LV_GJAHR TYPE GJAHR.
  FIELD-SYMBOLS: <LS_ALV> TYPE TY_ALV.

  LOOP AT GT_ALV ASSIGNING <LS_ALV> WHERE BOX = 'X'.
    LV_GJAHR = <LS_ALV>-ZDATE+0(4).
*  获取数据
    SELECT SINGLE * FROM BKPF INTO L_BKPF WHERE BUKRS = <LS_ALV>-BUKRS
                                          AND   BELNR = <LS_ALV>-BELNR
                                          AND   GJAHR = LV_GJAHR
                                          AND   XREVERSAL = ''.
    IF SY-SUBRC <> 0.
      <LS_ALV>-MSG = '表:BKPF(会计核算凭证标题)没有数据或该凭证已冲销!请核查数据!'.
      EXIT.
    ENDIF.

*  bapi 参数赋值
*    L_REVERSAL-OBJ_TYPE     = <LS_ALV>-AWTYP.
*  l_reversal-obj_key      = l_bkpf-awkey.
*    L_REVERSAL-OBJ_KEY_R    = <LS_ALV>-AWKEY.
    L_REVERSAL-PSTNG_DATE   = <LS_ALV>-ZDATE.
    L_REVERSAL-FIS_PERIOD   = <LS_ALV>-ZDATE+4(2).
    L_REVERSAL-COMP_CODE    = <LS_ALV>-BUKRS.
    L_REVERSAL-AC_DOC_NO    = <LS_ALV>-BELNR.
    L_REVERSAL-REASON_REV   = '01'.
*   取得系统 LOGICAL SYSTEM
    CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
      IMPORTING
        OWN_LOGICAL_SYSTEM = L_REVERSAL-OBJ_SYS.
*   调用 BAPI 函数,冲销会计凭证
    CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST'
      EXPORTING
        REVERSAL = L_REVERSAL
        BUS_ACT  = L_BKPF-GLVOR
      IMPORTING
*       OBJ_TYPE =
        OBJ_KEY  = L_OBJ_KEY
*       OBJ_SYS  =
      TABLES
        RETURN   = GT_RETURN.

    READ TABLE GT_RETURN WITH KEY TYPE = 'E'.
    IF SY-SUBRC NE 0.
*     提交凭证过账
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT   = 'X'
        IMPORTING
          RETURN = I_RETURN.
      IF I_RETURN IS INITIAL.
        <LS_ALV>-MSG = '会计凭证过账成功!会计凭证号:' && L_OBJ_KEY(10) .
      ENDIF.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      LOOP AT GT_RETURN WHERE TYPE = 'A' OR TYPE = 'E'.
        <LS_ALV>-MSG = <LS_ALV>-MSG && GT_RETURN-MESSAGE.
      ENDLOOP.
    ENDIF.
  ENDLOOP.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值