Identyfikatorem jest kolejne liczba całkowita (pozyskiwana przez obiekt numeracji SNRO).
Dodatkowo każde wejście przez PA30 na wspomniany infotyp/podtyp sprawdza, czy jest już nadany identyfikator, a jeśli nie - zostaje on stworzony.
Całość zrealizowałem na ZXPADU01:
Kod: Zaznacz cały
(...)
WHEN '0105'.
IF ipsyst-ioper = 'INS'.
CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
EXPORTING
prelp = innnn
IMPORTING
pnnnn = i0105.
IF i0105-usrty = 'Z008'.
* IF i0105-usrid IS INITIAL.
CALL FUNCTION 'ZHCM_KAD_ORLEN_GET_NR_01'
EXPORTING
lv_pernr = i0105-pernr
IMPORTING
lv_sysid = i0105-usrid.
* ENDIF.
CALL METHOD cl_hr_pnnnn_type_cast=>pnnnn_to_prelp
EXPORTING
pnnnn = i0105
IMPORTING
prelp = innnn.
ENDIF.
(...)
Żeby zabezpieczyć się przed kombinowaniem Userów w wygenerowanym identyfikatorze, pole identyfikatora jest tylko do odczytu. To się sprawdza.
Nie potrafię jednak zabezpieczyć się przed sytuacją, w której czy to przy wejściu przez PA30, czy realizacji kroku PA40 Użytkownik wyświetla ekran, generuje się identyfikator, a następnie user NIE ZAPISUJE danych. Wygenerowany nr idzie w komin i robi mi się dziura w numeracji.
W jaki sposób zabezpieczyć się przed brakiem zapisu wygenerowany zmian, jednocześnie nie przerywając procesu zatrudniania w PA40?