如何从 DB Table select LRAW?

How to select LRAW from DB Table?

我有以下代码:

 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.

内部 table lt_viqmel_iflos 是类型 viqmel_iflos(包含数据库 table QMEL 的数据库视图),我向其附加了 ZZCLUSTD 类型char200.

问题是我无法在 QMEL 中将 ZZCLUSTD 类型设为 LRAW,因为出现以下错误:

所以我唯一的选择(据我所知)仍然是 select 到 char200 LRAW 的前 200 个字符。

这可能吗?

或者有其他方法可以 select LRAW 数据吗?

我找到了有关该主题的信息,但遗憾的是我无法将其适应我的场景:read LRAW data

其实这里有两个问题


第一个是table的激活错误 QMEL:

Field ZZCLUSTD does not have a preceding length field of type INT4

包含 LCHR 和 LRAW 类型的列的 DDIC table, 要求 它始终紧跟 INT2 or INT4 类型的列(尽管消息只说 INT4).


第二个问题是关于如何读取这样一个字段。 两列 必须始终同时读取,并且INT2/INT4 列必须是"read before" LCHR/LRAW 列。我能找到的解释此限制的唯一参考资料是注释 302788 - LCHR/LRAW fields in logical cluster tables.

STXL table 的 INT2 列被命名为 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.

注意:您的问题存在混淆,您在 STXL 中提到了 CLUSTD,而 QMEL 中提到了 ZZCLUSTD。我不明白你到底想达到什么目的。

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

注意:为了信息,更准确地说,LRAW包含字节,而不是字符,对于数据簇(STXL的情况),这些字节对应任何值([=的情况下的字符) 13=]) 用语句 EXPORT and are to be unzipped with IMPORT`.

压缩