Текущее время: Вт, июл 29 2025, 11:30

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: BAPI_CONTRACT_CHANGE проблемы при обновлении цены
СообщениеДобавлено: Вт, ноя 20 2012, 10:23 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Добрый день, коллеги.

Возникла проблема при обновлении цены в контракте на закупку (ММ). Использую БАПИ BAPI_CONTRACT_CHANGE. Код не мой.
Ошибок при этом никаких. Подскажите кто знает какое-нибудь решение данной проблемы. Заранее спасибо.

Код ниже:

Code:
TABLES: a016.

DATA:
wa_a016 TYPE a016, "Kontraktposition
wa_konp TYPE konp, "Konditionen (Position)
t_016 TYPE TABLE OF a016,
item_cond_validity LIKE bapimeoutvalidity OCCURS 0 WITH HEADER LINE,
item_cond_validityx LIKE bapimeoutvalidityx OCCURS 0 WITH HEADER LINE,
item LIKE bapimeoutitem OCCURS 0 WITH HEADER LINE,
itemx LIKE bapimeoutitemx OCCURS 0 WITH HEADER LINE,
item_condition LIKE bapimeoutcondition OCCURS 0 WITH HEADER LINE,
item_conditionx LIKE bapimeoutconditionx OCCURS 0 WITH HEADER LINE,
h_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: h_evrtn_old TYPE ebeln,
      h_evertp_old TYPE ebelp.

SELECTION-SCREEN BEGIN OF BLOCK sel WITH FRAME TITLE text-sel.
SELECT-OPTIONS: s_evrtn FOR a016-evrtn DEFAULT '160412-005' OBLIGATORY,
                s_evrtp FOR a016-evrtp DEFAULT '0010'.
PARAMETERS: p_bis TYPE datum OBLIGATORY,
            p_akt TYPE datum DEFAULT sy-datum.
PARAMETERS: p_commit AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK sel.

START-OF-SELECTION.
  BREAK-POINT.

  SELECT * FROM a016 INTO TABLE t_016 WHERE evrtn IN s_evrtn AND evrtp IN s_evrtp
    AND datbi >= p_akt AND datab <= p_akt.

  SORT t_016 BY evrtn ASCENDING evrtp ASCENDING knumh DESCENDING.

  LOOP AT t_016 INTO wa_a016.

    IF h_evrtn_old <> wa_a016-evrtn AND NOT h_evrtn_old IS INITIAL.
      WRITE: ' -> Bapi aufgerufen'.
      PERFORM bapi_gueltigkeit USING h_evrtn_old.
      PERFORM bapi_refresh.

    ENDIF.
    h_evrtn_old = wa_a016-evrtn.

*    in die bapi parameter nur die werte für den jüngsten konditionssatz mitaufnehmen
    IF wa_a016-evrtp <> h_evertp_old.
      WRITE: / wa_a016-kschl, AT 10 wa_a016-evrtn, AT 30 wa_a016-evrtp, AT 75 wa_a016-datbi, '=>', p_bis, AT 110 wa_a016-datab, AT 130 wa_a016-knumh, 'in BAPIparam. aufgenommen'.

      item_cond_validity-item_no    = wa_a016-evrtp.
      item_cond_validity-serial_id  = wa_a016-knumh.
      item_cond_validity-valid_to   = p_bis.
      item_cond_validity-valid_from   = wa_a016-datab.
      APPEND item_cond_validity.

      MOVE-CORRESPONDING item_cond_validity TO item_cond_validityx.
      CLEAR: item_cond_validityx-valid_from.
      item_cond_validityx-valid_to = 'X'.
      item_cond_validityx-item_nox = 'X'.
      item_cond_validityx-serial_idx = 'X'.
      APPEND item_cond_validityx.

      MOVE-CORRESPONDING item_cond_validity TO item.
      APPEND item.

      MOVE-CORRESPONDING item_cond_validity TO itemx.
      itemx-item_nox = 'X'.
      APPEND itemx.

      MOVE-CORRESPONDING item_cond_validity TO item_condition.
      SELECT * FROM konp INTO CORRESPONDING FIELDS OF wa_konp
        WHERE knumh = wa_a016-knumh.
        ADD 1 TO item_condition-cond_count.
        item_condition-cond_type  = wa_konp-kschl.
*        item_condition-cond_value = wa_konp-kbetr.
        item_condition-currency   = wa_konp-konwa.
        item_condition-cond_value = 10000000.
        item_condition-change_id = 'U'.
        APPEND item_condition.
      ENDSELECT.

      MOVE-CORRESPONDING item_cond_validity TO item_conditionx.
      MOVE-CORRESPONDING item_condition TO item_conditionx.

      item_conditionx-item_nox = 'X'.
      item_conditionx-serial_idx = 'X'.
      item_conditionx-cond_countx = 'X'.
      item_conditionx-cond_type = 'X'.
      item_conditionx-cond_value = 'X'.
      item_conditionx-currency = 'X'.
      APPEND item_conditionx.

*     -------------------------
*     Новое условие
*      CLEAR: item_cond_validity, item_cond_validityx.
*
*      item_cond_validity-item_no    = wa_a016-evrtp.
*      item_cond_validity-serial_id  = 1.
*      item_cond_validity-valid_to   = '99991231'.
*      item_cond_validity-valid_from   = p_bis + 1.
*      APPEND item_cond_validity.
*
*      MOVE-CORRESPONDING item_cond_validity TO item_cond_validityx.
*      item_cond_validityx-valid_from = 'X'.
*      item_cond_validityx-valid_to = 'X'.
*      item_cond_validityx-item_nox = 'X'.
*      item_cond_validityx-serial_idx = 'X'.
*      APPEND item_cond_validityx.
*
*      CLEAR: item_condition, item_conditionx.
*
*      MOVE-CORRESPONDING item_cond_validity TO item_condition.
*      SELECT * FROM konp INTO CORRESPONDING FIELDS OF wa_konp
*        WHERE knumh = wa_a016-knumh.
*        ADD 1 TO item_condition-cond_count.
*        item_condition-cond_type  = wa_konp-kschl.
**        item_condition-cond_value = wa_konp-kbetr.
*        item_condition-currency   = wa_konp-konwa.
*        item_condition-cond_value = 13000000.
*        item_condition-change_id = 'I'.
*        APPEND item_condition.
*      ENDSELECT.
*
*      MOVE-CORRESPONDING item_cond_validity TO item_conditionx.
*      MOVE-CORRESPONDING item_condition TO item_conditionx.
*
*      item_conditionx-item_nox = 'X'.
*      item_conditionx-serial_idx = 'X'.
*      item_conditionx-cond_countx = 'X'.
*      item_conditionx-cond_type = 'X'.
*      item_conditionx-cond_value = 'X'.
*      item_conditionx-currency = 'X'.
*      APPEND item_conditionx.

    ENDIF. "wa_a016-evrtp <> h_evertp_old.

    h_evertp_old = wa_a016-evrtp.

  ENDLOOP.



  IF NOT h_evrtn_old IS INITIAL.
    WRITE: ' -> Bapi aufgerufen'.
    PERFORM bapi_gueltigkeit USING wa_a016-evrtn.
    PERFORM bapi_refresh.
  ENDIF.

END-OF-SELECTION.
*&----
*
*&      Form  BAPI_GUELTIGKEIT
*&----
*
*  text
*----
*
*-->  p1        text
*<--  p2        text
*----
*
FORM bapi_gueltigkeit USING h_evrtn.
  CALL FUNCTION 'BAPI_CONTRACT_CHANGE'
    EXPORTING
      purchasingdocument  = h_evrtn
    TABLES
      item                = item
      itemx               = itemx
      item_cond_validity  = item_cond_validity
      item_cond_validityx = item_cond_validityx
      item_condition      = item_condition
      item_conditionx     = item_conditionx
      return              = h_return.


  WRITE: /.
  LOOP AT h_return.
    CASE: h_return-type.
      WHEN 'S'. WRITE: 'Success'.
      WHEN 'E'. WRITE: 'Error'.
      WHEN 'W'. WRITE: 'Warning'.
      WHEN 'I'. WRITE: 'Info'.
      WHEN 'A'. WRITE: 'Abort'.
    ENDCASE.
    WRITE:  h_return-message.
  ENDLOOP.

  CLEAR: item_cond_validity, item_cond_validityx, h_return.
  REFRESH: item_cond_validity, item_cond_validityx, h_return.

  IF p_commit = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = 'X'
      IMPORTING
        return = h_return.
    .
    SKIP.
    IF sy-subrc = 0. WRITE 'Commit OK'. ELSE. WRITE: 'Fehlerim Commit'. ENDIF.
    LOOP AT h_return.
      CASE: h_return-type.
        WHEN 'S'. WRITE: 'Success'.
        WHEN 'E'. WRITE: 'Error'.
        WHEN 'W'. WRITE: 'Warning'.
        WHEN 'I'. WRITE: 'Info'.
        WHEN 'A'. WRITE: 'Abort'.
      ENDCASE.
      WRITE:  h_return-message.
    ENDLOOP.
    CLEAR: h_return. REFRESH: h_return.
  ELSE.
    ROLLBACK WORK.

  ENDIF.

  SKIP 2.

ENDFORM.                    " BAPI_GUELTIGKEIT

*&----
*
*&      Form  BAPI_REFRESH
*&----
*
*text
*----
*
*-->  p1        text
*<--  p2        text
*----
*
FORM bapi_refresh .

  CLEAR: item, itemx, item_cond_validity, item_cond_validityx, item_condition, item_conditionx.
  REFRESH:  item, itemx, item_cond_validity, item_cond_validityx, item_condition, item_conditionx.
  CLEAR: h_evertp_old.
  WRITE: 'BAPI Parameters refreshed'. SKIP 2.
ENDFORM.                    " BAPI_REFRESH

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_CONTRACT_CHANGE проблемы при обновлении цены  Тема решена
СообщениеДобавлено: Пт, ноя 23 2012, 07:12 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
FeBO-Sh написал:
Добрый день, коллеги.

Возникла проблема при обновлении цены в контракте на закупку (ММ). Использую БАПИ BAPI_CONTRACT_CHANGE. Код не мой.
Ошибок при этом никаких. Подскажите кто знает какое-нибудь решение данной проблемы. Заранее спасибо.

После обращения в SAP Active Global Support выяснилось что цену обновлять через бапи невозможно. Их ответ ниже:
Цитата:
The functionality of changing the validity to make it shorter is
unfortunately missing in BAPI_CONTRACT_CHANGE. The BAPI will always
create validity entries.

The issue will be addressed to our development department to be
considered for future releases. Please see Note 11 in this regard.

I am sorry that I could not give you a more positive answer this time.

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB