MMIM_CALL_TRANSACTION - Вызов транзакций (в основном отчетных), из своих программ. Позволяет делать вызов транзакции как в текущем окне там и путем создания новой сессии/режима. В принципе, если надо сделать красивую интеграцию из своих программ, то можно использовать вместо CALL TRANSACTION.
Пример сделан для вызова транзакции MMBE - Обзор запасов: БЕ/завод/склад/партия. При этом первый экран ввода параметров для селекционного экрана пропускается и вызов делается в том же окне, без открытия новой сессии. Кстати, по поводу новой сессии не плохо бы проверить а есть ли свободные еще режимы...
DATA: lt_parameters LIKE usr05 OCCURS 1 WITH HEADER LINE.
lt_parameters-parid = 'MAT'
LT_PARAMETERS-PARVA = '<Код материала>'.
APPEND lt_parameters.
lt_parameters-parid = 'WRK'
LT_PARAMETERS-PARVA = '<Код завода>'.
APPEND lt_parameters.
CALL FUNCTION 'MMIM_CALL_TRANSACTION'
EXPORTING
i_transaction = 'MMBE'
i_skip_first_screen = 'X'
i_new_mode = ' '
TABLES
it_parameters = lt_parameters
EXCEPTIONS
not_authorized = 1
OTHERS = 2.
Вызов в принципе не сложный:
i_transaction - Код транзакции
i_skip_first_screen - Если задано "X", то выполняется пропуск первого экрана выбора
i_new_mode - Если задано "Х", то будет открыт новый режим, иначе вызов транзакции будет в текущем окне.
it_parameters - Параметры селекционного экрана... откуда их брать, ну жмете F1 в поле селекционного экрана, а там техническая информация и из картинки все как бы ясно, а пример заполнения внутренней таблицы из текста.
Кстати, аналогичный вызов можно сделать используя CALL TRANSACTION, типа так:
SET PARAMETER ID 'MAT' FIELD '<Код материала>'.
SET PARAMETER ID 'WRK' FIELD '<Код завода>'.
CALL TRANSACTION 'MMBE' and skip firs screen.
Что использовать, выбирать вам... я бы использовал функцию, так как ее вызов проверяет полномочия на вызываемую транзакцию и соответсвенно вы это можете обработать, а не вывалить пользователю стандартное окно с сообщением внизу, типа а у вас нет полномочий на транзакцию XXXX. Во-вторых, вызов SET PARAMETER ID 'MAT' FIELD '<Код материала>', само собой затирает значение параметра в памяти, так вот вызов ФМ, это дело обходит и путем запоминания параметров внутри себя перед вызовом транзакции и их востановления при выходе.