<?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: upload data in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/upload-data/m-p/3159013#M751501</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;this is a sample code for uploading infotype 185.                                                                                &lt;/P&gt;&lt;P&gt;REPORT  zhrpyn_in_0185&lt;/P&gt;&lt;P&gt;NO STANDARD PAGE HEADING LINE-SIZE 255 MESSAGE-ID zhr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INCLUDE zhrpyr_in_screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*INTERNAL TABLE FOR INSERTING DATA INTO THE BDC SESSION&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF i_record OCCURS 0,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: PERNR_D&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       pernr(8),&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        pernr LIKE pa0185-pernr,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: SUBTY&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        subty(002),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: BEGDA&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        begda(010),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: ENDDA&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        endda(010),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: IDNUM&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        icnum(030),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: FLAG&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        flag(1),&lt;/P&gt;&lt;P&gt;        begindate TYPE d,&lt;/P&gt;&lt;P&gt;      END OF i_record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     changed on 24.02.2006 CR::PADK904014&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal table for getting the files from the directory&lt;/P&gt;&lt;P&gt;DATA:  i_file_list TYPE epsfili  OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table for getting required files names from the retrieved flat file list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF lt_final_list OCCURS 0,&lt;/P&gt;&lt;P&gt;        date TYPE date, "sy-datum,&lt;/P&gt;&lt;P&gt;        time LIKE sy-timlo,&lt;/P&gt;&lt;P&gt;        name(80),&lt;/P&gt;&lt;P&gt;        name1(80),&lt;/P&gt;&lt;P&gt;        fullpath(85),&lt;/P&gt;&lt;P&gt;      END OF lt_final_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to store Error messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF it_error_msg OCCURS 0,&lt;/P&gt;&lt;P&gt;        pernr(10) TYPE c,&lt;/P&gt;&lt;P&gt;        msg(255) TYPE c,&lt;/P&gt;&lt;P&gt;END OF it_error_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to store payroll area information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA :BEGIN OF it_pa0001 OCCURS 0,&lt;/P&gt;&lt;P&gt;        pernr TYPE pa0001-pernr,&lt;/P&gt;&lt;P&gt;        abkrs TYPE pa0001-abkrs,&lt;/P&gt;&lt;P&gt;        bukrs TYPE pa0001-bukrs,&lt;/P&gt;&lt;P&gt;END OF it_pa0001.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to store hiring action data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF it_pa0000 OCCURS 0,&lt;/P&gt;&lt;P&gt;        pernr LIKE pa0000-pernr,&lt;/P&gt;&lt;P&gt;        massn LIKE pa0000-massn,&lt;/P&gt;&lt;P&gt;        stat2 LIKE pa0000-stat2,&lt;/P&gt;&lt;P&gt;END OF it_pa0000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to Error data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF it_error_data OCCURS 0,&lt;/P&gt;&lt;P&gt;        row(600),&lt;/P&gt;&lt;P&gt;      END OF it_error_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal table to store error files&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF it_temp OCCURS 0,&lt;/P&gt;&lt;P&gt;        name(85),	&lt;/P&gt;&lt;P&gt;       END OF it_temp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal table for storing the incorrect personnel number&lt;/P&gt;&lt;P&gt;DATA :BEGIN OF i_pernr OCCURS 0,&lt;/P&gt;&lt;P&gt;      pernr(5000),&lt;/P&gt;&lt;P&gt;      END OF i_pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal Table for Upload of records from flat file.&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF i_copy OCCURS 0,&lt;/P&gt;&lt;P&gt;          row(600) TYPE c,&lt;/P&gt;&lt;P&gt;       END OF i_copy.&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF i_table OCCURS 0,&lt;/P&gt;&lt;P&gt;          row(600) TYPE c,&lt;/P&gt;&lt;P&gt;       END OF i_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Standard Table used for Batch Input Processing.&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF bdcdata OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE bdcdata.&lt;/P&gt;&lt;P&gt;DATA : END OF bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Variables.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA : v_len TYPE i,&lt;/P&gt;&lt;P&gt;       v_head(1) TYPE c,&lt;/P&gt;&lt;P&gt;       v_date TYPE string,&lt;/P&gt;&lt;P&gt;       v_nor(10) TYPE c,&lt;/P&gt;&lt;P&gt;       v_space  TYPE string,&lt;/P&gt;&lt;P&gt;       v_thead(1) TYPE c,&lt;/P&gt;&lt;P&gt;       v_tdate TYPE string,&lt;/P&gt;&lt;P&gt;       v_tnor(10) TYPE c,&lt;/P&gt;&lt;P&gt;       v_tspace  TYPE string,&lt;/P&gt;&lt;P&gt;       v_abkrs(2),&lt;/P&gt;&lt;P&gt;       v_begda(8),&lt;/P&gt;&lt;P&gt;       v_count(10) TYPE n,&lt;/P&gt;&lt;P&gt;       v_pernr_1(8),&lt;/P&gt;&lt;P&gt;       v_date_c TYPE d,&lt;/P&gt;&lt;P&gt;       v_begindate TYPE sy-datum,&lt;/P&gt;&lt;P&gt;       v_qid LIKE apqi-qid, " to store the QID&lt;/P&gt;&lt;P&gt;       v_f_n TYPE string,&lt;/P&gt;&lt;P&gt;       v_f_e TYPE string,&lt;/P&gt;&lt;P&gt;       v_filename TYPE rlgrap-filename, " for download the error pernr&lt;/P&gt;&lt;P&gt;       v_filename1 TYPE rlgrap-filename, " for download the error pernr&lt;/P&gt;&lt;P&gt;       v_wa_zqid_filename LIKE zqid_filename,&lt;/P&gt;&lt;P&gt;       v_panflag,&lt;/P&gt;&lt;P&gt;       v_index TYPE i.&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;/P&gt;&lt;P&gt;*Constants&lt;/P&gt;&lt;P&gt;DATA : c_session TYPE d0100-mapn VALUE 'ZHRPY_185',&lt;/P&gt;&lt;P&gt;       c_tcode LIKE tstc-tcode VALUE 'PA30',&lt;/P&gt;&lt;P&gt;       c_infotype(4) VALUE '0185'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Function for uploading the files from the application server&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      dir_name               = '\lgcsap_IN\IT0185'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      dir_list               = i_file_list&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      invalid_eps_subdir     = 1&lt;/P&gt;&lt;P&gt;      sapgparam_failed       = 2&lt;/P&gt;&lt;P&gt;      build_directory_failed = 3&lt;/P&gt;&lt;P&gt;      no_authorization       = 4&lt;/P&gt;&lt;P&gt;      read_directory_failed  = 5&lt;/P&gt;&lt;P&gt;      too_many_read_errors   = 6&lt;/P&gt;&lt;P&gt;      empty_directory_list   = 7&lt;/P&gt;&lt;P&gt;      OTHERS                 = 8.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code check&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE e000 WITH 'Location Invalid'.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get all the file names based on timstamp.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT i_file_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Copy file name into the final internal table&lt;/P&gt;&lt;P&gt;    MOVE i_file_list-name TO lt_final_list-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Assuming files are txt&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SEARCH  i_file_list-name FOR '.txt'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Return Code Check&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Search for the file name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SEARCH i_file_list-name FOR 'LGCSAPINPIT0185'		&lt;/P&gt;&lt;P&gt;                     STARTING AT 1&lt;/P&gt;&lt;P&gt;                     ENDING AT 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return code Check&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CONCATENATE '\lgcsap_IN\IT0185\' i_file_list-name INTO it_temp-name.&lt;/P&gt;&lt;P&gt;        APPEND it_temp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Displaying the error message&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       MESSAGE e000 WITH 'File Not Found'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;*code to change date format from ddmmyy to yymmdd for sorting&lt;/P&gt;&lt;P&gt;        v_date_c = i_file_list-name+15(8).&lt;/P&gt;&lt;P&gt;        CONCATENATE v_date_c&lt;EM&gt;4(4) v_date_c&lt;/EM&gt;2(2) v_date_c+0(2) INTO&lt;/P&gt;&lt;P&gt;        lt_final_list-date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Getting the time date value&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        lt_final_list-time = i_file_list-name+23(6).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Concatenate the text to get the input file name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CONCATENATE '\lgcsap_IN\IT0185' lt_final_list-name INTO&lt;/P&gt;&lt;P&gt;             lt_final_list-fullpath SEPARATED BY '\'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Concatenate the text to get the output file name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CONCATENATE '\lgcsapREAD_IN\IT0185_READ' lt_final_list-name&lt;/P&gt;&lt;P&gt;        INTO  lt_final_list-name1 SEPARATED BY '\'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Append the list.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        APPEND lt_final_list.&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;&lt;/P&gt;&lt;P&gt;  IF lt_final_list[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE i000 WITH text-012.&lt;/P&gt;&lt;P&gt;    LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sort the table by Date and Time.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SORT lt_final_list BY date ASCENDING time ASCENDING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get all files selected&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT lt_final_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialize the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR:  i_copy,&lt;/P&gt;&lt;P&gt;              i_record,&lt;/P&gt;&lt;P&gt;              v_filename,&lt;/P&gt;&lt;P&gt;              v_filename1,&lt;/P&gt;&lt;P&gt;              v_f_n,&lt;/P&gt;&lt;P&gt;              v_f_e.&lt;/P&gt;&lt;P&gt;      REFRESH:  i_copy,i_record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SPLIT lt_final_list-name AT '.' INTO v_f_n&lt;/P&gt;&lt;P&gt;                                           v_f_e.&lt;/P&gt;&lt;P&gt;      CONCATENATE v_f_n '_ERR.txt' INTO v_filename.&lt;/P&gt;&lt;P&gt;      v_filename1 = lt_final_list-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For uploading the flat file from application server.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      OPEN DATASET lt_final_list-fullpath FOR INPUT IN TEXT  MODE ENCODING  DEFAULT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return code Check&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Display the error message that file cannot be opened.&lt;/P&gt;&lt;P&gt;        MESSAGE e000 WITH 'File cannot be opened'.&lt;/P&gt;&lt;P&gt;        STOP.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        DO.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read The records from the flat file into internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          READ DATASET lt_final_list-fullpath INTO  i_copy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF sy-subrc NE 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;*Append the records&lt;/P&gt;&lt;P&gt;            APPEND  i_copy.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDDO.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after reading the records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLOSE DATASET lt_final_list-fullpath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Moving the flat file into another folder&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      OPEN DATASET lt_final_list-name1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*looping at the internal table&lt;/P&gt;&lt;P&gt;        LOOP AT  i_copy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          TRANSFER  i_copy TO lt_final_list-name1.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after writing the  records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLOSE DATASET lt_final_list-name1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Return code check&lt;/P&gt;&lt;P&gt;      IF sy-subrc  = 0 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To get the number of lines in the internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DESCRIBE TABLE i_copy LINES v_len.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To separate the data into Header, Actual data and Trailer records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        LOOP AT i_copy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*To separate the header record.&lt;/P&gt;&lt;P&gt;          IF sy-tabix = 1 AND i_copy-row+0(1) = 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Split the header data into respective fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            SPLIT i_copy AT '|' INTO  v_head&lt;/P&gt;&lt;P&gt;                                      v_date&lt;/P&gt;&lt;P&gt;                                      v_nor&lt;/P&gt;&lt;P&gt;                                      v_space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Header Records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            WRITE: 'HEADER RECORDS'.&lt;/P&gt;&lt;P&gt;            WRITE: / v_head,&lt;/P&gt;&lt;P&gt;                     v_date,&lt;/P&gt;&lt;P&gt;                     v_nor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To separate the trailer records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          ELSEIF sy-tabix = v_len AND i_copy-row+0(1) = 'T'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Split the Trailer data into respective fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            SPLIT i_copy AT '|' INTO   v_thead&lt;/P&gt;&lt;P&gt;                                       v_tdate&lt;/P&gt;&lt;P&gt;                                       v_tnor&lt;/P&gt;&lt;P&gt;                                       v_tspace.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Trailer Records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            WRITE: / 'TRAILER RECORDS'.&lt;/P&gt;&lt;P&gt;            WRITE: / v_thead,&lt;/P&gt;&lt;P&gt;                     v_tdate,&lt;/P&gt;&lt;P&gt;                     v_tnor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To separate the actual records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Split the Actual data into respective fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            SPLIT i_copy AT '|' INTO  i_record-pernr&lt;/P&gt;&lt;P&gt;                                      i_record-begda&lt;/P&gt;&lt;P&gt;                                      i_record-endda&lt;/P&gt;&lt;P&gt;                                      i_record-subty&lt;/P&gt;&lt;P&gt;                                      i_record-icnum.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            WRITE: / i_record-pernr,&lt;/P&gt;&lt;P&gt;                     i_record-begda,&lt;/P&gt;&lt;P&gt;                     i_record-endda,&lt;/P&gt;&lt;P&gt;                     i_record-subty,&lt;/P&gt;&lt;P&gt;                     i_record-icnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'&lt;/P&gt;&lt;P&gt;              EXPORTING&lt;/P&gt;&lt;P&gt;                input  = i_record-pernr&lt;/P&gt;&lt;P&gt;              IMPORTING&lt;/P&gt;&lt;P&gt;                output = i_record-pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            CONCATENATE i_record-begda+6(4)&lt;/P&gt;&lt;P&gt;                                  i_record-begda+3(2)&lt;/P&gt;&lt;P&gt;                                 i_record-begda+0(2)&lt;/P&gt;&lt;P&gt;                     INTO i_record-begindate .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Append the records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            APPEND i_record.&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;&lt;/P&gt;&lt;P&gt;*Check if the number of rows in header &amp;amp; trailer r same.&lt;/P&gt;&lt;P&gt;      IF v_nor &amp;lt;&amp;gt; v_tnor .&lt;/P&gt;&lt;P&gt;*Display error message.&lt;/P&gt;&lt;P&gt;        MESSAGE e000 WITH text-000.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF i_record[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;*For all the records read from the application server file, get their payroll area from table PA0001.&lt;/P&gt;&lt;P&gt;        SELECT pernr abkrs bukrs INTO TABLE it_pa0001&lt;/P&gt;&lt;P&gt;        FROM pa0001&lt;/P&gt;&lt;P&gt;        FOR ALL ENTRIES IN i_record&lt;/P&gt;&lt;P&gt;        WHERE pernr = i_record-pernr&lt;/P&gt;&lt;P&gt;        AND begda LE i_record-begindate&lt;/P&gt;&lt;P&gt;        AND endda GE i_record-begindate .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          SORT it_pa0001 BY pernr.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*For all the records read from the application server file, get their hiring information&lt;/P&gt;&lt;P&gt;        SELECT pernr massn stat2 INTO TABLE it_pa0000&lt;/P&gt;&lt;P&gt;        FROM pa0000&lt;/P&gt;&lt;P&gt;        FOR ALL ENTRIES IN i_record&lt;/P&gt;&lt;P&gt;        WHERE pernr = i_record-pernr&lt;/P&gt;&lt;P&gt;        AND stat2 = '3'&lt;/P&gt;&lt;P&gt;        AND massn = '01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          SORT it_pa0000 BY pernr.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF i_record[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Open a new session.&lt;/P&gt;&lt;P&gt;        PERFORM open_group.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*loop at the internal table i_record&lt;/P&gt;&lt;P&gt;        LOOP AT i_record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          v_index = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          READ TABLE it_pa0000 WITH KEY pernr = i_record-pernr BINARY SEARCH.&lt;/P&gt;&lt;P&gt;*Check if the employee is hired and is active.&lt;/P&gt;&lt;P&gt;          IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*Get the personnel number into internal table i_pernr&lt;/P&gt;&lt;P&gt;            it_error_msg-pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;            it_error_msg-msg = 'Employee not hired or is in inactive status'.&lt;/P&gt;&lt;P&gt;            CONCATENATE i_record-pernr&lt;/P&gt;&lt;P&gt;                        i_record-begda&lt;/P&gt;&lt;P&gt;                        i_record-endda&lt;/P&gt;&lt;P&gt;                        i_record-subty&lt;/P&gt;&lt;P&gt;                        i_record-icnum&lt;/P&gt;&lt;P&gt;            INTO it_error_data-row&lt;/P&gt;&lt;P&gt;            SEPARATED BY '|'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*append the record&lt;/P&gt;&lt;P&gt;            APPEND it_error_msg.&lt;/P&gt;&lt;P&gt;            CLEAR it_error_msg.&lt;/P&gt;&lt;P&gt;            APPEND it_error_data.&lt;/P&gt;&lt;P&gt;            CLEAR it_error_data.&lt;/P&gt;&lt;P&gt;            DELETE i_record WHERE pernr = i_record-pernr .&lt;/P&gt;&lt;P&gt;            CONTINUE.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          READ TABLE it_pa0001 WITH KEY pernr = i_record-pernr BINARY SEARCH.&lt;/P&gt;&lt;P&gt;          IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*Check if the payroll area belongs to india&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           IF it_pa0001-abkrs NE 'TC' OR it_pa0001-bukrs NE 'TCSI'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            IF NOT ( it_pa0001-bukrs IN com_code ) .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Get the personnel number into internal table i_pernr&lt;/P&gt;&lt;P&gt;              it_error_msg-pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;              it_error_msg-msg = 'Invalid Payroll Area.'.&lt;/P&gt;&lt;P&gt;              CONCATENATE i_record-pernr&lt;/P&gt;&lt;P&gt;                          i_record-begda&lt;/P&gt;&lt;P&gt;                          i_record-endda&lt;/P&gt;&lt;P&gt;                          i_record-subty&lt;/P&gt;&lt;P&gt;                          i_record-icnum&lt;/P&gt;&lt;P&gt;              INTO it_error_data-row&lt;/P&gt;&lt;P&gt;              SEPARATED BY '|'.&lt;/P&gt;&lt;P&gt;*append the record&lt;/P&gt;&lt;P&gt;              APPEND it_error_msg.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_msg.&lt;/P&gt;&lt;P&gt;              APPEND it_error_data.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_data.&lt;/P&gt;&lt;P&gt;              DELETE i_record WHERE pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;              CONTINUE.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          IF i_record-subty = '02'.&lt;/P&gt;&lt;P&gt;            PERFORM pan_validation USING i_record-icnum CHANGING v_panflag.&lt;/P&gt;&lt;P&gt;            IF v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;*Get the personnel number into internal table i_pernr&lt;/P&gt;&lt;P&gt;              it_error_msg-pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;              it_error_msg-msg = 'Invalid PAN NO.'.&lt;/P&gt;&lt;P&gt;              CONCATENATE i_record-pernr&lt;/P&gt;&lt;P&gt;                          i_record-begda&lt;/P&gt;&lt;P&gt;                          i_record-endda&lt;/P&gt;&lt;P&gt;                          i_record-subty&lt;/P&gt;&lt;P&gt;                          i_record-icnum&lt;/P&gt;&lt;P&gt;              INTO it_error_data-row&lt;/P&gt;&lt;P&gt;              SEPARATED BY '|'.&lt;/P&gt;&lt;P&gt;*append the record&lt;/P&gt;&lt;P&gt;              APPEND it_error_msg.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_msg.&lt;/P&gt;&lt;P&gt;              APPEND it_error_data.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_data.&lt;/P&gt;&lt;P&gt;              DELETE i_record INDEX v_index.&lt;/P&gt;&lt;P&gt;              CONTINUE.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM bdc_dynpro      USING 'SAPMP50A' '1000'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                        '=INS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*INSERTING PERSONNEL NUMBER&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'RP50G-PERNR'&lt;/P&gt;&lt;P&gt;                                        i_record-pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                        'RP50G-SUBTY'.&lt;/P&gt;&lt;P&gt;*INSERTING INFOTYPE&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'RP50G-CHOIC'&lt;/P&gt;&lt;P&gt;                                         c_infotype.&lt;/P&gt;&lt;P&gt;*INSERTING SUBTYPE&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'RP50G-SUBTY'&lt;/P&gt;&lt;P&gt;                                        i_record-subty.&lt;/P&gt;&lt;P&gt;*FOR SA&lt;/P&gt;&lt;P&gt;          IF i_record-subty = '01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_dynpro      USING 'MP018500' '2040'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                          'P0185-AUTH1'.&lt;/P&gt;&lt;P&gt;&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;*INSERTING BEGIN DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-BEGDA'&lt;/P&gt;&lt;P&gt;                                          i_record-begda.&lt;/P&gt;&lt;P&gt;*INSERTING END DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ENDDA'&lt;/P&gt;&lt;P&gt;                                          i_record-endda.&lt;/P&gt;&lt;P&gt;*INSERTING THE SA IDENTITY NO&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ICNUM'&lt;/P&gt;&lt;P&gt;                                          i_record-icnum.&lt;/P&gt;&lt;P&gt;*INSERTING THE SA ID&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-AUTH1'&lt;/P&gt;&lt;P&gt;                                          'SATC'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*FOR PF&lt;/P&gt;&lt;P&gt;          ELSEIF i_record-subty = '02'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_dynpro      USING 'MP018500' '2240'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                          'P0185-ICNUM'.&lt;/P&gt;&lt;P&gt;&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;*INSERTING BEGIN DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-BEGDA'&lt;/P&gt;&lt;P&gt;                                          i_record-begda.&lt;/P&gt;&lt;P&gt;*INSERTING END DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ENDDA'&lt;/P&gt;&lt;P&gt;                                          i_record-endda.&lt;/P&gt;&lt;P&gt;*INSERTING THE PF IDENTITY NO&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ICNUM'&lt;/P&gt;&lt;P&gt;                                          i_record-icnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*FOR GRATUITY&lt;/P&gt;&lt;P&gt;          ELSEIF i_record-subty = '03'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_dynpro      USING 'MP018500' '2340'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                          'P0185-AUTH1'.&lt;/P&gt;&lt;P&gt;&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;*INSERTING BEGIN DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-BEGDA'&lt;/P&gt;&lt;P&gt;                                          i_record-begda.&lt;/P&gt;&lt;P&gt;*INSERTING END DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ENDDA'&lt;/P&gt;&lt;P&gt;                                          i_record-endda.&lt;/P&gt;&lt;P&gt;*INSERTING THE GRATUITY IDENTITY NO&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ICNUM'&lt;/P&gt;&lt;P&gt;                                          i_record-icnum.&lt;/P&gt;&lt;P&gt;*INSERTING THE GRATUITY ID&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-AUTH1'&lt;/P&gt;&lt;P&gt;                                           'GRTC'.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Insert the data from bdcdata table to the session&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          PERFORM bdc_insert.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialize the internal table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          REFRESH bdcdata.&lt;/P&gt;&lt;P&gt;          CLEAR : i_record.&lt;/P&gt;&lt;P&gt;          CLEAR : v_index .&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        PERFORM close_group.&lt;/P&gt;&lt;P&gt;  PERFORM submit_session.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF v_qid IS INITIAL.&lt;/P&gt;&lt;P&gt;        v_qid = '9999999999'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;*display the message that the session is created&lt;/P&gt;&lt;P&gt;      MOVE:  v_qid TO v_wa_zqid_filename-qid,&lt;/P&gt;&lt;P&gt;  	      lt_final_list-name TO v_wa_zqid_filename-filename,	&lt;/P&gt;&lt;P&gt;  	      lt_final_list-fullpath TO v_wa_zqid_filename-fullpath,	&lt;/P&gt;&lt;P&gt;  	      lt_final_list-name1 TO v_wa_zqid_filename-readpath,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           'TC' TO v_wa_zqid_filename-abkrs.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               com_code TO v_wa_zqid_filename-bukrs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      INSERT INTO zqid_filename VALUES v_wa_zqid_filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete the dataset that has been read.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      DELETE DATASET lt_final_list-fullpath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONCATENATE '\saplgc_IN\ERROR_LOG\' v_filename INTO v_filename.&lt;/P&gt;&lt;P&gt;      CONCATENATE '\saplgc_IN\ERROR_LOG\' v_filename1 INTO v_filename1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF it_error_msg[] IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Moving the error log data into application server location&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        OPEN DATASET v_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          LOOP AT it_error_msg.&lt;/P&gt;&lt;P&gt;            TRANSFER it_error_msg TO v_filename.&lt;/P&gt;&lt;P&gt;          ENDLOOP.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after writing the records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLOSE DATASET v_filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Moving the error data into application server location&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        OPEN DATASET v_filename1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          LOOP AT it_error_data.&lt;/P&gt;&lt;P&gt;            TRANSFER it_error_data TO v_filename1.&lt;/P&gt;&lt;P&gt;          ENDLOOP.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after writing the records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLOSE DATASET v_filename1.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      REFRESH : it_error_data,&lt;/P&gt;&lt;P&gt;                it_error_msg.&lt;/P&gt;&lt;P&gt;      CLEAR: v_qid,&lt;/P&gt;&lt;P&gt;  	    lt_final_list-name,&lt;/P&gt;&lt;P&gt;  	    lt_final_list-fullpath,&lt;/P&gt;&lt;P&gt;  	    lt_final_list-name1.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF NOT it_temp[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT it_temp.&lt;/P&gt;&lt;P&gt;*delete the dataset that has been read.&lt;/P&gt;&lt;P&gt;      DELETE DATASET it_temp-name.&lt;/P&gt;&lt;P&gt;      MESSAGE e000 WITH text-013.&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   OPEN DATASET i_final_list-name1 FOR OUTPUT IN TEXT MODE ENCODING&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*DEFAULT.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   IF sy-subrc = 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**looping at the internal table&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     LOOP AT  i_copy.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       TRANSFER  i_copy TO i_final_list-name1.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ENDLOOP.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Close the dataset after writing the  records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CLOSE DATASET i_final_list-name1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Delete the dataset that has been read.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   DELETE DATASET i_final_list-fullpath.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDLOOP.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**Get the name of the file into a variable&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; concatenate 'C:\Error_Pernr\IT0041_185ERR' sy-datum sy-UZEIT '.txt'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*into&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; v_filename.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Download the mismatching pernr into a separate flat file.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'GUI_DOWNLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILENAME                = v_filename&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DATA_TAB                = i_pernr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILE_WRITE_ERROR        = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     NO_BATCH                = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     GUI_REFUSE_FILETRANSFER = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     INVALID_TYPE            = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     NO_AUTHORITY            = 5&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     UNKNOWN_ERROR           = 6&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     HEADER_NOT_ALLOWED      = 7&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     SEPARATOR_NOT_ALLOWED   = 8&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILESIZE_NOT_ALLOWED    = 9&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     HEADER_TOO_LONG         = 10&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_ERROR_CREATE         = 11&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_ERROR_SEND           = 12&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_ERROR_WRITE          = 13&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     UNKNOWN_DP_ERROR        = 14&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ACCESS_DENIED           = 15&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_OUT_OF_MEMORY        = 16&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DISK_FULL               = 17&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_TIMEOUT              = 18&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILE_NOT_FOUND          = 19&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DATAPROVIDER_EXCEPTION  = 20&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CONTROL_FLUSH_ERROR     = 21&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     OTHERS                  = 22.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Return code check&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   message e000 with text-005.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Get the number of rows in the internal table i_pernr&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; describe table i_pernr lines v_count.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Check for the number of rows&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if v_count &amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Display message&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   message i000 with v_count text-006.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Display message that session has been created successfully.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; MESSAGE s000 WITH text-004 c_sesSION .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Subroutine for opening a new session.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*ENDLOOP.&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;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  open_group&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM open_group.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BDC_OPEN_GROUP'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      client              = sy-mandt&lt;/P&gt;&lt;P&gt;      group               = c_session&lt;/P&gt;&lt;P&gt;      keep                = 'X'&lt;/P&gt;&lt;P&gt;      user                = sy-uname&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      qid                 = v_qid&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      client_invalid      = 1&lt;/P&gt;&lt;P&gt;      destination_invalid = 2&lt;/P&gt;&lt;P&gt;      group_invalid       = 3&lt;/P&gt;&lt;P&gt;      group_is_locked     = 4&lt;/P&gt;&lt;P&gt;      holddate_invalid    = 5&lt;/P&gt;&lt;P&gt;      internal_error      = 6&lt;/P&gt;&lt;P&gt;      queue_error         = 7&lt;/P&gt;&lt;P&gt;      running             = 8&lt;/P&gt;&lt;P&gt;      system_lock_error   = 9&lt;/P&gt;&lt;P&gt;      user_invalid        = 10&lt;/P&gt;&lt;P&gt;      OTHERS              = 11.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    WRITE: / 'UNSUCESSFUL'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "open_group&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Start new screen                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_dynpro USING program dynpro.&lt;/P&gt;&lt;P&gt;  CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;  bdcdata-program  = program.&lt;/P&gt;&lt;P&gt;  bdcdata-dynpro   = dynpro.&lt;/P&gt;&lt;P&gt;  bdcdata-dynbegin = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_DYNPRO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Insert field                                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_field USING fnam fval.&lt;/P&gt;&lt;P&gt;  CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;  bdcdata-fnam = fnam.&lt;/P&gt;&lt;P&gt;  bdcdata-fval = fval.&lt;/P&gt;&lt;P&gt;  APPEND bdcdata.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  BDC_INSERT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Subroutine to insert the Internal Table BDCDATA into the session&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_insert.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BDC_INSERT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      tcode            = c_tcode                            "PA30&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      dynprotab        = bdcdata&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      internal_error   = 1&lt;/P&gt;&lt;P&gt;      not_open         = 2&lt;/P&gt;&lt;P&gt;      queue_error      = 3&lt;/P&gt;&lt;P&gt;      tcode_invalid    = 4&lt;/P&gt;&lt;P&gt;      printing_invalid = 5&lt;/P&gt;&lt;P&gt;      posting_invalid  = 6&lt;/P&gt;&lt;P&gt;      OTHERS           = 7.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_INSERT&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;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  CLOSE_GROUP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Subroutine for closing a session&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM close_group .&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BDC_CLOSE_GROUP'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_open    = 1&lt;/P&gt;&lt;P&gt;      queue_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS      = 3.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    WRITE: 'UNSUCCESSFUL'.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CLOSE_GROUP&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        END OF PROGRAM&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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  pan_validation&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;P_I_RECORD_ICNUM  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 pan_validation  USING    p_i_record_icnum&lt;/P&gt;&lt;P&gt;                     CHANGING v_panflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA : v_panno TYPE string ,&lt;/P&gt;&lt;P&gt;         v_panlen TYPE i,&lt;/P&gt;&lt;P&gt;         v_pan_alpha(6),&lt;/P&gt;&lt;P&gt;         v_pan_num(4).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA : c_alpha TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',&lt;/P&gt;&lt;P&gt;         c_numeric TYPE string VALUE '0123456789'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR : v_panflag.&lt;/P&gt;&lt;P&gt;*Get the PAN No into a string variable&lt;/P&gt;&lt;P&gt;  v_panno = i_record-icnum.&lt;/P&gt;&lt;P&gt;*Condense the string v_panno&lt;/P&gt;&lt;P&gt;  CONDENSE v_panno.&lt;/P&gt;&lt;P&gt;*Get the PAN NO length into a variable&lt;/P&gt;&lt;P&gt;  v_panlen = STRLEN( v_panno ).&lt;/P&gt;&lt;P&gt;*If the PAN No length is not 10&lt;/P&gt;&lt;P&gt;  IF v_panlen NE 10.&lt;/P&gt;&lt;P&gt;*Set the PAN flag&lt;/P&gt;&lt;P&gt;    v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;*Get the First five alphabets into v_pan_alpha&lt;/P&gt;&lt;P&gt;    v_pan_alpha = v_panno+0(5).&lt;/P&gt;&lt;P&gt;*Get the last alphabet into v_pan_alpha&lt;/P&gt;&lt;P&gt;    v_pan_alpha&lt;EM&gt;5(1) = v_panno&lt;/EM&gt;9(1).&lt;/P&gt;&lt;P&gt;*Get the numbers into v_pan_num&lt;/P&gt;&lt;P&gt;    v_pan_num = v_panno+5(4).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*IF v_pan_alpha contains literals other than alphabet&lt;/P&gt;&lt;P&gt;    IF v_pan_alpha CN c_alpha.&lt;/P&gt;&lt;P&gt;*Set the PAN flag&lt;/P&gt;&lt;P&gt;      v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;*IF v_pan_num contains non-numeric contants .&lt;/P&gt;&lt;P&gt;    ELSEIF v_pan_num CN c_numeric.&lt;/P&gt;&lt;P&gt;*Set the PAN flag&lt;/P&gt;&lt;P&gt;      v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  CLEAR : v_panno , v_panlen , v_pan_alpha , v_pan_num.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " pan_validation&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  submit_session&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;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        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 submit_session .&lt;/P&gt;&lt;P&gt;  DATA: v_date(10).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE sy-datum&lt;EM&gt;6(2) '.' sy-datum&lt;/EM&gt;4(2) '.' sy-datum+0(4)&lt;/P&gt;&lt;P&gt;              INTO v_date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SUBMIT zrsbdcsub USING SELECTION-SCREEN '1000'&lt;/P&gt;&lt;P&gt;                  WITH mappe EQ c_session&lt;/P&gt;&lt;P&gt;                  WITH von EQ sy-datum&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                 WITH bis EQ v_date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  WITH logall EQ 'X'&lt;/P&gt;&lt;P&gt;                  WITH z_verarb EQ 'X'&lt;/P&gt;&lt;P&gt;                  WITH fehler EQ ' '&lt;/P&gt;&lt;P&gt;                  AND RETURN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " submit_session&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;Sumanjeet.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 19 Dec 2007 10:10:24 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-12-19T10:10:24Z</dc:date>
    <item>
      <title>upload data</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/upload-data/m-p/3159012#M751500</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;can some one provide me a code sample for uploading data to all infotypes (a generic one ) using gui_upload and hr_infotype_operation fm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;ashok&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2007 09:55:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/upload-data/m-p/3159012#M751500</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-12-19T09:55:48Z</dc:date>
    </item>
    <item>
      <title>Re: upload data</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/upload-data/m-p/3159013#M751501</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;this is a sample code for uploading infotype 185.                                                                                &lt;/P&gt;&lt;P&gt;REPORT  zhrpyn_in_0185&lt;/P&gt;&lt;P&gt;NO STANDARD PAGE HEADING LINE-SIZE 255 MESSAGE-ID zhr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INCLUDE zhrpyr_in_screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*INTERNAL TABLE FOR INSERTING DATA INTO THE BDC SESSION&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF i_record OCCURS 0,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: PERNR_D&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       pernr(8),&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        pernr LIKE pa0185-pernr,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: SUBTY&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        subty(002),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: BEGDA&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        begda(010),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: ENDDA&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        endda(010),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: IDNUM&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        icnum(030),&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data element: FLAG&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        flag(1),&lt;/P&gt;&lt;P&gt;        begindate TYPE d,&lt;/P&gt;&lt;P&gt;      END OF i_record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     changed on 24.02.2006 CR::PADK904014&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal table for getting the files from the directory&lt;/P&gt;&lt;P&gt;DATA:  i_file_list TYPE epsfili  OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table for getting required files names from the retrieved flat file list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF lt_final_list OCCURS 0,&lt;/P&gt;&lt;P&gt;        date TYPE date, "sy-datum,&lt;/P&gt;&lt;P&gt;        time LIKE sy-timlo,&lt;/P&gt;&lt;P&gt;        name(80),&lt;/P&gt;&lt;P&gt;        name1(80),&lt;/P&gt;&lt;P&gt;        fullpath(85),&lt;/P&gt;&lt;P&gt;      END OF lt_final_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to store Error messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF it_error_msg OCCURS 0,&lt;/P&gt;&lt;P&gt;        pernr(10) TYPE c,&lt;/P&gt;&lt;P&gt;        msg(255) TYPE c,&lt;/P&gt;&lt;P&gt;END OF it_error_msg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to store payroll area information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA :BEGIN OF it_pa0001 OCCURS 0,&lt;/P&gt;&lt;P&gt;        pernr TYPE pa0001-pernr,&lt;/P&gt;&lt;P&gt;        abkrs TYPE pa0001-abkrs,&lt;/P&gt;&lt;P&gt;        bukrs TYPE pa0001-bukrs,&lt;/P&gt;&lt;P&gt;END OF it_pa0001.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to store hiring action data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF it_pa0000 OCCURS 0,&lt;/P&gt;&lt;P&gt;        pernr LIKE pa0000-pernr,&lt;/P&gt;&lt;P&gt;        massn LIKE pa0000-massn,&lt;/P&gt;&lt;P&gt;        stat2 LIKE pa0000-stat2,&lt;/P&gt;&lt;P&gt;END OF it_pa0000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to Error data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF it_error_data OCCURS 0,&lt;/P&gt;&lt;P&gt;        row(600),&lt;/P&gt;&lt;P&gt;      END OF it_error_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal table to store error files&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF it_temp OCCURS 0,&lt;/P&gt;&lt;P&gt;        name(85),	&lt;/P&gt;&lt;P&gt;       END OF it_temp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal table for storing the incorrect personnel number&lt;/P&gt;&lt;P&gt;DATA :BEGIN OF i_pernr OCCURS 0,&lt;/P&gt;&lt;P&gt;      pernr(5000),&lt;/P&gt;&lt;P&gt;      END OF i_pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Internal Table for Upload of records from flat file.&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF i_copy OCCURS 0,&lt;/P&gt;&lt;P&gt;          row(600) TYPE c,&lt;/P&gt;&lt;P&gt;       END OF i_copy.&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF i_table OCCURS 0,&lt;/P&gt;&lt;P&gt;          row(600) TYPE c,&lt;/P&gt;&lt;P&gt;       END OF i_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Standard Table used for Batch Input Processing.&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF bdcdata OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE bdcdata.&lt;/P&gt;&lt;P&gt;DATA : END OF bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Variables.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA : v_len TYPE i,&lt;/P&gt;&lt;P&gt;       v_head(1) TYPE c,&lt;/P&gt;&lt;P&gt;       v_date TYPE string,&lt;/P&gt;&lt;P&gt;       v_nor(10) TYPE c,&lt;/P&gt;&lt;P&gt;       v_space  TYPE string,&lt;/P&gt;&lt;P&gt;       v_thead(1) TYPE c,&lt;/P&gt;&lt;P&gt;       v_tdate TYPE string,&lt;/P&gt;&lt;P&gt;       v_tnor(10) TYPE c,&lt;/P&gt;&lt;P&gt;       v_tspace  TYPE string,&lt;/P&gt;&lt;P&gt;       v_abkrs(2),&lt;/P&gt;&lt;P&gt;       v_begda(8),&lt;/P&gt;&lt;P&gt;       v_count(10) TYPE n,&lt;/P&gt;&lt;P&gt;       v_pernr_1(8),&lt;/P&gt;&lt;P&gt;       v_date_c TYPE d,&lt;/P&gt;&lt;P&gt;       v_begindate TYPE sy-datum,&lt;/P&gt;&lt;P&gt;       v_qid LIKE apqi-qid, " to store the QID&lt;/P&gt;&lt;P&gt;       v_f_n TYPE string,&lt;/P&gt;&lt;P&gt;       v_f_e TYPE string,&lt;/P&gt;&lt;P&gt;       v_filename TYPE rlgrap-filename, " for download the error pernr&lt;/P&gt;&lt;P&gt;       v_filename1 TYPE rlgrap-filename, " for download the error pernr&lt;/P&gt;&lt;P&gt;       v_wa_zqid_filename LIKE zqid_filename,&lt;/P&gt;&lt;P&gt;       v_panflag,&lt;/P&gt;&lt;P&gt;       v_index TYPE i.&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;/P&gt;&lt;P&gt;*Constants&lt;/P&gt;&lt;P&gt;DATA : c_session TYPE d0100-mapn VALUE 'ZHRPY_185',&lt;/P&gt;&lt;P&gt;       c_tcode LIKE tstc-tcode VALUE 'PA30',&lt;/P&gt;&lt;P&gt;       c_infotype(4) VALUE '0185'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Function for uploading the files from the application server&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      dir_name               = '\lgcsap_IN\IT0185'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      dir_list               = i_file_list&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      invalid_eps_subdir     = 1&lt;/P&gt;&lt;P&gt;      sapgparam_failed       = 2&lt;/P&gt;&lt;P&gt;      build_directory_failed = 3&lt;/P&gt;&lt;P&gt;      no_authorization       = 4&lt;/P&gt;&lt;P&gt;      read_directory_failed  = 5&lt;/P&gt;&lt;P&gt;      too_many_read_errors   = 6&lt;/P&gt;&lt;P&gt;      empty_directory_list   = 7&lt;/P&gt;&lt;P&gt;      OTHERS                 = 8.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code check&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE e000 WITH 'Location Invalid'.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get all the file names based on timstamp.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT i_file_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Copy file name into the final internal table&lt;/P&gt;&lt;P&gt;    MOVE i_file_list-name TO lt_final_list-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Assuming files are txt&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SEARCH  i_file_list-name FOR '.txt'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Return Code Check&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Search for the file name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SEARCH i_file_list-name FOR 'LGCSAPINPIT0185'		&lt;/P&gt;&lt;P&gt;                     STARTING AT 1&lt;/P&gt;&lt;P&gt;                     ENDING AT 15.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return code Check&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CONCATENATE '\lgcsap_IN\IT0185\' i_file_list-name INTO it_temp-name.&lt;/P&gt;&lt;P&gt;        APPEND it_temp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Displaying the error message&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       MESSAGE e000 WITH 'File Not Found'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;*code to change date format from ddmmyy to yymmdd for sorting&lt;/P&gt;&lt;P&gt;        v_date_c = i_file_list-name+15(8).&lt;/P&gt;&lt;P&gt;        CONCATENATE v_date_c&lt;EM&gt;4(4) v_date_c&lt;/EM&gt;2(2) v_date_c+0(2) INTO&lt;/P&gt;&lt;P&gt;        lt_final_list-date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Getting the time date value&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        lt_final_list-time = i_file_list-name+23(6).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Concatenate the text to get the input file name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CONCATENATE '\lgcsap_IN\IT0185' lt_final_list-name INTO&lt;/P&gt;&lt;P&gt;             lt_final_list-fullpath SEPARATED BY '\'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Concatenate the text to get the output file name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CONCATENATE '\lgcsapREAD_IN\IT0185_READ' lt_final_list-name&lt;/P&gt;&lt;P&gt;        INTO  lt_final_list-name1 SEPARATED BY '\'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Append the list.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        APPEND lt_final_list.&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;&lt;/P&gt;&lt;P&gt;  IF lt_final_list[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE i000 WITH text-012.&lt;/P&gt;&lt;P&gt;    LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sort the table by Date and Time.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SORT lt_final_list BY date ASCENDING time ASCENDING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get all files selected&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT lt_final_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialize the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR:  i_copy,&lt;/P&gt;&lt;P&gt;              i_record,&lt;/P&gt;&lt;P&gt;              v_filename,&lt;/P&gt;&lt;P&gt;              v_filename1,&lt;/P&gt;&lt;P&gt;              v_f_n,&lt;/P&gt;&lt;P&gt;              v_f_e.&lt;/P&gt;&lt;P&gt;      REFRESH:  i_copy,i_record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SPLIT lt_final_list-name AT '.' INTO v_f_n&lt;/P&gt;&lt;P&gt;                                           v_f_e.&lt;/P&gt;&lt;P&gt;      CONCATENATE v_f_n '_ERR.txt' INTO v_filename.&lt;/P&gt;&lt;P&gt;      v_filename1 = lt_final_list-name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For uploading the flat file from application server.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      OPEN DATASET lt_final_list-fullpath FOR INPUT IN TEXT  MODE ENCODING  DEFAULT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return code Check&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Display the error message that file cannot be opened.&lt;/P&gt;&lt;P&gt;        MESSAGE e000 WITH 'File cannot be opened'.&lt;/P&gt;&lt;P&gt;        STOP.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        DO.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read The records from the flat file into internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          READ DATASET lt_final_list-fullpath INTO  i_copy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF sy-subrc NE 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;*Append the records&lt;/P&gt;&lt;P&gt;            APPEND  i_copy.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDDO.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after reading the records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLOSE DATASET lt_final_list-fullpath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Moving the flat file into another folder&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      OPEN DATASET lt_final_list-name1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*looping at the internal table&lt;/P&gt;&lt;P&gt;        LOOP AT  i_copy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          TRANSFER  i_copy TO lt_final_list-name1.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after writing the  records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLOSE DATASET lt_final_list-name1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Return code check&lt;/P&gt;&lt;P&gt;      IF sy-subrc  = 0 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To get the number of lines in the internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DESCRIBE TABLE i_copy LINES v_len.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To separate the data into Header, Actual data and Trailer records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        LOOP AT i_copy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*To separate the header record.&lt;/P&gt;&lt;P&gt;          IF sy-tabix = 1 AND i_copy-row+0(1) = 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Split the header data into respective fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            SPLIT i_copy AT '|' INTO  v_head&lt;/P&gt;&lt;P&gt;                                      v_date&lt;/P&gt;&lt;P&gt;                                      v_nor&lt;/P&gt;&lt;P&gt;                                      v_space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Header Records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            WRITE: 'HEADER RECORDS'.&lt;/P&gt;&lt;P&gt;            WRITE: / v_head,&lt;/P&gt;&lt;P&gt;                     v_date,&lt;/P&gt;&lt;P&gt;                     v_nor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To separate the trailer records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          ELSEIF sy-tabix = v_len AND i_copy-row+0(1) = 'T'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Split the Trailer data into respective fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            SPLIT i_copy AT '|' INTO   v_thead&lt;/P&gt;&lt;P&gt;                                       v_tdate&lt;/P&gt;&lt;P&gt;                                       v_tnor&lt;/P&gt;&lt;P&gt;                                       v_tspace.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Trailer Records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            WRITE: / 'TRAILER RECORDS'.&lt;/P&gt;&lt;P&gt;            WRITE: / v_thead,&lt;/P&gt;&lt;P&gt;                     v_tdate,&lt;/P&gt;&lt;P&gt;                     v_tnor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To separate the actual records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Split the Actual data into respective fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            SPLIT i_copy AT '|' INTO  i_record-pernr&lt;/P&gt;&lt;P&gt;                                      i_record-begda&lt;/P&gt;&lt;P&gt;                                      i_record-endda&lt;/P&gt;&lt;P&gt;                                      i_record-subty&lt;/P&gt;&lt;P&gt;                                      i_record-icnum.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            WRITE: / i_record-pernr,&lt;/P&gt;&lt;P&gt;                     i_record-begda,&lt;/P&gt;&lt;P&gt;                     i_record-endda,&lt;/P&gt;&lt;P&gt;                     i_record-subty,&lt;/P&gt;&lt;P&gt;                     i_record-icnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'&lt;/P&gt;&lt;P&gt;              EXPORTING&lt;/P&gt;&lt;P&gt;                input  = i_record-pernr&lt;/P&gt;&lt;P&gt;              IMPORTING&lt;/P&gt;&lt;P&gt;                output = i_record-pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            CONCATENATE i_record-begda+6(4)&lt;/P&gt;&lt;P&gt;                                  i_record-begda+3(2)&lt;/P&gt;&lt;P&gt;                                 i_record-begda+0(2)&lt;/P&gt;&lt;P&gt;                     INTO i_record-begindate .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Append the records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            APPEND i_record.&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;&lt;/P&gt;&lt;P&gt;*Check if the number of rows in header &amp;amp; trailer r same.&lt;/P&gt;&lt;P&gt;      IF v_nor &amp;lt;&amp;gt; v_tnor .&lt;/P&gt;&lt;P&gt;*Display error message.&lt;/P&gt;&lt;P&gt;        MESSAGE e000 WITH text-000.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF i_record[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;*For all the records read from the application server file, get their payroll area from table PA0001.&lt;/P&gt;&lt;P&gt;        SELECT pernr abkrs bukrs INTO TABLE it_pa0001&lt;/P&gt;&lt;P&gt;        FROM pa0001&lt;/P&gt;&lt;P&gt;        FOR ALL ENTRIES IN i_record&lt;/P&gt;&lt;P&gt;        WHERE pernr = i_record-pernr&lt;/P&gt;&lt;P&gt;        AND begda LE i_record-begindate&lt;/P&gt;&lt;P&gt;        AND endda GE i_record-begindate .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          SORT it_pa0001 BY pernr.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*For all the records read from the application server file, get their hiring information&lt;/P&gt;&lt;P&gt;        SELECT pernr massn stat2 INTO TABLE it_pa0000&lt;/P&gt;&lt;P&gt;        FROM pa0000&lt;/P&gt;&lt;P&gt;        FOR ALL ENTRIES IN i_record&lt;/P&gt;&lt;P&gt;        WHERE pernr = i_record-pernr&lt;/P&gt;&lt;P&gt;        AND stat2 = '3'&lt;/P&gt;&lt;P&gt;        AND massn = '01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          SORT it_pa0000 BY pernr.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF i_record[] IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Open a new session.&lt;/P&gt;&lt;P&gt;        PERFORM open_group.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*loop at the internal table i_record&lt;/P&gt;&lt;P&gt;        LOOP AT i_record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          v_index = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          READ TABLE it_pa0000 WITH KEY pernr = i_record-pernr BINARY SEARCH.&lt;/P&gt;&lt;P&gt;*Check if the employee is hired and is active.&lt;/P&gt;&lt;P&gt;          IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;*Get the personnel number into internal table i_pernr&lt;/P&gt;&lt;P&gt;            it_error_msg-pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;            it_error_msg-msg = 'Employee not hired or is in inactive status'.&lt;/P&gt;&lt;P&gt;            CONCATENATE i_record-pernr&lt;/P&gt;&lt;P&gt;                        i_record-begda&lt;/P&gt;&lt;P&gt;                        i_record-endda&lt;/P&gt;&lt;P&gt;                        i_record-subty&lt;/P&gt;&lt;P&gt;                        i_record-icnum&lt;/P&gt;&lt;P&gt;            INTO it_error_data-row&lt;/P&gt;&lt;P&gt;            SEPARATED BY '|'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*append the record&lt;/P&gt;&lt;P&gt;            APPEND it_error_msg.&lt;/P&gt;&lt;P&gt;            CLEAR it_error_msg.&lt;/P&gt;&lt;P&gt;            APPEND it_error_data.&lt;/P&gt;&lt;P&gt;            CLEAR it_error_data.&lt;/P&gt;&lt;P&gt;            DELETE i_record WHERE pernr = i_record-pernr .&lt;/P&gt;&lt;P&gt;            CONTINUE.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          READ TABLE it_pa0001 WITH KEY pernr = i_record-pernr BINARY SEARCH.&lt;/P&gt;&lt;P&gt;          IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;*Check if the payroll area belongs to india&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           IF it_pa0001-abkrs NE 'TC' OR it_pa0001-bukrs NE 'TCSI'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            IF NOT ( it_pa0001-bukrs IN com_code ) .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Get the personnel number into internal table i_pernr&lt;/P&gt;&lt;P&gt;              it_error_msg-pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;              it_error_msg-msg = 'Invalid Payroll Area.'.&lt;/P&gt;&lt;P&gt;              CONCATENATE i_record-pernr&lt;/P&gt;&lt;P&gt;                          i_record-begda&lt;/P&gt;&lt;P&gt;                          i_record-endda&lt;/P&gt;&lt;P&gt;                          i_record-subty&lt;/P&gt;&lt;P&gt;                          i_record-icnum&lt;/P&gt;&lt;P&gt;              INTO it_error_data-row&lt;/P&gt;&lt;P&gt;              SEPARATED BY '|'.&lt;/P&gt;&lt;P&gt;*append the record&lt;/P&gt;&lt;P&gt;              APPEND it_error_msg.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_msg.&lt;/P&gt;&lt;P&gt;              APPEND it_error_data.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_data.&lt;/P&gt;&lt;P&gt;              DELETE i_record WHERE pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;              CONTINUE.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          IF i_record-subty = '02'.&lt;/P&gt;&lt;P&gt;            PERFORM pan_validation USING i_record-icnum CHANGING v_panflag.&lt;/P&gt;&lt;P&gt;            IF v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;*Get the personnel number into internal table i_pernr&lt;/P&gt;&lt;P&gt;              it_error_msg-pernr = i_record-pernr.&lt;/P&gt;&lt;P&gt;              it_error_msg-msg = 'Invalid PAN NO.'.&lt;/P&gt;&lt;P&gt;              CONCATENATE i_record-pernr&lt;/P&gt;&lt;P&gt;                          i_record-begda&lt;/P&gt;&lt;P&gt;                          i_record-endda&lt;/P&gt;&lt;P&gt;                          i_record-subty&lt;/P&gt;&lt;P&gt;                          i_record-icnum&lt;/P&gt;&lt;P&gt;              INTO it_error_data-row&lt;/P&gt;&lt;P&gt;              SEPARATED BY '|'.&lt;/P&gt;&lt;P&gt;*append the record&lt;/P&gt;&lt;P&gt;              APPEND it_error_msg.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_msg.&lt;/P&gt;&lt;P&gt;              APPEND it_error_data.&lt;/P&gt;&lt;P&gt;              CLEAR it_error_data.&lt;/P&gt;&lt;P&gt;              DELETE i_record INDEX v_index.&lt;/P&gt;&lt;P&gt;              CONTINUE.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM bdc_dynpro      USING 'SAPMP50A' '1000'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'BDC_OKCODE'&lt;/P&gt;&lt;P&gt;                                        '=INS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*INSERTING PERSONNEL NUMBER&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'RP50G-PERNR'&lt;/P&gt;&lt;P&gt;                                        i_record-pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                        'RP50G-SUBTY'.&lt;/P&gt;&lt;P&gt;*INSERTING INFOTYPE&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'RP50G-CHOIC'&lt;/P&gt;&lt;P&gt;                                         c_infotype.&lt;/P&gt;&lt;P&gt;*INSERTING SUBTYPE&lt;/P&gt;&lt;P&gt;          PERFORM bdc_field       USING 'RP50G-SUBTY'&lt;/P&gt;&lt;P&gt;                                        i_record-subty.&lt;/P&gt;&lt;P&gt;*FOR SA&lt;/P&gt;&lt;P&gt;          IF i_record-subty = '01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_dynpro      USING 'MP018500' '2040'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                          'P0185-AUTH1'.&lt;/P&gt;&lt;P&gt;&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;*INSERTING BEGIN DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-BEGDA'&lt;/P&gt;&lt;P&gt;                                          i_record-begda.&lt;/P&gt;&lt;P&gt;*INSERTING END DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ENDDA'&lt;/P&gt;&lt;P&gt;                                          i_record-endda.&lt;/P&gt;&lt;P&gt;*INSERTING THE SA IDENTITY NO&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ICNUM'&lt;/P&gt;&lt;P&gt;                                          i_record-icnum.&lt;/P&gt;&lt;P&gt;*INSERTING THE SA ID&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-AUTH1'&lt;/P&gt;&lt;P&gt;                                          'SATC'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*FOR PF&lt;/P&gt;&lt;P&gt;          ELSEIF i_record-subty = '02'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_dynpro      USING 'MP018500' '2240'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                          'P0185-ICNUM'.&lt;/P&gt;&lt;P&gt;&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;*INSERTING BEGIN DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-BEGDA'&lt;/P&gt;&lt;P&gt;                                          i_record-begda.&lt;/P&gt;&lt;P&gt;*INSERTING END DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ENDDA'&lt;/P&gt;&lt;P&gt;                                          i_record-endda.&lt;/P&gt;&lt;P&gt;*INSERTING THE PF IDENTITY NO&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ICNUM'&lt;/P&gt;&lt;P&gt;                                          i_record-icnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*FOR GRATUITY&lt;/P&gt;&lt;P&gt;          ELSEIF i_record-subty = '03'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_dynpro      USING 'MP018500' '2340'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'BDC_CURSOR'&lt;/P&gt;&lt;P&gt;                                          'P0185-AUTH1'.&lt;/P&gt;&lt;P&gt;&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;*INSERTING BEGIN DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-BEGDA'&lt;/P&gt;&lt;P&gt;                                          i_record-begda.&lt;/P&gt;&lt;P&gt;*INSERTING END DATE&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ENDDA'&lt;/P&gt;&lt;P&gt;                                          i_record-endda.&lt;/P&gt;&lt;P&gt;*INSERTING THE GRATUITY IDENTITY NO&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-ICNUM'&lt;/P&gt;&lt;P&gt;                                          i_record-icnum.&lt;/P&gt;&lt;P&gt;*INSERTING THE GRATUITY ID&lt;/P&gt;&lt;P&gt;            PERFORM bdc_field       USING 'P0185-AUTH1'&lt;/P&gt;&lt;P&gt;                                           'GRTC'.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Insert the data from bdcdata table to the session&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          PERFORM bdc_insert.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialize the internal table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          REFRESH bdcdata.&lt;/P&gt;&lt;P&gt;          CLEAR : i_record.&lt;/P&gt;&lt;P&gt;          CLEAR : v_index .&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        PERFORM close_group.&lt;/P&gt;&lt;P&gt;  PERFORM submit_session.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF v_qid IS INITIAL.&lt;/P&gt;&lt;P&gt;        v_qid = '9999999999'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;*display the message that the session is created&lt;/P&gt;&lt;P&gt;      MOVE:  v_qid TO v_wa_zqid_filename-qid,&lt;/P&gt;&lt;P&gt;  	      lt_final_list-name TO v_wa_zqid_filename-filename,	&lt;/P&gt;&lt;P&gt;  	      lt_final_list-fullpath TO v_wa_zqid_filename-fullpath,	&lt;/P&gt;&lt;P&gt;  	      lt_final_list-name1 TO v_wa_zqid_filename-readpath,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           'TC' TO v_wa_zqid_filename-abkrs.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               com_code TO v_wa_zqid_filename-bukrs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      INSERT INTO zqid_filename VALUES v_wa_zqid_filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete the dataset that has been read.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      DELETE DATASET lt_final_list-fullpath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONCATENATE '\saplgc_IN\ERROR_LOG\' v_filename INTO v_filename.&lt;/P&gt;&lt;P&gt;      CONCATENATE '\saplgc_IN\ERROR_LOG\' v_filename1 INTO v_filename1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF it_error_msg[] IS NOT INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Moving the error log data into application server location&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        OPEN DATASET v_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          LOOP AT it_error_msg.&lt;/P&gt;&lt;P&gt;            TRANSFER it_error_msg TO v_filename.&lt;/P&gt;&lt;P&gt;          ENDLOOP.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after writing the records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLOSE DATASET v_filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Moving the error data into application server location&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        OPEN DATASET v_filename1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          LOOP AT it_error_data.&lt;/P&gt;&lt;P&gt;            TRANSFER it_error_data TO v_filename1.&lt;/P&gt;&lt;P&gt;          ENDLOOP.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Close the dataset after writing the records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        CLOSE DATASET v_filename1.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      REFRESH : it_error_data,&lt;/P&gt;&lt;P&gt;                it_error_msg.&lt;/P&gt;&lt;P&gt;      CLEAR: v_qid,&lt;/P&gt;&lt;P&gt;  	    lt_final_list-name,&lt;/P&gt;&lt;P&gt;  	    lt_final_list-fullpath,&lt;/P&gt;&lt;P&gt;  	    lt_final_list-name1.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF NOT it_temp[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT it_temp.&lt;/P&gt;&lt;P&gt;*delete the dataset that has been read.&lt;/P&gt;&lt;P&gt;      DELETE DATASET it_temp-name.&lt;/P&gt;&lt;P&gt;      MESSAGE e000 WITH text-013.&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   OPEN DATASET i_final_list-name1 FOR OUTPUT IN TEXT MODE ENCODING&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*DEFAULT.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   IF sy-subrc = 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**looping at the internal table&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     LOOP AT  i_copy.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Transfer the file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       TRANSFER  i_copy TO i_final_list-name1.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ENDLOOP.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Close the dataset after writing the  records.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CLOSE DATASET i_final_list-name1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Delete the dataset that has been read.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   DELETE DATASET i_final_list-fullpath.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDLOOP.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**Get the name of the file into a variable&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; concatenate 'C:\Error_Pernr\IT0041_185ERR' sy-datum sy-UZEIT '.txt'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*into&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; v_filename.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Download the mismatching pernr into a separate flat file.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'GUI_DOWNLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILENAME                = v_filename&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DATA_TAB                = i_pernr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILE_WRITE_ERROR        = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     NO_BATCH                = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     GUI_REFUSE_FILETRANSFER = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     INVALID_TYPE            = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     NO_AUTHORITY            = 5&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     UNKNOWN_ERROR           = 6&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     HEADER_NOT_ALLOWED      = 7&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     SEPARATOR_NOT_ALLOWED   = 8&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILESIZE_NOT_ALLOWED    = 9&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     HEADER_TOO_LONG         = 10&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_ERROR_CREATE         = 11&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_ERROR_SEND           = 12&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_ERROR_WRITE          = 13&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     UNKNOWN_DP_ERROR        = 14&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ACCESS_DENIED           = 15&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_OUT_OF_MEMORY        = 16&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DISK_FULL               = 17&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DP_TIMEOUT              = 18&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FILE_NOT_FOUND          = 19&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DATAPROVIDER_EXCEPTION  = 20&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CONTROL_FLUSH_ERROR     = 21&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     OTHERS                  = 22.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Return code check&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   message e000 with text-005.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Get the number of rows in the internal table i_pernr&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; describe table i_pernr lines v_count.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Check for the number of rows&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if v_count &amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Display message&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   message i000 with v_count text-006.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;**Display message that session has been created successfully.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; MESSAGE s000 WITH text-004 c_sesSION .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Subroutine for opening a new session.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*ENDLOOP.&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;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  open_group&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM open_group.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BDC_OPEN_GROUP'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      client              = sy-mandt&lt;/P&gt;&lt;P&gt;      group               = c_session&lt;/P&gt;&lt;P&gt;      keep                = 'X'&lt;/P&gt;&lt;P&gt;      user                = sy-uname&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      qid                 = v_qid&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      client_invalid      = 1&lt;/P&gt;&lt;P&gt;      destination_invalid = 2&lt;/P&gt;&lt;P&gt;      group_invalid       = 3&lt;/P&gt;&lt;P&gt;      group_is_locked     = 4&lt;/P&gt;&lt;P&gt;      holddate_invalid    = 5&lt;/P&gt;&lt;P&gt;      internal_error      = 6&lt;/P&gt;&lt;P&gt;      queue_error         = 7&lt;/P&gt;&lt;P&gt;      running             = 8&lt;/P&gt;&lt;P&gt;      system_lock_error   = 9&lt;/P&gt;&lt;P&gt;      user_invalid        = 10&lt;/P&gt;&lt;P&gt;      OTHERS              = 11.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    WRITE: / 'UNSUCESSFUL'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "open_group&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Start new screen                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_dynpro USING program dynpro.&lt;/P&gt;&lt;P&gt;  CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;  bdcdata-program  = program.&lt;/P&gt;&lt;P&gt;  bdcdata-dynpro   = dynpro.&lt;/P&gt;&lt;P&gt;  bdcdata-dynbegin = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_DYNPRO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Insert field                                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_field USING fnam fval.&lt;/P&gt;&lt;P&gt;  CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;  bdcdata-fnam = fnam.&lt;/P&gt;&lt;P&gt;  bdcdata-fval = fval.&lt;/P&gt;&lt;P&gt;  APPEND bdcdata.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  BDC_INSERT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Subroutine to insert the Internal Table BDCDATA into the session&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM bdc_insert.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BDC_INSERT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      tcode            = c_tcode                            "PA30&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      dynprotab        = bdcdata&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      internal_error   = 1&lt;/P&gt;&lt;P&gt;      not_open         = 2&lt;/P&gt;&lt;P&gt;      queue_error      = 3&lt;/P&gt;&lt;P&gt;      tcode_invalid    = 4&lt;/P&gt;&lt;P&gt;      printing_invalid = 5&lt;/P&gt;&lt;P&gt;      posting_invalid  = 6&lt;/P&gt;&lt;P&gt;      OTHERS           = 7.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "BDC_INSERT&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;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  CLOSE_GROUP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Subroutine for closing a session&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM close_group .&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BDC_CLOSE_GROUP'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      not_open    = 1&lt;/P&gt;&lt;P&gt;      queue_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS      = 3.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Return Code Check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    WRITE: 'UNSUCCESSFUL'.&lt;/P&gt;&lt;P&gt;    STOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CLOSE_GROUP&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        END OF PROGRAM&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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  pan_validation&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;P_I_RECORD_ICNUM  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 pan_validation  USING    p_i_record_icnum&lt;/P&gt;&lt;P&gt;                     CHANGING v_panflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA : v_panno TYPE string ,&lt;/P&gt;&lt;P&gt;         v_panlen TYPE i,&lt;/P&gt;&lt;P&gt;         v_pan_alpha(6),&lt;/P&gt;&lt;P&gt;         v_pan_num(4).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA : c_alpha TYPE string VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',&lt;/P&gt;&lt;P&gt;         c_numeric TYPE string VALUE '0123456789'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR : v_panflag.&lt;/P&gt;&lt;P&gt;*Get the PAN No into a string variable&lt;/P&gt;&lt;P&gt;  v_panno = i_record-icnum.&lt;/P&gt;&lt;P&gt;*Condense the string v_panno&lt;/P&gt;&lt;P&gt;  CONDENSE v_panno.&lt;/P&gt;&lt;P&gt;*Get the PAN NO length into a variable&lt;/P&gt;&lt;P&gt;  v_panlen = STRLEN( v_panno ).&lt;/P&gt;&lt;P&gt;*If the PAN No length is not 10&lt;/P&gt;&lt;P&gt;  IF v_panlen NE 10.&lt;/P&gt;&lt;P&gt;*Set the PAN flag&lt;/P&gt;&lt;P&gt;    v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;*Get the First five alphabets into v_pan_alpha&lt;/P&gt;&lt;P&gt;    v_pan_alpha = v_panno+0(5).&lt;/P&gt;&lt;P&gt;*Get the last alphabet into v_pan_alpha&lt;/P&gt;&lt;P&gt;    v_pan_alpha&lt;EM&gt;5(1) = v_panno&lt;/EM&gt;9(1).&lt;/P&gt;&lt;P&gt;*Get the numbers into v_pan_num&lt;/P&gt;&lt;P&gt;    v_pan_num = v_panno+5(4).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*IF v_pan_alpha contains literals other than alphabet&lt;/P&gt;&lt;P&gt;    IF v_pan_alpha CN c_alpha.&lt;/P&gt;&lt;P&gt;*Set the PAN flag&lt;/P&gt;&lt;P&gt;      v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;*IF v_pan_num contains non-numeric contants .&lt;/P&gt;&lt;P&gt;    ELSEIF v_pan_num CN c_numeric.&lt;/P&gt;&lt;P&gt;*Set the PAN flag&lt;/P&gt;&lt;P&gt;      v_panflag = 'Y'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  CLEAR : v_panno , v_panlen , v_pan_alpha , v_pan_num.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " pan_validation&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  submit_session&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;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        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 submit_session .&lt;/P&gt;&lt;P&gt;  DATA: v_date(10).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE sy-datum&lt;EM&gt;6(2) '.' sy-datum&lt;/EM&gt;4(2) '.' sy-datum+0(4)&lt;/P&gt;&lt;P&gt;              INTO v_date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SUBMIT zrsbdcsub USING SELECTION-SCREEN '1000'&lt;/P&gt;&lt;P&gt;                  WITH mappe EQ c_session&lt;/P&gt;&lt;P&gt;                  WITH von EQ sy-datum&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                 WITH bis EQ v_date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  WITH logall EQ 'X'&lt;/P&gt;&lt;P&gt;                  WITH z_verarb EQ 'X'&lt;/P&gt;&lt;P&gt;                  WITH fehler EQ ' '&lt;/P&gt;&lt;P&gt;                  AND RETURN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " submit_session&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;Sumanjeet.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2007 10:10:24 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/upload-data/m-p/3159013#M751501</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-12-19T10:10:24Z</dc:date>
    </item>
  </channel>
</rss>

