При интеграции, частенько надо вызывать классы и объекты из другой системы. Про динамический вызов класса писал ранее . Сейчас рассмотрим вызов бизнес-объекта (транзакция swo1) из другой системы. Хотя, может подобный код пригодится и для вызова в своей.
Создадим ФМ 'Z_DYN_CALL_BO_METHOD', который сможем вызывать удаленно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
FUNCTION Z_DYN_CALL_BO_METHOD. *IMPORTING * VALUE(IV_OBJKEY) TYPE SWO_OBJTYP * VALUE(IV_OBJKEY) TYPE SWO_TYPEID OPTIONAL * VALUE(IV_METHOD) TYPE SWO_VERB *TABLES * T_CONT TYPE SWCONTTAB DATA ls_object TYPE swc_object. swc_create_object ls_object iv_objtype iv_objkey. IF check sy-subrc IS NOT INITIAL. RETURN. ENDIF. swc_call_method ls_object iv_method t_cont ENDFUNCTION. |
Чтобы макросы отработали, надо в группе функций прописать следующий инклуд:
include <cntn01>.
Вызов примерно такой
1 2 3 4 5 6 7 |
CALL FUNCTION 'Z_DYN_CALL_BO_METHOD' DESTINATION 'TARGET_SYSTEM' EXPORTING iv_type = 'OBJECT_NAME' iv_method = 'METHOD_NAME' TABLES container = container "Предполагаю, что вы знаете что вам надо для запуска . |
Всё.
P.S.
Идея не моя, подсмотрел реализацию в системе.