Почему r_data_line_descr из cl_salv_bs_runtime_info => get_data_ref () не связана? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть этот код, который работает очень хорошо в течение нескольких месяцев:

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 =======

1 Ответ

1 голос
/ 30 апреля 2019

Единственный случай, когда r_data_line_descr из cl_salv_bs_runtime_info=>get_data_ref() не связан:

  • ALV не вызывается

С запросами SAPquery это происходит, когда нетданные извлекаются (в программе запросов переменная %runmode-show_on пуста, когда данных нет, ALV не отображается, см. снимок экрана ниже).

Итак, ваша проблема, вероятно, связана с выбором значений, переданныхваша программа pyRFC, которая ничего не соответствует.Когда вы вызываете запрос из SAP, эти значения отличаются и возвращают некоторые данные (проверьте с помощью отладки, чтобы проверить, какие значения отличаются).

enter image description here

...