这里面我就没用他上传excel,直接手写的一样的构造表
主要是看实现的列转行的思想,这个很关键,其他的没啥
*&---------------------------------------------------------------------*
*& Report Y_WHS_EXCEL1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Y_WHS_EXCEL1.
TYPES:
BEGIN OF TY_NAME,
COL1 TYPE CHAR5,
COL2 TYPE CHAR5,
COL3 TYPE CHAR5,
END OF TY_NAME,
TY_T_NAME TYPE STANDARD TABLE OF TY_NAME WITH NON-UNIQUE SORTED KEY KEY COMPONENTS COL1.
DATA:
LT_TABLE TYPE TY_T_NAME,
LW_TABLE TYPE TY_NAME,
LT_EXCEL TYPE TABLE OF ALSMEX_TABLINE WITH NON-UNIQUE SORTED KEY KEY COMPONENTS ROW,
LW_EXCEL TYPE ALSMEX_TABLINE.
LT_EXCEL = VALUE #( ( ROW = 1 COL = 1 VALUE = 'VAL1A')
( ROW = 1 COL = 2 VALUE = 'VAL1B')
( ROW = 1 COL = 3 VALUE = 'VAL1C')
( ROW = 2 COL = 1 VALUE = 'VAL2A')
( ROW = 2 COL = 2 VALUE = 'VAL2B')
( ROW = 2 COL = 3 VALUE = 'VAL2C')
( ROW = 3 COL = 1 VALUE = 'VAL3A')
( ROW = 3 COL = 2 VALUE = 'VAL3B')
( ROW = 3 COL = 3 VALUE = 'VAL3C')
).
"对应列有多少列
DATA(L_CNT) = LINES( FILTER #( LT_EXCEL USING KEY KEY WHERE ROW = CONV #( 1 ) ) ).
LOOP AT LT_EXCEL INTO LW_EXCEL.
*·----------常规写法
* AT NEW ROW.
* APPEND INITIAL LINE TO LT_TABLE ASSIGNING FIELD-SYMBOL(<FS>).
* ENDAT.
*
* ASSIGN COMPONENT LW_EXCEL-COL OF STRUCTURE <FS> TO FIELD-SYMBOL(<FS_EXCEL>).
* IF SY-SUBRC = 0.
* <FS_EXCEL> = LW_EXCEL-VALUE.
* ENDIF.
*·----------常规写法
ENDLOOP.
DATA:
L_COUNT TYPE I.
*·----------自己想的写法
LOOP AT LT_EXCEL INTO LW_EXCEL.
* 获取循环的次数用于和列数对比,这样就能控制放入内表的时机
L_COUNT = L_COUNT + 1.
ASSIGN COMPONENT LW_EXCEL-COL OF STRUCTURE LW_TABLE TO FIELD-SYMBOL(<FS_TEST>).
IF SY-SUBRC = 0.
<FS_TEST> = LW_EXCEL-VALUE.
ENDIF.
* 只要是循环了对应的列数,就是一条数据被做成了,就可以放进内表了
IF ( L_COUNT MOD L_CNT ) = 0.
CLEAR L_COUNT.
APPEND LW_TABLE TO LT_TABLE.
ENDIF.
ENDLOOP.
BREAK-POINT.