Posted: Fri Aug 03, 2012 4:20 pm Post subject: Как запретить одну схему калькуляции в mе23n
Добрый день господа абаперы.
Появилось по надобность проверить в калькуляции если есть этот признак к материалу .
И если есть то вставить калькуляцию . А если нет чтобы это калькуляция не вставилась.
Code:
DATA: lt_config TYPE STANDARD TABLE OF conf_out WITH HEADER LINE,
it_classification TYPE STANDARD TABLE OF bapi1003_alloc_values_char WITH HEADER LINE,
lt_allocvaluesnum TYPE STANDARD TABLE OF bapi1003_alloc_values_num WITH HEADER LINE,
lt_allocvaluescurr TYPE STANDARD TABLE OF bapi1003_alloc_values_curr WITH HEADER LINE,
return TYPE STANDARD TABLE OF bapiret2.
DATA: OBJECTKEY LIKE BAPI1003_KEY-OBJECT,
CLASSNUM LIKE BAPI1003_KEY-CLASSNUM.
DATA: menge type DEC10_2.
Data: va_kurs like tcurr-UKURS,
va_date(10),
va_priz_evr TYPE p DECIMALS 3,
va_ves_net TYPE p DECIMALS 3,
va_ob_ci TYPE p DECIMALS 3,
va_pr2 TYPE p DECIMALS 3,
lv_ntgew type p DECIMALS 3,
mess type string,
curs_error(1),
c_date like tcurr-GDATU.
DATA: t_xkomv TYPE komv_index.
LOOP AT it_classification.
lt_config-atnam = it_classification-charact.
lt_config-atbez = it_classification-charact_descr.
lt_config-atwrt = it_classification-value_neutral.
lt_config-atwtb = it_classification-value_char.
REPLACE ALL OCCURRENCES OF ',' in lt_config-atwtb WITH '.'. " Заменяем "," на "."
REPLACE ALL OCCURRENCES OF '%' in lt_config-atwtb WITH ''. " Заменяем "%" на пробел
APPEND lt_config.
ENDLOOP.
* READ TABLE xkomv WITH KEY kschl = 'Z003'.
* READ TABLE xkomv INTO t_xkomv INDEX sy-tabix + 1.
write sy-datum to va_date.
curs_error = ''.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
EXPORTING
input = va_date
IMPORTING
OUTPUT = c_date.
select SINGLE UKURS into va_kurs from tcurr where KURST = 'M' and FCURR = 'EUR' AND TCURR = 'MDL' and GDATU = c_date.
if sy-subrc <> 0.
CONCATENATE 'Ошибка получения курса на дату:' va_date into mess.
MESSAGE mess type 'I'.
curs_error = 'X'.
ENDIF.
READ TABLE lt_config WITH KEY atnam = 'Z_POSLINA_EDINITA'. " Изменить на необходмый признак
if sy-subrc eq 0 and curs_error <> 'X'.
READ TABLE xkomv WITH KEY kschl = 'Z008'.
va_priz_evr = ( lt_config-atwtb * va_kurs ) / 10000. "--- значения признака * на курс евро.
va_ves_net = komp-ntgew . "--- вес нетто
va_ob_ci = komp-lgumz * ( komp-mglme / 1000 ). "--- Объем заказа на поставку в складских ЕИ (Объем заказа в СЕИ)
va_pr2 = va_ves_net / va_ob_ci. "--- вес нетто / Объем заказа в СЕИ
xkomv-kbetr = ( va_priz_evr * va_pr2 ) / 10000 . "--- значение
xkomv-kwert = ( xkomv-kbetr * va_ob_ci ) / 100.
xkwert = xkomv-kwert / 100.
MODIFY xkomv INDEX sy-tabix.
else .
MESSAGE 'Данный материал не и меет признака Z_POSLINA_EDINITA' type 'I'.
READ TABLE xkomv WITH KEY kschl = 'Z008'.
delete xkomv INDEX sy-tabix.
ENDIF.
*} INSERT
и в конец она вставится пустой . А вроде бы я удаляю эту калькуляцию delete xkomv INDEX sy-tabix. . а она появляется _________________ Начинаюший ABAP-er
Age: 165 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Mon Aug 06, 2012 2:39 pm Post subject:
Добрый день!
Не очень ориентируюсь в русских названиях
Насколько понял, Вы этот код вставляете в формулу расчета цены для condition. Попробуйте его вставить не в формулу расчета, а в формулу prerequisition, в которой как раз определется условие, включать ли этот condition в итоговый расчет цены. Если при возврате из формулы sy-subrc <> 0, то не включать. _________________ Молитва - это запрос разработчику на изменение кода программы.
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.