Розширюємо ptmw за допомогою badi - sap hr блог виталия Поцелуева

Хочу нагадати, що BAdI HRPAD00INFTY працює тільки в транзакціях PA30, PA51, але не працює в PTMW. Тому доводиться дублювати логіку перевірки / обробки даних інфотіпов в двох місцях, якщо ви використовуєте транзакції як PTMW, так і PA *. По роботі з BAdI в PTMW вкрай мало документації і всього три ноти:







Промучившись кілька годин з пошуком рішення щодо розширення PTMW для своїх потреб, вирішив поділитися досвідом з громадськістю. Знову ж, нагадую, що на красу і витонченість коду не претендую. Моє завдання - залишити замітку, щоб не забути в якому напрямку шукати рішення.

Отже, ми будемо використовувати BAdI PT_BLP_USER. У транзакції Se19 створюємо нове впровадження. У TMW реалізована система тимчасових точок, коли один BAdI викликається з різними значеннями фільтра в різний час. Тому непогано було б нам робити по одній реалізації на один фільтр. Один бади для перевірки даних, один для обробки після зберігання, один для заповнення інфотіпа і так далі.







У мене було завдання перевірити дані на коректність. Наприклад, щоб не можна було ввести святкове присутність більше 8 годин.

Ця подія (значення фільтра в BAdI) SRP Individual Record Processing. За зразок реалізації класу беремо приклад з документації - BAdI PT_BLP_SAMPLE_SRP. Я прямо скопіював все рішення один в один.

data l_message type bapiret2.
data is_holiday type c.

if is_holiday ne 'X'.
call function 'BALW_BAPIRETURN_GET2'
exporting
type = 'E'
cl = 'Z001'
number = '023'
importing
return = l_message.

l_message-parameter = cl_pt_tmw_tdm_const => rec_msg.
append l_message to e_messages.
EXIT.
endif.

l_message-parameter = cl_pt_tmw_tdm_const => rec_msg.
append l_message to e_messages.
EXIT.
endif.
endif.
endmethod.

Начебто нічого складного, проте! Велика кількість часу пішло на те, щоб вивчити нутрощі роботи механізму. Наприклад, у мене PTMW вилітав в дамп з помилкою:

Category ABAP Programming Error
Runtime Errors RAISE_EXCEPTION
ABAP Program CL_PT_APPLICATION_TMW_CORE ==== CP
Application Component PT-RC

Exception condition «MISSING_INT_DOC_NO» triggered

Поділитися посиланням: