Excel VBA извлекает данные из SAP NetWeaver

Как вы извлекаете данные из SAP NetWeaver в Excel с помощью макроса VBA?

У меня есть данные в системе SAP, доступные в нескольких различных транзакциях через графический интерфейс SAP. Мне нужно ежедневно извлекать эти данные, а затем форматировать их в таблицы и отчеты Excel. Извлечение этих данных вручную занимает очень много времени и подвержено ошибкам.

У меня нет поддержки со стороны разработчика или системы. Я должен уметь делать это сам как непривилегированный пользователь.


person AndASM    schedule 31.01.2016    source источник
comment
Этот вопрос перефразирует закрытый вопрос stackoverflow.com/questions/19452461/, который был закрыт по произвольным причинам. Вопрос и ответ были полезными, а закрытие по техническим причинам - нет. Быть закрытым, несмотря на то, что он был отредактирован для устранения технических деталей, также не помог.   -  person AndASM    schedule 31.01.2016


Ответы (1)


Это скопировано из моего ответа здесь: https://stackoverflow.com/a/19456656/2250183

Все зависит от того, какой у вас доступ к вашей системе SAP. Программа ABAP, которая экспортирует данные и / или RFC, который ваш макрос может вызывать для прямого получения данных или создания файла в SAP, вероятно, лучше всего.

Однако, как правило, люди, ищущие такой ответ, ищут немедленное решение, которое не требует от ИТ-отдела тратить месяцы на настройку своей системы SAP.

В этом случае вы, вероятно, захотите использовать SAP GUI Scripting. Создание сценариев SAP GUI позволяет автоматизировать Windows SAP GUI во многом так же, как вы автоматизируете Excel. Фактически, вы можете вызвать SAP GUI прямо из макроса Excel. Подробнее об этом можно узнать здесь. В графическом интерфейсе пользователя SAP есть инструмент записи макросов, очень похожий на Excel. Он записывает макросы в VBScript, который почти идентичен Excel VBA и обычно может быть скопирован и вставлен в макрос Excel напрямую.

Пример кода

Вот простой пример, основанный на системе SAP, к которой у меня есть доступ.

Public Sub SimpleSAPExport()
  Set SapGuiAuto  = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
  Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI 
  Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
  Set session = SAPCon.Children(0) 'Get the first session (window) on that connection

  'Start the transaction to view a table
  session.StartTransaction "SE16"

  'Select table T001
  session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "T001"
  session.findById("wnd[0]/tbar[1]/btn[7]").Press

  'Set our selection criteria
  session.findById("wnd[0]/usr/txtMAX_SEL").text = "2"
  session.findById("wnd[0]/tbar[1]/btn[8]").press

  'Click the export to file button
  session.findById("wnd[0]/tbar[1]/btn[45]").press

  'Choose the export format
  session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
  session.findById("wnd[1]/tbar[0]/btn[0]").press

  'Choose the export filename
  session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "test.txt"
  session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Temp\"

  'Export the file
  session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub

Запись сценария

Чтобы помочь найти имена таких элементов, какwnd[1]/tbar[0]/btn[0], вы можете использовать запись сценария. Нажмите кнопку настройки локального макета, это, вероятно, выглядит примерно так: Настроить локальный макет
Затем найдите Пункт меню "Запись и воспроизведение сценария".
Запись и воспроизведение сценария
Внутри него кнопка More позволяет вам для просмотра / изменения файла, в который записан сценарий VB. Формат вывода немного беспорядочный, он записывает такие вещи, как выделение текста, щелчок внутри текстового поля и т. Д.

Изменить: раннее и позднее связывание

Предоставленный сценарий должен работать, если он скопирован непосредственно в макрос VBA. Использует позднее связывание, строка Set SapGuiAuto = GetObject("SAPGUI") определяет объект SapGuiAuto.

Однако если вы хотите использовать раннее связывание, чтобы ваш редактор VBA мог отображать свойства и методы используемых вами объектов, вам необходимо добавить ссылку на sapfewse.ocx в установочную папку SAP GUI.

person AndASM    schedule 31.01.2016