Show TOC

HintergrundZusatzinformation Transport Dieses Dokument in der Navigationsstruktur finden

 

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.

Beispiel

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.

  1. 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 Syntax

    1. 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.
    Ende des Codes
  2. 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 Syntax

    1. 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.
    Ende des Codes

    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.

  3. 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 Syntax

    1. 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.
    Ende des Codes