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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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