gpt4 book ai didi

dynamic - 如何为READ TABLE设置动态键?

转载 作者:行者123 更新时间:2023-12-02 10:29:57 25 4
gpt4 key购买 nike

我正在尝试找出一种方法来读取必须动态创建的内部表。我创建了以下报告,其中用数据填充动态内部表。

在最后一行,我尝试用键读取它(例如 mandt ),但我收到此语法错误:

The specified type has no structure and therefore no component called MANDT

我已经调试过了,可以看到<any_tab>已成功填充,并且表结构(字段名称)正确。当我尝试将表读入工作区时,问题就出现了。也许我做错了,但这似乎是应该可以做的事情,而且我有一种感觉我错过了一些小东西。

我尝试这个的原因是我发现程序中发生了相同的选择,并且希望在内存中缓冲记录并从那里读取它们以避免数据库访问。这很容易实现,但是当表 where 时我还没有这样做。条款和 into我试图优化的 OPEN SQL 语句的子句是动态的。

如何纠正语法错误?

DATA: t681_rep TYPE TABLE OF t681 , wa_681 LIKE LINE OF t681_rep,
tabref TYPE REF TO data , waref TYPE REF TO data.

FIELD-SYMBOLS: <any_tab> TYPE ANY TABLE,
<any_wa> TYPE ANY,
<var1> TYPE ANY.
"fill t681_rep
SELECT *
FROM t681
INTO TABLE t681_rep
UP TO 1 ROWS WHERE kotab = 'A002'.

READ TABLE t681_rep INTO wa_681 WITH KEY kotab = 'A002'.
IF sy-subrc = 0.

"if A002 is found create a table of that type and fill it
CREATE DATA tabref TYPE TABLE OF (wa_681-kotab).
ASSIGN tabref->* TO <any_tab>.
SELECT * UP TO 10 ROWS
FROM (wa_681-kotab)
INTO TABLE <any_tab>.

ENDIF.

CREATE DATA waref TYPE a002.
ASSIGN waref->* TO <any_wa>.

READ TABLE <any_tab> ASSIGNING <any_wa> WITH KEY mandt = '800'. <- problem area
IF sy-subrc = 0.
"do stuff with <any_wa>...
ENDIF.

最佳答案

您只需将字段名称放在括号中即可。

data: field type string.
field = 'MANDT'.
READ TABLE <any_tab> ASSIGNING <any_wa> WITH KEY (field) = '800'.
IF sy-subrc = 0.
"do stuff with <any_wa>...
ENDIF.

关于dynamic - 如何为READ TABLE设置动态键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10802336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com