Eine typische Situation bei der ABAP Entwicklung ist, dass ein IT-Test wegen fehlender Testdaten nicht im Entwicklungssystem, sondern nur im Testsystem möglich ist. Steht ChaRM zur Verfügung, ist das schnell gemacht: ChaRM transportiert die Entwicklung als Transport von Kopien mit dem Transport Management System. Wenn nun aber kein ChaRM verfügbar ist, muss man den Transport von Kopien Transportauftrag dauernd manuell anlegen. In diesem Beitrag bauen wir einen kleinen Transport von Kopien Erzeuger, der uns diese manuelle fehleranfällige Tätigkeit abnimmt.
Benutzung des Transport von Kopien Erzeuger
Beim Start des Programms ZBC_TMS_TOC_CREATE öffnet sich der Selection Screen. Auf dem Screen wählt man über die Suchhilfe ein oder mehrere Aufträge aus. Das Coding prüft bei Erzeugung des Aufrags, dass nur änderbare Workbench- bzw. Customizing-Aufträge ausgewählt wurden.
Nach der Erzeugung des Transport von Kopien Auftrags wird dieser direkt geöffnet, damit man das Ergebnis nochmal prüfen kann. Auf der folgenden Abbildung sind gut die CORR MERGE Einträge zu sehen, welche die Quellaufträge und deren Aufgaben referenzieren.
Wenn der Auftrag ok ist, kannst Du ihn über das Menü freigeben und danach über Transaktion STMS in das Testsystem importieren.
Implementierung
Den Code kannst Du hier herunterladen. Das Programm ZBC_TMS_TOC_CREATE besteht aus den folgenden Teilen
- Klasse LCL_UI_CTR: UI Logik wie Suchhilfe und Öffnen des Auftrags.
- Klasse LCL_TOC_CTR: Logik der Transport von Kopien Erzeugung
- Interface LIF_CONST: Konstanten für Auftragsart und -status, welche das Coding benutzt.
- Klasse LCL_TEST: Unit Test Klasse für die TOC Erzeugung
Die wesentliche Logik des Programms steckt in der Methode LCL_TOC_CTR, CREATE_TOC. Die Methode erhält eine Tabelle von Auftragsnummern aus dem UI Controller. Zunächst prüft die Methode read_request, ob der Auftrag auch existiert. Weiterhin prüft die Logik, dass nur Workbench bzw. Customizing Aufträge übergeben wurden und dass alle Aufträge änderbar sind.
Für die übergebenen Aufträge ermittelt Funktionsbaustein TRINT_FOLLOW_STRKORR_BACKWARD die zugehörigen Aufgaben.
In Methode create_toc_init wird der intiale (=leere) TOC Auftrag angelegt. Das Hinzufügen der Objektlisten aus den Quellaufträgen zum TOC Auftrag macht der Funktionsbaustein TRINT_MERGE_COMMS.
METHOD create_toc. FIELD-SYMBOLS <lv_trkorr> TYPE trkorr. DATA ls_request_header TYPE trwbo_request_header. DATA lt_request_header_src TYPE trwbo_request_headers. DATA lv_msg TYPE string. DATA lv_as4text TYPE as4text. DATA lt_e070 TYPE trwbo_t_e070. IF lines( it_trkorr ) = 0. * Wählen Sie einen vorhandenen Auftrag aus MESSAGE e773(tk) INTO lv_msg. raise_exc_by_sy( ). ENDIF. * Übergebene Aufträge prüfen LOOP AT it_trkorr ASSIGNING <lv_trkorr>. ls_request_header = read_request( <lv_trkorr> ). APPEND ls_request_header TO lt_request_header_src. * Prüfen ob Auftrag Workbench oder Customizing ist IF NOT ( ls_request_header-trfunction = lif_const=>gc_enum_trfunction-workbench_request OR ls_request_header-trfunction = lif_const=>gc_enum_trfunction-customizing_request ). MESSAGE e000(swlt) WITH |Auftrag { <lv_trkorr> } ist nicht Cust/Work| INTO lv_msg. raise_exc_by_sy( ). ENDIF. IF ls_request_header-trstatus <> lif_const=>gc_enum_trstatus-modifiable. MESSAGE e000(swlt) WITH |Auftrag { <lv_trkorr> } muss änderbar sein| INTO lv_msg. raise_exc_by_sy( ). ENDIF. ENDLOOP. * Aufgaben aller Quellaufträge sammeln CALL FUNCTION 'TRINT_FOLLOW_STRKORR_BACKWARD' CHANGING ct_requests = lt_request_header_src. * TOC Request erzeugen: Name wie der 1. Aufrag mit Prefix TOC lv_as4text = |TOC { lt_request_header_src[ 1 ]-as4text }|. rs_request_header_toc = create_toc_init( lv_as4text ). MOVE-CORRESPONDING lt_request_header_src TO lt_e070. * Objektlisten aus den Quellaufgaben zum TOC Auftrag hinzufügen CALL FUNCTION 'TRINT_MERGE_COMMS' EXPORTING it_e070 = lt_e070 CHANGING cs_target_request = rs_request_header_toc EXCEPTIONS db_access_error = 1 invalid_target_request = 2 invalid_source_request = 3 OTHERS = 4. IF sy-subrc <> 0. raise_exc_by_sy( ). ENDIF. ENDMETHOD.
Anpassung des Zielsystems
Das Zielsystem des erzeugten TOC Auftrags musst Du bei der Implementierung des Programms auf Deinem System noch anpassen. Aktuell steht bei jedem Auftrag GWY als Zielsystem drin.
Im Code ist das die Methode lcl_toc_ctr, create_toc_init. Diese Methode erzeugt den intialen TOC Auftrag.
METHOD create_toc_init. CALL FUNCTION 'TR_INSERT_REQUEST_WITH_TASKS' EXPORTING iv_type = lif_const=>gc_enum_trfunction-transport_of_copies iv_text = iv_as4text iv_target = 'GWY' "TODO: Zielsystem anpassen IMPORTING es_request_header = rs_request_header EXCEPTIONS insert_failed = 1 enqueue_failed = 2 OTHERS = 3. IF sy-subrc <> 0. raise_exc_by_sy( ). ENDIF. ENDMETHOD.
Hast du noch Fragen?
Nutze gerne unsere Kommentarfunktion!
Dennis Suck sagt:
Hallo,
leider funktioniert der Link zum Code nicht, könnte der noch einmal aktualisiert werden?
MfG
Dennis Suck
Mehmet Uenal sagt:
Leider stehen die Dateien nicht mehr zur Verfügung. Durch technische Updates sind dies leider wohl gelöscht worden. Ich bin da mit dem Support im Austausch. Falls wir es schaffen sollten, diese wiederherzustellen, werde ich diese hier veröffentlichen.
Uli.Dietrich@protonmail.ch sagt:
Sehr geehrter Hr. Lühr
Vielen herzlichen Dank für ihren Tollen Beitrag.
Leider funktioniert der Download link nicht um das Tool zu testen.
Wenn ich auf den link klicke:
https://developers4sap.blog/wp-content/uploads/2019/08/ZBC_TMS_TOC_CREATE.txt
Erscheint “Oops! That page can’t be found.”
Könnten sie das bitte beheben?
Danke vorab.
VG
Uli
Uli.Dietrich@protonmail.ch sagt:
Download Link funktioniert leider nicht!
Martin sagt:
Hallo,
interessanter Artikel Leider funktioniert der download unter https://developers4sap.blog/wp-content/uploads/2019/08/ZBC_TMS_TOC_CREATE.txt nicht.
MeinerEiner sagt:
Hallo,
Mir gefällt der Beitrag sehr gut – danke dafür!
Habe allerdings festgestellt, dass der Link zu den Sourcen nicht funktioniert …
Sind diese absichtlich nicht mehr verfügbar, oder kann das gefixt werden?
Danke und lG
Tom sagt:
Hallo Rüdiger – Klasse Idee dein TvK Erzeuger. Leider lässt sich der Code nicht mehr runterladen. Hast du noch eine andere Url ? Danke und Gruss Tom
Peter sagt:
Hallo
Das Programm ZBC_TMS_TOC_CREATE wäre genau was ich brauche, leider funktioniert der Link zum Code nicht. Grüsse Peter
Uli sagt:
Download link funktioniert leider nicht mehr
Marcel Schmiechen sagt:
leider kann die Datei mit dem Code nicht heruntergeladen werden
Johnny sagt:
Hi, super hilfreicher Eintrag! Leider funktioniert der Downloadlink nicht mehr. Könnt ihr den bitte wiederherstellen?
Mehmet Uenal sagt:
Leider stehen die Dateien nicht mehr zur Verfügung. Durch technische Updates sind dies leider wohl gelöscht worden. Ich bin da mit dem Support im Austausch. Falls wir es schaffen sollten, diese wiederherzustellen, werde ich diese hier veröffentlichen.