BAPI_ACC_GL_POSTING_POST生成财务预制凭证

来源:互联网 发布:企业管理优化 编辑:程序博客网 时间:2024/04/28 10:53

利用此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'.

0 0