Move Corresponding bei Feldsymbolen?

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

Move Corresponding bei Feldsymbolen?

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Hallo zusammen,

ich bin gerade an nem Problem dran, ein bestehendes Prog so umzubauen, dass es dynamisch arbeitet.
Es kommt öfters vor, dass der Befehl Move Corresponding genutzt wurde...
Problem bei der Sache, die FS zeigen auf Strukturen die dynamisch erstellt wurden...sprich wurden mit TYPE ANY deklariert, ergo funktioniert der Befehl Move Corresponding nicht (Fehlermeldung : "<fs> ist keine STruktur oder interne Tabelle mit Kopfzeile."

Allerdings ist es eine STruktur ;)

Welche möglichkeiten habe ich die identischen Felder des einen Feldsymbols auf ein anders Feldsymbol zu moven, welches ansatzweise den gleichen aufbau hat...aber eben nicht komplett.

Thx 4 help.

Gruß
Markus

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


Beitrag von BlackMail (ForumUser / 79 / 0 / 0 ) »
Du musst wohl mit den RTTI-Klassen arbeiten.
Als Beispiel:

Code: Alles auswählen.

FORM move_corr USING us_in TYPE any CHANGING cs_out TYPE any.

  TYPE-POOLS: abap.

  DATA:
    lx_structdescr            TYPE REF TO cl_abap_structdescr.

  FIELD-SYMBOLS:
    <l_in>                    TYPE ANY,
    <l_out>                   TYPE ANY,
    <ls_component>            TYPE abap_compdescr.

  lx_structdescr ?= cl_abap_typedescr=>describe_by_data( us_in ).

  IF NOT lx_structdescr IS INITIAL.
    LOOP AT lx_structdescr->components ASSIGNING <ls_component>.
      ASSIGN COMPONENT <ls_component>-name
        OF STRUCTURE cs_out TO <l_out>.
      CHECK sy-subrc = 0.

      ASSIGN COMPONENT <ls_component>-name
        OF STRUCTURE us_in TO <l_in>.
      CHECK sy-subrc = 0.

      MOVE <l_in> TO <l_out>.
    ENDLOOP.
  ENDIF.

ENDFORM.
Hierbei werden namensgleiche Felder einander zugewiesen. Die Routine müsste aber noch erweitert werden, weil im Moment vorausgesetzt wird, dass zwei Strukturen als Parameter übergeben werden. Außerdem gibt es bei der Zuweisung keine Typprüfung, d.h. wenn es in den Strukturen Komponenten mit gleichem Namen aber unterschiedlichen Typs gibt, erfolgt ein Kurzdump. Also bitte nur als Beispiel verstehen.

Gruß BlackMail.

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
BlackMail hat geschrieben:Du musst wohl mit den RTTI-Klassen arbeiten.
Als Beispiel:

Code: Alles auswählen.

FORM move_corr USING us_in TYPE any CHANGING cs_out TYPE any.

  TYPE-POOLS: abap.

  DATA:
    lx_structdescr            TYPE REF TO cl_abap_structdescr.

  FIELD-SYMBOLS:
    <l_in>                    TYPE ANY,
    <l_out>                   TYPE ANY,
    <ls_component>            TYPE abap_compdescr.

  lx_structdescr ?= cl_abap_typedescr=>describe_by_data( us_in ).

  IF NOT lx_structdescr IS INITIAL.
    LOOP AT lx_structdescr->components ASSIGNING <ls_component>.
      ASSIGN COMPONENT <ls_component>-name
        OF STRUCTURE cs_out TO <l_out>.
      CHECK sy-subrc = 0.

      ASSIGN COMPONENT <ls_component>-name
        OF STRUCTURE us_in TO <l_in>.
      CHECK sy-subrc = 0.

      MOVE <l_in> TO <l_out>.
    ENDLOOP.
  ENDIF.

ENDFORM.
Hierbei werden namensgleiche Felder einander zugewiesen. Die Routine müsste aber noch erweitert werden, weil im Moment vorausgesetzt wird, dass zwei Strukturen als Parameter übergeben werden. Außerdem gibt es bei der Zuweisung keine Typprüfung, d.h. wenn es in den Strukturen Komponenten mit gleichem Namen aber unterschiedlichen Typs gibt, erfolgt ein Kurzdump. Also bitte nur als Beispiel verstehen.

Gruß BlackMail.
Danke!
Werd mal schauen inwieweit ich dieses Coding für meine Aufgabe anpassen muss. Aber sieht schon sehr gut aus.

Gruß
Markus

Seite 1 von 1

Vergleichbare Themen

3
Antw.
3133
Views
SORT mit Feldsymbolen
von MarkusW » 01.11.2007 13:14 • Verfasst in ABAP® Core
5
Antw.
2218
Views
Probleme mit Feldsymbolen
von LittleT » 16.10.2007 09:40 • Verfasst in ABAP® für Anfänger
26
Antw.
10337
Views
Unicode bei Feldsymbolen (UC_OBJECTS_NOT_CONVERTIBLE)
von zer0 » 14.03.2013 11:43 • Verfasst in ABAP® Core
9
Antw.
6268
Views
Strukturen dynamisch mit Feldsymbolen vergleichen
von cmalthaner » 02.07.2013 14:59 • Verfasst in ABAP® Core
8
Antw.
2761
Views
Zuweisung an Felder innerhalb von Feldsymbolen
von Svenson » 01.08.2005 16:05 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

FOR mit CORRESPONDING
vor 10 Stunden von msfox 3 / 111
line_exists evaluieren
vor 3 Tagen von Radinator gelöst 6 / 405

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

FOR mit CORRESPONDING
vor 10 Stunden von msfox 3 / 111
line_exists evaluieren
vor 3 Tagen von Radinator gelöst 6 / 405

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor 2 Wochen von ABAPlerv 1 / 1922
Erweiterung in ME51N/ME52N:
vor 2 Wochen von ABAPlerv 1 / 1776