引用链接:
固定资产 BAPI_ACC_DOCUMENT_POST 凭证创建
TCode : F-02 (固定资产)
增强创建
和其他常规标准增强一样:创建自定义结构 ZLM_ENHANCE_ACC_DOC (ACC_DOCUMENT)
SE19 创建增强实例:ACC_DOCUMENT(大部分项目应该有已经实现的增强实例,不见得需要新建)。
自定义程序:
REPORT ZLM_DEMO_F02_ANLN1.
PARAMETERS: P_BUKRS TYPE BUKRS DEFAULT '9160'.
DATA:GS_HEADER TYPE BAPIACHE09.
DATA:GV_KEY TYPE BAPIACHE09-OBJ_KEY.
DATA:GT_GL TYPE TABLE OF BAPIACGL09,
GS_GL TYPE BAPIACGL09.
DATA:GT_CUR TYPE TABLE OF BAPIACCR09,
GS_CUR TYPE BAPIACCR09.
DATA:GT_EXT TYPE TABLE OF BAPIPAREX,
GS_EXT TYPE BAPIPAREX.
DATA:GT_RETURN TYPE TABLE OF BAPIRET2,
GS_RETURN TYPE BAPIRET2.
DATA:GS_ACC_POST TYPE ZLM_ENHANCE_ACC_DOC.
GS_HEADER-OBJ_TYPE = 'BKPFF '. "参考交易"
GS_HEADER-OBJ_KEY = 'RFBU '. "字段参考关键"
GS_HEADER-USERNAME = SY-UNAME. "用户名"
GS_HEADER-HEADER_TXT = 'TEST '. "凭证抬头文本"
GS_HEADER-COMP_CODE = P_BUKRS. "公司代码"
GS_HEADER-DOC_DATE = SY-DATUM. "凭证中的凭证日期"
GS_HEADER-PSTNG_DATE = SY-DATUM. "凭证中的过帐日期"
GS_HEADER-TRANS_DATE = SY-DATUM. "换算日期"
GS_HEADER-FISC_YEAR = SY-DATUM(4). "会计年度"
GS_HEADER-FIS_PERIOD = SY-DATUM+4(2). "会计期间"
GS_HEADER-DOC_TYPE = 'SA '. "凭证类型"
CLEAR:GT_GL[],GT_CUR[],GT_EXT[],GT_RETURN[].
CLEAR GS_GL.
GS_GL-ITEMNO_ACC = 1.
GS_GL-GL_ACCOUNT = '1601000060'.
GS_GL-ITEM_TEXT = '现支_固定资产测试'.
GS_GL-ACCT_TYPE = 'A'.
GS_GL-PROFIT_CTR = '0000999999'.
GS_GL-ALLOC_NMBR = '现支_固定资产测试'.
GS_GL-ASSET_NO = '600000000003'.
GS_GL-SUB_NUMBER = '0000'.
GS_GL-COMP_CODE = P_BUKRS.
APPEND GS_GL TO GT_GL.
CLEAR GS_ACC_POST.
GS_ACC_POST-POSNR = GS_GL-ITEMNO_ACC.
GS_ACC_POST-BSCHL = '70'.
GS_ACC_POST-ANBWA = '100'.
GS_EXT-STRUCTURE = 'ZLM_ENHANCE_ACC_DOC'.
GS_EXT-VALUEPART1 = GS_ACC_POST.
APPEND GS_EXT TO GT_EXT[].
CLEAR GS_GL.
GS_GL-ITEMNO_ACC = 2.
GS_GL-GL_ACCOUNT = '1002001002'.
GS_GL-ITEM_TEXT = '现支_固定资产测试'.
GS_GL-VALUE_DATE = SY-DATUM.
GS_GL-PROFIT_CTR = '0000999999'.
GS_GL-ALLOC_NMBR = '现支_固定资产测试'.
GS_GL-COMP_CODE = P_BUKRS.
APPEND GS_GL TO GT_GL.
CLEAR GS_ACC_POST.
GS_ACC_POST-POSNR = GS_GL-ITEMNO_ACC.
GS_ACC_POST-BSCHL = '50'.
GS_ACC_POST-RSTGR = '101'.
GS_EXT-STRUCTURE = 'ZLM_ENHANCE_ACC_DOC'.
GS_EXT-VALUEPART1 = GS_ACC_POST.
APPEND GS_EXT TO GT_EXT[].
CLEAR GS_CUR.
GS_CUR-ITEMNO_ACC = 1.
GS_CUR-CURRENCY = 'CNY'.
GS_CUR-AMT_DOCCUR = 1000.
APPEND GS_CUR TO GT_CUR.
CLEAR GS_CUR.
GS_CUR-ITEMNO_ACC = 2.
GS_CUR-CURRENCY = 'CNY'.
GS_CUR-AMT_DOCCUR = '-1000'.
APPEND GS_CUR TO GT_CUR.
"凭证数据检查-防止跳号"
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
EXPORTING
DOCUMENTHEADER = GS_HEADER
TABLES
ACCOUNTGL = GT_GL
CURRENCYAMOUNT = GT_CUR
RETURN = GT_RETURN
EXTENSION2 = GT_EXT.
LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE = 'E'.
WRITE GS_RETURN-MESSAGE.
ENDLOOP.
IF SY-SUBRC <> 0..
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
DOCUMENTHEADER = GS_HEADER
IMPORTING
OBJ_KEY = GV_KEY
TABLES
ACCOUNTGL = GT_GL
CURRENCYAMOUNT = GT_CUR
RETURN = GT_RETURN
EXTENSION2 = GT_EXT.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WRITE GV_KEY.
ENDIF.