Я решал подобную задачу следующим образом.
Следующий код был обернут в ФМ (дистанционный). Его я вызывал из другой системы. В моем случае ещё требовалось ограничение параметра заданным значением.
Code:
FUNCTION z......._chain_start.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(I_UPLOADLABEL) TYPE CHAR20
*" EXPORTING
*" VALUE(E_LOGID) TYPE RSPC_LOGID
*" EXCEPTIONS
*" ERROR
*"----------------------------------------------------------------------
TYPE-POOLS:
rs,
abap.
CONSTANTS:
c_ipack_head TYPE bapi6109-infopackage VALUE 'ZPAK_DOYEVZ2NUA5XBCB27CJC8QZ59',
c_ipack_zakaz TYPE bapi6109-infopackage VALUE 'ZPAK_5P8YGZ3I9IJDJP5MKVH830EI5',
c_ipack_oper TYPE bapi6109-infopackage VALUE 'ZPAK_4C892BZUPQHY8QYPOQ66PKLT9',
c_ipack_comp TYPE bapi6109-infopackage VALUE 'ZPAK_3BZWJONRE8WJSTV62J4AE2O31',
c_chain TYPE rspc_chain VALUE 'Z_QQQQ_START',
c_fnam_uploadlabel TYPE fieldname VALUE 'UPLOADLABEL'. " параметр, который требуется ограничить заданным значением
DATA:
ls_selections TYPE bapi6109sel,
lt_selections TYPE STANDARD TABLE OF bapi6109sel,
ls_return TYPE bapiret2,
lt_return TYPE bapiret2_tab,
l_infopackage TYPE bapi6109-infopackage.
DEFINE mk_check_error.
loop at lt_return into ls_return where type ca 'EAX'.
message id ls_return-id
type ls_return-type
number ls_return-number
with ls_return-message_v1
ls_return-message_v2
ls_return-message_v3
ls_return-message_v4
raising error.
endloop.
END-OF-DEFINITION.
* ограничение выбора данных
ls_selections-fieldname = c_fnam_uploadlabel.
ls_selections-sign = rs_c_range_sign-including.
ls_selections-opt = rs_c_range_opt-equal.
ls_selections-low = i_uploadlabel.
APPEND ls_selections TO lt_selections.
CALL FUNCTION 'BAPI_IPAK_CHANGE'
EXPORTING
infopackage = c_ipack_head
TABLES
selections = lt_selections
return = lt_return.
mk_check_error.
CALL FUNCTION 'BAPI_IPAK_CHANGE'
EXPORTING
infopackage = c_ipack_zakaz
TABLES
selections = lt_selections
return = lt_return.
mk_check_error.
CALL FUNCTION 'BAPI_IPAK_CHANGE'
EXPORTING
infopackage = c_ipack_oper
TABLES
selections = lt_selections
return = lt_return.
mk_check_error.
CALL FUNCTION 'BAPI_IPAK_CHANGE'
EXPORTING
infopackage = c_ipack_comp
TABLES
selections = lt_selections
return = lt_return.
mk_check_error.
* старт цепочки
CALL FUNCTION 'RSPC_CHAIN_START'
EXPORTING
i_chain = c_chain
IMPORTING
e_logid = e_logid.
Для проверки статуса выполнения процесса, можно периодически вызывать следующий Ф.М. (на вход, кроме ИД цепочки, передается logid, полученный при Старте цепочки):
Code:
CALL FUNCTION 'RSPC_API_CHAIN_GET_STATUS'
EXPORTING
i_chain = c_chain
i_logid = i_logid
IMPORTING
e_status = e_status .
Статусы обрабатываете как Вам требуется, а смысл их таков:
Code:
CASE E_STATUS.
WHEN 'R'. ChainMsgText = 'Завершено с ошибкой(ами)'.
WHEN 'G'. ChainMsgText = 'Успешно завершено'.
WHEN 'F'. ChainMsgText = 'Завершено'.
WHEN 'A'. ChainMsgText = 'Активно'.
WHEN 'X'. ChainMsgText = 'Прервано'.
WHEN 'P'. ChainMsgText = 'Запланировано'.
WHEN 'S'. ChainMsgText = 'Пропущено при перезапуске'.
WHEN 'Q'. ChainMsgText = 'Деблокировано'.
WHEN 'Y'. ChainMsgText = 'Готово'.
WHEN '' ChainMsgText = 'Не определено'.
WHEN 'J'. ChainMsgText = 'Ошибка архитектуры при завершении (напр., отсутств. СледОб)'.
ENDCASE.