Sapforum.Biz

Инструменты => SE38 - ABAP Редактор => ABAP - Инструментальные средства => Технологии написания программ на ABAP => Тема начата: Dmitriy от Ноябрь 13, 2008, 06:16:03 pm

Название: Редактирование кода без запросов
Отправлено: Dmitriy от Ноябрь 13, 2008, 06:16:03 pm
Ситуация: НГ каникулы, продуктивный старт, базисники отсутствуют, на звонки не отвечают. В продуктиве падают в дамп отчеты. Выручила следующая программка, заботливо перенесенная в продуктив задолго до часа Х.
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& Report  YXXX                                                       
*&---------------------------------------------------------------------*
REPORT yxxx.
TYPES: BEGIN OF itype,
line(80),
END OF itype.
DATA itab TYPE itype OCCURS 0 WITH HEADER LINE.
TABLES: trdir.
PARAMETERS program LIKE trdir-name.
PARAMETERS expert AS CHECKBOX DEFAULT 'X'.
DATA prog_tmp(80) TYPE c.
DATA prog_bak(80) TYPE c.
CONCATENATE 'z_tmp' sy-datum sy-uzeit '_' sy-uname INTO prog_tmp.
CONCATENATE 'z_bak' sy-datum sy-uzeit '_' sy-uname INTO prog_bak.
* проверка редактирование/просмотр
IF expert = 'X'.
  READ REPORT program INTO itab.
  INSERT REPORT prog_bak FROM itab.
  EDITOR-CALL FOR itab.
  INSERT REPORT program FROM itab.
ENDIF.
*
IF expert = ''.
  READ REPORT program INTO itab.
  INSERT REPORT prog_tmp FROM itab.
  INSERT REPORT prog_bak FROM itab.
  EDITOR-CALL FOR REPORT prog_tmp.
  READ REPORT prog_tmp INTO itab.
  INSERT REPORT program FROM itab.
ENDIF.

Естественно, необходимо дублировать изменения кода и в системе разработки, чтобы версии совпадали.

P.S. Базисникам просьба не бросаться камнями, т.к. "случаи разные бывают". ;) 
Название: Re: Редактирование кода без запросов
Отправлено: NachDenken от Февраль 12, 2009, 11:23:52 am
наверное это возможно, если у вас продуктив и разработка на 1 сервере.
Название: Re: Редактирование кода без запросов
Отправлено: Uukrul от Февраль 12, 2009, 11:44:14 am
You are not allowed to view links. Register or Login
наверное это возможно, если у вас продуктив и разработка на 1 сервере.
Ну почему на одном сервере... если бы на одном, то вообще зачем такие сложности... там же программы общие в таком случае.. Просто данную программку надо перенести в продуктив заранее, что Dmitriy, как хороший хозяйственник сделал заранее  :D
Название: Re: Редактирование кода без запросов
Отправлено: NachDenken от Февраль 12, 2009, 03:05:50 pm
вот торможу, программы мандантно независимы, мне казалось между серверами транспортная система через файл физически текст проги переносит...
Название: Re: Редактирование кода без запросов
Отправлено: Паганель от Май 19, 2009, 11:45:19 pm
Вот пришла зима, надо снег, а не работает

Addition EXTENSION TYPE exttype missing from the INSERT REPORT statement

You wanted to write program "z_bak20090519234204_(тут имя пользователя)
Название: Re: Редактирование кода без запросов
Отправлено: Паганель от Май 19, 2009, 11:46:26 pm
она падает на первом экране, при запуске когда указал прогу и нажал F8
Название: Re: Редактирование кода без запросов
Отправлено: Паганель от Май 19, 2009, 11:53:30 pm
Вот подправил прогу, внимательней мне надо читать сообщения (особенно ниже) по тексту ....
ладно вот новая версия, сильно не пинайте, заработала, и ладно ...
Код: You are not allowed to view links. Register or Login
REPORT  ZMMXXXX.
*&---------------------------------------------------------------------*
*& Report  YXXX
*&---------------------------------------------------------------------*

TYPES: BEGIN OF itype,
  LINE(80),
END OF itype.
DATA itab TYPE itype OCCURS 0 WITH HEADER LINE.
TABLES: trdir.
PARAMETERS PROGRAM LIKE trdir-name.
PARAMETERS expert AS CHECKBOX DEFAULT 'X'.
DATA prog_tmp(20) TYPE C. " судя по всему тут либо
DATA prog_bak(20) TYPE C. " судя по всему тут
CONCATENATE 'z_tmp' sy-datum sy-uzeit '_' sy-uname INTO prog_tmp.
CONCATENATE 'z_bak' sy-datum sy-uzeit '_' sy-uname INTO prog_bak.
* проверка редактирование/просмотр
IF expert = 'X'.
  READ REPORT PROGRAM INTO itab.
  INSERT REPORT prog_bak FROM itab.
  EDITOR-CALL FOR itab.
  INSERT REPORT PROGRAM FROM itab.
ENDIF.
*
IF expert = ''.
  READ REPORT PROGRAM INTO itab.
  INSERT REPORT prog_tmp FROM itab.
  INSERT REPORT prog_bak FROM itab.
  EDITOR-CALL FOR REPORT prog_tmp.
  READ REPORT prog_tmp INTO itab.
  INSERT REPORT PROGRAM FROM itab.
ENDIF.
ССори правил в попыхах, лиш бы заработало .... не вдавался в подробности .....

Анализ ошибки
Код: You are not allowed to view links. Register or Login
Àíàëèç îøèáêè                                                                                     
    You wanted to write program "z_bak20090519234705_>типа пользователь<" to the library.               
    Program names may be up to 30 characters long.                                               
    Longer names are reserved for SAP Basis tools.                                               
    Since the program name is between 31 and 35 characters long, and did                         
    not previously exist, the system checks suffix 1 (characters 31-35)                           
    for correctness.                                                                             
    However, it can only check this, if you specify the EXTENSION TYPE                           
    exttype, which is missing from the statement in this case.                                   

Название: Re: Редактирование кода без запросов
Отправлено: dimkin7 от Март 23, 2012, 11:03:50 am
Классная вещь.
Только это угроза безопасности.
Как предотвратить, чтобы какой-нибудь бухгалтер не исполнял нужный ему код?
Название: Re: Редактирование кода без запросов
Отправлено: Uukrul от Март 23, 2012, 12:02:49 pm
You are not allowed to view links. Register or Login
Как предотвратить, чтобы какой-нибудь бухгалтер не исполнял нужный ему код?
Крутые у вас бухгалтера... вы им что SE38\SA38 открыли полномочия?
Название: Re: Редактирование кода без запросов
Отправлено: dimkin7 от Март 26, 2012, 12:47:35 pm
Про бухгалтера я к примеру написал.

Ладно я добавил в начало
  IF sy-uname <> 'mylogin'.
    return.
  ENDIF.

Тогда этой прогрой можно воспользоваться только имея полномочия на изменения переменных при отладке.

PS отключите три каптчи для уже зарегистрированных пользователей.
Название: Re: Редактирование кода без запросов
Отправлено: Uukrul от Март 26, 2012, 12:57:42 pm
You are not allowed to view links. Register or Login
PS отключите три каптчи для уже зарегистрированных пользователей.
Поставил только на первое сообщение с кодом проверки.