2023 Jul 07 6:16 PM
Hi! SAP ABAP SQL I have 2 different select statement the 1st one is an input to the 2nd select statement.
TYPES : BEGIN OF Y_BWART,
BWART TYPE MSEG-BWART,
END OF Y_BWART.
DATA: TS_BWART TYPE STANDARD TABLE OF Y_BWART WITH HEADER LINE.
SELECT SUB2 "sub 2 is a char 2
FROM ZVXXPARAM_GLOBAL
INTO TABLE TS_BWART
WHERE MAIN EQ 'QR'.
SELECT MATNR
FROM MSEG
INTO TABLE @DATA(TS_MSEG)
WHERE BWART EQ @TS_BWART-Bwart.
But when I debug this one TS_MSEG is empty.
I checked mseg table with values from ts_bwart it has data.
please help me.
2023 Jul 07 6:22 PM
Please edit your question (Actions>Edit), select your code and press the button [CODE], which makes the code appear colored/indented, it'll be easier for people to look at it. Thanks!
2023 Jul 07 8:45 PM
SELECT MATNR
FROM MSEGbecause TS_BWART is a Table an not a structure you cant use BWART EQ @TS_BWART-Bwart
you can use for all entries in TS_BWART
2023 Jul 08 7:17 AM
I think it's best if you continue the discussion with people in your previous question (Field "ts" is unkwown. It is neither one of the specified tables... | SAP Community), they would be happy to know the initial part which you had not shared with them:
TYPES : BEGIN OF Y_BWART,
BWART TYPE MSEG-BWART,
END OF Y_BWART.
DATA: TS_BWART TYPE STANDARD TABLE OF Y_BWART WITH HEADER LINE.
2023 Jul 08 7:36 AM
I agree with the explanation given by sapcloud_education8.
Don't use Header Lines, it's obsolete and forbidden in modern programming, because it leads to errors such as the one you have encountered. Header lines are well known to be error prone.
I suggest that you use a join (here it's based on EXISTS, but you may also use the INNER JOIN form):
SELECT DISTINCT matnr
FROM mseg
INTO TABLE @DATA(ts_mseg)
WHERE EXISTS ( SELECT *
FROM ZVXXPARAM_GLOBAL
WHERE sub2 = mseg~bwart
AND main = 'QR' ).
NB: use DISTINCT to get unique values of MATNR.
Below is your code, with FOR ALL ENTRIES. NB: it's very important that you make sure TS_BWART is not initial otherwise you would extract all values of MATNR (it ignores the lines of WHERE which refer to TS_BWART):TYPES : BEGIN OF Y_BWART,
BWART TYPE MSEG-BWART,
END OF Y_BWART.
DATA: TS_BWART TYPE STANDARD TABLE OF Y_BWART.
SELECT SUB2 "sub 2 is a char 2
FROM ZVXXPARAM_GLOBAL
INTO TABLE TS_BWART
WHERE MAIN EQ 'QR'.
IF ts_bwart IS NOT INITIAL.
SELECT DISTINCT MATNR
FROM MSEG
INTO TABLE @DATA(TS_MSEG)
FOR ALL ENTRIES IN @TS_BWART
WHERE BWART EQ @TS_BWART-Bwart.
ENDIF.