Variante 1 (RANGE)
* Range für MATNR definieren
TYPES: ty_rg_matnr TYPE RANGE OF matnr.
* MATNR für Suche
DATA(lv_matnr) = |12345|.
* RANGE für die Suche definieren
DATA(it_matnr) = VALUE ty_rg_matnr( ( sign = 'I'
option = 'EQ'
low = |{ lv_matnr WIDTH = 18 ALPHA = IN }|
high = '' ) ).
DATA: it_mara TYPE STANDARD TABLE OF mara WITH DEFAULT KEY.
SELECT * FROM mara INTO TABLE @it_mara WHERE matnr IN @it_matnr.
IF sy-subrc = 0.
LOOP AT it_mara ASSIGNING FIELD-SYMBOL(<mat>).
WRITE: / <mat>-matnr.
ENDLOOP.
ELSE.
WRITE: / 'Keine Daten vorhanden.'.
ENDIF.
Variante 2 (STANDARD TABLE)
* Zeilentyp für RANGE (STANDARD TABLE) für MATNR
TYPES: BEGIN OF ty_range,
sign TYPE ddsign,
option TYPE ddoption,
low TYPE char18, " char18 für 18-stellige MATNR
high TYPE char18, " char18 für 18-stellige MATNR
END OF ty_range.
* Tabellentyp für RANGE (STANDARD TABLE) für MATNR
TYPES: ty_rg_matnr TYPE STANDARD TABLE OF ty_range WITH DEFAULT KEY.
* MATNR für Suche
DATA(lv_matnr) = |12345|.
* RANGE für die Suche definieren
DATA(it_matnr) = VALUE ty_rg_matnr( ( sign = 'I'
option = 'EQ'
low = |{ lv_matnr WIDTH = 18 ALPHA = IN }|
high = '' ) ).
DATA: it_mara TYPE STANDARD TABLE OF mara WITH DEFAULT KEY.
SELECT * FROM mara INTO TABLE @it_mara WHERE matnr IN @it_matnr.
IF sy-subrc = 0.
LOOP AT it_mara ASSIGNING FIELD-SYMBOL(<mat>).
WRITE: / <mat>-matnr.
ENDLOOP.
ELSE.
WRITE: / 'Keine Daten vorhanden.'.
ENDIF.