Текущее время: Чт, июл 31 2025, 05:05

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Как запустить SAP GUI script из ABAP?
СообщениеДобавлено: Пн, апр 14 2008, 11:39 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Добрый день!
Как запускать через рекордер скрипта я научился.
А как программно из ABAP запустить этот сохраненный скрипт?

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запустить SAP GUI script из ABAP?
СообщениеДобавлено: Пн, апр 14 2008, 17:23 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Похоже что... элементарно, Ватсон
Code:
CALL METHOD cl_gui_frontend_services=>execute
    EXPORTING
      document = 'С:\script.vbs'.


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

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Еще один вопрос.
Пример скрипта для подключения к 1 соединению 2 режиму:
Code:
If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(1)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(2)
End If
...

Чтобы сформировать текст скрипта надо получить эти два параметра для текущего сеанса.
Номер текущего режима в АБАПе по видимому можно получить из SY-MODNO. А кто нибудь знает как в ABAP получить номер текущего соединения?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 17 2008, 10:28 
Специалист
Специалист

Зарегистрирован:
Ср, дек 27 2006, 19:19
Сообщения: 230
Конечно не все так просто, но вроде бы получилось:
Code:
*&---------------------------------------------------------------------*
*& Report  ZTEST11
*&---------------------------------------------------------------------*
*& SAP GUI Scripting from ABAP
*&---------------------------------------------------------------------*
REPORT ztest11.

* Make and run script from the ABAP program
DATA:
  BEGIN OF data_tab OCCURS 0,
    line(200) TYPE C,
  END OF data_tab,
  line       LIKE data_tab-line,
  text       TYPE STRING,
  sapworkdir TYPE STRING,
  filepath   TYPE STRING,
  filelength TYPE I.

PERFORM execute_script.

* Write a vb-script line
FORM addline USING line.
  CLEAR data_tab-line.
  data_tab-line = line.
  APPEND data_tab.
ENDFORM. " addline

* Form and execute vb-script
FORM execute_script.

  REFRESH data_tab.

* System Id (for example "DEV")
  CONCATENATE 'SystemName = "' sy-sysid '"' INTO line.
  PERFORM addline USING line.

* Mandant (for example "150")
  CONCATENATE 'Client = "' sy-mandt '"' INTO line.
  PERFORM addline USING line.

* Number of Mode (on StatusBar)
  text = sy-modno + 1.
  CONCATENATE 'SessionNumber =' text INTO line SEPARATED BY space.
  PERFORM addline USING line.

* Get reference to SAP GUI application
  PERFORM addline USING 'Set SapGuiAuto  = GetObject("SAPGUI")'.
  PERFORM addline USING 'Set application = SapGuiAuto.GetScriptingEngine'.
  PERFORM addline USING ''.

* Search the current session and start our vb-script
  PERFORM addline USING 'Do'.
  PERFORM addline USING '  For Each connection in application.children'.
  PERFORM addline USING '    For Each session in connection.children'.
  PERFORM addline USING '      If session.Info.SystemName = SystemName And session.Info.Client = Client And session.Info.SessionNumber = SessionNumber Then'.
  PERFORM addline USING '        Exit Do '' Found'.
  PERFORM addline USING '      End if'.
  PERFORM addline USING '    Next'.
  PERFORM addline USING '  Next'.
  PERFORM addline USING '  Exit Do '' Not Found'.
  PERFORM addline USING 'Loop'.
  PERFORM addline USING ''.
  PERFORM addline USING '  If IsObject(session) then'.
  PERFORM addline USING '    If IsObject(WScript) Then'.
  PERFORM addline USING '      WScript.ConnectObject session,     "on"'.
  PERFORM addline USING '      WScript.ConnectObject application, "on"'.
  PERFORM addline USING '      RunScript'.
  PERFORM addline USING '    End If'.
  PERFORM addline USING '  Else'.
  PERFORM addline USING '    MsgBox("Session " & SystemName & "(" & CStr(SessionNumber) & ") " & Client & " - not found.")'.
  PERFORM addline USING '  End If'.
  PERFORM addline USING ''.

* Our useful vb-script (for example, start transaction BIBS)
  PERFORM addline USING 'Sub RunScript'.
  PERFORM addline USING '  session.findById("wnd[0]").resizeWorkingPane 177,37,false'.
  PERFORM addline USING '  session.findById("wnd[0]/tbar[0]/okcd").text = "/nbibs"'.
  PERFORM addline USING '  session.findById("wnd[0]").sendVKey 0'.
  PERFORM addline USING '  MsgBox ("Hello, SAP! :)")'.
  PERFORM addline USING 'End Sub'.

* Get path to download
  CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
    CHANGING
      sapworkdir = sapworkdir.

* The file to download
  CONCATENATE sapworkdir '\script.vbs' INTO filepath.

* Write vb-script into the file in the local PC
  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
      filename = filepath
    IMPORTING
      filelength = filelength
    CHANGING
      data_tab = data_tab[].

* Execute vb-script
  CALL METHOD cl_gui_frontend_services=>execute
    EXPORTING
      document = filepath.

ENDFORM. " execute_script


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

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


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

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


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

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