Можно сделать как для транзакций, например, AS01-AS03 (по крайней мере, так было реализовано в старых версиях системы):
Для простейшего построения картотеки на экране собственной транзакции следует провести ряд настроек:
V_TAMLAYA_00 - Идентификатор приложения. Вводятся, как характеристики, следующие признаки:
Максимальное число закладок, поддерживаемое приложением (не более 10)
Максимальное число подэкранов, поддерживаемое на каждой закладке
Транзакция основной программы
Пользовательская группа функций - группа функций для расширения набора подэкранов (Unnnn)
Функциональный модуль (проверка?)
V_TAMLAYB_00 - рамки группы. Вводятся стандартные подэкраны (PROG & DYNNR) для каждой группы.
V_TAMLAY0_00 - Идентификатор формата. При выводе картотеки можно использовать различные форматы отображения (набор карточек и групп полей).
V_TAMLAY1_00 - Идентификатор закладки.
V_TAMLAY2_00 - Позиции рамок групп. Перечисление групп подэкранов (берутся из V_TAMLAYB_00 & Группы функций расширения (V_TAMLAYA_00)).
Примечание:
Ведение таблиц пунктов 3-4 осуществляется через ведение кластера ракурсов VC_TAMLAY_00 (транзакция SM34).
Программные шаги:
Простейшая обработка должна проводиться следующим образом:
Code:
PROCESS BEFORE OUTPUT.
MODULE init. " инициализация картотеки
CALL SUBSCREEN tabs INCLUDING 'SAPLATAB' '0100'. " обязательный вызов (!)
PROCESS AFTER INPUT.
CALL SUBSCREEN tabs. " вызов PAI-логики (если есть) подэкранов
MODULE user_command. " обработка команд пользователя
*&---------------------------------------------------------------------*
*& Module init OUTPUT
*&---------------------------------------------------------------------*
* Инициализация экрана просмотра подробной информации
*----------------------------------------------------------------------*
MODULE init OUTPUT.
SET PF-STATUS 'ХХХХХ'.
IF first_run_i IS INITIAL.
* предварительная обработка (исключить ненужные рамки)
CALL FUNCTION 'TABSTRIP_LAYOUT_READ'
EXPORTING
i_appl = pa_appl " приложение
i_layout = pa_layo " формат
TABLES
t_tabs = it_tabs " набор закладок
t_tabscreens = it_scrs. " набор рамок групп
* инициализация TabStrip'a
CALL FUNCTION 'TABSTRIP_INIT'
EXPORTING
i_appl = pa_appl
i_layout = pa_layo
TABLES
t_exclude = it_excl " пользовательское исключение закладок
EXCEPTIONS
not_found = 1
inconsistent_parameter_values = 2
group_box_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
LEAVE SCREEN.
ENDIF.
first_run_i = 'X'.
ENDIF.
ENDMODULE. " init OUTPUT
*&---------------------------------------------------------------------*
*& Module user_command INPUT
*&---------------------------------------------------------------------*
* Обработка команд пользователя
*----------------------------------------------------------------------*
MODULE user_command INPUT.
ok_save = ok_code.
CLEAR ok_code.
IF ok_save(3) = 'TAB'.
CALL FUNCTION 'TABSTRIP_TAB_SET' " установка активной закладки
EXPORTING
i_tab = ok_save+3(2).
EXIT.
ENDIF.
ENDMODULE. " user_command INPUT
Примечание: Расширенную функциональность обработки картотеки можно использовать через ФМ группы ATAB.