使导出参数指向现有的内存引用

2020-08-19 02:33发布

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

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


大家好,

我有一个内部表,其中列出了通用内存引用,并且希望能够使用一种方法来检索它们。 我想要的是将内存引用分配给我的方法的export参数,这样我就可以使用该参数来更改引用的数据。 我该如何完成这项行为? 我的方法目前看起来像这样,但是结果是export参数是引用对象的副本,因此对其进行更改不会更新引用数据。

 *签名
    方法get_param
     输入
       iv_id_param TYPE clike
     出口
       ev_val TYPE任意。
 * IMPL

   方法get_param。
     数据:lr_ref TYPE REF TO数据。

     FIELD-SYMBOLS: TYPE任意。

     zif_cx_enh_param_map〜get_param_ref(
       出口
         iv_id_param = iv_id_param
       输入
         er_ref = lr_ref
     )。

     ASSIGN lr_ref-> *至。
     ev_val = 。
   终结法。
 

感谢您的帮助!

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

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


大家好,

我有一个内部表,其中列出了通用内存引用,并且希望能够使用一种方法来检索它们。 我想要的是将内存引用分配给我的方法的export参数,这样我就可以使用该参数来更改引用的数据。 我该如何完成这项行为? 我的方法目前看起来像这样,但是结果是export参数是引用对象的副本,因此对其进行更改不会更新引用数据。

 *签名
    方法get_param
     输入
       iv_id_param TYPE clike
     出口
       ev_val TYPE任意。
 * IMPL

   方法get_param。
     数据:lr_ref TYPE REF TO数据。

     FIELD-SYMBOLS: TYPE任意。

     zif_cx_enh_param_map〜get_param_ref(
       出口
         iv_id_param = iv_id_param
       输入
         er_ref = lr_ref
     )。

     ASSIGN lr_ref-> *至。
     ev_val = 。
   终结法。
 

感谢您的帮助!

付费偷看设置
发送
2条回答
SAP砖家
1楼-- · 2020-08-19 03:16

不确定问题出在哪里。 如果要传递对数据类型的引用,则还需要将其作为引用" TYPE REF TO data"传递。 在您的情况下,您必须定义一个数据类型,并为其分配多带带的内存,甚至在调用get_param之前,它都必须接收ev_val的值,因此这就是为什么这是内存中两个不同的对象,而只复制该值的原因。/p>

如果因此将ev_val定义为" TYPE REF TO",则只需将引用从方法传递给另一个即可。 但是,由于您已经可以直接调用zif_cx_enh_param_map〜get_param_ref,因此您的方法将是"无用的"。

但是也许您想对方法进行一些更改,在这种情况下,您可以像以前一样使用运算符-> *对其进行取消引用,对字段符号进行更改,并且所有更改都会在 内存中的数据相同。

 *签名
    方法get_param
     输入
       iv_id_param TYPE clike
     出口
       ev_val TYPE REF TO数据。

 * IMPL 
METHOD get_param。 zif_cx_enh_param_map〜get_param_ref( 出口 iv_id_param = iv_id_param 输入 er_ref = ev_val )。 ENDMETHOD。

这是否解决了您的问题,还是我缺少了什么?

Nan4612
2楼-- · 2020-08-19 03:17

Andres David Acero Montoya ,请继续回答您的公开问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题

一周热门 更多>