Übersicht über gesperrte Objekte

Bevor man damit beginnt, eine vorhandene Applikation zu erweitern oder umfangreich anzupassen, könnte man auf die Idee kommen, prüfen zu wollen, ob die beteiligten Objekte eventuell gerade gesperrt sind. In diesem Fall könnte man die Entwicklung nämlich nicht reibungslos durchführen. Die Änderung des gesperrten Objektes wird dann nämlich dem bereits vorhandenen Transportauftrag zugeordnet. Das wiederum bedeutet, dass die Transportaufträge gemeinsam transportiert werden müssen.

Um prüfen zu können, welche Objekte gesperrt sind, habe ich einen kleinen Report geschrieben. Er gibt eine Liste der selektierten Objekte aus und zeigt an, ob diese gesperrt sind oder nicht. Sind sie gesperrt, dann wird auch der Transportauftrag angezeigt, in dem das Objekt gesperrt ist.

Mit einem Klick auf den Transportauftrag wird dieser angezeigt.

Code

REPORT.

DATA gs_tadir TYPE tadir.
DATA gv_trkorr TYPE trkorr.

SELECT-OPTIONS so_objt FOR gs_tadir-object   DEFAULT 'PROG'.
SELECT-OPTIONS so_objn FOR gs_tadir-obj_name DEFAULT 'ZVTEST*' OPTION CP.
SELECT-OPTIONS so_devc FOR gs_tadir-devclass.

PARAMETERS     pa_onlyl AS CHECKBOX DEFAULT space.

AT LINE-SELECTION.

  CHECK gv_trkorr IS NOT INITIAL.
  CALL FUNCTION 'TR_DISPLAY_REQUEST'
    EXPORTING
      i_trkorr = gv_trkorr.

START-OF-SELECTION.

  PERFORM start.

FORM start.
  DATA ls_lockkey TYPE tlock_int.
  DATA lv_locked TYPE abap_bool.
  DATA lt_locks TYPE STANDARD TABLE OF tlock WITH DEFAULT KEY.

  SELECT * FROM tadir INTO TABLE @DATA(lt_tadir)
    WHERE object   IN @so_objt
      AND obj_name IN @so_objn
  AND devclass IN @so_devc.

  LOOP AT lt_tadir INTO gs_tadir.

    ls_lockkey-obj     = gs_tadir-object.
    ls_lockkey-low     = gs_tadir-obj_name.
    ls_lockkey-hi      = gs_tadir-obj_name && '*'.

    CALL FUNCTION 'TRINT_CHECK_LOCKS'
      EXPORTING
        wi_lock_key = ls_lockkey
      IMPORTING
        we_lockflag = lv_locked
      TABLES
        wt_tlock    = lt_locks
      EXCEPTIONS
        empty_key   = 1.
    IF lv_locked = abap_false AND pa_onlyl = abap_true.
      CONTINUE.
    ENDIF.

    WRITE: /
      gs_tadir-object,
      gs_tadir-obj_name,
      gs_tadir-devclass.
    HIDE gs_tadir.

    IF lv_locked = abap_true.
      WRITE lv_locked COLOR COL_GROUP.
      gv_trkorr = lt_locks[ 1 ]-trkorr.
      HIDE gv_trkorr.
      SELECT * FROM e07t
        INTO TABLE @DATA(lt_e07t)
      WHERE trkorr = @gv_trkorr.
      WRITE: gv_trkorr HOTSPOT ON.
      IF sy-subrc = 0.
        DATA(lv_trtxt) = lt_e07t[ 1 ]-as4text.
        WRITE:  lv_trtxt.
      ENDIF.

    ENDIF.

  ENDLOOP.

  CLEAR gs_tadir.
  CLEAR gv_trkorr.

ENDFORM.
Enno Wulff