Pflegeobjekt &1 überprüfen oder Funktionsgruppe &2 aktualisieren

Message type: E = Error

Message class: SV - View Maintenance: Customize Messages

Message number: 138

Message text: Pflegeobjekt &1 überprüfen oder Funktionsgruppe &2 aktualisieren



Was verursacht dieses Problem?

Für den angeforderten Tabellen-Pflegedialog existiert keine
Pflegeobjektbeschreibung. Dies kann folgende Ursachen haben:
Es handelt sich um einen Tabellen-Pflegedialog von SAP, welcher ohne
Pflegeobjektbeschreibung ausgeliefert wurde.
Der Tabellen-Pflegedialog ist zu Release 3.0A oder später als
Kundenentwicklung entstanden. Dann ist möglicherweise beim Transport
des Pflegedialogs ein Fehler aufgetreten, so daß die
Pflegeobjektbeschreibung nicht im Zielsystem angekommen ist.
Der Tabellen-Pflegedialog ist als Kundenentwicklung vor Release 3.0A
entstanden, und Sie haben diesen Pflegedialog seit der Aufrüstung auf
einen höheren Releasestand noch nicht verwendet. Dann müssen Sie den
Pflegedialog an den geänderten Transportanschluß anpassen, denn zu
Release 3.0A wurde der Transportanschluß in der erweiterten
Tabellenpflege (Viewpflege, SM30) geändert.
Es gibt jetzt neben dem bereits seit 2.0 bestehenden manuellen
Transportanschluß zusätzlich einen automatischen Transportanschluß:
Beim Sichern innerhalb des Tabellen-Pflegedialoges muß der Benutzer
jetzt einen Änderungsauftrag angeben. Alle geänderten Einträge werden
dann über den automatischen Transportanschluß in den Änderungsauftrag
übernommen.
Die Änderung des Transportanschlusses der erweiterten Tabellenpflege
erfordert neben Änderungen in den generierten Bestandteilen des
Tabellen-Pflegedialoges auch die Erzeugung einer
Pflegeobjektbeschreibung. Daher muß der Tabellen-Pflegedialog
nachgeneriert werden.
Sollten Sie in den Tabellen-Pflegedialogen eigene Routinen zum Anschluß
weiterer, über individuelle Module mitgepflegter Tabellen benutzt
haben, müssen Sie diese ebenfalls geringfügig überarbeiten.


Systemantwort

<ZU>1. Fall:</> Wenden Sie sich bitte an SAP.
<ZU>2. Fall:</> Bitte transportieren Sie Ihre fehlende
Pflegeobjektbeschreibung nach oder erzeugen Sie diese.
<ZU>3. Fall:</> Passen Sie bitte Ihren Pflegedialog durch
Nachgenerierung an und überarbeiten Sie gegebenenfalls die eingenen
Routinen. Andernfalls kann die geforderte Funktion nicht ausgeführt
werden.


Wie behebe ich diesen Fehler?

1. Fall: Fehlende Pflegeobjektbeschreibung eines SAP
Tabellen-Pflegedialogs
Melden Sie bitte SAP den Fehler und teilen Sie den Namen des
Tabellen-Pflegedialogs mit.
2. Fall Fehlende Pflegeobjektbeschreibung eines kundeneigenen
Tabellen-Pflegedialogs, der ab 3.0A entstanden ist
Bitte überprüfen Sie Ihre Transporte von Pflegeobjektbeschreibungen
oder Pflegedialogen. Sollte die Pflegeobjektbeschreibung in Ihrem
Entwicklungssystem existieren, wiederholen Sie bitte den betreffenden
Transport.
Falls in Ihrem Entwicklungssystem die Pflegeobjektbeschreibung nicht
existiert, erzeugen Sie sich diese bitte. Rufen Sie hierzu die
Transaktion "Generierung Tabellen-Pflegedialog" auf (<LS>Werkzeuge</>
-><LS>ABAP/4 Workbench</> -> <LS>Entwicklung</> -> <LS>Weitere
Werkzeuge</> -> <LS>Gen.Tab-Pflegedialog</>). Wählen Sie dort
<LS>Umfeld</> -> <LS>Pflegeobjekte</> -> <LS>Generieren</>.
3. Fall Neugenerierung eines Kundeneigenen Tabellen-Pflegedialogs, der
vor Release 3.0A entstanden ist
Bitte gehen Sie wie folgt vor:
RESET N1
Neugenerieren des Tabellen-Pflegedialogs für eigene, nicht von SAP
ausgelieferte Objekte.
Die durch die Änderung des Transportkonzepts notwendig gewordene
Nachgenerierung führen Sie am einfachsten mit dem Programm
<ZH>RSVIM30A</> aus. Diesem Programm können Sie über Selektionsoptionen
Tabellen oder Views bzw. Funktionsgruppen zur Bearbeitung übergeben.
Hier geben Sie diejenigen Tabellen oder Views (bzw. Funktionsgruppen)
an, für die Sie vor Release 3.0 mit Hilfe des Programms RSVIEWGN bzw.
der Transaktion SE54 in eigener Regie Tabellen-Pflegedialoge erzeugt
haben. Weitere Einzelheiten zum Programm RSVIM30A können Sie der
Programmdokumentation entnehmen.
Transport der nachgenerierten Objekte
Falls mehrere SAP-Systeme bestehen, müssen Sie die nachgenerierten
Objekte vom Originalsystem aus verteilen. Hierfür werden die durch das
Programm RSVIM30A geänderten Objekte automatisch in einem
Änderungsauftrag protokolliert (Einzelheiten in der
Programmdokumentation). Diesen Auftrag können Sie in die Folgesysteme
transportieren.
RESET N1
Sollten Sie in den Tabellen-Pflegedialogen keine eigenen FORM-Routinen
zum Anschluß weiterer, über individuelle Module mitgepflegter Tabellen
benutzt haben, sind damit alle notwendigen Aktionen abgeschlossen.
Haben Sie jedoch solche eigenen Routinen benutzt, müssen Sie zusätzlich
die Routinen überarbeiten und die geänderten Routinen transportieren.
Technisch müssen Sie die Aktionen für alle die Tabellen bzw. View
auszuführen, für die es in der Tabelle TVIMF Einträge zu den
Zeitpunkten 10, 11 und/oder 12 gibt.
<ZH>FORM-Routine zum Eintragen weiterer Tabellen in den
Änderungsauftrag</> (Zeitpunkt "10" - nach dem Erzeugen der
Kopfeinträge der Änd.Aufgabe (E071))
Durch die Einführung des neuen Transportobjekts <ZH>R3TR VDAT</> bzw.
die Erweiterung der Funktionalität des Transportobjekts <ZH>R3TR
TABU</> ist es nicht mehr notwendig und sogar problematisch, diese
Tabellen, die logisch zum Pflegeobjekt (SM30-Objekt) gehören, einzeln
in der Änderungsaufgabe aufzuführen. Dadurch geht nämlich der logische
Zusammenhang verloren und ist in der Änderungsaufgabe nicht mehr
ersichtlich.
Nutzen Sie deshalb die neue Möglichkeit, die zusätzlichen Tabellen in
der Stückliste der Pflegeobjektdefinition (Transaktion <ZH>SOBJ</>) dem
jeweiligen Pflegeobjekt zuzuordnen. Hierdurch ist der logische
Zusammenhang gewährleistet.
<ZH>Aktionen:</>
Löschen Sie den TVIMF-Eintrag zum Zeitpunkt <ZH>10</>.
Rufen Sie hierzu die Transaktion "Generieren Tabellen-Pflegedialog" auf
(<LS>Werkzeuge</> -> <LS>ABAP/4 Workbench</> -> <LS>Entwicklungs</> ->
<LS>Weitere Werkzeuge</> -> <LS>Gener.Tab.Pflegedialog</>). Wählen sie
dort <LS>Umfeld</> -> <LS>Zeitpunkte</>.
Wenn Sie das Coding der betreffenden FORM-Routine nicht weiter
benötigen, löschen Sie die Routine mit dem ABAP/4-Editor.
Nehmen Sie die zusätzlichen Tabellen in die Stückliste des Pflegobjekts
auf (Transaktion <ZH>SOBJ</>).
<ZH>Anmerkung:</>
Sie können weiterhin Tabellen über eigene FORM-Routinen
mittransportieren, die nicht in der Stückliste des Pflegeobjekts
angegeben sind. Allerdings ist dann für diese Tabellen ein eigener
Kopfeintrag (R3TR TABU ...) in der Änderungsaufgabe erforderlich. Der
Zusammenhang zwischen diesen Objekten ist in der Änderungsaufgabe nicht
mehr erkennbar. Falls Sie dies so wünschen, müssen Sie die FORM-Routine
so abändern, daß sie nur noch R3TR-TABU-Einträge für die Tabellen
erzeugt, die <ZH>nicht</> in der Stückliste des Pflegeobjekts stehen.
Außerdem dürfen die Einträge nicht mehr direkt in die Änderungsaufgabe
geschrieben werden (bisher wurde direkt die Routine
FCOMMAPPEND(RDDCORRD) benutzt), sondern es ist lediglich die globale
interne Tabelle <ZH>VIM_CORR_OBJTAB</> zu füllen. Diese Tabelle hat die
Struktur <ZH>E071</>. Weitere Details im Beispiel weiter unten.

Das System gibt eine Fehlermeldung aus und erlaubt Ihnen nicht, mit dieser Transaktion fortzufahren, bis der Fehler behoben ist.

<ZH>FORM-Routine zum Anfügen der Keys der zusätzlichen Tabelleneinträge
zu einem Tabellen- bzw. View-Eintrag</> (Zeitpunkt "11" - nach der
Änderung eines Key-Eintrages d. Änd.Aufgabe (E071K))
Diese Routine hängt die Key-Einträge für die zusätzlichen Tabellen, die
jeweils zu einem Eintrag des Pflegeobjektes gehören, an die interne
Tabelle <ZH>CORR_KEYTAB</> (Struktur <ZH>E071K</>) an. Dabei wurde
bisher als Masterobjekt die jeweilige zusätzliche Tabelle selbt
eingetragen (CORR_KEYTAB-MASTERTYPE = 'TABU'. CORR_KEYTAB-MASTERNAME =
'......'). Dies ist jetzt nur noch für diejenigen zusätzlichen Tabellen
notwendig, die <ZH>nicht</> in der Stückliste des Pflegeobjektes
aufgefürt sind.
Für zusätzliche Tabellen, die in der Stückliste enthalten sind, muß
dagegen das Pflegeobjekt selbst als Masterobjekt angegeben werden. Dies
ist in der globalen Variablen E071K bereits geschehen, so daß nach
Initialisierung der CORR_KEYTAB mit der E071K (CORR_KEYTAB = E071K) die
Zuweisungen für CORR_KEYTAB-MASTERTYPE und CORR_KEYTAB-MASTERNAME
gelöscht werden können.
Alternativ können die globalen Variablen MASTER_TYPE bzw. MASTER_NAME
zugewiesen werden.
<ZH>Aktionen</>:
Änderung der FORM-Routine entsprechend obigen Ausführungen
<ZH>FORM-Routine zum Anfügen der Keys der zusätzlichen
Tabelleneinträge</> (Zeitpunkt "12" - nach der Änderung der
Key-Einträge der Änd.Aufgabe (E071K))
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 CORR_KEYTAB (Struktur E071K) an.
Es gilt dasselbe wie für die FORM-Routine zum Zeitpunkt 11.
<ZH>Transport der Änderungen</>
Falls mehrere SAP-Systeme bestehen, müssen Sie die geänderten
FORM-Routinen vom Originalsystem aus verteilen.
Beispiel:
RESET N1
<ZH>Pflegobjekt:</> View AROTA01
View-Definition im Dictonary
Tabelle,,Bemerkungen
T9AR_TA1,,Primärtabelle, änderbar
T9AR_TA1T,,Texttabelle zur Primtab, änderbar
T9AR_TA1S,,Sekundärtabelle, änderbar
T002,,Sekundärtabelle, nicht änderbar
T002T,,Sekundärtabelle, nicht änderbar
Stückliste der Pflegeobjektbeschreibung (Transaktion SOBJ):
Tabelle,,Bemerkungen
T9AR_TA1,,in View enthalten
T9AR_TA1S,,in View enthalten
T9AR_TA1T,,in View enthalten
T9AR_TA2,,nicht in View enthalten
zusätzlich zu pflegende Tabelle, die nicht in der Stückliste enthalten
ist:
T9AR_TA3
FORM-Routinen für den Transport-Anschluß:
<ZH>Routine zum Eintragen weiterer Tabellen in die Änderungsaufgabe</>
(Zeitpunkt "10" - nach dem Erzeugen der Kopfeinträge der Änd.Aufgabe
(E071))
*--------------------------------------------------------
* FORM E071_AROTA01
*-------------------------------------------------------
* Füllen der VIM_CORR_OBJTAB mit zusätzlichen Objekten. Es
* sind hier nur solche Objekte zu behandeln, die NICHT in
* der Stückliste der Objektbeschreibung (SOBJ) aufgeführt
* sind. Im konkreten Fall ist also nur die Tabelle
* T9AR_TA3 interessant.
-------------------------------------------------------*
FORM E071_AROTA01.
VIM_CORR_OBJTAB = E071.
VIM_CORR_OBJTAB-PGMID = 'R3TR'.
VIM_CORR_OBJTAB-OBJECT = 'TABU'.
VIM_CORR_OBJTAB-OBJ_NAME = 'T9AR_TA3'.
VIM_CORR_OBJTAB-OBJFUNC = 'K'.
APPEND VIM_CORR_OBJTAB.
ENDFORM.
<ZH>Routine zum Anfügen der Schlüssel der zusätzlichen Tabelleneinträge
zu einem Tabellen- bzw. View-Eintrag</>
(Zeitpunkt "11" - nach der Änderung eines Key-Eintrags d. Änd.Aufgabe
(E071K))
*---------------------------------------------------------
* FORM E071KS_AROTA01
*---------------------------------------------------------
* Füllen der CORR_KEYTAB mit den Key-Einträgen der
* zusätzlichen Objekte, die zum aktuellen Vieweintrag
* gehören. Dieser befindet sich zum Aufrufzeitpunkt in der
* entsprechenden Workarea.
*---------------------------------------------------------
FORM E071KS_AROTA01.
DATA: RC LIKE SY-SUBRC, RC_SAFE LIKE SY-SUBRC VALUE '1'.
* 1. zusätzliches Objekt: T9AR_TA2 ( 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 "z.B.AROTA01
* 1.2 individuellen Objektnamen angeben
CORR_KEYTAB-OBJNAME = 'T9AR_TA2'.
* 1.3 zu transportierende Keys des Objektes in
* Abhängigkeit vom aktuellen View-Eintrag ermitteln
* und in die CORR_KEYTAB eintragen...
LOOP AT IT9AR_TA2 INTO T9AR_TA2
WHERE KEY1 EQ AROTA01-KEY1.
CORR_KEYTAB-TABKEY = T9AR_TA2-KEY1.
* ...Objektkey ist jetzt ermittelt, zum Tabellenupdate
* zentrale FORM-Routine benutzen:
CLEAR RC.
PERFORM UPDATE_CORR_KEYTAB USING CORR_ACTION RC.
RC_SAFE = RC * RC_SAFE.
IF RC NE 0 AND CORR_ACTION EQ PRUEFEN .
* im Prüfmodus exit, wenn ein Teilobjekt nicht in
* Korrektur ist (RC <> 0)
EXIT.
ENDIF.
ENDLOOP.
IF RC NE 0 AND CORR_ACTION EQ PRUEFEN .
* im Prüfmodus exit, wenn ein Teilobjekt nicht in
* Korrektur ist (RC <> 0)
SY-SUBRC = RC. EXIT.
ENDIF.
* 2. zusätzliches Objekt: T9AR_TA3 ( 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 = 'T9AR_TA3'.
CORR_KEYTAB-MASTERTYPE = 'TABU'.
CORR_KEYTAB-MASTERNAME = 'T9AR_TA3'.
* 2.2 zu transportierende Keys d. Objektes in
* Abhängigkeit vom aktuellen View-Eintrag ermitteln
* und in die CORR_KEYTAB eintragen...
LOOP AT IT9AR_TA3 INTO T9AR_TA3
WHERE KEY1 EQ AROTA01-KEY1.
CORR_KEYTAB-TABKEY = T9AR_TA3-KEY1.
CORR_KEYTAB-TABKEY+4 = T9AR_TA3-KEY2.
* ...Objektkey ist jetzt ermittelt, zum Tabellenupdate
* zentrale FORM-Routine benutzen:
CLEAR RC.
PERFORM UPDATE_CORR_KEYTAB USING CORR_ACTION RC.
RC_SAFE = RC * RC_SAFE.
IF RC NE 0 AND CORR_ACTION EQ PRUEFEN .
* im Prüfmodus exit, wenn ein Teilobjekt nicht in
* Korrektur ist (RC <> 0)
EXIT.
ENDIF.
ENDLOOP.
IF RC NE 0 AND CORR_ACTION EQ PRUEFEN .
* im Prüfmodus exit, wenn ein Teilobjekt nicht in
* Korrektur ist (RC <> 0)
SY-SUBRC = RC. EXIT.
ENDIF.
SY-SUBRC = RC_SAFE.
ENDFORM.
<ZH>Routine zum Anfügen der Schlüssel der zusätzlichen
Tabelleneinträge</>
(Zeitpunkt "12" - nach der Änderung der Key-Einträge der Änd.Aufgabe
(E071K))
*---------------------------------------------------------
* FORM E071KA_AROTA01
*---------------------------------------------------------
* Füllen der CORR_KEYTAB mit den Key-Einträgen der
* zusätzlichen Objekte, die nicht unmittelbar einem
* einzelnen Vieweintrag zugeordnet werden können.
*---------------------------------------------------------
FORM E071KA_AROTA01.
DATA: RC LIKE SY-SUBRC.
* 1. Zusätzliches Objekt: T9AR_TA2 ( 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 "z.B.AROTA01
* 1.2 individuellen Objektnamen angeben
CORR_KEYTAB-OBJNAME = 'T9AR_TA2'.
* 1.3 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 = T9AR_TA2-KEY1.
* ...Objektkey ist jetzt ermittelt, zum Tabellenupdate
* zentrale FORM-Routine benutzen:
CLEAR RC.
PERFORM UPDATE_CORR_KEYTAB USING CORR_ACTION RC.
RC_SAFE = RC * RC_SAFE.
IF RC NE 0 AND CORR_ACTION EQ PRUEFEN .
* im Prüfmodus exit, wenn ein Teilobjekt nicht in
* Korrektur ist (RC <> 0)
SY-SUBRC = RC. EXIT.
ENDIF.
* 2. zusätzliches Objekt: T9AR_TA3 ( <ZH>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 = 'T9AR_TA3'.
CORR_KEYTAB-MASTERTYPE = 'TABU'.
CORR_KEYTAB-MASTERNAME = 'T9AR_TA3'.
* 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(4) = T9AR_TA3-KEY1.
CORR_KEYTAB-TABKEY+4 = T9AR_TA3-KEY2.
* ...Objektkey ist jetzt ermittelt, zum Tabellenupdate
* zentrale FORM-Routine benutzen:
CLEAR RC.
PERFORM UPDATE_CORR_KEYTAB USING CORR_ACTION RC.
RC_SAFE = RC * RC_SAFE.
IF RC NE 0 AND CORR_ACTION EQ PRUEFEN .
* im Prüfmodus exit, wenn ein Teilobjekt nicht in
* Korrektur ist (RC <> 0)
SY-SUBRC = RC. EXIT.
ENDIF.
SY-SUBRC = RC_SAFE.
ENDFORM.
RESET N1


&HANDLING&
Nach erfolgter Überarbeitung ist dann folgende Vorgehensweise bei der
Datenpflege möglich:
<ZH>Pflege der Daten</>
Geänderte Einträge werden in einen anzugebenden Änderungsauftrag
übernommen.
<ZH>Überarbeitung des Änderungsauftrags</>
Wählen Sie hierzu den Transportmodus (<LS>Tabellensicht</> ->
<LS>Transport</>), und geben Sie hierbei die Nummer des zum Ändern
benutzten Auftrags an. Dann nehmen Sie ggf. die weiteren Einträge in
den Auftrag auf bzw. löschen diejenigen Einträgen aus dem Auftrag, die
nicht transportiert werden sollen.
Den zweiten Schritt brauchen Sie erst nach Beendigung der Arbeit, also
unmittelbar vor der Freigabe der Änderungsaufgabe an den
Änderungsauftrag, auszuführen. Da alle geänderten Einträge
protokolliert wurden, kann beim Transport nichts mehr vergessen werden.
Insbesondere sind nun auch Löschungen von Tabelleneinträgen
transportierbar.
Natürlich ist nach wie vor die bisherige Arbeitsweise unter alleiniger
Nutzung des manuellen Transportanschlusses möglich. Allerdings können
so Löschungen nicht ohne weiteres transportiert werden.

Fehlermeldungsextrakt aus SAP-System. Copyright SAP SE