Текущее время: Вс, авг 03 2025, 21:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с ActiveX
СообщениеДобавлено: Ср, июл 16 2008, 16:39 
Начинающий
Начинающий

Зарегистрирован:
Ср, июл 16 2008, 15:10
Сообщения: 2
Есть элемент activex.
Глядя на "Using Classic ActiveX Controls in the ABAP Control Framework
Thomas Jung", написан класс.
Code:
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 = 'VIIDK.CameraCtrl.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.

  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.

* create and initialize dataprovider =>  m_dp_handle
  CALL FUNCTION 'DP_CREATE'
       CHANGING
            h_dp             = m_dp_handle
       EXCEPTIONS
            dp_create_error  = 1
            dp_install_error = 2
            dp_error         = 3
            OTHERS           = 4.
  IF sy-subrc <> 0.
    RAISE error_dp_create.
  ENDIF.

ENDMETHOD.

method SET_IP .
  call method set_property
         exporting
              property          = 'ip' "#EC NOTEXT
              value             = val    "#EC NOTEXT
         exceptions
              cntl_system_error = 1
              cntl_error        = 2
              others            = 3.
    if sy-subrc <> 0.
              raise error_cntl_call_method.
    endif.

* echo current property of control in attribute (public, read-only) of
* class. Thus calls to get method and eventually necessary flushes can
* be avoided and performance is improved.
    m_ip = val.
endmethod.


method PLAY.
m_par_val = 'play'.
call method call_method
    exporting
      method  = 'Play'
    exceptions
      others  = 1.
  if sy-subrc ne 0.
    raise ERROR_CNTL_CALL_METHOD.
  endif.
endmethod.


Есть программка, которая не работает:
Code:

...
data: container_1 type ref to cl_gui_custom_container,
      cam type ref to ZCL_GUI_CAM.

end-of-selection.
  create object container_1
             exporting
              container_name = 'CONTAINER_1'
  .
  create object cam
    exporting
      parent = container_1
    exceptions
      error_cntl_create      = 1
      error_cntl_init        = 2
      error_cntl_link        = 3
      error_dp_create        = 4
      gui_type_not_supported = 5
      others                 = 6
.


call screen 5000.
module STATUS_5000 output.
  set pf-status 'S1'.
endmodule.               

module USER_COMMAND_5000 input.
  case sy-ucomm.
    when 'BACK'.
      leave to screen 0.
    when 'EXIT'.
      leave program.
    when 'INIT'.
      perform init.
  endcase.
endmodule. 

FORM init.
      call method cam->set_ip
        exporting
           val  = '127.0.0.1'
      .
      call method cam->set_port
        exporting
           val  = '900'
      .
      call method cam->set_camid
        exporting
           val  = 1
      .
      call method cam->Play .
      call method cl_gui_cfw=>flush.
endform.

После запуска init при вызове cl_gui_cfw=>flush все текущие режимы и саплогон закрываются и остается процесс saplogon.exe, занимающий 50% цп. Подобное происходит при попытке вызвать любой метод (кроме set_property)) элемента.

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

Как быть?


Последний раз редактировалось Igr Чт, июл 17 2008, 16:13, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 17 2008, 12:21 
Начинающий
Начинающий

Зарегистрирован:
Ср, июл 16 2008, 15:10
Сообщения: 2
без вариантов?
или все настолько тривиально?


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

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


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

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


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

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