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'.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值