Assign语句中的方法调用抛出错误

2020-09-05 14:29发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在尝试将方法调用的结果(对数据的类型引用)"分配"给字段符号时,我遇到了一个奇怪的错误。

 class lcl_test定义创建public。
        
   公共部分。
   受保护的部分。
   私人部分。
   方法get_data_ref
     向数据返回值(r_data)TYPE REF。
  
 结束类。

 lcl_test类的实现。

   方法get_data_ref。

     DATA lr_test_data TYPE REF TO数据。
     使用EMPTY KEY创建数据lr_test_data类型表。
     r_data = lr_test_data。

   方法。

 结束类。

 选择开始。

   FIELD-SYMBOLS:类型任何表。
  
   DATA(O_test)=新的lcl_test()。
  
   ASSIGN o_test-> get_data_ref()-> *至

我不断收到此错误"由于无法测试的源代码已经引用了该类" O_TEST-> GET_DATA_REF(不能创建为" FOR TESTING"。" >

那不可能吗? 我还尝试了使用非通用返回值(char10)。

它分两个步骤工作。 如果您首先将方法" get_data_ref"的结果保存在变量中,然后将该变量传递给Assign语句。

亲切的问候,

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

在尝试将方法调用的结果(对数据的类型引用)"分配"给字段符号时,我遇到了一个奇怪的错误。

 class lcl_test定义创建public。
        
   公共部分。
   受保护的部分。
   私人部分。
   方法get_data_ref
     向数据返回值(r_data)TYPE REF。
  
 结束类。

 lcl_test类的实现。

   方法get_data_ref。

     DATA lr_test_data TYPE REF TO数据。
     使用EMPTY KEY创建数据lr_test_data类型表。
     r_data = lr_test_data。

   方法。

 结束类。

 选择开始。

   FIELD-SYMBOLS:类型任何表。
  
   DATA(O_test)=新的lcl_test()。
  
   ASSIGN o_test-> get_data_ref()-> *至

我不断收到此错误"由于无法测试的源代码已经引用了该类" O_TEST-> GET_DATA_REF(不能创建为" FOR TESTING"。" >

那不可能吗? 我还尝试了使用非通用返回值(char10)。

它分两个步骤工作。 如果您首先将方法" get_data_ref"的结果保存在变量中,然后将该变量传递给Assign语句。

亲切的问候,

付费偷看设置
发送
6条回答
Climb_Ma
1楼-- · 2020-09-05 14:54

在我的系统上对其进行了尝试,并得到了相同的结果。 错误消息是不正确的-应该说一些关于不能取消引用方法调用的信息。 您应该先将get_data_ref转移到公共部分,然后在 support.sap.com 上进行报告!/p>

亦是此间程序员
2楼-- · 2020-09-05 15:11

我在7.52 SP 1中收到语法错误消息:"无法在当前位置指定任何方法。" (无论GET_DATA_REF是私有的还是公共的)。

无论如何,返回的值仅在当前语句的持续时间内存在,因此正常情况下ASSIGN不接受它(至少在ABAP 7.52中)。 还有其他一些情况。

四川大学会员
3楼-- · 2020-09-05 15:04

您正在访问私有方法。 语法错误可能是因为这个原因吗?

亦是此间程序员
4楼-- · 2020-09-05 15:10
  • 在SAP NW 7.50上发生此错误。 同样是的,对我来说,get_data_ref是私有的,当然应该是公开的,这是一个错误。
95年老男孩
5楼-- · 2020-09-05 15:14

我认为这是因为方法链接具有相同的语法(method()-> ...),因此不允许在那里取消引用。

95年老男孩
6楼-- · 2020-09-05 14:53
# p#

否。 因为当您将方法定义移到公共位置时,仍然会收到错误。

一周热门 更多>