*SUB( )/*ENDSUB

Структура SUB позволяет пользователю определять логические разделы многократного использования в любом месте тела логики для облегчения чтения и ведения логики.

Структура *SUB( ) объявляется как многострочная структура *FUNCTION( ) со следующим синтаксисом:

*SUB {SubName}({Param1,[,{Param2}…])

{body text}

{body text}

{body text}

[…]

*ENDSUB

Когда SUB затем используется где-либо еще в логике, строки ее тела вставляются в логику с соответствующей заменой всех значений, переданных в ее параметры.

Поведение SUB аналогично поведению включенных файлов, в которые можно передать любое количество параметров. При проверке логики структуры SUB вставляются в тело логики так, как если бы они были включены с помощью инструкции *INCLUDE. Однако для использования структуры SUB специальных ключевых слов не требуется. SUB вызывается вставкой строки с именем SUB, за которым в скобках следуют присвоенные параметрам значения. Другим важным отличием от включенных файлов является отсутствие необходимости записи SUB в собственный файл. Запись можно осуществить в любую часть логики, что более похоже на FUNCTION.

Пример

Ниже приведено определение SUB.

*SUB MYSUB(Param1,Param2,Param3,Param4)

[%ACCOUNT_DIM%].[#Param1]=[%ACCOUNT_DIM%].[Param2]+[%ACCOUNT_DIM%].[Param3]

[%ACCOUNT_DIM%].[#Param4]=[%ACCOUNT_DIM%].[#Param1]*[%ACCOUNT_DIM%].[Factor_Param4]

*ENDSUB

Ниже показано использование SUB.

MySub(A1,B1,C1,D1)

MySub(A2,B2,C2,D2)

MySub(A3,B3,C3,D3)

Подобно FUNCTION, структура SUB не зависит от позиции и может быть определена в любом месте логики, а также, при необходимости, храниться в отдельных файлах библиотеки, которые затем должны быть объединены с логикой с помощью инструкции INCLUDE.

SUB может использоваться в любом разделе commit логики без необходимости переопределения в каждом разделе. Однако если SUB переопределяется в файле логики, то новое определение применяется ко всем строкам, следующим за переопределением.

Структура SUB без параметров поддерживается, но за ней всегда должны следовать скобки.

Любое кодирование программного обеспечения и/или строки текста программы ("Код"), включенные в эту документацию, являются только примерами и не предназначены для использования в среде продуктивной системы. Код предназначен лишь для лучшего объяснения и наглядного представления синтаксиса и правил построения выражений в определенном кодировании. SAP не гарантирует правильность и полноту приведенного здесь Кода. SAP не будет нести ответственность за ошибки и ущерб, возникшие по причине использования этого Кода, за исключением случаев, если такой ущерб нанесен со стороны SAP намеренно или по грубой неосторожности.