GL A/C posting using BAPI_ACC_GL_POSTING_POST.

Parameters Descrption
ACCOUNTGL : mention only G/L line items here
ACCOUNTTAX : mention the VAT items here only but with the same item number like in currencyamount, the amounts are not important here, simply zero...
CURRENCYAMOUNT : mention all items here, in case of normal posting the amount comes to field AMT_DOCCUR, in case of VAT posting the amount of VAT comes to AMT_DOCCUR, the base amount comes to AMT_BASE

Requirement:

An interface needs to be developed to upload large journals either from a tab delimited file. Currently it's being done manually using FB50 transaction. Various Cost of Capital & Operational Property journals have to be posted at month end. A file interface needs to be developed.

  Processing:

It involves following development/configurations:

  • File format determination (Required / optional fields and field checks).
  • Logical File Path configuration through transaction 'FILE'. A new physical file path should be created on operating system level or an existing one can be used if agreed. The Basis team member should create a new file path at operating system level, if required. The file path will have three directories: /GL_FILE /GL_Processed /GL_Error
  • Program Z_BAPI_GL_AC_DOC_POST needs to be developed to do the processing as described below:
    • The processing can be done in foreground as well as in background mode.
    • In case of background: File can only be read from Application Server.
    • In case of foreground: User will have an option to choose from Presentation or Application Server File.
    • Logical File Path / Name needs to be configured using FILE transaction for application server file processing. It is required to identify the Application server directory and file. Further it gives the flexibility to change the path and file name by using the transaction FILE, without making any changes to the program. It should not be hard-coded as directory structure might be different for Testing and production development servers.
    • Read the input file from presentation or application server as chosen.
    • Prepare Account doc header and detail internal tables.
    • Call 'BAPI_ACC_GL_POSTING_POST' to post the GL accounting document.
    • For application server case, Processed file can be flagged archived by using Function module DX_FILE_COPY and then it can be deleted using EPS_DELETE_FILE .
    • Error file can be created ( in /GL_Error directory for application server and with .err extension in case of PC processing ) for error records and can be re-processed after correction.
    • The list of successful and error transaction will be displayed after processing.

代码:
report z_test_bapi_gl_ac_doc LINE-SIZE 200.
*----------------------------------------------------------------------*
*       Written By: Ram Manohar Tiwari    
*----------------------------------------------------------------------*
*       Presented By: http://www.rmtiwari.com
*----------------------------------------------------------------------*

data:
      obj_type like bapiache02-obj_type,
      obj_key like bapiache02-obj_key,
      obj_sys like bapiache02-obj_sys,
      documentheader like bapiache08,

      accountgl like bapiacgl08
                  occurs 0 with header line,
      currencyamount like bapiaccr08
                  occurs 0 with header line,
      return like bapiret2
                  occurs 0 with header line,
      extension1 like bapiextc
                  occurs 0 with header line,

      t_edidd  like edidd occurs 0 with header line,
      bapi_retn_info  like bapiret2 occurs 0 with header line.
data: error_flag.


*documentheader-obj_type     = 'BKPFF'.
*documentheader-obj_key      = '18000000002002004'.
*documentheader-obj_type     = 'BKPFF'.
*documentheader-obj_key      = '180000000010002004'.

*documentheader-obj_sys      = 'RD1CLNT200'.


documentheader-username     = sy-uname.
documentheader-header_txt   = 'Test using BAPI'.
documentheader-comp_code    = '1000'.

*documentheader-ac_doc_no
*documentheader-fisc_year    = '2005'.

documentheader-doc_date     = sy-datum.
documentheader-pstng_date   = sy-datum.

*documentheader-trans_date
*documentheader-fis_period

documentheader-doc_type    = 'SA'.


*documentheader-ref_doc_no
*documentheader-compo_acc
*documentheader-reason_rev



accountgl-itemno_acc = '1'.
accountgl-gl_account = '0000160100'.
accountgl-comp_code = '1000'.
accountgl-pstng_date = sy-datum.
accountgl-doc_type   = 'SA'.
accountgl-profit_ctr = '0000010000'.
append accountgl.

accountgl-itemno_acc = '2'.
accountgl-gl_account = '0000160100'.
accountgl-comp_code = '1000'.
accountgl-pstng_date = sy-datum.
accountgl-doc_type   = 'SA'.
accountgl-profit_ctr = '0000010000'.
append accountgl.


*AC_DOC_NO
*FISC_YEAR
*FIS_PERIOD
*accountgl-STAT_CON = 'X'.
*REF_KEY_1
*REF_KEY_2
*REF_KEY_3
*CUSTOMER
*VENDOR_NO
*ALLOC_NMBR
*ITEM_TEXT
*BUS_AREA
*COSTCENTER
*ACTTYPE
*ORDERID
*ORIG_GROUP
*COST_OBJ
*PROFIT_CTR
*PART_PRCTR
*WBS_ELEMENT
*NETWORK
*ROUTING_NO
*ORDER_ITNO


currencyamount-itemno_acc = '1'.
currencyamount-currency = 'GBP'.
currencyamount-amt_doccur = '100.00'.
append currencyamount.

currencyamount-itemno_acc = '2'.
currencyamount-currency = 'GBP'.
currencyamount-amt_doccur = '-100.00'.
append currencyamount.


*   call BAPI-function in this system   
call function 'BAPI_ACC_GL_POSTING_POST'
     exporting
          documentheader = documentheader
*     importing
*          obj_type       = obj_type
*          obj_key        = obj_key
*          obj_sys        = obj_sys

     tables
          accountgl      = accountgl
          currencyamount = currencyamount
          return         = return
          extension1     = extension1
     exceptions
          others         = 1.
if sy-subrc <> 0.
  message e999(re) with  'Problem occured'.
else.
      loop at return.
          if not return is initial.
          clear bapi_retn_info.
          move-corresponding return to bapi_retn_info.
          if return-type = 'A' or return-type = 'E'.
            error_flag = 'X'.
          endif.
          append bapi_retn_info.
        endif.
      endloop.
  if error_flag = 'X'.
     message e999(re) with  'Problem occured'.
     rollback work.
  else.
  commit work.
  endif.
endif.
来源:http://www.geocities.com/rmtiwari/main.html?http://www.geocities.com/rmtiwari/Resources/Management/SAPCaseStudies.html

### 使用 `BAPI_ACC_DOCUMENT_POST` 进行会计凭证过账 #### 函数模块概述 `BAPI_ACC_DOCUMENT_POST` 是 SAP 提供的一个函数模块,主要用于创建财务会计 (FI) 和管理会计 (CO) 的记账凭证。此功能允许通过编程方式处理复杂的财务交易。 #### 参数结构 为了正确调用 `BAPI_ACC_DOCUMENT_POST` 并实现资产或其他类型的过账操作,需准备一系列输入参数: - **HEADER**:头部数据,包含公司代码 (`COMP_CODE`)、过账日期 (`POSTING_DATE`) 等基本信息。 - **ITEM[]**:项目列表,定义具体的分录条目,包括科目账户、金额方向及数值等细节[^1]。 - **TEXTS[]**:文本描述数组,提供额外的文字说明支持。 - **REFERENCE1, REFERENCE2**:参考字段,可用于存储关联信息或备注。 对于扩展需求,则可通过 `EXTENSIONIN` 参数传递自定义的数据集来补充标准接口未覆盖的内容[^3]。 #### 实现预制凭证的方法 当希望生成的是预制而非正式的过账凭证时,在增强实施过程中可以通过修改特定状态变量的方式达成目的。具体做法是在 SE19 工具中激活相应增强点,并在变更方法内设置目标状态码为 `'2'`,以此指示系统仅构建而不实际提交凭证记录[^4]。 ```abap MOVE '2' TO c_acchd-status_new. ``` 以上代码片段展示了如何调整内部工作区中的状态标志位以影响最终的行为模式。 #### 错误处理机制 每次执行后应检查 RETURN 表格内的反馈信息,确保操作顺利完成并及时响应任何潜在异常情况。RETURN 结构体包含了多种属性如 TYPE(E=Error,W=Warning,S=Success,I=Information),帮助开发者了解事务的具体进展状况以及是否存在阻碍因素[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值