Текущее время: Вс, июл 20 2025, 20:47

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Excel vba BAPI_PO_CREATE
СообщениеДобавлено: Пн, ноя 21 2011, 12:03 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Обрадовались, рано. Проблема е решена.
Дело в том что при создании позиции с ценой по инфо-записи, в расчет условия встает строчка - "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 позицию ответа не обнаружено.

Заранее спасибо.


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

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

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
попробуйте так...
Code:
For i = 2 To 999
If Range("A" & i) <> "" Then
  if ((i == 2) or (Range("A" & i) <> Range("A" & i-1))) 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)
  else
    poitemschedule.Rows.Add
    poitemschedule.Value(i - 1, "DELIV_DATE") = Range("E2")
    poitemschedule.Value(i - 1, "QUANTITY") = Range("C" & i)
  end if
End If
Next i


Ps: но собственно если названия у вас сгруппированы и перечислены по порядку, а не в разброс..


Последний раз редактировалось Korvax Пн, ноя 21 2011, 12:43, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Excel vba BAPI_PO_CREATE
СообщениеДобавлено: Пн, ноя 21 2011, 12:30 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
BAPI_PO_CREATE я не использую. Используйте бапи BAPI_PO_CREATE1, возможно эти проблемы отпадут.
http://sapboard.ru/forum/viewtopic.php?f=13&t=61242&start=0


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

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Korvax написал:
попробуйте так...
Code:
For i = 2 To 999
If Range("A" & i) <> "" Then
  if ((i == 2) or (Range("A" & i) <> Range("A" & i-1))) 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)
  else
    poitemschedule.Rows.Add
    poitemschedule.Value(i - 1, "DELIV_DATE") = Range("E2")
    poitemschedule.Value(i - 1, "QUANTITY") = Range("C" & i)
  end if
End If
Next i


Ps: но собственно если названия у вас сгруппированы и перечислены по порядку, а не в разброс..


Попробовать можно , но проблему это не решит. Она (проблема) заключается не в том что имеются повторяющиеся материалы а в том, что poitemschedule.Rows.Add прописывает количество без привязку к позиции.


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

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Besa написал:
BAPI_PO_CREATE я не использую. Используйте бапи BAPI_PO_CREATE1, возможно эти проблемы отпадут.
http://sapboard.ru/forum/viewtopic.php?f=13&t=61242&start=0


Поиск по форму юзал BAPI_PO_CREATE1 - видел но не могу заставить ее работать в VBA по аналогии с BAPI_PO_CREATE.


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

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Значит надо либо нумеровать позиции руками, либо.. (а может он их сам уже пронумеровал)..
Code:
For i = 2 To 999
If Range("A" & i) <> "" Then
  if ((i == 2) or (Range("A" & i) <> Range("A" & i-1))) 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)
    posn = poitems.Value(i - 1, "PO_ITEM")   
  end if
    poitemschedule.Rows.Add
    poitemschedule.Value(i - 1, "PO_ITEM") = posn
    poitemschedule.Value(i - 1, "DELIV_DATE") = Range("E2")
    poitemschedule.Value(i - 1, "QUANTITY") = Range("C" & i)
End If
Next i


Ps. Сильно не бейте.. ))


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

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
posn = poitems.Value(i - 1, "PO_ITEM") - всегда = 0000

Тут видио после добавление poitems, перед добавлением schedule нужен какой то то "коммит", чтобы получить номер позиции, о вот как это сделать ?


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

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
Ну как вариант ручками заполнять этот.. "PO_ITEM"..


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

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Korvax написал:
Ну как вариант ручками заполнять этот.. "PO_ITEM"..


Да!!!
Вот так работает:

Code:
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)
poitems.Value(i - 1, "PO_ITEM") = Mid("00000" & i - 1 & "0", 4)

poitemschedule.Rows.Add
poitemschedule.Value(i - 1, "PO_ITEM") = Mid("00000" & i - 1 & "0", 4)
poitemschedule.Value(i - 1, "DELIV_DATE") = Range("E2")
poitemschedule.Value(i - 1, "QUANTITY") = Range("C" & i)
End If
Next i


Спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Excel vba BAPI_PO_CREATE
СообщениеДобавлено: Чт, янв 26 2012, 12:06 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Чтобы не создавать новую тему подниму старую.

Процедура описаия выше работает - но если на товар имеется инфо-запись, цена в заказ попадает из инфо-записи, а содержимое "NET_PRICE" -просто игнорируется. Можно ли как то заставить процедуру при создании брать подаваемую на вход цену вместо цены из инфо-записи?


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

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


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

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

А как это уточнить ?


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

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
dshtukin написал(а):
А как это уточнить ?

IMG => Сбыт => Основные функции => расчет цены => управление расчетом цены => определение видов условий (pr00)


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

Зарегистрирован:
Ср, июн 29 2011, 13:18
Сообщения: 66
Korvax написал:
dshtukin написал(а):
А как это уточнить ?

IMG => Сбыт => Основные функции => расчет цены => управление расчетом цены => определение видов условий (pr00)


PB00 - Ввод вручную = Без ограничений.


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

Зарегистрирован:
Пн, сен 19 2011, 13:29
Сообщения: 492
Пол: Мужской
PB00 ? Посмотрите все таки условие цены, которое PR00 . :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.

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


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

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


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

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