Автор Тема: Задача массового изменения цен в инфозаписях поставщика.  (Прочитано 16208 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Добрый день!
Стоит следующая задача:
Необходимо массово менять цены в инфо-записях поставщика, данные о новых ценах будут поступать из файла в формате: материал, поставщик, цена, дата.  Сейчас это делается вручную.
Поскольку опыта маловато, пытался реализовать процедуру через макрос (LSMW), записью транзакции MEKP, попытка не удалась, поскольку в макрос не попадает процедура сохранения сделанных изменений.

Вопрос, как проще реализовать данную задачу? Опыта BAPI почти нет, только начинаю постигать, поэтому многое не понятно, прошу дать совет и толкнуть в нужном направлении.


Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
если понадобиться BAPI вот нам название BAPI_PRICES_CONDITIONS, только это функция ничего не проверяет, все проверки нужно будет сделать до ее вызова


Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
You are not allowed to view links. Register or Login
Поскольку опыта маловато, пытался реализовать процедуру через макрос (LSMW), записью транзакции MEKP, попытка не удалась, поскольку в макрос не попадает процедура сохранения сделанных изменений.
Честно, не пробовал (BAPI удобнее) но если Вам проще LSMW, то чего не попробывать писать макрос по me12
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Необходимо массово менять цены в инфо-записях поставщика
Кстати условие цены надо одно менять, например PB00 или там может быть группа условий?

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
You are not allowed to view links. Register or Login
Кстати условие цены надо одно менять, например PB00 или там может быть группа условий?
нет только "PB00"

Пакетным вводом через "me12" получилось, спасибо, не знаю почему не воспользовался ей сразу. 

Может кто знает, или даст ссылку на материал, типа введение "BAPI" с примерами.
То что нашел, не дали полного понимания с чего начать и что делать.


Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Ну примеров масса
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Ну примеров масса
You are not allowed to view links. Register or Login
В смысле примеров вызова BAPI-функций, а не именно BAPI-функции изменения условия для инфо-записи  ::)

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Гм... произошла небольшая неувязочка))), поскольку пока плохо знаю здешний БП, оказывается, заказ делается на основании контракта (а я заказ делал без ссылки на контракт поэтому и цена у меня из инфозаписи подтягивалась). Соответственно условие PB00 меняется в контракте по признакам "контракт", "позиция контракта".

По поводу работы с BAPI, поправьте меня если я ошибаюсь в технологии.
Итак,  технология или структура ФМ:
1. Нахожу подходящую функцию BAPI.
2. пишу функцию 
2.1Нахожу входящие параметры, насколько я понимаю блок "IMPORTING".
2.2. Определяю собственную структуру данных согласно входящим параметрам
2.3. Присваиваю входящим параметрам значения (из  источника).
3. Вызываю BAPI.
 Запускаю :)

Подскажите какой лучше "бапи" использовать для изменения цен к контракту, а лучше подскажите как их искать.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Подскажите какой лучше "бапи" использовать для изменения цен к контракту, а лучше подскажите как их искать.
Ну есть транзакция такая BAPI, ну это те, что глобальные ФМ, там можно начинать искать как для начала, а остальное.. ну система поставляется в исходных кодах на языке ABAP, идешь в функциональность изменения инфо-записи закупки и дальше.. уже изучаешь код на предмет поиска подходящих функций.

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
У меня лузерская проблема  :), сотворил я "нечто" (приведено ниже - написано для теста, чтобы было с чем ковыряться), захотел я посмотреть как работает, запустил, выпадает в ошибку "bapi_contract_getdetail not found"

Пробовал добавлять ФМ через  include bapi_contract_change.

Подскажите, что нужно сделать, сам догадаться не могу...   


Код: You are not allowed to view links. Register or Login
FUNCTION ZAT_CONTRCHPRICE .
*"----------------------------------------------------------------------
*"*"Ëîêàëüíûé èíòåðôåéñ:
*"----------------------------------------------------------------------


data: my_PURCHASINGDOCUMENT like BAPIMEOUTHEADER-NUMBER value '4600000130', "Íîìåð äîãîâîðà
      my_ITEM_DATA like  BAPIFLAG-BAPIFLAG value 'X',
      my_ACCOUNT_DATA like  BAPIFLAG-BAPIFLAG value SPACE,
      my_CONDITION_DATA like  BAPIFLAG-BAPIFLAG value SPACE,
      my_TEXT_DATA like  BAPIFLAG-BAPIFLAG value SPACE,
      my_PARTNER_DATA like  BAPIFLAG-BAPIFLAG value SPACE,
      my_RELEASE_DATA like  BAPIFLAG-BAPIFLAG value SPACE,                  "
      my_HEADER like  BAPIMEOUTHEADER,                                      "Çàãîëîâîê äîãîâîðà
      my_ITEM_CONDITION like BAPIMEOUTCONDITION occurs 10 ,
      ITEM_CONDITION like BAPIMEOUTCONDITION occurs 10.              "Çàïèñü óñëîâèÿ öåíû

call function 'bapi_contract_getdetail'
IMPORTING
  PURCHASINGDOCUMENT = my_PURCHASINGDOCUMENT
  iTEM_DATA = my_iTEM_DATA
  ACCOUNT_DATA = my_ACCOUNT_DATA
  CONDITION_DATA = my_condition_data
  tEXT_DATA = my_tEXT_DATA
  PARTNER_DATA = my_PARTNER_DATA
  RELEASE_DATA = my_RELEASE_DATA
tables
  my_ITEM_CONDITION = ITEM_CONDITION.


call function 'bapi_contract_change'
EXPORTING
 PURCHASINGDOCUMENT = my_PURCHASINGDOCUMENT
tables
  ITEM_CONDITION = my_ITEM_CONDITION.

endFUNCTION.
« Последнее редактирование: Май 26, 2011, 02:34:21 pm от АртемБар »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Задача массового изменения цен в инфозап&
« Ответ #10 : Май 26, 2011, 02:47:37 pm »
You are not allowed to view links. Register or Login
захотел я посмотреть как работает, запустил, выпадает в ошибку "bapi_contract_getdetail not found"
Ну да... имя ФМ, которое в скобках, надо писать большими буквами... как говорится это как раз то место, где размер имеет значение.

You are not allowed to view links. Register or Login
Пробовал добавлять ФМ через  include bapi_contract_change.
Мда.. может начать читать хотя бы с вот этой книжки:  You are not allowed to view links. Register or Login а то вы так далеко в своих проблемах зайдете....

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Спасибо за подсказку...  думал, регистр не имеет значения, специально, у более "опытного" человека спрашивал...
... книжка у меня уже такая есть, читаю ...
но ситуация как всегда... время мало, а сделать надо вчера  :'(

Спасибо, что не бросаете!

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 768
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
но ситуация как всегда... время мало, а сделать надо вчера  :'(
Ну я еще не встречал ситуации когда делать надо на завтра :-)

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Добрый день!
Прошу помощи, не понимаю, почему не получается изменить цену условия? 
Код ниже прошу сильно не "бить".., опыта маловато.
Код: You are not allowed to view links. Register or Login
UNCTION ZAT_CONTRCHPRICE.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"----------------------------------------------------------------------

data: " параметры для функций BAPI_CONTRACT_GETDETAIL
      my_ITEM_DATA      like  BAPIFLAG-BAPIFLAG value 'X',  "Активирует наполнение таблицы ITEM(строки контрактов)
      my_ACCOUNT_DATA   like  BAPIFLAG-BAPIFLAG value SPACE,
      my_CONDITION_DATA like  BAPIFLAG-BAPIFLAG value 'X',  "Активирует наполнение таблицы ITEM_CONDITION(строки условий, строк контрактов)
      my_TEXT_DATA        like  BAPIFLAG-BAPIFLAG value SPACE,
      my_PARTNER_DATA   like  BAPIFLAG-BAPIFLAG value SPACE,
      my_RELEASE_DATA   like  BAPIFLAG-BAPIFLAG value SPACE,                 
      " данные
      my_PURCHASINGDOCUMENT like BAPIMEOUTHEADER-NUMBER value '4600000130',     "Номер договора
      my_HEADER                       like BAPIMEOUTHEADER,                               "Заголовок договора
      my_ITEM_CONDITION          like BAPIMEOUTCONDITION occurs 300 with header line," Таблица условия цен
      LT_ITEM_CONDITION          like BAPIMEOUTCONDITION occurs 300 with header line," Строка таблицы условия цен
      my_ITEM_CONDITIONX        like BAPIMEOUTCONDITIONX occurs 1 with header line, "Таблица изменяемых записей
      my_ITEM                           like BAPIMEOUTITEM occurs 300 with header line,
      my_ITEM_COND_VALIDITY    like  BAPIMEOUTVALIDITY occurs 10,
      my_ITEM_COND_SCALE_VALUE like  BAPIMEOUTITEMSCALEVAL occurs 10,
      my_ITEM_COND_SCALE_QUAN  like  BAPIMEOUTITEMSCALEQUAN occurs 10,
      my_ITEM_TEXT             like  BAPIMEOUTITEMTEXT occurs 10.

* Функция просмотра деталей контракта
call function 'BAPI_CONTRACT_GETDETAIL'
Exporting
 PURCHASINGDOCUMENT = my_PURCHASINGDOCUMENT
 iTEM_DATA          = my_iTEM_DATA
 ACCOUNT_DATA       = my_ACCOUNT_DATA
 CONDITION_DATA     = my_condition_data
 tEXT_DATA          = my_tEXT_DATA
 PARTNER_DATA       = my_PARTNER_DATA
 RELEASE_DATA       = my_RELEASE_DATA
Importing
 HEADER             = my_HEADER
tables
 item                  = my_item
 ITEM_CONDITION        = my_ITEM_CONDITION
 ITEM_COND_VALIDITY    = my_ITEM_COND_VALIDITY
 ITEM_COND_SCALE_VALUE = my_ITEM_COND_SCALE_VALUE
 ITEM_COND_SCALE_QUAN  = my_ITEM_COND_SCALE_QUAN
 ITEM_TEXT             = my_ITEM_TEXT.
* Находим позицию договора по номеру материала без пометки на удаление.
read table           my_ITEM with key MATERIAL = '80170497' DELETE_IND = space.
* Находим строку таблицы условий для изменения.
read table my_ITEM_CONDITION with key item_no = my_ITEM-ITEM_NO.
*select * from my_ITEM_CONDITION into table lt_item_CONDITION where item_no = my_ITEM-ITEM_NO.
*loop at my_ITEM_CONDITION.
move-corresponding my_ITEM_CONDITION to lt_ITEM_CONDITION. " Копируем запись.
* Присваиваем новое значение цены.
lt_item_CONDITION-cond_VALUE = my_ITEM_CONDITION-cond_VALUE + 35. " Присваиваем новое значение.
append lt_ITEM_CONDITION. "Добавить запись
*endloop

"Задать признаки записи на изменение my_ITEM_CONDITION
my_ITEM_CONDITIONx-ITEM_NO    = my_ITEM_CONDITION-ITEM_NO.
my_ITEM_CONDITIONx-SERIAL_ID  = my_ITEM_CONDITION-SERIAL_ID.
my_ITEM_CONDITIONx-COND_COUNT = my_ITEM_CONDITION-COND_COUNT.
my_ITEM_CONDITIONx-cond_VALUE = 'X'.
append my_ITEM_CONDITIONx. "Добавить запись

* Функция изменения контракта.
call function 'BAPI_CONTRACT_CHANGE'
Exporting
 PURCHASINGDOCUMENT = my_PURCHASINGDOCUMENT
Tables
 ITEM_CONDITION     = lt_ITEM_CONDITION
 ITEM_CONDITIONX    = my_ITEM_CONDITIONX.

write my_ITEM_CONDITION-cond_VALUE.

endFUNCTION.


Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
после вызова BAPI
как правило требуется вызвать еще 1 BAPI "закрепляющую эффект"
чтобы изменнеия втсупили в силу

bapi_transaction_commit

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
NachDenken: спасибо, сейчас попробую.

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
NachDenken:

Добавил следующий код, результат тот же... ???

Код: You are not allowed to view links. Register or Login
*Применить изменения
call function 'BAPI_TRANSACTION_COMMIT'
importing
 RETURN = my_RETURN.

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
нужно было RETURN после вызова BAPI_CONTRACT_CHANGE посмотреть может там ошибки были указаны

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
я глянул в отладчике return, вроде содержание не "криминальное"... (хотя, как выглядят ошибки там, я не знаю)


вот что содержит return:
1   S   BAPI   002   Инстанция 4600000130 типа объекта PurchasingContract изменена.      000000   PurchasingContract   4600000130         HEADER   0   BSART   ATPCLNT100
2   S   06   023   Продукты-СТОИМОСТН 4600000130: изменено      000000   Продукты-СТОИМОСТН   4600000130         HEADER   0   BSART   ATPCLNT100
3   W   MEOUT   018   Для вывода документа закупки сообщение не создано      000000               HEADER   0   BSART   ATPCLNT100
______________________________






« Последнее редактирование: Июнь 02, 2011, 02:20:31 pm от АртемБар »

Оффлайн АртемБар

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
что странно, после выполнения ф-ии "BAPI_CONTRACT_CHANGE"
переменная lt_ITEM_CONDITION меняет свое значение на "пусто", а my_ITEM_CONDITIONX сохраняет значение, которое было до выполнения функции.