Как выгрузить (и потом загрузить) GUI-статус в файл?

Автор Паганель, Травень 28, 2009, 12:52:33 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Паганель

Тут вот возникла надобность выгрузить пару программ (типа бекап), выгрузить код смог, смартформы тоже, тексты критереев выбора просто скопировал в файлик, а вот что делать с GUI-статусом? Как его выгрузить что бы потом можно было загрузить повторно?

Dmitriy

Скриншотом делал. Хотя может кто и знает другие способы. ???

Паганель

Цитата: Dmitriy від Травень 28, 2009, 12:56:20 ПП
Скриншотом делал. Хотя может кто и знает другие способы. ???
думаю, это один из самых неудобных способов .... ну если уже ты ничего не нашел (с твоими 7 лет опыта) 

Dmitriy

Цитата: Паганель від Травень 28, 2009, 12:57:46 ПП
думаю, это один из самых неудобных способов .... ну если уже ты ничего не нашел (с твоими 7 лет опыта) 
Дело в том, что не искал просто. ;)



Dmitriy

Цитата: NachDenken від Травень 28, 2009, 01:00:13 ПП
поможет ?
http://www.sapnet.ru/viewtopic.php?p=6893
Эхх, системы под рукой нет - в отпуске.
2 Паганель: а по поводу 7 лет опыта... Уставать начинаешь от кода, типовых задач и т.д., особенно когда сниться все это дело начинает. Особенно когда консультантов приходится учить еще правильно тестировать... Ну это так, лирика, навеяло во время перепахивания 24-х PDF-формуляров. ;D

Паганель

Цитата: Dmitriy від Травень 28, 2009, 01:08:49 ПП
Эхх, системы под рукой нет - в отпуске.
2 Паганель: а по поводу 7 лет опыта... Уставать начинаешь от кода, типовых задач и т.д., особенно когда сниться все это дело начинает. Особенно когда консультантов приходится учить еще правильно тестировать... Ну это так, лирика, навеяло во время перепахивания 24-х PDF-формуляров. ;D

Знаю, сам так часто себя чувствую, я в свое время перешел с програмизма в консальт, думал менше буду програмировать  ;-)

NachDenken

у меня отлично,
выгрузил,
кучу файликов...
что дамп говорит ?

Паганель

#9
Прогу подправил, сейчас тут выложу подправленный исходник и на форуме автора тоже напишу ..... мол начал пользоватся, валится в ошибку .... исправил ....

Ошибка

ДинамОшибка            READ_REPORT_LINE_TOO_LONG        
ОсобСит.               CX_SY_READ_SRC_LINE_TOO_LONG    
Дата и время           28.05.2009 13:12:14              


Валилось на строке 182

................
* Таблицы программы
 IF cbprog = 'X'.
   APPEND atr.

   READ REPORT   repid INTO prg.
......

Странно, в моей системе, по похожей ошибке валилась прога Димы.
http://sapforum.biz/index.php/topic,371.0.html

Исправление:
Вместо

DATA: BEGIN OF PRG OCCURS 0, " Иначе WS_Download
 LINE(100) TYPE C,     " неправильно работает
END   OF PRG.

Надо

DATA: BEGIN OF PRG OCCURS 0, " Иначе WS_Download
 LINE(500) TYPE C,     " неправильно работает
END   OF PRG.


Весь код, думаю автор не будет против,
скопированно с http://www.sapnet.ru/viewtopic.php?p=6893


REPORT  YDK_PROGS.

TABLES: EUDB, TRDIR, TADIR, D020T.

SELECT-options: sprog FOR sy-repid obligatory NO INTERVALS.

selection-SCREEN SKIP.

PARAMETERS: saveinc AS CHECKBOX.
SELECT-options: incmask FOR sy-repid NO INTERVALS.

selection-SCREEN SKIP.

PARAMETERS: dir(132) TYPE C obligatory.

selection-SCREEN SKIP.

PARAMETERS rbdl RADIOBUTTON GROUP rbl.
PARAMETERS rbul RADIOBUTTON GROUP rbl.

selection-SCREEN SKIP.

PARAMETERS: cbprog AS CHECKBOX DEFAULT 'X'.
PARAMETERS: cbcua  AS CHECKBOX DEFAULT 'X'.
PARAMETERS: cbdyn  AS CHECKBOX DEFAULT 'X'.

DATA: repid LIKE sy-repid.

DATA: itprog LIKE sy-repid OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF PRG OCCURS 0, " Иначе WS_Download
 LINE(500) TYPE C,     " неправильно работает
END   OF PRG.

DATA: txt LIKE  TEXTPOOL OCCURS 0 WITH HEADER LINE.
DATA: atr LIKE  trdir    OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF INC OCCURS 0, " Иначе WS_Download
 repid LIKE sy-repid,     " неправильно работает
END   OF INC.

DATA: inct LIKE LINE OF inc OCCURS 0 WITH HEADER LINE.

DATA: STA LIKE  RSMPE_STAT OCCURS 0 WITH HEADER LINE.
DATA: FUN LIKE  RSMPE_FUNT OCCURS 0 WITH HEADER LINE.
DATA: MEN LIKE  RSMPE_MEN  OCCURS 0 WITH HEADER LINE.
DATA: MTX LIKE  RSMPE_MNLT OCCURS 0 WITH HEADER LINE.
DATA: ACT LIKE  RSMPE_ACT  OCCURS 0 WITH HEADER LINE.
DATA: BUT LIKE  RSMPE_BUT  OCCURS 0 WITH HEADER LINE.
DATA: PFK LIKE  RSMPE_PFK  OCCURS 0 WITH HEADER LINE.
DATA: SET LIKE  RSMPE_STAF OCCURS 0 WITH HEADER LINE.
DATA: DOC LIKE  RSMPE_ATRT OCCURS 0 WITH HEADER LINE.
DATA: TIT LIKE  RSMPE_TITT OCCURS 0 WITH HEADER LINE.
DATA: ADM LIKE  RSMPE_ADM  OCCURS 0 WITH HEADER LINE.
DATA: BIV LIKE  RSMPE_BUTS OCCURS 0 WITH HEADER LINE.

DATA: DYNNAME(44) TYPE C.

DATA: dyn LIKE D020S OCCURS 0 WITH HEADER LINE.

DATA: H LIKE D020S.
DATA: F LIKE D021S OCCURS 0 WITH HEADER LINE.
DATA: E LIKE D022S OCCURS 0 WITH HEADER LINE.
DATA: M LIKE D023S OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF DYNH OCCURS 0.
 INCLUDE STRUCTURE D020S.
 DATA:   DTXT LIKE D020T-DTXT,
END   OF DYNH.

DATA: BEGIN OF dynf OCCURS 0,
 prog LIKE D020S-PROG,
 dnum LIKE D020S-DNUM.
 INCLUDE STRUCTURE D021S.
DATA: END   OF dynf.

DATA: BEGIN OF dyne OCCURS 0,
 prog LIKE D020S-PROG,
 dnum LIKE D020S-DNUM.
 INCLUDE STRUCTURE D022S.
DATA: END   OF dyne.

DATA: BEGIN OF dynm OCCURS 0,
 prog LIKE D020S-PROG,
 dnum LIKE D020S-DNUM.
 INCLUDE STRUCTURE D023S.
DATA: END   OF dynm.

DATA: ittab(10) TYPE C OCCURS 0 WITH HEADER LINE.
FIELD-symbols <tab> TYPE TABLE.

INITIALIZATION.
FIELD-symbols <fs>.
LOOP AT SCREEN.
 CHECK SCREEN-INPUT = 0.
 IF SCREEN-name CP '*SPROG*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'Programm, include, ...'.
 ENDIF.
 IF SCREEN-name CP '*SAVEINC*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'Include Unload/Download'.
 ENDIF.
 IF SCREEN-name CP '*INCMASK*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'Include mask'.
 ENDIF.
 IF SCREEN-name CP '*DIR*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'File directory'.
 ENDIF.
 IF SCREEN-name CP '*RBDL*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'From file to SAP'.
 ENDIF.
 IF SCREEN-name CP '*RBUL*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'From SAP to file'.
 ENDIF.
 IF SCREEN-name CP '*CBPROG*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'Program'.
 ENDIF.
 IF SCREEN-name CP '*CBCUA*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'GUI Status'.
 ENDIF.
 IF SCREEN-name CP '*CBDYN*'.
   ASSIGN (SCREEN-name) TO <fs>.
   <fs> = 'Dynpro'.
 ENDIF.
ENDLOOP.

start-OF-selection.

PERFORM add_tab USING:
     'PRG', 'TXT',  'ATR',  'INC',
     'STA', 'FUN',  'MEN',  'MTX',  'ACT', 'BUT', 'PFK', 'SET',
     'DOC', 'TIT',  'ADM',
     'DYN', 'DYNH', 'DYNF', 'DYNE', 'DYNM'.

CASE 'X'.
WHEN rbul. " Выгрузка
 SELECT name INTO TABLE itprog
 FROM trdir
 WHERE name IN sprog.
 CHECK sy-subrc = 0.

 LOOP AT itprog.
   PERFORM save_prog USING itprog.
   IF saveinc = 'X' AND cbprog = 'X'.
     inct[] = inc[].
     LOOP AT inct.
       PERFORM save_prog USING inct-repid.
     ENDLOOP.
   ENDIF.
 ENDLOOP.
 WHEN rbdl. " Загрузка
 LOOP AT sprog WHERE SIGN   = 'I'
 AND option = 'EQ'.
   PERFORM load_prog USING sprog-low.
   IF saveinc = 'X' AND cbprog = 'X'.
     inct[] = inc[].
     LOOP AT inct WHERE repid IN incmask.
       PERFORM load_prog USING inct-repid.
     ENDLOOP.
   ENDIF.
 ENDLOOP.
ENDCASE.

FORM save_prog USING arepid.
 repid = arepid.

 PERFORM refresh_tabs.

 SELECT SINGLE * INTO atr
 FROM TRDIR
 WHERE NAME  = repid.
 CHECK sy-subrc = 0
 AND atr-subc CA '1MFI'. " Типы программ.

* Таблицы программы
 IF cbprog = 'X'.
   APPEND atr.

   READ REPORT   repid INTO prg.

   IF atr-subc = 'I'. " Include
     PERFORM save_tabs.
     EXIT.
   ENDIF.

   READ TEXTPOOL repid INTO txt LANGUAGE SY-LANGU.

   IF saveinc = 'X'.
     CALL FUNCTION 'RS_GET_ALL_INCLUDES'
     EXPORTING
       PROGRAM                      = repid
     TABLES
       INCLUDETAB                   = inc
     EXCEPTIONS
       NOT_EXISTENT                 = 1
       NO_PROGRAM                   = 2
       OTHERS                       = 3.

     IF NOT incmask[] IS INITIAL.
       DELETE inc WHERE NOT repid IN incmask.
     ENDIF.
   ENDIF.
 ENDIF.

 CHECK atr-subc CA '1MF'. " Типы программ.

* Таблицы GUI статуса
 IF cbcua = 'X'.
   CALL FUNCTION 'RS_CUA_INTERNAL_FETCH'
   EXPORTING
     PROGRAM   = REPID
     LANGUAGE  = SY-LANGU
   IMPORTING
     ADM       = ADM
   TABLES
     STA       = STA
     FUN       = FUN
     MEN       = MEN
     MTX       = MTX
     ACT       = ACT
     BUT       = BUT
     PFK       = PFK
     SET       = SET
     DOC       = DOC
     TIT       = TIT
     BIV       = BIV
   EXCEPTIONS
     NOT_FOUND = 1
     OTHERS    = 2.

   IF SY-SUBRC = 0.
     APPEND ADM.
   ENDIF.
 ENDIF.

* Таблицы экранов
 IF cbdyn = 'X'.
   SELECT * INTO TABLE dyn
   FROM D020S
   WHERE PROG = REPID.

   DELETE dyn WHERE TYPE CA 'SW'. " Sel screen

   LOOP AT dyn.
     DYNNAME(40)   = DYN-PROG.
     DYNNAME+40(4) = DYN-DNUM.

     REFRESH: F, E.
     CLEAR: H, F, E.
     IMPORT DYNPRO H F E M ID DYNNAME.

     dynh = H.

     SELECT SINGLE DTXT INTO DYNH-DTXT
     FROM D020T
     WHERE PROG = DYN-PROG
     AND DYNR = DYN-DNUM
     AND LANG = SY-LANGU.

     APPEND dynh.

     LOOP AT f.
       dynf-prog = dyn-prog.
       dynf-dnum = dyn-dnum.
       MOVE-corresponding f TO dynf.
       APPEND dynf.
     ENDLOOP.

     LOOP AT e.
       dyne-prog = dyn-prog.
       dyne-dnum = dyn-dnum.
       MOVE-corresponding e TO dyne.
       APPEND dyne.
     ENDLOOP.

     LOOP AT M.
       dynm-prog = dyn-prog.
       dynm-dnum = dyn-dnum.
       MOVE-corresponding M TO dynm.
       APPEND dynm.
     ENDLOOP.
   ENDLOOP.
 ENDIF.

 PERFORM save_tabs.
ENDFORM.


FORM load_prog USING arepid.
 DATA: TRKEY LIKE TRKEY.
 repid = arepid.

 PERFORM load_tabs.

* Программа
 IF cbprog = 'X' AND NOT prg[] IS INITIAL.
   INSERT REPORT repid   FROM prg.
   PERFORM UPDATE_TRDIR.

   IF NOT txt[] IS INITIAL.
     INSERT TEXTPOOL repid FROM txt LANGUAGE SY-LANGU.
   ENDIF.
 ENDIF.

* GUI статус
 IF cbcua = 'X' AND NOT sta[] IS INITIAL.
   READ TABLE adm INDEX 1.

   TRKEY-DEVCLASS = '$TMP'.
   TRKEY-OBJ_TYPE = 'PROG'.
   TRKEY-OBJ_NAME = repid.
   TRKEY-SUB_TYPE = 'CUAD'.
   TRKEY-SUB_NAME = repid.

   CALL FUNCTION 'RS_CUA_INTERNAL_WRITE'
   EXPORTING
     PROGRAM         = repid
     LANGUAGE        = sy-langu
     TR_KEY          = TRKEY
     ADM             = adm
     STATE           = 'I'
   TABLES
     STA             = sta
     FUN             = fun
     MEN             = men
     MTX             = mtx
     ACT             = act
     BUT             = but
     PFK             = pfk
     SET             = SET
     DOC             = doc
     TIT             = tit
     BIV             = biv
   EXCEPTIONS
     NOT_FOUND       = 1
     OTHERS          = 2.
 ENDIF.

* Экраны
 IF cbdyn = 'X' AND NOT dyn[] IS INITIAL.
   LOOP AT dyn WHERE TYPE NA 'SW'.
     REFRESH: F, E, M.

     DYNNAME(40)   = DYN-PROG.
     DYNNAME+40(4) = DYN-DNUM.

     READ TABLE dynh WITH KEY prog = dyn-prog dnum = dyn-dnum.
     h = dynh.

     LOOP AT dynf WHERE prog = dyn-prog
     AND dnum = dyn-dnum.
       MOVE-corresponding dynf TO f.
       APPEND f.
     ENDLOOP.

     LOOP AT dyne WHERE prog = dyn-prog
     AND dnum = dyn-dnum.
       MOVE-corresponding dyne TO e.
       APPEND e.
     ENDLOOP.

     LOOP AT dynm WHERE prog = dyn-prog
     AND dnum = dyn-dnum.
       MOVE-corresponding dynm TO M.
       APPEND M.
     ENDLOOP.

     EXPORT DYNPRO H F E M ID DYNNAME.

     D020T-PROG = dyn-prog.
     D020T-DYNR = dyn-dnum.
     D020T-LANG = sy-langu.
     D020T-DTXT = dynh-dtxt.
     MODIFY D020T. " Подругому ввести текст экрана не получается
   ENDLOOP.
 ENDIF.
ENDFORM.

FORM UPDATE_TRDIR.
 READ TABLE atr INDEX 1.
 CHECK sy-subrc = 0.

 TRDIR = atr.
 MODIFY TRDIR.

 SELECT SINGLE *
 FROM TADIR
 WHERE PGMID    = 'R3TR'
 AND OBJECT   = 'PROG'
 AND OBJ_NAME = TRDIR-NAME.
 IF SY-SUBRC NE 0. " Иначе не будет записи каталога объектов
   TADIR-PGMID      = 'R3TR'.
   TADIR-OBJECT     = 'PROG'.
   TADIR-OBJ_NAME   = TRDIR-NAME.
   TADIR-DEVCLASS   = '$TMP'.
   TADIR-CPROJECT   = 'L'.
   TADIR-MASTERLANG = SY-LANGU.
   TADIR-SRCSYSTEM  = SY-SYSID.
   INSERT TADIR.
 ENDIF.
ENDFORM.

FORM add_tab USING tab.
 CONCATENATE tab '[]' INTO ittab.
 APPEND ittab.
ENDFORM.

FORM refresh_tabs.
 LOOP AT ittab.
   ASSIGN (ittab) TO <tab>.
   CHECK sy-subrc = 0.
   REFRESH <tab>.
 ENDLOOP.
ENDFORM.

FORM save_tabs.
 DATA: FILENAME LIKE  RLGRAP-FILENAME.
 LOOP AT ittab.
   ASSIGN (ittab) TO <tab>.
   CHECK sy-subrc = 0.
   CHECK NOT <tab> IS INITIAL.

   TRANSLATE ittab USING '[ ] '. " Убираем []
   CONCATENATE dir '\' repid '.' ittab INTO filename.

   CALL FUNCTION 'WS_DOWNLOAD'
   EXPORTING
     FILENAME                      = filename
     FILETYPE                      = 'DAT'
   TABLES
     DATA_TAB                      = <tab>
   EXCEPTIONS
     FILE_OPEN_ERROR               = 1
     FILE_WRITE_ERROR              = 2
     INVALID_FILESIZE              = 3
     INVALID_TYPE                  = 4
     NO_BATCH                      = 5
     UNKNOWN_ERROR                 = 6
     INVALID_TABLE_WIDTH           = 7
     GUI_REFUSE_FILETRANSFER       = 8
     CUSTOMER_ERROR                = 9
     NO_AUTHORITY                  = 10
     OTHERS                        = 11.
 ENDLOOP.
ENDFORM.

FORM load_tabs.
 DATA: FILENAME LIKE  RLGRAP-FILENAME.
 LOOP AT ittab.
   ASSIGN (ittab) TO <tab>.
   CHECK sy-subrc = 0.
   REFRESH <tab>.

   TRANSLATE ittab USING '[ ] '. " Убираем []
   CONCATENATE dir '\' repid '.' ittab INTO filename.

   CASE ittab.
   WHEN 'DYNF'.
     PERFORM load_tabx TABLES <tab> USING filename.
   WHEN OTHERS.
     CALL FUNCTION 'WS_UPLOAD'
     EXPORTING
       FILENAME                      = filename
       FILETYPE                      = 'DAT'
     TABLES
       DATA_TAB                      = <tab>
     EXCEPTIONS
       CONVERSION_ERROR              = 1
       FILE_OPEN_ERROR               = 2
       FILE_READ_ERROR               = 3
       INVALID_TYPE                  = 4
       NO_BATCH                      = 5
       UNKNOWN_ERROR                 = 6
       INVALID_TABLE_WIDTH           = 7
       GUI_REFUSE_FILETRANSFER       = 8
       CUSTOMER_ERROR                = 9
       NO_AUTHORITY                  = 10
       OTHERS                        = 11.
   ENDCASE.
 ENDLOOP.
ENDFORM.

* При выгрузке для полей с типом X перед значением ставится
* символ "X" врезультате ошибка при загрузке
* проявилось на таблице DYNF
FORM load_tabx TABLES tab USING filename.
 DATA: BEGIN OF itf OCCURS 0,
   LINE(2300) TYPE C,
 END   OF itf.

 DATA: itw(256) TYPE C OCCURS 0 WITH HEADER LINE.

 DATA: xtab(2) TYPE X VALUE '0900'.
 DATA: ctab TYPE C.
 DATA: typ TYPE C.

 FIELD-symbols <fs>.

 ASSIGN ctab TO <fs> TYPE 'X'.
 <fs> = xtab.

 CALL FUNCTION 'WS_UPLOAD'
 EXPORTING
   FILENAME                      = filename
   FILETYPE                      = 'ASC'
 TABLES
   DATA_TAB                      = itf
 EXCEPTIONS
   CONVERSION_ERROR              = 1
   FILE_OPEN_ERROR               = 2
   FILE_READ_ERROR               = 3
   INVALID_TYPE                  = 4
   NO_BATCH                      = 5
   UNKNOWN_ERROR                 = 6
   INVALID_TABLE_WIDTH           = 7
   GUI_REFUSE_FILETRANSFER       = 8
   CUSTOMER_ERROR                = 9
   NO_AUTHORITY                  = 10
   OTHERS                        = 11.

 LOOP AT itf.
   SPLIT itf AT ctab INTO TABLE itw.
   CLEAR tab.
   LOOP AT itw.
     ASSIGN COMPONENT sy-tabix OF STRUCTURE tab TO <fs>.
     IF sy-subrc <> 0. EXIT. ENDIF.
     DESCRIBE FIELD <fs> TYPE typ.
     IF typ = 'X'.
       <fs> = itw+1.
     ELSE.
       <fs> = itw.
     ENDIF.
   ENDLOOP.
   APPEND tab.
 ENDLOOP.
ENDFORM.



DKiyanov

Афтор не против  ;D
Но думаю писать проги с кодом длиннее 72 имхо не прилично
Найдутся те кому и 500 не хватит

Uukrul

Цитата: DKiyanov від Травень 29, 2009, 12:24:57 ДП
Афтор не против  ;D
Но думаю писать проги с кодом длиннее 72 имхо не прилично
Найдутся те кому и 500 не хватит
А там именно длина программы или программа + путь?

Dmitriy

Цитата: DKiyanov від Травень 29, 2009, 12:24:57 ДП
Афтор не против  ;D
Но думаю писать проги с кодом длиннее 72 имхо не прилично
Найдутся те кому и 500 не хватит
Если память мне ни с кем не изменяет ФМ 'REUSE_ALV_FIELDCATALOG_MERGE' до сих пор проверяет на длину строки, при формировании каталога полей по имеющейся объявленной вн.табличке. К тому же читать длинный по строке код не очень удобно. ;)

Uukrul

Цитата: Dmitriy від Травень 29, 2009, 02:39:23 ПП
формировании каталога полей по имеющейся объявленной вн.табличке. К тому же читать длинный по строке код не очень удобно.
А, понял... это старое ограничение редактора в 72 символа, которое отменили в новых редакторах кода...

Dmitriy

Цитата: Uukrul від Травень 29, 2009, 02:43:03 ПП
А, понял... это старое ограничение редактора в 72 символа, которое отменили в новых редакторах кода...
Да, вот только в коде прог, проверяющих длину строки репорта, не везде исправлено. ;D ;)

Uukrul

Цитата: Dmitriy від Травень 29, 2009, 02:47:12 ПП
Да, вот только в коде прог, проверяющих длину строки репорта, не везде исправлено. ;D ;)
Да это мы знаем... вообще было прикольно когда они только редактор сменили, на курсах известный абап-лектор В.К. показывая пример программы, чуток вылез за 72 символа (кстати перед этим он расхваливал новый редактор), причем в имени переменной, причем всего-то на пару букв, ну например имя было типа p_value., и вот эта последняя .(точка) и вылезла за 72. Ну система говорит, что дескать в строке такой-то типа то ли точки нет, то ли строка не завершена... ну он смотрит, да нет как бы вот есть... и так минут 15, пока не сделали структурную печать кода, которая и разбила эту строку на две...  после чего последовала фраза, что да... с новым редактором еще не все хорошо... так похоже что не все хорошо идет уже который год  :D

Паганель

Цитата: Uukrul від Травень 29, 2009, 02:53:23 ПП
Да это мы знаем... вообще было прикольно когда они только редактор сменили, на курсах известный абап-лектор В.К. показывая пример программы, чуток вылез за 72 символа (кстати перед этим он расхваливал новый редактор), причем в имени переменной, причем всего-то на пару букв, ну например имя было типа p_value., и вот эта последняя .(точка) и вылезла за 72. Ну система говорит, что дескать в строке такой-то типа то ли точки нет, то ли строка не завершена... ну он смотрит, да нет как бы вот есть... и так минут 15, пока не сделали структурную печать кода, которая и разбила эту строку на две...  после чего последовала фраза, что да... с новым редактором еще не все хорошо... так похоже что не все хорошо идет уже который год  :D
Ну старым редактором пользовался мало, а вот отладчиком старым, достаточно «напользовался», у нас некоторые вещи в продуктиве только им и можно отлаживать,
там много полезных вещей есть, которых в новом отладчике/редакторе нету, например тот же WathList (так кажись),
хотя на современных экранах, он выглядит маленьким

Dmitriy

#17
Цитата: Паганель від Травень 29, 2009, 03:05:19 ПП
Ну старым редактором пользовался мало, а вот отладчиком старым, достаточно «напользовался», у нас некоторые вещи в продуктиве только им и можно отлаживать,
там много полезных вещей есть, которых в новом отладчике/редакторе нету, например тот же WathList (так кажись),
хотя на современных экранах, он выглядит маленьким
Кстати пользую "старый" debagger. Новый, на мой взгляд, перенаворочен. Но всегда можно переключиться. ;)