我有这段代码,它已经运行了好几个月了:
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调用的,则表示“不受限制”。
如果我通过se80中的“测试”运行功能模块,则它可以工作。但是,如果我通过rfc调用它,则它没有绑定。我对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 =======