REPORT  ztest_pillar.
TYPE-POOLS: VRM ,TRUXS,ICON,SLIS.
DATA:GT_RAW_DATA TYPE TRUXS_T_TEXT_DATA.
DATA: BEGIN OF IT_ITAB OCCURS 0,
        MATERIAL TYPE MARA-MATNR,
        UNIT  TYPE /AFS/BAPI_MEAN-UNIT,
        EAN_CAT TYPE /AFS/BAPI_MEAN-EAN_CAT,
        GRID_VALUE TYPE  /AFS/BAPI_MEAN-GRID_VALUE,
        EAN_UPC TYPE  /AFS/BAPI_MEAN-EAN_UPC,
        log type string,
        flag(1) type c,
      END OF IT_ITAB.
SELECTION-SCREEN BEGIN OF BLOCK B002 WITH FRAME TITLE TEXT-005.
  PARAMETERS:P_FILE TYPE RLGRAP-FILENAME modif id IMP ."OBLIGATORY .
SELECTION-SCREEN END OF BLOCK B002.
AT SELECTION-SCREEN on VALUE-REQUEST FOR P_file.
  PERFORM f_file_select.
START-OF-SELECTION.
      PERFORM F_SOURCE_DATA_UPLOAD.
end-of-SELECTION.
FORM F_FILE_SELECT .
  DATA:LT_FILE TYPE FILETABLE WITH HEADER LINE,
          REC TYPE I.
  DATA: L_filter TYPE STRING.
  CONCATENATE   CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
            CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL
        INTO L_filter.
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    EXPORTING
      WINDOW_TITLE            = 'Upload Excel'
*      default_extension       = '.xls'
*    default_filename        =
      file_filter             = L_filter
      INITIAL_DIRECTORY       = 'C:/'
    CHANGING
      FILE_TABLE              = LT_FILE[]
      RC                      = REC
    EXCEPTIONS
      FILE_OPEN_DIALOG_FAILED = 1
      CNTL_ERROR              = 2
      ERROR_NO_GUI            = 3
      NOT_SUPPORTED_BY_GUI    = 4
      OTHERS                  = 5
          .
  IF  REC >= 1.
    READ TABLE LT_FILE INDEX 1.
    P_FILE = LT_FILE-FILENAME.
  ELSEIF REC = 0.
    CLEAR P_FILE.
  ELSE.
    MESSAGE E000(ZMM) WITH text-e01.
*   &1 &2 &3 &4
  ENDIF.
ENDFORM.                    " F_FILE_SELECT
FORM F_SOURCE_DATA_UPLOAD .
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*     I_FIELD_SEPERATOR          =
     I_LINE_HEADER              = 'X'
      I_TAB_RAW_DATA             = GT_RAW_DATA
      I_FILENAME                 = P_FILE
    TABLES
      I_TAB_CONVERTED_DATA       =  IT_ITAB
   EXCEPTIONS
     CONVERSION_FAILED          = 1
     OTHERS                     = 2
            .
  IF SY-SUBRC <> 0.
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
*** Delete header line
    DELETE IT_ITAB INDEX 1.
  ENDIF.
  IF IT_ITAB[] IS INITIAL.
    MESSAGE s000(ZMM) WITH TEXT-E03 display like 'E'.
    leave list-processing.
*   &1 &2 &3 &4
  ENDIF.
ENDFORM.                    " F_SOURCE_DATA_UPLOAD