3

我有以下代码:

 SELECT S~CLUSTD AS ZZCLUSTD
   INTO CORRESPONDING FIELDS OF TABLE @lt_viqmel_iflos
   FROM viqmel AS v
     LEFT OUTER JOIN stxl AS S
      ON s~tdobject = @lv_qmel
      AND s~tdname = v~qmnum

Select 语句生成以下简短转储:

Only the prefixed length field can be used to read from the LRAW field or
LCHR field S~CLUSTD.

内部表lt_viqmel_iflos是我附加类型 char200的类型viqmel_iflos(包含 DB 表的 DB 视图)。QMELZZCLUSTD

问题是我无法在 QMEL 中创建 ZZCLUSTD 类型 LRAW,因为我收到以下错误:

在此处输入图像描述

所以我唯一的选择(我知道)仍然是在 char200 中选择 LRAW 的前 200 个字符。

这甚至可能吗?

还是有另一种选择 LRAW 数据的方法?

我找到了有关该主题的信息,但不幸的是我无法使其适应我的场景:读取 LRAW 数据

4

1 回答 1

3

其实这里有两个问题。


一个是表的激活错误QMEL

字段ZZCLUSTD前面没有 INT4 类型的长度字段

包含 LCHR 和 LRAW 类型的列的 DDIC 表要求始终紧跟在INT2 或 INT4类型的列之前(尽管消息仅显示 INT4)。


第二问题是关于如何阅读这样一个领域。必须始终同时读取两列,并且必须在 LCHR/LRAW 列之前“读取”INT2/INT4 列。我能找到解释这个限制的唯一参考是在逻辑集群表中的注释 302788-LCHR/LRAW 字段中

表的 INT2 列STXL被命名CLUSTR,以下代码有效:

TYPES: BEGIN OF ty_viqmel_iflos,
         clustr   TYPE stxl-clustr, "INT2
         zzclustd TYPE stxl-clustd, "LCHR
       END OF ty_viqmel_iflos.
DATA lt_viqmel_iflos TYPE TABLE OF ty_viqmel_iflos.

SELECT S~CLUSTR, S~CLUSTD AS ZZCLUSTD
   INTO CORRESPONDING FIELDS OF TABLE @lt_viqmel_iflos
   FROM viqmel AS v
     INNER JOIN stxl AS S
      ON s~tdname = v~qmnum
   UP TO 100 ROWS.

注意:您的问题存在混淆,您在哪里指的是CLUSTDfromSTXLZZCLUSTDfrom QMEL。我不明白你想要达到什么目的。

注意:如果您想阅读表格中的文本STXL,还有另一种解决方案,方法是调用功能模块READ_TEXT_TABLE,或者READ_MULTIPLE_TEXTS如果您愿意。它们由注释 2261311 提供。如果您没有或无法安装这些功能模块,您可以试试这个 gist做同样的事情。它还包含对另一个讨论的引用。

注意:为了提供信息,更准确地说,LRAW 包含字节,而不是字符,并且对于数据簇(大小写STXL),这些字节对应于STXL使用语句压缩的任何值(大小写中的字符),并且将使用`EXPORT解压缩IMPORT.

于 2020-03-16T21:22:26.573 回答