Line_exists in Switch / for Schleife

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Line_exists in Switch / for Schleife

Beitrag von RaCDigger (ForumUser / 42 / 4 / 7 ) »
Hallo Zusammen,

ich würde gerne in der For Schleife eine Switch Kondition inkl. Line_exists nutzen.
Leider mag der Compilier dieses Konstrukt nicht und wirft einen Fehler (methode Line_exists unbekannt bzw. private oder protected).

Code: Alles auswählen.

    mt_data = VALUE #( FOR svalue IN mt_setvalues
                        ( subclass = svalue-subclass
                          setname  = svalue-shortname
                          setbez   = lt_settext[ setclass = svalue-setclass
                                                 subclass = svalue-subclass
                                                 setname  = svalue-shortname
                                                 langu    = sy-langu ]-descript
                          kostl    = svalue-from
                          ltext    = lt_cskt[ kostl = svalue-from ]-ltext
                          dir      = SWITCH #( line_exists( lt_cskt[ kostl = svalue-from ] )
                                                WHEN abap_true THEN 1
                                                when abap_false Then 0
                                             )
                         )
                      ).
Okay ich könnte das ganze in einem Loop abarbeiten und dann entsprechend mit einem IF line_exists(..) arbeiten, aber irgendwie finde ich das innerhalb eine Forschleife und mit Switch irgendwie eleganter.

Kennt jemand eine Lösung wie ich das prüfen auf Line_Exists hier ersetzen kann ? Wenn ich direkt versuche die Zeile zu lesen würde ja bei nicht vorhanden sein eine Ausnahme geworfen die ich ja nicht abfangen kann, oder ?

Direkt im Select (CDS View) kann ich die Daten nicht anreichern (sie kommen aus einem Fuba)

Gruß
Sven

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


Re: Line_exists in Switch / for Schleife

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
du könntest folgendes Konstrukt verwenden:

Code: Alles auswählen.

SWITCH #( VALUE #( lt_cskt[ kostl = svalue-from ] DEFAULT space )  
  WHEN space THEN 0
  ELSE 1 ) ) ).

Re: Line_exists in Switch / for Schleife

Beitrag von LeMinion (ForumUser / 20 / 1 / 6 ) »
In diesem Fall wäre doch COND ohnehin "besser" als ein SWITCH, oder?
Wie wäre es also hiermit?

Code: Alles auswählen.

COND #(
  WHEN line_exists( lt_cskt[ kost1 = svalue-from ] ) THEN 1
)
Den ELSE-Teil brauchst Du dann nicht mal mehr, weil der Initialwert hier auch der Defaultwert wäre (sofern das Target ein Integer ist, sonst mußt Du es ev. doch explizit angeben).
Zuletzt geändert von LeMinion am 22.07.2022 20:27, insgesamt 1-mal geändert.

Re: Line_exists in Switch / for Schleife

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Ich meinte, ich hätte das mit COND ebenfalls ausprobiert und es ging nicht. geht aber doch... Switch geht mit LINE_EXISTS jedenfalls nicht.
ah: Ich hatte ausprobiert:

Code: Alles auswählen.

COND #(
  WHEN line_exists( lt_cskt[ kost1 = svalue-from ] ) = abap_true THEN 1 )
was natürlich auch Quatsch ist... 🥳
Zeit für Wochenende...

Re: Line_exists in Switch / for Schleife

Beitrag von RaCDigger (ForumUser / 42 / 4 / 7 ) »
Danke Enno,

etwas abwandelt funktioniert es.

Code: Alles auswählen.

COND #(
  WHEN line_exists( lt_cskt[ kost1 = svalue-from ] ) THEN 1 )
das "= abap_true" mag er nicht, aber jetzt funktioniert es.

Muss man erst mal draufkommen, Fehlermeldung war das ihm ein Operator z.B. "AND" fehlt.

New Syntax ist nicht immer so einfach 😉

Re: Line_exists in Switch / for Schleife

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Da fehlt der Beitrag von "LeMinion", auf den ich geantwortet hatte... Wo ist der hin? er hatte das ja bereits ohne "= abap_true" vorgeschlagen.

Re: Line_exists in Switch / for Schleife

Beitrag von LeMinion (ForumUser / 20 / 1 / 6 ) »
Das frage ich mich auch, hatte nur nachträglich Tippfehler korrigiert, seit dem steht der Beitrag wohl wieder bei einem Moderator zur Freigabe. Woran es da nun schon seit Tagen hapert, erschließt sich mir nicht.

Re: Line_exists in Switch / for Schleife

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Wahrscheinlich eine spam-Schutzfunktion. Ich informiere Jan mal...

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1130
Views
Line in einer Schleife füllen
von hyyd1e » 06.08.2014 09:39 • Verfasst in ABAP® für Anfänger
3
Antw.
2833
Views
exists Befehl
von bohne » 11.12.2006 09:55 • Verfasst in ABAP® für Anfänger
4
Antw.
7084
Views
Select .. where exists
von Bzzt » 04.12.2006 11:17 • Verfasst in ABAP® für Anfänger
3
Antw.
9476
Views
Switch Case
von Spookykid » 07.04.2011 17:07 • Verfasst in ABAP® für Anfänger
45
Antw.
2879
Views
corresponding - mapping - switch
von ralf.wenzel » 29.10.2024 11:37 • Verfasst in ABAP® Core

Ü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.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1515
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8127