ABAP 动态内表,操作动态内表

1.定义:

DATA:DY_TABLE TYPE REF TO DATA,WA_NEW_LINE TYPE REF TO DATA,
     ET_FIELDCAT TYPE LVC_T_FCAT ,ES_FIELDCAT TYPE LVC_S_FCAT,
     LV_STRFIELD TYPE C LENGTH 25,ITEM TYPE I.

FIELD-SYMBOLS:<FS_TABLE> TYPE STANDARD TABLE,<DYN_WA>,<DYN_FIELD> .

DATA:W_IT_FIELD TYPE ABAP_SORTORDER_TAB,W_STR_FIELD TYPE ABAP_SORTORDER.


2.赋值:

CLEAR:ET_FIELDCAT,ES_FIELDCAT.REFRESH :ET_FIELDCAT.

ES_FIELDCAT-COL_POS = 1.
ES_FIELDCAT-FIELDNAME = 'ITEM'.
ES_FIELDCAT-COLTEXT = '序号'.
ES_FIELDCAT-OUTPUTLEN = '5'.
ES_FIELDCAT-INTTYPE = 'I'."'C'
APPEND ES_FIELDCAT TO ET_FIELDCAT.
CLEAR ES_FIELDCAT.

3.创建:

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
  EXPORTING
    IT_FIELDCATALOG = ET_FIELDCAT
  IMPORTING
    EP_TABLE        = DY_TABLE.
ASSIGN DY_TABLE->* TO <FS_TABLE>."创建动态内表

CREATE DATA WA_NEW_LINE LIKE LINE OF <FS_TABLE>.
ASSIGN WA_NEW_LINE->* TO <DYN_WA>.

4.操作

"增加动态内表的值
CLEAR ITEM.
DO 2 TIMES.
  ITEM = ITEM + 1.
  ASSIGN COMPONENT 'ITEM' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>."动态内表字段
  <DYN_FIELD> = ITEM.
  APPEND <DYN_WA> TO <FS_TABLE>.
  CLEAR <DYN_WA> .
ENDDO.

"循环内表+更新
LOOP AT <FS_TABLE> INTO <DYN_WA>.
  ITEM = ITEM + 1.
  ASSIGN COMPONENT 'ITEM' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>." <DYN_FIELD>的值等于<FS_TABLE>-ITEM 字段的值
  <DYN_FIELD> = ITEM.
  MODIFY <FS_TABLE> FROM <DYN_WA>.
ENDLOOP.

"删除

DELETE <FS_TABLE> INDEX 1.
LOOP AT <FS_TABLE> INTO <DYN_WA>.
  ASSIGN COMPONENT 'ITEM' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
  IF <DYN_FIELD> = 4.
    DELETE <FS_TABLE>.
  ENDIF.
ENDLOOP.

5.排序:

W_STR_FIELD-NAME = 'ITEM'.
W_STR_FIELD-DESCENDING = 'X'."'X' DESC ,'' ASC
APPEND W_STR_FIELD TO W_IT_FIELD.
SORT <FS_TABLE> BY (W_IT_FIELD).

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指尖溯光

创作不易您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值