Ansicht
Dokumentation

DDIF_ENQU_PUT - DD: Schnittstelle zum Schreiben eines Sperrobjekts ins ABAP/4 Dictionary

DDIF_ENQU_PUT - DD: Schnittstelle zum Schreiben eines Sperrobjekts ins ABAP/4 Dictionary

BAL Application Log Documentation   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Mit diesem Funktionsbaustein können die Sourcen eines Sperrobjekts in das ABAP/4 Dictionary geschrieben werden. Das Sperrobjekt wird dabei in neuer bzw. überarbeiteter Version weggeschrieben. Eine eventuell vorhandene aktive Version des Sperrobjekts bleibt dagegen unberührt.

Vor dem Schreiben des Sperrobjekts wird zunächst geprüft, ob die Aktion für das genannte Objekt zulässig ist. Ist dies nicht der Fall, etwa weil der gewählte Name gegen die Namenskonventionen verstößt, oder weil das Objekt mit dem Namen eines anderen ABAP/4 Dictionary Objekts kollidiert, so wird die Ausnahme PUT_REFUSED ausgelöst. In diesem Fall findet sich in den Systemvariablen eine Nachricht, die den Grund für die Zurückweisung genauer beschreibt.

Sollen nur einzelne Teile (z.B. die Basistabellen) des Sperrobjekts verändert werden, so sollten auch nur die entsprechenden Parameter des Funktionsbausteins versorgt werden. Dabei bedeutet "versorgt" im Fall des IMPORT-Parameters DD25V_WA, daß im Feld VIEWNAME ein von SPACE abweichender Wert übergeben wird. Bei den TABLES-Parametern (DD26E_TAB, DD27P_TAB) dagegen bedeutet "versorgt", daß sie beim Aufruf überhaupt genannt werden.
Achtung: Ein TABLES-Parameter gilt also auch als versorgt, wenn ihm eine Tabelle ohne Zeilen übergeben wird. Die Wirkung ist also in diesem Fall völlig anders als das Nichtaufführen dieses Parameters beim Aufruf. Insbesondere wird beim Versorgen von DD26E_TAB mit einer leeren Tabelle die Ausnahme ENQU_INCONSISTENT ausgelöst.

Beispiel

Das Sperrobjekt ETEST mit Primärtabelle TEST1 und einziger Sekundärtabelle TEST2 befindet sich im aktiven Zustand im ABAP/4 Dictionary. Der Join zwischen diesen beiden Tabellen wird durch den Fremdschlüssel mit dem Prüffeld TEST2-F1 realisiert. Beiden Tabellen ist als Sperrmodus 'E' zugewiesen. Nun soll der Sperrmodus für TEST1 auf 'S' verändert werden. Dazu dient das folgende Coding:

DATA DD26E_TAB LIKE DD26E OCCURS 2 WITH HEADER LINE.
DD26E_TAB-VIEWNAME = 'ETEST'. DD26E_TAB-TABNAME = 'TEST1'.
DD26E_TAB-FORTABNAME = 'TEST1'. DD26E_TAB-ENQMODE = 'S'.
DD26E_TAB-TABPOS = '1'. APPEND DD26E_TAB.
DD26E_TAB-VIEWNAME = 'ETEST'. DD26E_TAB-TABNAME = 'TEST2'.
DD26E_TAB-FORFIELD = 'F1'. D26E_TAB-FORDIR = 'I'.
DD26E_TAB-FORTABNAME = 'TEST1'. DD26E_TAB-ENQMODE = 'E'.
DD26E_TAB-TABPOS = '2'. APPEND DD26E_TAB.
COMMIT WORK.
CALL FUNCTION 'DDIF_ENQU_PUT'
EXPORTING
NAME = 'ETEST'
TABLES
DD26E_TAB = DD26E_TAB
EXCEPTIONS
PUT_FAILURE = 01
OTHERS = 02.
IF SY-SUBRC = 1.
ROLLBACK WORK.
ENDIF.
IF SY-SUBRC = 0.
COMMIT WORK.
WRITE / 'Sperrob. ETEST ist jetzt überarbeitet mit neuen Sperrmodi.'.
WRITE / 'Die aktive Version ist unverändert.'.
ELSE.
WRITE / 'Sperrobjekt ETEST ist weiter aktiv im alten Zustand.'.
ENDIF.

Hinweise

  1. Dieser Funktionsbaustein führt keine Berechtigungsprüfung durch und schreibt auch keinen TADIR- oder Korrektureintrag.
  2. Falls die Schreibeoperation mißlingt, wird die Ausnahme PUT_FAILURE ausgelöst. In diesem Fall kann ein Teil der Sourcen bereits geschrieben sein. Es sollte daher in diesem Fall zu geeignetem Zeitpunkt ein ROLLBACK durchgeführt werden.
  3. Der Baustein führt keine COMMITs oder ROLLBACKs aus. Nach erfolgreichem Schreiben sollte daher der Aufrufer ein COMMIT ausführen.
  4. Ist ein Parameter versorgt, hat aber in einer Zeile im Feld VIEWNAME einen von NAME abweichenden Wert, so wird die Ausnahme NAME_INCONSISTENT ausgelöst.
  5. Ist der Parameter DD25V_WA nicht versorgt und befindet sich auch noch keine Version des Sperrobjekts im ABAP/4 Dictionary, so wird die Ausnahme ENQU_NOT_FOUND ausgelöst.
  6. Die Tabellen aus DD26E_TAB werden in der durch TABPOS definierten Reihenfolge abgespeichert. Taucht ein TABPOS-Eintrag doppelt auf, so wird die Ausnahme ENQU_INCONSISTENT ausgelöst. Dabei sind im Feld TABPOS nur positive Einträge erlaubt. Entsprechend werden die Parameter aus DD27P_TAB in der durch OBJPOS gegebenen Reihenfolge abgespeichert.
  7. Die überarbeitet (bzw. neu) weggeschriebene Version des Sperrobjekts kann durch Aufruf des Funktionsbausteins DDIF_ENQU_ACTIVATE aktiviert werden.

Weiterführende Informationen





Parameter

DD25V_WA
DD26E_TAB
DD27P_TAB
NAME
SAVE_ABAP_LANGUAGE_VERSION

Ausnahmen

ENQU_INCONSISTENT
ENQU_NOT_FOUND
NAME_INCONSISTENT
PUT_FAILURE
PUT_REFUSED

Funktionsgruppe

SDIF

BAL Application Log Documentation   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5471 Date: 20240605 Time: 173349     sap01-206 ( 145 ms )