В ABAP внутренние таблицы представляют собой фундаментальную структуру данных, используемую для хранения данных и управления ими. Цикл по внутренним таблицам позволяет перебирать элементы и выполнять различные операции. В этой статье блога мы рассмотрим различные методы циклического перемещения по внутренним таблицам на примерах кода.
- Оператор LOOP:
Оператор LOOP — это наиболее распространенный метод перебора внутренних таблиц в ABAP. Это позволяет последовательно обрабатывать каждую запись во внутренней таблице.
DATA: lt_table TYPE TABLE OF string,
lv_value TYPE string.
LOOP AT lt_table INTO lv_value.
WRITE: / lv_value.
ENDLOOP.
- Цикл FOR:
ABAP также предоставляет конструкцию цикла FOR для циклического перемещения по внутренним таблицам. Он позволяет вам определить индексную переменную и перебирать таблицу на основе индекса.
DATA: lt_table TYPE TABLE OF string,
lv_value TYPE string,
lv_index TYPE i.
DO lv_index = 1 TO lines( lt_table ).
lv_value = lt_table[ lv_index ].
WRITE: / lv_value.
ENDDO.
- READ TABLE с INDEX:
Другой способ просмотреть внутреннюю таблицу — использовать оператор READ TABLE с индексом. Вы можете увеличить индекс вручную и получить соответствующую запись.
DATA: lt_table TYPE TABLE OF string,
lv_value TYPE string,
lv_index TYPE i.
lv_index = 1.
READ TABLE lt_table WITH KEY table_line = lv_index INTO lv_value.
WHILE sy-subrc = 0.
WRITE: / lv_value.
lv_index = lv_index + 1.
READ TABLE lt_table WITH KEY table_line = lv_index INTO lv_value.
ENDWHILE.
- LOOP AT с условием WHERE:
Вы можете фильтровать внутренние элементы таблицы, используя условие WHERE в операторе LOOP. Это позволяет обрабатывать только те записи, которые соответствуют указанным критериям.
DATA: lt_table TYPE TABLE OF string,
lv_value TYPE string.
LOOP AT lt_table INTO lv_value WHERE lv_value = 'ABC'.
WRITE: / lv_value.
ENDLOOP.
- LOOP AT с GROUP BY:
Оператор LOOP поддерживает дополнение GROUP BY, которое позволяет группировать записи внутренней таблицы на основе определенного поля. Это полезно для выполнения вычислений или агрегирования сгруппированных данных.
DATA: lt_table TYPE TABLE OF string,
lv_value TYPE string,
lv_group TYPE string.
LOOP AT lt_table INTO lv_value GROUP BY lv_group.
WRITE: / lv_group, lv_value.
ENDLOOP.
В этой статье мы рассмотрели несколько методов циклического перемещения по внутренним таблицам в ABAP. Оператор LOOP, цикл FOR, READ TABLE с INDEX и LOOP AT с условием WHERE и GROUP BY обеспечивают гибкость в обработке данных и манипулировании ими. Освоив эти методы, вы сможете эффективно работать с внутренними таблицами в своих программах ABAP.