Текущее время: Пт, май 16 2025, 08:26

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3  След.

Как вам редактор?
Must have 63%     [ 22 ]
Супер! 23%     [ 8 ]
Так себе 9%     [ 3 ]
Всё это украшения 6%     [ 2 ]
Всего голосов : 35
Автор Сообщение
 Заголовок сообщения: Новый АБАП редактор - слишком хорош, чтобы ждать! ;)
СообщениеДобавлено: Пн, авг 08 2005, 18:40 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
есть один замечательный сайт SDN на котором недавно опубликовали замечательную статью - New ABAP Editor; too good to wait for.
https://www.sdn.sap.com:443/sdn/weblogs ... b/wlg/2115
Там описывается как можно ручками пощупать новый редактор не дожидаясь 7.0!
Для тех у кого туда нету доступа - краткое изложение:

Нужен 11 патч левел на gui который можно утащить с ftp.sap.com.

создаём класс - ZCL_ES_GUI_ABAP_EDITOR потомок CL_GUI_CONTROL
ему добавляем два метода - constructor
Code:
METHOD CONSTRUCTOR .
*Importing   VALUE( STYLE )   TYPE I  DEFAULT 0   control style, if initial a defined value is choosen
*Importing   VALUE( PARENT )   TYPE REF TO CL_GUI_CONTAINER   Parent Container
*Importing   VALUE( LIFETIME )   TYPE I OPTIONAL   for life time management
*Importing   VALUE( NAME )   TYPE STRING OPTIONAL   name for the control
*Exception   ERROR_CNTL_CREATE      Error Creating Control
*Exception   ERROR_CNTL_INIT      Error Initializing Control
*Exception   ERROR_CNTL_LINK      Error Linking Control
*Exception   ERROR_DP_CREATE      DataProvider Error
*Exception   GUI_TYPE_NOT_SUPPORTED      This type of GUI is not supported!

  DATA prog_id(80).

  IF parent IS INITIAL.
    RAISE error_cntl_create.
  ENDIF.

  CLASS cl_gui_cfw DEFINITION LOAD.

* assign prog_id to get the frontend specific control
  IF NOT activex IS INITIAL.
    prog_id = 'SAPGUI.AbapEditor.1'.
  ELSEIF NOT javabean IS INITIAL.
    RAISE gui_type_not_supported.
  ENDIF.

  IF prog_id IS INITIAL.
    RAISE gui_type_not_supported.
  ENDIF.

* Set the window styles of the control when style parameter was not
* set with constructor call.
* For more information on the styles see WIN32 SDK
  IF style IS INITIAL.
* otherwise the control would be invisible and the mistake would be
* hard to find
    style = cl_gui_control=>ws_visible
            + cl_gui_control=>ws_child
            + cl_gui_control=>ws_clipsiblings.

  ENDIF.

* Create the control
  CALL METHOD super->constructor
    EXPORTING
      clsid = prog_id
      shellstyle = style
      parent = parent
      lifetime = lifetime
      name = name
   EXCEPTIONS
      OTHERS    = 1.

  CALL METHOD cl_gui_cfw=>flush
    EXCEPTIONS
      cntl_system_error = 1
      cntl_error        = 2
      OTHERS            = 3.

  IF sy-subrc <> 0.
    RAISE error_cntl_create.
  ENDIF.

* register instance at framework
  CALL METHOD cl_gui_cfw=>subscribe
    EXPORTING
       shellid = h_control-shellid
       ref = me
    EXCEPTIONS
      OTHERS    = 1.

  IF sy-subrc <> 0.
    RAISE error_cntl_create.
  ENDIF.
ENDMETHOD.

и ADD_EMPTY_DOC
Code:
method ADD_EMPTY_DOC .
*Importing   STR_NAME   TYPE STRING   
*Importing   B_READONLY   TYPE I  DEFAULT CFALSE   Boolean Variable (X=True, -=False, Space=Unknown)
*Importing   STR_EXTENSION   TYPE STRING  DEFAULT 'ABAP'   
*importing   STR_TOOLTIP   TYPE STRING  DEFAULT 'Test'   
*Exception   UNABLE_TO_SET_DOC      Font Set Error

call method call_method
    exporting
      method      = 'AddEmptyDoc'
      p_count     = 4
      p1          = str_name
      p2          = b_readonly
      p3          = str_extension
      p4          = str_tooltip
      exceptions
                cntl_system_error = 1
                cntl_error        = 2
                others            = 3.
  if sy-subrc <> 0.
    raise UNABLE_TO_SET_DOC.
  endif.

endmethod.

и небольшую тестовую программу.
Code:
REPORT  zbc_editor.
DATA: custom_container TYPE REF TO cl_gui_custom_container.
DATA: abap_editor TYPE REF TO  zcl_es_gui_abap_editor.

CALL SCREEN 100.
*---------------------------------------------------------------------*
*  MODULE status_0100 OUTPUT
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
*  SET PF-STATUS 'MAIN'.
*  SET TITLEBAR '100'.
  IF custom_container IS INITIAL.
    PERFORM create_controls.
  ENDIF.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&--------------------------------------------------------------------*
*&      Form  create_controls
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM create_controls.

       CREATE OBJECT custom_container
      EXPORTING
        container_name              = 'CUSTOM_CONTAINER'.

  CREATE OBJECT abap_editor
    EXPORTING
      parent                 = custom_container.
  IF sy-subrc <> 0.
  ENDIF.

  CALL METHOD abap_editor->add_empty_doc
    EXPORTING
      str_name      = 'Test Program'
      b_readonly    = '0' "Edit Mode
      str_extension = 'ABAP'
      str_tooltip   = 'Tooltip1'.
  IF sy-subrc <> 0.
  ENDIF.
  cl_gui_cfw=>flush( ).
ENDFORM.                    "create_controls

В итоге получаем пустой редактор в котором можно посмотреть часть фич (в правом нижнем углу есть иконка options). ;)
ИМХО весчь.
Теперь осталось сделать совсем немного - чтобы можно было открывать и сохранять проги ...
PS в подробном варианте немного описано на основе чего это было сделано.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 09:23 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
Базиз похоже нужен WAS 7.0 ... :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 09:54 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
я думаю при желании можно будет портировать назад ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:15 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
Я его в виде внешнего редактора трогал (только функции редактирования) - по моему весчь!!! :!:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Ich Will написал:
Базиз похоже нужен WAS 7.0 ... :(


Для нормальной работы в качестве редактора - нужен.
А посмотреть и на 4.6С можно..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Пробовали набирать CASE и нажимать ENTER ? :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:28 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, ноя 10 2004, 16:39
Сообщения: 72
Пол: Мужской
Хотел посмотреть что за весчь, а ладутак и не дал как эти методы активировать в классе :cry: Ругается, что не находит переменных которые должны импортироваться ....


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:32 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
T написал:
Для нормальной работы в качестве редактора - нужен.
А посмотреть и на 4.6С можно..


У нас как раз 4.6С
а ничего дополнительно не надо делать ? Тоесть только то что описано в статье ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:36 
Начинающий
Начинающий

Зарегистрирован:
Пн, окт 25 2004, 09:38
Сообщения: 7
Откуда: Belarus
Цитата:
У нас как раз 4.6С
а ничего дополнительно не надо делать ? Тоесть только то что описано в статье ?


4.6C - полёт нормальный. Есть мысль прикрутить его к базе на манер старого внешнего редактора ZSAPEDIT =)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Если кому так проще, можно обойтись и локальным определением класса..

Code:

REPORT  zbc_editor.

*---------------------------------------------------------------------*
CLASS lcl_gui_new_editor DEFINITION INHERITING FROM cl_gui_control.
  PUBLIC SECTION.
    METHODS constructor
      IMPORTING
        value(style) TYPE i DEFAULT 0
        value(parent) TYPE REF TO cl_gui_container
        value(lifetime) TYPE i OPTIONAL
        value(name) TYPE string OPTIONAL
      EXCEPTIONS
        error_cntl_create
        error_cntl_init
        error_dp_create
        gui_type_not_supported .
    METHODS add_empty_doc
      IMPORTING
        !str_name TYPE string
        !b_readonly TYPE i DEFAULT cfalse
        !str_extension TYPE string DEFAULT 'ABAP'
        !str_tooltip TYPE string DEFAULT 'Test'
      EXCEPTIONS
        unable_to_set_doc .
    TYPE-POOLS cntl .
ENDCLASS.
*---------------------------------------------------------------------*
CLASS lcl_gui_new_editor IMPLEMENTATION.

  METHOD add_empty_doc.
** ...
    CALL METHOD call_method
       EXPORTING
         method      = 'AddEmptyDoc'
         p_count     = 4
         p1          = str_name
         p2          = b_readonly
         p3          = str_extension
         p4          = str_tooltip
         EXCEPTIONS
                   cntl_system_error = 1
                   cntl_error        = 2
                   OTHERS            = 3.
    IF sy-subrc <> 0.
      RAISE unable_to_set_doc.
    ENDIF.

  ENDMETHOD.

    METHOD constructor.
* ...
    DATA prog_id(80).

    IF parent IS INITIAL.
      RAISE error_cntl_create.
    ENDIF.

    CLASS cl_gui_cfw DEFINITION LOAD.

* assign prog_id to get the frontend specific control
    IF NOT activex IS INITIAL.
      prog_id = 'SAPGUI.AbapEditor.1'.
    ELSEIF NOT javabean IS INITIAL.
      RAISE gui_type_not_supported.
    ENDIF.

    IF prog_id IS INITIAL.
      RAISE gui_type_not_supported.
    ENDIF.

* Set the window styles of the control when style parameter was not
* set with constructor call.
* For more information on the styles see WIN32 SDK
    IF style IS INITIAL.
* otherwise the control would be invisible and the mistake would be
* hard to find
      style = cl_gui_control=>ws_visible
              + cl_gui_control=>ws_child
              + cl_gui_control=>ws_clipsiblings.

    ENDIF.

* Create the control
    CALL METHOD super->constructor
      EXPORTING
        clsid = prog_id
        shellstyle = style
        parent = parent
        lifetime = lifetime
        name = name
     EXCEPTIONS
        OTHERS    = 1.

    CALL METHOD cl_gui_cfw=>flush
      EXCEPTIONS
        cntl_system_error = 1
        cntl_error        = 2
        OTHERS            = 3.

    IF sy-subrc <> 0.
      RAISE error_cntl_create.
    ENDIF.

* register instance at framework
    CALL METHOD cl_gui_cfw=>subscribe
      EXPORTING
         shellid = h_control-shellid
         ref = me
      EXCEPTIONS
        OTHERS    = 1.

    IF sy-subrc <> 0.
      RAISE error_cntl_create.
    ENDIF.

  ENDMETHOD.
ENDCLASS.

DATA: abap_editor TYPE REF TO  lcl_gui_new_editor.

PARAMETERS: a.

AT SELECTION-SCREEN OUTPUT.
  IF abap_editor IS INITIAL.
    PERFORM create_controls.
  ENDIF.
*---------------------------------------------------------------------*
FORM create_controls.

  CREATE OBJECT abap_editor
    EXPORTING
      parent = cl_gui_container=>default_screen.

  CALL METHOD abap_editor->add_empty_doc
    EXPORTING
      str_name      = 'Test Program'
      b_readonly    = 0 "Edit Mode
      str_extension = 'ABAP'
      str_tooltip   = 'Tooltip1'.

  CALL METHOD cl_gui_cfw=>flush( ).

ENDFORM.                    "create_controls



Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Ich Will написал:
T написал:
Для нормальной работы в качестве редактора - нужен.
А посмотреть и на 4.6С можно..


У нас как раз 4.6С
а ничего дополнительно не надо делать ? Тоесть только то что описано в статье ?


Пропатчил GUI до 11-го. Запускаю - всё в норме. Ты, может забыл экран определить с областью для контейнера?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 10:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Набрать REPORT и нажать ENTER :)
То же самое для IF DO WHILE CASE

PS Эти примочки перечислены в настройках в "Code Templates"
PS2 Там же можно свои шаблоны определить
PS3 Можно и не создавать новый класс и не звать AddEmptyDoc. Тож всё можно посмотреть..
Code:
PARAMETERS: a.
DATA: abap_editor TYPE REF TO  cl_gui_control.

AT SELECTION-SCREEN OUTPUT.
  check abap_editor IS INITIAL.
  PERFORM create_controls.

FORM create_controls.
  create object abap_editor
            EXPORTING parent = cl_gui_container=>default_screen
                      CLSID  = 'SAPGUI.AbapEditor.1'.
  CALL METHOD cl_gui_cfw=>flush( ).
ENDFORM.                    "create_controls


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 11:50 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
Все получилось! Прикольный редактор... но до JetBrains IDEA еще далеко конечно, хорошо что вообще развивается :) уже хорошо... :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 13:31 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
FireWare написал:
Хотел посмотреть что за весчь, а ладутак и не дал как эти методы активировать в классе :cry: Ругается, что не находит переменных которые должны импортироваться ....

В начале кода в виде коментария указан интерфейс методов.

T, супер! так гораздо лучше, теперь научится открывать,сохранять файлы ... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 09 2005, 13:37 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
Одна проблема ... в нем неработают нормально шаблоны (имеется в виду вариант предложенный Т).


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB