Обрадовались, рано. Проблема е решена.
Дело в том что при создании позиции с ценой по инфо-записи, в расчет условия встает строчка - "ZWST Предв. налог/расчет", а при создании без ИЗ такой строки нет и в дальнейшем невозможно произвести фактурирование входящей поставки.
Чтобы не создавать новую тему подниму старую.
Процедура описаия выше работает - но если на товар имеется инфо-запись, цена в заказ попадает из инфо-записи, а содержимое "NET_PRICE" -просто игнорируется. Можно ли как то заставить процедуру при создании брать подаваемую на вход цену вместо цены из инфо-записи?
Всем доброго времени суток.
Имеется следующий код:
Code:
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_PO_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("PO_HEADER")
Set poitems = theFunc.tables.Item("PO_ITEMS")
Set poitemschedule = theFunc.tables.Item("PO_ITEM_SCHEDULES")
poheader.Value("VENDOR") = Range("D2")
poheader.Value("PURCH_ORG") = 1000
poheader.Value("PUR_GROUP") = "ÏÍÔ"
poheader.Value("DOC_TYPE") = "NB"
For i = 2 To 999
If Range("A" & i) <> "" Then
poitems.Rows.Add
poitems.Value(i - 1, "PUR_MAT") = Range("A" & i)
poitems.Value(i - 1, "PLANT") = "1000"
poitems.Value(i - 1, "NET_PRICE") = Range("B" & i)
poitemschedule.Rows.Add
poitemschedule.Value(i - 1, "DELIV_DATE") = Range("E2")
poitemschedule.Value(i - 1, "QUANTITY") = Range("C" & i)
End If
Next i
returnFunc = theFunc.call
PoNumber = theFunc.imports("PURCHASEORDER")
Set retMess = theFunc.tables.Item("RETURN")
MsgBox retMess.Value(1, "MESSAGE")
End Sub
Однако по результатам его рвоты получаем заказ в котором количество партии поставки повторяется столько раз сколько позиций в заказе всего.
Ясно, что где то после poitems.Rows.Add
poitems.Value(i - 1, "PUR_MAT") = Range("A" & i)
poitems.Value(i - 1, "PLANT") = "1000"
poitems.Value(i - 1, "NET_PRICE") = Range("B" & i) должен следовать вызов получения номера заказа и номера позиции для посл едущего добавления poitemschedule.Rows.Add
poitemschedule.Value(i - 1, "DELIV_DATE") = Range("E2")
poitemschedule.Value(i - 1, "QUANTITY") = Range("C" & i)
Однако моих знаний АБАП уже не хватает
В интернете кроме примера с созданием заказа на 1 позицию ответа не обнаружено.
Заранее спасибо.