天天看點

BAPI_ACC_GL_POSTING_POST生成财務預制憑證

文章轉自 http://hi.baidu.com/tsingwa

利用此BAPI生成預制憑證,首先要在如下使用者出口做一個簡單增強:

ACBAPI01 會計核算: 對 BAPI 界面的客戶增強功能

對應的出口函數是:EXIT_SAPLACC4_001

相應的代碼如下,核心内容是要讓憑證擡頭中的status_new值為2,即可生成預制憑證:

READ TABLE extension WITH KEY field1 = 'BAPI-PARK'.

IF sy-subrc = 0 .

  MOVE 2 TO t_acchd-status_new. "to mark this is Park Document

ENDIF.

*此部分内容為BAPI标準參數中沒有的字段,四個Field字段都是char250,如果字段太多,

可利用處理字元串拆分的方法進行

LOOP AT extension.

  READ TABLE t_accit WITH KEY posnr = extension-field1.

  IF sy-subrc = 0.

    t_accit-bschl = extension-field2.   "記帳碼

    t_accit-rstgr = extension-field3.   "原因代碼

    t_accit-umskz = extension-field4.   "特殊總帳辨別

    MODIFY t_accit INDEX sy-tabix.

  ENDIF.

*在自己的程式或接口代碼中調用BAPI,測試程式如下:

*&---------------------------------------------------------------------*

*& Report  ZT_TEST_PARK_DOCUMENT

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zt_test_park_document1 NO STANDARD PAGE HEADING.

TABLES: bkpf,

        bseg,

        bsec,

        bset,

        bsez.

DATA: header LIKE bapiache08,

      accountgl LIKE STANDARD TABLE OF      bapiacgl08 WITH HEADER LINE,

      currencyamount LIKE STANDARD TABLE OF bapiaccr08 WITH HEADER LINE,

      extension1 LIKE STANDARD TABLE OF     bapiextc   WITH HEADER LINE,

      return     LIKE STANDARD TABLE OF     bapiret2   WITH HEADER LINE.

DATA: loc_cnt TYPE posnr_acc,

      loc_amt TYPE bapiwrbtr.

DATA: obj_key  LIKE bapiache02-obj_key,

      obj_type LIKE bapiache02-obj_type,

      obj_sys  LIKE bapiache02-obj_sys.

START-OF-SELECTION.

  header-username   = sy-uname.

  header-comp_code  = '1200'.

  header-fisc_year  = sy-datum+0(4).

  header-doc_date   = sy-datum.

  header-pstng_date = sy-datum.

  header-fis_period = sy-datum+4(2).

  header-doc_type   = 'SA'.

  accountgl-itemno_acc = '1'.

  accountgl-gl_account = '6602070000 ' .

  accountgl-costcenter = '1200AA01'.

  accountgl-item_text  = 'Test Bapi SGTXT'.

  accountgl-alloc_nmbr = 'Test Bapi ZUONR'.

  APPEND accountgl.

  CLEAR accountgl.

  extension1-field1 = '1'."Item No

  extension1-field2 = '40'."記帳碼

  APPEND extension1.

  loc_cnt = 1.

  loc_cnt  = loc_cnt + 1.

  accountgl-itemno_acc = loc_cnt.

  accountgl-gl_account = '1001010000' .

*  accountgl-comp_code  = '1200'.

*  accountgl-pstng_date = sy-datum.

*  accountgl-doc_type   = 'SA'.

*  accountgl-fisc_year  = sy-datum+0(4).

*  accountgl-fis_period = sy-datum+4(2).

*  accountgl-costcenter = ‘13100’.

  accountgl-item_text  = 'Test Bapi SGTXT'.

  accountgl-alloc_nmbr = 'Test Bapi ZUONR'.

  APPEND accountgl.

  CLEAR accountgl.

  extension1-field1 = '2'.  "Item No

  extension1-field2 = '50'. "記帳碼

  extension1-field3 = '999'."原因代碼

  APPEND extension1.

  loc_amt = 1111.

  currencyamount-itemno_acc = '1'.

  currencyamount-currency  = 'CNY'.

  currencyamount-amt_doccur = loc_amt. "( For  Debit / ‘S’)

  APPEND currencyamount.

  CLEAR currencyamount.

  currencyamount-itemno_acc = '2'.

  currencyamount-currency  = 'CNY'.

  currencyamount-amt_doccur =  ( -1 ) * ( loc_amt ). " ( For credit /‘H’)

  APPEND currencyamount.

  CLEAR currencyamount.

  extension1-field1 =  'BAPI-PARK'.

  APPEND extension1.

  CALL FUNCTION 'BAPI_ACC_GL_POSTING_POST'

    EXPORTING

      documentheader = header

    IMPORTING

      obj_type       = obj_type

      obj_key        = obj_key

      obj_sys        = obj_sys

    TABLES

      accountgl      = accountgl

      currencyamount = currencyamount

      return         = return

      extension1     = extension1.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

    EXPORTING

      wait = 'X'.