zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    互操作
    Rx基础
    数据流块基础
    C# 一个帮您理解回调函数的例子(新手必看)
    C# 多线程之通过Timer开启线程的例子
    C# 利用委托事件进行窗体间的传值(新手必看)
    C#XML文件操作随笔
    C# 委托学习笔记
    c# 关于抓取网页源码后中文显示乱码的原因分析和解决方法
    c# 异步编程 使用回调函数例子
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157490.html
Copyright © 2011-2022 走看看