*&
*& Report Z_CHANGE_SRCSYSTEM_IN_TADIR
*&
*&
REPORT Z_CHANGE_SRCSYSTEM_IN_TADIR.
* Меняем SRCSYSTEM в таблице TADIR
TYPE-POOLS: abap.
DATA:
ta_tadir TYPE SORTED TABLE OF tadir WITH UNIQUE KEY pgmid object obj_name,
wa_tadir TYPE tadir,
change_to(45) TYPE c.
SELECT-OPTIONS so_pgmid FOR wa_tadir-pgmid DEFAULT 'R3TR' NO INTERVALS.
SELECT-OPTIONS so_devcl FOR wa_tadir-devclass DEFAULT 'ZBI00' NO INTERVALS.
SELECT-OPTIONS so_srcs FOR wa_tadir-srcsystem DEFAULT '*' OPTION CP NO INTERVALS.
PARAMETERS so_chgTo(32) TYPE c DEFAULT sy-sysid.
PARAMETERS pa_updat AS CHECKBOX.
START-OF-SELECTION.
SELECT * FROM tadir INTO TABLE ta_tadir
WHERE srcsystem IN so_srcs
AND devclass IN so_devcl
AND pgmid IN so_pgmid
.
LOOP AT ta_tadir INTO wa_tadir.
AT FIRST.
WRITE: /(30) 'devclass',
sy-vline,
(4) 'pgmd',
sy-vline,
(4) 'objc',
sy-vline,
(40) 'Name',
sy-vline,
(10) 'Curr. Src' COLOR COL_POSITIVE,
sy-vline,
(10) 'New Src' COLOR COL_GROUP.
ULINE.
ENDAT.
WRITE: / wa_tadir-devclass,
sy-vline,
wa_tadir-pgmid,
sy-vline,
wa_tadir-object,
sy-vline,
wa_tadir-obj_name,
sy-vline,
wa_tadir-srcsystem COLOR COL_POSITIVE,
sy-vline,
so_chgTo COLOR COL_GROUP.
ENDLOOP.
IF sy-subrc NE 0.
WRITE: 'Nothing selected from TADIR'.
ELSE.
IF pa_updat = abap_true.
UPDATE tadir SET srcsystem = so_chgTo
WHERE srcsystem IN so_srcs
AND devclass IN so_devcl
AND pgmid IN so_pgmid
.
IF sy-subrc = 0.
WRITE: 'Change of Original System in TADIR succesful. Number of records changed:', sy-dbcnt.
ELSE.
WRITE: 'Error while changing Original System in TADIR, RC:', sy-subrc.
ENDIF.
ELSE.
MESSAGE i000(38) WITH 'No changed, only testrun'.
ENDIF.
ENDIF.
COMMIT WORK.
2 комментария:
супер! как раз такая задачка предстоит, думал что есть опция в se03 для массового изменения.
да, на здоровье... хорошему человеку нежалко...
единственно, надо понять как лучше код в этих блогах выкладывать... а то смотрится как то всё убого...
Отправить комментарий