内联声明的表,其中包含SQL查询的结果。 可以在子例程中使用它吗?

2020-08-18 01:27发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 在进行SQL查询时...

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

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


专家您好,

在进行SQL查询时,我一直非常享受ABAP 7.40的功能,而不必担心耗时的类型声明。

能够做这样的事情真是太好了(Horst Keller关于主机表达式的博客文章中的示例):

选择carrid,connid,cityfrom,cityto
从spfli
在哪里carrid =
@(值spfli-carrid(carrier [键名
carrname =名称] -carrid
可选) )
插入表@DATA(结果)。

我的问题是,假设我做了这个SQL,然后我想使用新创建的内部表 result 作为子例程的参数。 问题是,该表是内联创建的,没有类型。 有没有一种方法可以将其传递给子例程,使我可以循环,直接访问字段等?

谢谢很多人

7条回答
闻人可可
2020-08-18 02:10
Hello Horst,

我要对一些看起来与您在上面键入的代码非常相似的代码提出疑问:

在lt_eban INTO DATA(ls_eban)中循环
   GROUP BY(ekgrp = ls_eban-ekgrp)
   参考数据(ekgrp_groups)。
   DATA lt_members喜欢lt_eban。
   清除lt_members。
   在组ekgrp_groups分配字段符号()上循环。
     lt_members = VALUE#(基本lt_members())。
   结局。
 ENDLOOP。

其中lt_eban是我从eban中选择时声明的动态声明的内部表。

我不太喜欢的当然是这两行:

 DATA lt_members就像lt_eban。
   清除lt_members。

没有别的办法吗?

非常感谢,感谢您在社区和博客中的承诺:一切都非常好,对我们的工作有很大帮助!

一周热门 更多>