本文主要是介绍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).
这篇关于ABAP 动态内表,操作动态内表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!