REPORT zr_dynamic_table_update_excel NO STANDARD PAGE HEADING.
*** --- Data Declarations
DATA:lt_excel TYPE TABLE OF alsmex_tabline,
lt_dref TYPE REF TO data,
ls_dref TYPE REF TO data,
lv_col TYPE i,
lo_alv TYPE REF TO cl_salv_table,
lt_table_filds TYPE TABLE OF dfies.
*** --- Field Symbols
FIELD-SYMBOLS : <fs_table> TYPE any .
FIELD-SYMBOLS : <ft_table> TYPE STANDARD TABLE.
FIELD-SYMBOLS : <dyn_field> .
*** --- Selection screen designing
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS:p_file TYPE rlgrap-filename OBLIGATORY,
p_table TYPE dd02l-tabname OBLIGATORY,
p_test AS CHECKBOX DEFAULT abap_true.
SELECTION-SCREEN END OF BLOCK b1.
*** --- value request for p_file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
*** --- START-OF-SELECTION
START-OF-SELECTION.
*create OBJECT lr_descr.
*** --- Assigning fields symbols for Tables
CREATE DATA lt_dref TYPE TABLE OF (p_table).
CREATE DATA ls_dref TYPE (p_table).
*** --- Assign field symbol with table type of DDIC
ASSIGN lt_dref->* TO <ft_table>.
*** --- Assign field symbol with Structure type of DDIC
ASSIGN ls_dref->* TO <fs_table>.
*** --- Call the Function module ALSM_EXCEL_TO_INTERNAL_TABLE
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 1
i_end_col = 99
i_end_row = 999999
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc EQ 0.
*** --- Sort
SORT lt_excel BY row.
LOOP AT lt_excel INTO DATA(ls_excel).
*** --- Adding count to skip the mapping for MANDT field
lv_col = ls_excel-col + 1.
ASSIGN COMPONENT lv_col OF STRUCTURE <fs_table> TO <dyn_field>.
IF sy-subrc = 0.
***-- Compare Excel sheet column data and Dynamic table fields
IF ls_excel-row = 1.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = p_table
TABLES
dfies_tab = lt_table_filds
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
READ TABLE lt_table_filds INTO DATA(ls_table_fields) INDEX lv_col.
IF sy-subrc = 0.
IF ls_table_fields-fieldname NE ls_excel-value.
WRITE: 'Excel sheet data and Dynamic table fields are not matching'.
EXIT.
ENDIF.
ENDIF.
ELSE.
<dyn_field> = ls_excel-value.
ENDIF.
ENDIF.
IF ls_excel-row GT 1.
AT END OF row.
APPEND <fs_table> TO <ft_table>.
CLEAR <fs_table>.
ENDAT.
ENDIF.
ENDLOOP.
IF <ft_table> IS NOT INITIAL.
IF p_test IS INITIAL.
*** --- Modify
MODIFY (p_table) FROM TABLE <ft_table>.
IF sy-subrc EQ 0.
COMMIT WORK.
DATA(lv_lines) = lines( <ft_table> ).
WRITE: TEXT-002,lv_lines.
ELSE.
ROLLBACK WORK.
MESSAGE TEXT-003 TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.
ELSE.
*** --- Factory Method
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_alv " Basis Class Simple ALV Tables
CHANGING
t_table = <ft_table>
).
*** --- Display
lo_alv->display( ).
ENDIF.
ENDIF.
ENDIF.
출처 : https://blogs.sap.com/2019/09/20/dynamically-update-data-from-excel-to-database-table/
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
204 | Web Dynpro 기초 자료입니다. [2] | kms | 2007.07.20 | 3294 |
203 | ABAP System Fields [5] | hooa | 2009.08.07 | 3293 |
202 | wd 관련4 [4] | 우째 .. | 2007.05.08 | 3293 |
201 | BAPI overview [3] | BEST!! | 2008.01.29 | 3291 |
200 | BSP Application관련 자료입니다. [4] | 혀나미 | 2007.12.04 | 3291 |
199 | Function에 관한 내용 입니다. [11] | Giant | 2008.10.28 | 3290 |
198 | 초간단 Icon 필드에 Icon 넣기.. 딱 4줄... [2] | 지의 | 2007.09.27 | 3289 |
197 | 허접한 문자,숫자구분법 | 도련님 | 2008.10.31 | 3287 |
196 | Overview of ABAP 6.10_BSP_CLASS [7] | activeman | 2008.01.18 | 3287 |
195 | coding standards [2] | sapjoy | 2007.04.24 | 3286 |
194 | ALV 사용하기 [50] | 웰컴 | 2008.12.05 | 3285 |
193 | BDC 플그램 [9] | 체리P. | 2007.08.21 | 3285 |
192 | ABAP Sample P/G eBook [2] | 썬바바 | 2007.09.13 | 3282 |
191 | Data를 Word File 형식으로 출력시키는 법 [3] | 블랙아이즈 | 2009.01.21 | 3281 |
190 | Variant 동적일자 세팅 방법 [2] | SSong | 2007.08.22 | 3280 |
189 | System Architecture [3] | 노냐 | 2009.02.27 | 3275 |
188 | ABAP T-CODE e-book 자료 [5] | magicsy69 | 2008.06.03 | 3275 |
187 | [ABAP] File Controll 관련 자료 [15] | GG | 2009.07.27 | 3271 |
186 | ABAP_Questions [3] | onefineday | 2008.12.28 | 3271 |
185 | Authorization_개요 [4] | xcomedy | 2008.07.19 | 3270 |