BAPI_ACC_DOCUMENT_POST,如何处理没有的参数传入系统

有一些参数在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[] .

你可能感兴趣的:(BAPI_ACC_DOCUMENT_POST,如何处理没有的参数传入系统)