В скриптах SAP как определить, какие данные отправляются элементу
Мне нужно внести некоторые изменения в SAPScript. У меня есть программа и название формы
Программа: RBOSORDER01 Форма: RBOSORDER02
Я хочу изменить некоторые данные, показанные в форме. Я отладил программу и вижу вызов для записи в форму, например:
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_TEXT'
EXCEPTIONS
ELEMENT = 1
WINDOW = 2.
Но как данные передаются между программой и формой. Я не могу связать между собой. Я ожидал увидеть структуру или элемент данных, переданный с 'ITEM_TEXT', а затем эти данные будут напечатаны в этом элементе "ITEM_TEXT" в форме, но ссылка мне не ясна.
Я посмотрел на форму также в SE71 и не могу видеть, где вы определяете это. Где здесь ссылка, чего мне не хватает?
2 ответа
Это в форме, поэтому SE71 - это то, что вам нужно. Сначала нужно найти окно, в котором отображается этот элемент (ITEM_TEXT), а затем найти элемент и посмотреть, что отображается внутри. Форма SAPSript по умолчанию использует глобальные переменные (структуры, внутренние таблицы) программы печати (есть и другие варианты, например, ВКЛЮЧИТЬ текст). Например, если в программе печати объявлена глобальная переменная gv_text, и она отображается в SAPScript, то она будет выглядеть как &GV_TEXT& в форме.
Вы также можете отлаживать SAPScript, если вы включаете отладку в SE71 (может быть болезненно, если форма большая).
Функция 'WRITE_FORM' просто вызывает EntryPoint формы (SE71 / RBOSORDER02) в этом случае с ELEMENT='ITEM_TEXT'.
Таким образом, вы окажетесь в главном окне по адресу:
/E ITEM_TEXT
/: INCLUDE &VBDPA-TDNAME& OBJECT VBBP ID 0001 PARAGRAPH IT
В этом случае вы должны отладить, что такое "VBDPA-TDNAME" в это время, а затем вы найдете его значение с транзакцией "SO10" (Standard-Text).
INCLUDE может быть сложным текстом и иметь собственные строки формата.
Как сказал ранее Йожеф, VBDPA-TDNAME определено как глобальное в программе печати. (SE38n / RBOSORDER01)