有一些参数在BAPI_ACC_DOCUMENT_POST的输入和表参数中根本没有,如记账码Posting Key、原因代码Reason Code,那怎么把这些字段的值传进去呢?
1、se11创建结构,必须包含行项目号POSNR字段,和其他需要扩展的字段,如记账码Posting Key、原因代码Reason Code
2、SE19实现BADI增强ACC_DOCUMENT,这个增强是用来将BAPI_ACC_DOCUMENT_POST参数表EXTENSION2传入系统表
3、使用BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传入
clear wa_documentheader.
WA_DOCUMENTHEADER-USERNAME = SY-UNAME.
wa_documentheader-fisc_year = GT_BAPI1-BUDAT+0(4). "
wa_documentheader-doc_date = GT_BAPI1-BUDAT. "凭证日期
wa_documentheader-pstng_date = GT_BAPI1-budat. "过账日期
wa_documentheader-FIS_PERIOD = GT_BAPI1-BUDAT+4(2).
wa_documentheader-doc_type = 'SA'. "凭证类型
wa_documentheader-comp_code = '4200'. "公司代码
clear gt_accountgl.
gt_accountgl-itemno_acc = 1.
if gt_bapi1+0(1) = '9'.
gt_accountgl-GL_ACCOUNT = '6401001000'.
else.
gt_accountgl-GL_ACCOUNT = '6402001000'.
endif.
gt_accountgl-comp_code = '4200'. "公司代码
gt_accountgl-plant = '4200'. "工厂
gt_accountgl-SALESORG = '4200'. "销售组织
gt_accountgl-material = gt_bapi1-matnr. "物料号
gt_accountgl-quantity = gt_bapi1-shul. "数量
gt_accountgl-PROFIT_CTR = gt_bapi1-prctr. "成本中心
append gt_accountgl.
clear gt_accountgl.
gt_accountgl-itemno_acc = 2.
gt_accountgl-GL_ACCOUNT = '1406000000'.
gt_accountgl-comp_code = '4200'. "公司代码
gt_accountgl-plant = '4200'. "工厂
gt_accountgl-SALESORG = '4200'. "销售组织
gt_accountgl-material = gt_bapi1-matnr. "物料号
gt_accountgl-quantity = gt_bapi1-shul. "数量
gt_accountgl-PROFIT_CTR = gt_bapi1-prctr. "成本中心
append gt_accountgl.
clear gt_accountgl.
clear GT_CURRENCYAMOUNT.
GT_CURRENCYAMOUNT-itemno_acc = 1.
GT_CURRENCYAMOUNT-currency = 'CNY'.
GT_CURRENCYAMOUNT-AMT_DOCCUR = GT_BAPI1-SUM.
APPEND GT_CURRENCYAMOUNT.
CLEAR GT_CURRENCYAMOUNT.
GT_CURRENCYAMOUNT-itemno_acc = 2.
GT_CURRENCYAMOUNT-currency = 'CNY'.
GT_CURRENCYAMOUNT-AMT_DOCCUR = GT_BAPI1-SUM * ( -1 ).
APPEND GT_CURRENCYAMOUNT.
CLEAR GT_CURRENCYAMOUNT.
CLEAR gt_ext2.
CLEAR wa_zfiextn.
wa_zfiextn-itemno_acc = 1.
wa_zfiextn-bschl = '40'. "记账代码 增强字段
gt_ext2-structure = 'ZSFI0001'.
gt_ext2-valuepart1 = wa_zfiextn.
APPEND gt_ext2.
CLEAR gt_ext2.
wa_zfiextn-itemno_acc = 2.
wa_zfiextn-bschl = '50'. "记账代码
gt_ext2-structure = 'ZSFI0001'.
gt_ext2-valuepart1 = wa_zfiextn.
APPEND gt_ext2.
CLEAR gt_ext2.
CLEAR wa_zfiextn.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
DOCUMENTHEADER = WA_DOCUMENTHEADER
* CUSTOMERCPD =
* CONTRACTHEADER =
* IMPORTING
* OBJ_TYPE =
* OBJ_KEY =
* OBJ_SYS =
TABLES
ACCOUNTGL = gt_accountgl
* ACCOUNTRECEIVABLE =
* ACCOUNTPAYABLE =
* ACCOUNTTAX =
CURRENCYAMOUNT = GT_CURRENCYAMOUNT
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
RETURN = GT_RETURN
* PAYMENTCARD =
* CONTRACTITEM =
EXTENSION2 = gt_ext2.
* REALESTATE =
* ACCOUNTWT =.
clear WA_DOCUMENTHEADER.
read table gt_return with key type = 'E'.
if sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = gt_return.
else.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
return = gt_return.
endif.
CLEAR: wa_documentheader , gt_accountgl[] ,gt_currencyamount[],gt_ext2[],gt_return[] .