EXCEL上传得时候特殊情况
比如excel里面不全是我们需要的,还有一些需要处理EXCEL中的日期,去掉‘-’等
DATA:begin_row TYPE i VALUE '2',
begin_col TYPE i VALUE '1',
end_row TYPE i VALUE '9999',
end_col TYPE i VALUE '90',
filename TYPE rlgrap-filename,
gt_excel TYPE zalsmex_tabline OCCURS 0 WITH HEADER LINE,
gt_excel_copy TYPE zalsmex_tabline OCCURS 0 WITH HEADER LINE,
num TYPE i,
rt_col TYPE RANGE OF kcd_ex_col_n,
rs_col LIKE LINE OF rt_col,
_n_r TYPE char2,
_r TYPE char1.
FIELD-SYMBOLS .
REFRESH:gt_gts_file_line_copy,gt_gts_file_line_2,gt_gts_file_line.
_n_r = cl_abap_char_utilities=>cr_lf.
_r = _n_r+1(1).
rs_col-sign = 'I'.
rs_col-option = 'EQ'.
rs_col-low = '0002'.
APPEND rs_col TO rt_col.
rs_col-low = '0006'.
APPEND rs_col TO rt_col.
rs_col-low = '0010'.
APPEND rs_col TO rt_col.
rs_col-low = '0011'.
APPEND rs_col TO rt_col.
rs_col-low = '0012'.
APPEND rs_col TO rt_col.
rs_col-low = '0013'.
APPEND rs_col TO rt_col.
rs_col-low = '0014'.
APPEND rs_col TO rt_col.
rs_col-low = '0015'.
APPEND rs_col TO rt_col.
rs_col-low = '0016'.
APPEND rs_col TO rt_col.
rs_col-low = '0017'.
APPEND rs_col TO rt_col.
rs_col-low = '0019'.
APPEND rs_col TO rt_col.
rs_col-low = '0020'.
APPEND rs_col TO rt_col.
rs_col-low = '0021'.
APPEND rs_col TO rt_col.
rs_col-low = '0022'.
APPEND rs_col TO rt_col.
rs_col-low = '0023'.
APPEND rs_col TO rt_col.
rs_col-low = '0024'.
APPEND rs_col TO rt_col.
rs_col-low = '0025'.
APPEND rs_col TO rt_col.
rs_col-low = '0029'.
APPEND rs_col TO rt_col.
rs_col-low = '0054'.
APPEND rs_col TO rt_col.
rs_col-low = '0055'.
APPEND rs_col TO rt_col.
rs_col-low = '0056'.
APPEND rs_col TO rt_col.
rs_col-low = '0057'.
APPEND rs_col TO rt_col.
rs_col-low = '0058'.
APPEND rs_col TO rt_col.
rs_col-low = '0060'.
APPEND rs_col TO rt_col.
rs_col-low = '0063'.
APPEND rs_col TO rt_col.
rs_col-low = '0064'.
APPEND rs_col TO rt_col.
filename = p_path.
CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = filename
i_begin_col = begin_col
i_begin_row = begin_row
i_end_col = end_col
i_end_row = end_row
TABLES
intern = gt_excel[].
IF gt_excel[] IS INITIAL.
MESSAGE '请填充数据' TYPE 'S' DISPLAY LIKE 'E'.
* .EXIT.
ENDIF.
SORT gt_excel[] BY row col value.
* DELETE gt_excel[] WHERE col NOT IN rt_col.
*&--------------added by handlmq 17.05.2024 13:04:31 begin---------------------&*
data:I(2) TYPE I.
gt_excel_copy[] = gt_excel[].
DATA:zn TYPE kcd_ex_row_n.
DATA:n TYPE kcd_ex_col_n.
LOOP AT gt_excel_copy.
ON CHANGE OF gt_excel_copy-row.
zn = gt_excel_copy-row.
CLEAR:n.
ENDON.
n = n + 1.
IF n gt_excel_copy-col.
I = gt_excel_copy-col - n.
DO I TIMES.
gt_excel-col = n.
gt_excel-row = zn.
APPEND gt_excel.
n = n + 1.
ENDDO.
ENDIF.
ENDLOOP.
*&--------------added by handlmq 17.05.2024 13:04:31 end-----------------------&*
SORT gt_excel[] BY row col value.
DELETE gt_excel[] WHERE col NOT IN rt_col.
LOOP AT gt_excel.
ON CHANGE OF gt_excel-row.
IF sy-tabix NE 1.
APPEND gs_gts_file_line_copy TO gt_gts_file_line_copy.
CLEAR: gs_gts_file_line_copy,num.
ENDIF.
ENDON.
num = num + 1.
ASSIGN COMPONENT num OF STRUCTURE gs_gts_file_line_copy TO .
IF IS ASSIGNED .
IF num = 18.
REPLACE '-' INTO gt_excel-value WITH ``.
REPLACE '-' INTO gt_excel-value WITH ``.
ENDIF.
IF num = 17.
REPLACE ALL OCCURRENCES OF _r IN gt_excel-value WITH ` `.
REPLACE ALL OCCURRENCES OF '"' IN gt_excel-value WITH ''.
ENDIF.
= gt_excel-value.
UNASSIGN .
ENDIF.
ENDLOOP.
APPEND gs_gts_file_line_copy TO gt_gts_file_line_copy.