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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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