Я пытаюсь автоматизировать некоторые ежемесячные заказы на продажу вручную в SAP.Он открывает 2 рабочие книги Excel и импортирует информацию о продажах в SAP (транзакция va01).
Сценарий работает следующим образом:
- Открыть файл справки, получить адрес в Excel-файлы с информацией о продажах (в тесте я использую 3 строки адресов / файлов)
- Открыть файл информации о продажах с выбранным адресом (в тесте я использую 7 строк данных для копирования, всего 8 строк, включая строку имени вкаждый файл)
- Импортирует информацию о продажах в SAP (транзакция va01), проходит по каждой строке.
- Переход к следующему адресу в файле справки и повторение до завершения, а затем закрытие всего.
Проблема в том, что не вся информация копируется в SAP, последняя строка пропускается для всех, кроме последнего файла информации о продажах.
Я рассчитываю цикл для строк в файле информации о продажах, пропускаетпоследняя строка / закрывает книгу раньше, когда есть еще один файл информации о продажах, я очень плохо знаком с SAP и VBS и не могу найти хороший способ, чтобы цикл завершил добавление информации в SAP перед закрытием текущей открытой информациифии затем откройте следующий.
Спасибо за любую помощь / ввод для решения этой проблемы
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
Set xlapp = CreateObject("Excel.Application")
Dim xlhlpwb
Dim xlhlpsh
Dim xlwb
Dim xlsh
Dim Rw
'Adress to Help-file, open and select sheet 1
Set xlhlpwb = xlapp.Workbooks.Open("C:\tmp\help-file_test.xlsx")
Set xlhlpsh = xlhlpwb.Sheets(1)
'Loop for adresses to invoice data
for n = 1 to xlapp.ActiveCell.SpecialCells(11).Row
m = 1
wbadress = xlhlpsh.Cells(n,m).Value
'Open Workbook with invoice info and set worksheet to use, "Rw" is used in SAP to help insert the info
Set xlwb = xlapp.Workbooks.Open("" & wbadress & "")
Set xlsh = xlwb.Sheets(1)
Rw = 0
'Fetch info per row in worksheet
for i = 2 to xlapp.ActiveCell.SpecialCells(11).Row
for j = 1 to xlapp.ActiveCell.SpecialCells(11).Column
if j=22 then ARTICLE = xlsh.Cells(i,j).Value
if j=23 then AMOUNT = xlsh.Cells(i,j).Value
if j=25 then INFO = xlsh.Cells(i,j).Value
next
'Add info to SAP transaction (va01-"create invoice")
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/ctxtRV45A-MABNR[1,"& Rw &"]").text = ARTICLE
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/txtRV45A-KWMENG[2,"& Rw &"]").text = AMOUNT
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/txtVBKD-BSTKD[27,"& Rw &"]").text = INFO
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/subSUBSCREEN_BUTTONS:SAPMV45A:4050/btnBT_POAN").press
'To make sure the right row in SAP is selected for next row in loop
Rw = 1
next
xlwb.Close True
Set xlsh = Nothing
Set xlwb = Nothing
next
Set xlwb = Nothing
Set xlsh = Nothing
xlhlpwb.Close True
Set xlhlpwb = Nothing
Set xlhlpsh = Nothing
xlapp.Quit
set xlapp = Nothing
Rw = 0