SAP (ABAP) - Carga de Fichero Excel

*-------------------------------------------------------------*
*
*&------------------------------------------------------------*
*&      Form  lee_fichero_excel
*&------------------------------------------------------------*
form lee_fichero_excel.

  DATA x_resp.
  data _matnr like mvke-matnr.
  DATA indice like sy-tabix.

  DATA: l_filename TYPE string,
       BEGIN OF lt_file OCCURS 0,
         text TYPE string,
       END OF lt_file.


  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
    EXPORTING
*     DEFAULTOPTION        = 'Y'
      TEXTLINE1            = '¿Fichero excel tiene linea 1 como'
      TEXTLINE2            = ' títulos de cabecera?'
      TITEL                = 'Sobre fichero Excel'
      START_COLUMN         = 25
      START_ROW            = 6
*     CANCEL_DISPLAY       = 'X'
    IMPORTING
      ANSWER               = X_RESP.
  IF X_RESP = 'A'.
    STOP.
  ENDIF.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      FILENAME                = P_FILE1
      I_BEGIN_COL             = 1
      I_BEGIN_ROW             = 1
      I_END_COL               = 20
      I_END_ROW               = 9999
    TABLES
      INTERN                  = INTERN
    EXCEPTIONS
      INCONSISTENT_PARAMETERS = 1
      UPLOAD_OLE              = 2
      OTHERS                  = 3.
  IF SY-SUBRC <> 0.

*    MESSAGE E025 WITH P_FILE1.
    CLEAR: lt_messages.
    lt_messages-type       = 'E'.
    lt_messages-id         = 'ZSD'.
    lt_messages-number     = '025'.
    lt_messages-message_v1 = P_FILE1.
    APPEND lt_messages.

  ELSE.

    CLEAR: lt_messages.
    lt_messages-type       = 'S'.
    lt_messages-id         = '00'.
    lt_messages-number     = '398'.
    lt_messages-message_v1 = 'Fichero cargado correctamente'.
    APPEND lt_messages.


    LOOP AT INTERN.
      AT NEW ROW.
        CLEAR ITAB.
      ENDAT.

      IF X_RESP EQ 'J'.
        CHECK INTERN-ROW > 0001.
      ENDIF.

      CASE INTERN-COL.
        WHEN 1.
         ITAB-KSCHL = INTERN-VALUE.
        WHEN 2.
          ITAB-VKORG = INTERN-VALUE.
        WHEN 3.
          ITAB-VTWEG = INTERN-VALUE.
        WHEN 4.
          ITAB-SPART = INTERN-VALUE.
        WHEN 5.
           PERFORM PONE_ZEROS USING INTERN-VALUE ITAB-VKBUR.
      ENDCASE.

      AT END OF ROW.
        APPEND ITAB.
      ENDAT.
    ENDLOOP.


    LOOP AT ITAB.


    ENDLOOP.

  ENDIF.

endform.                    " lee_fichero_excel