10 способов освоить циклы в ABAP: руководство для начинающих

Если вы новичок в программировании ABAP, освоение циклов — важнейший навык. Циклы позволяют перебирать набор данных и эффективно выполнять повторяющиеся задачи. В этом сообщении блога мы рассмотрим 10 различных методов цикла от 1 до 10 в ABAP, сопровождаемые простыми для понимания примерами кода. Итак, давайте углубимся и станем экспертами по циклам!

  1. Цикл DO:
    Цикл DO — это базовая конструкция в ABAP, которая позволяет повторять блок кода указанное количество раз. Вот как можно выполнить цикл от 1 до 10 с помощью цикла DO:
DO 10 TIMES.
  WRITE: / 'Loop iteration:', sy-index.
ENDDO.
  1. Цикл WHILE:
    Цикл WHILE используется, когда вы хотите повторить блок кода, пока выполняется определенное условие. Вот пример цикла WHILE, который считает от 1 до 10:
DATA: counter TYPE i VALUE 1.
WHILE counter <= 10.
  WRITE: / 'Loop iteration:', counter.
  counter = counter + 1.
ENDWHILE.
  1. Цикл FOR:
    Цикл FOR обычно используется, когда у вас есть известное количество итераций. Вот как можно использовать цикл FOR для достижения желаемого результата:
DATA: counter TYPE i.
DO counter = 1 TO 10.
  WRITE: / 'Loop iteration:', counter.
ENDDO.
  1. LOOP AT… ENDLOOP:
    Оператор LOOP AT позволяет перебирать внутреннюю таблицу или таблицу базы данных. Вот пример, демонстрирующий цикл от 1 до 10 с использованием внутренней таблицы:
DATA: itab TYPE TABLE OF i.
DO 10 TIMES.
  itab = sy-index.
  APPEND itab TO itab.
ENDDO.
LOOP AT itab INTO DATA(value).
  WRITE: / 'Loop iteration:', value.
ENDLOOP.
  1. LOOP AT… WHERE… ENDLOOP:
    Инструкцию LOOP AT можно комбинировать с условием WHERE для фильтрации данных, которые вы хотите обработать. Вот пример, который печатает только четные числа от 1 до 10:
DATA: itab TYPE TABLE OF i.
DO 10 TIMES.
  itab = sy-index.
  APPEND itab TO itab.
ENDDO.
LOOP AT itab INTO DATA(value) WHERE value MOD 2 = 0.
  WRITE: / 'Even number:', value.
ENDLOOP.
  1. LOOP AT… GROUP BY… ENDLOOP:
    Оператор LOOP AT также можно использовать с предложением GROUP BY для группировки данных на основе определенного поля. Вот пример группировки четных и нечетных чисел от 1 до 10:
DATA: itab TYPE TABLE OF i.
DO 10 TIMES.
  itab = sy-index.
  APPEND itab TO itab.
ENDDO.
LOOP AT itab INTO DATA(value) GROUP BY value MOD 2.
  IF sy-group = 0.
    WRITE: / 'Even number:', value.
  ELSE.
    WRITE: / 'Odd number:', value.
  ENDIF.
ENDLOOP.
  1. LOOP AT… INTO… ASSIGNING… ENDLOOP:
    Оператор LOOP AT можно комбинировать с предложением ASSIGNING, чтобы присвоить переменную цикла символу поля. Вот пример:
DATA: itab TYPE TABLE OF i.
DO 10 TIMES.
  itab = sy-index.
  APPEND itab TO itab.
ENDDO.
LOOP AT itab INTO DATA(value) ASSIGNING FIELD-SYMBOL(<fs>).
  WRITE: / 'Loop iteration using field symbol:', <fs>.
ENDLOOP.
  1. LOOP AT … REFERENCE INTO … ENDLOOP:
    Инструкцию LOOP AT можно комбинировать с предложением REFERENCE INTO для циклического перебора набора ссылок. Вот пример:
DATA: itab TYPE TABLE OF REF TO i.
DO 10 TIMES.
  CREATE DATA DATA(value) TYPE i.
  ASSIGN value->* TO itab.
  APPEND itab TO itab.
ENDDO.
LOOP AT itab REFERENCE INTO DATA(ref).
  WRITE: / 'Loop iteration using reference:', ref->*.
ENDLOOP.
  1. LOOP AT… TRANSPORTING NO FIELDS… ENDLOOP:
    Оператор LOOP AT можно комбинировать с предложением TRANSPORTING NO FIELDS, чтобы пропустить ненужную транспортировку данных. Вот пример, демонстрирующий это:
DATA: itab TYPE TABLE OF i.
DO 10 TIMES.
  itab = sy-index.
  APPEND itab TO itab.
ENDDO.
LOOP AT itab TRANSPORTING NO FIELDS.
  WRITE: / 'Loop iteration withouttransporting any fields:', sy-tabix.
ENDLOOP.
  1. LOOP AT… EXIT… ENDLOOP:
    Инструкцию LOOP AT можно комбинировать с предложением EXIT для преждевременного выхода из цикла в зависимости от условия. Вот пример:
DATA: itab TYPE TABLE OF i.
DO 10 TIMES.
  itab = sy-index.
  APPEND itab TO itab.
ENDDO.
LOOP AT itab INTO DATA(value).
  WRITE: / 'Loop iteration:', value.
  IF value = 5. " Exit the loop when the value is 5
    EXIT.
  ENDIF.
ENDLOOP.

В этой записи блога мы рассмотрели 10 различных методов цикла от 1 до 10 в ABAP. Освоив эти методы, вы будете хорошо подготовлены к выполнению повторяющихся задач и эффективной обработке данных в своих программах ABAP. Не забывайте практиковаться и экспериментировать с этими конструкциями циклов, чтобы стать более опытными в программировании ABAP. Приятного кодирования!