<?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: bapi for infotypes in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480405#M1060915</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;just create a message class and text according to the code as follows (copy and paste in se 38)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ZCHR007_01 NO STANDARD PAGE HEADING MESSAGE-ID ZHR LINE-COUNT 65(8) LINE-SIZE 180.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES : PA0003, P0000,P0006,T005S,T005,T591A.                                                     " TABLES REQUIRED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         *INTERNAL TABLE AND WORK AREA WITH STRUCTURE ON BASIS FLAT FILE DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES : BEGIN     OF       x_flat_infotype,                                                        "Flat file structure&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Screen data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERNR    TYPE     PERSNO,                                                                  "Personal Number&lt;/P&gt;&lt;P&gt;        BEGDA    TYPE     BEGDA,                                                                   "Begin Date&lt;/P&gt;&lt;P&gt;        ENDDA    TYPE     ENDDA,                                                                   "End Date&lt;/P&gt;&lt;P&gt;        ANSSA    TYPE     ANSSA,                                                                   "Address Record Type&lt;/P&gt;&lt;P&gt;        STRAS    TYPE     PAD_STRAS,                                                               "House number and street&lt;/P&gt;&lt;P&gt;        LOCAT    TYPE     PAD_LOCAT,                                                               "2nd Address Line&lt;/P&gt;&lt;P&gt;        PSTLZ    TYPE     PSTLZ_HR,                                                                "Postal Code&lt;/P&gt;&lt;P&gt;        ORT01    TYPE     PAD_ORT01,                                                               "City&lt;/P&gt;&lt;P&gt;        ORT02    TYPE     PAD_ORT02,                                                                   "District&lt;/P&gt;&lt;P&gt;        STATE    TYPE     REGIO,                                                                   "State&lt;/P&gt;&lt;P&gt;        land1    TYPE     land1,                                                                   "Country&lt;/P&gt;&lt;P&gt;        telnr    TYPE     telnr,                                                                   "Telephone Number&lt;/P&gt;&lt;P&gt;        wkwng    TYPE     wkwng,                                                                   "Company Housing&lt;/P&gt;&lt;P&gt;        END      OF       x_flat_infotype.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES : BEGIN     OF       x_valid.&lt;/P&gt;&lt;P&gt;        INCLUDE   TYPE     x_flat_infotype.                                                        "structure for valid data&lt;/P&gt;&lt;P&gt;TYPES : END       OF       x_valid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES : BEGIN     OF       x_invalid.&lt;/P&gt;&lt;P&gt;        INCLUDE   TYPE     x_flat_infotype.                                                        "structure for invalid data&lt;/P&gt;&lt;P&gt;TYPES : error     TYPE     string,                                                                 "string to hold error field details&lt;/P&gt;&lt;P&gt;        END       OF       x_invalid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        BEGIN     OF       x_pernr,                                                                "STRUCTURE DECLARATION FOR Personal No&lt;/P&gt;&lt;P&gt;        pernr     TYPE     persno,&lt;/P&gt;&lt;P&gt;        END       OF       x_pernr,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        BEGIN     OF       x_state,                                                                "STRUCTURE DECLARATION FOR Region&lt;/P&gt;&lt;P&gt;        land1     type     land1,&lt;/P&gt;&lt;P&gt;        state     TYPE     regio,&lt;/P&gt;&lt;P&gt;        END       OF       x_state,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        BEGIN     OF       x_land1,                                                                "STRUCTURE DECLARATION FOR Country&lt;/P&gt;&lt;P&gt;        land1     TYPE     land1,&lt;/P&gt;&lt;P&gt;        END       OF       x_land1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : t_infotype   TYPE STANDARD TABLE OF x_flat_infotype INITIAL SIZE 0,                         "internal table to hold data&lt;/P&gt;&lt;P&gt;       t_valid      TYPE STANDARD TABLE OF x_valid INITIAL SIZE 0,                                 "internal table to hold valid data&lt;/P&gt;&lt;P&gt;       t_invalid    TYPE STANDARD TABLE OF x_invalid INITIAL SIZE 0,                               "internal table to hold invalid data&lt;/P&gt;&lt;P&gt;       t_v_final  TYPE   STANDARD   TABLE   OF   x_valid            INITIAL    SIZE   0,           "internal table to hold valid data&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DECLARE IT_BDCDATA INTERNAL TABLE BASED ON BDCDATA STRUCTURE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       t_bdcdata    TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0,                                 "internal table to hold BDC data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Work area for the above internal tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       wa_infotype  TYPE                x_flat_infotype,                                           "work area to hold data&lt;/P&gt;&lt;P&gt;       wa_valid     TYPE                x_valid,                                                   "work area to hold valid data&lt;/P&gt;&lt;P&gt;       wa_invalid   TYPE                x_invalid,                                                 "work area to hold invalid data&lt;/P&gt;&lt;P&gt;       wa_v_final   TYPE                x_valid,                                                   "work area to hold valid data&lt;/P&gt;&lt;P&gt;       wa_bdcdata   TYPE                bdcdata,                                                   "work area to hold BDC data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       g_file       TYPE                string,                                                    "Variable to hold file name entered by user&lt;/P&gt;&lt;P&gt;       g_errfile    TYPE                string.                                                    "Variable to hold file name entered by user&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;      MAINTAINING  A BLOCK WITH FLAT FILE AS INPUT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         PARAMETER   :  p_file   TYPE  fc03tab-pl00_file OBLIGATORY.                               "variable to hold flat file name during runtime&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_refreshing_inttables.                                                     "Subroutine for refreshing all internal tables&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_get_file USING p_file.                                                    "TO SELECT A FILE USING F4 KEY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_upload_file.                                                              " UPLOADING FILE WITH DATA&lt;/P&gt;&lt;P&gt;         PERFORM     sub_file_validations.                                                         " flat file validations&lt;/P&gt;&lt;P&gt;         IF NOT t_valid[] IS INITIAL.                                                              "checking for valid data&lt;/P&gt;&lt;P&gt;                     PERFORM      sub_data_updatation.                                             "updation of data depending on selected method&lt;/P&gt;&lt;P&gt;         ENDIF.&lt;/P&gt;&lt;P&gt;         IF NOT t_invalid[] IS INITIAL.&lt;/P&gt;&lt;P&gt;                     PERFORM      sub_download_error_file.                                         "TO DOWNLOAD ERRROR FILE&lt;/P&gt;&lt;P&gt;         ENDIF.&lt;/P&gt;&lt;P&gt;                     Perform      sub_details.                                                     "Subroutine for loading details&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_free.                                                                     "TO Free Memory&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_refreshing_inttables&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;      "Subroutine for refreshing all internal tables&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 sub_refreshing_inttables .                                                                    "REFRESH ALL INTERNAL TABLES&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH :  t_infotype,t_valid,t_invalid,t_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_refreshing_inttables&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_get_file&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;       Subroutine for selection a file during runtime&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_P_FILE  Input File&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 sub_get_file  USING    p_p_file.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      field_name = 'PA_FILE'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      file_name  = p_p_file.&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_get_file&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  sub_upload_file&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;       Subroutine for uploading data into internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_upload_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS :  lc_ftype TYPE char10 VALUE 'ASC',&lt;/P&gt;&lt;P&gt;               lc_fsepe  TYPE char01 VALUE 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  g_file   =        p_file.                                                             "STORE FILENAME IN VARIABLE(g_FILE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_file IS INITIAL.                                                                              " if file is not selected&lt;/P&gt;&lt;P&gt;    MESSAGE i002.&lt;/P&gt;&lt;P&gt;    LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'GUI_UPLOAD'                                                                       "CALLLING FUNCTION TO UPLOAD THE FILE DATA&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                filename                      =   g_file&lt;/P&gt;&lt;P&gt;                filetype                      =   lc_ftype&lt;/P&gt;&lt;P&gt;                has_field_separator           =   lc_fsepe&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                data_tab                      =   t_infotype&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                file_open_error               =   1&lt;/P&gt;&lt;P&gt;                file_read_error               =   2&lt;/P&gt;&lt;P&gt;                no_batch                      =   3&lt;/P&gt;&lt;P&gt;                gui_refuse_filetransfer       =   4&lt;/P&gt;&lt;P&gt;                invalid_type                  =   5&lt;/P&gt;&lt;P&gt;                no_authority                  =   6&lt;/P&gt;&lt;P&gt;                unknown_error                 =   7&lt;/P&gt;&lt;P&gt;                bad_data_format               =   8&lt;/P&gt;&lt;P&gt;                header_not_allowed            =   9&lt;/P&gt;&lt;P&gt;                separator_not_allowed         =   10&lt;/P&gt;&lt;P&gt;                header_too_long               =   11&lt;/P&gt;&lt;P&gt;                unknown_dp_error              =   12&lt;/P&gt;&lt;P&gt;                access_denied                 =   13&lt;/P&gt;&lt;P&gt;                dp_out_of_memory              =   14&lt;/P&gt;&lt;P&gt;                disk_full                     =   15&lt;/P&gt;&lt;P&gt;                dp_timeout                    =   16&lt;/P&gt;&lt;P&gt;                OTHERS                        =   17&lt;/P&gt;&lt;P&gt;                       .&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.                                                                                "message to display is file is not selected&lt;/P&gt;&lt;P&gt;      MESSAGE i001.&lt;/P&gt;&lt;P&gt;      LEAVE LIST-PROCESSING.&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;ENDFORM.                                                                                " sub_upload_file&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  sub_file_validations&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine for validating required fields in flat file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_file_validations .&lt;/P&gt;&lt;P&gt;  CONSTANTS: lc_anssa1         TYPE char04 VALUE  '1',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_anssa2         TYPE char04 VALUE  '2',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_anssa3         TYPE char04 VALUE  '3',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_anssa4         TYPE char04 VALUE  '4',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_wkwng1         TYPE char01 VALUE  '1',                                              "Constant Company Housing&lt;/P&gt;&lt;P&gt;             lc_wkwng2         TYPE char01 VALUE  '2'.                                              "Constant Company Housing&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA :  t_pernr   TYPE STANDARD TABLE OF x_pernr INITIAL SIZE 0,                                   "INTERNAL TABLE FOR Personal No data&lt;/P&gt;&lt;P&gt;          t_state   TYPE STANDARD TABLE OF x_state INITIAL SIZE 0,                                   "INTERNAL TABLE FOR Region data&lt;/P&gt;&lt;P&gt;          t_land1   TYPE STANDARD TABLE OF x_land1 INITIAL SIZE 0.                                   "INTERNAL TABLE FOR Country data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF t_infotype IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  validate Personal No&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT pernr FROM pa0003 INTO TABLE t_pernr                                                    " Extracting Personal No Data FROM  TO VALIDATE THE FIELD&lt;/P&gt;&lt;P&gt;           FOR ALL ENTRIES IN t_infotype WHERE pernr = t_infotype-pernr.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT t_pernr BY pernr.&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;  validate Region&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT land1 bland FROM t005s INTO TABLE t_state .                                                   " Extracting Region DATA FROM  TO VALIDATE THE FIELD&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT t_state BY land1 state.&lt;/P&gt;&lt;P&gt;    ENDIF.&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;  validate Country&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT land1 FROM t005 INTO TABLE t_land1 .                                                    " Extracting country DATA FROM  TO VALIDATE THE FIELD&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT t_land1 BY land1 .&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MESSAGE i004.&lt;/P&gt;&lt;P&gt;    LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR wa_infotype.                                                                             "clearing data from work area of infotype internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT t_infotype INTO wa_infotype.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM sub_valid_nonvalidatefield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM sub_startdate_validaion.                                                             "Subroutine to validate start date field&lt;/P&gt;&lt;P&gt;    PERFORM sub_enddate_validaion.                                                               "Subroutine to validate end date field&lt;/P&gt;&lt;P&gt;    IF wa_valid-begda GE wa_valid-endda.                                                           "If start date is less than or equal to end date&lt;/P&gt;&lt;P&gt;      wa_invalid-begda = wa_infotype-begda.                                                        "moving start date to invalid workarea of start date&lt;/P&gt;&lt;P&gt;      wa_invalid-endda = wa_infotype-endda.                                                        "moving start date to invalid workarea of start date&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONCATENATE text-032 wa_invalid-begda&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      validate field Address Type of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF wa_infotype-anssa = lc_anssa1 OR wa_infotype-anssa = lc_anssa2&lt;/P&gt;&lt;P&gt;       OR wa_infotype-anssa = lc_anssa3 OR wa_infotype-anssa = lc_anssa4  .&lt;/P&gt;&lt;P&gt;      wa_valid-anssa     =    wa_infotype-anssa.                                                 "moving Address type from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-anssa   =    wa_infotype-anssa.                                                 "moving Address type from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-033 wa_invalid-anssa&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      validate field Personal No of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    READ TABLE t_pernr WITH KEY pernr = wa_infotype-pernr&lt;/P&gt;&lt;P&gt;    BINARY SEARCH&lt;/P&gt;&lt;P&gt;    TRANSPORTING NO FIELDS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                                                               "checking for validation of the Personal No&lt;/P&gt;&lt;P&gt;      wa_valid-pernr     =    wa_infotype-pernr.                                                   "moving Personal No from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-pernr   =    wa_infotype-pernr.                                                   "moving Personal No from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-030 wa_invalid-pernr&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&lt;/P&gt;&lt;P&gt;    ENDIF.&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;      validate field State of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    READ TABLE t_state WITH KEY land1 = wa_infotype-land1 STATE = wa_infotype-state&lt;/P&gt;&lt;P&gt;    BINARY SEARCH&lt;/P&gt;&lt;P&gt;    TRANSPORTING NO FIELDS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                                                               "checking for validation of the State&lt;/P&gt;&lt;P&gt;      wa_valid-state     =    wa_infotype-state.                                                   "moving State from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-state   =    wa_infotype-state.                                                   "moving State from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-010 wa_invalid-state&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      validate field Country of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    READ TABLE t_land1 WITH KEY land1 = wa_infotype-land1&lt;/P&gt;&lt;P&gt;    BINARY SEARCH&lt;/P&gt;&lt;P&gt;    TRANSPORTING NO FIELDS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                                                               "checking for validation of the Country&lt;/P&gt;&lt;P&gt;      wa_valid-land1     =    wa_infotype-land1.                                                   "moving Country from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-land1   =    wa_infotype-land1.                                                   "moving Country from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-011 wa_invalid-land1&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF wa_infotype-wkwng = lc_wkwng1 OR wa_infotype-wkwng = lc_wkwng2 .&lt;/P&gt;&lt;P&gt;      wa_valid-wkwng     =    wa_infotype-wkwng.                                                 "moving Company Housing from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-wkwng   =    wa_infotype-wkwng.                                                 "moving Company Housing from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-034 wa_invalid-wkwng&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      For Invalid data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF  wa_invalid IS NOT INITIAL.                                                                 "checking all fields data for invalid entries&lt;/P&gt;&lt;P&gt;      CONCATENATE  text-012&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM sub_invalid_nonvalidatefield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-pernr IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-pernr   =    wa_valid-pernr.                                                    "Personal No&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-begda IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-begda   =    wa_valid-begda.                                                    "Begin date&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-endda IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-endda   =    wa_valid-endda.                                                    "End Date&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-anssa IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-anssa   =    wa_valid-anssa.                                                    "Address Type&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-state IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-state   =    wa_valid-state.                                                    "State&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-land1 IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-land1   =    wa_valid-land1.                                                    "Country&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND wa_invalid         TO   t_invalid.                                                    "Appending data to invalid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      APPEND wa_valid           TO   t_valid.                                                      "Appending data to valid internal table&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR wa_valid.&lt;/P&gt;&lt;P&gt;    CLEAR wa_invalid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_file_validations&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_valid_nonvalidatefield&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;      Subroutine for updating non-validated fields into valid work area&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_valid_nonvalidatefield .&lt;/P&gt;&lt;P&gt;  wa_valid-stras   =    wa_infotype-stras.                                             "moving Str&amp;amp;Hou from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-locat   =    wa_infotype-locat.                                             "moving 2nd Address line from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-pstlz   =    wa_infotype-pstlz.                                             "moving Postal Code from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-ort01   =    wa_infotype-ort01.                                             "moving City from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-ort02   =    wa_infotype-ort02.                                             "moving District from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-telnr   =    wa_infotype-telnr.                                             "moving Telephone No from internal table to valid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_valid_nonvalidatefield&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  sub_startdate_validaion&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;     "Subroutine to validate start date field&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 sub_startdate_validaion .&lt;/P&gt;&lt;P&gt;*This Funciton module is used for Conversion of date, ie External to&lt;/P&gt;&lt;P&gt;*internal date (like screen conversion)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      date_external            = wa_infotype-begda                                                 "External date or date given in flat file&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      date_internal            = wa_valid-begda                                                    "Date converted to internal format for conversion&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      date_external_is_invalid = 1&lt;/P&gt;&lt;P&gt;      OTHERS                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.                                                                                "If conversion of date fails&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_invalid-begda = wa_infotype-begda.                                                          "moving date from flat file work area to inavlid work area&lt;/P&gt;&lt;P&gt;    CONCATENATE text-035 wa_invalid-begda&lt;/P&gt;&lt;P&gt;    wa_invalid-error INTO wa_invalid-error SEPARATED BY space.                                     " Adding start date error to error field of invalid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_startdate_validaion&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  sub_enddate_validaion&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;     "Subroutine to validate end date field&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 sub_enddate_validaion .&lt;/P&gt;&lt;P&gt;*This Funciton module is used for Conversion of date, ie External to&lt;/P&gt;&lt;P&gt;*internal date (like screen conversion)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      date_external            = wa_infotype-endda                                                 "External date or date given in flat file&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      date_internal            = wa_valid-endda                                                    "Date converted to internal format for conversion&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      date_external_is_invalid = 1&lt;/P&gt;&lt;P&gt;      OTHERS                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.                                                                                "If conversion of date fails&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_invalid-endda = wa_infotype-endda.                                                          "moving date from flat file work area to inavlid work area&lt;/P&gt;&lt;P&gt;    CONCATENATE text-036 wa_invalid-endda&lt;/P&gt;&lt;P&gt;    wa_invalid-error INTO wa_invalid-error SEPARATED BY space.                                     " Adding end date error to error field of invalid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_enddate_validaion&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  sub_invalid_nonvalidatefield&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;    Subroutine for updating non-validated fields into invalid work area&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 sub_invalid_nonvalidatefield .&lt;/P&gt;&lt;P&gt;  wa_invalid-stras   =    wa_infotype-stras.                                           "moving Str&amp;amp;Hou from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-locat   =    wa_infotype-locat.                                           "moving 2nd Address line from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-pstlz   =    wa_infotype-pstlz.                                           "moving Postal Code from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-ort01   =    wa_infotype-ort01.                                           "moving City from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-ort02   =    wa_infotype-ort02.                                           "moving District from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-telnr   =    wa_infotype-telnr.                                           "moving Telephone No from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_invalid_nonvalidatefield&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  sub_data_updatation&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;      Subroutine for updation of data depending on selected method&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 sub_data_updatation .&lt;/P&gt;&lt;P&gt;  DATA : wa_return_enque TYPE bapireturn1.                                                         "variable to store error values&lt;/P&gt;&lt;P&gt;    clear wa_return_enque.&lt;/P&gt;&lt;P&gt;  LOOP AT t_valid INTO wa_valid.                                                                   "moving valid data to valid work area&lt;/P&gt;&lt;P&gt;    PERFORM sub_bapi_employee_enqueue using wa_return_enque .                                      "Subroutine to lock an employee&lt;/P&gt;&lt;P&gt;    IF wa_return_enque-type NE 'E'.&lt;/P&gt;&lt;P&gt;      PERFORM sub_bapi_addressempdk_create.                                                        "Subroutine to create  employee address data&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;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_data_updatation&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  sub_bapi_employee_enqueue&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;     Subroutine to lock an employee&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;lt;--P_WA_RETURN_ENQUE  wa_return_enque-type&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 sub_bapi_employee_enqueue using p_wa_return_enque LIKE bapireturn1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*This funciton module is used to lock an employee so that the records&lt;/P&gt;&lt;P&gt;*stored for this person cannot be accessed.&lt;/P&gt;&lt;P&gt;*When an employee is locked, only user who has set  lock can access&lt;/P&gt;&lt;P&gt;*records for this employee. Other users are denied access.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      number = wa_valid-pernr                                                                      "Personal number&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      return = p_wa_return_enque.                                                                     "for error values returned&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_bapi_employee_enqueue&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_BAPI_ADDRESSEMPDK_CREATE&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;       Subroutine to create  employee address data&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 sub_bapi_addressempdk_create.&lt;/P&gt;&lt;P&gt;  DATA : wa_data_create TYPE bapireturn1.                                                           "variable to store error values&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*This function module is used create a Address Data record (0006).&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BAPI_ADDRESSEMPDK_CREATE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      employeenumber    = wa_valid-pernr                                                   "Personal No&lt;/P&gt;&lt;P&gt;      validitybegin     = wa_valid-begda                                                   "Begin Date&lt;/P&gt;&lt;P&gt;      validityend       = wa_valid-endda                                                   "End Date&lt;/P&gt;&lt;P&gt;      addresstype       = wa_valid-anssa                                                   "Address type&lt;/P&gt;&lt;P&gt;      streetandhouseno  = wa_valid-stras                                                   "Street and house address&lt;/P&gt;&lt;P&gt;      scndaddressline   = wa_valid-locat                                                   "2nd address line&lt;/P&gt;&lt;P&gt;      city              = wa_valid-ort01                                                   "City&lt;/P&gt;&lt;P&gt;      district          = wa_valid-ort02                                                   "District&lt;/P&gt;&lt;P&gt;      postalcodecity    = wa_valid-pstlz                                                   "Postal Code&lt;/P&gt;&lt;P&gt;      state             = wa_valid-state                                                   "Region(State)&lt;/P&gt;&lt;P&gt;      country           = wa_valid-land1                                                   "Country&lt;/P&gt;&lt;P&gt;      company_apartment = wa_valid-wkwng                                                   "Company Housing&lt;/P&gt;&lt;P&gt;      telephonenumber   = wa_valid-telnr                                                   "Telephone No&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      return            = wa_data_create&lt;/P&gt;&lt;P&gt;      employeenumber    = wa_valid-pernr&lt;/P&gt;&lt;P&gt;      subtype           = wa_valid-anssa&lt;/P&gt;&lt;P&gt;      validitybegin     = wa_valid-begda&lt;/P&gt;&lt;P&gt;      validityend       = wa_valid-endda.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    If error or abend message occurs while uploading data, then moving all the wa_valid fields to wa_invalid fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF wa_data_create-type EQ 'E'&lt;/P&gt;&lt;P&gt;  OR wa_data_create-type EQ 'A'.&lt;/P&gt;&lt;P&gt;    PERFORM         sub_bapi_employee_dequeue.                                                 "Subroutine to unlock an employee&lt;/P&gt;&lt;P&gt;    wa_invalid-pernr        =      wa_valid-pernr .                                            "Personal No&lt;/P&gt;&lt;P&gt;    wa_invalid-begda        =      wa_valid-begda .                                            "Begin Date&lt;/P&gt;&lt;P&gt;    wa_invalid-endda        =      wa_valid-endda .                                            "End Date&lt;/P&gt;&lt;P&gt;    wa_invalid-anssa        =      wa_valid-anssa .                                            "Address type&lt;/P&gt;&lt;P&gt;    wa_invalid-stras        =      wa_valid-stras .                                            "Street and house address&lt;/P&gt;&lt;P&gt;    wa_invalid-locat        =      wa_valid-locat .                                            "2nd address line&lt;/P&gt;&lt;P&gt;    wa_invalid-ort01        =      wa_valid-ort01 .                                            "City&lt;/P&gt;&lt;P&gt;    wa_invalid-ort02        =      wa_valid-ort02 .                                            "District&lt;/P&gt;&lt;P&gt;    wa_invalid-pstlz        =      wa_valid-pstlz .                                            "Postal Code&lt;/P&gt;&lt;P&gt;    wa_invalid-state        =      wa_valid-state .                                            "Region(State)&lt;/P&gt;&lt;P&gt;    wa_invalid-land1        =      wa_valid-land1 .                                            "Country&lt;/P&gt;&lt;P&gt;    wa_invalid-telnr        =      wa_valid-telnr .                                            "Telephone No&lt;/P&gt;&lt;P&gt;    wa_invalid-wkwng        =      wa_valid-wkwng .                                            "Company Housing&lt;/P&gt;&lt;P&gt;    wa_invalid-error        =      wa_data_create-message.					            	&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND wa_invalid TO t_invalid.                                                            "appending wa_invalid to internal table&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    APPEND wa_valid TO t_v_final.                                                              "appending wa_valid to another internal table for the final count of valid records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;    CLEAR: wa_invalid,                                                                         "clearing work area of invalid&lt;/P&gt;&lt;P&gt;           wa_valid.                                                                           "clearing work area of valid&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_BAPI_ADDRESSEMP_CREATE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_bapi_employee_dequeue&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;      Subroutine to unlock an employee&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 sub_bapi_employee_dequeue .&lt;/P&gt;&lt;P&gt;  DATA : wa_return_deque TYPE bapireturn1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*This function module is used to unlock an employee so that the records&lt;/P&gt;&lt;P&gt;*stored for this person can be accessed.&lt;/P&gt;&lt;P&gt;*If an employee is locked using the ENQUEUE method,the user who set the&lt;/P&gt;&lt;P&gt;*lock can access this employee's records.&lt;/P&gt;&lt;P&gt;*Other users are denied access to these records.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      number = wa_valid-pernr                                                                      "Personal number&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      return = wa_return_deque.                                                                     "for error values returned&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_bapi_employee_dequeue&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_download_error_file&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;      Subroutine to download error file for rectifications&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 sub_download_error_file .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    PROVIDE A VARIABLE FOR HOLDING FLAT FILE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS :  lc_ftype     TYPE   char10   VALUE   'ASC',&lt;/P&gt;&lt;P&gt;               lc_fsepe     TYPE   char01   VALUE   'X',&lt;/P&gt;&lt;P&gt;               lc_err        TYPE   char5    VALUE   '_err.',                                      "constant to change error file name&lt;/P&gt;&lt;P&gt;               lc_period     TYPE   c        VALUE   '.'.                                          "constant to change error file name&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;               g_errfile    =      p_file.                                                         "STORE FILENAME IN VARIABLE(l_FILE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SHIFT        g_errfile    BY     4 PLACES RIGHT   CIRCULAR.&lt;/P&gt;&lt;P&gt;  REPLACE      lc_period     WITH  lc_err    INTO    g_errfile.                                    "lc_err to truncate .txt and lc_period to add _err.txt&lt;/P&gt;&lt;P&gt;  SHIFT        g_errfile    BY     8 PLACES LEFT    CIRCULAR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'GUI_DOWNLOAD'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;     filename                        = g_errfile&lt;/P&gt;&lt;P&gt;     filetype                        = lc_ftype&lt;/P&gt;&lt;P&gt;     write_field_separator           = lc_fsepe&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      data_tab                        = t_invalid&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;P&gt;     file_write_error                = 1&lt;/P&gt;&lt;P&gt;     no_batch                        = 2&lt;/P&gt;&lt;P&gt;     gui_refuse_filetransfer         = 3&lt;/P&gt;&lt;P&gt;     invalid_type                    = 4&lt;/P&gt;&lt;P&gt;     no_authority                    = 5&lt;/P&gt;&lt;P&gt;     unknown_error                   = 6&lt;/P&gt;&lt;P&gt;     header_not_allowed              = 7&lt;/P&gt;&lt;P&gt;     separator_not_allowed           = 8&lt;/P&gt;&lt;P&gt;     filesize_not_allowed            = 9&lt;/P&gt;&lt;P&gt;     header_too_long                 = 10&lt;/P&gt;&lt;P&gt;     dp_error_create                 = 11&lt;/P&gt;&lt;P&gt;     dp_error_send                   = 12&lt;/P&gt;&lt;P&gt;     dp_error_write                  = 13&lt;/P&gt;&lt;P&gt;     unknown_dp_error                = 14&lt;/P&gt;&lt;P&gt;     access_denied                   = 15&lt;/P&gt;&lt;P&gt;     dp_out_of_memory                = 16&lt;/P&gt;&lt;P&gt;     disk_full                       = 17&lt;/P&gt;&lt;P&gt;     dp_timeout                      = 18&lt;/P&gt;&lt;P&gt;     file_not_found                  = 19&lt;/P&gt;&lt;P&gt;     dataprovider_exception          = 20&lt;/P&gt;&lt;P&gt;     control_flush_error             = 21&lt;/P&gt;&lt;P&gt;     OTHERS                          = 22&lt;/P&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    MESSAGE i003.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_download_error_file&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  sub_details&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;      Subroutine for loading details&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 sub_details .&lt;/P&gt;&lt;P&gt;  DATA: l_count_total TYPE i,                                                                      "variable to count total no of records&lt;/P&gt;&lt;P&gt;        l_count_valid TYPE i,                                                                      "variable to count no of records uploaded&lt;/P&gt;&lt;P&gt;        l_count_invalid TYPE i.                                                                    "variable to count total no of error records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE :/71 text-018 .                                                                            "title&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE t_infotype LINES l_count_total.                                                   "To count no of lines in internal table&lt;/P&gt;&lt;P&gt;  WRITE :/,text-019 ,30 text-020, 32 l_count_total,157 text-021,164 text-020, 166 sy-datum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE t_v_final LINES l_count_valid.                                                    "To count no of lines in internal table&lt;/P&gt;&lt;P&gt;  WRITE : text-022,30 text-020,32 l_count_valid,157 text-023,164 text-020, 166 sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE t_invalid LINES l_count_invalid.                                                  "To count no of lines in internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE : text-025,30 text-020,32 l_count_invalid,157 text-024,164 text-020, 166 sy-uname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE :/,text-026 ,30 text-020 , 40 g_file .                                                     "name of the error file&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Print if only invalid records exist&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT t_invalid[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    WRITE :/,text-027 ,30 text-020 , 40 g_errfile .                                                "variable to count total no of error records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF t_invalid IS INITIAL.&lt;/P&gt;&lt;P&gt;      g_errfile = text-029.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; text-028.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; sy-vline,2 text-030,17 sy-vline, 20 text-031,178 sy-vline.                            "headings&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT t_invalid INTO wa_invalid.                                                             " to display error details&lt;/P&gt;&lt;P&gt;      WRITE  &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; sy-vline,2 wa_invalid-pernr,17 sy-vline ,20 wa_invalid-error,178 sy-vline.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ULINE.&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;P&gt;ENDFORM.                                                                                " sub_details&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  sub_free&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;      To free the memory allocated to internal tables&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 sub_free .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FREE :  t_infotype,t_valid,t_invalid,t_bdcdata.                                                    "FREE MEMORY ALLOCATED TO VARIOUS INTERNAL TABLES&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_free&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 11 Nov 2008 06:54:33 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-11-11T06:54:33Z</dc:date>
    <item>
      <title>bapi for infotypes</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480402#M1060912</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;can any one send any program for uploading data through bapi for any infotype. so that i can understand bapi for infotypes.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Sep 2008 12:32:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480402#M1060912</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-09-05T12:32:47Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for infotypes</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480403#M1060913</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;I think there are no BAPI's for Infotypes but you can use HR_READ_INFOTYPE   to insert modify and delete the records .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="61134"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[SAP HR UPLOAD infotype 0105 (communication) |https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/sap&lt;EM&gt;HR&lt;/EM&gt;UPLOAD&lt;EM&gt;infotype&lt;/EM&gt;0105+(communication)]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Pavan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Sep 2008 12:44:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480403#M1060913</guid>
      <dc:creator>bpawanchand</dc:creator>
      <dc:date>2008-09-05T12:44:15Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for infotypes</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480404#M1060914</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;you can use HR_INFOTYPE_OPERATION to insert your data&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 09 Sep 2008 21:09:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480404#M1060914</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-09-09T21:09:48Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for infotypes</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480405#M1060915</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;just create a message class and text according to the code as follows (copy and paste in se 38)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ZCHR007_01 NO STANDARD PAGE HEADING MESSAGE-ID ZHR LINE-COUNT 65(8) LINE-SIZE 180.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES : PA0003, P0000,P0006,T005S,T005,T591A.                                                     " TABLES REQUIRED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         *INTERNAL TABLE AND WORK AREA WITH STRUCTURE ON BASIS FLAT FILE DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES : BEGIN     OF       x_flat_infotype,                                                        "Flat file structure&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Screen data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        PERNR    TYPE     PERSNO,                                                                  "Personal Number&lt;/P&gt;&lt;P&gt;        BEGDA    TYPE     BEGDA,                                                                   "Begin Date&lt;/P&gt;&lt;P&gt;        ENDDA    TYPE     ENDDA,                                                                   "End Date&lt;/P&gt;&lt;P&gt;        ANSSA    TYPE     ANSSA,                                                                   "Address Record Type&lt;/P&gt;&lt;P&gt;        STRAS    TYPE     PAD_STRAS,                                                               "House number and street&lt;/P&gt;&lt;P&gt;        LOCAT    TYPE     PAD_LOCAT,                                                               "2nd Address Line&lt;/P&gt;&lt;P&gt;        PSTLZ    TYPE     PSTLZ_HR,                                                                "Postal Code&lt;/P&gt;&lt;P&gt;        ORT01    TYPE     PAD_ORT01,                                                               "City&lt;/P&gt;&lt;P&gt;        ORT02    TYPE     PAD_ORT02,                                                                   "District&lt;/P&gt;&lt;P&gt;        STATE    TYPE     REGIO,                                                                   "State&lt;/P&gt;&lt;P&gt;        land1    TYPE     land1,                                                                   "Country&lt;/P&gt;&lt;P&gt;        telnr    TYPE     telnr,                                                                   "Telephone Number&lt;/P&gt;&lt;P&gt;        wkwng    TYPE     wkwng,                                                                   "Company Housing&lt;/P&gt;&lt;P&gt;        END      OF       x_flat_infotype.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES : BEGIN     OF       x_valid.&lt;/P&gt;&lt;P&gt;        INCLUDE   TYPE     x_flat_infotype.                                                        "structure for valid data&lt;/P&gt;&lt;P&gt;TYPES : END       OF       x_valid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES : BEGIN     OF       x_invalid.&lt;/P&gt;&lt;P&gt;        INCLUDE   TYPE     x_flat_infotype.                                                        "structure for invalid data&lt;/P&gt;&lt;P&gt;TYPES : error     TYPE     string,                                                                 "string to hold error field details&lt;/P&gt;&lt;P&gt;        END       OF       x_invalid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        BEGIN     OF       x_pernr,                                                                "STRUCTURE DECLARATION FOR Personal No&lt;/P&gt;&lt;P&gt;        pernr     TYPE     persno,&lt;/P&gt;&lt;P&gt;        END       OF       x_pernr,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        BEGIN     OF       x_state,                                                                "STRUCTURE DECLARATION FOR Region&lt;/P&gt;&lt;P&gt;        land1     type     land1,&lt;/P&gt;&lt;P&gt;        state     TYPE     regio,&lt;/P&gt;&lt;P&gt;        END       OF       x_state,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        BEGIN     OF       x_land1,                                                                "STRUCTURE DECLARATION FOR Country&lt;/P&gt;&lt;P&gt;        land1     TYPE     land1,&lt;/P&gt;&lt;P&gt;        END       OF       x_land1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : t_infotype   TYPE STANDARD TABLE OF x_flat_infotype INITIAL SIZE 0,                         "internal table to hold data&lt;/P&gt;&lt;P&gt;       t_valid      TYPE STANDARD TABLE OF x_valid INITIAL SIZE 0,                                 "internal table to hold valid data&lt;/P&gt;&lt;P&gt;       t_invalid    TYPE STANDARD TABLE OF x_invalid INITIAL SIZE 0,                               "internal table to hold invalid data&lt;/P&gt;&lt;P&gt;       t_v_final  TYPE   STANDARD   TABLE   OF   x_valid            INITIAL    SIZE   0,           "internal table to hold valid data&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DECLARE IT_BDCDATA INTERNAL TABLE BASED ON BDCDATA STRUCTURE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       t_bdcdata    TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0,                                 "internal table to hold BDC data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Work area for the above internal tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       wa_infotype  TYPE                x_flat_infotype,                                           "work area to hold data&lt;/P&gt;&lt;P&gt;       wa_valid     TYPE                x_valid,                                                   "work area to hold valid data&lt;/P&gt;&lt;P&gt;       wa_invalid   TYPE                x_invalid,                                                 "work area to hold invalid data&lt;/P&gt;&lt;P&gt;       wa_v_final   TYPE                x_valid,                                                   "work area to hold valid data&lt;/P&gt;&lt;P&gt;       wa_bdcdata   TYPE                bdcdata,                                                   "work area to hold BDC data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       g_file       TYPE                string,                                                    "Variable to hold file name entered by user&lt;/P&gt;&lt;P&gt;       g_errfile    TYPE                string.                                                    "Variable to hold file name entered by user&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;      MAINTAINING  A BLOCK WITH FLAT FILE AS INPUT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         PARAMETER   :  p_file   TYPE  fc03tab-pl00_file OBLIGATORY.                               "variable to hold flat file name during runtime&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_refreshing_inttables.                                                     "Subroutine for refreshing all internal tables&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_get_file USING p_file.                                                    "TO SELECT A FILE USING F4 KEY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_upload_file.                                                              " UPLOADING FILE WITH DATA&lt;/P&gt;&lt;P&gt;         PERFORM     sub_file_validations.                                                         " flat file validations&lt;/P&gt;&lt;P&gt;         IF NOT t_valid[] IS INITIAL.                                                              "checking for valid data&lt;/P&gt;&lt;P&gt;                     PERFORM      sub_data_updatation.                                             "updation of data depending on selected method&lt;/P&gt;&lt;P&gt;         ENDIF.&lt;/P&gt;&lt;P&gt;         IF NOT t_invalid[] IS INITIAL.&lt;/P&gt;&lt;P&gt;                     PERFORM      sub_download_error_file.                                         "TO DOWNLOAD ERRROR FILE&lt;/P&gt;&lt;P&gt;         ENDIF.&lt;/P&gt;&lt;P&gt;                     Perform      sub_details.                                                     "Subroutine for loading details&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;         PERFORM     sub_free.                                                                     "TO Free Memory&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_refreshing_inttables&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;      "Subroutine for refreshing all internal tables&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 sub_refreshing_inttables .                                                                    "REFRESH ALL INTERNAL TABLES&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH :  t_infotype,t_valid,t_invalid,t_bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_refreshing_inttables&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_get_file&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;       Subroutine for selection a file during runtime&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_P_FILE  Input File&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 sub_get_file  USING    p_p_file.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      field_name = 'PA_FILE'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      file_name  = p_p_file.&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_get_file&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  sub_upload_file&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;       Subroutine for uploading data into internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_upload_file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS :  lc_ftype TYPE char10 VALUE 'ASC',&lt;/P&gt;&lt;P&gt;               lc_fsepe  TYPE char01 VALUE 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  g_file   =        p_file.                                                             "STORE FILENAME IN VARIABLE(g_FILE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_file IS INITIAL.                                                                              " if file is not selected&lt;/P&gt;&lt;P&gt;    MESSAGE i002.&lt;/P&gt;&lt;P&gt;    LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'GUI_UPLOAD'                                                                       "CALLLING FUNCTION TO UPLOAD THE FILE DATA&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                filename                      =   g_file&lt;/P&gt;&lt;P&gt;                filetype                      =   lc_ftype&lt;/P&gt;&lt;P&gt;                has_field_separator           =   lc_fsepe&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                data_tab                      =   t_infotype&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                file_open_error               =   1&lt;/P&gt;&lt;P&gt;                file_read_error               =   2&lt;/P&gt;&lt;P&gt;                no_batch                      =   3&lt;/P&gt;&lt;P&gt;                gui_refuse_filetransfer       =   4&lt;/P&gt;&lt;P&gt;                invalid_type                  =   5&lt;/P&gt;&lt;P&gt;                no_authority                  =   6&lt;/P&gt;&lt;P&gt;                unknown_error                 =   7&lt;/P&gt;&lt;P&gt;                bad_data_format               =   8&lt;/P&gt;&lt;P&gt;                header_not_allowed            =   9&lt;/P&gt;&lt;P&gt;                separator_not_allowed         =   10&lt;/P&gt;&lt;P&gt;                header_too_long               =   11&lt;/P&gt;&lt;P&gt;                unknown_dp_error              =   12&lt;/P&gt;&lt;P&gt;                access_denied                 =   13&lt;/P&gt;&lt;P&gt;                dp_out_of_memory              =   14&lt;/P&gt;&lt;P&gt;                disk_full                     =   15&lt;/P&gt;&lt;P&gt;                dp_timeout                    =   16&lt;/P&gt;&lt;P&gt;                OTHERS                        =   17&lt;/P&gt;&lt;P&gt;                       .&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.                                                                                "message to display is file is not selected&lt;/P&gt;&lt;P&gt;      MESSAGE i001.&lt;/P&gt;&lt;P&gt;      LEAVE LIST-PROCESSING.&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;ENDFORM.                                                                                " sub_upload_file&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  sub_file_validations&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine for validating required fields in flat file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_file_validations .&lt;/P&gt;&lt;P&gt;  CONSTANTS: lc_anssa1         TYPE char04 VALUE  '1',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_anssa2         TYPE char04 VALUE  '2',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_anssa3         TYPE char04 VALUE  '3',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_anssa4         TYPE char04 VALUE  '4',                                              "Constant address type&lt;/P&gt;&lt;P&gt;             lc_wkwng1         TYPE char01 VALUE  '1',                                              "Constant Company Housing&lt;/P&gt;&lt;P&gt;             lc_wkwng2         TYPE char01 VALUE  '2'.                                              "Constant Company Housing&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA :  t_pernr   TYPE STANDARD TABLE OF x_pernr INITIAL SIZE 0,                                   "INTERNAL TABLE FOR Personal No data&lt;/P&gt;&lt;P&gt;          t_state   TYPE STANDARD TABLE OF x_state INITIAL SIZE 0,                                   "INTERNAL TABLE FOR Region data&lt;/P&gt;&lt;P&gt;          t_land1   TYPE STANDARD TABLE OF x_land1 INITIAL SIZE 0.                                   "INTERNAL TABLE FOR Country data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF t_infotype IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  validate Personal No&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT pernr FROM pa0003 INTO TABLE t_pernr                                                    " Extracting Personal No Data FROM  TO VALIDATE THE FIELD&lt;/P&gt;&lt;P&gt;           FOR ALL ENTRIES IN t_infotype WHERE pernr = t_infotype-pernr.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT t_pernr BY pernr.&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;  validate Region&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT land1 bland FROM t005s INTO TABLE t_state .                                                   " Extracting Region DATA FROM  TO VALIDATE THE FIELD&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT t_state BY land1 state.&lt;/P&gt;&lt;P&gt;    ENDIF.&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;  validate Country&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT land1 FROM t005 INTO TABLE t_land1 .                                                    " Extracting country DATA FROM  TO VALIDATE THE FIELD&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT t_land1 BY land1 .&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MESSAGE i004.&lt;/P&gt;&lt;P&gt;    LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR wa_infotype.                                                                             "clearing data from work area of infotype internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT t_infotype INTO wa_infotype.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM sub_valid_nonvalidatefield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM sub_startdate_validaion.                                                             "Subroutine to validate start date field&lt;/P&gt;&lt;P&gt;    PERFORM sub_enddate_validaion.                                                               "Subroutine to validate end date field&lt;/P&gt;&lt;P&gt;    IF wa_valid-begda GE wa_valid-endda.                                                           "If start date is less than or equal to end date&lt;/P&gt;&lt;P&gt;      wa_invalid-begda = wa_infotype-begda.                                                        "moving start date to invalid workarea of start date&lt;/P&gt;&lt;P&gt;      wa_invalid-endda = wa_infotype-endda.                                                        "moving start date to invalid workarea of start date&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONCATENATE text-032 wa_invalid-begda&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      validate field Address Type of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF wa_infotype-anssa = lc_anssa1 OR wa_infotype-anssa = lc_anssa2&lt;/P&gt;&lt;P&gt;       OR wa_infotype-anssa = lc_anssa3 OR wa_infotype-anssa = lc_anssa4  .&lt;/P&gt;&lt;P&gt;      wa_valid-anssa     =    wa_infotype-anssa.                                                 "moving Address type from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-anssa   =    wa_infotype-anssa.                                                 "moving Address type from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-033 wa_invalid-anssa&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      validate field Personal No of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    READ TABLE t_pernr WITH KEY pernr = wa_infotype-pernr&lt;/P&gt;&lt;P&gt;    BINARY SEARCH&lt;/P&gt;&lt;P&gt;    TRANSPORTING NO FIELDS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                                                               "checking for validation of the Personal No&lt;/P&gt;&lt;P&gt;      wa_valid-pernr     =    wa_infotype-pernr.                                                   "moving Personal No from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-pernr   =    wa_infotype-pernr.                                                   "moving Personal No from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-030 wa_invalid-pernr&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&lt;/P&gt;&lt;P&gt;    ENDIF.&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;      validate field State of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    READ TABLE t_state WITH KEY land1 = wa_infotype-land1 STATE = wa_infotype-state&lt;/P&gt;&lt;P&gt;    BINARY SEARCH&lt;/P&gt;&lt;P&gt;    TRANSPORTING NO FIELDS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                                                               "checking for validation of the State&lt;/P&gt;&lt;P&gt;      wa_valid-state     =    wa_infotype-state.                                                   "moving State from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-state   =    wa_infotype-state.                                                   "moving State from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-010 wa_invalid-state&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      validate field Country of flat file with field in check table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    READ TABLE t_land1 WITH KEY land1 = wa_infotype-land1&lt;/P&gt;&lt;P&gt;    BINARY SEARCH&lt;/P&gt;&lt;P&gt;    TRANSPORTING NO FIELDS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                                                               "checking for validation of the Country&lt;/P&gt;&lt;P&gt;      wa_valid-land1     =    wa_infotype-land1.                                                   "moving Country from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-land1   =    wa_infotype-land1.                                                   "moving Country from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-011 wa_invalid-land1&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF wa_infotype-wkwng = lc_wkwng1 OR wa_infotype-wkwng = lc_wkwng2 .&lt;/P&gt;&lt;P&gt;      wa_valid-wkwng     =    wa_infotype-wkwng.                                                 "moving Company Housing from internal table to valid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      wa_invalid-wkwng   =    wa_infotype-wkwng.                                                 "moving Company Housing from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;      CONCATENATE text-034 wa_invalid-wkwng&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error SEPARATED BY space .&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;      For Invalid data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF  wa_invalid IS NOT INITIAL.                                                                 "checking all fields data for invalid entries&lt;/P&gt;&lt;P&gt;      CONCATENATE  text-012&lt;/P&gt;&lt;P&gt;      wa_invalid-error INTO wa_invalid-error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM sub_invalid_nonvalidatefield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-pernr IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-pernr   =    wa_valid-pernr.                                                    "Personal No&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-begda IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-begda   =    wa_valid-begda.                                                    "Begin date&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-endda IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-endda   =    wa_valid-endda.                                                    "End Date&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-anssa IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-anssa   =    wa_valid-anssa.                                                    "Address Type&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-state IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-state   =    wa_valid-state.                                                    "State&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF wa_invalid-land1 IS INITIAL.&lt;/P&gt;&lt;P&gt;        wa_invalid-land1   =    wa_valid-land1.                                                    "Country&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND wa_invalid         TO   t_invalid.                                                    "Appending data to invalid internal table&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      APPEND wa_valid           TO   t_valid.                                                      "Appending data to valid internal table&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR wa_valid.&lt;/P&gt;&lt;P&gt;    CLEAR wa_invalid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_file_validations&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_valid_nonvalidatefield&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;      Subroutine for updating non-validated fields into valid work area&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_valid_nonvalidatefield .&lt;/P&gt;&lt;P&gt;  wa_valid-stras   =    wa_infotype-stras.                                             "moving Str&amp;amp;Hou from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-locat   =    wa_infotype-locat.                                             "moving 2nd Address line from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-pstlz   =    wa_infotype-pstlz.                                             "moving Postal Code from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-ort01   =    wa_infotype-ort01.                                             "moving City from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-ort02   =    wa_infotype-ort02.                                             "moving District from internal table to valid internal table&lt;/P&gt;&lt;P&gt;  wa_valid-telnr   =    wa_infotype-telnr.                                             "moving Telephone No from internal table to valid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_valid_nonvalidatefield&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  sub_startdate_validaion&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;     "Subroutine to validate start date field&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 sub_startdate_validaion .&lt;/P&gt;&lt;P&gt;*This Funciton module is used for Conversion of date, ie External to&lt;/P&gt;&lt;P&gt;*internal date (like screen conversion)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      date_external            = wa_infotype-begda                                                 "External date or date given in flat file&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      date_internal            = wa_valid-begda                                                    "Date converted to internal format for conversion&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      date_external_is_invalid = 1&lt;/P&gt;&lt;P&gt;      OTHERS                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.                                                                                "If conversion of date fails&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_invalid-begda = wa_infotype-begda.                                                          "moving date from flat file work area to inavlid work area&lt;/P&gt;&lt;P&gt;    CONCATENATE text-035 wa_invalid-begda&lt;/P&gt;&lt;P&gt;    wa_invalid-error INTO wa_invalid-error SEPARATED BY space.                                     " Adding start date error to error field of invalid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_startdate_validaion&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  sub_enddate_validaion&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;     "Subroutine to validate end date field&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 sub_enddate_validaion .&lt;/P&gt;&lt;P&gt;*This Funciton module is used for Conversion of date, ie External to&lt;/P&gt;&lt;P&gt;*internal date (like screen conversion)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      date_external            = wa_infotype-endda                                                 "External date or date given in flat file&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      date_internal            = wa_valid-endda                                                    "Date converted to internal format for conversion&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      date_external_is_invalid = 1&lt;/P&gt;&lt;P&gt;      OTHERS                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.                                                                                "If conversion of date fails&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_invalid-endda = wa_infotype-endda.                                                          "moving date from flat file work area to inavlid work area&lt;/P&gt;&lt;P&gt;    CONCATENATE text-036 wa_invalid-endda&lt;/P&gt;&lt;P&gt;    wa_invalid-error INTO wa_invalid-error SEPARATED BY space.                                     " Adding end date error to error field of invalid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_enddate_validaion&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  sub_invalid_nonvalidatefield&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;    Subroutine for updating non-validated fields into invalid work area&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 sub_invalid_nonvalidatefield .&lt;/P&gt;&lt;P&gt;  wa_invalid-stras   =    wa_infotype-stras.                                           "moving Str&amp;amp;Hou from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-locat   =    wa_infotype-locat.                                           "moving 2nd Address line from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-pstlz   =    wa_infotype-pstlz.                                           "moving Postal Code from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-ort01   =    wa_infotype-ort01.                                           "moving City from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-ort02   =    wa_infotype-ort02.                                           "moving District from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;  wa_invalid-telnr   =    wa_infotype-telnr.                                           "moving Telephone No from internal table to invalid internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_invalid_nonvalidatefield&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  sub_data_updatation&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;      Subroutine for updation of data depending on selected method&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 sub_data_updatation .&lt;/P&gt;&lt;P&gt;  DATA : wa_return_enque TYPE bapireturn1.                                                         "variable to store error values&lt;/P&gt;&lt;P&gt;    clear wa_return_enque.&lt;/P&gt;&lt;P&gt;  LOOP AT t_valid INTO wa_valid.                                                                   "moving valid data to valid work area&lt;/P&gt;&lt;P&gt;    PERFORM sub_bapi_employee_enqueue using wa_return_enque .                                      "Subroutine to lock an employee&lt;/P&gt;&lt;P&gt;    IF wa_return_enque-type NE 'E'.&lt;/P&gt;&lt;P&gt;      PERFORM sub_bapi_addressempdk_create.                                                        "Subroutine to create  employee address data&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;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_data_updatation&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  sub_bapi_employee_enqueue&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;     Subroutine to lock an employee&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;lt;--P_WA_RETURN_ENQUE  wa_return_enque-type&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 sub_bapi_employee_enqueue using p_wa_return_enque LIKE bapireturn1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*This funciton module is used to lock an employee so that the records&lt;/P&gt;&lt;P&gt;*stored for this person cannot be accessed.&lt;/P&gt;&lt;P&gt;*When an employee is locked, only user who has set  lock can access&lt;/P&gt;&lt;P&gt;*records for this employee. Other users are denied access.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      number = wa_valid-pernr                                                                      "Personal number&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      return = p_wa_return_enque.                                                                     "for error values returned&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_bapi_employee_enqueue&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_BAPI_ADDRESSEMPDK_CREATE&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;       Subroutine to create  employee address data&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 sub_bapi_addressempdk_create.&lt;/P&gt;&lt;P&gt;  DATA : wa_data_create TYPE bapireturn1.                                                           "variable to store error values&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*This function module is used create a Address Data record (0006).&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BAPI_ADDRESSEMPDK_CREATE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      employeenumber    = wa_valid-pernr                                                   "Personal No&lt;/P&gt;&lt;P&gt;      validitybegin     = wa_valid-begda                                                   "Begin Date&lt;/P&gt;&lt;P&gt;      validityend       = wa_valid-endda                                                   "End Date&lt;/P&gt;&lt;P&gt;      addresstype       = wa_valid-anssa                                                   "Address type&lt;/P&gt;&lt;P&gt;      streetandhouseno  = wa_valid-stras                                                   "Street and house address&lt;/P&gt;&lt;P&gt;      scndaddressline   = wa_valid-locat                                                   "2nd address line&lt;/P&gt;&lt;P&gt;      city              = wa_valid-ort01                                                   "City&lt;/P&gt;&lt;P&gt;      district          = wa_valid-ort02                                                   "District&lt;/P&gt;&lt;P&gt;      postalcodecity    = wa_valid-pstlz                                                   "Postal Code&lt;/P&gt;&lt;P&gt;      state             = wa_valid-state                                                   "Region(State)&lt;/P&gt;&lt;P&gt;      country           = wa_valid-land1                                                   "Country&lt;/P&gt;&lt;P&gt;      company_apartment = wa_valid-wkwng                                                   "Company Housing&lt;/P&gt;&lt;P&gt;      telephonenumber   = wa_valid-telnr                                                   "Telephone No&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      return            = wa_data_create&lt;/P&gt;&lt;P&gt;      employeenumber    = wa_valid-pernr&lt;/P&gt;&lt;P&gt;      subtype           = wa_valid-anssa&lt;/P&gt;&lt;P&gt;      validitybegin     = wa_valid-begda&lt;/P&gt;&lt;P&gt;      validityend       = wa_valid-endda.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    If error or abend message occurs while uploading data, then moving all the wa_valid fields to wa_invalid fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF wa_data_create-type EQ 'E'&lt;/P&gt;&lt;P&gt;  OR wa_data_create-type EQ 'A'.&lt;/P&gt;&lt;P&gt;    PERFORM         sub_bapi_employee_dequeue.                                                 "Subroutine to unlock an employee&lt;/P&gt;&lt;P&gt;    wa_invalid-pernr        =      wa_valid-pernr .                                            "Personal No&lt;/P&gt;&lt;P&gt;    wa_invalid-begda        =      wa_valid-begda .                                            "Begin Date&lt;/P&gt;&lt;P&gt;    wa_invalid-endda        =      wa_valid-endda .                                            "End Date&lt;/P&gt;&lt;P&gt;    wa_invalid-anssa        =      wa_valid-anssa .                                            "Address type&lt;/P&gt;&lt;P&gt;    wa_invalid-stras        =      wa_valid-stras .                                            "Street and house address&lt;/P&gt;&lt;P&gt;    wa_invalid-locat        =      wa_valid-locat .                                            "2nd address line&lt;/P&gt;&lt;P&gt;    wa_invalid-ort01        =      wa_valid-ort01 .                                            "City&lt;/P&gt;&lt;P&gt;    wa_invalid-ort02        =      wa_valid-ort02 .                                            "District&lt;/P&gt;&lt;P&gt;    wa_invalid-pstlz        =      wa_valid-pstlz .                                            "Postal Code&lt;/P&gt;&lt;P&gt;    wa_invalid-state        =      wa_valid-state .                                            "Region(State)&lt;/P&gt;&lt;P&gt;    wa_invalid-land1        =      wa_valid-land1 .                                            "Country&lt;/P&gt;&lt;P&gt;    wa_invalid-telnr        =      wa_valid-telnr .                                            "Telephone No&lt;/P&gt;&lt;P&gt;    wa_invalid-wkwng        =      wa_valid-wkwng .                                            "Company Housing&lt;/P&gt;&lt;P&gt;    wa_invalid-error        =      wa_data_create-message.					            	&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND wa_invalid TO t_invalid.                                                            "appending wa_invalid to internal table&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    APPEND wa_valid TO t_v_final.                                                              "appending wa_valid to another internal table for the final count of valid records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;    CLEAR: wa_invalid,                                                                         "clearing work area of invalid&lt;/P&gt;&lt;P&gt;           wa_valid.                                                                           "clearing work area of valid&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_BAPI_ADDRESSEMP_CREATE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_bapi_employee_dequeue&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;      Subroutine to unlock an employee&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 sub_bapi_employee_dequeue .&lt;/P&gt;&lt;P&gt;  DATA : wa_return_deque TYPE bapireturn1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*This function module is used to unlock an employee so that the records&lt;/P&gt;&lt;P&gt;*stored for this person can be accessed.&lt;/P&gt;&lt;P&gt;*If an employee is locked using the ENQUEUE method,the user who set the&lt;/P&gt;&lt;P&gt;*lock can access this employee's records.&lt;/P&gt;&lt;P&gt;*Other users are denied access to these records.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      number = wa_valid-pernr                                                                      "Personal number&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      return = wa_return_deque.                                                                     "for error values returned&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_bapi_employee_dequeue&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_download_error_file&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;      Subroutine to download error file for rectifications&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 sub_download_error_file .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    PROVIDE A VARIABLE FOR HOLDING FLAT FILE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONSTANTS :  lc_ftype     TYPE   char10   VALUE   'ASC',&lt;/P&gt;&lt;P&gt;               lc_fsepe     TYPE   char01   VALUE   'X',&lt;/P&gt;&lt;P&gt;               lc_err        TYPE   char5    VALUE   '_err.',                                      "constant to change error file name&lt;/P&gt;&lt;P&gt;               lc_period     TYPE   c        VALUE   '.'.                                          "constant to change error file name&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;               g_errfile    =      p_file.                                                         "STORE FILENAME IN VARIABLE(l_FILE)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SHIFT        g_errfile    BY     4 PLACES RIGHT   CIRCULAR.&lt;/P&gt;&lt;P&gt;  REPLACE      lc_period     WITH  lc_err    INTO    g_errfile.                                    "lc_err to truncate .txt and lc_period to add _err.txt&lt;/P&gt;&lt;P&gt;  SHIFT        g_errfile    BY     8 PLACES LEFT    CIRCULAR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'GUI_DOWNLOAD'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;     filename                        = g_errfile&lt;/P&gt;&lt;P&gt;     filetype                        = lc_ftype&lt;/P&gt;&lt;P&gt;     write_field_separator           = lc_fsepe&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      data_tab                        = t_invalid&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;P&gt;     file_write_error                = 1&lt;/P&gt;&lt;P&gt;     no_batch                        = 2&lt;/P&gt;&lt;P&gt;     gui_refuse_filetransfer         = 3&lt;/P&gt;&lt;P&gt;     invalid_type                    = 4&lt;/P&gt;&lt;P&gt;     no_authority                    = 5&lt;/P&gt;&lt;P&gt;     unknown_error                   = 6&lt;/P&gt;&lt;P&gt;     header_not_allowed              = 7&lt;/P&gt;&lt;P&gt;     separator_not_allowed           = 8&lt;/P&gt;&lt;P&gt;     filesize_not_allowed            = 9&lt;/P&gt;&lt;P&gt;     header_too_long                 = 10&lt;/P&gt;&lt;P&gt;     dp_error_create                 = 11&lt;/P&gt;&lt;P&gt;     dp_error_send                   = 12&lt;/P&gt;&lt;P&gt;     dp_error_write                  = 13&lt;/P&gt;&lt;P&gt;     unknown_dp_error                = 14&lt;/P&gt;&lt;P&gt;     access_denied                   = 15&lt;/P&gt;&lt;P&gt;     dp_out_of_memory                = 16&lt;/P&gt;&lt;P&gt;     disk_full                       = 17&lt;/P&gt;&lt;P&gt;     dp_timeout                      = 18&lt;/P&gt;&lt;P&gt;     file_not_found                  = 19&lt;/P&gt;&lt;P&gt;     dataprovider_exception          = 20&lt;/P&gt;&lt;P&gt;     control_flush_error             = 21&lt;/P&gt;&lt;P&gt;     OTHERS                          = 22&lt;/P&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    MESSAGE i003.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_download_error_file&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  sub_details&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;      Subroutine for loading details&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 sub_details .&lt;/P&gt;&lt;P&gt;  DATA: l_count_total TYPE i,                                                                      "variable to count total no of records&lt;/P&gt;&lt;P&gt;        l_count_valid TYPE i,                                                                      "variable to count no of records uploaded&lt;/P&gt;&lt;P&gt;        l_count_invalid TYPE i.                                                                    "variable to count total no of error records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE :/71 text-018 .                                                                            "title&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE t_infotype LINES l_count_total.                                                   "To count no of lines in internal table&lt;/P&gt;&lt;P&gt;  WRITE :/,text-019 ,30 text-020, 32 l_count_total,157 text-021,164 text-020, 166 sy-datum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE t_v_final LINES l_count_valid.                                                    "To count no of lines in internal table&lt;/P&gt;&lt;P&gt;  WRITE : text-022,30 text-020,32 l_count_valid,157 text-023,164 text-020, 166 sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE t_invalid LINES l_count_invalid.                                                  "To count no of lines in internal table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE : text-025,30 text-020,32 l_count_invalid,157 text-024,164 text-020, 166 sy-uname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE :/,text-026 ,30 text-020 , 40 g_file .                                                     "name of the error file&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Print if only invalid records exist&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT t_invalid[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    WRITE :/,text-027 ,30 text-020 , 40 g_errfile .                                                "variable to count total no of error records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF t_invalid IS INITIAL.&lt;/P&gt;&lt;P&gt;      g_errfile = text-029.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; text-028.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; sy-vline,2 text-030,17 sy-vline, 20 text-031,178 sy-vline.                            "headings&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT t_invalid INTO wa_invalid.                                                             " to display error details&lt;/P&gt;&lt;P&gt;      WRITE  &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt; sy-vline,2 wa_invalid-pernr,17 sy-vline ,20 wa_invalid-error,178 sy-vline.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ULINE.&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;P&gt;ENDFORM.                                                                                " sub_details&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  sub_free&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;      To free the memory allocated to internal tables&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 sub_free .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FREE :  t_infotype,t_valid,t_invalid,t_bdcdata.                                                    "FREE MEMORY ALLOCATED TO VARIOUS INTERNAL TABLES&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                                                " sub_free&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Nov 2008 06:54:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480405#M1060915</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-11-11T06:54:33Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for infotypes</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480406#M1060916</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;ans&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Apr 2009 10:13:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-infotypes/m-p/4480406#M1060916</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-04-14T10:13:46Z</dc:date>
    </item>
  </channel>
</rss>

