Ja, dann ist Deine IF-Bedingung ja auch erfüllt?! OR ist kein exklusives OR. Das heißt, dass OR nicht nur dann erfüllt ist, wenn eine der Bedingungen zutrifft, sondern auch, wenn beide zutreffen (wenn also auch AND erfüllt wäre). Tatsächlich ist Dein IF sogar IMMER erfüllt, denn das Feldsymbol kann ja nicht gleichzeitig zwei verschiedene Werte einnehmen, wird also immer ungleich (mindestens) einem der beiden Werte sein.Mein Problem ist, dass obwohl <fs_status>-txt04 ungleich RP01 und RP15 ist, die Variable lv_rccheck auf 1 gesetzt wird.
Code: Alles auswählen.
REPORT zTest.
TYPES:
BEGIN OF ts_status,
txt04 TYPE text04,
str04 TYPE string,
txt10 TYPE text10,
str10 TYPE string,
END OF ts_status,
tt_status TYPE STANDARD TABLE OF ts_status WITH DEFAULT KEY.
DATA:
lt_status TYPE tt_status,
lv_rccheck TYPE char1.
APPEND VALUE #( txt04 = 'RP03' str04 = 'RP03' txt10 = 'RP03' str10 = `RP03 ` ) TO lt_status.
LOOP AT lt_status ASSIGNING FIELD-SYMBOL(<fs_status>).
"#1 Text ohne Leerzeichen
IF <fs_status>-txt04 NE 'RP01'.
IF <fs_status>-txt04 NE 'RP15'.
lv_rccheck = '1'.
ENDIF.
ENDIF.
"#2 String ohne Leerzeichen
IF <fs_status>-str04 NE 'RP01'.
IF <fs_status>-str04 NE 'RP15'.
lv_rccheck = '1'.
ENDIF.
ENDIF.
"#3 Text mit Leerzeichen
IF <fs_status>-txt10 NE 'RP01'.
IF <fs_status>-txt10 NE 'RP15'.
lv_rccheck = '1'.
ENDIF.
ENDIF.
"#4 String mit Leerzeichen
IF <fs_status>-str10 NE 'RP01'.
IF <fs_status>-str10 NE 'RP15'.
lv_rccheck = '1'.
ENDIF.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
IF <fs_status>-txt04 <> 'RP01' AND <fs_status>-txt04 <> 'RP15'.
lv_rccheck = '1'.
ENDIF.
Code: Alles auswählen.
IF 'RP01;RP15' NS <fs_status>-txt04.
lv_rccheck = '1'.
ENDIF.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
wreichelt
Code: Alles auswählen.
CASE <fs_status>-txt04.
WHEN 'RP01'
OR 'RP15'. " nichts tun - die sind ok
WHEN OTHERS.
lv_rccheck = '1'.
ENDCASE.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
wreichelt
Hope your data element for txt04 is 4 character long. Can you double check and confirm?mydigitalme hat geschrieben:Danke für eure Antworten.
Ich habe das Coding jetzt mal folgendermaßen abgeändert:
LOOP AT lt_status ASSIGNING FIELD-SYMBOL(<fs_status>).
IF <fs_status>-txt04 NE 'RP01'.
IF <fs_status>-txt04 NE 'RP15'.
lv_rccheck = '1'.
ENDIF.
ENDIF.
Und trotzdem wird die Variable nicht auf 1 gesetzt, wenn txt04 z.B. RP03 ist.
Verstehe ich nicht
I fail to see why that would be relevant. If it is a (10) TYPE C, everything we wrote above will apply anyway (seeing that IF-comparisons with C-variables ignore trailing spaces).Hope your data element for txt04 is 4 character long. Can you double check and confirm?
Sorry, you are right.DeathAndPain hat geschrieben:Your response does not give me the impression that you have actually read and understood the whole discussion, Wolfgang...