Moin,
du musst nur wissen wie das Feld in deinen Select Options heißt. Du schreibst da doch etwas in der Art:
SELECT-OPTIONS: s_pernr FOR xyz-pernr.
Dieses s_pernr ist dann deine Range-Tabelle nur für die pernr.
Gibt jemand im Selektionsbild eine Personalnummernspanne an, also in das linke Feld z.B. 11111 und im rechten Feld 22222 (Spanne von 11111 bis 22222) hat die Rangetabelle nur einen Datensatz, in dem der LOW-Parameter mit 11111 und der HIGH-Parameter mit 22222 besetzt ist. Nur für den Fall das jemand die Mehrfachselektion nutzt hast du mehr als einen Datensatz in der Rangetabelle, d.h. will jemand zu den nummern 11111, 11113 und 22222 (also nur diese 3) selektieren, hat deine Rangetabelle 3 Einträge in denen jeweils der LOW-Parameter besetzt ist. Verständlich?
Um jetzt zu prüfen ob entweder eine Spanne oder eine Mehrfachselektion eingegeben wurde kannst/musst du beide Fälle prüfen. Das kannst du mehr oder weniger miteinander verbinden:
Code: Alles auswählen.
DATA: lv_count TYPE i,
ls_pernr LIKE LINE OF s_pernr,
lv_change TYPE char1.
DESCRIBE TABLE s_pernr LINES lv_count. "Anzahl der Zeilen wird in lv_count geschrieben
IF lv_count = 1.
READ TABLE s_pernr INTO ls_pernr.
IF ls_pernr-HIGH IS NOT INITIAL.
lv_change = 'X'.
ENDIF.
ELSEIF lv_count > 1.
lv_change = 'X'.
ENDIF.
*Dann kannst du lv_change abfragen, ist es X, dann anderen Code, sonst normalen Ablauf
Wobei jetzt nicht abgefangen wird, was passiert, wenn gar keine personalnummer eingegeben wird.
Ich hoffe es hilft.