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

Similar Messages

  • 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

  • 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

  • Problem in calling transaction on Portal through ITS

    Dear All,
    We are facing a problem in calling R/3 transaction through ITS on EP 6.0 , It is successfuly coming on the internet explorer 7.0 but on mozilla firefox, it is showing SAP GUI screen only. Plz suggest what we have to do. It is necessary to us to use this on Mozilla or other explorer like safari as our some user are using MAC OS.
    Ankit Gupta

    Ankit,
    You would have to verify your portal version and the browsers supported via the PAM.
    Access this link using the service marker place id and password.
    https://websmp202.sap-ag.de/pam
    http://service.sap.com/pam
    Cheers!
    Sandeep Tudumu

  • 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

  • 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 by BSP

    I am facing a problem regarding a BDC for pa30 transaction ,for updating infotype 24.
    It is written through BSP application . When i create it's session through portal and run it through SM35 in the system ,It is perfectly working in 'forground' and 'error display only' mode.But by 'Call Transaction ' through portal directly it is not working .
    Even the session in SM35 gives me error when i run it in 'Background' mode.
    and the error is "Control Framework: Fatal error - GUI cannot be reached,Runtime error RAISE_EXCEPTION has occurred"
    Can any one suggest any solution so that it will work in portal by 'Call Transaction'?

    Hi Sachin,
    please read the following blog by Brian:
    BSP In-Depth: MESSAGE Statement Handling
    /people/mark.finnern/blog/2003/09/16/bsp-in-depth-message-statement-handling
    Most important is the part:
    "However, for BSP applications, no SAP GUI is available. Some types of messages are considered not important, and are silently ignored. Other messages result in exactly the above output. Effectively, an HTTP request is processed in a dark DYNP, and after the MESSAGE statement, the processing is stopped, and the text is converted into a small HTML page."
    Regards,
    Rainer

  • 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

  • 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

  • Regarding call transaction and session method???

    HI All,
    Cud u pls let me know
    1. differences between call transaction and session???
    2. Is it possible to schedule call transaction in background?? ( all are saying MODE N = background scheduling  in call transaction.......but i dont think so)
    3. Is it posible to handle multiple transactions in call transaction ? if so,how?
    4. Is it posible to handle multiple transactions in session ? if so,how?
    5. How can we see the log in session method????

    Hi ,
    Check this documentation.
    About Session method
    In this method you transfer data from internal table to database table through sessions.
    In this method, an ABAP/4 program reads the external data that is to be entered in the SAP System and stores the data in session. A session stores the actions that are required to enter your data using normal SAP transaction i.e., Data is transferred to session which in turn transfers data to database table.
    Session is intermediate step between internal table and database table. Data along with its action is stored in session i.e., data for screen fields, to which screen it is passed, the program name behind it, and how the next screen is processed.
    When the program has finished generating the session, you can run the session to execute the SAP transactions in it. You can either explicitly start and monitor a session or have the session run in the background processing system.
    Unless session is processed, the data is not transferred to database table.
    BDC_OPEN_GROUP
    You create the session through program by BDC_OPEN_GROUP function.
    Parameters to this function are:
    • User Name: User name
    • Group: Name of the session
    • Lock Date: The date on which you want to process the session.
    • Keep: This parameter is passed as ‘X’ when you want to retain session after
    processing it or ‘ ‘ to delete it after processing.
    BDC_INSERT
    This function creates the session & data is transferred to Session.
    Parameters to this function are:
    • Tcode: Transaction Name
    • Dynprotab: BDC Data
    BDC_CLOSE_GROUP
    This function closes the BDC Group. No Parameters.
    Some additional information for session processing
    When the session is generated using the KEEP option within the BDC_OPEN_GROUP, the system always keeps the sessions in the queue, whether it has been processed successfully or not.
    However, if the session is processed, you have to delete it manually. When session processing is completed successfully while KEEP option was not set, it will be removed automatically from the session queue. Log is not removed for that session.
    If the batch-input session is terminated with errors, then it appears in the list of INCORRECT session and it can be processed again. To correct incorrect session, you can analyze the session. The Analysis function allows to determine which screen and value has produced the error. If you find small errors in data, you can correct them interactively, otherwise you need to modify batch input program, which has generated the session or many times even the data file.
    CALL TRANSACTION
    About CALL TRANSACTION
    A technique similar to SESSION method, while batch input is a two-step procedure, Call Transaction does both steps online, one after the other. In this method, you call a transaction from your program by
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>
    Messages into <MSGTAB>.
    Parameter – 1 is transaction code.
    Parameter – 2 is name of BDCTAB table.
    Parameter – 3 here you are specifying mode in which you execute transaction
    A is all screen mode. All the screen of transaction are displayed.
    N is no screen mode. No screen is displayed when you execute the transaction.
    E is error screen. Only those screens are displayed wherein you have error record.
    Parameter – 4 here you are specifying update type by which database table is updated.
    S is for Synchronous update in which if you change data of one table then all the related Tables gets updated. And sy-subrc is returned i.e., sy-subrc is returned for once and all.
    A is for Asynchronous update. When you change data of one table, the sy-subrc is returned. And then updating of other affected tables takes place. So if system fails to update other tables, still sy-subrc returned is 0 (i.e., when first table gets updated).
    Parameter – 5 when you update database table, operation is either successful or unsuccessful or operation is successful with some warning. These messages are stored in internal table, which you specify along with MESSAGE statement. This internal table should be declared like BDCMSGCOLL, a structure available in ABAP/4. It contains the following fields:
    1. Tcode: Transaction code
    2. Dyname: Batch point module name
    3. Dynumb: Batch input Dyn number
    4. Msgtyp: Batch input message type (A/E/W/I/S)
    5. Msgspra: Batch input Lang, id of message
    6. Msgid: Message id
    7. MsgvN: Message variables (N = 1 - 4)
    For each entry, which is updated in database, table message is available in BDCMSGCOLL. As BDCMSGCOLL is structure, you need to declare a internal table which can contain multiple records (unlike structure).
    Steps for CALL TRANSACTION method
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. UPLOAD or WS_UPLOAD function to upload the data from local file to itab. (Considering file is local file)
    4. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>.
    Refresh BDCTAB.
    Endloop.
    (To populate BDCTAB, You need to transfer each and every field)
    The major differences between Session method and Call transaction are as follows:
    SESSION METHOD CALL TRANSACTION
    1. Data is not updated in database table unless Session is processed. Immediate updation in database table.
    2. No sy-subrc is returned. Sy-subrc is returned.
    3. Error log is created for error records. Errors need to be handled explicitly
    4. Updation in database table is always synchronous Updation in database table can be synchronous Or Asynchronous.
    Error Handling in CALL TRANSACTION
    When Session Method updates the records in database table, error records are stored in the log file. In Call transaction there is no such log file available and error record is lost unless handled. Usually you need to give report of all the error records i.e., records which are not inserted or updated in the database table. This can be done by the following method:
    Steps for the error handling in CALL TRANSACTION
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. Internal table BDCMSG like BDCMSGCOLL
    4. Internal table similar to Ist internal table
    (Third and fourth steps are for error handling)
    5. UPLOAD or WS_UPLOAD function to upload the data from the local file to itab. (Considering file is local file)
    6. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tr.code> using <Bdctab>
    Mode <A/N/E>
    Update <S/A>
    Messages <BDCMSG>.
    Perform check.
    Refresh BDCTAB.
    Endloop.
    7 Form check.
    IF sy-subrc <> 0. (Call transaction returns the sy-subrc if updating is not successful).
    Call function Format_message.
    (This function is called to store the message given by system and to display it along with record)
    Append itab2.
    Display the record and message.
    Check this program for session method using multiple transactions.
    Have one BDC_OPEN_GROUP, multiple BDC_INSERT s and one BDC_CLOSE_GROUP.
    You should have multiple BDC_INSERT s for multiple transactions.
    call function BDC_OPENGROUP.
    Build BDC data and cal lBDC_INSERT for transaction 1
    Build BDC data and cal lBDC_INSERT for transaction 2
    Build BDC data and cal lBDC_INSERT for transaction 3
    call function BDC_CLOSE_GROUP.
    Check out this sample program
    REPORT  ztest_report
    NO STANDARD PAGE HEADING
                            LINE-SIZE 255
                            MESSAGE-ID ZRASH.
                    Internal Table Declarations                          *
    *--Internal Table for Data Uploading.
    DATA : BEGIN OF IT_FFCUST OCCURS 0,
             KUNNR(10),
             BUKRS(4),
             KTOKD(4),
             ANRED(15),
             NAME1(35),
             SORTL(10),
             STRAS(35),
             ORT01(35),
             PSTLZ(10),
             LAND1(3),
             SPRAS(2),
             AKONT(10),
           END OF IT_FFCUST.
    *--Internal Table to Store Error Records.
    DATA : BEGIN OF IT_ERRCUST OCCURS 0,
             KUNNR(10),
             EMSG(255),
           END OF IT_ERRCUST.
    *--Internal Table to Store Successful Records.
    DATA : BEGIN OF IT_SUCCUST OCCURS 0,
             KUNNR(10),
             SMSG(255),
           END OF IT_SUCCUST.
    *--Internal Table for Storing the BDC data.
    DATA : IT_CUSTBDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    *--Internal Table for storing the messages.
    DATA : IT_CUSTMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA : V_FLAG1(1) VALUE ' ',
    "Flag used for opening session.
           V_TLINES LIKE SY-TABIX,
           "For storing total records processed.
           V_ELINES LIKE SY-TABIX,
           "For storing the no of error records.
           V_SLINES LIKE SY-TABIX.
           "For storing the no of success records.
             Selection screen                                            *
    SELECTION-SCREEN BEGIN OF BLOCK B1.
    PARAMETERS : V_FNAME LIKE RLGRAP-FILENAME,
                 V_SESNAM  LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN END OF BLOCK B1.
             Start-of-selection                                          *
    START-OF-SELECTION.
    *-- Form to upload flatfile data into the internal table.
      PERFORM FORM_UPLOADFF.
           TOP-OF-PAGE                                                   *
    TOP-OF-PAGE.
      WRITE:/ 'Details of the error and success records for the transaction'
      ULINE.
      SKIP.
             End of Selection                                            *
    END-OF-SELECTION.
    *-- Form to Generate a BDC from the Uploaded Internal table
      PERFORM FORM_BDCGENERATE.
    *--To write the totals and the session name.
      PERFORM FORM_WRITEOP.
    *&      Form  form_uploadff
        Form to upload flatfile data into the internal table.
    FORM FORM_UPLOADFF .
    *--Variable to change the type of the parameter file name.
      DATA : LV_FILE TYPE STRING.
      LV_FILE = V_FNAME.
    *--Function to upload the flat file to the internal table.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          FILENAME                      =  LV_FILE
        FILETYPE                      = 'ASC'
          HAS_FIELD_SEPARATOR           = 'X'
        HEADER_LENGTH                 = 0
        READ_BY_LINE                  = 'X'
        DAT_MODE                      = ' '
      IMPORTING
        FILELENGTH                    =
        HEADER                        =
        TABLES
          DATA_TAB                      = IT_FFCUST
        EXCEPTIONS
          FILE_OPEN_ERROR               = 1
          FILE_READ_ERROR               = 2
          NO_BATCH                      = 3
          GUI_REFUSE_FILETRANSFER       = 4
          INVALID_TYPE                  = 5
          NO_AUTHORITY                  = 6
          UNKNOWN_ERROR                 = 7
          BAD_DATA_FORMAT               = 8
          HEADER_NOT_ALLOWED            = 9
          SEPARATOR_NOT_ALLOWED         = 10
          HEADER_TOO_LONG               = 11
          UNKNOWN_DP_ERROR              = 12
          ACCESS_DENIED                 = 13
          DP_OUT_OF_MEMORY              = 14
          DISK_FULL                     = 15
          DP_TIMEOUT                    = 16
          OTHERS                        = 17
      IF SY-SUBRC = 0.
    *--Deleting the headings from the internal table.
        DELETE IT_FFCUST INDEX 1.
    *--Getting the total number of records uploaded.
        DESCRIBE TABLE IT_FFCUST LINES V_TLINES.
      ENDIF.
    ENDFORM.                    " form_uploadff
    *&      Form  Form_bdcgenerate
        Form to Generate a BDC from the Uploaded Internal table
    FORM FORM_BDCGENERATE .
    *--Generating the BDC table for the fields of the internal table.
      LOOP AT IT_FFCUST.
        PERFORM POPULATEBDC USING :
                                    'X' 'SAPMF02D' '0105',
                                    ' ' 'BDC_OKCODE'  '/00' ,
                                    ' ' 'RF02D-KUNNR' IT_FFCUST-KUNNR,
                                    ' ' 'RF02D-BUKRS' IT_FFCUST-BUKRS,
                                    ' ' 'RF02D-KTOKD' IT_FFCUST-KTOKD,
                                    'X' 'SAPMF02D' '0110' ,
                                    ' ' 'BDC_OKCODE'  '/00',
                                    ' ' 'KNA1-ANRED'  IT_FFCUST-ANRED,
                                    ' ' 'KNA1-NAME1' IT_FFCUST-NAME1,
                                    ' ' 'KNA1-SORTL'  IT_FFCUST-SORTL,
                                    ' ' 'KNA1-STRAS' IT_FFCUST-STRAS,
                                    ' ' 'KNA1-ORT01' IT_FFCUST-ORT01,
                                    ' ' 'KNA1-PSTLZ' IT_FFCUST-PSTLZ,
                                    ' ' 'KNA1-LAND1' IT_FFCUST-LAND1,
                                    ' ' 'KNA1-SPRAS' IT_FFCUST-SPRAS,
                                    'X' 'SAPMFO2D' '0120',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0125',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0130',     
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0340',     
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0360',
                                    ' ' 'BDC_OKCODE'  '=ENTR',
                                    'X' 'SAPMF02D' '0210',     
                                    ' ' 'KNB1-AKONT'  IT_FFCUST-AKONT,
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0215',
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0220',     
                                    ' ' 'BDC_OKCODE'  '/00',
                                    'X' 'SAPMF02D' '0230',     
                                    ' ' 'BDC_OKCODE'  '=UPDA'.
    *--Calling the transaction 'fd01'.
        CALL TRANSACTION 'FD01' USING IT_CUSTBDC MODE 'N' UPDATE 'S'
        MESSAGES INTO IT_CUSTMSG.
        IF SY-SUBRC <> 0.
    *--Populating the error records internal table.
          IT_ERRCUST-KUNNR = IT_FFCUST-KUNNR.
          APPEND IT_ERRCUST.
          CLEAR IT_ERRCUST.
    *--Opening a session if there is an error record.
          IF V_FLAG1 = ' '.
            PERFORM FORM_OPENSESSION.
            V_FLAG1 = 'X'.
          ENDIF.
    *--Inserting the error records into already open session.
          IF V_FLAG1 = 'X'.
            PERFORM FORM_INSERT.
          ENDIF.
    *--Populating the Success records internal table.
        ELSE.
          IT_SUCCUST-KUNNR = IT_FFCUST-KUNNR.
          APPEND IT_SUCCUST.
          CLEAR IT_SUCCUST.
        ENDIF.
    *--Displaying the messages.
        IF NOT IT_CUSTMSG[] IS INITIAL.
          PERFORM FORM_FORMATMSG.
        ENDIF.
    *--Clearing the message and bdc tables.
        CLEAR : IT_CUSTBDC[],IT_CUSTMSG[].
      ENDLOOP.
    *--Getting the total no of error records.
      DESCRIBE TABLE IT_ERRCUST LINES V_ELINES.
    *--Getting the total no of successful records.
      DESCRIBE TABLE IT_SUCCUST LINES V_SLINES.
    *--Closing the session only if it is open.
      IF V_FLAG1 = 'X'.
        PERFORM FORM_CLOSESESS.
      ENDIF.
    ENDFORM.                    " Form_bdcgenerate
    *&      Form  populatebdc
          FOrm to Populate the BDC table.
    FORM POPULATEBDC  USING    VALUE(P_0178)
                               VALUE(P_0179)
                               VALUE(P_0180).
      IF P_0178 = 'X'.
        IT_CUSTBDC-PROGRAM = P_0179.
        IT_CUSTBDC-DYNPRO = P_0180.
        IT_CUSTBDC-DYNBEGIN = 'X'.
      ELSE.
        IT_CUSTBDC-FNAM = P_0179.
        IT_CUSTBDC-FVAL = P_0180.
      ENDIF.
      APPEND IT_CUSTBDC.
      CLEAR IT_CUSTBDC.
    ENDFORM.                    " populatebdc
    *&      Form  FORM_OPENSESSION
          Form to Open a session.
    FORM FORM_OPENSESSION .
    *--Variable to convert the given session name into reqd type.
      DATA : LV_SESNAM(12).
      LV_SESNAM = V_SESNAM.
    *--Opening a session.
      CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING
         CLIENT                    = SY-MANDT
         GROUP                     = LV_SESNAM
         HOLDDATE                  = '20040805'
         KEEP                      = 'X'
         USER                      = SY-UNAME
         PROG                      = SY-CPROG
    IMPORTING
       QID                       =
       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.
        WRITE :/ 'Session not open'.
      ENDIF.
    ENDFORM.                    " FORM_OPENSESSION
    *&      Form  FORM_INSERT
          fORM TO INSERT ERROR RECOED INTO A SESSION.
    FORM FORM_INSERT .
    *--Inserting the record into session.
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          TCODE                  = 'FD01'
        POST_LOCAL             = NOVBLOCAL
        PRINTING               = NOPRINT
        SIMUBATCH              = ' '
        CTUPARAMS              = ' '
        TABLES
          DYNPROTAB              = IT_CUSTBDC
        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.
        WRITE :/ 'Unable to insert the record'.
      ENDIF.
    ENDFORM.                    " FORM_INSERT
    *&      Form  FORM_CLOSESESS
          Form to Close the Open Session.
    FORM FORM_CLOSESESS .
      CALL FUNCTION 'BDC_CLOSE_GROUP'
        EXCEPTIONS
          NOT_OPEN    = 1
          QUEUE_ERROR = 2
          OTHERS      = 3.
      IF SY-SUBRC <> 0.
      ENDIF.
    ENDFORM.                    " FORM_CLOSESESS
    *&      Form  FORM_FORMATMSG
          Form to format messages.
    FORM FORM_FORMATMSG .
    *--Var to store the formatted msg.
      DATA : LV_MSG(255).
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          ID        = SY-MSGID
          LANG      = SY-LANGU
          NO        = SY-MSGNO
          V1        = SY-MSGV1
          V2        = SY-MSGV2
          V3        = SY-MSGV3
          V4        = SY-MSGV4
        IMPORTING
          MSG       = LV_MSG
        EXCEPTIONS
          NOT_FOUND = 1
          OTHERS    = 2.
      IF SY-SUBRC = 0.
        WRITE :/ LV_MSG.
      ENDIF.
      ULINE.
    ENDFORM.                    " FORM_FORMATMSG
    *&      Form  form_writeop
          To write the totals and the session name.
    FORM FORM_WRITEOP .
      WRITE :/ 'Total Records Uploaded :',V_TLINES,
               / 'No of Error Records :',V_ELINES,
               / 'No of Success Records :',V_SLINES,
               / 'Name of the Session :',V_SESNAM.
      ULINE.
    ENDFORM.                    " form_writeop
    Hope this resolves your query.
    Reward all the helpful answers.
    Regards

  • Plz tell me BDC  CALL TRANSACTION steps with simple example

    hi,
    plz tell me the steps
    BDC  CALL TRANSACTION steps with simple example

    Hi,
    BATCH DATA COMMUNICATION
    About Data Transfer In R/3 System
    When a company decides to implement the SAP R/3 to manage business-critical data, it usually does not start from a no-data situation. Normally, a SAP R/3 project comes into replace or complement existing application.
    In the process of replacing current applications and transferring application data, two situations might occur:
    ? The first is when application data to be replaced is transferred at once, and only once.
    ? The second situation is to transfer data periodically from external systems to SAP and vice versa.
    ? There is a period of time when information has to be transferred from existing application, to SAP R/3, and often this process will be repetitive.
    The SAP system offers two primary methods for transferring data into SAP systems. From non-SAP systems or legacy system. These two methods are collectively called ?batch input? or ?batch data communication?.
    1. SESSION METHOD
    2. CALL TRANSACTION
    3. DIRECT INPUT
    Advantages offered by BATCH INPUT method:
    1. Can process large data volumes in batch.
    2. Can be planned and submitted in the background.
    3. No manual interaction is required when data is transferred.
    4. Data integrity is maintained as whatever data is transferred to the table is through transaction. Hence batch input data is submitted to all the checks and validations.
    To implement one of the supported data transfers, you must often write the program that exports the data from your non-SAP system. This program, known as a ?data transfer? program must map the data from the external system into the data structure required by the SAP batch input program.
    The batch input program must build all of the input to execute the SAP transaction.
    Two main steps are required:
    ? To build an internal table containing every screen and every field to be filled in during the execution of an SAP transaction.
    ? To pass the table to SAP for processing.
    Prerequisite for Data Transfer Program
    Writing a Data Transfer Program involves following prerequisites:
    Analyzing data from local file
    Analyzing transaction
    Analyzing transaction involves following steps:
    ? The transaction code, if you do not already know it.
    ? Which fields require input i.e., mandatory.
    ? Which fields can you allow to default to standard values.
    ? The names, types, and lengths of the fields that are used by a transaction.
    ? Screen number and Name of module pool program behind a particular transaction.
    To analyze a transaction::
    ? Start the transaction by menu or by entering the transaction code in the command box.
    (You can determine the transaction name by choosing System ? Status.)
    ? Step through the transaction, entering the data will be required for processing your batch input data.
    ? On each screen, note the program name and screen (dynpro) number.
    (dynpro = dyn + pro. Dyn = screen, pro = number)
    ? Display these by choosing System ? Status. The relevant fields are Program (dynpro) and Dynpro number. If pop-up windows occur during execution, you can get the program name and screen number by pressing F1 on any field or button on the screen.
    The technical info pop-up shows not only the field information but also the program and screen.
    ? For each field, check box, and radio button on each screen, press F1 (help) and then choose Technical Info.
    Note the following information:
    - The field name for batch input, which you?ll find in its own box.
    - The length and data type of the field. You can display this information by double clicking on the Data Element field.
    ? Find out the identification code for each function (button or menu) that you must execute to process the batch-input data (or to go to new screen).
    Place the cursor on the button or menu entry while holding down the left mouse button. Then press F1.
    In the pop-up window that follows, choose Technical info and note the code that is shown in the Function field.
    You can also run any function that is assigned to a function key by way of the function key number. To display the list of available function keys, click on the right mouse button. Note the key number that is assigned to the functions you want to run.
    Once you have program name, screen number, field name (screen field name), you can start writing.
    DATA TRANSFER program.
    Declaring internal table
    First Integral Table similar to structure like local file.
    Declaring internal table like BDCDATA
    The data from internal table is not transferred directly to database table, it has to go through transaction. You need to pass data to particular screen and to particular screen-field. Data is passed to transaction in particular format, hence there is a need for batch input structure.
    The batch input structure stores the data that is to be entered into SAP system and the actions that are necessary to process the data. The batch input structure is used by all of the batch input methods. You can use the same structure for all types of batch input, regardless of whether you are creating a session in the batch input queue or using CALL TRANSACTION.
    This structure is BDCDATA, which can contain the batch input data for only a single run of a transaction. The typical processing loop in a program is as follows:
    ? Create a BDCDATA structure
    ? Write the structure out to a session or process it with CALL TRANSACTION USING; and then
    ? Create a BDCDATA structure for the next transaction that is to be processed.
    Within a BDCDATA structure, organize the data of screens in a transaction. Each screen that is processed in the course of a transaction must be identified with a BDCDATA record. This record uses the Program, Dynpro, and Dynbegin fields of the structure.
    The screen identifier record is followed by a separate BDCDATA record for each value, to be entered into a field. These records use the FNAM and FVAL fields of the BDCDATA structure. Values to be entered in a field can be any of the following:
    ? Data that is entered into screen fields.
    ? Function codes that are entered into the command field. Such function codes execute functions in a transaction, such as Save or Enter.
    The BDCDATA structure contains the following fields:
    ? PROGRAM: Name of module pool program associated with the screen. Set this field only for the first record for the screen.
    ? DYNPRO: Screen Number. Set this field only in the first record for the screen.
    ? DYNBEGIN: Indicates the first record for the screen. Set this field to X, only for the first record for the screen. (Reset to ? ? (blank) for all other records.)
    ? FNAM: Field Name. The FNAM field is not case-sensitive.
    ? FVAL: Value for the field named in FNAM. The FVAL field is case-sensitive. Values assigned to this field are always padded on the right, if they are less than 132 characters. Values must be in character format.
    Transferring data from local file to internal table
    Data is uploaded to internal table by UPLOAD of WS_UPLOAD function.
    Population of BDCDATA
    For each record of internal table, you need to populate Internal table, which is similar to BDCDATA structure.
    All these five initial steps are necessary for any type of BDC interface.
    DATA TRANSFER program can call SESSION METHOD or CALL TRANSACTION. The initial steps for both the methods are same.
    First step for both the methods is to upload the data to internal table. From Internal Table, the data is transferred to database table by two ways i.e., Session method and Call transaction.
    SESSION METHOD
    About Session method
    In this method you transfer data from internal table to database table through sessions.
    In this method, an ABAP/4 program reads the external data that is to be entered in the SAP System and stores the data in session. A session stores the actions that are required to enter your data using normal SAP transaction i.e., Data is transferred to session which in turn transfers data to database table.
    Session is intermediate step between internal table and database table. Data along with its action is stored in session i.e., data for screen fields, to which screen it is passed, the program name behind it, and how the next screen is processed.
    When the program has finished generating the session, you can run the session to execute the SAP transactions in it. You can either explicitly start and monitor a session or have the session run in the background processing system.
    Unless session is processed, the data is not transferred to database table.
    BDC_OPEN_GROUP
    You create the session through program by BDC_OPEN_GROUP function.
    Parameters to this function are:
    ? User Name: User name
    ? Group: Name of the session
    ? Lock Date: The date on which you want to process the session.
    ? Keep: This parameter is passed as ?X? when you want to retain session after
    processing it or ? ? to delete it after processing.
    BDC_INSERT
    This function creates the session & data is transferred to Session.
    Parameters to this function are:
    ? Tcode: Transaction Name
    ? Dynprotab: BDC Data
    BDC_CLOSE_GROUP
    This function closes the BDC Group. No Parameters.
    Some additional information for session processing
    When the session is generated using the KEEP option within the BDC_OPEN_GROUP, the system always keeps the sessions in the queue, whether it has been processed successfully or not.
    However, if the session is processed, you have to delete it manually. When session processing is completed successfully while KEEP option was not set, it will be removed automatically from the session queue. Log is not removed for that session.
    If the batch-input session is terminated with errors, then it appears in the list of INCORRECT session and it can be processed again. To correct incorrect session, you can analyze the session. The Analysis function allows to determine which screen and value has produced the error. If you find small errors in data, you can correct them interactively, otherwise you need to modify batch input program, which has generated the session or many times even the data file.
    CALL TRANSACTION
    About CALL TRANSACTION
    A technique similar to SESSION method, while batch input is a two-step procedure, Call Transaction does both steps online, one after the other. In this method, you call a transaction from your program by
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>
    Messages into <MSGTAB>.
    Parameter ? 1 is transaction code.
    Parameter ? 2 is name of BDCTAB table.
    Parameter ? 3 here you are specifying mode in which you execute transaction
    A is all screen mode. All the screen of transaction are displayed.
    N is no screen mode. No screen is displayed when you execute the transaction.
    E is error screen. Only those screens are displayed wherein you have error record.
    Parameter ? 4 here you are specifying update type by which database table is updated.
    S is for Synchronous update in which if you change data of one table then all the related Tables gets updated. And sy-subrc is returned i.e., sy-subrc is returned for once and all.
    A is for Asynchronous update. When you change data of one table, the sy-subrc is returned. And then updating of other affected tables takes place. So if system fails to update other tables, still sy-subrc returned is 0 (i.e., when first table gets updated).
    Parameter ? 5 when you update database table, operation is either successful or unsuccessful or operation is successful with some warning. These messages are stored in internal table, which you specify along with MESSAGE statement. This internal table should be declared like BDCMSGCOLL, a structure available in ABAP/4. It contains the following fields:
    1. Tcode: Transaction code
    2. Dyname: Batch point module name
    3. Dynumb: Batch input Dyn number
    4. Msgtyp: Batch input message type (A/E/W/I/S)
    5. Msgspra: Batch input Lang, id of message
    6. Msgid: Message id
    7. MsgvN: Message variables (N = 1 - 4)
    For each entry, which is updated in database, table message is available in BDCMSGCOLL. As BDCMSGCOLL is structure, you need to declare a internal table which can contain multiple records (unlike structure).
    Steps for CALL TRANSACTION method
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. UPLOAD or WS_UPLOAD function to upload the data from local file to itab. (Considering file is local file)
    4. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>.
    Refresh BDCTAB.
    Endloop.
    (To populate BDCTAB, You need to transfer each and every field)
    The major differences between Session method and Call transaction are as follows:
    SESSION METHOD CALL TRANSACTION
    1. Data is not updated in database table unless Session is processed. Immediate updation in database table.
    2. No sy-subrc is returned. Sy-subrc is returned.
    3. Error log is created for error records. Errors need to be handled explicitly
    4. Updation in database table is always synchronous Updation in database table can be synchronous Or Asynchronous.
    Error Handling in CALL TRANSACTION
    When Session Method updates the records in database table, error records are stored in the log file. In Call transaction there is no such log file available and error record is lost unless handled. Usually you need to give report of all the error records i.e., records which are not inserted or updated in the database table. This can be done by the following method:
    Steps for the error handling in CALL TRANSACTION
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. Internal table BDCMSG like BDCMSGCOLL
    4. Internal table similar to Ist internal table
    (Third and fourth steps are for error handling)
    5. UPLOAD or WS_UPLOAD function to upload the data from the local file to itab. (Considering file is local file)
    6. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tr.code> using <Bdctab>
    Mode <A/N/E>
    Update <S/A>
    Messages <BDCMSG>.
    Perform check.
    Refresh BDCTAB.
    Endloop.
    7 Form check.
    IF sy-subrc <> 0. (Call transaction returns the sy-subrc if updating is not successful).
    Call function Format_message.
    (This function is called to store the message given by system and to display it along with record)
    Append itab2.
    Display the record and message.
    DIRECT INPUT
    Thanks &regards,
    Sravani

Maybe you are looking for

  • How can I sync my G2 iPod touch with iCloud Contacts

    I have a second generation iPod touch OS 4.2.1. My iMac runs OS X 10.7.3 and I have an iPad 3rd generation. My Address Book Contacts and iCal Calendars are in iCloud. I have no On My Mac contacts or calendars. I can sync my iCloud calendars with the

  • Why do I only have v3.0.4 (104.7) of GarageBand if I just bought a new Mac?

    Am I dense, or did I miss something? In December of last year, I bought a new 27" iMac 3.06 GHz Intel Core 2 Duo w/4GB RAM, and it came with what I thought was the newest version of iLife. Obviously, it didn't, as my version of Garageband is v3.0.4 (

  • Problem trying to read an SSL server socket stream using readByte().

    Hi I'm trying to read an SSL server socket stream using readByte(). I need to use readByte() because my program acts an LDAP proxy (receives LDAP messages from an LDAP client then passes them onto an actual LDAP server. It works fine with normal LDAP

  • Oil Paint Filter "unknown graphics processor error"

    When I try to use the Oil Paint filter in Photoshop, I get this error message: "The filter you were using encountered an unknown graphics processor error that caused an unexpected exit. Check the manufacturer's website for the latest software." I hav

  • Streaming video from network source

    Looking to access a third party network resource eventually.  But the other team building that has not completed it yet so I don't know what it will look like.  So in the mean time I was going to try setting up a stream from a LabVIEW web service and