Joined: 21 Nov 2008 Posts: 25 Location: СПб - Валлдорф
Posted: Tue Nov 25, 2008 12:47 pm Post subject: подсчет недоставленного количества товара для SalesOrder
Честно говоря не совсем понимаю в какой раздел помещать здесь подобные предметные вопросы, потому задаю здесь.
@админам: переместите тему куда надо, плз.
Вопрос: Нужно для SalesOrder вычислить количество недопоставленного товара. Я нашел, что для этого можно использовать FM RV_SCHEDULE_CHECK_DELIVERIES. (Вот здесь пример описан, как использовать и что должно получится). Судя по техническому хелпу в транзакции va03 остаточное кол-во должно лежать в поле VSMNG, судя по той ссылке кол-во должно находится в поле OLFMNG. Но у меня почему-то в поле VSMNG всегда 0 стоит, хотя заказ точно не выполнен. а вот в OLFMNG находится число близкое к правде.
Есть ли у кого опыт использования этого FM, кто может подсказать как оно все же на самом деле?
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Tue Nov 25, 2008 1:16 pm Post subject:
Я бы посоветовал использовать BAPI_SALESORDER_GETSTATUS. Вы одновременно получаете информацию по всем позициям со статусами, требуемым и уже поставленным количеством. После этого только нужно прочитать выходную таблицу с нужным номером позиции.
Не знаю насчет ФМа, но возможно вам поможет следущее:
Quote:
Заявлено – для каждого Кода МТР (строки отчета) выполняются следующие вычисления:
Суммируются все количества по полю VBEP-WMENG, удовлетворяющие ограничению при объединении таблиц VBAP и VBEP:
• VBEP-EDATU - находится в периодах (месяцах), указанных на экране выбора.
• Все остальные ограничения на экране выбора
Количество, доставленное вовремя – для каждого Кода МТР (строки отчета) выполняю-ся следующие вычисления:
1) По полученным записям, используемым для вычисления поля «Заявлено», по ключе-вому полю VBAP-VBELN – выбираются записи из VBFA-VBELV, ограниченные зна-чением VBFA-VBTYP_N=J.
2) Далее из полученных записей, по ключевому полю VBFA-VBELN выбираются записи из таблицы VBUK-VBELN, ограниченные значением VBUK-WBSTK=C.
3) Полученные из VBUK записи, ограничиваются значениями таблиц LIKP и LIPS по следующим полям:
• Из таблицы LIKP, по ключу LIKP-VBELN=VBUK-VBELN выбираются записи, для которых значение поля LIKP-LFDAT (дата поставки) не больше, чем ограничение по ме-сяцам, введенное на экране выбора отчета. Т.е. дата постав-ки не может быть больше последнего месяца поставки.
• Ограничение записей в LIKP - подставляется в LIPS, по ключу LIPS-VBELN=LIKP-VBELN и LIPS-POSNR=VBFA-POSNN (остальная часть ключа, должна быть известна по предыдущим вычислениям). Выбираются все количества в поле LIPS-LFIMG и суммируются.
Далее Вы из количества заявленного вычитаете количество доставленое и получаете искомое Вами недопоставленое количество...
The below are the values updated in infostructures
Open sales order credit value (S066-OEIKW)
Open delivery credit value (S067-OLIKW)
Open billing document credit value (S067-OFAKW)
The open sales order values are updated in S066 in fix time units. The time unit can be day, week or month. You can set this in Customizing transaction OMO1. For the update, the system multiplies the open (not yet delivered) confirmed quantity of the schedule line (VBEPD-OLFMNG) with the credit price (VBAP-CMPRE or VBAP-CMPRE_FLT) you can maintain Synchnronous Updating.
Joined: 21 Nov 2008 Posts: 25 Location: СПб - Валлдорф
Posted: Tue Nov 25, 2008 2:56 pm Post subject:
спасибо всем за помощь. Буду разбираться с многообразием
Но вот еще один вопрос, а можно ли пользоваться BAPI_SALESORDER_GETSTATUS для вычисления того же для Плана Поставки (Schedule Agreement)? Судя по названию fm врядли ..
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Tue Nov 25, 2008 7:32 pm Post subject:
Я использовал код из SAPMV45A (подпрограмма VAPMA_SELECT) для вычисления закрытого количества:
Code:
SELECT VBTYP_N PLMIN RFMNG_FLT RFMNG_FLO FROM VBFA
INTO (VBFA-VBTYP_N, VBFA-PLMIN,
VBFA-RFMNG_FLT, VBFA-RFMNG_FLO)
WHERE VBELV EQ VAPMA-VBELN
AND POSNV EQ VAPMA-POSNR
AND VBELN NE VBAK-VBELN
AND PLMIN IN (CHAR_PLUS, CHAR-).
* fakturierte Menge nicht bercksichtigen sondern nur
* bereits abgerufene
IF VBFA-VBTYP_N NA VBTYP_FAKT.
IF VBFA-PLMIN EQ CHAR_PLUS.
DA_REFMENG = DA_REFMENG + VBFA-RFMNG_FLT.
DA_REFMENGV = DA_REFMENGV + VBFA-RFMNG_FLO.
ELSE.
DA_REFMENG = DA_REFMENG - VBFA-RFMNG_FLT.
DA_REFMENGV = DA_REFMENGV - VBFA-RFMNG_FLO.
ENDIF.
ENDIF.
ENDSELECT.
Затем вычитаешь полученное количество из соответствующего поля VBAP и все _________________ С уважением,
Удав.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.