Zusatzinformation Transport 
Werden Tabellen bei der Pflege dunkel mitgepflegt, sollten sie wegen des logischen Zusammenhangs in der Stückliste der Pflegeobjektdefinition dem jeweiligen Pflegeobjekt zugeordnet werden. Es ist aber auch möglich, die Tabellen nicht in die Stückliste aufzunehmen. Dies hat aber den Verlust des logischen Zusammenhangs mit dem Pflegeobjekt zur Folge. Für diese Tabellen müssen dann die entsprechenden Einträge in dem Änderungsauftrag erzeugt werden.
Werden andere sperrbare Objekte etc. im Hintergrund verändert, dann müssen eigene Einträge in der Aufgabe erzeugt werden.
Aufbau
Beim View V1 wird die Tabelle T1 und T2 dunkel mitgepflegt.
T1 und T2 sind nicht in der Viewdefinition enthalten.
T1 ist in der Stückliste der Pflegebeschreibung zu V1 enthalten, T2 ist nicht enthalten.
Zusätzliche Strukturen
IT1: interne Tabelle mit Werten von T1
IT2: interne Tabelle mit Werten von T2
Die Tabelle T1 wird bei dieser Konstellation automatisch in die Änderungsaufgabe übernommen. Dagegen muß für die Tabelle T2 ein Kopfeintrag erzeugt werden.
Routine zum Eintragen weiterer Objekte in die Aufgabe Zeitpunkt 10
In die interne Tabelle HyperLink: TX.SM30_EXIT_CORR_TABS VIM_CORR_OBJTAB v> muß der Kopfeintrag für die Objekte aufgenommen werden, die weder in der Strukturdefinition vom View stehen noch zugehörige Texttabellen sind, noch in der Stückliste der Pflegeobjektbeschreibung stehen. Insbesondere sind auch sperrbare Objekte zulässig (z.B. Programme).
Die Routine sieht gemäß des Beispiels wie folgt aus:
Syntax
FORM name10. VIM_CORR_OBJTAB = E071. VIM_CORR_OBJTAB-PGMID = 'R3TR'. VIM_CORR_OBJTAB-OBJECT = 'TABU'. VIM_CORR_OBJTAB-OBJ_NAME = 'T2'. VIM_CORR_OBJTAB-OBJFUNC = 'K'. APPEND VIM_CORR_OBJTAB. ENDFORM.
Routine Erzeugen/Löschen/Prüfen eines Key-Eintrags des Änderungsauftrages Zeitpunkt 11
Diese Routine hängt die Key-Einträge für die zusätzlich dunkel gepflegten Tabellen, die jeweils zum aktuellen Eintrag des Pflegeobjektes gehören, an die interne Tabelle HyperLink: TX.SM30_EXIT_CORR_TABS CORR_KEYTAB v> an.
Für die zusätzlichen Tabellen, die in der Stückliste enthalten sind, muß das Masterobjekt des Pflegeobjektes angegeben werden. Dies ist in der globalen Variablen E071K bereits geschehen.
Für die zusätzlichen Tabellen, die nicht in der Stückliste enthalten sind, muß das Masterobjekt HyperLink: TX.SM30_EXIT_KON_TRSP TRANSP_OBJECT v> angegeben werden.
Die Routine sieht gemäß des Beispiels wie folgt aus:
Syntax
FORM name11. * 1. zusätzliche Tabelle T1 (in Stückliste enthalten) CORR_KEYTAB = E071K. * oder es ist auch möglich: * CORR_KEYTAB-TRKORR = E071K-TRKORR. * CORR_KEYTAB-PGMID = TRANSPORTER. "R3TR * CORR_KEYTAB-OBJECT = TRANSP_OBJECT. "TABU * CORR_KEYTAB-MASTERTYPE = MASTER_TYPE "VDAT * CORR_KEYTAB-MASTERNAME = MASTER_NAME "im Bsp. V1 * 1.2 individuellen Objektnamen angeben CORR_KEYTAB-OBJNAME = 'T1'. * 1.3 zu transportierende Keys des Objektes in * Abhängigkeit vom aktuellen View-Eintrag ermitteln * und in die CORR_KEYTAB eintragen... LOOP AT IT1 INTO T1 WHERE KEY1 EQ V1-KEY1. CORR_KEYTAB-TABKEY = T1-KEY1. * ...Objektkey ist jetzt ermittelt, zum Tabellenupdate * zentrale FORM-Routine benutzen: CLEAR RC. PERFORM UPDATE_CORR_KEYTAB USING HyperLink: TX.SM30_EXIT_KON_TRSP CORR_ACTION v> RC. ENDLOOP. IF RC NE 0 AND CORR_ACTION EQ PRUEFEN. * im Prüfmodus exit, wenn ein Teilobjekt nicht in * Korrektur ist SY-SUBRC = RC. EXIT. ELSE. "hinzugefügt, gelöscht oder kein Fehler RC_SAFE = RC. ENDIF. * 2. zusätzliche Tabelle: T2 * (NICHT in Stückliste enthalten): * - CORR_KEYTAB-Eintrag (E071K) aufbauen: * 2.1 Felder mit individuellen Werten füllen CLEAR CORR_KEYTAB. CORR_KEYTAB-TRKORR = E071K-TRKORR. CORR_KEYTAB-PGMID = 'R3TR'. CORR_KEYTAB-OBJECT = 'TABU'. CORR_KEYTAB-OBJNAME = 'T2'. CORR_KEYTAB-MASTERTYPE = 'TABU'. CORR_KEYTAB-MASTERNAME = 'T2'. * 2.2 zu transportierende Keys d. Objektes in * Abhängigkeit vom aktuellen View-Eintrag ermitteln * und in die CORR_KEYTAB eintragen... LOOP AT IT2 INTO T2 WHERE KEY1 EQ V1-KEY1. CORR_KEYTAB-TABKEY = T2-KEY1. CORR_KEYTAB-TABKEY+4 = T2-KEY2. * ...Objektkey ist jetzt ermittelt, zum Tabellenupdate * zentrale FORM-Routine benutzen: CLEAR RC. PERFORM UPDATE_CORR_KEYTAB USING CORR_ACTION RC. ENDLOOP. IF RC NE 0 AND CORR_ACTION EQ PRUEFEN. * im Prüfmodus exit, wenn ein Teilobjekt nicht in * Korrektur ist SY-SUBRC = RC. EXIT. ELSE. "hinzufügen oder löschen oder kein Fehler * endgültigen Returncode ermitteln IF RC_SAFE EQ 0 OR RC EQ 0. * mindestens ein update erfolgreich CLEAR SY-SUBRC. "return ok. ELSE. "alle Updates nicht notwendig SY-SUBRC = RC. "return nicht ok. ENDIF. ENDIF. ENDFORM.
Der aktuelle Tabellen/Vieweintrag, dem die benötigten Informationen zum Aufbau des CORR_KEYTAB-Eintrags entnommen werden können, befindet sich zu diesem Zeitpunkt in der Workarea der Tabelle/View.
Routine zum Anfügen der Keys der zusätzlichen Tabelleneinträge Zeitpunkt 12
Diese Routine hängt die Key-Einträge für die zusätzlichen Tabellen, die nicht unbedingt zu einem einzelnen Eintrag des Pflegeobjektes gehören, an die interne Tabelle HyperLink: TX.SM30_EXIT_CORR_TABS CORR_KEYTAB v> (Struktur E071K) an. Es gilt dasselbe wie für die Exit-Routine zum Zeitpunkt 11.
Die Routine sieht gemäß des Beispiels wie folgt aus:
Syntax
FORM name12. DATA: RC LIKE SY-SUBRC. * 1. Zusätzliche Tabelle: T1 (in Stückliste enthalten) * CORR_KEYTAB-Eintrag (E071K) aufbauen: * 1.1 Initialisieren mit global vorbelegter E071K CORR_KEYTAB = E071K. * oder es ist auch möglich: * CORR_KEYTAB-TRKORR = E071K-TRKORR. * CORR_KEYTAB-PGMID = TRANSPORTER. "R3TR * CORR_KEYTAB-OBJECT = TRANSP_OBJECT. "TABU * CORR_KEYTAB-MASTERTYPE = MASTER_TYPE "VDAT * CORR_KEYTAB-MASTERNAME = MASTER_NAME "im Bsp. V1 * 1.2 individuellen Objektnamen angeben CORR_KEYTAB-OBJNAME = 'T1'. * ...Objektkey ist jetzt ermittelt, zum Tabellenupdate * zentrale FORM-Routine benutzen: CLEAR RC. PERFORM UPDATE_CORR_KEYTAB USING CORR_ACTION RC. IF RC NE 0. RC_SAFE = RC. ENDIF. * 2. zusätzliche Tabelle: T2 * ( NICHT in Stückliste enthalten) * - CORR_KEYTAB-Eintrag (E071K) aufbauen: * 2.1 Felder mit individuellen Werten füllen CLEAR CORR_KEYTAB. CORR_KEYTAB-TRKORR = E071K-TRKORR. CORR_KEYTAB-PGMID = 'R3TR'. CORR_KEYTAB-OBJECT = 'TABU'. CORR_KEYTAB-OBJNAME = 'T2'. CORR_KEYTAB-MASTERTYPE = 'TABU'. CORR_KEYTAB-MASTERNAME = 'T2'. * 2.2 zu transportierende Keys des Objektes ermitteln * und in die CORR_KEYTAB eintragen... ...... individuelles Coding, die View-Einträge können ...... der internen Tabelle TOTAL entnommen werden. CORR_KEYTAB-TABKEY = T2-KEY1. CORR_KEYTAB-TABKEY+4 = T2-KEY2. * ...Objektkey ist jetzt ermittelt, zum Tabellenupdate * zentrale FORM-Routine benutzen: CLEAR RC. PERFORM UPDATE_CORR_KEYTAB USING CORR_ACTION RC. * endgültigen Returncode ermitteln IF RC_SAFE EQ 0 OR RC EQ 0. * mindestens ein update erfolgreich CLEAR SY-SUBRC. "return ok. ELSE. "alle Updates nicht notwendig SY-SUBRC = RC. "return nicht ok. ENDIF. ENDFORM.