Ich möchte jetzt die ausgewählten Werte vergleichen.
Kann ich dies mit
LOOP AT tz_TA20PIF INTO ts_TA20PIF WHERE PROVIDER NOT IN s_TA20PIF.
....
Wenn ich in der Selektion für s_TA20PIF nichts ausgewählt habe, dann springt es ins loop nicht rein. Wie kriege ich es hin, dass die Spalte einer internen Tabelle nach den selektierten Werten untersucht wird.
Na ja, Du hast "NOT IN" geschrieben. Du willst also alle Provider haben, die die Selektionsbedingung nicht erfüllen. Aber wie Du weißt, ist eine SELECT-OPTION, die der Benutzer nicht füllt (d.h. einschränkt), für alle Werte wahr. Daher sind alle PROVIDER IN s_TA20PIF, wenn Du nichts ausgewählt hast, und demnach keiner NOT IN s_TA20PIF.
Wenn Du diesen Fall irgendwie gesondert behandeln möchtest, dann musst Du zuerst prüfen, ob s_TA20PIF, das ja eine RANGES-Tabelle ist, leer ist. Also sowas bauen:
IF s_TA20PIF[] IS INITIAL.
" hier machste irgendwas, was dann passieren soll
ELSE.
LOOP AT tz_TA20PIF INTO ts_TA20PIF WHERE PROVIDER NOT IN s_TA20PIF.
" ...
ENDLOOP.
ENDIF.