[53208] in SAPr3-news
=?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