1

我是 ABAP 的新手(3 天经验),我目前的任务是使用 ABAP 代码编写报告。这就像将一些数据从特定的 SAP 数据库移动到商业智能暂存区。

所以核心难点是SAP服务器上的一些数据是字典结构(FMOIX、FMCOX等)的格式,我需要在程序运行时将这些数据移动到内部表中。有人告诉我 OPENSQL 在这种情况下不起作用。

如果您仍然不明白我的意思,我可以提出几种方法,实际上是由我的主管给出的。首先是使用 GET 事件,比如说

GET FMOIX.
    IF FMOIX-zhdlt > From_dat and FMOIX-zhdlt < to_dat.
        Append FMOIX to itab.
    ENDIF.

问题是我对这个 GET 事件还不是很清楚。它只是一个事件处理程序,还是可以循环遍历数据记录?

我用谷歌搜索了两天多的东西给了我类似的东西

LOOP at FMOIX.
    MOVE FMOIX to itab.
ENDLOOP.

那么有什么方法可以将 FMOIX 之类的事务结构移动到内部表中,比如内部表名是 ITAB?

您的回答将不胜感激。虽然我有时间,但我是全新的。非常感谢。

4

2 回答 2

3

如果您的主管建议您使用 GET 事件,这意味着您的程序正在(或应该)使用逻辑数据库——在这种情况下可能是 FMF 或 FMF_BCS。

DoingGET FMOIX读取逻辑数据库中定义的一组字段(作为节点)。在 GET 语句下方,您可以使用 FMOIX 作为结构,例如WRITE FMOIX-field1. 该程序将(隐含地,它没有像 a is 那样在代码中明确定义LOOP...ENDLOOP)循环根据您的选择标准返回的所有行。您应该能够使用MOVE-CORRESPONDING将每一行的内容移动到适当的结构中,然后APPEND将该结构移动到您的 itab。

ABAPDocu中 GET 的快速链接

注意:这个答案有点猜测,因为我只使用过一次逻辑数据库,并且与那里关于标准SELECTs 和内部表的卷相比,文档在地面上有点薄。

于 2012-06-20T15:21:35.047 回答
0

您可以以该结构的类型创建内部表,例如:

data: itab like table of fmoix with header line.

您可以使用这个内部表格来填写您使用选择代码的任何地方。如:

select * from ____
   into corresponding fields of itab 
   where zhdlt gt from_dat
   and   zhdlt lt to_dat.

我不确定这是您要查找的内容,但我可以告诉您以该结构的类型创建 itab 可以填充来自您选择的所有相应数据。您不能循环 FMOIX,因为它不是表格,而是结构。那么有什么特别的理由将你的数据保存在结构中吗?

希望对您有所帮助。

塔尔哈

于 2012-06-20T14:16:29.270 回答