Автор Тема: Обновление видов условия  (Прочитано 9423 раз)

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

Оффлайн e.gorscov

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Обновление видов условия
« : Октябрь 08, 2012, 05:22:24 pm »
Добрый день,  уважаемые абаперы. Нужна помощь  начинающему.
Стоит  задача: написать  программу,  которая бы калькулировала продажные цены и сохраняла их  в виде условия a671-a673 поле kschl. Сами цены должны храниться в konp-kbetr. Программа то написана,  все считается хорошо. Однако возник вопрос,  каким ФМником могу обновлять  имеющиеся виды условий и сохранять  под ними новые цены, посчитанные. Будьте добры,  поделитесь  советом,  укажите светлый путь к нужному ФМ и не судите строго  за незнание.  :-[ :-[ :-[ :-[ :-[ :'(
Все пройдет, пройдет и это...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Обновление видов условия
« Ответ #1 : Октябрь 08, 2012, 06:01:05 pm »
You are not allowed to view links. Register or Login
Однако возник вопрос,  каким ФМником могу обновлять  имеющиеся виды условий и сохранять  под ними новые цены, посчитанные.
Если вы имеете в виду транзакцию ведения видов условий VK11/VK12/VK13 для заказа SD, то наверное пакетник можно написать, хотя если честно из вашего сообщения я не очень понял что считается правильно и что надо сохранять.

Оффлайн e.gorscov

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Обновление видов условия
« Ответ #2 : Октябрь 09, 2012, 11:30:48 am »
Цитировать
из вашего сообщения я не очень понял что считается правильно и что надо сохранять.
Простите. Считаются  формулы, в АЛВ все подсчитываю, а полученные данные нужно сохранять в виде заведенных видов условий,  я имею  в виду полученные в результате подсчетов продажные цены.
Все пройдет, пройдет и это...

Оффлайн DEAD_MOROZ

  • Newbie
  • *
  • Сообщений: 63
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Обновление видов условия
« Ответ #3 : Октябрь 09, 2012, 06:45:41 pm »
Сохранять условия можно, например, ФМ WV_CONDITION_POSTE.

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Обновление видов условия
« Ответ #4 : Октябрь 10, 2012, 12:51:39 pm »
хорошая функа BAPI_PRICES_CONDITIONS, в свое время пакетником VK11 блокировки (материала или заказа не помню) возникали, поэтому функой надежнее

Оффлайн e.gorscov

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Обновление видов условия
« Ответ #5 : Октябрь 15, 2012, 11:25:46 am »
You are not allowed to view links. Register or Login
хорошая функа BAPI_PRICES_CONDITIONS, в свое время пакетником VK11 блокировки (материала или заказа не помню) возникали, поэтому функой надежнее
спасибо за помощь. Подошло. Разобрался и  все работает. Осталось  доделать мелки штрихи, но это - просто  вопрос времени.
ФМник действительно  полезный
Все пройдет, пройдет и это...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Обновление видов условия
« Ответ #6 : Октябрь 15, 2012, 12:21:33 pm »
You are not allowed to view links. Register or Login
ФМник действительно  полезный
Ну тогда пример использования в моответствующий раздел положите, если не сложно.

Оффлайн e.gorscov

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Обновление видов условия
« Ответ #7 : Ноябрь 14, 2012, 12:05:49 pm »
Цитировать
Ну тогда пример использования в моответствующий раздел положите, если не сложно.
Да я с удовольствием выложу,  простите за задержку был  чуть  занят  другими делами,  вот  только  есть  одна неувязочка. ФМник конечно  же свое дело  делает,  но  не совсем так, как хотелось бы.  Поясню:  Дело  в том, чтобы  разработка, кроме стандартного обновления последней заведенной цены,  также могла и  переоценять  все старые партиии,  заводя попутно  новую  цену с новым knumh. (В случае оптовых продаж для сеноциально значимых товаров) И вот  тут как раз  неувязочка. Мой код  не проводит должных  изменений (не генерит новый knumh и не перееоценивает  старые партии...) Искал  много  по индусским форумам но  толкового не накопал,  даже уж  не знаю  как и  быть.
Код как и просили,  его  отрезок вернее...   
Код: You are not allowed to view links. Register or Login
  DATA:
        lv_message TYPE string,
        ls_bapicondct  TYPE bapicondct,
        ls_bapicondhd  TYPE bapicondhd,
        ls_bapicondit  TYPE bapicondit,
        lt_bapiret2    TYPE  TABLE OF bapiret2,
        lt_bapicondct  TYPE  TABLE OF bapicondct,
        lt_bapicondhd  TYPE  TABLE OF bapicondhd,
        lt_bapicondit  TYPE  TABLE OF bapicondit,
        lt_bapicondqs  TYPE  TABLE OF bapicondqs,
        lt_bapicondvs  TYPE  TABLE OF bapicondvs,
        lt_bapiknumhs  TYPE  TABLE OF bapiknumhs,
        lt_mem_initial TYPE  TABLE OF cnd_mem_initial.
*  BREAK-POINT.
  LOOP AT gt_price WHERE check EQ con_x.
    "----------------------------------------------------------BAPI Structure for condition table---->
    ls_bapicondct-operation    = '04'.
    ls_bapicondct-cond_usage   = 'A'.
    IF r6 EQ con_x.
      ls_bapicondct-table_no   = '671'.
    ELSEIF r7 EQ con_x.
      ls_bapicondct-table_no   = '672'.
    ELSEIF r3 EQ con_x.
      ls_bapicondct-table_no   = '673'.
    ENDIF.
    ls_bapicondct-cond_no      = wa_knumh.
    IF r1 EQ con_x
*      OR r2 EQ con_x
      .
      ls_bapicondct-cond_type    = 'VKP0'.
    ELSEIF r3 EQ con_x.
      ls_bapicondct-cond_type    = 'ZMAK'.
    ENDIF.
    ls_bapicondct-valid_from   = pa_data-low.
    ls_bapicondct-valid_to     = pa_data-high.
    ls_bapicondct-applicatio   = 'V'.
    APPEND ls_bapicondct TO lt_bapicondct.

    "----------------------------------------------------------KONH---->
    ls_bapicondhd-cond_no      = wa_knumh.
    ls_bapicondhd-cond_usage   = 'A'.
    IF r6 EQ con_x.
      ls_bapicondhd-table_no   = '671'.
    ELSEIF r7 EQ con_x.
      ls_bapicondhd-table_no   = '672'.
    ELSEIF r3 EQ con_x.
      ls_bapicondhd-table_no   = '673'.
    ENDIF.
    ls_bapicondhd-created_by   = sy-uname.
    ls_bapicondhd-creat_date   = sy-datum.
    ls_bapicondhd-applicatio   = 'V'.
    IF r1 EQ con_x
*      OR r2 EQ con_x
      .
      ls_bapicondhd-cond_type    = 'VKP0'.
    ELSEIF r3 EQ con_x.
      ls_bapicondhd-cond_type    = 'ZMAK'.
    ENDIF.
    ls_bapicondhd-valid_from   = pa_data-low.
    ls_bapicondhd-valid_to     = pa_data-high.
    APPEND ls_bapicondhd TO lt_bapicondhd.

    "----------------------------------------------------------KONP---->
    ls_bapicondit-cond_no      = wa_knumh.
    ls_bapicondit-cond_count   = gt_price-kopos.
    ls_bapicondit-applicatio   = 'V'.
    ls_bapicondit-scale_qty    = '0'.
    ls_bapicondit-unitmeasur   = gt_price-meins.
    IF r1 EQ con_x
*      OR r2 EQ con_x
      .
      ls_bapicondit-cond_type    = 'VKP0'.
    ELSEIF r3 EQ con_x.
      ls_bapicondit-cond_type    = 'ZMAK'.
    ENDIF.
    ls_bapicondit-scaletype    = 'A'.
    ls_bapicondit-calctypcon   = 'C'.
    ls_bapicondit-cond_value   = gt_price-pro_ts_nds.
    ls_bapicondit-condcurr     = 'MDL'.
    ls_bapicondit-condcurren   = 'MDL'.
    APPEND ls_bapicondit TO lt_bapicondit.
  ENDLOOP.

  CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
    TABLES
      ti_bapicondct  = lt_bapicondct
      ti_bapicondhd  = lt_bapicondhd
      ti_bapicondit  = lt_bapicondit
      ti_bapicondqs  = lt_bapicondqs
      ti_bapicondvs  = lt_bapicondvs
      to_bapiret2    = lt_bapiret2
      to_bapiknumhs  = lt_bapiknumhs
      to_mem_initial = lt_mem_initial
    EXCEPTIONS
      update_error   = 1
      OTHERS         = 2.
  IF sy-subrc <> 0.
    lv_message = 'Неудача'.
  ENDIF.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = con_x.
Все пройдет, пройдет и это...

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Обновление видов условия
« Ответ #8 : Ноябрь 14, 2012, 04:59:55 pm »
откопался и мой кусочек кода, кому пригодиться ...
когда эти условия создаешь генериться прога  RV13A_НОМЕР_таблицы собственно оттуда и дергаем процедуру
Код: You are not allowed to view links. Register or Login
DATA: it_konc TYPE TABLE OF bapicondct ,
          wa_konc TYPE bapicondct ,
          it_konh TYPE TABLE OF bapicondhd ,
          wa_konh TYPE bapicondhd ,
          it_koni TYPE TABLE OF bapicondit ,
          wa_koni TYPE bapicondit ,
          it_konq TYPE TABLE OF bapicondqs ,
          it_konv TYPE TABLE OF bapicondvs ,
          et_ret2 TYPE TABLE OF bapiret2   ,
          et_knum TYPE TABLE OF bapiknumhs ,
          it_memb TYPE TABLE OF cnd_mem_initial,
         tmp_komg TYPE komg,
       sourcename TYPE string,
           tab_no TYPE bapicondct-table_no.

  DATA : vakey TYPE  bapicondct-varkey.
  IF kschl IS NOT INITIAL.
    CLEAR: tmp_komg, vakey,wa_konc,it_konc,it_konh,wa_konh,it_koni,wa_koni,p_err.
*    if matkl is not INITIAL .
*      tab_no = '703'.
*    else.
    tab_no = '701'.
*    endif.
    CONCATENATE 'RV13A' tab_no INTO sourcename.
    tmp_komg-bukrs = p_bukrs.
    tmp_komg-matnr = matnr.
    TRY .
        PERFORM fill_vakey_from_komg IN PROGRAM (sourcename) USING vakey tmp_komg.
      CATCH  cx_sy_program_not_found.
    ENDTRY.
    IF vakey IS NOT INITIAL.
      wa_konc-cond_usage = 'A'.
      wa_konc-table_no   = tab_no.
      wa_konc-applicatio = 'M'.
      wa_konc-cond_type = kschl.
      wa_konc-varkey     = vakey.
      MOVE valid_from TO wa_konc-valid_from.
      MOVE valid_from TO wa_konh-valid_from.
      MOVE valid_to TO wa_konc-valid_to.
      MOVE valid_to TO wa_konh-valid_to.
      wa_konc-cond_no    = '$1'.
      APPEND wa_konc TO it_konc.

      wa_konh-cond_no    = '$1'.
      wa_konh-created_by = sy-uname.
      wa_konh-creat_date = sy-datum.
      wa_konh-cond_usage = 'A'.
      wa_konh-table_no   = tab_no.
      wa_konh-applicatio = 'M'.
      wa_konh-cond_type  = kschl.
      wa_konh-varkey     = vakey.
      APPEND wa_konh TO it_konh.

      wa_koni-cond_no    = '$1'.
      wa_koni-cond_count = '01'.
      wa_koni-applicatio = 'M'.
      wa_koni-cond_type  = kschl.
      wa_koni-scaletype  = 'A'.
      wa_koni-calctypcon = calctypcon.
      wa_koni-cond_value = kbetr.
      wa_koni-cond_unit = kmein.
      wa_koni-cond_p_unt = 1.
      APPEND wa_koni TO it_koni.

      CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
        TABLES
          ti_bapicondct  = it_konc
          ti_bapicondhd  = it_konh
          ti_bapicondit  = it_koni
          ti_bapicondqs  = it_konq
          ti_bapicondvs  = it_konv
          to_bapiret2    = et_ret2
          to_bapiknumhs  = et_knum
          to_mem_initial = it_memb
        EXCEPTIONS
          update_error   = 1
          OTHERS         = 2.
      IF sy-subrc <> 0.
        p_err = 'X'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
      ENDIF.
    ENDIF.
  ENDIF.

Оффлайн e.gorscov

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Обновление видов условия
« Ответ #9 : Ноябрь 15, 2012, 10:51:20 am »
а именно  по  поводу переоценивания всех  старых  существующих  партий для которых  имеются остатки,  никто  не сталкивался?? :'(
Все пройдет, пройдет и это...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 758
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Обновление видов условия
« Ответ #10 : Ноябрь 15, 2012, 02:02:44 pm »
You are not allowed to view links. Register or Login
а именно  по  поводу переоценивания всех  старых  существующих  партий для которых  имеются остатки,  никто  не сталкивался?? :'(
Ну руками, точнее программой, выбираешь остатки всех старых партий, хотя минуточку..не партий, а видов оценки. Партии к переоценке ни при чем.