Текущее время: Вс, июл 27 2025, 09:20

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как сделать скриншот активного окна из ABAPa???
СообщениеДобавлено: Пн, апр 27 2009, 09:34 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 27 2009, 09:27
Сообщения: 8
Привет всем,

мне нужно сделать скриншот активного окна из абапа. я нашел, что какой-то из SAP OLE объектов имеет функцию 'HardCopy', которая может сохранять на винт скриншот в bmp-шный файл , но не могу понять какой это OLE объект. кто-нибудь знает где можно порыться? потому как я инфы нигде не нахожу. Или может у кого есть документация по SAP OLE объектам с описанием их методов?

Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как сделать скриншот активного окна из ABAPa???
СообщениеДобавлено: Чт, окт 06 2011, 08:43 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Недавно решал аналогичную задачу, оказывается в базисе 702 у класса CL_GUI_FRONTEND_SERVICES появился метод GET_SCREENSHOT.
Для получения скриншота используется метод CreateScreenshot объекта SAPGUI.InfoCtrl.1. Если посмотреть ноты, есть указания с какой версии GUI он присутствует.
Code:
method GET_SCREENSHOT.
  "-constants-----------------------------------------------------------
  CONSTANTS line_length_i TYPE I VALUE 10240.

  "-type declarations---------------------------------------------------
  TYPES: t_table_line(line_length_i) TYPE X,
         t_image_table_line TYPE STANDARD TABLE OF t_table_line.

  "-variables-----------------------------------------------------------
  DATA: feature_supported_b TYPE ABAP_BOOL,
        gui_available_b TYPE CHAR1,
        image_size_i TYPE I,
        image_size_str TYPE STRING,
        image_table TYPE t_image_table_line,
        result_str TYPE STRING,
        rc_str TYPE STRING,
        table_line TYPE t_table_line.

  "-initial checks------------------------------------------------------
  CALL FUNCTION 'GUI_IS_AVAILABLE'     " check if running in batch, etc.
    IMPORTING
      return = gui_available_b.

  IF gui_available_b IS INITIAL.
    RAISE ERROR_NO_GUI.
  ENDIF.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>CHECK_GUI_SUPPORT
    EXPORTING                          " check GUI screenshot support
      COMPONENT            = 'sapinfocntl'
      FEATURE_NAME         = 'GET_SCREENSHOT'
    RECEIVING
      RESULT               = feature_supported_b
    EXCEPTIONS
      CNTL_ERROR           = 1
      ERROR_NO_GUI         = 2
      WRONG_PARAMETER      = 3
      NOT_SUPPORTED_BY_GUI = 4
      UNKNOWN_ERROR        = 5
      others               = 6.

  IF ( SY-SUBRC <> 0 ) OR ( feature_supported_b = ABAP_FALSE ).
    RAISE NOT_SUPPORTED_BY_GUI.
  ENDIF.

  "-initialization------------------------------------------------------
  CLEAR mime_type_str.
  CLEAR image.


  "-begin special handling for SAPGUI for HTML--------------------------
  IF CL_GUI_CONTROL=>WWW_ACTIVE IS NOT INITIAL.

    CALL FUNCTION 'ITS_GET_SCREENSHOT'
      IMPORTING
        MIME_TYPE_STR          = MIME_TYPE_STR
        IMAGE                  = IMAGE
      EXCEPTIONS
        ACCESS_DENIED          = 1
        NOT_SUPPORTED_BY_GUI   = 2
        CNTL_ERROR             = 3
        OTHERS                 = 4.

    CASE SY-SUBRC.
      WHEN '0'.

      WHEN '1'.
        RAISE ACCESS_DENIED.
      WHEN '2'.
        RAISE NOT_SUPPORTED_BY_GUI.
      WHEN OTHERS.
        RAISE CNTL_ERROR.
    ENDCASE.

    EXIT.

  ENDIF.
  "end special handling for SAPGUI for HTML-----------------------------

  "-send data table to frontend-----------------------------------------
  CALL FUNCTION 'DP_CONTROL_ASSIGN_TABLE'
    EXPORTING
      H_CNTL                 = HANDLE->H_CONTROL
      MEDIUM                 = CNDP_MEDIUM_R3TABLE
      PROPERTYNAME           = 'R3TABLE'
    TABLES
      DATA                   = image_table
    EXCEPTIONS
      DP_ERROR_CREATE        = 1
      DP_ERROR_SEND_DATA     = 2
      DP_ERROR_ASSIGN        = 3
      DP_ERROR_INVALID_PARAM = 4
      DP_ERROR_TABNAME       = 5
      OTHERS                 = 6.

  IF SY-SUBRC <> 0.
    RAISE CNTL_ERROR.
  ENDIF.

  "-create screenshot of topmost modal----------------------------------
  CALL METHOD HANDLE->CALL_METHOD
    EXPORTING
      METHOD     = 'CreateScreenshot'
    IMPORTING
      RESULT     = result_str
    EXCEPTIONS
      OTHERS     = 1.

  IF SY-SUBRC <> 0.
    RAISE CNTL_ERROR.
  ENDIF.

  CALL METHOD CL_GUI_CFW=>FLUSH
    EXCEPTIONS
      CNTL_SYSTEM_ERROR = 1
      CNTL_ERROR        = 2
      others            = 3.

  IF SY-SUBRC <> 0.
    RAISE CNTL_ERROR.
  ENDIF.

  SPLIT result_str AT ';' INTO rc_str image_size_str mime_type_str.

  image_size_i = image_size_str.

  CASE rc_str.
    WHEN '0'.

    WHEN '1'.
      RAISE ACCESS_DENIED.
    WHEN OTHERS.
      RAISE CNTL_ERROR.
  ENDCASE.

  "-retrieve image data from frontend-----------------------------------
  CALL FUNCTION 'DP_CONTROL_GET_TABLE'
    EXPORTING
      H_CNTL                 = HANDLE->H_CONTROL
      PROPERTYNAME           = 'R3TABLE'
      MEDIUM                 = CNDP_MEDIUM_R3TABLE
    TABLES
      DATA                   = image_table
    EXCEPTIONS
      DP_ERROR_CREATE        = 1
      DP_ERROR_GET_PROPERTY  = 2
      DP_ERROR_GET_DATA      = 3
      DP_ERROR_INVALID_PARAM = 4
      OTHERS                 = 5.

  IF SY-SUBRC <> 0.
    RAISE CNTL_ERROR.
  ENDIF.

  LOOP AT image_table INTO table_line.
    IF image_size_i > line_length_i.
      image = image && table_line.

      image_size_i = image_size_i - line_length_i.
    ELSE.
      image = image && table_line+0(image_size_i).

      image_size_i = 0.
    ENDIF.
  ENDLOOP.

endmethod.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как сделать скриншот активного окна из ABAPa???
СообщениеДобавлено: Чт, окт 06 2011, 16:46 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Интересно. Вы это не для саппорта случаем делаете? Например, SAP-пользователь наткнулся на ошибку или чего то не понимает, кликнул кнопку, тут же письмо со скрином оказалось у ответственного консультанта в SAP-почте (желательно с коментами сразу, что не так и все такое), ну и следом консультант перезванивает этому юзеру, и без лишних вопросов решает проблему :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как сделать скриншот активного окна из ABAPa???
СообщениеДобавлено: Пт, окт 07 2011, 09:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Besa написал:
Например, SAP-пользователь наткнулся на ошибку или чего то не понимает, кликнул кнопку, тут же письмо со скрином оказалось у ответственного консультанта в SAP-почте (желательно с коментами сразу, что не так и все такое), ну и следом консультант перезванивает этому юзеру, и без лишних вопросов решает проблему :)

Ну это можно и виндовыми средствами сделать - Ctrl-PrtScr :)
Или подключиться к пользователю через Remote Access...

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как сделать скриншот активного окна из ABAPa???
СообщениеДобавлено: Пт, окт 07 2011, 22:51 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Да, именно для автоматического вложения скрина в сообщение. Для старых версий gui пришлось внешнюю программу задействовать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как сделать скриншот активного окна из ABAPa???
СообщениеДобавлено: Сб, окт 08 2011, 04:44 
Менеджер
Менеджер

Зарегистрирован:
Вт, июл 24 2007, 14:52
Сообщения: 603
Откуда: Казахстан
Пол: Мужской
еще было бы удобно делать автоматическое срабатывание веб-камеры ...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как сделать скриншот активного окна из ABAPa???
СообщениеДобавлено: Сб, окт 08 2011, 08:24 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Ludens написал:
еще было бы удобно делать автоматическое срабатывание веб-камеры ...

Как в бородатом анекдоте - настоящий вирус это который перехватывает мышь, и ейным шнурком душит пользователя? ))


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

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


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

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


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

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