[53208] in SAPr3-news

home help back first fref pref prev next nref lref last post

=?ISO-8859-1?Q?ABAP_Toolprogramme_/_Programm_zu_?=

daemon@ATHENA.MIT.EDU (volker Korrmann)
Wed Feb 2 10:07:07 2005

To: sapr3-news@mit.edu
Date: 2 Feb 2005 07:07:03 -0800
From: volker_korrmann@web.de (volker Korrmann)
Message-ID: <cdd58c09.0502020707.ca6fad4@posting.google.com>

Anbei eine Korrektur des Programms.
Jetzt werden auch Versionen von Programmen gezogen, die bisher noch
keine alte Version hatten.


REPORT ztr02 NO STANDARD PAGE HEADING LINE-SIZE 80.

* (C) 2005 Volker Korrmann

* Report zum ziehen von temporären Versionen
* Die fraglichen Objekte werden anhand der offenen Transporte
* identifiziert.

* Hinweis: Die temporären Versionen werden bei der Freigabe
* verdichtet und somit gelöscht!!!

* Zwischen den einzelnen Freigaben, können aber somit die
* gemachten Änderungen gut nachvollzogen werden.




TABLES: e070v, vrsd, tadir.
TYPE-POOLS ctslg .
TYPE-POOLS: trwbo.

FIELD-SYMBOLS: <f>.
DATA: it        TYPE STANDARD TABLE OF ze070 WITH HEADER LINE.

DATA: wt_e071   TYPE  STANDARD TABLE OF e071 WITH HEADER LINE.
DATA: ls_e071   LIKE  e071.
DATA: lt_v1     TYPE  trwbo_request.
DATA: vers      LIKE  vrsd-versno.
DATA: c         TYPE  i.

SELECTION-SCREEN BEGIN OF BLOCK sel WITH FRAME TITLE text-002.

SELECT-OPTIONS:
 s_korr FOR e070v-trkorr,
 s_func FOR e070v-trfunction,
 s_stat FOR e070v-trstatus DEFAULT 'D',
* s_tar  for e070-tarsystem default sy-SYSID,
 s_user FOR e070v-as4user DEFAULT sy-uname,
 s_date FOR e070v-as4date,
 s_text FOR e070v-as4text.

SELECTION-SCREEN SKIP.
PARAMETERS: p_locl AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK sel.



START-OF-SELECTION.

  REFRESH it.

  SELECT * FROM  e070v
   INTO TABLE it
         WHERE  trkorr      IN s_korr
         AND    trfunction  IN s_func
         AND    trstatus    IN s_stat
         AND    as4user     IN s_user
         AND    as4date     IN s_date
         AND    as4text     IN s_text.


  CLEAR: lt_v1.

  LOOP AT it.
    CLEAR wt_e071.
    REFRESH wt_e071.
    PERFORM get_objectlist TABLES wt_e071
                             USING it-trkorr.

    INSERT LINES OF wt_e071 INTO TABLE lt_v1-objects.

  ENDLOOP.

  IF p_locl = 'X'.

    SELECT * FROM tadir WHERE devclass =  '$TMP' AND
                              author   IN s_user.
      CLEAR it.
      MOVE-CORRESPONDING tadir TO ls_e071.
      INSERT ls_e071 INTO TABLE lt_v1-objects.
    ENDSELECT.
  ENDIF.


  CALL FUNCTION 'TR_SORT_OBJECT_AND_KEY_LIST'
    CHANGING
      ct_objects = lt_v1-objects
      ct_keys    = lt_v1-keys.


  WRITE: / 'Es wurden folgende neue Objektversionen gezogen'.
  SKIP 2.
  FORMAT COLOR 1 INTENSIFIED ON.
  WRITE: /01 'Auftrag/Aufgabe',
          22 'ID',
          28 'Obj.',
          34 'Objektname',
          70 'Neue Vers.'.

  ULINE.


  LOOP AT lt_v1-objects INTO ls_e071.

* CHeck, ob das ziehen einer neuen Version nötig ist.

    PERFORM pruefung USING ls_e071.

  ENDLOOP.

*---------------------------------------------------------------------*
*       FORM get_objectlist                                          
*
*---------------------------------------------------------------------*
*       ........                                                     
*
*---------------------------------------------------------------------*
*  -->  TRKORR                                                       
*
*---------------------------------------------------------------------*
FORM get_objectlist TABLES wt_e071 STRUCTURE e071
                    USING trkorr.



  CALL FUNCTION 'TR_READ_COMM'
    EXPORTING
      wi_trkorr                   = trkorr
    wi_dialog                   = ''
    wi_langu                    = sy-langu
    wi_sel_e070                 = 'X'
      wi_sel_e071                = 'X'
*   WI_SEL_E071K                = ' '
*   IV_SEL_E071KF               = ' '
*   WI_SEL_E07T                 = ' '
*   WI_SEL_E070C                = ' '
*   IV_SEL_E070M                = ' '
*   IV_SEL_E070A                = ' '
* IMPORTING
*   WE_E070                     =
*   WE_E07T                     =
*   WE_E070C                    =
*   ES_E070M                    =
*   WE_E07T_DOESNT_EXIST        =
*   WE_E070C_DOESNT_EXIST       =
*   EV_E070M_DOESNT_EXIST       =
   TABLES
     wt_e071                     = wt_e071
*   WT_E071K                    =
*   ET_E071KF                   =
*   ET_E070A                    =
   EXCEPTIONS
     not_exist_e070              = 1
     no_authorization            = 2
     OTHERS                      = 3
            .
  IF sy-subrc <> 0.
  ENDIF.

ENDFORM.                    "get_objectlist



*&--------------------------------------------------------------------*
*&      Form  pruefung
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->LS_E071    text
*---------------------------------------------------------------------*
FORM pruefung USING u_e071 TYPE e071.
  INCLUDE lsvrxpin.
*  DATA: lt_e071_o   TYPE  STANDARD TABLE OF e071 WITH HEADER LINE.
  DATA: lt_e071   TYPE  STANDARD TABLE OF e071 WITH HEADER LINE.
  DATA: obj_pri TYPE svrs2_versionable_object,
        obj_sec TYPE svrs2_versionable_object,
        obj_delta TYPE svrs2_xversionable_object.
  DATA: rc.
  DATA: ls_e071 TYPE e071.
  DATA: obj_tab TYPE STANDARD TABLE OF vrso WITH HEADER LINE.



*  REFRESH lt_e071_o.
*  INSERT u_e071 INTO TABLE lt_e071_o.

* Auflösen aller E071_TAB Objekte in ihre atomaren Objekte
  CALL FUNCTION 'SVRS_RESOLVE_E071_OBJ'
    EXPORTING
      e071_obj        = u_e071
    TABLES
      obj_tab         = obj_tab
    EXCEPTIONS
      not_versionable = 1
      OTHERS          = 2.

  LOOP AT obj_tab.

    SELECT SINGLE * FROM vrsd
      WHERE objtype = obj_tab-objtype
      AND   objname = obj_tab-objname
        AND versno  = 0.
    IF sy-subrc = 0.
      CLEAR obj_pri.
      CLEAR obj_sec.
      CLEAR obj_delta.

      obj_pri-objtype = vrsd-objtype.
      obj_pri-objname = vrsd-objname.
      obj_pri-versno  = vrsd-versno.

      obj_sec-objtype = vrsd-objtype.
      obj_sec-objname = vrsd-objname.
      obj_sec-versno  = vrsd-lastversno + 1.


      CALL FUNCTION 'SVRS_GET_VERSION_LOCAL'
        CHANGING
          object             = obj_sec
        EXCEPTIONS
          no_version         = 1
          version_unreadable = 2
          OTHERS             = 3.

      IF sy-subrc = 0.

        CALL FUNCTION 'SVRS_GET_VERSION_LOCAL'
          CHANGING
            object             = obj_pri
          EXCEPTIONS
            no_version         = 1
            version_unreadable = 2
            OTHERS             = 3.

        IF sy-subrc = 0.

          CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
            EXPORTING
              obj_old              = obj_sec
              obj_new              = obj_pri
            CHANGING
              delta                = obj_delta
            EXCEPTIONS
              inconsistent_objects = 1
              OTHERS               = 2.

          IF sy-subrc = 0.

            CLEAR rc.

            CALL FUNCTION 'SVRS_CHECK_DELTA_EMPTY'
              EXPORTING
                obj_new       = obj_pri
                delta         = obj_delta
              IMPORTING
                p_delta_empty = rc
              EXCEPTIONS
                OTHERS        = 1.

            IF rc = ' '.


* Neue Version ziehen
              ls_e071          = u_e071.
              ls_e071-object   = obj_tab-objtype.
              ls_e071-obj_name = obj_tab-objname.


              CALL FUNCTION 'SVRS_AFTER_CHANGED_ONLINE_NEW'
                EXPORTING
                  e071_entry                    = ls_e071
*   STATUS                        = 'A'
               IMPORTING
                 version_new                   = vers
               EXCEPTIONS
                 non_versionable_objtype       = 1
                 no_tadir_entry                = 2
                 object_not_found              = 3
                 object_not_locked             = 4
                 OTHERS                        = 5
                        .
              IF sy-subrc = 0 AND vers <> 0.

                IF c = 1.
                  FORMAT COLOR 2 INTENSIFIED ON.
                  c = 0.
                ELSE.
                  FORMAT COLOR 2 INTENSIFIED OFF.
                  c = 1.
                ENDIF.

                WRITE: /01 ls_e071-trkorr,
                        22 ls_e071-pgmid,
                        28 ls_e071-object,
                        34 ls_e071-obj_name(35),
                        70 vers,
                        79 ' '.

              ENDIF.



            ENDIF.

          ENDIF.
        ENDIF.
      ENDIF.
    ELSE.

* Noch keine Version vorhanden -->
* Neue Version ziehen
      ls_e071          = u_e071.
      ls_e071-object   = obj_tab-objtype.
      ls_e071-obj_name = obj_tab-objname.


      CALL FUNCTION 'SVRS_AFTER_CHANGED_ONLINE_NEW'
        EXPORTING
          e071_entry                    = ls_e071
*   STATUS                        = 'A'
       IMPORTING
         version_new                   = vers
       EXCEPTIONS
         non_versionable_objtype       = 1
         no_tadir_entry                = 2
         object_not_found              = 3
         object_not_locked             = 4
         OTHERS                        = 5
                .
      IF sy-subrc = 0 AND vers <> 0.

        IF c = 1.
          FORMAT COLOR 2 INTENSIFIED ON.
          c = 0.
        ELSE.
          FORMAT COLOR 2 INTENSIFIED OFF.
          c = 1.
        ENDIF.

        WRITE: /01 ls_e071-trkorr,
                22 ls_e071-pgmid,
                28 ls_e071-object,
                34 ls_e071-obj_name(35),
                70 vers,
                79 ' '.

      ENDIF.


    ENDIF.



  ENDLOOP.


ENDFORM.                    "pruefung

home help back first fref pref prev next nref lref last post