[ABAP] Auswahl eines Transportauftrags (mit Anlegen)

* 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)
*  TADIR (Katalog der Repository-Objekte)
*  TPLOG (Logging der tp Aufrufe)

* https://www.berater-wiki.de/Transportauftrag
* https://www.berater-wiki.de/Access_Tabellenbeziehung_Transportauftrag/-Aufgabe
* http://sapyourself.com/2014/06/11/transporte-transporteur-ermitteln-und-analysieren-tabelle-tplog/

* TRFUNCTION
*  K  Workbench-Auftrag
*  W  Customizing-Auftrag
*  C  Umzug von Objekten ohne Paketwechsel
*  O  Umzug von Objekten mit Paketwechsel
*  E  Umzug eines kompletten Pakets
*  T  Transport von Kopien
*  S  Entwicklung/Korrektur
*  R  Reparatur
*  X  Unklassifizierte Aufgabe
*  Q  Customizing-Aufgabe
*  G  Stückliste für CTS-Projekt
*  M  Auftrag für Mandantentransport
*  P  Stückliste für Upgrade
*  D  Stückliste für Patch
*  F  Stückliste
*  L  Löschtransport
* TRSTATUS
*  D  Änderbar
*  L  Änderbar, geschützt
*  O  Freigabe gestartet
*  R  Freigegeben
*  N  Freigegeben (Importschutz für reparierte Objekte aktiv)
* KORRDEV
*  CUST  mandantenabhängiges Customizing
*  SYST  Repository, mandantenunabbhängige Objekte
* LOCKFLAG
*     nicht gesperrt
*  X  gesperrt
*  0  nicht importiert
*  1  importiert mit Fehler
*  2  erfolgreich importiert
*  3  erfolgreich aktiviert /After-Import-Methode ausgeführt
*  6  erfolgreich in Schattentabellen importiert
*  7  erfolgreich in neue Schattentabellen importiert
*  8  inaktiver Anteil erfolgreich importiert

* Auftragstyp
SELECTION-SCREEN BEGIN OF LINE.
  SELECTION-SCREEN COMMENT (14) lbl1 FOR FIELD p_tfunc.
  PARAMETERS: p_tfunc TYPE trfunction.
SELECTION-SCREEN END OF LINE.

INITIALIZATION.
  lbl1 = 'Auftragstyp:'.

START-OF-SELECTION.

  DATA: lv_req TYPE trwbo_request_header.

* Auswahl eines Transportauftrags (mit Anlegen)
  CALL FUNCTION 'TR_REQUEST_CHOICE'
    EXPORTING
      iv_request_types     = p_tfunc
    IMPORTING
      es_request           = lv_req
    EXCEPTIONS
      invalid_request      = 1
      invalid_request_type = 2
      user_not_owner       = 3
      no_objects_appended  = 4
      enqueue_error        = 5
      cancelled_by_user    = 6
      recursive_call       = 7
      OTHERS               = 8.

  IF sy-subrc = 0.
    cl_demo_output=>write_data( lv_req ).
    cl_demo_output=>display( ).
  ENDIF.

[ABAP] Abhängige Objekte in Transportaufträgen ermitteln

* Der Report sucht nach Objektabhängigkeiten in Transportaufträgen

* 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)
*  TADIR (Katalog der Repository-Objekte)
*  TPLOG (Logging der tp Aufrufe)

* https://www.berater-wiki.de/Transportauftrag
* https://www.berater-wiki.de/Access_Tabellenbeziehung_Transportauftrag/-Aufgabe
* http://sapyourself.com/2014/06/11/transporte-transporteur-ermitteln-und-analysieren-tabelle-tplog/

PARAMETERS: p_tr TYPE e070-trkorr DEFAULT 'XYZ'.

START-OF-SELECTION.

* TRFUNCTION
*  K  Workbench-Auftrag
*  W  Customizing-Auftrag
*  C  Umzug von Objekten ohne Paketwechsel
*  O  Umzug von Objekten mit Paketwechsel
*  E  Umzug eines kompletten Pakets
*  T  Transport von Kopien
*  S  Entwicklung/Korrektur
*  R  Reparatur
*  X  Unklassifizierte Aufgabe
*  Q  Customizing-Aufgabe
*  G  Stückliste für CTS-Projekt
*  M  Auftrag für Mandantentransport
*  P  Stückliste für Upgrade
*  D  Stückliste für Patch
*  F  Stückliste
*  L  Löschtransport
* TRSTATUS
*  D  Änderbar
*  L  Änderbar, geschützt
*  O  Freigabe gestartet
*  R  Freigegeben
*  N  Freigegeben (Importschutz für reparierte Objekte aktiv)
* KORRDEV
*  CUST  mandantenabhängiges Customizing
*  SYST  Repository, mandantenunabbhängige Objekte
* LOCKFLAG
*     nicht gesperrt
*  X  gesperrt
*  0  nicht importiert
*  1  importiert mit Fehler
*  2  erfolgreich importiert
*  3  erfolgreich aktiviert /After-Import-Methode ausgeführt
*  6  erfolgreich in Schattentabellen importiert
*  7  erfolgreich in neue Schattentabellen importiert
*  8  inaktiver Anteil erfolgreich importiert
  SELECT e~trkorr,      " Auftrag/Aufgabe
         e~trfunction,  " Typ des Auftrags/Aufgabe
         e~trstatus,    " Status des Auftrags/der Aufgabe
         e~tarsystem,   " Transportziel eines Auftrags
         e~korrdev,     " Kategorie des Auftrags/der Aufgabe
         e~as4user,     " Inhaber eines Auftrags oder einer Aufgabe
         e~as4date,     " Datum der letzten Änderung
         e~as4time,     " Uhrzeit der letzten Änderung
         e~strkorr,     " Übergeordneter Auftrag
         t~as4text,     " Kurzbeschreibung von Repository-Objekten
         c~client,      " Quellmandant eines Auftrags
         c~tarclient,   " Zielmandant eines Auftrags
         o~as4pos,      " Dictionary: Zeilenposition
         o~pgmid,       " Programm-ID in Aufträgen und Aufgaben
         o~object,      " Objekttyp
         o~obj_name,    " Objektname in der Objektliste
         o~objfunc,     " Objektfunktion
         o~lockflag,    " Sperrstatus oder Importstatus zu einem Objekteintrag
         o~activity     " Aktivität, mit der Eintrag in Objektliste geschrieben wurde
    INTO TABLE @DATA(it_e070)
    FROM e070 AS e                                    " Transportsystem: Header von Aufträgen/Aufgaben
    INNER JOIN e07t AS t ON e~trkorr = t~trkorr       " Transportsystem: Kurzbeschreibungen von Aufträgen/Aufgaben
    INNER JOIN e070c AS c ON e~trkorr = c~trkorr      " Transportsystem: Quell-/Zielmandant von Aufträgen/Aufgaben
    LEFT OUTER JOIN e071 AS o ON e~trkorr = o~trkorr  " Transportsystem: Objekt-Einträge von Aufträgen/Aufgaben
    WHERE e~trkorr  = @p_tr
       OR e~strkorr = @p_tr
      AND t~langu   = @sy-langu.

  IF sy-subrc = 0.
* sortieren nach Auftrag und Datum / Uhrzeit
    SORT: it_e070 BY trkorr as4date as4time.

    SELECT *
      INTO TABLE @DATA(it_e071)
      FROM e071
      FOR ALL ENTRIES IN @it_e070
      WHERE object   = @it_e070-object
        AND obj_name = @it_e070-obj_name
        AND objfunc  = @it_e070-objfunc.

    IF sy-subrc = 0.

      DATA: o_salv TYPE REF TO cl_salv_table.

      cl_salv_table=>factory( EXPORTING
                                r_container  = cl_gui_container=>default_screen
                              IMPORTING
                                r_salv_table = o_salv
                              CHANGING
                                t_table      = it_e071 ).

      o_salv->get_functions( )->set_all( abap_true ).
      o_salv->get_columns( )->set_optimize( abap_true ).
      o_salv->get_display_settings( )->set_list_header( 'Abhängige Transporte / Aufgaben' ).
      o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
      o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

      LOOP AT o_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<c>).
        <c>-r_column->set_short_text( '' ).
        <c>-r_column->set_medium_text( '' ).
        <c>-r_column->set_long_text( |{ <c>-r_column->get_columnname( ) } [{ <c>-r_column->get_long_text( ) }]| ).
      ENDLOOP.

      o_salv->display( ).

      WRITE: space.

    ENDIF.

  ENDIF.

[ABAP] Transportaufträge für Benutzer und Auftragsnummern suchen

* 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)
*  TADIR (Katalog der Repository-Objekte)
*  TPLOG (Logging der tp Aufrufe)

* https://www.berater-wiki.de/Transportauftrag
* https://www.berater-wiki.de/Access_Tabellenbeziehung_Transportauftrag/-Aufgabe
* http://sapyourself.com/2014/06/11/transporte-transporteur-ermitteln-und-analysieren-tabelle-tplog/

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE title.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_rb1 RADIOBUTTON GROUP grp1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT (20) lbl1 FOR FIELD p_rb1.
PARAMETERS: p_usr TYPE e070-as4user DEFAULT sy-uname.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_rb2 RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT (20) lbl2 FOR FIELD p_rb2.
PARAMETERS: p_tr TYPE e070-trkorr DEFAULT ''.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.
  title = 'Suche'.
  lbl1 = 'Benutzer'.
  lbl2 = 'Transportauftrag'.

START-OF-SELECTION.

* dynamische Where-Clause erzeugen
  DATA(lv_where) = ||.

  CASE abap_true.
    WHEN p_rb1.
      lv_where = |    e~as4user = '{ p_usr }'| &&
                 |AND t~langu   = @sy-langu|.
    WHEN p_rb2.
      lv_where = |    e~trkorr  = '{ p_tr }'| &&
                 | OR e~strkorr = '{ p_tr }'| &&
                 |AND t~langu   = @sy-langu|.
  ENDCASE.

* TRFUNCTION
*  K  Workbench-Auftrag
*  W  Customizing-Auftrag
*  C  Umzug von Objekten ohne Paketwechsel
*  O  Umzug von Objekten mit Paketwechsel
*  E  Umzug eines kompletten Pakets
*  T  Transport von Kopien
*  S  Entwicklung/Korrektur
*  R  Reparatur
*  X  Unklassifizierte Aufgabe
*  Q  Customizing-Aufgabe
*  G  Stückliste für CTS-Projekt
*  M  Auftrag für Mandantentransport
*  P  Stückliste für Upgrade
*  D  Stückliste für Patch
*  F  Stückliste
*  L  Löschtransport
* TRSTATUS
*  D  Änderbar
*  L  Änderbar, geschützt
*  O  Freigabe gestartet
*  R  Freigegeben
*  N  Freigegeben (Importschutz für reparierte Objekte aktiv)
* KORRDEV
*  CUST  mandantenabhängiges Customizing
*  SYST  Repository, mandantenunabbhängige Objekte
* LOCKFLAG
*     nicht gesperrt
*  X  gesperrt
*  0  nicht importiert
*  1  importiert mit Fehler
*  2  erfolgreich importiert
*  3  erfolgreich aktiviert /After-Import-Methode ausgeführt
*  6  erfolgreich in Schattentabellen importiert
*  7  erfolgreich in neue Schattentabellen importiert
*  8  inaktiver Anteil erfolgreich importiert
  SELECT e~trkorr,      " Auftrag/Aufgabe
         e~trfunction,  " Typ des Auftrags/Aufgabe
         e~trstatus,    " Status des Auftrags/der Aufgabe
         e~tarsystem,   " Transportziel eines Auftrags
         e~korrdev,     " Kategorie des Auftrags/der Aufgabe
         e~as4user,     " Inhaber eines Auftrags oder einer Aufgabe
         e~as4date,     " Datum der letzten Änderung
         e~as4time,     " Uhrzeit der letzten Änderung
         e~strkorr,     " Übergeordneter Auftrag
         t~as4text,     " Kurzbeschreibung von Repository-Objekten
         c~client,      " Quellmandant eines Auftrags
         c~tarclient,   " Zielmandant eines Auftrags
         o~as4pos,      " Dictionary: Zeilenposition
         o~pgmid,       " Programm-ID in Aufträgen und Aufgaben
         o~object,      " Objekttyp
         o~obj_name,    " Objektname in der Objektliste
         o~objfunc,     " Objektfunktion
         o~lockflag,    " Sperrstatus oder Importstatus zu einem Objekteintrag
         o~activity     " Aktivität, mit der Eintrag in Objektliste geschrieben wurde
    INTO TABLE @DATA(it_e070)
    FROM e070 AS e                                    " Transportsystem: Header von Aufträgen/Aufgaben
    INNER JOIN e07t AS t ON e~trkorr = t~trkorr       " Transportsystem: Kurzbeschreibungen von Aufträgen/Aufgaben
    INNER JOIN e070c AS c ON e~trkorr = c~trkorr      " Transportsystem: Quell-/Zielmandant von Aufträgen/Aufgaben
    LEFT OUTER JOIN e071 AS o ON e~trkorr = o~trkorr  " Transportsystem: Objekt-Einträge von Aufträgen/Aufgaben
    WHERE (lv_where).

  IF sy-subrc = 0.
* sortieren nach Auftrag und Datum / Uhrzeit
    SORT: it_e070 BY trkorr as4date as4time.

    DATA: o_salv TYPE REF TO cl_salv_table.

    cl_salv_table=>factory( EXPORTING
                              r_container  = cl_gui_container=>default_screen
                            IMPORTING
                              r_salv_table = o_salv
                            CHANGING
                              t_table      = it_e070 ).

    o_salv->get_functions( )->set_all( abap_true ).
    o_salv->get_columns( )->set_optimize( abap_true ).
    o_salv->get_display_settings( )->set_list_header( 'Transporte' ).
    o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
    o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

    LOOP AT o_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<c>).
      <c>-r_column->set_short_text( '' ).
      <c>-r_column->set_medium_text( '' ).
      <c>-r_column->set_long_text( |{ <c>-r_column->get_columnname( ) } [{ <c>-r_column->get_long_text( ) }]| ).
    ENDLOOP.

    o_salv->display( ).

    WRITE: space.
  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