代码之家  ›  专栏  ›  技术社区  ›  guettli

为什么cl\u salv\u bs\u runtime\u info=>get\u data\u ref()的r\u data\u line\u descr没有绑定?

  •  0
  • guettli  · 技术社区  · 6 年前

    这个代码已经运行了好几个月了:

    SUBMIT (IV_REPORT_NAME)
       WITH SELECTION-TABLE selection_table
       USING SELECTION-SET IV_SELECTION_SET_VARIANT
    AND RETURN.
    
    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( 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.
    

    但在其中一种情况下,它是通过RFC调用并抛出的

    lr\u data\u descr未绑定

    它通过SE37工作得很好,但是如果通过RFC执行,就会抛出错误,尽管我对RFC和SE37使用了完全相同的用户(类型“service”),相同的输入和相同的代码。

    为什么会有区别?有没有办法得到一些错误信息?

    如果我能弄清楚为什么它不受约束的话,这真的很有帮助。我调试到get\u data\u ref()中,发现这行的行为不同:

    import t_component to lt_component from memory id
    cl_salv_bs_runtime_info=>c_memid_data_def.
    if sy-subrc eq 0.
    

    如果我测试se37中的功能模块 sy-subrc 是0,如果我对同一个用户进行外部调试

    这是一份临时报告,它的名字是 AQZZZMM=========ZME80FN=======

    0 回复  |  直到 4 年前
        1
  •  3
  •   Sandra Rossi    6 年前

    唯一的情况是 r_data_line_descr 属于 cl_salv_bs_runtime_info=>get_data_ref()

    • ALV不被称为

    %runmode-show_on

    因此,您的问题可能是由于pyRFC程序传递的选择值不对应。从SAP调用查询时,这些值不同并返回一些数据(通过debug检查以验证哪些值不同)。

    enter image description here

    推荐文章