<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: regarding bdc in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-bdc/m-p/2078628#M431047</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, this is call transaction method.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zrecord02&lt;/P&gt;&lt;P&gt;       NO STANDARD PAGE HEADING LINE-SIZE 255.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: gc_x         TYPE c VALUE 'X',                                    "constants for true value&lt;/P&gt;&lt;P&gt;           gc_dynbegin  TYPE c VALUE  'X',                                   "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_mode      TYPE c VALUE 'A',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_mode1     TYPE c VALUE 'N',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_sucess    TYPE c VALUE 'S',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_flag      TYPE c VALUE 'X',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_read      TYPE dxfields-fileoper VALUE 'R',                    "Constants used in form file selection.&lt;/P&gt;&lt;P&gt;           gc_applic    TYPE dxfields-location VALUE 'A',                    "application server location&lt;/P&gt;&lt;P&gt;           gc_presen    TYPE dxfields-location VALUE 'P',                    "Presentation server location&lt;/P&gt;&lt;P&gt;           gc_root(01)  TYPE c VALUE '/'.                                    "constant used in file selection&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gv_datab    TYPE char12,                 "Varible to hold the data&lt;/P&gt;&lt;P&gt;      gv_date     TYPE char2,                  "Variable to hold the date&lt;/P&gt;&lt;P&gt;      gv_mon      TYPE char2,                  "Variable to hold the month&lt;/P&gt;&lt;P&gt;      gv_year     TYPE char4,                  "Variable to hold the year&lt;/P&gt;&lt;P&gt;      gv_no_succs TYPE i,                      "Variable to hold the number of correct records&lt;/P&gt;&lt;P&gt;      gv_no_error TYPE i,                      "Variable to hold the number of error records&lt;/P&gt;&lt;P&gt;      gv_msg      TYPE char100,                "Variable to hold the message&lt;/P&gt;&lt;P&gt;      gv_id       TYPE i.                      "Variable to hold the tabix value&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-t01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS: p_upl_ps RADIOBUTTON GROUP g DEFAULT 'X',      "radiobutton for presentation server&lt;/P&gt;&lt;P&gt;            p_upl_as RADIOBUTTON GROUP g,                  "radiobutton for application server&lt;/P&gt;&lt;P&gt;            p_file   TYPE rlgrap-filename,                 "file name&lt;/P&gt;&lt;P&gt;            p_test   AS CHECKBOX.                          "for testmode&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK b.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_itab ,                         " structure containing the fields of flat file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      land1 TYPE v_t604-land1,                    "Land value from ex&lt;/P&gt;&lt;P&gt;      stawn TYPE v_t604-stawn,&lt;/P&gt;&lt;P&gt;      text1 TYPE v_t604-text1,&lt;/P&gt;&lt;P&gt;      bemeh TYPE v_t604-bemeh,&lt;/P&gt;&lt;P&gt;      impma TYPE v_t604-impma,&lt;/P&gt;&lt;P&gt;      minol TYPE v_t604-minol,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      END OF gs_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_itab       TYPE TABLE OF gs_itab ,              "internal table for the structure gs_itab&lt;/P&gt;&lt;P&gt;      gi_valid_itab TYPE TABLE OF gs_itab,               "internal table for the structure gs_itab with valid fields alone.&lt;/P&gt;&lt;P&gt;      gi_dup_itab   TYPE TABLE OF gs_itab,               "internal table for the structure gs_itab to capture the duplicate values&lt;/P&gt;&lt;P&gt;      gw_itab       TYPE gs_itab,                        " work area of gs_itab&lt;/P&gt;&lt;P&gt;      gw_validitab  TYPE gs_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_e_itab,                           " structure containing the error fields of flat file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      land1   TYPE v_t604-land1,&lt;/P&gt;&lt;P&gt;      stawn   TYPE v_t604-stawn,&lt;/P&gt;&lt;P&gt;      text1   TYPE v_t604-text1,&lt;/P&gt;&lt;P&gt;      bemeh   TYPE v_t604-bemeh,&lt;/P&gt;&lt;P&gt;      impma   TYPE v_t604-impma,&lt;/P&gt;&lt;P&gt;      minol   TYPE v_t604-minol,&lt;/P&gt;&lt;P&gt;      err(30) TYPE c,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      END OF gs_e_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_err_itab TYPE TABLE OF gs_e_itab,          " internal table for the structure gs_e_itab.&lt;/P&gt;&lt;P&gt;      gw_err_itab TYPE gs_e_itab.                   "work area for the structure gs_itab&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_land_stawn,                     "structure containing land and import codes of flat file.&lt;/P&gt;&lt;P&gt;       land1 TYPE t005-land1,&lt;/P&gt;&lt;P&gt;       stawn TYPE t604-stawn,&lt;/P&gt;&lt;P&gt;       END OF gs_land_stawn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_land_stawn     TYPE TABLE OF gs_land_stawn,     " internal table containing valid land and import codes of flat file&lt;/P&gt;&lt;P&gt;      gi_err_land_stawn TYPE TABLE OF gs_land_stawn,     " internal table containing error land and import codes of flat file&lt;/P&gt;&lt;P&gt;      gw_land_stawn     TYPE gs_land_stawn.              " work area for the above internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_land,                                 "structure containing land field alone&lt;/P&gt;&lt;P&gt;       land1 TYPE t005-land1,&lt;/P&gt;&lt;P&gt;       END OF gs_land.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_land   TYPE TABLE OF gs_land,                   " internal table for the structure gs_land&lt;/P&gt;&lt;P&gt;      gi_c_land TYPE TABLE OF gs_land, " gi_b_land,      " internal table for the structure gs_land with only valid land fields&lt;/P&gt;&lt;P&gt;      gw_land   TYPE gs_land.                            "work area for gs_land&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF gs_temp,                                  "structure containing the fields of legacy file.&lt;/P&gt;&lt;P&gt;      line(1000) TYPE c,&lt;/P&gt;&lt;P&gt;      END OF gs_temp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_temp LIKE TABLE OF gs_temp,                     "internal table for the structure gs_temp,&lt;/P&gt;&lt;P&gt;      gw_temp LIKE gs_temp.                              "work area for gs_temp&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_bdcdata TYPE TABLE OF bdcdata,                 "internal table for bdcdata&lt;/P&gt;&lt;P&gt;      gi_msg     TYPE TABLE OF bdcmsgcoll.                  "internal table for bdcmsgcoll&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gw_bdcdata TYPE bdcdata,                          "workarea for bdcdata&lt;/P&gt;&lt;P&gt;      gw_msg     TYPE bdcmsgcoll.                           "workarea for bdcmsgcoll&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     AT SELECTION-SCREEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.&lt;/P&gt;&lt;P&gt;  PERFORM file_selection.              "Selecting the file from the server&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TOP-OF-PAGE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;  PERFORM gf_header.                  "Calling the header Section&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      END-OF-PAGE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-PAGE.&lt;/P&gt;&lt;P&gt;  EXIT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      START-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  PERFORM upload.                   "Uploading the file to internal table&lt;/P&gt;&lt;P&gt;  PERFORM get_data.                 "Splitting the pipe delimited data&lt;/P&gt;&lt;P&gt;  IF p_test = gc_x.                 "In test mode&lt;/P&gt;&lt;P&gt;    PERFORM validations.&lt;/P&gt;&lt;P&gt;    PERFORM remove_duplicate.&lt;/P&gt;&lt;P&gt;    PERFORM display.&lt;/P&gt;&lt;P&gt;  ELSE.                             "not in test mode&lt;/P&gt;&lt;P&gt;    PERFORM validations.&lt;/P&gt;&lt;P&gt;    PERFORM remove_duplicate.&lt;/P&gt;&lt;P&gt;    PERFORM bdc.&lt;/P&gt;&lt;P&gt;    PERFORM display.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  PERFORM no_of_records.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      END-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  EXIT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  file_selection.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM file_selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS: lc_slash(2) TYPE c VALUE '//'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA :  lv_file_path TYPE dxfields-longpath,&lt;/P&gt;&lt;P&gt;          lv_location  TYPE dxfields-location,&lt;/P&gt;&lt;P&gt;          lv_server    TYPE msxxlist-name,&lt;/P&gt;&lt;P&gt;          ls_rfcsi    TYPE rfcsi.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR:lv_server,lv_location, lv_file_path.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE gc_read TO lv_file_path.&lt;/P&gt;&lt;P&gt;  IF lv_file_path IS INITIAL.&lt;/P&gt;&lt;P&gt;    lv_file_path = gc_root.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_upl_ps IS INITIAL.&lt;/P&gt;&lt;P&gt;    lv_location = gc_presen.                                 "if presentation server is selected&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    lv_location = gc_applic.                                 "if application server is selected&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RFC_SYSTEM_INFO'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      rfcsi_export = ls_rfcsi.&lt;/P&gt;&lt;P&gt;  lv_server    = ls_rfcsi-rfcdest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     i_location_flag       = lv_location&lt;/P&gt;&lt;P&gt;     i_server              = lv_server&lt;/P&gt;&lt;P&gt;     i_path                = lv_file_path&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   FILEMASK              = '&lt;STRONG&gt;.&lt;/STRONG&gt;'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     fileoperation         = p_upl_ps&lt;/P&gt;&lt;P&gt;   IMPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   O_LOCATION_FLAG       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   O_SERVER              =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     o_path                = lv_file_path&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ABEND_FLAG            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;P&gt;     rfc_error             = 1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ERROR_WITH_GUI        = 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     OTHERS                = 2&lt;/P&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lv_file_path TO p_file.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF p_file(2) EQ lc_slash.&lt;/P&gt;&lt;P&gt;    SHIFT p_file LEFT.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " FILE_SELECTION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  upload&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM upload.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_file TYPE string.&lt;/P&gt;&lt;P&gt;  lv_file = p_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_upl_ps IS INITIAL.                      "if presentation server is selected&lt;/P&gt;&lt;P&gt;    CLEAR gi_itab.&lt;/P&gt;&lt;P&gt;    REFRESH gi_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        filename                      = lv_file&lt;/P&gt;&lt;P&gt;        filetype                      = 'ASC'&lt;/P&gt;&lt;P&gt;        has_field_separator           = ''&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       dat_mode                      = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  VIRUS_SCAN_PROFILE            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_AUTH_CHECK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        data_tab                      = gi_temp&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       file_open_error               = 1&lt;/P&gt;&lt;P&gt;       file_read_error               = 2&lt;/P&gt;&lt;P&gt;       no_batch                      = 3&lt;/P&gt;&lt;P&gt;       gui_refuse_filetransfer       = 4&lt;/P&gt;&lt;P&gt;       invalid_type                  = 5&lt;/P&gt;&lt;P&gt;       no_authority                  = 6&lt;/P&gt;&lt;P&gt;       unknown_error                 = 7&lt;/P&gt;&lt;P&gt;       bad_data_format               = 8&lt;/P&gt;&lt;P&gt;       header_not_allowed            = 9&lt;/P&gt;&lt;P&gt;       separator_not_allowed         = 10&lt;/P&gt;&lt;P&gt;       header_too_long               = 11&lt;/P&gt;&lt;P&gt;       unknown_dp_error              = 12&lt;/P&gt;&lt;P&gt;       access_denied                 = 13&lt;/P&gt;&lt;P&gt;       dp_out_of_memory              = 14&lt;/P&gt;&lt;P&gt;       disk_full                     = 15&lt;/P&gt;&lt;P&gt;       dp_timeout                    = 16&lt;/P&gt;&lt;P&gt;       OTHERS                        = 17&lt;/P&gt;&lt;P&gt;              .&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.                                                             "If application server is selected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    OPEN DATASET p_file FOR INPUT IN TEXT MODE ENCODING DEFAULT      "If the data is available on the UNIX/Appl. server get the data&lt;/P&gt;&lt;P&gt;                               WITH SMART LINEFEED.&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    DO.&lt;/P&gt;&lt;P&gt;      READ DATASET  p_file INTO gw_temp-line.                                 "read file which is opened.&lt;/P&gt;&lt;P&gt;      APPEND gw_temp TO gi_temp.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLOSE DATASET p_file.                                                     "close the file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "upload&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_data.&lt;/P&gt;&lt;P&gt;  DATA:lv_id TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;  gv_id = 0.&lt;/P&gt;&lt;P&gt;  IF gi_temp[] IS INITIAL.                   "If the uploaded internal table is empty.&lt;/P&gt;&lt;P&gt;    WRITE: /5 text-001.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LOOP AT gi_temp INTO gw_temp.&lt;/P&gt;&lt;P&gt;      lv_id = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SPLIT gw_temp-line&lt;/P&gt;&lt;P&gt;        AT '|'&lt;/P&gt;&lt;P&gt;        INTO gw_itab-land1&lt;/P&gt;&lt;P&gt;             gw_itab-stawn&lt;/P&gt;&lt;P&gt;             gw_itab-text1                  "Splitting the pipe delimited data.&lt;/P&gt;&lt;P&gt;             gw_itab-bemeh&lt;/P&gt;&lt;P&gt;             gw_itab-impma&lt;/P&gt;&lt;P&gt;             gw_itab-minol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF gw_itab-land1 IS INITIAL.        " If the user fails to enter land key&lt;/P&gt;&lt;P&gt;        gw_itab-land1 = 'CA'.             " Default land to 'CA'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF gw_itab-stawn IS NOT INITIAL.    " If import code is present&lt;/P&gt;&lt;P&gt;        APPEND gw_itab TO gi_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_itab TO gi_itab.&lt;/P&gt;&lt;P&gt;        CLEAR gw_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        READ TABLE gi_itab&lt;/P&gt;&lt;P&gt;          INTO gw_itab WITH KEY stawn = space.   "Read the internal table with empty import code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          gw_err_itab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;          gw_err_itab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;          gw_err_itab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;          gw_err_itab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;          gw_err_itab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;          gw_err_itab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;          gw_err_itab-err   = text-032.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          APPEND gw_err_itab TO gi_err_itab.&lt;/P&gt;&lt;P&gt;          gv_id = gv_id + 1.&lt;/P&gt;&lt;P&gt;          DELETE gi_itab INDEX lv_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "get_data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  gf_header&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM gf_header.&lt;/P&gt;&lt;P&gt;  NEW-LINE.                                       " Dispalay the header section&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE:/ text-006.&lt;/P&gt;&lt;P&gt;  WRITE:/ text-019.&lt;/P&gt;&lt;P&gt;  SKIP 1.&lt;/P&gt;&lt;P&gt;  WRITE: AT /1 'PROGRAM NAME:'(022),sy-repid,&lt;/P&gt;&lt;P&gt;        'DATE :'(023),sy-datum,&lt;/P&gt;&lt;P&gt;        AT 100 'TIME :'(024),sy-timlo.&lt;/P&gt;&lt;P&gt;  WRITE: AT /1  'FILENAME:'(025),p_file.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  SKIP 1.&lt;/P&gt;&lt;P&gt;  WRITE:/  text-008.&lt;/P&gt;&lt;P&gt;  WRITE:/  text-009.&lt;/P&gt;&lt;P&gt;  WRITE:/  text-010.&lt;/P&gt;&lt;P&gt;  WRITE: AT 20  text-011.&lt;/P&gt;&lt;P&gt;  WRITE: AT 33  text-012.&lt;/P&gt;&lt;P&gt;  WRITE: AT 55  text-013.&lt;/P&gt;&lt;P&gt;  WRITE: AT 70  text-014.&lt;/P&gt;&lt;P&gt;  WRITE: AT 95  text-015.&lt;/P&gt;&lt;P&gt;  WRITE: AT 120 text-016.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  NEW-LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  NEW-LINE.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "gf_header&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  validations&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM validations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_id TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    APPEND gw_itab-land1 TO gi_land.       "Land code alone is taken into internal table&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    gw_land_stawn-land1 = gw_itab-land1.         "land along with import code is taken into another internal table&lt;/P&gt;&lt;P&gt;    gw_land_stawn-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;    APPEND gw_land_stawn TO gi_land_stawn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT gi_land BY land1.&lt;/P&gt;&lt;P&gt;  REFRESH gi_c_land.&lt;/P&gt;&lt;P&gt;  IF gi_land[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT land1&lt;/P&gt;&lt;P&gt;      FROM t005&lt;/P&gt;&lt;P&gt;      INTO TABLE gi_c_land&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN gi_land&lt;/P&gt;&lt;P&gt;      WHERE land1 EQ gi_land-land1.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    LOOP AT gi_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;      READ TABLE gi_c_land               "Read table with correct land keys&lt;/P&gt;&lt;P&gt;        INTO gw_land&lt;/P&gt;&lt;P&gt;        WITH KEY land1 = gw_itab-land1 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        gw_validitab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;        gw_validitab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;        gw_validitab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;        gw_validitab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;        gw_validitab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;        gw_validitab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_validitab TO gi_valid_itab.         "appending correct values to internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        gw_err_itab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;        gw_err_itab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;        gw_err_itab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;        gw_err_itab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;        gw_err_itab-err   = text-033.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_err_itab TO gi_err_itab.            "Appending incorrect values.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gi_land_stawn[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT land1 stawn&lt;/P&gt;&lt;P&gt;      FROM t604                             "Selecting already present land and import codes from gi_land_stawn&lt;/P&gt;&lt;P&gt;      INTO TABLE gi_err_land_stawn&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN gi_land_stawn&lt;/P&gt;&lt;P&gt;      WHERE land1 = gi_land_stawn-land1 AND stawn = gi_land_stawn-stawn.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT gi_valid_itab INTO gw_validitab. " gi_itab_a into gw_validitab.&lt;/P&gt;&lt;P&gt;      CLEAR gw_err_itab.&lt;/P&gt;&lt;P&gt;      lv_id = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE gi_err_land_stawn&lt;/P&gt;&lt;P&gt;        INTO gw_land_stawn                      "Reading internal table containing error import codes&lt;/P&gt;&lt;P&gt;        WITH KEY land1 = gw_validitab-land1&lt;/P&gt;&lt;P&gt;                 stawn = gw_validitab-stawn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        gw_err_itab-land1 = gw_validitab-land1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-stawn = gw_validitab-stawn.&lt;/P&gt;&lt;P&gt;        gw_err_itab-text1 = gw_validitab-text1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-bemeh = gw_validitab-bemeh.&lt;/P&gt;&lt;P&gt;        gw_err_itab-impma = gw_validitab-impma.&lt;/P&gt;&lt;P&gt;        gw_err_itab-minol = gw_validitab-minol.&lt;/P&gt;&lt;P&gt;        gw_err_itab-err   = text-034.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_err_itab TO gi_err_itab.           "Appending error values to error internal table.&lt;/P&gt;&lt;P&gt;        DELETE gi_valid_itab INDEX lv_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "validations&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  remove_duplicate&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM remove_duplicate.&lt;/P&gt;&lt;P&gt;  DATA: lv_id TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_valid_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    APPEND gw_itab TO gi_dup_itab.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR gw_itab.&lt;/P&gt;&lt;P&gt;  SORT gi_valid_itab BY land1 stawn ASCENDING.&lt;/P&gt;&lt;P&gt;  SORT gi_dup_itab BY land1 stawn ASCENDING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM gi_valid_itab COMPARING land1 stawn.     "deleting duplicates from gi_valid_itab.&lt;/P&gt;&lt;P&gt;  LOOP AT gi_valid_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    lv_id = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE gi_dup_itab&lt;/P&gt;&lt;P&gt;      INTO gw_validitab&lt;/P&gt;&lt;P&gt;      WITH TABLE KEY land1 = gw_itab-land1          "Reading from the internal table containing duplicate values.&lt;/P&gt;&lt;P&gt;                     stawn = gw_itab-stawn&lt;/P&gt;&lt;P&gt;                     text1 = gw_itab-text1&lt;/P&gt;&lt;P&gt;                     bemeh = gw_itab-bemeh&lt;/P&gt;&lt;P&gt;                     impma = gw_itab-impma&lt;/P&gt;&lt;P&gt;                     minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      DELETE gi_dup_itab&lt;/P&gt;&lt;P&gt;        WHERE land1 = gw_itab-land1&lt;/P&gt;&lt;P&gt;          AND stawn = gw_itab-stawn               "Deleting the correct values from duplicated internal table.&lt;/P&gt;&lt;P&gt;          AND text1 = gw_itab-text1&lt;/P&gt;&lt;P&gt;          AND bemeh = gw_itab-bemeh               "Now it has only duplicaed values.&lt;/P&gt;&lt;P&gt;          AND impma = gw_itab-impma&lt;/P&gt;&lt;P&gt;          AND minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_dup_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    gw_err_itab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;    gw_err_itab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;    gw_err_itab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;    gw_err_itab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;    gw_err_itab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;    gw_err_itab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;    gw_err_itab-err   = text-035.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND gw_err_itab TO gi_err_itab.         "Appending the duplicate errors to gi_err_itab&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "remove_duplicate&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  no_of_records&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM no_of_records.&lt;/P&gt;&lt;P&gt;  DATA: lv_line TYPE i,&lt;/P&gt;&lt;P&gt;        lv_line1 TYPE i,&lt;/P&gt;&lt;P&gt;        lv_corr TYPE i,&lt;/P&gt;&lt;P&gt;        lv_dup TYPE i,&lt;/P&gt;&lt;P&gt;        lv_tot TYPE i,&lt;/P&gt;&lt;P&gt;        lv_total TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE gi_itab LINES lv_tot.                    "Total number of records in the flat file&lt;/P&gt;&lt;P&gt;  lv_total = lv_tot + gv_id.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-002, 44 lv_total. "'Total number of Records from flat file:', 44 lv_total.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE gi_valid_itab LINES lv_line.                 "Total number of valid records.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-003, 44 lv_line. " 'No of correctly processed records:', 44 lv_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE gi_err_itab LINES lv_line1.                  "Total number of error records.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-004, 44 lv_line1. "'No of Error Records:', 44 lv_line1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  lv_corr = lv_line + lv_line1.                                "Total number of duplicate records.&lt;/P&gt;&lt;P&gt;  lv_dup  = lv_total - lv_corr.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-030, 44 lv_dup. "'Total number of exact duplicates:', 44 lv_dup.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "validations&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  display&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gi_err_itab[] IS INITIAL.                      "If error internal table is empty&lt;/P&gt;&lt;P&gt;    WRITE: / sy-uline.&lt;/P&gt;&lt;P&gt;    WRITE: /5 text-031."'All the datas are successfully uploaded'.&lt;/P&gt;&lt;P&gt;    WRITE: / sy-uline.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LOOP AT gi_err_itab INTO gw_err_itab.&lt;/P&gt;&lt;P&gt;      WRITE: / gw_err_itab-land1, 21 gw_err_itab-stawn, 34 gw_err_itab-text1,56 gw_err_itab-bemeh, 71 gw_err_itab-impma, 97 gw_err_itab-minol, 121 gw_err_itab-err.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;    WRITE: / sy-uline.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "display&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc.&lt;/P&gt;&lt;P&gt;  DATA: lv_tcode(4) TYPE c VALUE 'SM30'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gi_valid_itab[] IS INITIAL.                     "If correct internal table is empty, exit.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONSTANTS: lc_slash TYPE c VALUE '/'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR: gv_year, gv_mon, gv_date, gi_bdcdata, gv_datab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    REFRESH gi_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE: sy-datum+0(4) TO gv_year,               "Todays data.&lt;/P&gt;&lt;P&gt;          sy-datum+4(2) TO gv_mon,&lt;/P&gt;&lt;P&gt;          sy-datum+6(2) TO gv_date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE gv_mon lc_slash gv_date lc_slash gv_year INTO gv_datab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT gi_valid_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPMSVMA' '0100'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'VIEWNAME'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=UPD'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'VIEWNAME'&lt;/P&gt;&lt;P&gt;                                    'V_T604'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'VIMDYNFLDS-LTD_DTA_NO'&lt;/P&gt;&lt;P&gt;                                    'X'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPL080E' '0020'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'V_T604-BEMEH(01)'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=NEWL'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPL080E' '0040'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'V_T604-MINOL'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=UEBE'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-LAND1'&lt;/P&gt;&lt;P&gt;                                    gw_itab-land1.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-STAWN'&lt;/P&gt;&lt;P&gt;                                    gw_itab-stawn.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-TEXT1'&lt;/P&gt;&lt;P&gt;                                    gw_itab-text1.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-BEMEH'&lt;/P&gt;&lt;P&gt;                                    gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-IMPMA'&lt;/P&gt;&lt;P&gt;                                    gw_itab-impma.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-MINOL'&lt;/P&gt;&lt;P&gt;                                    gw_itab-minol.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPL080E' '0020'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'V_T604-BEMEH(01)'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=BACK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSPO1' '0100'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=YES'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTRD' '0300'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO008-TRKORR'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=INSA'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO008-TRKORR'&lt;/P&gt;&lt;P&gt;                                    'BS7K900776'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTR8' '0102'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO013-PROJECT'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=DOUBLECLICK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO013-TARSYSTEM'&lt;/P&gt;&lt;P&gt;                                    'BS7.200'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTR8' '0102'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO013-AS4TEXT'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=CREA'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO013-AS4TEXT'&lt;/P&gt;&lt;P&gt;                                    'another req'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO013-TARSYSTEM'&lt;/P&gt;&lt;P&gt;                                    'BS7.200'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTRD' '0300'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO008-TRKORR'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=LOCK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO008-TRKORR'&lt;/P&gt;&lt;P&gt;                                    'BS7K900778'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPMSVMA' '0100'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '/EBACK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'VIEWNAME'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_transaction USING lv_tcode&lt;/P&gt;&lt;P&gt;      .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      REFRESH gi_bdcdata.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "bdc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc_dynpro&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_PROGRAM  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_DYNPRO   text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_dynpro USING x_program  TYPE any x_dynpro TYPE any.               " BDC sturucture&lt;/P&gt;&lt;P&gt;  CLEAR gw_bdcdata.&lt;/P&gt;&lt;P&gt;  gw_bdcdata-program  = x_program.&lt;/P&gt;&lt;P&gt;  gw_bdcdata-dynpro   = x_dynpro.&lt;/P&gt;&lt;P&gt;  gw_bdcdata-dynbegin = gc_dynbegin.&lt;/P&gt;&lt;P&gt;  APPEND gw_bdcdata TO gi_bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "bdc_dynpro&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc_field&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_FNAM     text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_FVAL     text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_field USING x_fnam TYPE any x_fval TYPE any.&lt;/P&gt;&lt;P&gt;  IF NOT x_fval IS INITIAL.&lt;/P&gt;&lt;P&gt;    CLEAR gw_bdcdata.&lt;/P&gt;&lt;P&gt;    gw_bdcdata-fnam = x_fnam.&lt;/P&gt;&lt;P&gt;    gw_bdcdata-fval = x_fval.&lt;/P&gt;&lt;P&gt;    APPEND gw_bdcdata TO gi_bdcdata.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_FIELD&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc_transaction&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_TCODE    text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_transaction USING x_tcode TYPE any.                      "BDC Transaction&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_flag TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL TRANSACTION x_tcode USING gi_bdcdata&lt;/P&gt;&lt;P&gt;                    MODE        gc_mode&lt;/P&gt;&lt;P&gt;                    UPDATE       gc_mode1&lt;/P&gt;&lt;P&gt;                    MESSAGES INTO gi_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: lv_flag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_msg INTO gw_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF gw_msg-msgtyp EQ gc_sucess.&lt;/P&gt;&lt;P&gt;      IF lv_flag EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        gv_no_succs = gv_no_succs + 1.&lt;/P&gt;&lt;P&gt;        lv_flag = gc_flag.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'MESSAGE_TEXT_BUILD'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          msgid               = gw_msg-msgid&lt;/P&gt;&lt;P&gt;          msgnr               = gw_msg-msgnr&lt;/P&gt;&lt;P&gt;          msgv1               = gw_msg-msgv1&lt;/P&gt;&lt;P&gt;          msgv2               = gw_msg-msgv2&lt;/P&gt;&lt;P&gt;          msgv3               = gw_msg-msgv3&lt;/P&gt;&lt;P&gt;          msgv4               = gw_msg-msgv4&lt;/P&gt;&lt;P&gt;        IMPORTING&lt;/P&gt;&lt;P&gt;          message_text_output = gv_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND gv_msg TO gi_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF lv_flag EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        gv_no_error = gv_no_error + 1.&lt;/P&gt;&lt;P&gt;        lv_flag = gc_flag.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  REFRESH gi_bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "bdc_transaction&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Buvana&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 03 Apr 2007 11:49:41 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-04-03T11:49:41Z</dc:date>
    <item>
      <title>regarding bdc</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-bdc/m-p/2078626#M431045</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can any one provide the code for how to get success records and error records into seperate flat files&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks&lt;/P&gt;&lt;P&gt;Sambasiva&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Apr 2007 09:25:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-bdc/m-p/2078626#M431045</guid>
      <dc:creator>former_member557020</dc:creator>
      <dc:date>2007-04-03T09:25:25Z</dc:date>
    </item>
    <item>
      <title>Re: regarding bdc</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-bdc/m-p/2078627#M431046</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Refer to this code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;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.



*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  form_uploadff
*&amp;amp;---------------------------------------------------------------------*
*     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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  Form_bdcgenerate
*&amp;amp;---------------------------------------------------------------------*
*     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 &amp;lt;&amp;gt; 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


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  populatebdc
*&amp;amp;---------------------------------------------------------------------*
*       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


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FORM_OPENSESSION
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 0.
    WRITE :/ 'Session not open'.
  ENDIF.


ENDFORM.                    " FORM_OPENSESSION
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FORM_INSERT
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 0.
    WRITE :/ 'Unable to insert the record'.
  ENDIF.


ENDFORM.                    " FORM_INSERT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FORM_CLOSESESS
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 0.
  ENDIF.



ENDFORM.                    " FORM_CLOSESESS
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FORM_FORMATMSG
*&amp;amp;---------------------------------------------------------------------*
*       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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  form_writeop
*&amp;amp;---------------------------------------------------------------------*
*       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
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Apr 2007 09:30:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-bdc/m-p/2078627#M431046</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-04-03T09:30:17Z</dc:date>
    </item>
    <item>
      <title>Re: regarding bdc</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-bdc/m-p/2078628#M431047</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, this is call transaction method.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zrecord02&lt;/P&gt;&lt;P&gt;       NO STANDARD PAGE HEADING LINE-SIZE 255.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: gc_x         TYPE c VALUE 'X',                                    "constants for true value&lt;/P&gt;&lt;P&gt;           gc_dynbegin  TYPE c VALUE  'X',                                   "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_mode      TYPE c VALUE 'A',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_mode1     TYPE c VALUE 'N',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_sucess    TYPE c VALUE 'S',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_flag      TYPE c VALUE 'X',                                    "constants used in call transaction&lt;/P&gt;&lt;P&gt;           gc_read      TYPE dxfields-fileoper VALUE 'R',                    "Constants used in form file selection.&lt;/P&gt;&lt;P&gt;           gc_applic    TYPE dxfields-location VALUE 'A',                    "application server location&lt;/P&gt;&lt;P&gt;           gc_presen    TYPE dxfields-location VALUE 'P',                    "Presentation server location&lt;/P&gt;&lt;P&gt;           gc_root(01)  TYPE c VALUE '/'.                                    "constant used in file selection&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gv_datab    TYPE char12,                 "Varible to hold the data&lt;/P&gt;&lt;P&gt;      gv_date     TYPE char2,                  "Variable to hold the date&lt;/P&gt;&lt;P&gt;      gv_mon      TYPE char2,                  "Variable to hold the month&lt;/P&gt;&lt;P&gt;      gv_year     TYPE char4,                  "Variable to hold the year&lt;/P&gt;&lt;P&gt;      gv_no_succs TYPE i,                      "Variable to hold the number of correct records&lt;/P&gt;&lt;P&gt;      gv_no_error TYPE i,                      "Variable to hold the number of error records&lt;/P&gt;&lt;P&gt;      gv_msg      TYPE char100,                "Variable to hold the message&lt;/P&gt;&lt;P&gt;      gv_id       TYPE i.                      "Variable to hold the tabix value&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-t01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS: p_upl_ps RADIOBUTTON GROUP g DEFAULT 'X',      "radiobutton for presentation server&lt;/P&gt;&lt;P&gt;            p_upl_as RADIOBUTTON GROUP g,                  "radiobutton for application server&lt;/P&gt;&lt;P&gt;            p_file   TYPE rlgrap-filename,                 "file name&lt;/P&gt;&lt;P&gt;            p_test   AS CHECKBOX.                          "for testmode&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK b.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_itab ,                         " structure containing the fields of flat file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      land1 TYPE v_t604-land1,                    "Land value from ex&lt;/P&gt;&lt;P&gt;      stawn TYPE v_t604-stawn,&lt;/P&gt;&lt;P&gt;      text1 TYPE v_t604-text1,&lt;/P&gt;&lt;P&gt;      bemeh TYPE v_t604-bemeh,&lt;/P&gt;&lt;P&gt;      impma TYPE v_t604-impma,&lt;/P&gt;&lt;P&gt;      minol TYPE v_t604-minol,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      END OF gs_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_itab       TYPE TABLE OF gs_itab ,              "internal table for the structure gs_itab&lt;/P&gt;&lt;P&gt;      gi_valid_itab TYPE TABLE OF gs_itab,               "internal table for the structure gs_itab with valid fields alone.&lt;/P&gt;&lt;P&gt;      gi_dup_itab   TYPE TABLE OF gs_itab,               "internal table for the structure gs_itab to capture the duplicate values&lt;/P&gt;&lt;P&gt;      gw_itab       TYPE gs_itab,                        " work area of gs_itab&lt;/P&gt;&lt;P&gt;      gw_validitab  TYPE gs_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_e_itab,                           " structure containing the error fields of flat file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      land1   TYPE v_t604-land1,&lt;/P&gt;&lt;P&gt;      stawn   TYPE v_t604-stawn,&lt;/P&gt;&lt;P&gt;      text1   TYPE v_t604-text1,&lt;/P&gt;&lt;P&gt;      bemeh   TYPE v_t604-bemeh,&lt;/P&gt;&lt;P&gt;      impma   TYPE v_t604-impma,&lt;/P&gt;&lt;P&gt;      minol   TYPE v_t604-minol,&lt;/P&gt;&lt;P&gt;      err(30) TYPE c,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      END OF gs_e_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_err_itab TYPE TABLE OF gs_e_itab,          " internal table for the structure gs_e_itab.&lt;/P&gt;&lt;P&gt;      gw_err_itab TYPE gs_e_itab.                   "work area for the structure gs_itab&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_land_stawn,                     "structure containing land and import codes of flat file.&lt;/P&gt;&lt;P&gt;       land1 TYPE t005-land1,&lt;/P&gt;&lt;P&gt;       stawn TYPE t604-stawn,&lt;/P&gt;&lt;P&gt;       END OF gs_land_stawn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_land_stawn     TYPE TABLE OF gs_land_stawn,     " internal table containing valid land and import codes of flat file&lt;/P&gt;&lt;P&gt;      gi_err_land_stawn TYPE TABLE OF gs_land_stawn,     " internal table containing error land and import codes of flat file&lt;/P&gt;&lt;P&gt;      gw_land_stawn     TYPE gs_land_stawn.              " work area for the above internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF gs_land,                                 "structure containing land field alone&lt;/P&gt;&lt;P&gt;       land1 TYPE t005-land1,&lt;/P&gt;&lt;P&gt;       END OF gs_land.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_land   TYPE TABLE OF gs_land,                   " internal table for the structure gs_land&lt;/P&gt;&lt;P&gt;      gi_c_land TYPE TABLE OF gs_land, " gi_b_land,      " internal table for the structure gs_land with only valid land fields&lt;/P&gt;&lt;P&gt;      gw_land   TYPE gs_land.                            "work area for gs_land&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF gs_temp,                                  "structure containing the fields of legacy file.&lt;/P&gt;&lt;P&gt;      line(1000) TYPE c,&lt;/P&gt;&lt;P&gt;      END OF gs_temp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_temp LIKE TABLE OF gs_temp,                     "internal table for the structure gs_temp,&lt;/P&gt;&lt;P&gt;      gw_temp LIKE gs_temp.                              "work area for gs_temp&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gi_bdcdata TYPE TABLE OF bdcdata,                 "internal table for bdcdata&lt;/P&gt;&lt;P&gt;      gi_msg     TYPE TABLE OF bdcmsgcoll.                  "internal table for bdcmsgcoll&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gw_bdcdata TYPE bdcdata,                          "workarea for bdcdata&lt;/P&gt;&lt;P&gt;      gw_msg     TYPE bdcmsgcoll.                           "workarea for bdcmsgcoll&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     AT SELECTION-SCREEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.&lt;/P&gt;&lt;P&gt;  PERFORM file_selection.              "Selecting the file from the server&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TOP-OF-PAGE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;  PERFORM gf_header.                  "Calling the header Section&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      END-OF-PAGE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-PAGE.&lt;/P&gt;&lt;P&gt;  EXIT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      START-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  PERFORM upload.                   "Uploading the file to internal table&lt;/P&gt;&lt;P&gt;  PERFORM get_data.                 "Splitting the pipe delimited data&lt;/P&gt;&lt;P&gt;  IF p_test = gc_x.                 "In test mode&lt;/P&gt;&lt;P&gt;    PERFORM validations.&lt;/P&gt;&lt;P&gt;    PERFORM remove_duplicate.&lt;/P&gt;&lt;P&gt;    PERFORM display.&lt;/P&gt;&lt;P&gt;  ELSE.                             "not in test mode&lt;/P&gt;&lt;P&gt;    PERFORM validations.&lt;/P&gt;&lt;P&gt;    PERFORM remove_duplicate.&lt;/P&gt;&lt;P&gt;    PERFORM bdc.&lt;/P&gt;&lt;P&gt;    PERFORM display.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  PERFORM no_of_records.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      END-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  EXIT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  file_selection.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM file_selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS: lc_slash(2) TYPE c VALUE '//'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA :  lv_file_path TYPE dxfields-longpath,&lt;/P&gt;&lt;P&gt;          lv_location  TYPE dxfields-location,&lt;/P&gt;&lt;P&gt;          lv_server    TYPE msxxlist-name,&lt;/P&gt;&lt;P&gt;          ls_rfcsi    TYPE rfcsi.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR:lv_server,lv_location, lv_file_path.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE gc_read TO lv_file_path.&lt;/P&gt;&lt;P&gt;  IF lv_file_path IS INITIAL.&lt;/P&gt;&lt;P&gt;    lv_file_path = gc_root.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_upl_ps IS INITIAL.&lt;/P&gt;&lt;P&gt;    lv_location = gc_presen.                                 "if presentation server is selected&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    lv_location = gc_applic.                                 "if application server is selected&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RFC_SYSTEM_INFO'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      rfcsi_export = ls_rfcsi.&lt;/P&gt;&lt;P&gt;  lv_server    = ls_rfcsi-rfcdest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     i_location_flag       = lv_location&lt;/P&gt;&lt;P&gt;     i_server              = lv_server&lt;/P&gt;&lt;P&gt;     i_path                = lv_file_path&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   FILEMASK              = '&lt;STRONG&gt;.&lt;/STRONG&gt;'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     fileoperation         = p_upl_ps&lt;/P&gt;&lt;P&gt;   IMPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   O_LOCATION_FLAG       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   O_SERVER              =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     o_path                = lv_file_path&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ABEND_FLAG            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;P&gt;     rfc_error             = 1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ERROR_WITH_GUI        = 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     OTHERS                = 2&lt;/P&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE lv_file_path TO p_file.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF p_file(2) EQ lc_slash.&lt;/P&gt;&lt;P&gt;    SHIFT p_file LEFT.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " FILE_SELECTION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  upload&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM upload.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_file TYPE string.&lt;/P&gt;&lt;P&gt;  lv_file = p_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT p_upl_ps IS INITIAL.                      "if presentation server is selected&lt;/P&gt;&lt;P&gt;    CLEAR gi_itab.&lt;/P&gt;&lt;P&gt;    REFRESH gi_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        filename                      = lv_file&lt;/P&gt;&lt;P&gt;        filetype                      = 'ASC'&lt;/P&gt;&lt;P&gt;        has_field_separator           = ''&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       dat_mode                      = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  VIRUS_SCAN_PROFILE            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_AUTH_CHECK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        data_tab                      = gi_temp&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       file_open_error               = 1&lt;/P&gt;&lt;P&gt;       file_read_error               = 2&lt;/P&gt;&lt;P&gt;       no_batch                      = 3&lt;/P&gt;&lt;P&gt;       gui_refuse_filetransfer       = 4&lt;/P&gt;&lt;P&gt;       invalid_type                  = 5&lt;/P&gt;&lt;P&gt;       no_authority                  = 6&lt;/P&gt;&lt;P&gt;       unknown_error                 = 7&lt;/P&gt;&lt;P&gt;       bad_data_format               = 8&lt;/P&gt;&lt;P&gt;       header_not_allowed            = 9&lt;/P&gt;&lt;P&gt;       separator_not_allowed         = 10&lt;/P&gt;&lt;P&gt;       header_too_long               = 11&lt;/P&gt;&lt;P&gt;       unknown_dp_error              = 12&lt;/P&gt;&lt;P&gt;       access_denied                 = 13&lt;/P&gt;&lt;P&gt;       dp_out_of_memory              = 14&lt;/P&gt;&lt;P&gt;       disk_full                     = 15&lt;/P&gt;&lt;P&gt;       dp_timeout                    = 16&lt;/P&gt;&lt;P&gt;       OTHERS                        = 17&lt;/P&gt;&lt;P&gt;              .&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.                                                             "If application server is selected&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    OPEN DATASET p_file FOR INPUT IN TEXT MODE ENCODING DEFAULT      "If the data is available on the UNIX/Appl. server get the data&lt;/P&gt;&lt;P&gt;                               WITH SMART LINEFEED.&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    DO.&lt;/P&gt;&lt;P&gt;      READ DATASET  p_file INTO gw_temp-line.                                 "read file which is opened.&lt;/P&gt;&lt;P&gt;      APPEND gw_temp TO gi_temp.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLOSE DATASET p_file.                                                     "close the file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "upload&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  get_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_data.&lt;/P&gt;&lt;P&gt;  DATA:lv_id TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;  gv_id = 0.&lt;/P&gt;&lt;P&gt;  IF gi_temp[] IS INITIAL.                   "If the uploaded internal table is empty.&lt;/P&gt;&lt;P&gt;    WRITE: /5 text-001.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LOOP AT gi_temp INTO gw_temp.&lt;/P&gt;&lt;P&gt;      lv_id = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SPLIT gw_temp-line&lt;/P&gt;&lt;P&gt;        AT '|'&lt;/P&gt;&lt;P&gt;        INTO gw_itab-land1&lt;/P&gt;&lt;P&gt;             gw_itab-stawn&lt;/P&gt;&lt;P&gt;             gw_itab-text1                  "Splitting the pipe delimited data.&lt;/P&gt;&lt;P&gt;             gw_itab-bemeh&lt;/P&gt;&lt;P&gt;             gw_itab-impma&lt;/P&gt;&lt;P&gt;             gw_itab-minol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF gw_itab-land1 IS INITIAL.        " If the user fails to enter land key&lt;/P&gt;&lt;P&gt;        gw_itab-land1 = 'CA'.             " Default land to 'CA'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF gw_itab-stawn IS NOT INITIAL.    " If import code is present&lt;/P&gt;&lt;P&gt;        APPEND gw_itab TO gi_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_itab TO gi_itab.&lt;/P&gt;&lt;P&gt;        CLEAR gw_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        READ TABLE gi_itab&lt;/P&gt;&lt;P&gt;          INTO gw_itab WITH KEY stawn = space.   "Read the internal table with empty import code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          gw_err_itab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;          gw_err_itab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;          gw_err_itab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;          gw_err_itab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;          gw_err_itab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;          gw_err_itab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;          gw_err_itab-err   = text-032.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          APPEND gw_err_itab TO gi_err_itab.&lt;/P&gt;&lt;P&gt;          gv_id = gv_id + 1.&lt;/P&gt;&lt;P&gt;          DELETE gi_itab INDEX lv_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "get_data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  gf_header&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM gf_header.&lt;/P&gt;&lt;P&gt;  NEW-LINE.                                       " Dispalay the header section&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE:/ text-006.&lt;/P&gt;&lt;P&gt;  WRITE:/ text-019.&lt;/P&gt;&lt;P&gt;  SKIP 1.&lt;/P&gt;&lt;P&gt;  WRITE: AT /1 'PROGRAM NAME:'(022),sy-repid,&lt;/P&gt;&lt;P&gt;        'DATE :'(023),sy-datum,&lt;/P&gt;&lt;P&gt;        AT 100 'TIME :'(024),sy-timlo.&lt;/P&gt;&lt;P&gt;  WRITE: AT /1  'FILENAME:'(025),p_file.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  SKIP 1.&lt;/P&gt;&lt;P&gt;  WRITE:/  text-008.&lt;/P&gt;&lt;P&gt;  WRITE:/  text-009.&lt;/P&gt;&lt;P&gt;  WRITE:/  text-010.&lt;/P&gt;&lt;P&gt;  WRITE: AT 20  text-011.&lt;/P&gt;&lt;P&gt;  WRITE: AT 33  text-012.&lt;/P&gt;&lt;P&gt;  WRITE: AT 55  text-013.&lt;/P&gt;&lt;P&gt;  WRITE: AT 70  text-014.&lt;/P&gt;&lt;P&gt;  WRITE: AT 95  text-015.&lt;/P&gt;&lt;P&gt;  WRITE: AT 120 text-016.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  NEW-LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  NEW-LINE.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "gf_header&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  validations&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM validations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_id TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    APPEND gw_itab-land1 TO gi_land.       "Land code alone is taken into internal table&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    gw_land_stawn-land1 = gw_itab-land1.         "land along with import code is taken into another internal table&lt;/P&gt;&lt;P&gt;    gw_land_stawn-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;    APPEND gw_land_stawn TO gi_land_stawn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT gi_land BY land1.&lt;/P&gt;&lt;P&gt;  REFRESH gi_c_land.&lt;/P&gt;&lt;P&gt;  IF gi_land[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT land1&lt;/P&gt;&lt;P&gt;      FROM t005&lt;/P&gt;&lt;P&gt;      INTO TABLE gi_c_land&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN gi_land&lt;/P&gt;&lt;P&gt;      WHERE land1 EQ gi_land-land1.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    LOOP AT gi_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;      READ TABLE gi_c_land               "Read table with correct land keys&lt;/P&gt;&lt;P&gt;        INTO gw_land&lt;/P&gt;&lt;P&gt;        WITH KEY land1 = gw_itab-land1 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        gw_validitab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;        gw_validitab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;        gw_validitab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;        gw_validitab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;        gw_validitab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;        gw_validitab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_validitab TO gi_valid_itab.         "appending correct values to internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        gw_err_itab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;        gw_err_itab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;        gw_err_itab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;        gw_err_itab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;        gw_err_itab-err   = text-033.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_err_itab TO gi_err_itab.            "Appending incorrect values.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gi_land_stawn[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT land1 stawn&lt;/P&gt;&lt;P&gt;      FROM t604                             "Selecting already present land and import codes from gi_land_stawn&lt;/P&gt;&lt;P&gt;      INTO TABLE gi_err_land_stawn&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN gi_land_stawn&lt;/P&gt;&lt;P&gt;      WHERE land1 = gi_land_stawn-land1 AND stawn = gi_land_stawn-stawn.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT gi_valid_itab INTO gw_validitab. " gi_itab_a into gw_validitab.&lt;/P&gt;&lt;P&gt;      CLEAR gw_err_itab.&lt;/P&gt;&lt;P&gt;      lv_id = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE gi_err_land_stawn&lt;/P&gt;&lt;P&gt;        INTO gw_land_stawn                      "Reading internal table containing error import codes&lt;/P&gt;&lt;P&gt;        WITH KEY land1 = gw_validitab-land1&lt;/P&gt;&lt;P&gt;                 stawn = gw_validitab-stawn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        gw_err_itab-land1 = gw_validitab-land1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-stawn = gw_validitab-stawn.&lt;/P&gt;&lt;P&gt;        gw_err_itab-text1 = gw_validitab-text1.&lt;/P&gt;&lt;P&gt;        gw_err_itab-bemeh = gw_validitab-bemeh.&lt;/P&gt;&lt;P&gt;        gw_err_itab-impma = gw_validitab-impma.&lt;/P&gt;&lt;P&gt;        gw_err_itab-minol = gw_validitab-minol.&lt;/P&gt;&lt;P&gt;        gw_err_itab-err   = text-034.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND gw_err_itab TO gi_err_itab.           "Appending error values to error internal table.&lt;/P&gt;&lt;P&gt;        DELETE gi_valid_itab INDEX lv_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "validations&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  remove_duplicate&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM remove_duplicate.&lt;/P&gt;&lt;P&gt;  DATA: lv_id TYPE sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_valid_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    APPEND gw_itab TO gi_dup_itab.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR gw_itab.&lt;/P&gt;&lt;P&gt;  SORT gi_valid_itab BY land1 stawn ASCENDING.&lt;/P&gt;&lt;P&gt;  SORT gi_dup_itab BY land1 stawn ASCENDING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM gi_valid_itab COMPARING land1 stawn.     "deleting duplicates from gi_valid_itab.&lt;/P&gt;&lt;P&gt;  LOOP AT gi_valid_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    lv_id = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE gi_dup_itab&lt;/P&gt;&lt;P&gt;      INTO gw_validitab&lt;/P&gt;&lt;P&gt;      WITH TABLE KEY land1 = gw_itab-land1          "Reading from the internal table containing duplicate values.&lt;/P&gt;&lt;P&gt;                     stawn = gw_itab-stawn&lt;/P&gt;&lt;P&gt;                     text1 = gw_itab-text1&lt;/P&gt;&lt;P&gt;                     bemeh = gw_itab-bemeh&lt;/P&gt;&lt;P&gt;                     impma = gw_itab-impma&lt;/P&gt;&lt;P&gt;                     minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      DELETE gi_dup_itab&lt;/P&gt;&lt;P&gt;        WHERE land1 = gw_itab-land1&lt;/P&gt;&lt;P&gt;          AND stawn = gw_itab-stawn               "Deleting the correct values from duplicated internal table.&lt;/P&gt;&lt;P&gt;          AND text1 = gw_itab-text1&lt;/P&gt;&lt;P&gt;          AND bemeh = gw_itab-bemeh               "Now it has only duplicaed values.&lt;/P&gt;&lt;P&gt;          AND impma = gw_itab-impma&lt;/P&gt;&lt;P&gt;          AND minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_dup_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;    gw_err_itab-land1 = gw_itab-land1.&lt;/P&gt;&lt;P&gt;    gw_err_itab-stawn = gw_itab-stawn.&lt;/P&gt;&lt;P&gt;    gw_err_itab-text1 = gw_itab-text1.&lt;/P&gt;&lt;P&gt;    gw_err_itab-bemeh = gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;    gw_err_itab-impma = gw_itab-impma.&lt;/P&gt;&lt;P&gt;    gw_err_itab-minol = gw_itab-minol.&lt;/P&gt;&lt;P&gt;    gw_err_itab-err   = text-035.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND gw_err_itab TO gi_err_itab.         "Appending the duplicate errors to gi_err_itab&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "remove_duplicate&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  no_of_records&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM no_of_records.&lt;/P&gt;&lt;P&gt;  DATA: lv_line TYPE i,&lt;/P&gt;&lt;P&gt;        lv_line1 TYPE i,&lt;/P&gt;&lt;P&gt;        lv_corr TYPE i,&lt;/P&gt;&lt;P&gt;        lv_dup TYPE i,&lt;/P&gt;&lt;P&gt;        lv_tot TYPE i,&lt;/P&gt;&lt;P&gt;        lv_total TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE gi_itab LINES lv_tot.                    "Total number of records in the flat file&lt;/P&gt;&lt;P&gt;  lv_total = lv_tot + gv_id.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-002, 44 lv_total. "'Total number of Records from flat file:', 44 lv_total.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE gi_valid_itab LINES lv_line.                 "Total number of valid records.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-003, 44 lv_line. " 'No of correctly processed records:', 44 lv_line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE gi_err_itab LINES lv_line1.                  "Total number of error records.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-004, 44 lv_line1. "'No of Error Records:', 44 lv_line1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  lv_corr = lv_line + lv_line1.                                "Total number of duplicate records.&lt;/P&gt;&lt;P&gt;  lv_dup  = lv_total - lv_corr.&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-030, 44 lv_dup. "'Total number of exact duplicates:', 44 lv_dup.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "validations&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  display&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gi_err_itab[] IS INITIAL.                      "If error internal table is empty&lt;/P&gt;&lt;P&gt;    WRITE: / sy-uline.&lt;/P&gt;&lt;P&gt;    WRITE: /5 text-031."'All the datas are successfully uploaded'.&lt;/P&gt;&lt;P&gt;    WRITE: / sy-uline.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LOOP AT gi_err_itab INTO gw_err_itab.&lt;/P&gt;&lt;P&gt;      WRITE: / gw_err_itab-land1, 21 gw_err_itab-stawn, 34 gw_err_itab-text1,56 gw_err_itab-bemeh, 71 gw_err_itab-impma, 97 gw_err_itab-minol, 121 gw_err_itab-err.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;    WRITE: / sy-uline.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "display&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc.&lt;/P&gt;&lt;P&gt;  DATA: lv_tcode(4) TYPE c VALUE 'SM30'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gi_valid_itab[] IS INITIAL.                     "If correct internal table is empty, exit.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONSTANTS: lc_slash TYPE c VALUE '/'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR: gv_year, gv_mon, gv_date, gi_bdcdata, gv_datab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    REFRESH gi_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MOVE: sy-datum+0(4) TO gv_year,               "Todays data.&lt;/P&gt;&lt;P&gt;          sy-datum+4(2) TO gv_mon,&lt;/P&gt;&lt;P&gt;          sy-datum+6(2) TO gv_date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE gv_mon lc_slash gv_date lc_slash gv_year INTO gv_datab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT gi_valid_itab INTO gw_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPMSVMA' '0100'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'VIEWNAME'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=UPD'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'VIEWNAME'&lt;/P&gt;&lt;P&gt;                                    'V_T604'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'VIMDYNFLDS-LTD_DTA_NO'&lt;/P&gt;&lt;P&gt;                                    'X'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPL080E' '0020'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'V_T604-BEMEH(01)'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=NEWL'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPL080E' '0040'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'V_T604-MINOL'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=UEBE'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-LAND1'&lt;/P&gt;&lt;P&gt;                                    gw_itab-land1.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-STAWN'&lt;/P&gt;&lt;P&gt;                                    gw_itab-stawn.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-TEXT1'&lt;/P&gt;&lt;P&gt;                                    gw_itab-text1.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-BEMEH'&lt;/P&gt;&lt;P&gt;                                    gw_itab-bemeh.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-IMPMA'&lt;/P&gt;&lt;P&gt;                                    gw_itab-impma.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'V_T604-MINOL'&lt;/P&gt;&lt;P&gt;                                    gw_itab-minol.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPL080E' '0020'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'V_T604-BEMEH(01)'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=BACK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSPO1' '0100'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=YES'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTRD' '0300'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO008-TRKORR'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=INSA'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO008-TRKORR'&lt;/P&gt;&lt;P&gt;                                    'BS7K900776'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTR8' '0102'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO013-PROJECT'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=DOUBLECLICK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO013-TARSYSTEM'&lt;/P&gt;&lt;P&gt;                                    'BS7.200'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTR8' '0102'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO013-AS4TEXT'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=CREA'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO013-AS4TEXT'&lt;/P&gt;&lt;P&gt;                                    'another req'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO013-TARSYSTEM'&lt;/P&gt;&lt;P&gt;                                    'BS7.200'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPLSTRD' '0300'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'KO008-TRKORR'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '=LOCK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'KO008-TRKORR'&lt;/P&gt;&lt;P&gt;                                    'BS7K900778'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro      USING 'SAPMSVMA' '0100'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                    '/EBACK'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                    'VIEWNAME'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_transaction USING lv_tcode&lt;/P&gt;&lt;P&gt;      .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      REFRESH gi_bdcdata.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "bdc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc_dynpro&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_PROGRAM  text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_DYNPRO   text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_dynpro USING x_program  TYPE any x_dynpro TYPE any.               " BDC sturucture&lt;/P&gt;&lt;P&gt;  CLEAR gw_bdcdata.&lt;/P&gt;&lt;P&gt;  gw_bdcdata-program  = x_program.&lt;/P&gt;&lt;P&gt;  gw_bdcdata-dynpro   = x_dynpro.&lt;/P&gt;&lt;P&gt;  gw_bdcdata-dynbegin = gc_dynbegin.&lt;/P&gt;&lt;P&gt;  APPEND gw_bdcdata TO gi_bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "bdc_dynpro&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc_field&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_FNAM     text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_FVAL     text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_field USING x_fnam TYPE any x_fval TYPE any.&lt;/P&gt;&lt;P&gt;  IF NOT x_fval IS INITIAL.&lt;/P&gt;&lt;P&gt;    CLEAR gw_bdcdata.&lt;/P&gt;&lt;P&gt;    gw_bdcdata-fnam = x_fnam.&lt;/P&gt;&lt;P&gt;    gw_bdcdata-fval = x_fval.&lt;/P&gt;&lt;P&gt;    APPEND gw_bdcdata TO gi_bdcdata.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_FIELD&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  bdc_transaction&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;X_TCODE    text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_transaction USING x_tcode TYPE any.                      "BDC Transaction&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_flag TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL TRANSACTION x_tcode USING gi_bdcdata&lt;/P&gt;&lt;P&gt;                    MODE        gc_mode&lt;/P&gt;&lt;P&gt;                    UPDATE       gc_mode1&lt;/P&gt;&lt;P&gt;                    MESSAGES INTO gi_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: lv_flag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gi_msg INTO gw_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF gw_msg-msgtyp EQ gc_sucess.&lt;/P&gt;&lt;P&gt;      IF lv_flag EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        gv_no_succs = gv_no_succs + 1.&lt;/P&gt;&lt;P&gt;        lv_flag = gc_flag.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'MESSAGE_TEXT_BUILD'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          msgid               = gw_msg-msgid&lt;/P&gt;&lt;P&gt;          msgnr               = gw_msg-msgnr&lt;/P&gt;&lt;P&gt;          msgv1               = gw_msg-msgv1&lt;/P&gt;&lt;P&gt;          msgv2               = gw_msg-msgv2&lt;/P&gt;&lt;P&gt;          msgv3               = gw_msg-msgv3&lt;/P&gt;&lt;P&gt;          msgv4               = gw_msg-msgv4&lt;/P&gt;&lt;P&gt;        IMPORTING&lt;/P&gt;&lt;P&gt;          message_text_output = gv_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND gv_msg TO gi_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF lv_flag EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        gv_no_error = gv_no_error + 1.&lt;/P&gt;&lt;P&gt;        lv_flag = gc_flag.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  REFRESH gi_bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "bdc_transaction&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Buvana&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Apr 2007 11:49:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/regarding-bdc/m-p/2078628#M431047</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-04-03T11:49:41Z</dc:date>
    </item>
  </channel>
</rss>

