Wymuszenie zapisania danych w IT

W tym miejscu możesz zadawać pytania oraz dyskutować na temat modułów kadrowo płacowych SAP.
ODPOWIEDZ
emil
Posty: 133
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 29 times
Been thanked: 42 times

Wymuszenie zapisania danych w IT

Post autor: emil »

Dla PA40 mam zdefiniowane kolejne kroki związane z zatrudnieniem pracownika. M.in. użytkownik przechodzi przez IT0105, dla którego został stworzony zetowy podtyp, mający za cel przechowywać jakiś identyfikator.
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.
        (...)
Ogólnie działa to dobrze, poprawnie i wszystko jest cacy, aaaaaaale Użytkownicy... No właśnie ;)
Ż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?
K602
Posty: 135
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 60 times
Been thanked: 86 times
Kontakt:

Re: Wymuszenie zapisania danych w IT

Post autor: K602 »

Każde skorzystanie z obiektu numeracyjnego, konsumuje jego pulę. Nie da się testowo pobrać. Można generować taki numer dopiero w momencie zapisu, a wcześniej korzystać z jakiegoś numeru technicznego lub po prostu pustego, do momentu zdarzenia atSave... wtedy nie będzie dziur...

Popatrz na dok. księgowy w FB01. Póki nie zaksięgujesz, nie ma numeru. On się nadaje na końcu, po wszystkich walidacjach itd...
SAP ABAP Certified Developer
duszaspc
Posty: 1
Rejestracja: pn sie 21, 2023 10:36 am

Re: Wymuszenie zapisania danych w IT

Post autor: duszaspc »

Pobrać selectem ostatni numer z obiektu numeracji, zwiększyć go sztucznie o 1 i wyświetlić na ekranie, a jeżeli użytkownik kliknie zapisz to dopiero wtedy skorzystać z Twojej funkcji ZHCM_KAD_ORLEN_GET_NR_01?
Tak na szybko rozwiązanie. Numer ten nie będzie zawsze pokrywał się z rzeczywistością, bo w międzyczasie ktoś inny może tworzyć numer osobowy i "ukraść" ten numer, ale zabezpieczysz się przed powstawaniem dziur.
ODPOWIEDZ