Создание нового сценария для инфо-типа 1222 (Часть 2)
Создание нового сценария для инфо-типа 1222 (Часть 2)
Продолжая, и одновременно заканчивая тему работы с атрибутами инфо-типа 1222, в данной заметке рассмотрим пример использования сценария инфо-типа 1222 с возможностью выбора пользователем значений из Z* таблицы. За основу я возьму ранее настроенный атрибут и сценарий. В качестве таблицы-источника, возьму ранее созданную таблицу ZUSER_VALUES. Пока более чем достаточно.
Откроем настроечную таблицу T77OMATTR в транзакции SM30, и внесем изменения в наш атрибут, заменив имя таблицы и поля

К сожалению, в стандарте отсутствует возможность настройки, при активации которой, станет доступным выбор значений из Z* таблицы. Здесь пригодится старый добрый ABAP, который и поможет выбрать значения из любой таблицы, которую мы захотим. Необходимо создать функциональный модуль со следующими параметрами импорта/экспорта:


Далее привожу исходный код ФМ, который, ни в коем разе не претендует на то, на что может претендовать ABAP-код вообще:
DATA: BEGIN OF ls_data,
id LIKE zuser_values-id,
text LIKE zuser_values-text,
END OF ls_data.
DATA lt_data LIKE TABLE OF ls_data.
DATA lt_zuser_values TYPE TABLE OF zuser_values.
DATA ls_return TYPE ddshretval.
DATA lt_return TYPE TABLE OF ddshretval.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM zuser_values.
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
retfield = ‘ID’
value_org = ‘S’
TABLES
value_tab = lt_data
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE lt_return INTO ls_return INDEX 1.
IF ( sy-subrc = 0 ).
sel_value = ls_return-fieldval.
ELSE.
sel_value = seark.
ENDIF.
Думаю, что не стоит объяснять, что нужно делать, если наименования полей/таблиц отличается от того, что представлено выше.
Продолжим настройку, открыв узел Атрибуты/Сценарий таблицы T77OMATTR, добавив наименование только созданного ФМ в соответствующее поле

Похоже на то, что мы все сделали. Начинаем тестирование, открыв транзакцию PPOMA, выбрав штатную должность, и созданный атрибут:
