ORDER05 (call transaction) or SALESORDER_CREATEFROMDAT2 (using BAPI)

Hello all,
Should we use ORDER05 or SALESORDER_CREATEFROMDAT2 to place sales orders in SAP?
I know ORDERS05 is using call transaction to create it an the other one is using a BAPI.
One was released for version 46C and the other one from 620
It seems as we need to use the second one but I'm not sure the functionality or what is the purpose for this last message type.
My disconcert is just because I was expecting ORDERS06 for new versions...
Thanks in advance.
Jorge Rosa.
Edited by: Jorge Rosa on Feb 8, 2012 2:46 PM

Hello Jorge,
May be thread in the SD foruns would help you more than database:
http://forums.sdn.sap.com/forum.jspa?forumID=246&start=0
http://forums.sdn.sap.com/forum.jspa?forumID=328&start=0
Regards,
Eduardo Rezende

Similar Messages

  • Call transaction in Portal using  if_wd_portal_integrati- navigate_absolute

    Hi Guys,
                  I am calling a transaction in portal using the following code.
      CALL METHOD l_portal_manager->navigate_absolute
        EXPORTING
          navigation_target   = 'pcd:portal_content/com.csa.Prototype/com.csiro.Page/SAPWebGUI/sap_transaction_html_gui'
          navigation_mode     = if_wd_portal_integration=>co_show_external
          WINDOW_FEATURES     = 'TOOLBAR=FALSE,LOCATION=FALSE,RESIZABLE'
          business_parameters = bparams
          launcher_parameters = lparams.
    But when I test in portal, its pop up a page and shows message No Page Found.
    Any idea what should be done.
    Thanks
    Senthil

    Hi Lekha,
                   Here is the existing code
      l_api_component = wd_comp_controller->wd_get_api( ).
      l_portal_manager = l_api_component->get_portal_manager( ).
      MOVE 'OkCode' TO param-key.
      MOVE '/00' TO param-value.
      APPEND param TO lparams.
      MOVE 'TCode' TO param-key.
      MOVE 'MRBR' TO param-value.
      APPEND param TO lparams.
      MOVE 'SO_BELNR-LOW' TO param-key.
      MOVE stru_invoice-belnr TO param-value.
      APPEND param TO bparams.
      MOVE 'SO_GJAHR-LOW' TO param-key.
      MOVE stru_invoice-gjahr TO param-value.
      APPEND param TO bparams.
      CALL METHOD l_portal_manager->navigate_absolute
        EXPORTING
         navigation_target   = 'pcd:portal_content/com.csiro.Prototype/com.csi.Page/SAPWebGUI/sap_transaction_html_gui'
          navigation_target   = 'ROLES://portal_content/com.csiro.Prototype/com.csi.Page/SAPWebGUI/sap_transaction_html_gui'
          navigation_mode     = if_wd_portal_integration=>co_show_external
          WINDOW_FEATURES     = 'TOOLBAR=FALSE,LOCATION=FALSE,RESIZABLE'
          business_parameters = bparams
          launcher_parameters = lparams.
    Here they trying to call sap_transaction_html_guilink and giving tcode as a parameter.
    Does it work ?
    Thanks
    Senthil

  • Calling Transaction from ALV using OO Method

    Hi,
    My requirement is as follows....
    I have an ALV grid with columns such as month wise Total of a GL account  say JAN, feb etc...
    When I double click on any of these cells it should take me to the respective Transaction (say FBL3n for the GL account and the company code) . I am able to track the GL account for which the total is displayed and company code is one of my selection criteria. In the main screen of the FBL3N we have to enter the posting date and i also want the Radio button against "all items', presently default is against 'Open Items'. So how can i proceed.
    Thanks and Regards,
    Namit

    DATA gr_event_handler TYPE REF TO lcl_event_handler . .. ..
    *--Creating an instance for the event handler
    CREATE OBJECT gr_event_handler .
    *--Registering handler methods to handle ALV Grid events
    SET HANDLER gr_event_handler->handle_double_click FOR gr_alvgrid .
    CLASS lcl_event_handler IMPLEMENTATION .
    *Handle Double Click
    METHOD handle_double_click .
    PERFORM handle_double_click USING e_row e_column es_row_no .
    ENDMETHOD .
    CLASS lcl_event_handler DEFINITION
    *Double-click control
    Methods:
    handle_double_click
          FOR EVENT double_click OF cl_gui_alv_grid
            IMPORTING e_row e_column
               i_fieldrows      TYPE lvc_t_row.
               w_fieldrows LIKE LINE OF i_fieldrows,
      CALL METHOD o_alvgrid->get_selected_rows
                 IMPORTING
                 et_index_rows = i_fieldrows.
      LOOP AT i_fieldrows INTO w_fieldrows.
        READ TABLE i_batch INTO w_block INDEX w_fieldrows-index.
    if sy-subrc = 0.
    *       CLASS LCL_EVENT_RECEIVER DEFINITION
    CLASS LCL_EVENT_RECEIVER DEFINITION.
    * Event receiver definitions for ALV actions
      PUBLIC SECTION.
        CLASS-METHODS:
    * Row Double click for dirll down.
           HANDLE_DOUBLE_CLICK
             FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                IMPORTING E_ROW
                          E_COLUMN
                          ES_ROW_NO.
    ENDCLASS.
    * Implementation
    * Every event handler that is specified below should also be set after
    * the object has been created.  This is done in the PBO processing.
    * with the following command
    * SET HANDLER oEventreceiver->handle_toolbar FOR o_Alvgrid.
    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
    *&      Method handle_double_click
    * This method is called when the user double clicks on a line to drill
    * down.
    * The following are exported from the ALV
    * LVC_S_ROW
    * LVC_S_COL
    * LVC_S_ROID
      METHOD HANDLE_DOUBLE_CLICK.
    * The double click drill down processing should be
    * coded in the form below.
       PERFORM F9007_HANDLE_DOUBLE_CLICK USING E_ROW
                                               E_COLUMN
                                               ES_ROW_NO.
      ENDMETHOD.
    ENDCLASS.
    *&      Form  F9007_HANDLE_DOUBLE_CLICK
    * This form is called when the user double clicks on a line to drill
    * down.
    *      -->P_E_ROW_ID    - Row ID  text
    *      -->P_E_COLUMN_ID - Column ID
    *      -->P_ES_ROW_NO   - Row number
    FORM f9007_handle_double_click USING p_row
                                         p_column
                                         p_row_no.
      DATA: lw_output LIKE LINE OF i_output.
    * RG:16/11/2004 - Start of Changes
    * Need to check that a subtotal or grand total line has not been
    * double-clicked, otherwise the report will produce a short dump!
      check p_row+0(1) is initial.
    * RG:16/11/2004 - End of Changes
      READ TABLE i_output INDEX p_row INTO lw_output.
      CASE p_column.
        WHEN 'KNUMA'.
          IF NOT lw_output-knuma IS INITIAL.
            SET PARAMETER ID 'VBO' FIELD lw_output-knuma.
            CALL TRANSACTION 'VBO3' AND SKIP FIRST SCREEN.
          ENDIF.
        WHEN 'VBAK_VBELN'.
         IF NOT lw_output-vbak_vbeln IS INITIAL.
          SET PARAMETER ID 'AUN' FIELD lw_output-vbak_vbeln.
            CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
          ENDIF.
        WHEN 'VBRK_VBELN'.
          IF NOT lw_output-vbrk_vbeln IS INITIAL.
            SET PARAMETER ID 'VF' FIELD lw_output-vbrk_vbeln.
            CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
          ENDIF.
      ENDCASE.
    ENDFORM.                    " F9007_HANDLE_DOUBLE_CLICK

  • Call transaction Vs  BAPI

    why we go for BAPI instead of call transaction ?

    Hi,
    BAPI is a higher end usage for tranfering the data from SAP to non-SAP and vice-versa. for ex: if we are using VB application,where in that we want to connect to SAP and retireve the data,and then change and update the data in SAP for that purpose we can use that.Apart from that, we can also use it for
    Uploading/Downloading the data from SAP to Non-SAP like call transaction, provided we have an existing BAPI for that.BAPI function modules will also do all the checks required for data integrity like Transactions for call transaction.
    There is one more advantage using BAPI instead of call transaction. When we go for upgradation, there might be pozzibility to change the screen elements for transactions depending on the requirement. In that case,our call transaction pgm may or may not work (depending on the screen changes they have made). Unless and until we prepare new call transaction we cant use the old call transaction pgm. But in BAPI, SAP promises that they are going to keep the old BAPI and for new functionality they will provide an upgraded BAPI. Until we write a new BAPI pgm, we can use the exisitng BAPI pgm.
    ********please reward points if the information is helpful to you**********

  • D/W BAPI and sesssion ,call transaction

    Hi ,
    can any one help me in finding difference from BAPI and call transaction ,session method .
    If you can provide any URL that can be vary  useful .
    Thank u,
    Mahendra.

    Hi Mahendra,
    http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
    BAPI stands for Business API(Application Program Interface).
    Please check these links which will give you step by step for learning BAPI.
    http://www.erpgenie.com/sap/abap/bapi/example.htm
    http://www.sap-img.com/bapi.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/e0/9eb2370f9cbe68e10000009b38f8cf/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/43/b46c1e53c111d395fa00a0c94260a5/content.htm
    http://www.sappoint.com/abap/bapiintro.pdf#search=%22BAPI(SAP)%22
    http://www.erpgenie.com/sap/abap/bapi/index.htm
    http://www.erpgenie.com/sap/abap/bapi/conventions.htm
    http://www.erpgenie.com/sapgenie/docs/BAPI%20Programming.doc
    http://64.233.167.104/custom?q=cache:eyMZ5qPOH-0J:www.erpgenie.com/sapgenie/docs/BAPI%2520Intro.doc+bapi&hl=en&ct=clnk&cd=6&ie=UTF-8&client=pub-2723892367221695
    http://64.233.167.104/custom?q=cache:c7cwsXMxq-UJ:www.sapdevelopment.co.uk/java/jco/bapi_jco.pdf+bapi&hl=en&ct=clnk&cd=1&ie=UTF-8&client=pub-6389415953938571
    http://www.sapgenie.com/abap/bapi/example.htm
    http://www.sappoint.com/abap/bapiintro.pdf
    http://www.sappoint.com/abap/bapiprg.pdf
    http://www.sappoint.com/abap/bapiactx.pdf
    http://www.sappoint.com/abap/bapilst.pdf
    http://www.sappoint.com/abap/bapiexer.pdf
    http://service.sap.com/ale
    http://service.sap.com/bapi
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE8/BCFESDE8.pdf
    http://www.planetsap.com/Bapi_main_page.htm
    http://www.topxml.com/sap/sap_idoc_xml.asp
    http://www.sapdevelopment.co.uk/
    http://www.sapdevelopment.co.uk/java/jco/bapi_jco.pdf
    List of all BAPIs
    http://www.planetsap.com/LIST_ALL_BAPIs.htm

  • No locks realease with CALL TRANSACTION

    Hi all,
    I have a problem. I have a call transaction statement inside of a Loop. The problem is that it brings in the messtab a message that says that the product that I'm trying to modify is locked after each loop pass. I've tried to correc it using COMMIT WORK AND WAIT, WAIT UP TO 5 seconds, DEQUEUE ALL and modifying the update technique of the call transaction to S and L....but nothing helps.
    In addition, I have the same problem but instead of using a call transaction statement I used a BAPI ( BAPI_PRDSRVAPS_SAVEMULTI2)
    I use the BAPI in this way.
    CALL FUNCTION 'BAPI_PRDSRVAPS_SAVEMULTI2'
      EXPORTING
        logical_system                    = wl_logsis
      SAVE_OPTIONS                      =
       COMMIT_CONTROL                     =  ''
      BUSINESS_SYSTEM_GROUP             =
    TABLES
       PRODUCT_LOCATION_VERSION          = t_location_ver
       PRODUCT_LOCATION_VERSION_X        = t_location_verx
       RETURN                            = t_return1.
    Please some ideas...
    Thanks.

    Hi guys,
    I've been trying in the way you said but I've not be able to solve the problem. This is part of the code I wrote before calling BAPI in order to get success.
    wl_tabix = 1.
      WHILE wl_tabix ne 1.
        CALL FUNCTION 'ENQUEUE_/SAPAPO/E_MATKEY'
          EXPORTING
            MODE_/SAPAPO/MATKEY_LOCK       = 'E'
            MANDT                          = SY-MANDT
            MATNR                          = gt_outtab-matnr
         EXCEPTIONS
           FOREIGN_LOCK                   = 1
           SYSTEM_FAILURE                 = 2
           OTHERS                         = 3.
         MOVE sy-subrc TO wl_tabix.
         IF wl_tabix ne 1.
           CALL FUNCTION 'DEQUEUE_/SAPAPO/E_MATKEY'
            EXPORTING
               MODE_/SAPAPO/MATKEY_LOCK       = 'E'
               MANDT                          = SY-MANDT
               MATNR                          = gt_outtab-matnr.
         ENDIF.
      ENDWHILE.
    Please, some ideas for this because I'm still stuck on it.
    Thanks.

  • Call transaction f-36

    Hı all
    ı write like code part   but  messtab everytime  empty
    data opt type ctu_params.
      opt-dismode = 'E'.
      opt-updmode = 'S'.
    call  transaction 'F-36' using bdcdata messages into messtab options from opt.
    you can see below bdcdata information
    SAPMF05A     320     X          
         0          BDC_CURSOR     RF05A-NEWKO
         0          BDC_OKCODE     /00
         0          BSEG-WRBTR     30000
         0          BSEG-ZFBDT     30.01.2012
         0          BSEG-GSBER     
         0          BSED-WSTAT     C
         0          BSED-WNAME     YNS AMBALAJ SAN VE TİC
         0          BSED-BOENO     5177313
         0          BSED-BANK     0208-00148
         0          BSED-ACCOU     268136107
         0          RF05A-NEWBS     15
         0          RF05A-NEWKO     109359
    SAPMF05A     301     X          
         0          BDC_CURSOR     BSEG-WRBTR
         0          BSEG-GSBER     
         0          BDC_OKCODE     /00
         0          BSEG-WRBTR     *
         0          BSEG-ZFBDT     41011
    SAPMF05A     301     X          
         0          BDC_CURSOR     BSEG-WRBTR
         0          BDC_OKCODE     #AD?
    why messages  is empty   help me please
    regard sinan

    Merhaba,
    Muhtemelen tamamı Türkçe gönderimler silinecektir. Bu yüzden geri kalanını inglizce yazacağım.
    There can be several reasons. First of all, is your definitions like that?
    DATA : bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
    DATA : messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
    -Add MODE parameter with 'A' value so you can analyze batch step by step.
    -Is options important? Try call transaction without options parameter. If it is; try change sequence of parameters. messages parameter to last of parameters. Here is my suggestion:
    CALL TRANSACTION 'F-36'  USING bdcdata OPTIONS FROM opt MODE 'A' MESSAGES INTO messtab.
    - last thing i can suggest search BAPI.
    Take care.
    Çağatay

  • Issue in background job for call transaction

    Dear All,
    I am facing a strange issue with call transaction. I need to add some Purchase requisitons in the APO using Call transactionmethod. It is working fine In All screen mode and No Screen Mode. But when I schedule the program in BAckground processing it is not wokring fine. It is not creating any Purchase requisitioins. When I debug the background Job it is creating Purchase requisitions.
    Please find the code below
        DATA: l_wa_params TYPE ctu_params.
        l_wa_params-dismode = l_c_mode.
        l_wa_params-updmode = 'A'.
        l_wa_params-defsize = 'X'.
        l_wa_params-racommit = 'X'.
        CALL TRANSACTION '/SAPAPO/RRP3' USING fp_i_bdcdata OPTIONS FROM l_wa_params
                                            MESSAGES INTO l_i_bdcmsgcoll.

    Hi,
    I have exactly the same problem with transaction /SAPAPO/RRP5.
    Thanks in advance for your help,
    Yannick CAREL

  • How to get a message from call transaction in RFC call

    Hello :
    I would like to ask one favor i make a 2 call transaction in a RFC funtion when i make the first CALL TRANSACTION using te next statement.
        CALL TRANSACTION 'F-43'
          USING bdcdata MESSAGES INTO messtab2 OPTIONS FROM l_fromopt.
    I recive the number of the document in the field  sy-msgv1 from the message table messtab2 , then i make the second  CALL TRANSACTION  and i am waiting to get the other number of the document from the table messtab3  using the next statatement.
         CALL TRANSACTION 'FIBLFFP'
            USING bdcdata MESSAGES INTO messtab3 OPTIONS FROM l_fromopt. but now the table messtab3 don't send the number of document , and i need to get the number of this document for making a REFERENCE.
    thanks a lot for you help

    FORM bdc_transaction USING tcode TYPE tcode.
      DATA: l_mstring(480).
      DATA: l_subrc  TYPE sy-subrc,
            lwa_t100 TYPE t100.
      DATA : gv_ctumode TYPE ctu_params-dismode VALUE 'A'.
    call transaction using
    BREAK-POINT.
      REFRESH gt_messtab.
      CLEAR gwa_messtab.
      gv_ctumode = gc_ctumode.
      CALL TRANSACTION tcode USING gi_bdcdata                "#EC CI_CALLTA
                       MODE   gv_ctumode
                       UPDATE gc_cupdate
                       MESSAGES INTO gt_messtab.
      l_subrc = sy-subrc.
      IF sy-subrc <> 0.
        WRITE: / 'CALL_TRANSACTION',
                 tcode,
                 'returncode:',
                 l_subrc,
                 'RECORD:',
                 sy-index.
        LOOP AT gt_messtab INTO gwa_messtab.
          CLEAR lwa_t100.
          SELECT SINGLE * FROM t100 INTO lwa_t100  WHERE sprsl = gwa_messtab-msgspra
                                    AND            arbgb = gwa_messtab-msgid
                                    AND            msgnr = gwa_messtab-msgnr.
          IF sy-subrc = 0.
            l_mstring = lwa_t100-text.
            IF l_mstring CS '&1'.
              REPLACE '&1' WITH gwa_messtab-msgv1 INTO l_mstring.
              REPLACE '&2' WITH gwa_messtab-msgv2 INTO l_mstring.
              REPLACE '&3' WITH gwa_messtab-msgv3 INTO l_mstring.
              REPLACE '&4' WITH gwa_messtab-msgv4 INTO l_mstring.
            ELSE.
              REPLACE '&' WITH gwa_messtab-msgv1 INTO l_mstring.
              REPLACE '&' WITH gwa_messtab-msgv2 INTO l_mstring.
              REPLACE '&' WITH gwa_messtab-msgv3 INTO l_mstring.
              REPLACE '&' WITH gwa_messtab-msgv4 INTO l_mstring.
            ENDIF.
            CALL FUNCTION 'FORMAT_MESSAGE'
              EXPORTING
                id        = gwa_messtab-msgid
                lang      = sy-langu
                no        = gwa_messtab-msgnr
                v1        = gwa_messtab-msgv1
                v2        = gwa_messtab-msgv2
                v3        = gwa_messtab-msgv3
                v4        = gwa_messtab-msgv4
              IMPORTING
                msg       = l_mstring
              EXCEPTIONS
                not_found = 1
                OTHERS    = 2.
            IF sy-subrc <> 0.
              MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
            ENDIF.
            CONDENSE l_mstring.
            IF NOT l_mstring IS INITIAL.
              WRITE: / gwa_messtab-msgtyp, l_mstring(250).
              MESSAGE l_mstring TYPE 'I'.
            ENDIF.
          ELSE.
            WRITE: / gwa_messtab.
          ENDIF.
        ENDLOOP.
        SKIP.
      ENDIF.

  • Call transaction in a BDC program...

    Hi,
    I can see in one of the BDC program, the call transaction command is used. This BDC program updates the Vendor master table.
    CALL TRANSACTION BLF00-TCODE USING  FT
                                     MODE   ANZ_MODE
                                     UPDATE UPDATE.
    Now, I am trying to know what transaction code it is using in above call transaction to update vendor master.
    Regards,
    Rajesh.

    Put a break point on that statement in that program and run your program using MODE 'A', step thru the screens, when you get to that statement in debug mode, simply click on the BLF00-TCODE and see the value. 
    Regards,
    Rich Heilman

  • CALL TRANSACTION in user dialog

    Hi!
    I'm having problem to use syntax CALL TRANSACTION in user dialog (SE80).  My syntax is as follows:
    CALL TRANSACTION 'F-43' USING BDCDATA MODE 'N' UPDATE 'S'
              MESSAGES INTO t_msg.
    My problem is I cannot execute this syntax in background mode although I set the MODE as N(Do not display) or P(Do not display; debugging possible).
    However, if I set MODE as A(Display screen) or E(Display only if an error occurs), it works but foreground execution.
    Hope to get respond from you guys.
    Thank you and best regards.

    Hi,
    Chk this link if it can help you.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes/sdn_oss_bc_aba/~form/handler%7b5f4150503d3030323030363832353030303030303031393732265f4556454e543d444953504c4159265f4e4e554d3d3732353531%7d
    Regards,
    Balaji
    *Rewrds for helpful answers

  • Pls tell me how to check the errors in  BDC CALL TRANSACTION

    lemme know

    HI ,
    check for the bold part..
    REPORT ZCONCUR_UPLOAD_TO_SAP NO STANDARD PAGE HEADING
                                 LINE-SIZE 170
                                 LINE-COUNT 58
                                 MESSAGE-ID ZM.
                 Internal Table                                         *
    *-Internal table for the Header input data from the Comma Delimited file
    DATA: BEGIN OF IT_DATA_HEADER OCCURS 0,
              ID    TYPE C,      "Identifier
              BUKRS(6),          "Company Code
              WAERS(7),          "Currency
              NEWKO(12),         "Vendor
              XBLNR(16),         "First Name
              XBLNR1(16),        "Last Name
              BLDAT(12),         "Document/Posting date
              PK(15),            "Reference
              WRBTR(15),         "Amount
              BKTXT(27),         "Doc.header text
              BKTXT1(27),        "Item text
              SELNO(8),          "Serial No
          END OF IT_DATA_HEADER.
    *-Internal table for the item input data from the Comma Delimited file
    DATA: BEGIN OF IT_DATA_ITEM OCCURS 0,
              ID    TYPE C,      "Identifier
              NEWKO(19),         "Vendor
              BUKRS(6),          "Company Code
              KOSTL(12),         "Cost center
              WRBTR(15),         "Amount
              SGTXT(50),         "Text
              SELNO(8),          "Serial No Header
              SELNO1(8),         "Serial No item
          END OF IT_DATA_ITEM      .
    *-Internal table for the Header input data from the Comma Delimited file
    *-Removing " " From Comma Delimited file
    DATA: BEGIN OF IT_FINAL_HEADER OCCURS 0,
              ID     TYPE C,           "Identifier
              BUKRS  LIKE BKPF-BUKRS,  "Company Code
              WAERS  LIKE BKPF-WAERS,  "Currency
              NEWKO  TYPE RF05A-NEWKO, "Vendor
              XBLNR  LIKE BKPF-XBLNR,
              XBLNR1 LIKE BKPF-XBLNR,
              BLDAT(10), " LIKE BKPF-BLDAT,  "Date
              PK(15),                  "Reference
              WRBTR(15),               "Amount
              BKTXT  LIKE BKPF-BKTXT,  "Doc.header text
              BKTXT1 LIKE BKPF-BKTXT,  "Item text
              SELNO  TYPE I,           "Serial No
              FLAG   TYPE C,
          END OF IT_FINAL_HEADER.
    *-Internal table for the Item input data from the Comma Delimited file
    *-Removing " " From Comma Delimited file
    DATA: BEGIN OF IT_FINAL_ITEM OCCURS 0,
              ID     TYPE C,           "Identifier
              NEWKO  TYPE RF05A-NEWKO, "Account
              BUKRS  LIKE BKPF-BUKRS,  "Company Code
              KOSTL  LIKE BSEG-KOSTL,  "Cost Center
              WRBTR(15),               "Amount
              SGTXT  LIKE BSEG-SGTXT,  "Text
              SELNO  TYPE I,           "Serial No
              SELNO1 TYPE I,           "Serial No
          END OF IT_FINAL_ITEM.
    **-Internal table for the  input data from the file
    DATA : BEGIN OF P_DOWNLOAD  OCCURS 0,
            V_FILEREC(1000) TYPE C,
           END OF P_DOWNLOAD.
    *--- Internal Table for Success messages
    DATA : BEGIN OF I_SUCC OCCURS 0,
             HEADER(50),
             MSG(100),                     "SUCCESS message
           END OF I_SUCC.
    *--- Internal Table for error messages
    DATA : BEGIN OF I_ERROR_LOG OCCURS 0,
             HEADER(50),
             MSG(100),                     "Error message
           END OF I_ERROR_LOG.
    *--- Internal table for getting the BDC data
    DATA : BEGIN OF IT_BDCDATA OCCURS 0.
            INCLUDE STRUCTURE BDCDATA.     " Table to hold BDC data
    DATA : END OF IT_BDCDATA.
    *--- Internal table for reading the messages of call transaction
    DATA : BEGIN OF IT_MESSAGE_TAB OCCURS 0.
            INCLUDE STRUCTURE BDCMSGCOLL.  "Table to hold messages
    DATA : END OF IT_MESSAGE_TAB.
                          DATA DECLARATIONS                              *
    DATA:
          V_ERROR_COUNTER   TYPE I,        " error records counter
          V_MSG(100),                      " used for Error message
          V_LINES TYPE I,                  " used for format message
          V_HEAD LIKE SY-CPROG,            " Heading for report
          XMODE VALUE 'N',                 " EXECUTION MODE
          V_SUCCESS_COUNTER TYPE I,        " Success records counter
          V_UNAME LIKE APQI-USERID,        " User Name
          V_TOTAL TYPE I.                  " Total records uploaded
    DATA : V_SELNO TYPE I.
    DATA : V_CHECK TYPE I.
    DATA : V_HEADER(50) TYPE C.             "Header Information
    DATA : V_SUCC_MSG LIKE BDCMSGCOLL-MSGV1."Success Message
    DATA : V_ZERO(4) VALUE '0.00'.          "Checking Zero
    DATA : V_CHECK_ZERO  LIKE BSEG-WRBTR.   "Checking Zero
    DATA : V_CHECK_ZERO1 LIKE BSEG-WRBTR.   "Checking Zero
    DATA : V_SYSTEMDATE  LIKE BKPF-BUDAT.
    DATA : V_VALUE TYPE I.
    DATA : V_VALUE1 TYPE I.
    DATA : V_VALUE2 TYPE I.
    Flags
    DATA:
           F_BDC_OPEN,                   " BDC session open check.
           F_CONTINUE_PROCESSING.        " To continue further processing
                             CONSTANTS                                   *
    CONSTANTS:
           C_SESSION_NAME LIKE APQI-GROUPID VALUE 'F-43',  "Session
           C_X VALUE 'X'.                                  " Used for falgs
                        SELECTION SCREEN                                 *
    *--- Selection Screen with Block and title
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-038.
    PARAMETER: P_FNAME LIKE RLGRAP-FILENAME DEFAULT
                       'C:\Concur.txt'.
    SELECTION-SCREEN END OF BLOCK B1.
    AT SELECTION SCREEN ON VALUE-REQUEST
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
      CALL FUNCTION 'F4_FILENAME'
           IMPORTING
                FILE_NAME = P_FNAME
           EXCEPTIONS
                OTHERS    = 1.
      IF SY-SUBRC <> 0.
        MESSAGE E999 WITH 'Error in opening a file'(009).
      ENDIF.
                              Top-of-page                                *
    TOP-OF-PAGE .
    *---perform to display the standard header
      PERFORM STANDARD_HEADER.
    --START OF SELECTION--
    START-OF-SELECTION.
    Upload data
      PERFORM UPLOAD_DATA.
    move data to bdcdata internal table
      PERFORM MOVE_DATA_F43.
    *--- Posting the valid data to F-43
      IF F_BDC_OPEN = C_X.
    *---perform to close bdc group
        PERFORM CLOSE_GROUP.
      ENDIF.
                             END OF SELECTION                            *
    END-OF-SELECTION.
      CHECK F_CONTINUE_PROCESSING IS INITIAL.
      PERFORM DISPLAY_REPORT.
    *&      Form  MESSAGE_FORMAT
                MESSAGE FORMAT
    FORM MESSAGE_FORMAT.
      CLEAR V_MSG.
      CALL FUNCTION 'FORMAT_MESSAGE'
           EXPORTING
                ID        = IT_MESSAGE_TAB-MSGID
                LANG      = 'EN'
                NO        = IT_MESSAGE_TAB-MSGNR
                V1        = IT_MESSAGE_TAB-MSGV1
                V2        = IT_MESSAGE_TAB-MSGV2
                V3        = IT_MESSAGE_TAB-MSGV3
                V4        = IT_MESSAGE_TAB-MSGV4
           IMPORTING
                MSG       = V_MSG
           EXCEPTIONS
                NOT_FOUND = 1
                OTHERS    = 2.
      IF SY-SUBRC <> 0.
        V_MSG = SPACE.
      ENDIF.
    ENDFORM.                               " MESSAGE_FORMAT
    *&      Form  F4_HELP
    FORM F4_HELP.
      CALL FUNCTION 'WS_FILENAME_GET'
           EXPORTING
                DEF_FILENAME     = ' '
                DEF_PATH         = 'C:\'
                MODE             = 'O'
                TITLE            = TEXT-025  "'Upload File'
           IMPORTING
                FILENAME         = P_FNAME
           EXCEPTIONS
                SELECTION_CANCEL = 3
                SELECTION_ERROR  = 4.
      CASE SY-SUBRC.
        WHEN 3.
          MESSAGE I000 WITH TEXT-007.      " Selection Cancel.
        WHEN 4.
          MESSAGE I000 WITH TEXT-008.      " Selection Error.
      ENDCASE.
    ENDFORM.                                                    " F4_HELP
    *&      Form  STANDARD_HEADER
           STANDARD_HEADER
    FORM STANDARD_HEADER.
      FORMAT COLOR COL_HEADING INTENSIFIED OFF.
      CASE V_HEAD.
        WHEN 'Summary Report'(001).
        WHEN 'SUCC_REPORT'.
    **---To display the field headings for Success report.
          ULINE (154).
          WRITE : /001 SY-VLINE,
                   002 'Header Details '(011),
                   052 SY-VLINE,
                   053 'Document Number'(036),
                  154 SY-VLINE.
          ULINE (154).
        WHEN 'Error Report'.
    **---To display the field headings for error report.
          ULINE (154).
          WRITE : /001 SY-VLINE,
                   002 'Header Details '(011),
                   052 SY-VLINE,
                   053 'Error Message/Text'(035),
                  154 SY-VLINE.
          ULINE (154).
      ENDCASE.
    ENDFORM.                               " STANDARD_HEADER
    *&      Form  DISPLAY_REPORT
          Display Report Details
    FORM DISPLAY_REPORT.
      PERFORM SUMMARY_REPORT.
      PERFORM SUCC_REPORT.
      PERFORM ERROR_REPORT.
    ENDFORM.                               " DISPLAY_REPORT
    *&      Form  SUMMARY_REPORT
           Success & Error Count Number
    FORM SUMMARY_REPORT.
      WRITE : /030 SY-TITLE.
      SKIP 1.
      WRITE : /005 'Program Name : '(032),
               024 SY-REPID,
               080 'Date :'(033),
               088 SY-DATUM.
      SKIP 1.
      V_HEAD = 'Summary Report'(001).
      ULINE (132).
      WRITE : /1 SY-VLINE,
               5 'No. of Records read from the Data file'(014),
               45 ':', V_TOTAL LEFT-JUSTIFIED,
               132 SY-VLINE,
              /1 SY-VLINE,
               5 'No. of Records successfully posted'(015),
               45 ':', V_SUCCESS_COUNTER LEFT-JUSTIFIED,
               132 SY-VLINE,
              /1 SY-VLINE,
               5 'No. of Records Failed'(023),
               45 ':'(031), V_ERROR_COUNTER LEFT-JUSTIFIED,
               132 SY-VLINE.
      IF NOT F_BDC_OPEN IS INITIAL.
        WRITE:  /1 SY-VLINE,
                5 'Session Name'(022),
                45 ':'(031), C_SESSION_NAME LEFT-JUSTIFIED,
                132 SY-VLINE.
      ENDIF.
      ULINE (132).
      IF NOT F_BDC_OPEN IS INITIAL.
        WRITE:  /1 SY-VLINE,
                5 'Session Name'(022),
                45 ':'(031), C_SESSION_NAME LEFT-JUSTIFIED,
                132 SY-VLINE.
      ENDIF.
    ULINE (132).
    ENDFORM.                               " SUMMARY_REPORT
    *&      Form  ERROR_REPORT
          Error Report
    FORM ERROR_REPORT.
      IF NOT I_ERROR_LOG[] IS INITIAL.
        SORT I_ERROR_LOG.                  " by tcode.
        V_HEAD = 'Error Report'(013).
        NEW-PAGE.
        LOOP AT I_ERROR_LOG.
          WRITE: /001 SY-VLINE,
                  002 I_ERROR_LOG-HEADER,
                  052 SY-VLINE,
                  053 I_ERROR_LOG-MSG,
                  154 SY-VLINE.
          ULINE (154).
        ENDLOOP.
      ENDIF.
    ENDFORM.                               " ERROR_REPORT
    *&      Form  ERROR_REPORT
          Success Report
    FORM SUCC_REPORT.
      IF NOT I_SUCC[] IS INITIAL.
        SORT I_SUCC.                  " by tcode.
        V_HEAD = 'SUCC_REPORT'(034).
        NEW-PAGE.
        LOOP AT I_SUCC.
          WRITE: /001 SY-VLINE,
                  002 I_SUCC-HEADER,
                  052 SY-VLINE,
                  053 I_SUCC-MSG,
                  154 SY-VLINE.
          ULINE (154).
        ENDLOOP.
      ENDIF.
    ENDFORM.                               " SUCC_REPORT
    *&      Form  OPEN_SESSION
    FORM OPEN_SESSION.
      DATA : V_DATE LIKE SY-DATUM.         " For Hold Date.
      V_DATE = SY-DATUM - 1.               " Hold date
      V_UNAME = SY-UNAME.                  " User name
      CALL FUNCTION 'BDC_OPEN_GROUP'
           EXPORTING
                CLIENT              = SY-MANDT
                GROUP               = C_SESSION_NAME
                HOLDDATE            = V_DATE
                KEEP                = 'X'
                USER                = V_UNAME
           EXCEPTIONS
                CLIENT_INVALID      = 1
                DESTINATION_INVALID = 2
                GROUP_INVALID       = 3
                GROUP_IS_LOCKED     = 4
                HOLDDATE_INVALID    = 5
                INTERNAL_ERROR      = 6
                QUEUE_ERROR         = 7
                RUNNING             = 8
                SYSTEM_LOCK_ERROR   = 9
                USER_INVALID        = 10
                OTHERS              = 11.
      IF SY-SUBRC <> 0.
        MESSAGE I000 WITH 'Session can not be opened'(019).
        STOP.
      ENDIF.
      F_BDC_OPEN = 'X'.
    ENDFORM.                               " OPEN_SESSION
    *&      Form  BDC_INSERT
    FORM BDC_INSERT USING P_TCODE TYPE ANY.
      CALL FUNCTION 'BDC_INSERT'
           EXPORTING
                TCODE            = P_TCODE
           TABLES
                DYNPROTAB        = IT_BDCDATA
           EXCEPTIONS
                INTERNAL_ERROR   = 1
                NOT_OPEN         = 2
                QUEUE_ERROR      = 3
                TCODE_INVALID    = 4
                PRINTING_INVALID = 5
                POSTING_INVALID  = 6
                OTHERS           = 7.
      IF SY-SUBRC <> 0.
        MESSAGE I000 WITH 'Unable to insert, Error record'(037).
        STOP.
      ENDIF.
    ENDFORM.                               " BDC_INSERT
    *&      Form  CLOSE_GROUP
    FORM CLOSE_GROUP.
      CALL FUNCTION 'BDC_CLOSE_GROUP'
           EXCEPTIONS
                NOT_OPEN    = 1
                QUEUE_ERROR = 2
                OTHERS      = 3.
      IF SY-SUBRC <> 0.
        MESSAGE I000 WITH 'Session can not be closed'(021).
        STOP.
      ENDIF.
    ENDFORM.                               " CLOSE_GROUP
    *&      Form  UPLOAD_DATA
          Upload Data From the text file
    FORM UPLOAD_DATA.
      CALL FUNCTION 'WS_UPLOAD'
           EXPORTING
                FILENAME                = P_FNAME
                FILETYPE                = 'DAT'
           TABLES
                DATA_TAB                = P_DOWNLOAD
           EXCEPTIONS
                CONVERSION_ERROR        = 1
                FILE_OPEN_ERROR         = 2
                FILE_READ_ERROR         = 3
                INVALID_TYPE            = 4
                NO_BATCH                = 5
                UNKNOWN_ERROR           = 6
                INVALID_TABLE_WIDTH     = 7
                GUI_REFUSE_FILETRANSFER = 8
                OTHERS                  = 10.
      IF SY-SUBRC NE 0.
        MESSAGE E000 WITH 'File does not Exist'(003).
      ELSEIF P_DOWNLOAD[] IS INITIAL.
        MESSAGE E000 WITH 'Input file is empty'(004).
      ENDIF.
      DATA: V_INDEX LIKE SY-TABIX.
      IF NOT P_DOWNLOAD[] IS INITIAL.
        LOOP AT P_DOWNLOAD.
          V_INDEX = SY-TABIX.
    *Removing double quotes
          DO.
            REPLACE '"' WITH '' INTO P_DOWNLOAD.
            IF SY-SUBRC NE 0.
              EXIT.
            ENDIF.
          ENDDO.
          MODIFY P_DOWNLOAD INDEX V_INDEX.
          CONDENSE P_DOWNLOAD.
          IF P_DOWNLOAD(1) = '1'.
    *Finding the header information, creating key field
            V_SELNO =  SY-TABIX.
          ENDIF.
    WE ARE NOT HAVING KEY FIELD IN HEADER/ITEM IN THE FILE.
    SO WE ARE CREATING MANUAL KEY FIELD IN INTERNAL TABLE (SELNO).
          IF P_DOWNLOAD(1) = '1'.
    Moving header information into IT_DATA_HEADER Internal Table
            SPLIT P_DOWNLOAD AT ',' INTO
                  IT_DATA_HEADER-ID
                  IT_DATA_HEADER-BUKRS
                  IT_DATA_HEADER-WAERS
                  IT_DATA_HEADER-NEWKO
                  IT_DATA_HEADER-XBLNR
                  IT_DATA_HEADER-XBLNR1
                  IT_DATA_HEADER-BLDAT
                  IT_DATA_HEADER-PK
                  IT_DATA_HEADER-WRBTR
                  IT_DATA_HEADER-BKTXT
                  IT_DATA_HEADER-BKTXT1.
            IT_DATA_HEADER-SELNO = V_SELNO.
            CONDENSE : IT_DATA_HEADER-ID,     IT_DATA_HEADER-BUKRS,
                       IT_DATA_HEADER-WAERS,  IT_DATA_HEADER-NEWKO,
                       IT_DATA_HEADER-XBLNR,  IT_DATA_HEADER-XBLNR1,
                       IT_DATA_HEADER-BLDAT,  IT_DATA_HEADER-PK,
                       IT_DATA_HEADER-WRBTR,  IT_DATA_HEADER-BKTXT,
                       IT_DATA_HEADER-BKTXT1, IT_DATA_HEADER-SELNO.
            APPEND IT_DATA_HEADER.
            CLEAR  IT_DATA_HEADER.
          ELSEIF P_DOWNLOAD(1) = '2'.
    Moving header information into IT_DATA_ITEM Internal Table
            SPLIT P_DOWNLOAD AT ',' INTO
                  IT_DATA_ITEM-ID
                  IT_DATA_ITEM-NEWKO
                  IT_DATA_ITEM-BUKRS
                  IT_DATA_ITEM-KOSTL
                  IT_DATA_ITEM-WRBTR
                  IT_DATA_ITEM-SGTXT.
            IT_DATA_ITEM-SELNO  = V_SELNO.
            IT_DATA_ITEM-SELNO1 = SY-TABIX.
            CONDENSE: IT_DATA_ITEM-ID,IT_DATA_ITEM-NEWKO,IT_DATA_ITEM-BUKRS,
                      IT_DATA_ITEM-KOSTL,IT_DATA_ITEM-WRBTR,
                      IT_DATA_ITEM-SGTXT,IT_DATA_ITEM-SELNO,
                      IT_DATA_ITEM-SELNO1.
            APPEND IT_DATA_ITEM.
            CLEAR  IT_DATA_ITEM.
          ENDIF.
        ENDLOOP.
    *SORT HEADER & ITEM INTERNAL Table
        SORT IT_DATA_HEADER BY SELNO.
        SORT IT_DATA_ITEM   BY SELNO SELNO1.
    *Header Information
        LOOP AT IT_DATA_HEADER.
          IT_FINAL_HEADER-ID    = IT_DATA_HEADER-ID.
          IT_FINAL_HEADER-BUKRS = IT_DATA_HEADER-BUKRS.
          IT_FINAL_HEADER-WAERS = IT_DATA_HEADER-WAERS.
          IT_FINAL_HEADER-NEWKO = IT_DATA_HEADER-NEWKO.
          CONCATENATE IT_DATA_HEADER-XBLNR IT_DATA_HEADER-XBLNR1
                      INTO IT_FINAL_HEADER-XBLNR.
          IT_FINAL_HEADER-BLDAT  = IT_DATA_HEADER-BLDAT.
          IT_FINAL_HEADER-PK     = IT_DATA_HEADER-PK.
          IT_FINAL_HEADER-WRBTR  = IT_DATA_HEADER-WRBTR.
          IT_FINAL_HEADER-BKTXT  = IT_DATA_HEADER-BKTXT.
          IT_FINAL_HEADER-BKTXT1 = IT_DATA_HEADER-BKTXT1.
          IT_FINAL_HEADER-SELNO  = IT_DATA_HEADER-SELNO.
          APPEND IT_FINAL_HEADER.
          CLEAR  IT_FINAL_HEADER.
        ENDLOOP.
    *Item Information
        LOOP AT IT_DATA_ITEM.
    CHECKING ZERO IN THE IT_DATA_ITEM-WRBTR FIELD
    It will not append the IT_FINAL_ITEM
          V_CHECK_ZERO = IT_DATA_ITEM-WRBTR.
          IF V_CHECK_ZERO NE V_CHECK_ZERO1. "V_ZERO.
            IT_FINAL_ITEM-ID     = IT_DATA_ITEM-ID.
            IT_FINAL_ITEM-NEWKO  = IT_DATA_ITEM-NEWKO.
            IT_FINAL_ITEM-BUKRS  = IT_DATA_ITEM-BUKRS.
            IT_FINAL_ITEM-KOSTL  = IT_DATA_ITEM-KOSTL.
            IT_FINAL_ITEM-WRBTR  = IT_DATA_ITEM-WRBTR.
            IT_FINAL_ITEM-SGTXT  = IT_DATA_ITEM-SGTXT.
            IT_FINAL_ITEM-SELNO  = IT_DATA_ITEM-SELNO.
            IT_FINAL_ITEM-SELNO1 = IT_DATA_ITEM-SELNO1.
            APPEND IT_FINAL_ITEM.
            CLEAR  IT_FINAL_ITEM.
            CLEAR : V_CHECK_ZERO,V_CHECK_ZERO1.
          ENDIF.
        ENDLOOP.
        SORT IT_FINAL_HEADER BY SELNO.
        SORT IT_FINAL_ITEM BY SELNO.
      ENDIF.
    ENDFORM.                    " UPLOAD_DATA
    *&      Form  MOVE_DATA_F43
          Call Transaction F-43
    FORM MOVE_DATA_F43.
    *MOVE THE SYSTEM DATE TO
      CLEAR V_SYSTEMDATE.
      V_SYSTEMDATE = SY-DATUM.
      LOOP AT IT_FINAL_HEADER.
        CLEAR V_CHECK.
        V_CHECK = IT_FINAL_HEADER-SELNO.
      MOVE HEADER DATA TO BDCDATA INTERNAL TABLE
        PERFORM BDC_BUILD_HEADER.
      MOVE ITEM DATA TO BDCDATA INTERNAL TABLE
        PERFORM BDC_BUILD_ITEM.
    <b>*   Call Transcation (F-43)
        CALL TRANSACTION 'F-43' USING IT_BDCDATA
                                MODE XMODE
                                UPDATE 'S'
                                MESSAGES INTO IT_MESSAGE_TAB.</b>
    IF error record found, it will move to batch Input session
        IF SY-SUBRC <> 0.
          V_ERROR_COUNTER = V_ERROR_COUNTER + 1.      " Inc the counter
          CLEAR V_LINES.
          DESCRIBE TABLE IT_MESSAGE_TAB LINES V_LINES.
          READ TABLE IT_MESSAGE_TAB INDEX V_LINES.
    *--- <b>Perform to read the messages
          PERFORM MESSAGE_FORMAT.</b>*--- Appending the error records into error table
          CONDENSE IT_FINAL_HEADER-BUKRS.
          CONDENSE IT_FINAL_HEADER-NEWKO.
          CONDENSE IT_FINAL_HEADER-XBLNR.
          CONDENSE IT_FINAL_HEADER-BLDAT.
          CONCATENATE IT_FINAL_HEADER-BUKRS ','
                      IT_FINAL_HEADER-NEWKO ','
                      IT_FINAL_HEADER-XBLNR ','
                      IT_FINAL_HEADER-BLDAT
                      INTO V_HEADER.
          I_ERROR_LOG-HEADER = V_HEADER.
          I_ERROR_LOG-MSG = V_MSG.
          APPEND I_ERROR_LOG.
          CLEAR I_ERROR_LOG.
    *--  Posting the error record to Session
          IF F_BDC_OPEN IS INITIAL.
            PERFORM OPEN_SESSION.
          ENDIF.
          PERFORM BDC_INSERT USING 'F-43'.
        ELSE.
          V_SUCCESS_COUNTER = V_SUCCESS_COUNTER + 1.
    *--  READING ONLY SUCCESS MESSAGE(MSGNR 312)
          LOOP AT IT_MESSAGE_TAB WHERE MSGNR = '312'.
            V_SUCC_MSG = IT_MESSAGE_TAB-MSGV1.
          ENDLOOP.
    *--- Perform to read the messages
          PERFORM MESSAGE_FORMAT.
    *--- Appending the Success records into Success table
          CONDENSE IT_FINAL_HEADER-BUKRS.
          CONDENSE IT_FINAL_HEADER-NEWKO.
          CONDENSE IT_FINAL_HEADER-PK.
          CONDENSE IT_FINAL_HEADER-XBLNR.
          CONDENSE IT_FINAL_HEADER-BLDAT.
          CONCATENATE IT_FINAL_HEADER-BUKRS ','
                      IT_FINAL_HEADER-NEWKO ','
                      IT_FINAL_HEADER-PK ','
                      IT_FINAL_HEADER-XBLNR ','
                      IT_FINAL_HEADER-BLDAT
                      INTO V_HEADER.
          I_SUCC-HEADER = V_HEADER.
          I_SUCC-MSG = V_SUCC_MSG.
          APPEND I_SUCC.
          CLEAR  I_SUCC.
        ENDIF.
        V_TOTAL = V_TOTAL + 1.
        REFRESH: IT_BDCDATA,
                 IT_MESSAGE_TAB.
        CLEAR:   IT_BDCDATA,
                 IT_MESSAGE_TAB.
      ENDLOOP.
    ENDFORM.                    " MOVE_DATA_F43
           Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR IT_BDCDATA.
      IT_BDCDATA-PROGRAM  = PROGRAM.
      IT_BDCDATA-DYNPRO   = DYNPRO.
      IT_BDCDATA-DYNBEGIN = 'X'.
      APPEND IT_BDCDATA.
    ENDFORM.
           Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
      CLEAR IT_BDCDATA.
      IT_BDCDATA-FNAM = FNAM.
      IT_BDCDATA-FVAL = FVAL.
      APPEND IT_BDCDATA.
    ENDFORM.
    *&      Form  BDC_BUILD_HEADER
          Header Information
    FORM BDC_BUILD_HEADER.
    Header Details
      PERFORM BDC_DYNPRO      USING 'SAPMF05A'    '0100'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'  '/00'.
      PERFORM BDC_FIELD       USING 'BKPF-BLDAT'
                                     IT_FINAL_HEADER-BLDAT.
      PERFORM BDC_FIELD       USING 'BKPF-BLART'
                                    'KR'.
      PERFORM BDC_FIELD       USING 'BKPF-BUKRS'
                                    IT_FINAL_HEADER-BUKRS.
    Moveing System date to Posting date in the document
      CLEAR IT_FINAL_HEADER-BLDAT.
      CONCATENATE V_SYSTEMDATE4(4) V_SYSTEMDATE0(4)
                       INTO  IT_FINAL_HEADER-BLDAT.
      PERFORM BDC_FIELD       USING 'BKPF-BUDAT'
                                  IT_FINAL_HEADER-BLDAT.
      PERFORM BDC_FIELD       USING 'BKPF-WAERS'
                                    IT_FINAL_HEADER-WAERS.
      PERFORM BDC_FIELD       USING 'BKPF-XBLNR'
                                    IT_FINAL_HEADER-PK.
      PERFORM BDC_FIELD       USING 'BKPF-BKTXT'
                                    IT_FINAL_HEADER-BKTXT.
      PERFORM BDC_FIELD       USING 'FS006-DOCID'  '*'.
      IF IT_FINAL_HEADER-WRBTR CA '-'.
        REPLACE '-' WITH SPACE INTO IT_FINAL_HEADER-WRBTR.
        CONDENSE IT_FINAL_HEADER-WRBTR.
        PERFORM BDC_FIELD       USING 'RF05A-NEWBS'  '25'.
      ELSE.
        PERFORM BDC_FIELD       USING 'RF05A-NEWBS'  '31'.
      ENDIF.
      PERFORM BDC_FIELD       USING 'RF05A-NEWKO'
                                     IT_FINAL_HEADER-NEWKO.
    *-- Item Vendor Details
      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0302'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'BSEG-WRBTR'
                                    IT_FINAL_HEADER-WRBTR.
      PERFORM BDC_FIELD       USING 'BSEG-SGTXT'
                                    IT_FINAL_HEADER-BKTXT1.
    ENDFORM.                    " BDC_BUILD_HEADER
    *&      Form  BDC_BUILD_ITEM
          Item Information
    FORM BDC_BUILD_ITEM.
      DATA L_FIRST TYPE C.
      LOOP AT IT_FINAL_ITEM WHERE SELNO = V_CHECK.
        IF L_FIRST IS INITIAL.
          L_FIRST = C_X.
    Line Item ( PstKy,Account & New Company Code)
         CONDENSE IT_FINAL_HEADER-BLDAT.
          IF IT_FINAL_ITEM-WRBTR CA '-'.
            REPLACE '-' WITH SPACE INTO IT_FINAL_ITEM-WRBTR.
            CONDENSE IT_FINAL_ITEM-WRBTR.
            PERFORM BDC_DYNPRO    USING  'SAPMF05A'    '0302'.
            PERFORM BDC_FIELD     USING: 'BDC_OKCODE'   '/00',
                                         'RF05A-NEWBS'  '50',
                                         'RF05A-NEWKO'  IT_FINAL_ITEM-NEWKO,
                                         'RF05A-NEWBK'  IT_FINAL_ITEM-BUKRS.
          ELSE.
            PERFORM BDC_DYNPRO    USING  'SAPMF05A'    '0302'.
            PERFORM BDC_FIELD     USING: 'BDC_OKCODE'   '/00',
                                         'RF05A-NEWBS'  '40',
                                         'RF05A-NEWKO'  IT_FINAL_ITEM-NEWKO,
                                         'RF05A-NEWBK'  IT_FINAL_ITEM-BUKRS.
          ENDIF.
    Amount & Text
          PERFORM BDC_DYNPRO    USING  'SAPMF05A' '0300'.
          PERFORM BDC_FIELD     USING: 'BDC_OKCODE'   '/00',
                                       'BSEG-WRBTR'   IT_FINAL_ITEM-WRBTR,
                                       'BSEG-SGTXT'   IT_FINAL_ITEM-SGTXT,
                                       'DKACB-FMORE'  'X'.
    Cost Center
          PERFORM BDC_DYNPRO    USING  'SAPLKACB'    '0002'.
          PERFORM BDC_FIELD     USING: 'BDC_OKCODE' 'ENTE',
                                       'COBL-KOSTL' IT_FINAL_ITEM-KOSTL.
        ELSE.
    Line Item ( PstKy,Account & New Company Code)
          IF IT_FINAL_ITEM-WRBTR CA '-'.
            REPLACE '-' WITH SPACE INTO IT_FINAL_ITEM-WRBTR.
            CONDENSE IT_FINAL_ITEM-WRBTR.
            PERFORM BDC_DYNPRO    USING  'SAPMF05A'    '0300'.
            PERFORM BDC_FIELD     USING: 'BDC_OKCODE'   '/00',
                                         'RF05A-NEWBS'  '50',
                                         'RF05A-NEWKO'  IT_FINAL_ITEM-NEWKO,
                                         'RF05A-NEWBK'  IT_FINAL_ITEM-BUKRS.
          ELSE.
            PERFORM BDC_DYNPRO    USING  'SAPMF05A'    '0300'.
            PERFORM BDC_FIELD     USING: 'BDC_OKCODE'   '/00',
                                         'RF05A-NEWBS'  '40',
                                         'RF05A-NEWKO'  IT_FINAL_ITEM-NEWKO,
                                         'RF05A-NEWBK'  IT_FINAL_ITEM-BUKRS.
          ENDIF.
          PERFORM BDC_DYNPRO    USING  'SAPLKACB'   '0002'.
          PERFORM BDC_FIELD     USING: 'BDC_OKCODE' 'ENTE'.
    Amount & Text
          PERFORM BDC_DYNPRO    USING  'SAPMF05A'    '0300'.
          PERFORM BDC_FIELD     USING: 'BDC_OKCODE'  '/00',
                                       'BSEG-WRBTR'  IT_FINAL_ITEM-WRBTR,
                                       'BSEG-SGTXT'  IT_FINAL_ITEM-SGTXT,
                                       'DKACB-FMORE' 'X'.
    Cost Center
          PERFORM BDC_DYNPRO    USING  'SAPLKACB'    '0002'.
          PERFORM BDC_FIELD     USING: 'BDC_OKCODE' 'ENTE',
                                       'COBL-KOSTL' IT_FINAL_ITEM-KOSTL.
        ENDIF.
      ENDLOOP.
    *Save Details
      PERFORM BDC_DYNPRO        USING  'SAPMF05A' '0300'.
      PERFORM BDC_FIELD         USING  'BDC_OKCODE'
                                       '=BU'.
      PERFORM BDC_DYNPRO        USING  'SAPLKACB'    '0002'.
      PERFORM BDC_FIELD         USING: 'BDC_OKCODE' 'ENTE'.
    ENDFORM.                    " BDC_BUILD_ITEM
    Thanks
    Mahesh

  • Call transaction from screen

    Hi experts,
    I have a screen where I can call another transaction. My problem is if I call another transaction, how can I know what was the previos program. So I need to pass the program name with call transaction somehow.
    I did'nt find the relevant information in syst.

    Hi
    Try like this
    call transaction         <t-code>
              using     (bdc table)
              mode     (display mode)
              update ( update mode)
              messages into message itab.
    The  bdc table must be declared like bdcdata
    The (display mode) determines how the transaction will be processed:    u2018Au2019 (display all), u2018Eu2019 (display errors only), or u2018Nu2019 (no display)
    The (update mode) :  u2018Su2019 (synchronous) or A (asynchronous).
    Regards
    ABG.

  • CALL transaction vs manual updation

    Dear all,
    I faced a very rear problem today so i want to share with you as well as want to find out the reason why it has happened....
    I am working in the transaction VL02N and when i go and delete the handling unit number manually through the transaction,the entry of the handling unit number is deleted from the table VEKP.but when i delete the handling unit number through the CALL TRANSACTION  using the program ,the entry from the table VEKP is not deleted.
    I had heard upto now that CALL TRANSACTIONS are only the movement from screens as we so manually through the transactions...So why this difference...Quite strange.....
    Does anybody know why this happed... and how could i bring the both in sync...
    Regards
    Kanishak

    you could process your call transaction in the light and see what happens.
    Since the coding behind is the absolute same, there shouldnt be a difference. Or you have some customer mdifications/enhancements which are programmed to act different between call transaction and manually using the TA.

  • Call Transaction - Synchronous vs Asynchronouus

    Hi ,
    I have a  text file which has 5 records containing LFA1-NAME1 & LFA1-LAND1 values.
    Records 1,2,4,5 have correct values  while Record 3 has wrong information.
    I have uploaded the data using Call Transaction Asynchronous mode using following statement:
    CALL TRANSACTION 'XK01' using BDCDATA mode 'N' update 'A' messages into
    BDCMSGCOLL.
    Since , its in Asynchronous mode after Records 1,2 are uploaded its skipping 3 rd record and Record 4,5 are uploaded. Its fine.
    Now I have uploaded the data using Call Transaction Synchronous mode using following statement:
    CALL TRANSACTION 'XK01' using BDCDATA mode 'N' update 'S' messages into
    BDCMSGCOLL.
    Surprisingly, here too after Records 1,2 are uploaded its skipping 3 rd record and Record 4,5 are uploaded.
    What I generally know is with Synchronous Update mode Records 1,2 should uploaded and since Record 3 is wrong, the updation process should stop.Records 4,5 should not get uploaded. But its not happening.
    Can I know what is the reason?
    If required, I can also post the code.
    Thanks,
    Shivaa...

    Hi Shiva,
    Synchronous & Asynchronous mode in Data transfer have nothing to do with error records.
    When Commit work occurs, Synchronous update retain the same dialog work process for updating database. While in Asynchronous mode, it search for update process for database update and program execution continue with the same dialog work process.
    In case of error record, the program will not reach to that level where it has to trigger the commit work (it triggers only when the record does not contain any error) and so all the records except 3rd will get uploaded.
    Regards,
    Ni3

Maybe you are looking for