Ich bräuchte mal eine elegante Lösung für MOVE-CORRESPONDING EXCLUDING

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Ich bräuchte mal eine elegante Lösung für MOVE-CORRESPONDING EXCLUDING

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Hallo zusammen,

folgender Codeausschnitt:

Code: Alles auswählen.

  LOOP AT ABWESENHEITEN ASSIGNING FIELD-SYMBOL(<ABWESENHEITEN>).
*   Feldsymbol <M> auf Tabellenzeile mit Personalnummer aus aktueller Abwesenheit setzen.
*   Sofern diese Tabellenzeile noch nicht existiert, wird sie bei dieser Gelegenheit angelegt.
    ASSIGN M[ PERNR = <ABWESENHEITEN>-PERNR ] TO FIELD-SYMBOL(<M>).
    IF SY-SUBRC <> 0.
      INSERT VALUE #( PERNR = <ABWESENHEITEN>-PERNR ) INTO TABLE M.
      ASSIGN M[ PERNR = <ABWESENHEITEN>-PERNR ] TO <M>.
      ASSIGN MITARBEITER_DATA[ PERNR = <M>-PERNR ] TO FIELD-SYMBOL(<MITARBEITER_DATA>).
      IF SY-SUBRC = 0.
        MOVE-CORRESPONDING <MITARBEITER_DATA> TO <M>.
      ENDIF.
    ENDIF.

    APPEND <ABWESENHEITEN> TO <M>-ABWESENHEITEN.
  ENDLOOP.
Obenstehender Code dumpt leider in der Zeile mit dem MOVE-CORRESPONDING. Wie im Code erkennbar zeigt <M> auf eine Zeile der internen Tabelle M, und das ist eine sortierte Tabelle mit UNIQUE KEY PERNR. Obgleich oben im Code klar erkennbar ist, dass <MITARBEITER_DATA>-PERNR und <M>-PERNR gleich sein müssen (denn darüber wird das Feldsymbol <MITARBEITER_DATA> ja zugewiesen), dumpt er mir beim MOVE-CORRESPONDING weg mit der Begründung, ich würde in der Zieltabelle ein Schlüsselfeld überschreiben, was nicht zulässig ist, da Schlüsselfelder nur lesend angesprochen werden dürfen.

Was ich an dieser Stelle also bräuchte (um nicht alle relevanten Komponenten einzeln aufzählen zu müssen), wäre so etwas wie:

Code: Alles auswählen.

MOVE-CORRESPONDING <MITARBEITER_DATA> TO <M> EXCLUDING PERNR.
Diese Syntax gibt es aber leider nicht. Fälle jemandem eine elegante Lösung für dieses Problem ein?

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



Re: Ich bräuchte mal eine elegante Lösung für MOVE-CORRESPONDING EXCLUDING

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Das haut aber nicht hin, weil ich solch 7.40-Operator ja nur im Rahmen einer Komplettzuweisung nutzen kann. Bei

Code: Alles auswählen.

<M> = CORRESPONDING #( <MITARBEITER_DATA> EXCEPT PERNR ).
würde er die Spalte PERNR initial machen und dadurch in diesem Falle sogar tatsächlich versuchen, die Schlüsselspalte der Tabelle mit einem anderen Wert zu überschreiben!

Re: Ich bräuchte mal eine elegante Lösung für MOVE-CORRESPONDING EXCLUDING

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Coding umstellen. Erst eine Struktur füllen und dann komplett via INSERT einfügen weil du beim Befüllen der Struktur noch ein Move-Corresponding machen kannst.
P.S. Die folgenden Codeschnipsel machen das Selbe.

Code: Alles auswählen.

INSERT VALUE #( PERNR = <ABWESENHEITEN>-PERNR ) INTO TABLE M.
      ASSIGN M[ PERNR = <ABWESENHEITEN>-PERNR ] TO <M>.

Code: Alles auswählen.

INSERT VALUE #( PERNR = <ABWESENHEITEN>-PERNR ) INTO TABLE M ASSIGNING <M>.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Ich bräuchte mal eine elegante Lösung für MOVE-CORRESPONDING EXCLUDING

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Du kannst auch den Datenteil separat als ALIAS definieren:

Code: Alles auswählen.

TYPES: BEGIN OF ts_data,
         a TYPE i,
         b TYPE i,
         c TYPE i,
       END OF ts_data,
       BEGIN OF ts_struc,
         k TYPE n LENGTH 1.
    INCLUDE TYPE ts_data AS data.
TYPES: END OF ts_struc,
tt_table TYPE SORTED TABLE OF ts_struc WITH UNIQUE KEY k.
DATA data TYPE tt_table.
DATA new TYPE ts_struc.

INSERT VALUE #( k = '1' a = 1 b = 1 c = 1 ) INTO TABLE data.

new-k = '1'.
new-a = 2.
new-b = 2.
new-c = 2.

READ TABLE data ASSIGNING FIELD-SYMBOL(<data>) INDEX 1.
IF sy-subrc = 0.
  MOVE-CORRESPONDING new TO <data>-data.
ENDIF.
Ist halt insofern nicht schön, weil man dafür die Strukturdefinition ändern muss, auf die man evtl. gar keinen Zugriff hat.
Löst aber das Problem.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
DeathAndPain


Re: Ich bräuchte mal eine elegante Lösung für MOVE-CORRESPONDING EXCLUDING

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Pfiffig ist es auf jeden Fall, danke.
black_adept hat geschrieben:Coding umstellen. Erst eine Struktur füllen und dann komplett via INSERT einfügen weil du beim Befüllen der Struktur noch ein Move-Corresponding machen kannst.
In diesem Fall könnte ich das machen, da die Zeile ohnehin neu eingefügt werden soll. Aber dann bräuchte ich halt wieder eine Workareastruktur zum Aufbau der Tabellenzeile und wäre damit letztlich wieder auf Pre-7.40-Codingniveau. Das hätte ich mir gerne erspart.

Aber dass der INSERT-Befehl den Zusatz ASSIGNING unterstützt, war mir nicht bekannt. Das ist auf jeden Fall klasse, vielen Dank!

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1166
Views
Elegante String Parsing
von Elvis1978 » 10.11.2007 15:18 • Verfasst in ABAP® für Anfänger
5
Antw.
3288
Views
Ä und Ü werden als ÿ dargestellt. Lösung?
von fcmfanswr » 12.10.2010 10:33 • Verfasst in ABAP® Core
5
Antw.
3982
Views
ESS oder andere Lösung Webservice ?
von ratsnus » 19.04.2012 14:41 • Verfasst in Human Resources
4
Antw.
6521
Views
Suche ABAP Aufgaben mit Lösung
von ssteger » 08.08.2013 16:06 • Verfasst in ABAP® für Anfänger
0
Antw.
1224
Views

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 255

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 255

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140