BAPI_ACC_DOCUMENT_POST 欄位增強

來源:互聯網
上載者:User

標籤:

 

    1、se11建立結構,必須包含行項目號POSNR欄位,和其他需要擴充的欄位,如記賬碼Posting Key、原因代碼Reason Code
    2、SE19實現BADI增強,這個增強是用來將BAPI_ACC_DOCUMENT_POST參數表EXTENSION2傳入系統資料表
    3、使用BAPI_ACC_DOCUMENT_POST參數表EXTENSION2,將擴充欄位傳入

詳細步驟如下:
1、建立結構,se11,很簡單,不再贅述,如:

2、SE19實現BADI增強ACC_DOCUMENT
通過ACC_DOCUMENT help文檔知道,方法CHANGE用來完成欄位的擴充,還有一個需要注意的是參考業務類型,這個一定要選對,不然執行BAPI的時候不會調用這個BADI,我用的是BKPFF,如:

啟用這個BADI實現。

雙擊change方法建立,可以查看ACC_DOCUMENT的實現例子CL_EXM_IM_ACC_DOCUMENT(R/3 4.7版本,其他版本可能名稱不一樣),,將這個執行個體的change方法的代碼直接copy過來,啟用方法,代碼如下

***********************************************************************
* Example to move fields from BAPI parameter EXTENSION2 to structure  *
* ACCIT (accounting document line items).                             *
* The dictionary structure (content for EXTENSION2-STRUCTURE) must    *
* contain field POSNR, (TYPE POSNR_ACC) to indentify the correct line *
* item of the internal table ACCIT.                                   *
***********************************************************************

  DATA: wa_extension   TYPE bapiparex,
        ext_value(960) TYPE c,
        wa_accit       TYPE accit,
        l_ref          TYPE REF TO data.

  FIELD-SYMBOLS: <l_struc> TYPE ANY,
                 <l_field> TYPE ANY.

  SORT c_extension2 BY structure.

  LOOP AT c_extension2 INTO wa_extension.
    AT NEW structure.
      CREATE DATA l_ref TYPE (wa_extension-structure).
      ASSIGN l_ref->* TO <l_struc>.
    ENDAT.
    CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2
                wa_extension-valuepart3 wa_extension-valuepart4
           INTO ext_value.
    MOVE ext_value TO <l_struc>.
    ASSIGN COMPONENT ‘POSNR‘ OF STRUCTURE <l_struc> TO <l_field>.
    READ TABLE c_accit WITH KEY posnr = <l_field>
          INTO wa_accit.
    IF sy-subrc IS INITIAL.
      MOVE-CORRESPONDING <l_struc> TO wa_accit.
      MODIFY c_accit FROM wa_accit INDEX sy-tabix.
    ENDIF.
  ENDLOOP.

3、使用BAPI_ACC_DOCUMENT_POST參數表EXTENSION2,將擴充欄位傳入
**********************************************************************
*INTERNAL TABLE DECLARATION
**********************************************************************

*&—-G/L ACCOUNT ITEM
DATA: ACCOUNTGL TYPE STANDARD TABLE OF BAPIACGL09.

*&—CURRENCY ITEMS
DATA: CURRENCY_AMOUNT TYPE STANDARD TABLE OF BAPIACCR09.

*&—-RETURN PARAMETER
DATA: RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE.

*&—-it_extension2 ITEMS
DATA: IT_EXTENSION2 TYPE STANDARD TABLE OF BAPIPAREX WITH HEADER LINE.

*&—WORKAREA FOR ZEXTEN
DATA: WA_ZEXTEN LIKE ZEXTEN. ”ZEXTEN就是剛才SE11建立的那個結構

**********************************************************************
*賦值
**********************************************************************

*& EXTENSION2擴充欄位增強部分

  WA_ZEXTEN-POSNR = ‘0000000010‘. "憑證行項目
  WA_ZEXTEN-RSTGR = ‘171‘. "憑證行項目原因代碼

  IT_EXTENSION2-STRUCTURE  = ‘ZEXTEN‘.
  IT_EXTENSION2-VALUEPART1 = WA_ZEXTEN.
  APPEND IT_EXTENSION2.

*其他參數表的欄位賦值如下例

HEADER-HEADER_TXT = ‘TEST HEADER‘."憑證抬頭文本
  HEADER-USERNAME = SY-UNAME.  "使用者名稱
  HEADER-COMP_CODE = ‘1000‘."公司代碼
  HEADER-DOC_DATE = ‘20090618‘."憑證中的憑證日期
  HEADER-PSTNG_DATE = ‘20090618‘."憑證中的記帳日期
  HEADER-DOC_TYPE = ‘S1‘."憑證類型
*  HEADER-BUS_ACT = ‘RFBU‘."交易業務

  WA_ACCOUNTGL-ITEMNO_ACC = ‘0000000010‘. "會計憑證行項目編號
  WA_ACCOUNTGL-GL_ACCOUNT = ‘1002010105‘. "總分類帳帳目
*  WA_ACCOUNTGL-ITEM_TEXT = .
  WA_ACCOUNTGL-BUS_AREA = ‘8000‘. "業務範圍
  APPEND WA_ACCOUNTGL TO ACCOUNTGL.
  CLEAR WA_ACCOUNTGL.

  WA_ACCOUNTGL-ITEMNO_ACC = ‘0000000020‘. "會計憑證行項目編號
  WA_ACCOUNTGL-GL_ACCOUNT = ‘1301040000‘. "總分類帳帳目
  WA_ACCOUNTGL-BUS_AREA = ‘8000‘. "業務範圍
*WA_ACCOUNTGL-ITEM_TEXT = .
*wa_accountgl-ACCT_TYPE = ‘R‘.
  APPEND WA_ACCOUNTGL TO ACCOUNTGL.
  CLEAR WA_ACCOUNTGL.

  WA_CURRENCY_AMOUNT-ITEMNO_ACC = ‘0000000010‘. "行項目編號
  WA_CURRENCY_AMOUNT-AMT_DOCCUR = ‘500‘. "金額
  WA_CURRENCY_AMOUNT-CURRENCY = ‘RMB‘.
  APPEND WA_CURRENCY_AMOUNT TO CURRENCY_AMOUNT.
  CLEAR WA_CURRENCY_AMOUNT.

  WA_CURRENCY_AMOUNT-ITEMNO_ACC = ‘0000000020‘.
  WA_CURRENCY_AMOUNT-AMT_DOCCUR = ‘-500‘.
  WA_CURRENCY_AMOUNT-CURRENCY = ‘RMB‘.
  APPEND WA_CURRENCY_AMOUNT TO CURRENCY_AMOUNT.
  CLEAR WA_CURRENCY_AMOUNT.

  *執行BAPI
CALL FUNCTION ‘BAPI_ACC_DOCUMENT_POST‘
  EXPORTING
  DOCUMENTHEADER = HEADER
*CUSTOMERCPD =
*CONTRACTHEADER =
*IMPORTING
*OBJ_TYPE =
*OBJ_KEY =
*OBJ_SYS =
  TABLES
  ACCOUNTGL = ACCOUNTGL

*ACCOUNTRECEIVABLE =
*ACCOUNTPAYABLE =
*ACCOUNTTAX =
  CURRENCYAMOUNT = CURRENCY_AMOUNT

*CRITERIA =
*VALUEFIELD =
*EXTENSION1 =
  RETURN = RETURN
*PAYMENTCARD =
*CONTRACTITEM =
  EXTENSION2 = IT_EXTENSION2
*REALESTATE =
  .

  IF RETURN-TYPE NA ‘EA‘.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘
      EXPORTING
        WAIT = ‘X‘.
  ENDIF.
如果還需要擴充其他欄位,在結構ZEXTEN加入,然後在調用BAPI前對相應欄位賦值,就行了。

BAPI_ACC_DOCUMENT_POST 欄位增強

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.