如何使用通用类型设置RETURNING参数?

2020-09-03 08:29发布

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

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


专家们,

我们正在对ALV报告进行编码,其中使用ABAP语法7.40在SELECT语句后添加"映射"指令,以填充ALV数据表。

这里有一个样本:

 ls_od-od = VALUE#(FOR ls_rows IN fut_rows(
                   ci = zcl_all_utilities => conv_output(gt_data [ls_rows] -posid)
       numerocommande = | {gt_data [ls_rows] -ebeln} {gt_data [ls_rows] -ebelp} |
              article = gt_data [ls_rows] -matnr))。

关注焦点: ci = zcl_all_utilities => conv_output(gt_data [ls_rows] -posid)

这是可能的,因为我们使用的STRING类型=>的RETURNING参数可以使用内联指令填充" CI"参数。

现在,我想对方法" CONV_INPUT"执行相同的操作,除了我不想为我的RETURNING参数使用STRING而是通用类型。 示例:

 DATA lv_vbeln TYPE vbeln值'0000012345'。  " ==可以是任何其他数据(MATNR,PSPNR等)
 ...
 lv_vbeln = conv_input(输入= lv_vbeln)。
 lv_matnr = conv_input(输入= lv_matnr)。
 lv_pspnr = conv_input(输入= lv_pspnr)。
 .... 

您了解我的RETURNING参数必须是通用! 当然,我可以使用STRING更改输出类型以使其正常工作,我只想知道是否可以这样做。

==>那么有没有办法强制该方法接受RETURNING参数的通用类型?

最诚挚的问候,

亚历山大(Alexandre)

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

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


专家们,

我们正在对ALV报告进行编码,其中使用ABAP语法7.40在SELECT语句后添加"映射"指令,以填充ALV数据表。

这里有一个样本:

 ls_od-od = VALUE#(FOR ls_rows IN fut_rows(
                   ci = zcl_all_utilities => conv_output(gt_data [ls_rows] -posid)
       numerocommande = | {gt_data [ls_rows] -ebeln} {gt_data [ls_rows] -ebelp} |
              article = gt_data [ls_rows] -matnr))。

关注焦点: ci = zcl_all_utilities => conv_output(gt_data [ls_rows] -posid)

这是可能的,因为我们使用的STRING类型=>的RETURNING参数可以使用内联指令填充" CI"参数。

现在,我想对方法" CONV_INPUT"执行相同的操作,除了我不想为我的RETURNING参数使用STRING而是通用类型。 示例:

 DATA lv_vbeln TYPE vbeln值'0000012345'。  " ==可以是任何其他数据(MATNR,PSPNR等)
 ...
 lv_vbeln = conv_input(输入= lv_vbeln)。
 lv_matnr = conv_input(输入= lv_matnr)。
 lv_pspnr = conv_input(输入= lv_pspnr)。
 .... 

您了解我的RETURNING参数必须是通用! 当然,我可以使用STRING更改输出类型以使其正常工作,我只想知道是否可以这样做。

==>那么有没有办法强制该方法接受RETURNING参数的通用类型?

最诚挚的问候,

亚历山大(Alexandre)

付费偷看设置
发送
5条回答
风早神人
1楼 · 2020-09-03 09:14.采纳回答

必须完全键入 RETURNING 参数。 在这里面临一个折衷,您可以:

  • 使用EXPORTING/CHANGING参数代替,该参数可以是通用的,但是这种方法失去了在操作数位置使用的潜力
  • 选择一个具体类型。 这样,您可以保留功能方法所提供的便利,但是必须确保选择的类型适合所有用例。

在您的情况下,我想我会选择第二个。

BR,
Gábor

DafaDDDa
2楼-- · 2020-09-03 08:48

也许您可以 问您的问题以使人们能够给出确切答案? 一种方法是提供一个最小的可复制示例,并说明问题所在以及您想做什么。 目前,我们从一个问题跳到另一个问题,但我们仍然不了解该问题的范围(例如羊毛球,您想要一件套头衫,但您要如何编织一个袖子,然后编织领子,然后编织一个袖子) ...)

hongfeng1314
3楼-- · 2020-09-03 09:09

您可以返回TYPE REF TO DATA,所以输出也可以是任何东西。 但是在方法内部,您必须知道返回的类型,不能创建任何本地类型并将其发送回去。 如果您也想动态创建本地类型,则可以尝试使用RTTS进行构建。

me_for_i
4楼-- · 2020-09-03 09:05

Alexandre Ourth

无法强制使用通用类型 被接受为返回参数。 就您而言,STRING似乎还不错。

P.S。 我故意忽略在原始答案中提及使用引用类型作为返回值,因为使用它非常麻烦。

亦是此间程序员
5楼-- · 2020-09-03 08:53
Alexandre Ourth 如果您希望返回值是通用的,则必须处理这样的事实,即调用程序中它也可以是任何类型,即您需要将ASSIGN分配给 在运行时根据结果的类型选择正确的类型(您也可以返回数据引用和有关其类型的某些信息;另一种解决方案是返回对象引用,因为您可以随后简单地测试IS INSTANCE OF类/接口)。 p#

一周热门 更多>