Code: Alles auswählen.
LOOP AT returndata ASSIGNING FIELD-SYMBOL(<return>).
* mach was
ENDLOOP.
Code: Alles auswählen.
LOOP AT returndata ASSIGNING FIELD-SYMBOL(<return>).
* mach was
ENDLOOP.
Der Loop weißt das Feld-Symbol immer neu zu egal ob es vorher schon einmal verwendet wurde oder nicht. Innerhalb des Loops ist es immer zugewiesen.Also zweimal ASSIGNING FIELD-SYMBOL(<return>) geht nicht, einmal ASSIGNING FIELD-SYMBOL(<return>) und einmal ASSIGNING <return> geht aber auch nicht, weil unsicher.
was ist daran "unsicher"?PeterPaletti hat geschrieben: ↑29.03.2022 12:25Also zweimal ASSIGNING FIELD-SYMBOL(<return>) geht nicht, einmal ASSIGNING FIELD-SYMBOL(<return>) und einmal ASSIGNING <return> geht aber auch nicht, weil unsicher.
SAP empfiehlt, separate Feld-symbole zu benutzen.PeterPaletti hat geschrieben: ↑29.03.2022 12:25Also zur Sicherheit: einmal ASSIGNING FIELD-SYMBOL(<return>) und beim 2. Mal ASSIGNING FIELD-SYMBOL(<return2>).
Das ist doch doof. Gibt es da nicht eine schlauere Lösung?
Code: Alles auswählen.
IF <return> IS ASSIGNED...
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ewx
Da bin ich etwas anderer Ansicht.a-dead-trousers hat geschrieben: ↑29.03.2022 13:09Ketzerisch gesprochen:
Wenn ich in einem Codemodul (Form-Routine, Methode) mehrmals den selben (oder einen ähnlichen) LOOP habe, dann habe ich bei der Modularisierung was falsch gemacht.
Oft hilft es schon die LOOPs in unterschieldiche Codemodule auszulagern und dann sieht man schon dass einer z.B. die Funktion "Suche nach Wildcard" und ein anderer die Funktion "Aktualisiere Zeilen mit Wert" abbildet. Wenn man die neuen Module dann auch noch sprechend bennennt, hat man mehr gewonnen als nur eine eindeutige Verwendung eines Inline-Feld-Symbols.
Aha, SAP ist also für <return1> und <return2>. Gut zu wissen, sieht aber in meinen Augen trotzdem blöd aus.ewx hat geschrieben: ↑29.03.2022 13:06was ist daran "unsicher"?PeterPaletti hat geschrieben: ↑29.03.2022 12:25Also zweimal ASSIGNING FIELD-SYMBOL(<return>) geht nicht, einmal ASSIGNING FIELD-SYMBOL(<return>) und einmal ASSIGNING <return> geht aber auch nicht, weil unsicher.
SAP empfiehlt, separate Feld-symbole zu benutzen.PeterPaletti hat geschrieben: ↑29.03.2022 12:25Also zur Sicherheit: einmal ASSIGNING FIELD-SYMBOL(<return>) und beim 2. Mal ASSIGNING FIELD-SYMBOL(<return2>).
Das ist doch doof. Gibt es da nicht eine schlauere Lösung?
Willst du das Feldsymbol später - also außerhalb des LOOP - noch mal prüfen, musst eh prüfen, ob es zugewiesen ist:Code: Alles auswählen.
IF <return> IS ASSIGNED...
So hab ich das jetzt nicht gemeint. Vielmehr würde ich die Verarbeitung von BAPIRET2 in eine eigene Form-Routine/Methode auslagern. In diesem Fall wird vermutlich geprüft ob ein Fehler vorliegt oder ähnliches und das ist doch für die beiden besagten Funktionsbausteinaufrufe im Grund dieselbe Logik.PeterPaletti hat geschrieben: ↑29.03.2022 13:51Wenn ich nacheinander zwei Funktionsbausteine aufrufe, die mir beide Rückgabewerte vom Typ BAPIRET2 liefern, warum soll ich dann für die Rückgabewerte nicht dieselbe Tabelle verwenden?
Code: Alles auswählen.
CALL FUNCTION ... TABLES returntab = lt_return.
PERFORM check_error USING lt_return CHANGING ld_error.
IF ld_error NE abap_true.
CALL FUNCTION ... TABLES returntab = lt_return.
PERFORM check_error USING lt_return CHANGING ld_error.
ENDIF.
Moin Peter,PeterPaletti hat geschrieben: ↑29.03.2022 12:25Also zur Sicherheit: einmal ASSIGNING FIELD-SYMBOL(<return>) und beim 2. Mal ASSIGNING FIELD-SYMBOL(<return2>).
Das ist doch doof. Gibt es da nicht eine schlauere Lösung?