SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Как запретить одну схему калькуляции в mе23n



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
sergiucz
Специалист
Специалист


Age: 41
Joined: 17 Feb 2012
Posts: 62

PostPosted: Fri Aug 03, 2012 4:20 pm    Post subject: Как запретить одну схему калькуляции в mе23n Reply with quote

Добрый день господа абаперы.
Появилось по надобность проверить в калькуляции если есть этот признак к материалу .
И если есть то вставить калькуляцию . А если нет чтобы это калькуляция не вставилась.

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.

  OBJECTKEY = komp-matnr.
  CLASSNUM  = komp-matkl.

 CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'    " Находим все признаки к материалу
   EXPORTING
     objectkey              = OBJECTKEY
     objecttable            = 'MARAT'
     classnum               = CLASSNUM
     classtype              = '026'
   TABLES
      allocvaluesnum  = lt_allocvaluesnum
      allocvalueschar = it_classification
      allocvaluescurr = lt_allocvaluescurr
      return          = return.

    CHECK not it_classification[] is INITIAL.

  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
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 80
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Mon Aug 06, 2012 2:39 pm    Post subject: Reply with quote

Добрый день!
Не очень ориентируюсь в русских названиях Smile
Насколько понял, Вы этот код вставляете в формулу расчета цены для condition. Попробуйте его вставить не в формулу расчета, а в формулу prerequisition, в которой как раз определется условие, включать ли этот condition в итоговый расчет цены. Если при возврате из формулы sy-subrc <> 0, то не включать.

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.