Текущее время: Вс, июн 29 2025, 00:24

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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