У меня есть список программ, варианты выбора которых я хотел бы проверить на жестко заданные значения параметров типа BUKRS
.Возможно ли запрограммировать опросы полей экрана (экрана выбора) данной программы, чтобы получить их типы?
Функциональный модуль RS_VARIANT_CONTENTS
выполняет почти все задания, в том, что для данного варианта и программы он возвращает список значений, заполненных этим вариантом.
К сожалению, он не возвращает типы этих параметров, а только их значения. Таким образом, я полагаю, что мне нужна дополнительная проверка, а именно тип параметра, определенного на экране.
Теперь я понимаю, что ключевое слово PARAMETERS
определяет как поле экрана, так и объект данных в текущей программе, тип любого из них будет иметь большую помощь (очевидно, то же самое). Это, конечно, в счастливом случае, когда у меня даже есть объект данных PARAMETERS
, а не SELECT-OPTIONS
.
Я также столкнулся с функциональным модулем DYNPRO_FIELD_GET
, который дает мне поля экрана, как определено на экране выбора, но опять же, никакой помощи с типами .... Так что, любая помощь будет оценена.
Я даже нашел Fuba называется GET_DICTIONARY_FIELDS
, который обещал дать мне то, что я хотел: список всех переменных в программе, которую я мог бы подтвердить со списком заданной RS_VARIANT_CONTENTS
, чтобы получить информацию, которую я хотел - к сожалению, в версии моей системы она неактивна.
[EDIT]
Следует отметить, что RS_SELSCREEN_INFO
возвращает типы объектов данных, как это определено в программе с соответствующими заявлениями. Например, для:
DATA gv_asdfg TYPE mara-matnr.
оно возвращает MARA-MATNR
. Конечно, имя поля таблицы не является указанием имени элемента данных, поэтому:
Чтобы получить домен для этих типов, можно использовать CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME()
и предоставить типы, указанные RS_SELSCREEN_INFO
. Для результирующего объекта необходимо искать свойство ->ABSOLUTE_NAME
. В моем случае это условие ...->ABSOLUTE_NAME = '\TYPE=BUKRS'.