IF-Abfrage schlanker machen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

IF-Abfrage schlanker machen

Beitrag von Barney (Specialist / 104 / 20 / 9 ) »
Hallo,

ich bin mal wieder auf der Suche auf einen eleganteren Weg. Ich möchte wissen, ob ich anhand der Angaben des Benutzers den ausgewählten Bestand ermitteln kann, ob auch noch BESTQ abfragen muss. Das ist dann der Fall, wenn nur ein Wert in den Feldern LABST, INSME, SPEME and RETME gefüllt ist und die anderen nicht.

Aktuell sieht meine IF-Abfrage so aus:

Code: Alles auswählen.

 if  ( ls_mard-labst is not INITIAL and ls_mard-insme is INITIAL and ls_mard-speme is INITIAL and ls_mard-retme is INITIAL )
   or ( ls_mard-labst is INITIAL and ls_mard-insme is not INITIAL and ls_mard-speme is INITIAL and ls_mard-retme is INITIAL )
   or ( ls_mard-labst is INITIAL and ls_mard-insme is INITIAL and ls_mard-speme is not INITIAL and ls_mard-retme is INITIAL )
   or ( ls_mard-labst is INITIAL and ls_mard-insme is INITIAL and ls_mard-speme is INITIAL and ls_mard-retme is not INITIAL ).
    
"mach was

    else. 
    
"mach was anderes

    endif. 

Kann ich das nicht irgendwie eleganter lösen?

Tot ziens

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


Re: IF-Abfrage schlanker machen

Beitrag von a-dead-trousers (Top Expert / 4483 / 231 / 1205 ) »
Weis jetzt nicht ob das "eleganter" ist:

Code: Alles auswählen.

data ld_count type i.
if ls_mard-labst is not INITIAL. add 1 to ld_count. ENDIF.
if ls_mard-insme is not INITIAL. add 1 to ld_count. ENDIF.
if ls_mard-speme is not INITIAL. add 1 to ld_count. ENDIF.
if ls_mard-retme is not INITIAL. add 1 to ld_count. ENDIF.
if ld_count eq 1.
"mach was
else.
"mach was anderes
endif.
So ist es IMHO besser lesbar.
Alternativ könntest du dir noch einen einzigen Vergleich mit EQUIV überlegen, aber den Vergleichsoperator würde ich nur vorsichtig einsetzen. Vorallem bei vier Vergleichen ist das ein ziemlicher "Mindfuck" wenn man das später mal wieder warten muss.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Barney

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: IF-Abfrage schlanker machen

Beitrag von Barney (Specialist / 104 / 20 / 9 ) »
Danke! :up: Ob Du mir es glaubst oder nicht: mir war grade derselbe Gedanken gekommen und hatte es schon umgesetzt... Manchmal denkt man echt zu kompliziert... :D

Code: Alles auswählen.

    IF ls_mard-labst IS NOT INITIAL.
      ADD 1 TO lf_count.
    ENDIF.

    IF ls_mard-insme IS NOT INITIAL.
      ADD 1 TO lf_count.
    ENDIF.

    IF ls_mard-speme IS NOT INITIAL.
      ADD 1 TO lf_count.
    ENDIF.

    IF ls_mard-retme IS NOT INITIAL.
      ADD 1 TO lf_count.
    ENDIF.

    IF lf_count EQ 1.
      p_ok = 'X'.
    ELSE. "more than one stock type
...

Re: IF-Abfrage schlanker machen

Beitrag von ewx (Top Expert / 4916 / 332 / 653 ) »

Code: Alles auswählen.

summe = labst + insme + speme + retme.
if speme = summe or
   labst = summe or
   insme = summe or
   retme = summe.

endif.
Darf natürlich kein negativer Lagerbestand dabei sein... ;)

Seite 1 von 1

Vergleichbare Themen

7
Antw.
5437
Views
3 Bedingungen abfrage
von 1337 » 27.11.2013 13:09 • Verfasst in ABAP® für Anfänger
2
Antw.
2513
Views
select abfrage
von anki_86 » 13.06.2007 09:51 • Verfasst in ABAP® für Anfänger
8
Antw.
5236
Views
SAP BI/BW ABAP-Abfrage
von Bench1964 » 19.09.2012 13:16 • Verfasst in ABAP® für Anfänger
11
Antw.
3298
Views
ABAP DB Abfrage
von peter82 » 02.08.2012 11:51 • Verfasst in ABAP® für Anfänger
1
Antw.
2219
Views
Fehler in der Abfrage
von commolus » 31.05.2012 10:03 • Verfasst in Dialogprogrammierung

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

BAPI zur ABSO?
Gestern von DeathAndPain 2 / 433
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1075
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46751
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4642

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.

Aktuelle Forenbeiträge

BAPI zur ABSO?
Gestern von DeathAndPain 2 / 433
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1075
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46751
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4642