Текущее время: Пн, июл 21 2025, 18:14

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Вт, ноя 22 2011, 06:39 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
При использовании код приведенного ниже, при наличии записи цена подаваемая на вход BAPI игнорируется. Каким образом можно ввести цену из файла?

Коллеги, Приветствую.

Имеется следующий макрос пол ученый путем редактирования работающего примера по созданию заказа на поставку:
Code:
Dim functionCtrl As Object
Dim sapConnection As Object
Dim theFunc As Object
Dim PoNumber

Public Sub Create_PO()


Set functionCtrl = CreateObject("SAP.Functions")
Set sapConnection = functionCtrl.Connection
sapConnection.Client = 100
sapConnection.Language = "RU"


If sapConnection.logon(0, False) <> True Then
    MsgBox "No connection to R/3 System"
    Exit Sub
End If


Set theFunc = functionCtrl.Add("BAPI_CONTRACT_CREATE")


Dim poheader As Object
Dim poitems As Object
Dim poitemschedule As Object
Dim retMess As Object
Dim returnFunc As Boolean
Dim startzeil As Integer
Dim endcol As Integer
Dim the_name As String

Set poheader = theFunc.exports.Item("HEADER")
Set poitems = theFunc.tables.Item("ITEM")


poheader.Value("VENDOR") = Range("D2")
poheader.Value("PURCH_ORG") = 1000
poheader.Value("COMP_CODE") = 9001
poheader.Value("PUR_GROUP") = "ПНФ"
poheader.Value("DOC_TYPE") = "WK"

For i = 2 To 999
If Range("A" & i) <> "" Then
poitems.Rows.Add
poitems.Value(i - 1, "MATERIAL") = Range("A" & i)
poitems.Value(i - 1, "PLANT") = "1000"
poitems.Value(i - 1, "NET_PRICE") = Range("B" & i)
poitems.Value(i - 1, "ITEM_NO") = i - 1

End If
Next i

returnFunc = theFunc.call

PoNumber = theFunc.imports("PURCHASINGDOCUMENT")
Set retMess = theFunc.tables.Item("RETURN")

MsgBox retMess.Value(1, "MESSAGE")

End Sub


В результате выполнения, ошибка:
Ни одной инстанции типа объекта PurchasingContract не создано. Внешняя ссылка: # 1


Последний раз редактировалось dshtukin Пн, янв 30 2012, 10:55, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Вт, ноя 22 2011, 08:08 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
В транзакции me31k есть еще обязательные поля для заполнения прт создании контракта. может необходимо еще заполнить:
VPER_START - Начало срока действия
VPER_END KDATE - Конец времени выполнения
ACUM_VALUE - Договорная стоимость области заголовка на кажд. распределен.
:?:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Вт, ноя 22 2011, 08:26 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Добавил:

poheader.Value("VPER_START") = "20110101"
poheader.Value("VPER_END") = "20120101"
poheader.Value("ACUM_VALUE") = "99999999"

Результат тот же.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Вт, ноя 22 2011, 09:10 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
А если руками попробовать через тр me31k с абсолютно такими же данными? он его создаст?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Вт, ноя 22 2011, 09:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
можно попробовать получить минимальный рабочий тест в se37 для указанного ф/м и пробовать его


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Вт, ноя 22 2011, 10:17 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
trop написал(а):
можно попробовать получить минимальный рабочий тест в se37 для указанного ф/м и пробовать его


Попробовал.
С помощью SE37 устранил еще несколько обязательных полей однако ошибка "Ни одной инстанции типа объекта PurchasingContract не создано. Внешняя ссылка: # 1" осталась.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Вт, ноя 22 2011, 12:12 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Через se37 все работает с этими же данными?

PS. В SE37 больше никаких ошибок не пишет?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Ср, ноя 23 2011, 05:24 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Korvax написал:
Через se37 все работает с этими же данными?

PS. В SE37 больше никаких ошибок не пишет?


Пишет ошибку и предупреждение.

Вот вывод RETURN:
Code:
T ID                    NUM MESSAGE
E BAPI                 001 Ни одной инстанции типа объекта PurchasingContract не создано. Внешняя ссылка: # 1
W ME                   658 Определите также параметр интерфейса HEADERX


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Ср, ноя 23 2011, 06:18 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Не видно где Вы заполняете X-структуры/таблицы.(HEADERX/ITEMX)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Ср, ноя 23 2011, 07:57 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Besa написал:
Не видно где Вы заполняете X-структуры/таблицы.(HEADERX/ITEMX)

HEADERX/ITEMX - заполнять не пришлось.

1) Сделал вручную ME31K по тем же данным, выявил еще 2 обязательных поля.
2) Снова прогнал SE37.
3) В итоге работающий макрос создающий контракт:

Code:
Dim functionCtrl As Object
Dim sapConnection As Object
Dim theFunc As Object
Dim theFunc_c As Object
Dim PoNumber

Public Sub Create_PO()


Set functionCtrl = CreateObject("SAP.Functions")
Set sapConnection = functionCtrl.Connection
sapConnection.Client = 100
sapConnection.Language = "RU"


If sapConnection.logon(0, False) <> True Then
    MsgBox "No connection to R/3 System"
    Exit Sub
End If


Set theFunc = functionCtrl.Add("BAPI_CONTRACT_CREATE")


Dim poheader As Object
Dim poitems As Object
Dim poitemschedule As Object
Dim retMess As Object
Dim returnFunc As Boolean
Dim startzeil As Integer
Dim endcol As Integer
Dim the_name As String

Set poheader = theFunc.exports.Item("HEADER")
Set poitems = theFunc.tables.Item("ITEM")

poheader.Value("VENDOR") = Range("D2")
poheader.Value("PURCH_ORG") = 1000
poheader.Value("COMP_CODE") = 9001
poheader.Value("PUR_GROUP") = "ÏÍÔ"
poheader.Value("DOC_TYPE") = "WK"
poheader.Value("CURRENCY") = "RUB"
poheader.Value("DOC_DATE") = Range("E2")
poheader.Value("VPER_START") = "01.01.2011"
poheader.Value("VPER_END") = "01.01.2013"
poheader.Value("ACUM_VALUE") = "999999999"


For i = 2 To 999
If Range("A" & i) <> "" Then
poitems.Rows.Add
poitems.Value(i - 1, "MATERIAL") = Range("A" & i)
'poitems.Value(i - 1, "PLANT") = "1000"
poitems.Value(i - 1, "NET_PRICE") = Range("B" & i)
poitems.Value(i - 1, "INFO_UPD") = "C"
poitems.Value(i - 1, "ITEM_NO") = i - 1
End If
Next i

returnFunc = theFunc.call

Set theFunc_c = functionCtrl.Add("BAPI_TRANSACTION_COMMIT")
returnFunc_ = theFunc_c.call


PoNumber = theFunc.imports("PURCHASINGDOCUMENT")
Set retMess = theFunc.tables.Item("RETURN")

MsgBox retMess.Value(1, "MESSAGE")

End Sub


Всем Спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Ср, ноя 23 2011, 09:45 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Code:
PoNumber = theFunc.imports("PURCHASINGDOCUMENT")
Set retMess = theFunc.tables.Item("RETURN")

MsgBox retMess.Value(1, "MESSAGE")

End Sub

может все таки стоит выводить все сообщения, а не только первое?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Пн, янв 30 2012, 10:56 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
При использовании код приведенного ниже, при наличии записи цена подаваемая на вход BAPI игнорируется. Каким образом можно ввести цену из файла?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_CONTRACT_CREATE
СообщениеДобавлено: Пн, янв 30 2012, 13:27 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Могу ошибаться, но попробуйте заполнить CALCTYPE в ITEM..


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

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


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

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


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

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