Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 28
1

VBA + SAP

20.07.2015, 12:47. Показов 4555. Ответов 1
Метки нет (Все метки)

День добрый.
Есть код который импортирует данные с Excel в SAP.
Примерно такой в упрощенном виде (у меня на циклах)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Sub CallSap()
 
Dim sap, rfc As Object ' SAP Object model
Dim auart, vkorg, vtweg, spart, kunnr, kunwe, items As Object ' Export Parameters
Dim vbeln, ermsg As Object ' Import parameters
 
Set sap = CreateObject("SAP.Functions.Unicode")
sap.Connection.System = ""
sap.Connection.Client = ""
sap.Connection.user = ""
sap.Connection.Password = ""
sap.Connection.Language = ""
 
If sap.Connection.logon(0, False) <> True Then
  MsgBox "Logon failed!"
  Exit Sub
End If
 
Set rfc = sap.Add("TEST")
 
rfc.exports("IV_AUART") = "Test"
rfc.exports("IV_VKORG") = "Test"
rfc.exports("IV_VTWEG") = "Test"
rfc.exports("IV_SPART") = "Test"
rfc.exports("IV_KUNNR") = Cells(6, 2)
Set items = rfc.tables("TB_ITEMS")
 
' Ship-to 1
rfc.exports("IV_KUNWE") = Cells(9, 2)
items.Rows.Add
items.Value(1, "MATNR") = Cells(10, 1)
items.Value(1, "KWMENG") = Cells(10, 2)
items.Value(1, "KBETR") = Cells(10, 7)
items.Value(1, "WERKS") = Cells(10, 8)
 
If rfc.Call = True Then
  Set vbeln = rfc.imports("EV_VBELN")
  Set ermsg = rfc.imports("EV_ERMSG")
  If vbeln.Value = "" Then
    MsgBox "Function returned error!" + ermsg.Value
  Else
    MsgBox "Quotation " + vbeln.Value + " created succesfully"
  End If
Else
  MsgBox "Function call failed!"
End If
 
' Ship-to 2
rfc.exports("IV_KUNWE") = Cells(9, 3)
 
items.Rows.Add
 
items.Value(1, "MATNR") = Cells(10, 1)
items.Value(1, "KWMENG") = Cells(10, 3)
items.Value(1, "KBETR") = Cells(10, 7)
items.Value(1, "WERKS") = Cells(10, 8)
 
items.Rows.Add
 
items.Value(2, "MATNR") = Cells(11, 1)
items.Value(2, "KWMENG") = Cells(11, 2)
items.Value(2, "KBETR") = Cells(11, 7)
items.Value(2, "WERKS") = Cells(11, 8)
 
If rfc.Call = True Then
  Set vbeln = rfc.imports("EV_VBELN")
  Set ermsg = rfc.imports("EV_ERMSG")
  If vbeln.Value = "" Then
    MsgBox "Function returned error!" + ermsg.Value
  Else
    MsgBox "Quotation " + vbeln.Value + " created succesfully"
  End If
Else
  MsgBox "Function call failed!"
End If
 
sap.Connection.Logoff
    
End Sub
Код создает два документа - отмечены как Ship-to 1 и 2
Чехарда с пунктом items.Rows.Add
Он отрабатывает неверно. Если в первом Ship-to 1 две строчки нужно добавлять, а в второй одну - то во втором он также пытается влепить две вместо одной и напрочь требует убрать items.Rows.Add, иначе не добавляет. А если убрать - то он и дает плюс одну строчку с первого Ship-to.

Если же впервой одна строчка, а во второй две - все нормально отрабатывает с наличием items.Rows.Add
Проблема в том что количество срочек постоянно меняется в цикле как и кол-во создаваемых документов и выстраивать сперва по кол-ву добавляемых строчек, а потом заносить - вариант плохой.
Set rfc = Nothing и Set items=Nothing перед созданием следующего документа не подходит.

Подскажите, как обнулить объекты перед новой передачей в SAP
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2015, 12:47
Ответы с готовыми решениями:

VBA и SAP
Всем привет! У меня на работе стоит SAP и я там делаю много повторяющихся действий. Кто-нибудь...

Вызов транзакции в SAP с использованием языка VBA
Макрос запускает систему, но не вызывает транзакцию, почему? Function...

VBA открывает файлы XLS экспортированные из SAP
Всем привет! Проблема следующая: вручную выгружаю из SAP отчет, который сохраняется в &quot;псевдо&quot;...

Как средствами vba подключиться к sap и выполнять транзакции с данными из файла excel
Как средствами vba подключиться к sap, если можно напишите пример. Нужно выполнять транзакции с...

1
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 28
15.09.2015, 22:23  [ТС] 2
Зы. Для истории вопрос решился только повторной авторизацией.
Авторизовались - создали документ - отключились.
И по новому.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2015, 22:23

Купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко
Поздравьте меня я купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко, могу процитировать...

Sap bex: работа с окнами (получение данных)
Добрый день! на работе ежедневно нужно выгружать отчеты через bw. сначала нажно запустить...

VBA парсер выдает ошибку vba excel Run-time error '-2147319783 (80028019) и "microsoft ожидает пока другое приложение за
Добрый день, делаю свой первый парсер. Выдает ошибку vba excel Run-time error '-2147319783...

VBA Составить функцию VBA
помогите пожалуйста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.