Method Import file excel vào internal table

Ngày 18 tháng 9 năm 2018 | 298 views

SAP ABAP và Excel là điều không thể thiếu, dev abap thường suyên nhận được yêu cầu phải import file excel vào hệ thống, vậy nên mình làm luôn cái class chuyên import excel đẩy vào internal table.


Trong abap mình hay dùng hàm TEXT_CONVERT_XLS_TO_SAP để đọc file excel vào internal table, nhưng để đọc được vào thì phải cung cấp đường dẫn file cho hàm này, nên để người sử dụng có thể upload 1 file excel tiện dụng hơn thì làm quả open dialog dùng method CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

Các bước thực hiện:

Vào SE24 tạo class: ZCL_IMPORT_XLSX với method public IMPORT_XSLX tham số Exporting để trả ra dữ liệu của internal table sau khi đọc dữ liệu file excel.

Ở đây các bạn để kiểu dữ liệu là standard table, để có thể dùng cho nhiều mẫu biểu excel khác nhau.

Chi tiết code sử lý method như sau:

 METHOD IMPORT_XSLX.
    DATA: LT_FILETABLE   TYPE FILETABLE,
          LS_FILE        TYPE FILE_TABLE,
          LW_RETURN_CODE TYPE I,
          LW_EXT(4)      TYPE C,
          LT_TXT_FILE    TYPE TRUXS_T_TEXT_DATA,
          LW_FILE_NAME   TYPE RLGRAP-FILENAME.
*    Open Dialog
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
      EXPORTING
        DEFAULT_EXTENSION = 'XLSX'
      CHANGING
        FILE_TABLE        = LT_FILETABLE
        RC                = LW_RETURN_CODE.
    READ TABLE LT_FILETABLE INTO LS_FILE INDEX 1.
*   Check extension file
    CALL FUNCTION 'TRINT_FILE_GET_EXTENSION'
      EXPORTING
        FILENAME  = LS_FILE-FILENAME
      IMPORTING
        EXTENSION = LW_EXT.

    IF LW_EXT <> 'XLSX' AND LW_EXT <> 'XLS' AND LW_EXT IS NOT INITIAL.
      MESSAGE 'Only Import File Excel' DISPLAY LIKE 'E'.
      RETURN.
    ENDIF.
    LW_FILE_NAME = LS_FILE-FILENAME.
*   Read data to dynamic table
    CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
      EXPORTING
        I_LINE_HEADER        = 'X'
        I_TAB_RAW_DATA       = LT_TXT_FILE
        I_FILENAME           = LW_FILE_NAME
      TABLES
        I_TAB_CONVERTED_DATA = ET_DATA[]
      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.
    ENDIF.
  ENDMETHOD.

 

Để sử dụng method import excel thì các bạn phải sử dụng kiểu dữ liệu động:

FIELD-SYMBOLS:
    <LF_TAB_DATA> TYPE STANDARD TABLE. " Dynamic Internal table 
" Call method import excel file
CALL METHOD ZCL_IMPORT_XLSX=>IMPORT_XSLX
    IMPORTING
      ET_DATA = <LF_TAB_DATA>.

Kết quả khi chạy method thì mở ra một dialog để cho người sử dụng chọn file excel

 

Abap Dictionary(DDIC)

Ngày 18 tháng 8 năm 2017

18-08-2017
898
ABAP Report

Ngày 10 tháng 9 năm 2017

10-09-2017
978
Giới thiệu ngôn ngữ lập trình ABAP

Ngày 25 tháng 7 năm 2017

25-07-2017
3931