Ovidiu Pocnet
Ovidiu Pocnet

Reputation: 589

How to select LRAW from DB Table?

I have the following code:

 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 statement generates following short dump:

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

Internal table lt_viqmel_iflos is type viqmel_iflos(DB view which contains DB table QMEL) to which I appended ZZCLUSTD type char200.

The problem is that I cannot make ZZCLUSTD type LRAW in QMEL because I get the following error:

enter image description here

So my only option (that I am aware of) remains to select into char200 the first 200 characters of LRAW.

Is this even possible?

Or is there another way to select LRAW data?

I found the info about the topic, but unfortunately I can't adapt it to my scenario:read LRAW data

Upvotes: 3

Views: 8728

Answers (1)

Sandra Rossi
Sandra Rossi

Reputation: 13639

In fact, there are two questions here.


The first one is the activation error of table QMEL:

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

A DDIC table containing a column of type LCHR and LRAW, requires that it's always immediately preceded with a column of type INT2 or INT4 (although the message says only INT4).


The second question is about how to read such a field. Both columns must always be read at the same time, and the INT2/INT4 column must be "read before" the LCHR/LRAW column. The only reference I could find to explain this restriction is in the note 302788 - LCHR/LRAW fields in logical cluster tables.

The INT2 column of STXL table being named CLUSTR, the following code works:

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.

NB: there is a confusion in your question, where you refer to both CLUSTD from STXL and ZZCLUSTD from QMEL. I don't understand what you are trying to achieve exactly.

NB: if you want to read the texts from the table STXL, there's another solution by calling the function module READ_TEXT_TABLE, or READ_MULTIPLE_TEXTS if you prefer. They were made available by the note 2261311. In case you don't have or can't install these function modules, you may try this gist which does the same thing. It also contains a reference to another discussion.

NB: for information, to be more precise, LRAW contains bytes, not characters, and for data clusters (case of STXL), these bytes correspond to any values (characters in the case of STXL) zipped with the statement EXPORT and are to be unzipped with IMPORT`.

Upvotes: 3

Related Questions