Methode SAVE_PREPARE
Die Methode SAVE_PREPARE trifft vorbereitende Maßnahmen für das Sichern. Die wichtigste vorbereitende Maßnahme ist der zweite Teil der Anbindung an das Transport-System. Hier werden die bereits in der Methode GET_TRANSPORT_OBJECTS grob spezifizierten transportrelevanten Objekte (d.h. die betroffenen Tabellen) weiter konkretisiert bzw. eingeschränkt.
Beispiel-Quelltext:
Im Folgenden sind nur die
wesentlichen Teile des Quelltextes aufgeführt.
*------ transport connection ------------------------------------------
DATA:
lv_is_local_object TYPE brf_boole_d.
CALL METHOD cl_aux_brf=>get_applclass_details
EXPORTING
iv_applclass = ms_brf150_cur-applclass
IMPORTING
ev_is_local_object = lv_is_local_object
EXCEPTIONS
applclass_not_in_tadir = 1
OTHERS = 2.
*------ no transport entries for local object -------------------------
IF sy-subrc = 0 AND NOT lv_is_local_object IS INITIAL.
REFRESH et_e071.
EXIT.
ENDIF.
CALL METHOD super->if_maintenance_brf~save_prepare
IMPORTING
et_e071 = et_e071
et_e071k = et_e071k.
*------ transport key entry for tbrf142 -------------------------------
ls_tables = 'TBRF142'.
READ TABLE mt_changed_tables FROM ls_tables
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
IF mv_edit_mode NE '4'.
ls_brf142 = ms_brf142_cur.
ELSE.
ls_brf142 = ms_brf142_old.
ENDIF.
CALL METHOD cl_aux_brf=>get_tabkey_as_char
EXPORTING
iv_data = ls_brf142
iv_type = ls_tables
IMPORTING
ev_e071k = ls_e071k.
APPEND ls_e071k TO et_e071k.
ELSE.
DELETE et_e071 WHERE pgmid EQ 'R3TR'
AND object EQ 'TABU'
AND obj_name EQ ls_tables.
ENDIF.
Beschreibung:
● Vor dem Aufruf der Methode SAVE_PREPARE der Superklasse wird zunächst sichergestellt, dass keine Objekte in nicht transportierbaren Anwendungsklassen auf einen Transportauftrag gelangen.
● Dann wird die Methode SAVE_PREPARE der Superklasse aufgerufen.
Dieser Aufruf ist obligatorisch, da die Basisklasse alle Tabellen ermittelt, bei denen Änderungen eingetreten sind. Die Basisklasse ruft dazu die Methode IS_MODIFIED auf. Dabei wird die Member-Tabelle mt_changed_table aufgebaut. Diese Member-Tabelle enthält nur die Tabellennamen, zu denen es geänderte Tabelleneinträge gibt.
● Anschließend wird die Tabelle der transportrelevanten Tabelleneinträge basierend auf den tatsächlich geänderten Datensätzen aufgebaut (Tabelle et_e071k).
Diese Tabelle et_e071k enthält in einer Zeile folgende Angaben:
○ Name der Datenbanktabelle
○ Schlüssel des Tabelleneintrages, der transportiert werden soll
● Der Aufbau der Tabelle et_e071k wird durch folgende statische Service-Methoden in der Klasse CL_AUX_BRF erleichtert.
○ Methode GET_TABKEY_AS_CHAR
Die Methode GET_TABKEY_AS_CHAR erzeugt aus der übergebenen Struktur (in diesem Fall der Struktur LS_BRF142) und dem Namen der Struktur (LV_TABLES, 'TBRF142') einen Transporteintrag. Dieser Transporteintrag wird der Tabelle ET_071K zugefügt.
○ Methode ADD_TABKEYS_FOR_TR
Die Methode ADD_TABKEYS_FOR_TR ermittelt die Transporteinträge aufgrund der CUR- bzw. OLD-Tabellen.
Beachten Sie allgemein bei
dieser Methode das Verhalten beim Löschen. Wenn nämlich Einträge gelöscht
werden sollen, müssen Sie für diese zu löschenden Einträge ebenfalls
Transporteinträge erzeugen.