Текущее время: Пн, июл 28 2025, 00:18

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Изменение заказа ТОРО
СообщениеДобавлено: Пт, мар 04 2011, 14:43 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 03 2010, 11:15
Сообщения: 78
Всем доброго времени суток.
Столкнулся с следующей задачей:
В заказе ТОРО при удалении позиции (RESB-XLOEK = 'X' - Позиция удалена) на вкладке "Компоненты" необходимо запустить выполнение BAPI.
Пытался реализовать в BADI WORKORDER_UPDATE. Но она отрабатывает до выставления флага удаления.
Определение IWO1_ORDER_BADI (Заказ ТОРО, сервисный заказ и заказ на восстановление) отрабатывает на любое изменение в заказе. Но тоже до выставления флага.

Подскажите, в какую сторону копать?
Спасибо


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Пт, мар 04 2011, 14:49 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Была задача изменить сроки сообщения при сохранении заказа ТОРО. BADI WORKORDER_UPDATE, как Вы написали, срабатывает рано и для моего случая. Решал через ФМ обновления с отложенным запуском.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Пт, мар 04 2011, 14:52 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 03 2010, 11:15
Сообщения: 78
Besa написал:
Была задача изменить сроки сообщения при сохранении заказа ТОРО. BADI WORKORDER_UPDATE, как Вы написали, срабатывает рано и для моего случая. Решал через ФМ обновления с отложенным запуском.


Можно поподробнее?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Сб, мар 05 2011, 14:10 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 03 2010, 11:15
Сообщения: 78
Создал Enhancment в BEFORE_UPDATE ДО выполнения стандартного кода
ENHANCEMENT 2 ZMM_PR_DEL_ENHANCM. "active version
Code:
*Здесь вызываем отложенный ФМ. Передаем IT_HEADER-RSNUM, IT_COMPONENT
  DATA: LV_RSNUM TYPE RSNUM,
        LS_HEADER TYPE CAUFVDB.

LOOP AT IT_HEADER INTO LS_HEADER.
    LV_RSNUM = LS_HEADER-RSNUM.
ENDLOOP.

CALL FUNCTION 'Z_MM_PR_DELETE' IN UPDATE TASK
    EXPORTING
      IV_RSNUM          = LV_RSNUM
    TABLES
      IT_COMP_OLD       = IT_COMPONENT
            .
ENDENHANCEMENT.


ФМ Z_MM_PR_DELETE - в свойствах: Модуль обновления , ЗапускОткладыв
Текст:
Code:
...
CALL FUNCTION 'BAPI_REQUISITION_DELETE' "Удаляем
        EXPORTING
          NUMBER                            = LS_STR-BANFN
        TABLES
          REQUISITION_ITEMS_TO_DELETE       = I_DELETE
          RETURN                            = GT_MESSAGE1
                .
...

Дамп "Invalid ROLLBACK WORK in an update function module."

Code:
FUNCTION TRANSACTION_END.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(TRANSACTION_ID) LIKE  ARFCTID STRUCTURE  ARFCTID
*"----------------------------------------------------------------------

IF OWNER_OF_TRANSACTION = TRANSACTION_ID.
  IF STATUS_OF_TRANSACTION = COMMIT_WORK.
    COMMIT WORK.
  ELSE.
    ROLLBACK WORK. <------------------------------- Здесь валится в дамп
  ENDIF.
  CLEAR OWNER_OF_TRANSACTION.           "release transaction
  STATUS_OF_TRANSACTION = UNDEFINED.

* same like in BAPI_Transaction_Commit/Rollback  AD05092001
  CALL FUNCTION 'BUFFER_REFRESH_ALL'.             "AD05092001

ENDIF.
ENDFUNCTION.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Пн, мар 07 2011, 07:37 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
csander, все правильно делаете, только вот эти бапи (BAPI_REQUISITION*) для заявок, они, по-моему, какие то не продуманные что-ли :? . Один из многих недостатков это как раз таки COMMIT WORK/ROLLBACK WORK внутри бапи. В ФМе обновление это конечно не приемлемо. Используйте бапи BAPI_PR_CHANGE.
Code:
data: r like BAPIRET2 OCCURS 0 WITH HEADER LINE.
data: P like BAPIMEREQITEMIMP OCCURS 0 WITH HEADER LINE.
data: PX like BAPIMEREQITEMX OCCURS 0 WITH HEADER LINE.

p-PREQ_ITEM = '00010'.
p-DELETE_IND = 'X'.
px-PREQ_ITEM = '00010'.
px-DELETE_IND = 'X'.
append p.
append px.
BREAK-POINT.
CALL FUNCTION 'BAPI_PR_CHANGE'
  EXPORTING
    NUMBER  = '3000000000'
  TABLES
    RETURN  = r
    PRITEM  = p
    PRITEMX = px.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Пн, мар 07 2011, 11:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Besa написал:
только вот эти бапи (BAPI_REQUISITION*) для заявок, они, по-моему, какие то не продуманные что-ли :? . Один из многих недостатков это как раз таки COMMIT WORK/ROLLBACK WORK внутри бапи.


Это только в группе функций MEWF такое (BAPI_REQUISITION_RELEASE*/RESET*).
А в группе функция MEWQ всё нормально.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Пн, мар 07 2011, 11:48 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
sibrin написал:
Besa написал:
только вот эти бапи (BAPI_REQUISITION*) для заявок, они, по-моему, какие то не продуманные что-ли :? . Один из многих недостатков это как раз таки COMMIT WORK/ROLLBACK WORK внутри бапи.


Это только в группе функций MEWF такое (BAPI_REQUISITION_RELEASE*/RESET*).
А в группе функция MEWQ всё нормально.

А не на оборот?

Да, с BAPI_REQUISITION* погорячился, в бапишках BAPI_REQUISITION_RELEASE/RESET вроде норм, в остальных нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Пн, мар 07 2011, 11:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Besa написал:
в бапишках BAPI_REQUISITION_RELEASE/RESET вроде норм, в остальных нет.

Да, точно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Ср, мар 09 2011, 11:48 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 03 2010, 11:15
Сообщения: 78
Besa написал:
csander, все правильно делаете, только вот эти бапи (BAPI_REQUISITION*) для заявок, они, по-моему, какие то не продуманные что-ли :? . Один из многих недостатков это как раз таки COMMIT WORK/ROLLBACK WORK внутри бапи. В ФМе обновление это конечно не приемлемо. Используйте бапи BAPI_PR_CHANGE.
Code:
data: r like BAPIRET2 OCCURS 0 WITH HEADER LINE.
data: P like BAPIMEREQITEMIMP OCCURS 0 WITH HEADER LINE.
data: PX like BAPIMEREQITEMX OCCURS 0 WITH HEADER LINE.

p-PREQ_ITEM = '00010'.
p-DELETE_IND = 'X'.
px-PREQ_ITEM = '00010'.
px-DELETE_IND = 'X'.
append p.
append px.
BREAK-POINT.
CALL FUNCTION 'BAPI_PR_CHANGE'
  EXPORTING
    NUMBER  = '3000000000'
  TABLES
    RETURN  = r
    PRITEM  = p
    PRITEMX = px.


Заменил BAPI_REQUISITION_DELETE на BAPI_PR_CHANGE.
Получаю следующий дамп.
Code:
Краткий текст
    The current application triggered a termination with a short dump.

Что произошло?
    The current application program detected a situation which really
    should not occur. Therefore, a termination with a short dump was
    triggered on purpose by the key word MESSAGE (type X).

Что Вы можете сделать?
    Note down which actions and inputs caused the error.

    To process the problem further, contact you SAP system
    administrator.

    Using Transaction ST22 for ABAP Dump Analysis, you can look
    at and manage termination messages, and you can also
    keep them for a long time.

Анализ ошибки
    Short text of error message:
    Вложенный вызов PERFORM ON COMMIT: NESTED_PERFORM_ON_COMMIT caller: SAPL
    KAOI program: SAPLKAOI form: POST_OPEN_ITEMS

    Long text of error message:
     Diagnosis
         During processing of a routine called using PERFORM ... ON COMMIT,
         the system attempted to call PERFORM ... ON COMMIT again. Nesting
         of this is not allowed.
     System Response
     Procedure
         The program indicated after "Caller:" must be changed. This is the
         program that calls the routine indicated after "Form:" during
         COMMIT processing. This routine is part of the program indicated
         after
         "Program:".
     Procedure for System Administration


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Ср, мар 09 2011, 14:06 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Если делать CALL FUNCTION 'Z_MM_PR_DELETE' IN UPDATE TASK в отдельной программке, удаление нормально происходит? Я думаю что дело не в BAPI_PR_CHANGE, а в самом процессе который Вы пытаетесь реализовать. Как я понял у Вас настроен ППМ, то есть при сохранении заказа создается сразу заявка в ММ на материалы требуемые для исполнения заказа, далее что Вы пытаетесь сделать?

Мне не понятно из-за чего получается такой дамп, Ваш процесс у меня нет возможности смоделировать...
Какая у Вас версия и уровень SAP_APPL компонента?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение заказа ТОРО
СообщениеДобавлено: Чт, мар 10 2011, 09:00 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 03 2010, 11:15
Сообщения: 78
Besa написал:
Если делать CALL FUNCTION 'Z_MM_PR_DELETE' IN UPDATE TASK в отдельной программке, удаление нормально происходит? Я думаю что дело не в BAPI_PR_CHANGE, а в самом процессе который Вы пытаетесь реализовать. Как я понял у Вас настроен ППМ, то есть при сохранении заказа создается сразу заявка в ММ на материалы требуемые для исполнения заказа, далее что Вы пытаетесь сделать?

Мне не понятно из-за чего получается такой дамп, Ваш процесс у меня нет возможности смоделировать...
Какая у Вас версия и уровень SAP_APPL компонента?


SAP_APPL: SAPKH60406

Да, Besa, Вы правы. При сохранении заказа, я создаю заявку на перемещение. Т.е. соотв-но при создании новой записи на вкладке "Компоненты", я создаю заявку и т.д.
Сделал внедрение для IWO1_ORDER_BADI. В методе CHANGE_COSTRELEVNCY отлавливаю событие сохранения
Code:
if syst-ucomm eq 'BU'. " Только на сохранение

далее при изменении материала (IS_RESBD_NEW <> IS_RESBD_OLD) вызываю BAPI_PR_CHANGE
при добавлении нового материала вызываю соотв-но BAPI_PR_CREATE.

Но дело в том, что отловить удаление материала в этом методе не получается. Поэтому пришлось искать возможность реализации в других местах.
В SPRO нашел BADI "Изменение заказа" (WORKORDER_UPDATE). Все что делается далее описано выше :)


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

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


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

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


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

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