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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Пн, ноя 18 2013, 08:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
иногда на commit work вешаются подпрограммы (perform ... on commit),
например в сбытовом заказе иногда так обрабатывается протокол сообщений (nast),
такие подпрограммы вызываются сразу в commit work и используют
актуальный на момент вызова сегмент данных программы,
commit work запускает задачу update, поднимает некоторые системные события,
и как-то обрабатывает блокировки (в задаче update в конце тоже вызывается commit work).
если запускать программу в цикле и в конце будет единственный commit, то
подпрограммы perform .. on commit запустятся только для последней итерации,
т.к. в памяти программы находится последний обработанный документ.
функции вызываемые в задаче update скорее всего отработают, т.к.
при вызове они ставятся в очередь задачи update (vbmod) с врем. сохранением
параметров вызова в кластере б/д, т.е. порядок вызова не нарушится


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Пн, ноя 18 2013, 09:08 
Специалист
Специалист

Зарегистрирован:
Пн, июн 04 2012, 10:31
Сообщения: 125
ArmAnn написал:
QValD написал(а):
Сделал, как описано выше.
В цикле BAPI на сторно документов -> ФМник на удаление записей из z-таблиц IN UPDATE TASK -> следом BAPI_TRANSACTION_COMMIT (WAIT = 'X').
Бывают случаи (пока не понял от чего зависит), что данные из z-таблиц удаляются, но бапишки не коммитятся. Как исключить эту ситуацию?
В sm13 всё чисто.
А вы анализируете как отработала бапишка на сторно? Т.е. в случае ошибки вызываете BAPI_TRANSACTION_ROLLBACK ?

Да, конечно. Сообщения типа A,E,W отлавливаются.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Пн, ноя 18 2013, 10:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
rollback work сбрасывает sap luw и соотв. очередь update задачи,
по хорошему нельзя вешать один commit на кучу вызовов bapi, перемежая их rollback-ами


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Пн, ноя 18 2013, 10:06 
Специалист
Специалист

Зарегистрирован:
Пн, июн 04 2012, 10:31
Сообщения: 125
trop написал(а):
rollback work сбрасывает sap luw и соотв. очередь update задачи,
по хорошему нельзя вешать один commit на кучу вызовов bapi, перемежая их rollback-ами

Rollback так же, как и коммит стоит после цикла.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Пн, ноя 18 2013, 10:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
отладьте задачу обновления (в отладке сохр. в собств. параметрах две первые галочки)
и смотрите на содержимое (rsm13000)vbmod_tabl[], если там ничего не потерялось,
то тогда надо проверить в стандарте какие подпрограммы вызываются on commit,
если там что-то есть, то вы рискуете получить неконсистентность данных/событий
даже если документы создадутся


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Пн, ноя 18 2013, 11:44 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
QValD написал(а):
trop написал(а):
rollback work сбрасывает sap luw и соотв. очередь update задачи,
по хорошему нельзя вешать один commit на кучу вызовов bapi, перемежая их rollback-ами

Rollback так же, как и коммит стоит после цикла.
Покажите код

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Пн, ноя 18 2013, 16:05 
Специалист
Специалист

Зарегистрирован:
Пн, июн 04 2012, 10:31
Сообщения: 125
ArmAnn написал:
QValD написал(а):
Покажите код

Code:
 
  *** ....до этого циклы с бапи BAPI_ACC_ACT_POSTINGS_REVERSE, lt_return_sum - таблица со всеми сообщениями из бапи.
  DATA: l_subrc TYPE sy-subrc.
  READ TABLE lt_return_sum WITH KEY type = 'E' TRANSPORTING NO FIELDS. l_subrc = sy-subrc.
  READ TABLE lt_return_sum WITH KEY type = 'A' TRANSPORTING NO FIELDS. l_subrc = l_subrc + sy-subrc.

  IF l_subrc < 8.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    MESSAGE 'Обнаружены ошибки во время обработки документов. Проверьте журнал сообщений.' TYPE 'E'.
  ELSE.
    READ TABLE lt_return_sum WITH KEY type = 'W' TRANSPORTING NO FIELDS.
    IF sy-subrc = 0.
      DATA: l_answer TYPE c.
      PERFORM continue_or_show_dialog USING l_answer. IF l_answer <> '1'. EXIT. ENDIF.
    ENDIF.
  CALL FUNCTION 'ZFF_UPD' IN UPDATE TASK
      EXPORTING
        i_operation       = 'D'
      tables
        table1            = gt_zt1_del
        table2            = gt_zt2_del.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'.
    CLEAR: gt_zt1_del, gt_zt2_del.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Вт, ноя 19 2013, 08:19 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
QValD, по этому куску кода все вроде ок. Возможности дистанционной диагностики исчерпаны :)
Мои предположения:
1. В lt_return_sum у вас не все сообщения от бапишек, а например только от последней
2. BAPI_ACC_ACT_POSTINGS_REVERSE в какой то момент отрабатывает некорректно, но сообщения об ошибке не выдает

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Вт, ноя 19 2013, 08:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
ещё можно поставить break на rollback и commit, всякое бывает.. ниндзя-код в других разработках.
и перед вызовами bapi попробовать set update task local,
но всё таки imho лучше запускать по отдельности и при ошибке сторнировать
красным ,в общем консультант пусть ломает голову )


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Вт, ноя 19 2013, 09:14 
Специалист
Специалист

Зарегистрирован:
Пн, июн 04 2012, 10:31
Сообщения: 125
ArmAnn написал:
QValD, по этому куску кода все вроде ок. Возможности дистанционной диагностики исчерпаны :)
Мои предположения:
1. В lt_return_sum у вас не все сообщения от бапишек, а например только от последней
2. BAPI_ACC_ACT_POSTINGS_REVERSE в какой то момент отрабатывает некорректно, но сообщения об ошибке не выдает

1. Не, в ней точно от всех.
2. Скорее всего.
trop написал(а):
ещё можно поставить break на rollback и commit, всякое бывает.. ниндзя-код в других разработках.
и перед вызовами bapi попробовать set update task local,
но всё таки imho лучше запускать по отдельности и при ошибке сторнировать
красным ,в общем консультант пусть ломает голову )

Проблема в том, что повторить те ситуации, мягко говоря, не всегда получается :)


Пока проблема решена (уж лучше так, чем никак) с помощью SET UPDATE TASK LOCAL ->Коммит бапишек-> селект с проверкой сторнирован ли документ-> удаление документа.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BAPI_TRANSACTION_COMMIT и SQL
СообщениеДобавлено: Вт, ноя 19 2013, 09:32 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
QValD написал(а):
Проблема в том, что повторить те ситуации, мягко говоря, не всегда получается :)

Пока проблема решена (уж лучше так, чем никак) с помощью SET UPDATE TASK LOCAL ->Коммит бапишек-> селект с проверкой сторнирован ли документ-> удаление документа.
Для более точной диагностики можно прикрутить сохранение логов в SLG1 (если бапишка не выдала сообщений - это обязательно отметить отдельной строчкой). Если ситуация повторится - то по крайней мере хоть будет видно как отработала бапишка

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2

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


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

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


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

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