ALSM_EXCEL_TO_INTERNAL_TABLE的用法

这里面我就没用他上传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.

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值