corresponding - mapping - switch

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
46 Beiträge • Vorherige Seite 2 von 4 (current) Nächste
46 Beiträge Vorherige Seite 2 von 4 (current) Nächste

Re: corresponding - mapping - switch

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
ralf.wenzel hat geschrieben:
30.10.2024 10:00
Weil ich ein Freund der Kürze bin. Und der ist ja gut zu lesen wenn man den anständig formatiert.

Code: Alles auswählen.

zielstruc = VALUE #( BASE CORRESPONDING #( quellstruc ) 
                          field1 = switch #( quellstruc-field1 when 'B' then 'B' 
                                                                        else 'P' ) 
                   ).
22 Wörter, 103 nichtleere Zeichen

Code: Alles auswählen.

zielstruc = SWITCH #( quellstruc-field1 WHEN 'B' THEN CORRESPONDING #( quellstruc MAPPING field1 = B )
                                                 ELSE CORRESPONDING #( quellstruc MAPPING field1 = P ) ).
26 Wörter, 134 nichtleere Zeichen

Code: Alles auswählen.

zielstruc = CORRESPONDING #( quellstruc ).
IF zielstruc-field1 <> 'B'.
  zielstruc-field1=  'P'.
ENDIF.
13 Wörter, 88 nichtleere Zeichen

Code: Alles auswählen.

zielstruc = CORRESPONDING #( quellstruc ).
REPLACE REGEX '[^B]' IN zielstruc-field1 WITH 'P'.
13 Wörter, 81 nichtleere Zeichen

Eigentlich sind die Versionen mit mehreren Befehlen statt des langen CORRESPONDING-Ausdrucks kürzer.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

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


Re: corresponding - mapping - switch

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Es geht ja nicht um die Zahl der Worte. manmanman


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: corresponding - mapping - switch

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Sondern um was? Anzahl der durch "." getrennten Anweisungen im Programm?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: corresponding - mapping - switch

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Ein finde einen Ausdruck, der einen Gedankengang formuliert, kürzer als wenn sich dieser Gedankengang über mehrere Anweisungen erstreckt.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: corresponding - mapping - switch

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Akzeptiert. Du machst das durch ellenlange Ausdrücke, ich durch einen eingestreuten Kommentar.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: corresponding - mapping - switch

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Ja, wobei der Kommentar strukturelle Nachteile hat: Es führt nicht zu einem Fehler, wenn er veraltet. Ich mache gerade ein Refactoring einer Anwendung, die vor veralteten Kommentaren nur so strotzt. Je mehr sich das Coding selbst erklärt (also ohne Kommentare) umso besser.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: corresponding - mapping - switch

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
black_adept hat geschrieben:
30.10.2024 00:47
@Ralf: Rein aus Interesse. Du hast mit deiner Frage gezeigt, dass es selbst für langjährig ABAP Erfahrene manchmal kompliziert ist einen komplexeren Ausdruck korrekt zu implementieren. Was spricht eigentlich dagegen eines der deutlich lesbareren Konstrukte (...) zu verwenden.
Was "leichter lesbar" ist, ist Ansichtssache. Ich zum Beispiel kenne mich mit regulären Ausdrücken nicht aus und würde daher bei Deinem zweiten Vorschlag zu kämpfen haben. Da finde ich mein

Code: Alles auswählen.

zielstruc = SWITCH #( quellstruc-field1 WHEN 'B' THEN CORRESPONDING #( quellstruc MAPPING field1 = B )
                                                 ELSE CORRESPONDING #( quellstruc MAPPING field1 = P ) ).
erheblich leichter zu lesen.

Re: corresponding - mapping - switch

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Bei regulären Ausdrücken gebe ich dir recht. Das ist eine völlig eigene Welt, die man wirklich nur nutzen sollte, wenn es keine andere Möglichkeit gibt. Und dann sollte man sie gut dokumentieren.

Ich kenne kaum Entwickler, die sich mit regulären Ausdrücken WIRKLICH auskennen. Darum hätte ich das hier auch nicht gewählt, weil es andere gute Möglichkeiten gibt.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: corresponding - mapping - switch

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
DeathAndPain hat geschrieben:
30.10.2024 16:25
Was "leichter lesbar" ist, ist Ansichtssache. Ich zum Beispiel kenne mich mit regulären Ausdrücken nicht aus und würde daher bei Deinem zweiten Vorschlag zu kämpfen haben.
Glücklicherweise habe ich ja noch einen 1. Vorschlag angeboten, der trivial ist.
DeathAndPain hat geschrieben:
30.10.2024 16:25
Da finde ich mein

Code: Alles auswählen.

zielstruc = SWITCH #( quellstruc-field1 WHEN 'B' THEN CORRESPONDING #( quellstruc MAPPING field1 = B )
                                                 ELSE CORRESPONDING #( quellstruc MAPPING field1 = P ) ).
erheblich leichter zu lesen.
Hast du deinen Vorschlag mal ausprobiert? M.E. darf man beim Mapping keine Konstanten verwenden sondern bei MAPPING t1 = s1 müssten t1 und s1 jeweils Felder der Ziel- bzw. Quellstruktur sein.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: corresponding - mapping - switch

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
black_adept hat geschrieben:
30.10.2024 19:28
Hast du deinen Vorschlag mal ausprobiert?
Ich hab den mit VALUE genommen, weil ich diverse Konstanten noch vergeben musste (was mir zum Fragezeitpunkt nicht klar war)

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: corresponding - mapping - switch

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
black_adept hat geschrieben:
30.10.2024 19:28
DeathAndPain hat geschrieben:
30.10.2024 16:25
Da finde ich mein

Code: Alles auswählen.

zielstruc = SWITCH #( quellstruc-field1 WHEN 'B' THEN CORRESPONDING #( quellstruc MAPPING field1 = B )
                                                 ELSE CORRESPONDING #( quellstruc MAPPING field1 = P ) ).
erheblich leichter zu lesen.
Hast du deinen Vorschlag mal ausprobiert? M.E. darf man beim Mapping keine Konstanten verwenden sondern bei MAPPING t1 = s1 müssten t1 und s1 jeweils Felder der Ziel- bzw. Quellstruktur sein.
Richtig, und wenn Du Dir Ralfs Originalpost anschaust, dann suggeriert dieses, dass es in der Struktur eine Spalte B bzw. P gibt (field1 natürlich auch). Ansonsten wäre es ein Missverständnis hinsichtlich der Frage, was Ralf gemeint hat und kein ABAP-syntaktisches Problem. Mein Lösungsansatz für die Problemstellung, dynamisch abhängig vom Wert einer Spalte der Quelltabelle eine Spalte hierhin oder dorthin zu mappen, funktioniert; es muss nur ggf. der Spaltenname in meiner Lösung angepasst werden.

Re: corresponding - mapping - switch

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
DeathAndPain hat geschrieben:
30.10.2024 20:32
Richtig, und wenn Du Dir Ralfs Originalpost anschaust, dann suggeriert dieses, dass es in der Struktur eine Spalte B bzw. P gibt (field1 natürlich auch).
Nein, es gibt eine Spalte field1, die entweder mit 'B' oder 'P' gefüllt werden soll. Ich hielt das für offensichtlich.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: corresponding - mapping - switch

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Ok, dann hattest Du die Syntax des CORRESPONDING-Konstrukts komplett missverstanden. Wobei mir dann aber auch nicht klar ist, wie Du Dir das gedacht hattest. Dies war Dein Code im Ausgangspost:

Code: Alles auswählen.

zielstruc = CORRESPONDING #( quellstruc MAPPING field1 = switch #( quellstruc-field1
when 'B' then 'B'
else 'P' ) ).
Anhand des SWITCH soll unterschieden werden, ob field1 den Wert B oder P hat, ok. Und was sollte das CORRESPONDING-Konstrukt dann nach Deiner Vorstellung damit machen? Ein Mapping braucht ja nun einmal eine Quelle und ein Ziel. Da würde in Deiner Syntax was fehlen.

Re: corresponding - mapping - switch

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
DeathAndPain hat geschrieben:
30.10.2024 20:49
Ok, dann hattest Du die Syntax des CORRESPONDING-Konstrukts komplett missverstanden.
Loriot: "Ach, was?"
Louis de Funes: "Nein - doch - OH!"

Ich glaube, dass ich das schon vor einer ganzen Weile konstatiert habe, dass ich schon länger mit der Anweisung Probleme habe.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: corresponding - mapping - switch

Beitrag von tar (Specialist / 108 / 22 / 31 ) »
Geht bei euch die Variante mit DEFAULT?
Siehe https://help.sap.com/doc/abapdocu_cp_in ... ITION_2@2@

Wäre derart:

Code: Alles auswählen.

zielstruc = corresponding #(
  quellstruc mapping
    field1 = default cond #(
      when quellstruc-field1 = 'B' then 'B'
      else 'P'
    )
).
oder

Code: Alles auswählen.

data(lv_field1) = quellstruc-field1.
zielstruc = corresponding #(
  quellstruc mapping
    field1 = default cond #(
      when lv_field1 = 'B' then 'B'
      else 'P'
    )
).
Alles irgendwie unhübsch.

Vergleichbare Themen

3
Antw.
9505
Views
Switch Case
von Spookykid » 07.04.2011 17:07 • Verfasst in ABAP® für Anfänger
7
Antw.
727
Views
Line_exists in Switch / for Schleife
von RaCDigger » 22.07.2022 10:19 • Verfasst in ABAP® Core
0
Antw.
1463
Views
OR Mapping
von yuro » 27.01.2015 00:11 • Verfasst in ABAP Objects®
6
Antw.
2940
Views
ABAP-Mapping
von Sniper_61 » 20.11.2008 22:40 • Verfasst in ABAP® für Anfänger
3
Antw.
2248
Views
Hilfe bei Mapping
von ABAP_User » 10.05.2011 17:49 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Rechnung: Belegspez. Adresse
vor 9 Stunden von ewx 2 / 366
Daten an Tabelle binden
vor 16 Stunden von Lukas Sanders 4 / 2226
Regex in where
vor 2 Tagen von tar 8 / 1040
Programm anlegen mit Vorlage
vor 4 Tagen von DeathAndPain 2 / 811

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

Rechnung: Belegspez. Adresse
vor 9 Stunden von ewx 2 / 366
Daten an Tabelle binden
vor 16 Stunden von Lukas Sanders 4 / 2226
Regex in where
vor 2 Tagen von tar 8 / 1040
Programm anlegen mit Vorlage
vor 4 Tagen von DeathAndPain 2 / 811

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Tagen von snooga87 1 / 705
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3889
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 10314