+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средстваТема:
|- BAPI_PRICES_CONDITIONS




Автор Тема: BAPI_PRICES_CONDITIONS  (Прочитано 3323 раз)

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

Оффлайн ali

  • Newbie
  • *
  • Сообщений: 14
  • Reputation Power: 0
  • ali has no influence.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYears
BAPI_PRICES_CONDITIONS
« : Июль 06, 2012, 12:00:55 pm »
Всем доброго дня!

Не нашел на форуме обсуждений, связанной с этой бапишкой, поэтому решил создать новую тему. Очень надеюсь, что кто-нибудь сможет помочь с моей трудностью. Моя задача, состоит создавать виды условий в таблицы A995 и KONP и KONP используя BAPI_PRICES_CONDITIONS. Прочитал много индусских форумов, но ничего так и не нашел=)

Собственно проблема:
Если мы создаем условие вручную, используя транзакцию VK11. Использую в качестве образца уже существующее условие в таблице A995 и заполняем абсолютно по тому же ключу поля в VK11 меняя только дату начала срока действия записи условия(DATAB). Жмем сохранить, транзакция не затирают прошлую запись(что было бы очевидным, т.к ключ одиннаковый), она просто изменяет конец срока действия записи условия(DATBI) старой записи на иную дату ну и тем самым давая возможность создать новый вид условия. В итоге получаем 2 записи условий...с разными DATBI

Если же я это делаю сам, используя BAPI_PRICES_CONDITIONS, у меня бапишка ничего сама не делает, а просто затирает старую и на её место записывает новую запись, которую я пытаюсь создать. В этом и заключается вся ирония.

Возможно кто-то уже сталкивался с этим и знает как решить эту проблему...или может кто даст дельный совет. Буду всем очень благодарен за участие.

Оффлайн ali

  • Newbie
  • *
  • Сообщений: 14
  • Reputation Power: 0
  • ali has no influence.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYears
Re: BAPI_PRICES_CONDITIONS
« Ответ #1 : Июль 06, 2012, 12:09:38 pm »
Скидываю часть своего кода, чтобы легче было понять ситуацию, может кому и пригодится в будущем=)
По поводу commit-ов, это все есть, я просто скопировал основную часть кода

Код: You are not allowed to view links. Register or Login
  DATA:
   lt_head    TYPE STANDARD TABLE OF bapicondct,      " Bapistruktur für Konditionstabellen (entspricht COND_RECS)
   lt_konh    TYPE STANDARD TABLE OF bapicondhd,      " Bapistructure of KONH with english field names
   lt_konp    TYPE STANDARD TABLE OF bapicondit,      " Bapistructure of KONP with english field names
   lt_konm    TYPE STANDARD TABLE OF bapicondqs,      " Bapistructure of KONM with english field names
   lt_konw    TYPE STANDARD TABLE OF bapicondvs,      " Bapistructure of KONW with english field names
   lt_knumh   TYPE STANDARD TABLE OF bapiknumhs,      " Zuordnung KNUMHs alt - neu
   lt_return  TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.


* Создание новых тарифов(по всем 4-ым видам условий) по нажатию кнопки "Создать новый тариф"

*     Заголовок
APPEND INITIAL LINE TO lt_head ASSIGNING <fs_head>.
<fs_head>-operation   = '009'.                  " Операция - 009  Создание
<fs_head>-cond_usage  = 'A'.                    " Использование таблицы условий(KVEWE) - A для всех видов условий
<fs_head>-table_no    = '995'.                  " Таблица условий - A995
<fs_head>-applicatio  = 'V'.                    " Приложение(KAPPL) - V - для всех данных видов условий
<fs_head>-cond_type   = lv_kschl.               " Вид условия - м.б любой из 4её данных
<fs_head>-valid_to    = '99991231'.             " Конец срока действия(DATBI)
<fs_head>-valid_from  = '20120401'.             " Начало срока действия записи условия(DATAB)
<fs_head>-cond_no     = '$000000001'.           " Номер записи условия(KNUMH) - в данном случае, для создание нового - динамический номер

CONCATENATE lv_zzvstel lv_zzkunzs INTO <fs_head>-varkey.  " Ключ таблицы A995 - VARKEY
WRITE lv_zzextwg TO <fs_head>-varkey+14 LEFT-JUSTIFIED.
WRITE lv_kondm   TO <fs_head>-varkey+32 LEFT-JUSTIFIED.
WRITE lv_zzurlid TO <fs_head>-varkey+34 LEFT-JUSTIFIED.

*     Позиции
APPEND INITIAL LINE TO lt_konh ASSIGNING <fs_konh>.
<fs_konh>-operation  = '009'.                   " Операция - 009  Создание
<fs_konh>-cond_no    = '$000000001'.            " Номер записи условия(KNUMH)
<fs_konh>-cond_usage = 'A'.                     " Использование таблицы условий(KVEWE) - A для всех видов условий
<fs_konh>-table_no   = '995'.                   " Таблица условий - A995
<fs_konh>-applicatio = 'V'.                     " Приложение(KAPPL) - V - для всех данных видов условий
<fs_konh>-cond_type  = lv_kschl.                " Вид условия - м.б любой из 4её данных(KSCHL)
<fs_konh>-valid_from = '20120401'.              " Начало срока действия записи условия(DATAB)
<fs_konh>-valid_to   = '99991231'.              " Конец срока действия(DATBI)
<fs_konh>-created_by = sy-uname.
<fs_konh>-creat_date = sy-datum.

APPEND INITIAL LINE TO lt_konp ASSIGNING <fs_konp>.
<fs_konp>-operation  = '009'.                 " Операция - 009  Создание
<fs_konp>-cond_no    = '$000000001'.          " Номер записи условия(KNUMH) - динамический для создания

<fs_konp>-cond_count = '01'.                  " Порядковый номер условия(KOPOS)

<fs_konp>-applicatio = 'V'.                   " Приложение(KAPPL) - V - для всех данных видов условий
<fs_konp>-cond_type  = lv_kschl.              " Вид условия - м.б любой из 4её данных(KSCHL)

<fs_konp>-scaletype  = 'A'.                   " Вид шкалы(STFKZ)
<fs_konp>-scalebasin = space.                 " Индикатор: ссылочная величина(KZBZG)
<fs_konp>-scale_qty  = '0'.                   " Базисное количество шкалы для условий(KSTBM)
<fs_konp>-cond_p_unt = '1'.                   " Единица цены условия(KPEIN)
<fs_konp>-cond_unit  = 'Т'.                   " Единица измерения условия(KMEIN)
<fs_konp>-calctypcon = 'C'.                   " Правило расчета условий(KRECH)
<fs_konp>-cond_value = lv_kbetr.              " Сумма в валюте для BAPI (с 9 знаками после запятой)
<fs_konp>-condcurr   = lv_konwa.              " Единица условия (валюта или процентная ставка)


CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
  EXPORTING
    pi_initialmode = abap_true
  TABLES
    ti_bapicondct  = lt_head
    ti_bapicondhd  = lt_konh
    ti_bapicondit  = lt_konp
    ti_bapicondqs  = lt_konm
    ti_bapicondvs  = lt_konw
    to_bapiret2    = lt_return
    to_bapiknumhs  = lt_knumh
    to_mem_initial = pt_buffer
  EXCEPTIONS
    update_error   = 1
    OTHERS         = 2.
« Последнее редактирование: Июль 06, 2012, 12:16:05 pm от ali »