Текущее время: Сб, июл 26 2025, 04:26

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


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

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


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

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