Если мы хотим повторно использовать один и тот же набор операторов в программе более одного раза, нам нужно включить их в макрос. Например, макрос может быть полезен для длинных вычислений или для написания сложных операторов WRITE. Мы можем использовать макрос только в той программе, в которой он определен. Определение макроса должно произойти до того, как макрос будет использован в программе.
Макросы разработаны на основе заполнителей. Заполнитель работает как указатели на языке Си. Вы можете определить макрос в операторе DEFINE … END-OF-DEFINITION.
Ниже приведен основной синтаксис определения макроса:
DEFINE <macro_name>. <statements> END-OF-DEFINITION. ...... <macro_name> [<param1> <param2>....].
Необходимо сначала определить макрос, прежде чем вызывать его. <Param1>…. заменяет заполнители & 1 … в инструкциях ABAP, содержащихся в определении макроса.
Максимальное количество заполнителей в определении макроса — девять. То есть, когда программа выполняется, система SAP заменяет макрос соответствующими операторами, а заполнители & 1, & 2,…. & 9 заменяются параметрами param1, param2, …. param9. Мы можем вызвать макрос в другом макросе, но не в том же макросе.
пример
Перейти к транзакции SE38. Создайте новую программу ZMACRO_TEST вместе с описанием в коротком текстовом поле, а также с соответствующими атрибутами, такими как Тип и Состояние, как показано на следующем снимке экрана —
Ниже приведен код —
REPORT ZMACRO_TEST. DEFINE mac_test. WRITE: 'This is Macro &1'. END-OF-DEFINITION. PARAMETERS: s1 type C as checkbox. PARAMETERS: s2 type C as checkbox. PARAMETERS: s3 type C as checkbox default 'X'. START-OF-SELECTION. IF s1 = 'X'. mac_test 1. ENDIF. IF s2 = 'X'. mac_test 2. ENDIF. IF s3 = 'X'. mac_test 3. ENDIF.
У нас есть 3 флажка. Выполняя программу, давайте установим флажок S2.
Приведенный выше код производит следующий вывод —
A Macro Program This is Macro 2
Если все флажки установлены, код выдает следующий вывод: