У меня есть этот код, который работает очень хорошо в течение нескольких месяцев:
SUBMIT (IV_REPORT_NAME)
WITH SELECTION-TABLE selection_table
USING SELECTION-SET IV_SELECTION_SET_VARIANT
AND RETURN.
FIELD-SYMBOLS <lt_data> TYPE ANY TABLE.
FIELD-SYMBOLS <lt_data_line> TYPE ANY TABLE.
DATA lr_data TYPE REF TO data.
DATA lr_data_line TYPE REF TO data.
DATA lr_data_descr TYPE REF TO cl_abap_datadescr.
DATA lr_data_line_descr TYPE REF TO cl_abap_datadescr.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING r_data_descr = lr_data_descr
r_data_line_descr = lr_data_line_descr ).
IF lr_data_descr IS NOT BOUND.
ev_result_json = '[]'.
EXIT.
ENDIF.
....
Но для одного отчета lr_data_descr
это "НЕ СВЯЗАНО", если вызывается через rfc.
Это работает, если я запускаю функциональный модуль через «test» в se80.Но если я позвоню через rfc, он не будет связан.Я использую одного и того же пользователя (тип "service") для RFC и SE80.
Другими словами: тот же ввод и тот же код.Он работает с обычной отладкой, но не может (не связан) с удаленной отладкой.
Почему есть разница?
Есть ли способ получить сообщение об ошибке?
Это действительно помогло бы, если бы я мог узнать причину, по которой он не связан.
Я отлаживал в get_data_ref ():
Эта строка ведет себя по-другому:
import t_component to lt_component from memory id cl_salv_bs_runtime_info=>c_memid_data_def.
if sy-subrc eq 0.
Если я тестирую функциональный модуль в se80, то sy-subrc равен 0. Если я выполняю внешнюю отладку (тот же пользователь), то sys-subrc равен 4
.
Это специальный отчет,Это имя: AQZZZMM ========= ZME80FN =======