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.
SAP FICO 会计凭证冲销BAPI
最新推荐文章于 2024-07-18 02:45:00 发布