CORRESPONDING mit Festwert

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

CORRESPONDING mit Festwert

Beitrag von ralf.wenzel (Top Expert / 3579 / 168 / 245 ) »
Moin,

ich dachte, ich hätte das hier schonmal gefragt, aber ich finde die Frage nicht.

Ich möchte aus einer internen Tabelle einen Satz in eine interne Tabelle gleicher Struktur schreiben, aber dabei ein Feld löschen.

Also sowas wie:

Code: Alles auswählen.

loop at matnr_list "type table of matnr
assigning field-symbol(<matnr>). 

insert corresponding #( i_mara[ matnr = <matnr> ] mapping stfak = '0' ) 
into table mara_records_ohne_stfak.

endloop.
Irnkwie jeht datt nich, weil '0' keine bekannte Komponente ist (ach?!). Wie löse ich das möglichst elegant? Ja, ich könnte einen READ in eine Struktur machen und da das Feld löschen und dann den INSERT machen, aber das sind dann wieder x Anweisungen, die einen Gedankengang widerspiegeln.... Ich hätte es gern in einer Anweisung, weil das auch ein gedanklicher Schritt ist (füge den Satz mit Null-STFAK in die andere Tabelle ein).


Ralf

PS: Achso - ABAP Release 7.40, moderner krieg ich es gerade nicht....


Re: CORRESPONDING mit Festwert

Beitrag von black_adept (Top Expert / 3565 / 76 / 722 ) »
Moin Ralf,

siehe abapdoku zum Operator "Corresponding" mit dem Zusatz "EXCEPT"
Beispiel:

Code: Alles auswählen.

  lt_data2 = CORRESPONDING #( lt_data EXCEPT spras  ).
Überträgt alle gleichnamigen Felder außer "SPRAS".
Das geht aber nur, wenn das Feld nachher gelöscht werden soll.

Alternativ eine 2-Befehl Alternative wenn das Feld anderweitig initialisiert werden soll.

Code: Alles auswählen.

lt_data2 = CORRESPONDING #( lt_data1 ).
MODIFY lt_data2 FROM VALUE linestructure_from_lt_data2( spras = 'E' ) TRANSPORTING spras WHERE spras <> 'E'.
oder wenn du zufällig ein Feld mit der Zeilenstruktur von lt_data2 hast einfacher/übersichtlicher via 3 Zeilen

Code: Alles auswählen.

lt_data2 = CORRESPONDING #( lt_data1 ).
ls_data2-spras = 'E'.
MODIFY lt_data2 FROM ls_data2 TRANSPORTING spras WHERE spras <> 'E'.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
ralf.wenzelIcke0801

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: CORRESPONDING mit Festwert

Beitrag von black_adept (Top Expert / 3565 / 76 / 722 ) »
Nachtrag: Auch wenn Ralf es nicht verwenden kann - in modernen Releaseständen geht auch folgendes mit einem Befehl:

Code: Alles auswählen.

SELECT itab~*,
       'E' AS spras
  FROM @lt_data AS itab
  INTO CORRESPONDING FIELDS OF TABLE @lt_data2.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
Thomas R.Icke0801

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Über diesen Beitrag



ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

DB-Update setzt kein Subrc
vor 8 Stunden von ewx gelöst 6 / 56
Zukunft ABAP?
vor 18 Stunden von mbsr 1 / 32

Vergleichbare Themen

Festwert im ALV-Grid auflösen
von Hansi4u » 10.01.2006 20:54