ABAP сделать что-нибудь при выходе из программы - PullRequest
0 голосов
/ 28 сентября 2018

в моей программе ABAP я обновляю поле X в таблице tab1 в начале и на последнем шаге, если все пойдет хорошо, я отменяю это обновление.Важно, чтобы во время выполнения программы поле X имело правильное значение.

Однако, когда я завершаю транзакцию с кнопкой закрытия, а не кнопкой отмены SAP (F12), программа завершается, и она не переходит к концу программы, таким образом, не отменяя обновление, сделанное в начале.

enter image description here

Можно ли выполнить какой-либо код после закрытия отчета?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Кнопка «закрыть окно» не может управляться программой (это верно для «внешних режимов», т. Е. Для полноэкранных окон, которые, кажется, ваш вопрос, но не для всплывающих окон,чьей кнопкой закрытия можно управлять).

Из-за этого SAP запрограммировала свои приложения Dynpro следующим образом:

  • SAP обновляет базу данных в конце всего приложения, когда вы сохраняете
  • и, в конечном итоге, если некоторые части экранов обрабатываются «внешними» приложениями, SAP записывает промежуточные обновления через «задачу обновления» (т.е. они задерживаются до выполнения COMMIT WORK в конце приложения),Обратите внимание, что SAP также часто использует задачу обновления только в конце, но это только для лучшего времени отклика диалога.

Пользовательские приложения должны следовать тому же принципу.

0 голосов
/ 28 сентября 2018

Я думаю, вы пытаетесь добавить механизм блокировки.ABAP имеет собственный механизм блокировки объектов.Если пользователь вышел из системы, закрыл отчет или сеанс прервался, система автоматически разблокирует его.Я предпочитаю использовать механизм блокировки, пример .

Если вы работаете по другому сценарию;добавьте новый столбец для пользователя и время блокировки в той же таблице и проверьте, что пользователь в сети, в противном случае снимите блокировку.

Если вы не хотите снимать блокировку с помощью действия пользователя, вы можете запустить новое фоновое задание на 5 минут с обновлением.запись.Это задание может проверять пользователя и записывать, если пользователь выходит из отчета (t-код SM04), задание удаляет запись, в противном случае перенесите его самостоятельно.

...