воскресенье, 31 октября 2010 г.

Смена системы разработки

Понадобилось тут поменять у кучи объектов систему разработки... делать это последовательно через se03 было лень... посмотрели что делает se03 и написали прогу, которая в TADIR меняет параметр.



*&







*
*& 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 комментария:

sapBWBI комментирует...

супер! как раз такая задачка предстоит, думал что есть опция в se03 для массового изменения.

err комментирует...

да, на здоровье... хорошему человеку нежалко...

единственно, надо понять как лучше код в этих блогах выкладывать... а то смотрится как то всё убого...