Текущее время: Ср, июл 30 2025, 09:36

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


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

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


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

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