引用链接:

固定资产 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.