Transport Management System: Transport von Kopien Erzeuger

TOC Erzeuger Selektion

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.

TOC Erzeuger Selektion

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.

TOC Erzeuger Ergebnis

Wenn der Auftrag ok ist, kannst Du ihn über das Menü freigeben und danach über Transaktion STMS in das Testsystem importieren.

TOC Erzeuger Freigabe

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

 

TOC Erzeuger Implementierung

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.

TOC Erzeuger Zielsystem

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!

 

12 Kommentare zu „Transport Management System: Transport von Kopien Erzeuger

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

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

  2. 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

  3. Hallo
    Das Programm ZBC_TMS_TOC_CREATE wäre genau was ich brauche, leider funktioniert der Link zum Code nicht. Grüsse Peter

  4. 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.

Kommentar verfassen

Entdecke mehr von Developers4SAP

Jetzt abonnieren, um weiterzulesen und auf das gesamte Archiv zuzugreifen.

Weiterlesen