Abap 方法“;获取“U数据参考”;不存在(cl_salv_bs_runtime_info),为什么?

Abap 方法“;获取“U数据参考”;不存在(cl_salv_bs_runtime_info),为什么?,abap,Abap,我无法使用cl\u salv\u bs\u runtime\u info=>get\u data\u ref,因为我遇到以下语法错误: 方法“GET_DATA_REF”不存在。然而,有一种方法是 类似名称“获取数据” 可能我使用的是较新或较旧版本的SAP,还是其他版本 我的代码: REPORT ZSAM1. TYPES: BEGIN OF ty_report, rec_acc TYPE skont, vendor TYPE LFA1-LIFNR,

我无法使用
cl\u salv\u bs\u runtime\u info=>get\u data\u ref
,因为我遇到以下语法错误:

方法“GET_DATA_REF”不存在。然而,有一种方法是 类似名称“获取数据”

可能我使用的是较新或较旧版本的SAP,还是其他版本

我的代码:

REPORT  ZSAM1.

 TYPES: BEGIN OF ty_report,
          rec_acc TYPE skont,
          vendor TYPE LFA1-LIFNR,
          jan_deb TYPE BSEG-WRBTR,
          jan_cred TYPE BSEG-WRBTR,
          feb_deb TYPE BSEG-WRBTR,
          feb_cred TYPE BSEG-WRBTR,
          mar_deb TYPE BSEG-WRBTR,
          mar_cred TYPE BSEG-WRBTR,
          apr_deb TYPE BSEG-WRBTR,
          apr_cred TYPE BSEG-WRBTR,
          may_deb TYPE BSEG-WRBTR,
          may_cred TYPE BSEG-WRBTR,
          jun_deb TYPE BSEG-WRBTR,
          jun_cred TYPE BSEG-WRBTR,
          jul_deb TYPE BSEG-WRBTR,
          jul_cred TYPE BSEG-WRBTR,
          aug_deb TYPE BSEG-WRBTR,
          aug_cred TYPE BSEG-WRBTR,
          sep_deb TYPE BSEG-WRBTR,
          sep_cred TYPE BSEG-WRBTR,
          oct_deb TYPE BSEG-WRBTR,
          oct_cred TYPE BSEG-WRBTR,
          nov_deb TYPE BSEG-WRBTR,
          nov_cred TYPE BSEG-WRBTR,
          dec_deb TYPE BSEG-WRBTR,
          dec_cred TYPE BSEG-WRBTR,
          acc_bal_deb TYPE BSEG-WRBTR,
          acc_bal_cred TYPE BSEG-WRBTR,
        END OF ty_report,
        tt_report TYPE TABLE OF ty_report.

DATA:  lt_report TYPE tt_report,
       lv_ukurs type tcurr-ukurs,
       Tcurr1 type tcurr,
       fieldname(4) type c,
       fnamedebit(20) type c,
       fnamecredit(20) type c.

FIELD-SYMBOLS: <fs_rep> LIKE LINE OF lt_report.


 select single ukurs from tcurr
        into lv_ukurs
        where fcurr = 'EUR'
        and   tcurr = 'AUD'. "<- your  local currency

DATA: lr_pay_data        TYPE REF TO data,
      lr_pay_data_line   TYPE REF TO data,
      lr_data_descr      TYPE REF TO cl_abap_datadescr,
      lr_data_line_descr TYPE REF TO cl_abap_datadescr.

FIELD-SYMBOLS: <lt_pay_data>      TYPE ANY TABLE,
               <ls_pay_data_line> TYPE ANY TABLE.

  cl_salv_bs_runtime_info=>set(
    EXPORTING display  = abap_false
              metadata = abap_false
              structure = ''
              data     = abap_true ).

SUBMIT RFKSLD00 via SELECTION-SCREEN and return.


cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING r_data_descr = lr_data_descr
     r_data_line_descr = lr_data_line_descr ).

CREATE DATA lr_pay_data TYPE HANDLE lr_data_descr.
CREATE DATA lr_pay_data_line TYPE HANDLE lr_data_descr.

ASSIGN lr_pay_data->* TO <lt_pay_data>.
ASSIGN lr_pay_data_line->* TO <ls_pay_data_line>.

cl_salv_bs_runtime_info=>get_data(
  IMPORTING t_data = <lt_pay_data> 
        t_data_line = <ls_pay_data_line> ).

LOOP AT <lt_pay_data> ASSIGNING <ls_pay_data_line>.

 APPEND INITIAL LINE to lt_report ASSIGNING <fs_rep>.
 MOVE-CORRESPONDING <ls_pay_data_line> TO <fs_rep>.

WRITE: / <ls_pay_data_line>.

ENDLOOP.

Write: 'Program End!'.
报告ZSAM1。
类型:从ty_报告开始,
rec_acc类型skont,
供应商类型LFA1-LIFNR,
jan_deb型BSEG-WRBTR,
jan_cred类型BSEG-WRBTR,
feb_deb型BSEG-WRBTR,
feb_cred类型BSEG-WRBTR,
mar_deb型BSEG-WRBTR,
mar_cred类型BSEG-WRBTR,
apr_deb型BSEG-WRBTR,
apr_cred类型BSEG-WRBTR,
may_deb型BSEG-WRBTR,
可认证BSEG-WRBTR型,
jun_deb型BSEG-WRBTR,
jun_cred类型BSEG-WRBTR,
jul_deb型BSEG-WRBTR,
7月cred型BSEG-WRBTR,
aug_deb型BSEG-WRBTR,
aug_cred类型BSEG-WRBTR,
sep_deb型BSEG-WRBTR,
sep_cred类型BSEG-WRBTR,
oct_deb型BSEG-WRBTR,
oct_cred类型BSEG-WRBTR,
nov_deb型BSEG-WRBTR,
nov_cred类型BSEG-WRBTR,
dec_deb型BSEG-WRBTR,
dec_cred类型BSEG-WRBTR,
acc_bal_deb型BSEG-WRBTR,
acc_bal_cred类型BSEG-WRBTR,
蒂尤报告结束,
TTU报告的TTU报告类型表。
数据:lt_报告类型tt_报告,
lv_ukurs型tcurr ukurs,
Tcurr1型tcurr,
字段名(4)类型c,
fnamedebit(20)c类,
fnamecredit(20)c类。
字段符号:如lt_报告的行。
从tcurr中选择单个ukurs
进入吕库斯
其中fcurr=‘欧元’
而tcurr='AUD'。“设定(
导出显示=abap\U false
metadata=abap\U false
结构=“”
数据=abap_真)。
通过选择屏幕提交RFKSLD00并返回。
cl_salv_bs_运行时_info=>get_data_ref(
导入r_数据\u描述=lr_数据\u描述
r_数据_线_描述=lr_数据_线_描述)。
创建数据lr_pay_数据类型句柄lr_数据描述。
创建数据lr\U pay\U DATA\U线型句柄lr\U DATA\U descr。
将lr_pay_数据->*分配给。
将lr\U pay\U数据线->*分配给。
cl_salv_bs_运行时_info=>get_数据(
导入t_数据=
t_data_line=)。
在分配时循环。
将初始行附加到lt_报告。
移动-对应于。
写:/。
结束循环。
写:“程序结束!”。

语法错误告诉您该方法不存在。如果您查看相关类时没有看到该方法,那么当然这意味着该方法在您的系统中不存在

软件不断发展。在新版本中,有时会有新程序,有时会删除其他程序。这就是生活


注:请注意,官方不支持class
cl\u salv\u bs\u runtime\u info
。使用它的风险自负。

我最近也遇到了同样的问题

此错误是由cl_salv_bs_runtime_info版本没有方法GET_DATA_REF引起的

您可能想尝试阅读这篇文章

在接近尾声的文章中,他们描述了get_data_ref和get_data之间的区别。由于我们没有get_data_ref,如果我们想从submit程序检索alv数据,我们只能使用get_data report。您可能已经注意到,在这个版本中,在

cl_salv_bs_运行时_信息=>set( 导出显示=abap\U false metadata=abap\U false 结构=“” 数据=abap_真)

这是因为方法get_data不能用于动态表。在检索数据之前,我们需要先了解其结构。由于您要提交标准程序RFKSLD00,可以首先搜索其中使用的结构。找到结构后,可以将结构名称放入结构参数中

之后,您可以使用上面提交的结构声明一个内部表,并将该内部表放入get_data方法中的to t_data参数中


希望这个答案能有所帮助。

语法错误告诉您一些事情,如果您查看相关类,您什么也看不到,那么当然这意味着您的系统中不存在该类。请注意,该类没有官方支持。使用该类的风险由您自担。