RANGES: r_lgnum FOR T300-lgnum.
IF p_lgnum IS INITIAL.
r_lgnum-sign = 'I'.
r_lgnum-option = 'CP'.
r_lgnum-low = '*'.
APPEND r_lgnum.
ELSE.
r_lgnum-sign = 'I'.
r_lgnum-option = 'EQ'.
LOOP AT gt_xls INTO wa WHERE lgnum IN r_lgnum.
...
ENDLOOP.
Ich bezweifele, dass dieses dargestellte Coding richtig funktioniert, wie es funktionieren soll.hmaxi96 hat geschrieben:Auf das wär ich selbst auch gekommen
Aber es wird verlangt mit Parametern zu arbeiten.
Falls jemand mal das selbe Problem hat, ich habe mit Ranges gearbeitet:
RANGES: r_lgnum FOR T300-lgnum.
IF p_lgnum IS INITIAL.
r_lgnum-sign = 'I'.
r_lgnum-option = 'CP'.
r_lgnum-low = '*'.
APPEND r_lgnum.
ELSE.
r_lgnum-sign = 'I'.
r_lgnum-option = 'EQ'.
LOOP AT gt_xls INTO wa WHERE lgnum IN r_lgnum.
...
ENDLOOP.
Code: Alles auswählen.
SELECT-OPTIONS s_lgnum FOR t300-lgnum NO INTERVALS NO-EXTENSION.Code: Alles auswählen.
DATA: selopt_mat TYPE RANGE OF matnr.
DATA: mat_data TYPE SORTED TABLE OF mara WITH UNIQUE KEY matnr.
FIELD-SYMBOLS: <matnr> LIKE LINE OF selopt_mat.
PARAMETERS: par_mat TYPE matnr.
START-OF-SELECTION.
CLEAR selopt_mat.
IF par_mat IS NOT INITIAL.
* Entweder in 7.40-Coding als
* selopt_mat = value #( ( sign = 'I' option = 'EQ' low = par_mat ) ).
* dann braucht man auch das Feldsymbol nicht
* oder mit den folgenden Anweisungen
APPEND INITIAL LINE TO selopt_mat ASSIGNING <matnr>.
<matnr> = 'IEQ'.
<matnr>-low = par_mat.
ENDIF.
SELECT * FROM mara INTO TABLE mat_data WHERE matnr IN selopt_mat.
