【发布时间】:2020-05-21 04:20:00
【问题描述】:
我见过几个 ABAP 标准方法,它们返回对数据的引用作为结果。
CL_ABAP_EXCEPTIONAL_VALUES=>GET_MAX_VALUE( ) 就是其中一种方法。我的自然倾向是在一行中使用此方法,如下所示:
DATA lv_max_value TYPE i.
lv_max_value = CL_ABAP_EXCEPTIONAL_VALUES=>GET_MAX_VALUE( lv_max_value )->*.
很遗憾,这不起作用,因为:
函数方法“GET_MAX_VALUE”的结果类型不是对象 引用或接口引用。
手头的问题是:是否可以直接取消引用这些结果?
只要我确定结果是兼容的,我宁愿避免使用旧的取消引用方法(存储引用,将其分配给字段符号,然后将其放入目标变量):
DATA lv_max_value TYPE i.
DATA ref TYPE REF TO data.
FIELD-SYMBOLS <field> TYPE any.
ref = CL_ABAP_EXCEPTIONAL_VALUES=>GET_MAX_VALUE( lv_max_value ).
ASSIGN ref->* TO <field>.
lv_max_value = <field>.
对于一个简单的动作来说,这似乎是一个巨大的操作。
【问题讨论】:
-
请注意,我对问题进行了编辑以使其提出minimal reproducible example,以便为未来的访问者增加问题的价值。
标签: return-value abap dereference