*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 намеренно или по грубой неосторожности.