[ABAP] Transport von Kopien aus Transportauftrag anlegen und Aufgaben/Objekte übernehmen

* Siehe Typgruppe SCTSC (Konstanten CTS)

SELECTION-SCREEN BEGIN OF LINE.
  SELECTION-SCREEN COMMENT (20) lbl1 FOR FIELD p_trkorr.
  PARAMETERS: p_trkorr LIKE e070-trkorr OBLIGATORY.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
  SELECTION-SCREEN COMMENT (20) lbl2 FOR FIELD p_tar.
  PARAMETERS: p_tar TYPE trheader-tarsystem OBLIGATORY VALUE CHECK DEFAULT 'XYZ'.
SELECTION-SCREEN END OF LINE.

INITIALIZATION.
  lbl1 = 'Transport-Auftrag:'.
  lbl2 = 'Transportziel:'.

START-OF-SELECTION.

  DATA: lv_req TYPE trwbo_request.

* (Nach-)Lesen von Einzelbestandteilen eines Auftrags
  CALL FUNCTION 'TR_READ_REQUEST'
    EXPORTING
      iv_read_e070     = abap_true
      iv_read_e07t     = abap_true
      iv_trkorr        = p_trkorr
    CHANGING
      cs_request       = lv_req
    EXCEPTIONS
      error_occured    = 1
      no_authorization = 2
      OTHERS           = 3.

  IF sy-subrc = 0.

    WRITE: / 'Kopfdaten des Auftrages', p_trkorr, 'gelesen.'.

* Text übernehmen
    DATA(lv_as4text) = CONV as4text( |TvK:{ lv_req-h-as4text }| ).
    DATA: lv_tvk TYPE trwbo_request_header.

* Auftrag mit Aufgaben anlegen (ohne Dialog)
    CALL FUNCTION 'TR_INSERT_REQUEST_WITH_TASKS'
      EXPORTING
        iv_type            = sctsc_type_transport " TvK anlegen
        iv_text            = lv_as4text
        iv_owner           = sy-uname
        iv_target          = p_tar
        iv_with_badi_check = abap_true
      IMPORTING
        es_request_header  = lv_tvk
      EXCEPTIONS
        insert_failed      = 1
        enqueue_failed     = 2
        OTHERS             = 3.

    IF sy-subrc = 0.

      WRITE: / 'Ziel-Auftrag', lv_tvk-trkorr, 'angelegt.'.

* Quell-Auftrag kopieren
* Kopieren von Aufträgen/Aufgaben
      CALL FUNCTION 'TR_COPY_COMM'
        EXPORTING
          wi_dialog                = abap_false
          wi_trkorr_from           = p_trkorr
          wi_trkorr_to             = lv_tvk-trkorr
          wi_without_documentation = abap_true
        EXCEPTIONS
          db_access_error          = 1
          trkorr_from_not_exist    = 2
          trkorr_to_is_repair      = 3
          trkorr_to_locked         = 4
          trkorr_to_not_exist      = 5
          trkorr_to_released       = 6
          user_not_owner           = 7
          no_authorization         = 8
          wrong_client             = 9
          wrong_category           = 10
          object_not_patchable     = 11
          OTHERS                   = 12.

      IF sy-subrc = 0.

        WRITE: / 'Objekte des Quell-Auftrages', p_trkorr, 'nach', lv_tvk-trkorr, 'kopiert'.

        DATA(lv_ok) = abap_true.

* Quell-Aufgaben kopieren
        SELECT FROM e070
          FIELDS trkorr
          WHERE strkorr = @p_trkorr
          INTO TABLE @DATA(it_trkorr_aufg).

        WRITE: / lines( it_trkorr_aufg ), 'Aufgaben des Quell-Auftrages', p_trkorr, 'gelesen.'.

* alle Quell-Aufgaben des Quell-Auftrages
        LOOP AT it_trkorr_aufg ASSIGNING FIELD-SYMBOL(<a>).
* Kopieren von Aufträgen/Aufgaben
          CALL FUNCTION 'TR_COPY_COMM'
            EXPORTING
              wi_dialog                = abap_false
              wi_trkorr_from           = <a>-trkorr
              wi_trkorr_to             = lv_tvk-trkorr
              wi_without_documentation = abap_true
            EXCEPTIONS
              db_access_error          = 1
              trkorr_from_not_exist    = 2
              trkorr_to_is_repair      = 3
              trkorr_to_locked         = 4
              trkorr_to_not_exist      = 5
              trkorr_to_released       = 6
              user_not_owner           = 7
              no_authorization         = 8
              wrong_client             = 9
              wrong_category           = 10
              object_not_patchable     = 11
              OTHERS                   = 12.
          IF sy-subrc = 0.
            WRITE: / 'Aufgabe',<a>-trkorr,'des Quell-Auftrages', p_trkorr, 'nach', lv_tvk-trkorr, 'kopiert'.
          ELSE.
            lv_ok = abap_false.
            WRITE: / 'Fehler (', sy-subrc, ') beim Kopieren der Quell-Aufgabe:', <a>-trkorr.
            EXIT.
          ENDIF.
        ENDLOOP.

        IF lv_ok = abap_true.
* Objekte und Schlüssel eines Auftrags sortieren
          CALL FUNCTION 'TR_SORT_AND_COMPRESS_COMM'
            EXPORTING
              iv_trkorr                      = lv_tvk-trkorr
            EXCEPTIONS
              trkorr_not_found               = 1
              order_released                 = 2
              error_while_modifying_obj_list = 3
              tr_enqueue_failed              = 4
              no_authorization               = 5
              OTHERS                         = 6.

          IF sy-subrc = 0.
            WRITE: / 'Ziel-Transportauftrag', lv_tvk-trkorr, 'erfolgreich sortiert und verdichtet.'.
          ELSE.
            WRITE: / 'Fehler (', sy-subrc, ') beim Verdichten von Transportauftrag:', lv_tvk-trkorr.
          ENDIF.

        ELSE.
          WRITE: / 'Fehler beim Kopieren der Quell-Aufgaben in Transportauftrag:', lv_tvk-trkorr.
        ENDIF.

      ELSE.
        WRITE: / 'Fehler (', sy-subrc, ') beim Lesen des Quell-Auftrages:', p_trkorr.
      ENDIF.

    ELSE.
      WRITE: / 'Fehler (', sy-subrc, ') beim Anlegen des Ziel-Auftrages'.
    ENDIF.

  ELSE.
    WRITE: / 'Fehler (', sy-subrc, ') beim Lesen des Quell-Auftrages:', p_trkorr.
  ENDIF.

[SAP] SAP-Transporte

Transaktionen

SE01 (Transport Organizer erweiterte Sicht)
SE03 (Transport Organizer Tools)

  • Transport Organizer Tools -> Objekte in Aufträgen -> Objekte in Aufträgen/Aufgaben suchen
  • Selektion der Objekte: in einem Punkt ‘?’ PGMID ‘CORR’, OBJ ‘MERG’ und “TA-Nr*” eintragen
  • Haken bei ‘?’
  • Button “Ausführen (F8)”

SE10 (Transport Organizer)
STMS (Transport Management System)

  • Button “Importübersicht” (F5) (LKW)
  • Doppelklick auf Zielsystem
  • Importqueue wird angezeigt
  • Menü -> Springen -> Historie -> Import Historie oder Button “Import Historie” (Schriftrolle)
  • Zeitfilter: Klick auf Filtersymbol vor dem Wort “Zeitintervall”
  • Benutzerfilter: Spalte markieren + Klick auf Filtersymbol in der Toolbar

Funktionsbausteine

TR_F4_REQUESTS (F4-Hilfe für Aufträge/Aufgaben)
TR_REQUEST_CHOICE (Auswahl eines Transportauftrags (mit Anlegen))
TR_READ_REQUEST ((Nach-)Lesen von Einzelbestandteilen eines Auftrags)
TR_COPY_COMM (Kopieren von Aufträgen/Aufgaben)
TR_GET_OBJECTS_OF_REQ_AN_TASKS (erstellt Gesamt-Objektliste eines Auftrags und seiner Aufgaben)
TR_APPEND_TO_COMM_OBJS_KEYS (Anhängen und Sperren von Objekten und Schlüsseln an eine Aufgabe)
TR_SORT_AND_COMPRESS_COMM (Objekte und Schlüssel eines Auftrags sortieren)
TR_SORT_OBJECT_AND_KEY_LIST (Objekte und Schlüssel sortieren (ohne DB-Update))
TR_INSERT_REQUEST_WITH_TASKS (Auftrag mit Aufgaben anlegen (ohne Dialog))
TR_CHECK_REQUEST (Prüfe kompletten Auftrag)
TR_RELEASE_REQUEST (Freigabe eines Auftrags/einer Aufgabe)
TR_READ_GLOBAL_INFO_OF_REQUEST (Kommandodatei lesen und abhängig vom Aufruf aufbereiten)
TRINT_ORDER_CHOICE (Abfrage Auftragnummer, wenn Objekt noch nicht zugeordnet)
TRINT_APPEND_COMM (Intern: Hinzufügen Objekte & Schlüssel an einen Auftrag)
TRINT_DOCU_INTERFACE (Intern: Bearbeitung der Dokumentationsbausteine einer Aufgabe/Auftrags)
TRINT_OBJECT_TABLE (Intern: Tabelle mit allen Objekttypen inklusive Texten)
TRINT_FI_GET_DIRECTORY_NAMES (intern: Pfade der Transportverzeichnisse)

Tabellen

E070 (Transportsystem: Header von Aufträgen/Aufgaben)
E07T (Transportsystem: Kurzbeschreibungen von Aufträgen/Aufgaben)
E070C (Transportsystem: Quell-/Zielmandant von Aufträgen/Aufgaben)
E071 (Transportsystem: Objekt-Einträge von Aufträgen/Aufgaben)
E071K (Transportsystem: Schlüsseleinträge von Aufträgen/Aufgaben)
TADIR (Katalog der Repository-Objekte)
TPLOG (Logging der tp Aufrufe)

Typgruppen

SEOK (Services)
SCTSC (Konstanten CTS)

Suchhilfen

SCTSOBJECT (Suchhilfe auf Objekttyp)

Klassen

CL_ADT_CTS_MANAGEMENT (Managing transport request for resources)

Links