使用BAPI_ACC_DOCUMENT_POST,建立會計憑證 增強,www.52bapi.com

來源:互聯網
上載者:User

使用BAPI_ACC_DOCUMENT_POST,建立會計憑證 增強,www.52bapi.com

業務需求:和銀行做一個介面,要通過銀行流水產生會計憑證,會計憑證的事務碼是F-02,查到了BAPI方法 BAPI_ACC_DOCUMENT_POST。
昨天測試發現,有一些參數在BAPI_ACC_DOCUMENT_POST的輸入和表參數中根本沒有,
如 記賬碼Posting Key、原因代碼Reason Code,那怎麼把這些欄位的值傳進去呢?
在SDN查了一下相關問題的解決辦法,發現遇到這個問題的朋友還挺多,
總結了一下,解決辦法大體如下:
1、se11建立結構,必須包含行項目號POSNR欄位,和其他需要擴充的欄位,
   如記賬碼Posting Key、原因代碼Reason Code2、SE19實現BADI增強ACC_DOCUMENT,這個增強是用來將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 ITEMDATA: ACCOUNTGL TYPE STANDARD TABLE OF BAPIACGL09.*&—CURRENCY ITEMSDATA: CURRENCY_AMOUNT TYPE STANDARD TABLE OF BAPIACCR09.*&—-RETURN PARAMETERDATA: RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE.*&—-it_extension2 ITEMSDATA: IT_EXTENSION2 TYPE STANDARD TABLE OF BAPIPAREX WITH HEADER LINE.*&—WORKAREA FOR ZEXTENDATA: 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.  *執行BAPICALL 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建立會計憑證

諮詢一下你們的顧問或KEY USER關於此欄位的用法(定義), 如果CUSTOMIZING設定為必輸,那在調用BAPI的時候也不能確少這個欄位,關鍵是使用怎樣的邏輯確定這個欄位的值.
 
sap的BAPI_ACC_DOCUMENT_POST可以否做應付票據的特殊總賬業務?

你問的這種問題也太專業了點吧,找個資深的ABAPER,說不定能告訴你。

有個最簡單的辦法,就是到GOOGLE裡查一查。比如用BAPI的名字和用途做為關鍵字:BAPI_ACC_DOCUMENT_POST accounting document
也許還要加上錯誤資訊作為關鍵字。說不定能查到ITTOOLBOX和SAP SDN上有人提過這個問題。
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.