Entweder / oder

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Entweder / oder

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hallo liebe User,

ich stehe aufm schlauch.

ich möchte in meine Itab nur daten selektieren, bei denen eines der datumsfelder gefüllt ist, d.h.
entweder darf nur feld erdat gefüllt sein oder nur feld datvr. beide gleichzeitig dürfen weder gefüllt noch leer sein.

habe nach dem select eine if-abfrage gemacht, wenn die o.g. bedingung ist, dann soll er den datensatz aus der itab löschen und eine meldung rausgeben. aber er macht es nicht. er bringt mir trotzdem DSe, wo beide felder befüllt sind.

*jammer jammer, grummel grummel*

bin dankbar für ratschläge aller art.

liebe grüße coco

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo c_oco,

dazu bräuchtest Du ein XOR, was es aber in SAP nur für BIT-Operationen gibt. Deshalb musst Du die Prüfung selbst machen:

Code: Alles auswählen.

IF ( f1 IS     INITIAL AND f2 IS NOT INITIAL ) OR
   ( f1 IS NOT INITIAL AND f2 IS     INITIAL ).
  ...
ENDIF.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
danke schön ereglam.

aber er bringt die meldung: vergleichsoperator ""
nicht unterstützt.

*ratlos kuck*

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
nein fehlalarm.

habe die klammern weggelassen. kam nach etlichem hin und her endlich drauf. jetzt meckert er nicht mehr.

muss nur noch funktionieren.

danke nochmals + gruß
coco

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
hallo,

ich möchte, das man beim selektieren nur ein feld ausfüllen kann.
aber jetzt bekomme ich immer die warnmeldung. egal ob ich nur ein feld ausgefüllt oder alle ausgefüllt habe.

warum?


AT SELECTION-SCREEN.

IF NOT s_erdat IS INITIAL.
y = y + 1.
ENDIF.

IF NOT s_datvr IS INITIAL.
y = y + 1.
ENDIF.

IF y NE '1'.
MESSAGE e901(zz) WITH
'Nur einen Verarbeitungszeitraum wählen!'.
ENDIF.


danke + gruß
coco

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Hi Coco,

wie wäre es hiermit:

at selection-screen.

IF NOT s_erdat IS INITIAL and
NOT s_datvr IS INITIAL.

MESSAGE e208(00) WITH
'Nur einen Verarbeitungszeitraum wählen!'.
endif.

Gruß

Thomas

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Kleiner Nachtrag Coco,

Deine Variante sollte auch gehen, wenn du Y vor der Message wieder auf 1 setzt.

Thomas

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
hallo thomas,

danke für deinen tipp.
jetzt funktioniert es.

aber mit deiner variante.

wenn ich mit meiner variante
nach der bedingung y = 1 sage, dann akzeptiert er alles.

gruß coco

Beitrag von donny (Specialist / 253 / 0 / 2 ) »
Hi coco,
IF y NE '1'.
durch die Apostroph-Zeichen macht ABAP einen CHAR-Vergleich. Je nach Datentyp von Y kann das klappen, oder nicht!
Vermutlich ist Y bei dir als Zahl definiert, dann bitte die Apostrophs weglassen (oder schreibt man jetzt Apostrof?)

Gruß
donny

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.