Vreau să vă reamintesc că BAdI HRPAD00INFTY funcționează numai în tranzacțiile PA30, PA51, dar nu funcționează în PTMW. Prin urmare, trebuie să duplicați logica verificării / procesării datelor infotype în două locuri, dacă utilizați tranzacții precum PTMW și PA *. În lucrul cu BAdI în PTMW, există foarte puține documente și doar trei note:
După ce am suferit câteva ore cu o soluție pentru a extinde PTMW pentru nevoile lor, am decis să împărtășesc experiența mea cu publicul. Din nou, vă reamintesc că nu mă prefac frumusețea și eleganța codului. Sarcina mea este să las o notă să-și amintească în ce direcție să caute o soluție.
Deci, vom folosi BAdI PT_BLP_USER. În Se19, vom crea o nouă implementare. TMW implementează un sistem punct de timp în care un BAdI este apelat cu valori diferite ale filtrului la momente diferite. Prin urmare, ar fi frumos pentru noi să facem o implementare pe filtru. Un bada pentru verificarea datelor, unul pentru procesare după salvare, unul pentru umplerea infotype și așa mai departe.
Am avut sarcina de a verifica corectitudinea datelor. De exemplu, nu puteți introduce o prezență de vacanță mai mult de 8 ore.
Acest eveniment (valoarea filtrului în BAdI) SRP Procesarea individuală a înregistrărilor. Pentru exemplificarea implementării clasei, luăm un exemplu din documentația - BAdI PT_BLP_SAMPLE_SRP. Am copiat direct întreaga soluție într-una.
datele l_message de tip bapiret2.
data is_holiday tip c.
dacă este_holiday ne 'X'.
funcția de apel "BALW_BAPIRETURN_GET2"
exportator
tip = 'E'
cl = 'Z001'
număr = '023'
importatoare
return = l_message.
l_message-parameter = cl_pt_tmw_tdm_const => rec_msg.
adăugați l_message la e_mesaje.
EXIT.
endif.
l_message-parameter = cl_pt_tmw_tdm_const => rec_msg.
adăugați l_message la e_mesaje.
EXIT.
endif.
endif.
endmethod.
Se pare însă că nu este nimic complicat! O mulțime de timp a fost petrecut studiind interiorul mecanismului. De exemplu, la mine PTMW sa prăbușit într-o groapă cu o eroare:
Eroare de programare ABAP Categorie
Erori de execuție RAISE_EXCEPTION
Programul ABAP CL_PT_APPLICATION_TMW_CORE ==== CP
Componenta de aplicare PT-RC
A fost declanșată condiția de excepție "MISSING_INT_DOC_NO"