Szablon danych do obsługi listy płac
Szablon danych do obsługi listy płac
- Pola danych do analizy listy płac
- Etapy procesu potrzebne do jego odkrywania
- Wskazówki dotyczące ekstrakcji danych z systemu
Atrybuty obsługi listy płac
| Nazwa | Opis | ||
|---|---|---|---|
| Działanie Activity | Konkretne zadanie lub zdarzenie w procesie naliczania wynagrodzeń. | ||
| Opis Ten atrybut zawiera nazwę wykonywanego kroku procesu, na przykład „Przekazano kartę czasu pracy”, „Wykonano symulację listy płac” lub „Wykonano płatność”. Stanowi podstawę mapy procesu i pozwala analitykom zobaczyć kolejność operacji w cyklu naliczania wynagrodzeń. Dane pochodzą z różnych dzienników, w tym dzienników workflow (SWWLOGHIST), dzienników zmian infotypów (CDHDR/CDPOS) oraz tabel statusów listy płac. Podczas ekstrakcji stosuje się spójne nazewnictwo, aby techniczne kody zdarzeń były zrozumiałe dla użytkowników biznesowych. Dlaczego to ważne Określa węzły grafu procesu, co pozwala wizualizować przepływy, pętle i warianty procesu. Skąd pobrać Pochodzi z tabeli SWWLOGHIST (workflow), CDHDR (dokumenty zmian) lub zmian statusu w PA03 (rekord kontrolny). Przykłady Przesłanie karty czasu pracyObliczenie wynagrodzenia bruttoWykrycie wyjątku podczas kontroliRealizacja płatności | |||
| Rekord listy płac PayrollRecord | Unikalny identyfikator łączący pracownika z okresem rozliczeniowym. | ||
| Opis Rekord listy płac pełni funkcję centralnego identyfikatora sprawy w analizie process mining. Oznacza pojedynczy cykl naliczania wynagrodzenia dla konkretnego pracownika w określonym okresie rozliczeniowym. Łączy wszystkie działania, od przekazania karty czasu pracy po złożenie końcowej deklaracji podatkowej. W SAP SuccessFactors Employee Central Payroll identyfikator ten jest zwykle tworzony przez połączenie numeru personalnego (PERNR), roku rozliczeniowego (PABRJ) i okresu rozliczeniowego (PABRP). Można też dodać numer sekwencyjny (SEQNR), aby rozróżnić kolejne uruchomienia. Taki poziom szczegółowości pozwala analizować każdy cykl wypłaty jako osobną instancję oraz precyzyjnie mierzyć czas jego trwania i śledzić błędy. Dlaczego to ważne Pełni funkcję identyfikatora sprawy (Case ID) i grupuje wszystkie powiązane zdarzenia, dzięki czemu można odtworzyć pełny przebieg procesu dla każdej wypłaty. Skąd pobrać Tworzony na podstawie klastra SAP B2 (wyniki ewidencji czasu pracy) lub tabel PC_PAYRESULT (PERNR, PABRJ, PABRP, SEQNR). Przykłady 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Znacznik czasu zdarzenia EventTimestamp | Dokładna data i godzina wystąpienia działania. | ||
| Opis Ten atrybut zapisuje dokładny moment zdarzenia, wraz z datą i godziną. Jest niezbędny do obliczania wskaźników opartych na czasie, takich jak czas cyklu, czas realizacji i przepustowość między etapami procesu. W SAP ECP dane pochodzą z pól znaczników czasu, takich jak Dlaczego to ważne Pozwala obliczyć czas między zdarzeniami, co jest niezbędne do wykrywania problemów z wydajnością procesu i naruszeń SLA. Skąd pobrać CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT lub znaczniki czasu z określonych dzienników audytowych. Przykłady 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Ostatnia aktualizacja danych LastDataUpdate | Znacznik czasu ostatniej ekstrakcji danych. | ||
| Opis Ten atrybut wskazuje, kiedy rekord danych został ostatnio odświeżony w modelu danych process mining. Pomaga ocenić aktualność danych i sprawdzić, czy wnioski opierają się na bieżących informacjach. Nie służy bezpośrednio do analizy przepływu procesu, ale ma znaczenie dla zarządzania danymi i ich weryfikacji. Pozwala sprawdzić, czy dashboard odzwierciedla najnowszy stan systemu płacowego. Dlaczego to ważne Informuje użytkowników o opóźnieniu w dostępności danych i pomaga ocenić aktualność raportowanych wskaźników. Skąd pobrać Generowany podczas działania przez skrypt ETL lub ekstrakcji. Przykłady 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| System źródłowy SourceSystem | System, z którego pochodzą dane o zdarzeniu. | ||
| Opis Ten atrybut wskazuje konkretną instancję SAP SuccessFactors Employee Central Payroll lub połączony podsystem, z którego pobrano dane. W środowiskach obejmujących wiele systemów płacowych lub rozwiązania hybrydowe pozwala śledzić pochodzenie danych. Jest szczególnie przydatny przy analizie danych z różnych instalacji regionalnych oraz porównywaniu wydajności systemów starszych i zmigrowanych. Zwykle jest to stały ciąg znaków skonfigurowany podczas przygotowania ekstrakcji danych. Dlaczego to ważne Umożliwia segmentację danych w środowisku wielosystemowym i ułatwia diagnozowanie problemów z jakością danych przez wskazanie ich źródła. Skąd pobrać Identyfikator systemu (SID) z instalacji SAP lub konfiguracji ekstrakcji. Przykłady SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Częstotliwość cyklu wypłat PayCycleFrequency | Informuje, czy naliczenie jest regularne, czy pozaplanowe. | ||
| Opis Ten atrybut odróżnia standardowe, zaplanowane naliczenia wynagrodzeń od doraźnych naliczeń pozaplanowych, stosowanych przy korektach lub pilnych wypłatach. Duża liczba naliczeń pozaplanowych może wskazywać na nieefektywność procesu. Jest monitorowana w dashboardzie „Analiza liczby płatności pozaplanowych”. Atrybut pochodzi z pola Przyczyna naliczenia pozaplanowego ( Dlaczego to ważne Jest niezbędny do obliczania KPI „Udział płatności pozaplanowych” i ograniczania przetwarzania poza standardowym cyklem. Skąd pobrać Tabela RGDIR (katalog klastrów), pole OCRSN lub PAYTY. Przykłady RegularneKorekta AWypłata premiiRozwiązanie stosunku pracy | |||
| Czy zautomatyzowane IsAutomated | Wskaźnik informujący, czy działanie wykonał użytkownik systemowy. | ||
| Opis Ten atrybut logiczny wskazuje, czy dany krok procesu wykonało zadanie w tle lub użytkownik systemowy, czy człowiek. Jest niezbędny w dashboardzie „Monitor automatyzacji przelewów bankowych”, który służy do obliczania odsetka przetwarzania bez udziału człowieka. Zwykle ustala się go przez porównanie identyfikatora użytkownika z listą znanych kont systemowych, na przykład „BATCH” lub „SAP_WORKFLOW”. Dlaczego to ważne Pomaga mierzyć poziom automatyzacji i wskazywać możliwości ograniczenia pracy ręcznej. Skąd pobrać Ustalany na podstawie identyfikatora użytkownika, na przykład jeśli User IN ['BATCH', 'SYSTEM'], to true. Przykłady truefalse | |||
| Miejsce powstawania kosztów CostCenter | Miejsce powstawania kosztów przypisane do pracownika. | ||
| Opis Miejsce powstawania kosztów wskazuje dział lub jednostkę finansową, do której przypisuje się koszty pracownika. W dashboardzie „Wąskie gardła przy zatwierdzaniu kart czasu pracy” służy jako przybliżenie działu i pomaga ustalić, które jednostki organizacyjne opóźniają cykl płacowy. Dane znajdują się w infotypie Przypisanie organizacyjne (PA0001), w polu Dlaczego to ważne Pozwala analizować dane według struktury organizacyjnej i wskazywać konkretne działy powodujące opóźnienia lub konieczność ponownej pracy. Skąd pobrać Tabela PA0001, pole KOSTL. Przykłady CC-1000 FinanseCC-2000 ITCC-3000 Sprzedaż | |||
| Obszar płacowy PayrollArea | Określa grupę płacową, do której należy pracownik. | ||
| Opis Obszar płacowy grupuje pracowników obsługiwanych w ramach tego samego naliczenia wynagrodzeń. Podział może wynikać na przykład z częstotliwości wypłat (miesięcznej lub dwutygodniowej) albo ze struktury organizacyjnej. Atrybut ten pozwala porównywać przebieg procesu w różnych grupach pracowników. W SAP odpowiada mu pole techniczne Dlaczego to ważne Pozwala porównywać przebieg cyklu naliczania wynagrodzeń w różnych grupach, na przykład pracowników godzinowych i etatowych. Skąd pobrać Tabela PA0001 (przypisanie organizacyjne), pole ABKRS. Przykłady USA, wypłaty co dwa tygodnieNiemcy, wypłaty miesięczneWynagrodzenia kadry kierowniczej | |||
| Okres rozliczeniowy PayPeriod | Numer okresu w roku obrachunkowym. | ||
| Opis Ten atrybut określa kolejny numer okresu rozliczeniowego, na przykład 01 dla stycznia lub pierwszego cyklu dwutygodniowego. Pozwala śledzić zmiany wyników w czasie i wykrywać sezonowe wahania obciążenia pracą. Dane pochodzą z pola Dlaczego to ważne Umożliwia analizę trendów i wykrywanie sezonowych wąskich gardeł w określonych porach roku. Skąd pobrać Tabela PA0001 lub klaster wyników listy płac (RGDIR), pole PABRP. Przykłady 01122652 | |||
| Specjalista ds. płac PayrollSpecialist | Identyfikator lub nazwisko osoby obsługującej rekord. | ||
| Opis Ten atrybut wskazuje administratora lub specjalistę ds. płac odpowiedzialnego za ręczne kroki lub akceptacje. Jest podstawą dashboardu „Przepustowość i obciążenie pracą specjalistów”, który pozwala analizować rozkład zadań i wydajność poszczególnych osób. Dane pochodzą z pola Dlaczego to ważne Jest niezbędny do równoważenia obciążenia pracą i wykrywania wąskich gardeł powodowanych przez ręczne działania. Skąd pobrać Pola systemowe (SY-UNAME) rejestrowane w CDHDR lub identyfikator wykonawcy workflow. Przykłady JSMITHKMILLERSYSTEM | |||
| Typ pracownika EmployeeType | Klasyfikacja pracownika, na przykład pracownik stały lub kontraktor. | ||
| Opis Ten atrybut klasyfikuje pracowników według rodzaju zatrudnienia, na przykład jako osoby aktywne, emerytów lub kontraktorów. Złożoność naliczania wynagrodzeń często zależy od typu pracownika. Niektóre grupy wymagają więcej ręcznych działań lub dodatkowych kontroli zgodności. Dane pochodzą z pól Grupa pracowników ( Dlaczego to ważne Pomaga ustalić, czy różnice w przebiegu procesu lub opóźnienia dotyczą konkretnych kategorii zatrudnienia. Skąd pobrać Tabela PA0001, pola PERSG (grupa) i PERSK (podgrupa). Przykłady Aktywny pracownikPraktykantEmerytKontraktor rozliczany godzinowo | |||
| Wynagrodzenie brutto GrossPayAmount | Łączna kwota wynagrodzenia brutto obliczona dla rekordu. | ||
| Opis Ten atrybut przedstawia łączną kwotę wynagrodzenia brutto przed potrąceniami. Jest podstawowym wskaźnikiem kontroli finansowej i pozwala sprawdzić, czy wysokie wypłaty wiążą się z dokładniejszym audytem lub dłuższym czasem akceptacji. Dane pochodzą z tabeli wyników płacowych (RT), zwykle z typów płac reprezentujących łączną kwotę brutto, na przykład /101. Atrybut wspiera analizę „Dokładność obliczania świadczeń i podatków”, dostarczając podstawy do obliczeń. Dlaczego to ważne Pozwala analizować przebieg procesu w zależności od kwoty wypłaty, na przykład sprawdzić, czy wyższe kwoty wymagają dłuższej akceptacji. Skąd pobrać Tabela wyników płacowych (RT), typ płacy /101 lub podobny. Przykłady 5000.002500.5010500.00 | |||
| Jurysdykcja podatkowa TaxJurisdiction | Region lub organ podatkowy właściwy dla pracownika. | ||
| Opis Ten atrybut wskazuje organ lub region podatkowy, na przykład stan, prowincję lub kanton, właściwy dla rekordu płacowego. Jest niezbędny w dashboardzie „Wyjątki audytowe i ryzyko związane ze zgodnością”, który pozwala wskazać obszary geograficzne, w których najczęściej występują problemy ze zgodnością. W systemie SAP US Payroll odpowiada mu pole Dlaczego to ważne Umożliwia segmentację ryzyka związanego ze zgodnością i wyjątków audytowych według regionu regulacyjnego. Skąd pobrać Tabela PA0001 lub PA0207/PA0208, pole TXJCD. Przykłady CANYTXNRW | |||
| Liczba korekt ReworkCount | Liczba wykonanych korekt. | ||
| Opis Ten obliczany wskaźnik zlicza wystąpienia działania „Wykonano korektę danych” w historii sprawy. Bezpośrednio mierzy nieefektywność procesu i wspiera dashboard „Ręczne korekty i ponowne przetwarzanie”. Duża liczba korekt wskazuje na powtarzające się problemy z jakością danych lub złożone sprawy, które nie przechodzą walidacji za pierwszym razem. Dlaczego to ważne Pozwala określić nakład pracy związany z poprawianiem błędów i uzasadnić działania na rzecz poprawy jakości danych. Skąd pobrać Obliczany przez zliczenie działań „Wykonano korektę danych” dla każdego CaseId. Przykłady 013 | |||
| Podmiot prawny LegalEntity | Kod spółki lub podmiot prawny, do którego należy pracownik. | ||
| Opis Ten atrybut wskazuje podmiot prawny (kod spółki) powiązany z rekordem płacowym. Umożliwia raportowanie finansowe i analizę wyników naliczania wynagrodzeń w różnych spółkach zależnych lub podmiotach korporacyjnych. Dane pochodzą z pola Dlaczego to ważne Wspiera porównywanie wyników między spółkami i analizę alokacji kosztów. Skąd pobrać Tabela PA0001, pole BUKRS. Przykłady US01DE011000 | |||
| Termin przetwarzania SLA SLAProcessingDeadline | Docelowy znacznik czasu zakończenia naliczania wynagrodzeń. | ||
| Opis Ten atrybut określa wewnętrzny lub zewnętrzny termin zakończenia naliczania wynagrodzeń, tak aby wypłata nastąpiła na czas. Służy do obliczania KPI „Wskaźnik zgodności z SLA” przez porównanie terminu z rzeczywistym znacznikiem czasu zdarzenia „Wykonano płatność”. Nie zawsze jest to standardowe pole w tabelach SAP. Często jest przechowywany w niestandardowej tabeli kontrolnej lub wyznaczany na podstawie kalendarza płacowego, na przykład dwa dni przed datą wypłaty. W tym modelu danych termin jest zwykle obliczany jako data wypłaty pomniejszona o ustalony bufor. Dlaczego to ważne Stanowi punkt odniesienia przy ocenie terminowości i dotrzymania SLA. Skąd pobrać Obliczany jako data wypłaty (T549S) pomniejszona o skonfigurowaną liczbę dni przetwarzania. Przykłady 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| Wskaźnik wyjątku audytowego AuditExceptionFlag | Wskaźnik informujący, czy wystąpił wyjątek audytowy. | ||
| Opis Ten atrybut oznacza sprawy, w których reguły walidacji wykryły wyjątek lub ostrzeżenie podczas symulacji albo obliczania listy płac. Jest podstawowym źródłem danych dla KPI „Częstotliwość wyjątków audytowych”. Dane pochodzą zwykle z dziennika płacowego lub tabel komunikatów o błędach (FEHLER). Wartość true oznacza, że w przebiegu procesu wystąpiła ścieżka obsługi wyjątku. Dlaczego to ważne Wskazuje problemy z jakością danych i potrzebę ręcznej interwencji. Skąd pobrać Ustalany na podstawie obecności komunikatów o błędach w dzienniku płacowym lub określonych kodów statusu. Przykłady truefalse | |||
Działania w procesie obsługi listy płac
| Działanie | Opis | ||
|---|---|---|---|
| Obliczenie wynagrodzenia brutto | Pomyślne wykonanie obliczeń według schematu naliczania wynagrodzenia brutto. W standardowym procesie zdarzenie to następuje, gdy program naliczający zapisuje dane w klastrze PCL2. | ||
| Dlaczego to ważne Ważny etap potwierdzający prawidłowe połączenie danych o czasie pracy i stawkach. Opóźnienia na tym etapie wpływają na wydajność obliczania wynagrodzenia netto. Skąd pobrać Klaster PCL2 (Payroll Results), w szczególności znacznik czasu w tabeli katalogowej (RGDIR) dla okresu „For-Period”. Rejestrowanie Rejestrowane przy zapisaniu nowego numeru sekwencyjnego w klastrze płacowym Typ zdarzenia explicit | |||
| Przesłanie karty czasu pracy | Zdarzenie, w którym pracownik lub kierownik przesyła dane o czasie pracy za dany okres rozliczeniowy. Informacja pochodzi z dzienników żądań workflow w module Employee Central połączonym z ECP. | ||
| Dlaczego to ważne Oznacza początek gromadzenia danych. Opóźnienia na tym etapie wpływają na kolejne działania i skracają czas dostępny na naliczenie płac. Skąd pobrać Tabele żądań workflow Employee Central (WfRequest), z filtrem kategorii Time Sheet lub Time Off. Rejestrowanie Rejestrowane przy zmianie statusu workflow na SUBMITTED Typ zdarzenia explicit | |||
| Realizacja płatności | Zakończenie procesu płatności, zwykle potwierdzone przez bank lub zakończenie przebiegu płatności F110. | ||
| Dlaczego to ważne Główny końcowy znacznik czasu do obliczenia wskaźnika realizacji SLA. Pozwala ustalić, czy pracownik otrzymał wynagrodzenie w terminie. Skąd pobrać Data i godzina przebiegu płatności w tabelach REGUH lub wartość ustalona na podstawie daty waluty. Rejestrowanie Rejestrowane po ustawieniu statusu przebiegu płatności na Posted/Complete Typ zdarzenia explicit | |||
| Rozpoczęcie procesu płacowego | Utworzenie instancji procesu płacowego w Payroll Control Center (PCC). Oznacza oficjalny początek cyklu płacowego dla danego obszaru płacowego. | ||
| Dlaczego to ważne Wyznacza początek całkowitego czasu trwania cyklu płacowego od początku do końca. Określa zakres pracowników objętych naliczaniem. Skąd pobrać Tabele Payroll Control Center (np. PYC_D_PY_PROC_INST) śledzące utworzenie nowego identyfikatora procesu. Rejestrowanie Rejestrowane przy utworzeniu instancji procesu PCC Typ zdarzenia explicit | |||
| Symulacja naliczania płac | Testowe uruchomienie programu naliczającego płace, które pozwala wykryć błędy bez zapisywania wyników w bazie danych. To ważny etap walidacji w PCC. | ||
| Dlaczego to ważne Niezbędne do obliczenia wskaźnika poprawnych obliczeń za pierwszym razem. Powtarzane symulacje wskazują na problemy z jakością danych. Skąd pobrać Dzienniki instancji etapów Payroll Control Center (PYC_D_STEP_INST), w których typ etapu odpowiada Simulation. Rejestrowanie Rejestrowane przy zmianie statusu etapu symulacji PCC na COMPLETED Typ zdarzenia explicit | |||
| Wygenerowanie pliku przelewów bankowych | Utworzenie pliku Preliminary Data Medium Exchange (pre-DME) lub końcowego pliku DME. Plik zawiera dyspozycje płatnicze dla banku. | ||
| Dlaczego to ważne Zasila monitor automatyzacji przelewów bankowych. Nieudane wygenerowanie pliku oznacza poważne zatrzymanie procesu. Skąd pobrać Dzienniki wykonania DME / Payment Medium Workbench (PMW), często przechowywane w TemSe lub w tabelach konkretnych przebiegów płatności (ReguH/ReguP). Rejestrowanie Rejestrowane, gdy przebieg płatności (F110/RPCIPE) tworzy plik wyjściowy Typ zdarzenia explicit | |||
| Zakończenie składania deklaracji podatkowych | Wygenerowanie plików dla systemu obsługi deklaracji podatkowych (np. PU19 w USA) lub przekazanie danych zewnętrznemu dostawcy usług podatkowych. | ||
| Dlaczego to ważne Zapewnia zgodność z przepisami. Śledzi końcowy etap procesu zapewniania zgodności. Skąd pobrać Dzienniki Tax Reporter Log Manager lub B2A (Business to Administration) Manager potwierdzające pomyślne wygenerowanie pliku. Rejestrowanie Rejestrowane po pomyślnym zakończeniu przebiegu Tax Reporter Typ zdarzenia explicit | |||
| Zatwierdzenie karty czasu pracy | Formalne zatwierdzenie danych o czasie pracy przez kierownika lub administratora. Zmiana statusu potwierdza, że dane można przekazać do mechanizmu naliczania płac. | ||
| Dlaczego to ważne Służy do obliczania KPI czasu zatwierdzania kart czasu pracy. Wąskie gardła na tym etapie wskazują na opóźnienia po stronie kierowników lub złożoną hierarchię zatwierdzania. Skąd pobrać Tabele żądań workflow Employee Central (WfRequest), z filtrem statusu COMPLETED lub APPROVED. Rejestrowanie Rejestrowane przy zmianie statusu workflow na APPROVED Typ zdarzenia explicit | |||
| Zatwierdzenie rekordu płacowego | Formalne zatwierdzenie wyników naliczania płac dla pracownika lub grupy płacowej. Następuje na etapie „Monitoring” lub „Sign Off” w PCC. | ||
| Dlaczego to ważne Oznacza koniec etapu obliczeń i walidacji oraz dopuszczenie płatności do realizacji. Ważne przy analizie wydajności specjalistów. Skąd pobrać Dzienniki instancji etapów Payroll Control Center (PYC_D_STEP_INST) dla etapu Approval lub Confirmation. Rejestrowanie Rejestrowane przy zmianie statusu etapu zatwierdzania PCC na COMPLETED Typ zdarzenia explicit | |||
| Import danych o premiach i prowizjach | Wczytanie do systemu płacowego niestandardowych danych o wynagrodzeniu, takich jak premie lub prowizje. Zwykle obejmuje załadowanie danych do infotypów 0015 lub 2010. | ||
| Dlaczego to ważne Opóźniony import uniemożliwia dokładne obliczenie wynagrodzenia brutto. Analiza tego etapu pomaga skrócić czas integracji danych o premiach i prowizjach. Skąd pobrać Dziennik audytowy (PCL4 lub odpowiednik) pokazujący utworzenie rekordów w infotypie 0015 (Additional Payments) lub 2010 (Employee Remuneration Info). Rejestrowanie Porównanie znaczników czasu utworzenia infotypu z dziennikami zadań importu Typ zdarzenia inferred | |||
| Naliczanie potrąceń z tytułu świadczeń | Etap schematu obliczeniowego, na którym przetwarzane są reguły dotyczące świadczeń. Wyodrębnienie tego etapu, mimo że jest częścią głównego naliczania, pomaga wykryć błędy konfiguracji. | ||
| Dlaczego to ważne Wspiera analizę dokładności obliczania świadczeń i podatków. Przydatne przy diagnozowaniu rozbieżności w złożonych regułach potrąceń. Skąd pobrać Wnioskowane na podstawie obecności podziału V0 w wynikach płacowych lub konkretnych wpisów w dzienniku, jeśli włączono szczegółowe rejestrowanie (rzadko stosowane w środowisku produkcyjnym). Rejestrowanie Zbiega się w czasie z obliczeniem wynagrodzenia brutto, ale na potrzeby analizy jest odrębnym zdarzeniem Typ zdarzenia inferred | |||
| Publikacja paska wynagrodzenia | Udostępnienie pracownikowi zestawienia wynagrodzenia za pośrednictwem samoobsługi pracowniczej (ESS). | ||
| Dlaczego to ważne Pozwala mierzyć terminowość udostępniania pasków wynagrodzeń. Opóźnienia na tym etapie powodują zgłoszenia do działu wsparcia. Skąd pobrać Wnioskowane na podstawie daty „Print Date” lub ustawionej daty dostępności w dziennikach usługi mashup pasków wynagrodzeń. Rejestrowanie Obliczane na podstawie daty wypłaty i opóźnienia wynikającego z konfiguracji systemu Typ zdarzenia inferred | |||
| Wprowadzenie korekty danych | Zmiany w danych podstawowych lub danych o czasie pracy wprowadzone w odpowiedzi na wyjątek wykryty podczas kontroli. Oznaczają ponowne przetwarzanie potrzebne do usunięcia alertu płacowego. | ||
| Dlaczego to ważne Pozwala śledzić ręczne korekty i ponowne przetwarzanie. To główne działanie obniżające wydajność procesu. Skąd pobrać Wnioskowane przez połączenie znaczników czasu alertów PCC z późniejszymi zmianami w dzienniku audytowym (PCL4) dla tego samego pracownika, wprowadzonymi przed zamknięciem alertu. Rejestrowanie Wykrywanie aktualizacji danych podstawowych wprowadzonych, gdy alert PCC jest aktywny Typ zdarzenia inferred | |||
| Wykrycie wyjątku podczas kontroli | Wygenerowanie alertu walidacyjnego przez kontrole reguł w Payroll Control Center. Alerty wskazują niespójności danych lub ryzyko naruszenia wymogów zgodności. | ||
| Dlaczego to ważne Bezpośrednio zasila dashboardy częstotliwości wyjątków wykrywanych podczas kontroli i ryzyka niezgodności. Duża liczba alertów wskazuje na problemy z jakością danych na wcześniejszych etapach. Skąd pobrać Tabele alertów Payroll Control Center (PYC_D_ALERT), łączące konkretne kody błędów z rekordem pracownika. Rejestrowanie Rejestrowane przy utworzeniu nowego wpisu w tabeli alertów PCC Typ zdarzenia explicit | |||
Instrukcje ekstrakcji danych
Kroki
- Określ obszar listy płac i parametry okresu, z którego mają zostać pobrane dane. Dane będą pochodzić głównie z tabel Payroll Control Center (PYC_*) oraz katalogu klastrów płacowych (HRPY_RGDIR).
- Uruchom klienta SQL lub SAP HANA Studio połączone z backendowym schematem SAP SuccessFactors Employee Central Payroll (ECP).
- Wykonaj skrypt ekstrakcji danych z sekcji Query. Skrypt agreguje dane z tabel danych podstawowych, wyników płacowych i dzienników audytowych PCC.
- Zmapuj działania „Przesłano kartę czasu pracy” i „Zatwierdzono kartę czasu pracy”. Ponieważ ECP często pobiera te dane z Employee Central, użyj znaczników czasu utworzenia i ostatniej modyfikacji z tabeli PA2001 lub, jeśli są dostępne, specjalnych tabel interfejsu czasu, takich jak PTREQ_HEADER.
- Pobierz dane o zaimportowanych premiach, odpytując infotypy 0015 (płatności dodatkowe) i 2010 (informacje o wynagrodzeniu pracownika) w celu znalezienia rekordów utworzonych w docelowym okresie płacowym.
- Pobierz kroki procesu PCC z tabel PYC_D_PYP (instancje procesu) i PYC_D_BINST (instancje kroków), aby uwzględnić działania „Zainicjowano proces płacowy”, „Wykonano symulację listy płac”, „Zatwierdzono rekord płacowy” i „Opublikowano pasek wypłaty”.
- Odpytaj tabelę PYC_D_ALERT, aby znaleźć zdarzenia „Oznaczono wyjątek audytowy”. Rekordy te łączą konkretnych pracowników z błędami walidacji wykrytymi podczas kontroli PCC.
- Wygeneruj zdarzenia „Wykonano korektę danych”, łącząc tabelę nagłówków dokumentów zmian SAP (CDHDR) z infotypami dotyczącymi listy płac, np. 0008, 0015 i 2001, w aktywnym okresie płacowym.
- Użyj tabeli HRPY_RGDIR, aby ustalić dokładny moment „Obliczono wynagrodzenie brutto”. Utwórz zdarzenie pochodne „Zastosowano potrącenia na świadczenia” z tym samym znacznikiem czasu, ponieważ oba zdarzenia zachodzą jednocześnie podczas przebiegu schematu.
- Połącz dane finansowe z tabel REGUH (dane rozliczeniowe) i REGUT (administracja DME), aby uwzględnić zdarzenia „Wygenerowano plik przelewu bankowego” i „Wykonano płatność”.
- Zmień format kolumny 'PayrollRecord' na [EmployeeID]-[Period]-[Year], aby zapewnić unikatowość identyfikatora case.
- Wyeksportuj końcowy zbiór danych do pliku CSV. Upewnij się, że nagłówki odpowiadają atrybutom określonym w specyfikacji, a następnie prześlij plik do ProcessMind.
Konfiguracja
- Zakres czasu: Ustaw ekstrakcję na ruchome okno obejmujące ostatnie 6–12 miesięcy. Procesy płacowe mają charakter cykliczny, a taki zakres pozwala uchwycić wystarczające zróżnicowanie przebiegów regularnych i poza cyklem.
- Obszar listy płac (ABKRS): Filtruj dane według konkretnych obszarów listy płac, np. US Monthly lub DE Weekly, aby porównywać podobne cykle procesu.
- Język: Pobieraj opisy działań i kroków procesu w głównym języku systemu, np. SPRAS = 'E'.
- Identyfikatory procesów PCC: Ustal identyfikatory definicji procesów (PYP_ID) używane w konfiguracji PCC dla trybów „Monitoring”, „Production” i „Off-Cycle”, aby odfiltrować odpowiednie kroki.
- Waluta: Jeśli dane pochodzą z globalnych operacji płacowych, przelicz kwoty (GrossPayAmount) na jedną walutę.
- Uprawnienia: Użytkownik bazy danych musi mieć uprawnienia do odczytu tabel Human Resources (PA/PY), a w szczególności katalogu klastrów (HRPY_RGDIR) i tabel PCC (PYC_*).
Przykładowe zapytanie sql
/* Activity 1: Time Sheet Submitted */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Submitted' AS Activity,
T.BEGDA AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 2: Time Sheet Approved */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Approved' AS Activity,
T.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'False' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 3: Incentive Data Imported */
SELECT
CONCAT(I.PERNR, CONCAT('-', I.PABRJ, I.PABRP)) AS PayrollRecord,
'Incentive Data Imported' AS Activity,
I.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
I.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
I.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
I.BETRG AS GrossPayAmount,
I.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA0015 AS I
LEFT JOIN PA0001 AS O ON I.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE I.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 4: Payroll Process Initialized */
SELECT
CONCAT('N/A', CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payroll Process Initialized' AS Activity,
P.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
P.CREATED_BY AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_PYP AS P
WHERE P.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 5: Payroll Simulation Executed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Simulation Executed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Simulate%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 6: Audit Exception Flagged */
SELECT
CONCAT(A.RO_ID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Audit Exception Flagged' AS Activity,
A.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
'SYSTEM' AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_ALERT AS A
JOIN PYC_D_PYP AS P ON A.PYP_ID = P.ID
WHERE A.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 7: Data Correction Performed */
SELECT
CONCAT(C.OBJECTID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Data Correction Performed' AS Activity,
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
C.USERNAME AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM CDHDR AS C
JOIN HRPY_RGDIR AS P ON C.OBJECTID = P.PERNR
WHERE C.TCODE IN ('PA30', 'PA40') AND C.UDATE BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 8: Gross Pay Calculated */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Gross Pay Calculated' AS Activity,
TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 9: Benefit Deductions Applied */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Benefit Deductions Applied' AS Activity,
ADD_SECONDS(TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)), 1) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 10: Payroll Record Approved */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Record Approved' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Check%' AND S.STATUS = 'OK' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 11: Bank Transfer File Generated */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Bank Transfer File Generated' AS Activity,
TO_TIMESTAMP(CONCAT(T.TSDAT, T.TSTIM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.USRID AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUT AS T
JOIN REGUH AS H ON T.LAUFD = H.LAUFD AND T.LAUFI = H.LAUFI
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.TSDAT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 12: Payment Executed */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payment Executed' AS Activity,
TO_TIMESTAMP(CONCAT(H.LAUFD, '120000')) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
H.RBETR AS GrossPayAmount,
H.ZNME1 AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUH AS H
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE H.LAUFD BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 13: Pay Slip Published */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Pay Slip Published' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Remuneration%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 14: Tax Filing Completed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Tax Filing Completed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Tax%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]' Kroki
- Otwórz edytor ABAP: Zaloguj się do systemu SAP SuccessFactors Employee Central Payroll (ECP) przez SAP GUI. Przejdź do transakcji SE38 (edytor ABAP).
- Utwórz program: Wpisz nazwę nowego programu, np.
Z_PROCESSMINING_PAYROLL_EXT, i kliknij Create. Wybierz typ Executable program, a następnie zapisz program jako obiekt lokalny (pakiet $TMP) do celów testowych. - Wprowadź kod: Skopiuj cały kod ABAP z sekcji Query poniżej i wklej go do edytora, zastępując domyślny kod.
- Sprawdź i aktywuj: Kliknij przycisk Check (Ctrl+F2), aby sprawdzić składnię. Gdy nie będzie błędów, kliknij Activate (Ctrl+F3).
- Uruchom ekstrakcję: Naciśnij Direct Processing (F8), aby uruchomić raport.
- Ustaw kryteria wyboru: Na ekranie wyboru podaj
Payroll Area(np. US, 99), prawidłowyDate Range(np. ostatnie 3 miesiące) i, opcjonalnie, filtrPersonnel Numbers(PERNR) do testów. - Uruchom ekstrakcję: Wykonaj raport. System przetworzy tabele HRPY_RGDIR, CATSDB, PA0015 i REGUH, aby utworzyć dziennik zdarzeń.
- Sprawdź wyniki: Raport używa
cl_demo_output, aby wyświetlić wyniki na ekranie w formie siatki i umożliwić ich natychmiastową weryfikację. - Wyeksportuj dane: Kliknij prawym przyciskiem myszy siatkę wyników, wybierz Spreadsheet i zapisz plik w formacie CSV lub Excel.
- Przygotuj dane dla ProcessMind: Otwórz wyeksportowany plik. Ustaw format kolumny
EventTimestampnaYYYY-MM-DD HH:MM:SS. Sprawdź, czy kolumnaPayrollRecordjednoznacznie identyfikuje case, zwykle za pomocą PERNR-SEQNR. - Prześlij dane: Zaimportuj oczyszczony plik CSV do ProcessMind, mapując kolumny na Case ID, Activity, Timestamp i Attributes.
Konfiguracja
- Zakres dat: Zaleca się pobierać dane w przedziałach od 3 do 6 miesięcy, aby uniknąć przekroczenia limitu pamięci w środowisku wykonawczym ABAP.
- Obszar listy płac: To ważny filtr (tabela T549A). Zawsze pobieraj dane tylko z jednego obszaru listy płac naraz, np. miesięcznego lub dwutygodniowego, aby zachować spójność procesu.
- Tabela konfiguracyjna: Skrypt używa
HRPY_RGDIR(katalogu listy płac) jako głównego źródła danych. Użytkownik musi mieć uprawnienieS_TABU_DISdo tej tabeli. - Źródło danych o czasie pracy: Skrypt zakłada, że dane z kart czasu pracy znajdują się w
CATSDB. Jeśli używany jest zewnętrzny system rejestracji czasu, który przekazuje dane bezpośrednio doIT2001lubIT2010, bez CATS, działania dotyczące kart czasu pracy mogą nie zwrócić wyników i wymagać dostosowania skryptu. - Dane o płatnościach: Skrypt łączy przebiegi listy płac z przebiegami płatności za pomocą
REGUH(dane rozliczeniowe). Aby uwzględnić zdarzenia płatności, należy uruchomić przebieg płatnościF110dla wybranego okresu. - Wydajność: W systemach o dużym wolumenie danych (ponad 100 tys. pracowników) warto zastąpić logikę
SELECT *pobieraniem opartym na kursorze lub uruchomić skrypt w tle (F9).
Przykładowe zapytanie abap
REPORT Z_PROCESSMINING_PAYROLL_EXT.
TABLES: pernr, hrpy_rgdir, catsdb, pa0015, reguh.
TYPES: BEGIN OF ty_event_log,
payroll_record TYPE string,
activity TYPE string,
event_timestamp TYPE string,
source_system TYPE string,
last_data_update TYPE string,
payroll_area TYPE abkrs,
employee_type TYPE persg,
pay_period TYPE pabrj,
pay_cycle_freq TYPE string,
gross_pay_amount TYPE string,
payroll_specialist TYPE usnam,
cost_center TYPE kostl,
is_automated TYPE string,
END OF ty_event_log.
DATA: gt_output TYPE TABLE OF ty_event_log,
gs_output TYPE ty_event_log,
gt_rgdir TYPE TABLE OF hrpy_rgdir,
gs_rgdir TYPE hrpy_rgdir,
gt_cats TYPE TABLE OF catsdb,
gs_cats TYPE catsdb,
gt_p0015 TYPE TABLE OF pa0015,
gs_p0015 TYPE pa0015,
gt_reguh TYPE TABLE OF reguh,
gs_reguh TYPE reguh,
gv_tstamp TYPE timestamp,
gv_date TYPE d,
gv_time TYPE t,
gv_pernr TYPE pernr_d.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_pernr FOR pernr-pernr,
s_date FOR sy-datum OBLIGATORY.
PARAMETERS: p_abkrs TYPE abkrs OBLIGATORY DEFAULT '99'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
" 1. Fetch Payroll Directory (The Core Process Driver)
SELECT * FROM hrpy_rgdir INTO TABLE gt_rgdir
WHERE pernr IN s_pernr
AND fpper LIKE '%'
AND cdate IN s_date.
IF gt_rgdir IS INITIAL.
WRITE: / 'No payroll results found for selection.'.
EXIT.
ENDIF.
SORT gt_rgdir BY pernr seqnr.
" Loop through Payroll Directory to build events
LOOP AT gt_rgdir INTO gs_rgdir.
CLEAR gs_output.
CONCATENATE gs_rgdir-pernr '-' gs_rgdir-seqnr INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-last_data_update = sy-datum.
gs_output-payroll_area = p_abkrs.
gs_output-pay_period = gs_rgdir-fpper.
gs_output-payroll_specialist = gs_rgdir-uname.
" --- Activity: Payroll Process Initialized ---
" Derived from the run date start
gs_output-activity = 'Payroll Process Initialized'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Simulation Executed ---
IF gs_rgdir-srtza = 'S'. " S = Simulation
gs_output-activity = 'Payroll Simulation Executed'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Audit Exception Flagged ---
IF gs_rgdir-void IS NOT INITIAL. " Void indicator means rejected/exception
gs_output-activity = 'Audit Exception Flagged'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Data Correction Performed ---
" Inferred: If voided, a correction usually follows immediately
gs_output-activity = 'Data Correction Performed'.
" Add 1 hour to simulate reaction time
DATA: lv_corr_time TYPE t.
lv_corr_time = gs_rgdir-ctime + 3600.
CONCATENATE gs_rgdir-cdate lv_corr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Gross Pay Calculated ---
IF gs_rgdir-srtza = 'A'. " A = Actual Result
gs_output-activity = 'Gross Pay Calculated'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-gross_pay_amount = '1000.00'. " Placeholder: Cluster read required for actual amount
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Benefit Deductions Applied ---
" Logically occurs immediately after gross calc
gs_output-activity = 'Benefit Deductions Applied'.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Record Approved ---
" Inferred from successful write of 'A' record
gs_output-activity = 'Payroll Record Approved'.
DATA: lv_appr_time TYPE t.
lv_appr_time = gs_rgdir-ctime + 60. " +1 minute
CONCATENATE gs_rgdir-cdate lv_appr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
" --- Activity: Pay Slip Published ---
" Available via ESS usually next day
gs_output-activity = 'Pay Slip Published'.
DATA: lv_slip_date TYPE d.
lv_slip_date = gs_rgdir-cdate + 1.
CONCATENATE lv_slip_date '080000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Tax Filing Completed ---
" End of period logic
gs_output-activity = 'Tax Filing Completed'.
DATA: lv_tax_date TYPE d.
lv_tax_date = gs_rgdir-paydt.
CONCATENATE lv_tax_date '235959' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 2. Fetch Time Sheet Data (CATSDB)
" Linking to Payroll Record loosely via Period/Date
SELECT * FROM catsdb INTO TABLE gt_cats
WHERE pernr IN s_pernr
AND workdate IN s_date.
LOOP AT gt_cats INTO gs_cats.
CLEAR gs_output.
CONCATENATE gs_cats-pernr '-00000' INTO gs_output-payroll_record. " Generic mapping
gs_output-payroll_area = p_abkrs.
gs_output-source_system = 'SAP_ECP'.
" --- Activity: Time Sheet Submitted ---
IF gs_cats-status = '20' OR gs_cats-status = '30'.
gs_output-activity = 'Time Sheet Submitted'.
CONCATENATE gs_cats-laudate gs_cats-lautime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Time Sheet Approved ---
IF gs_cats-status = '30'. " 30 = Approved
gs_output-activity = 'Time Sheet Approved'.
CONCATENATE gs_cats-apdat gs_cats-aptime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 3. Fetch Incentive Data (Infotype 0015)
SELECT * FROM pa0015 INTO TABLE gt_p0015
WHERE pernr IN s_pernr
AND begda IN s_date.
LOOP AT gt_p0015 INTO gs_p0015.
CLEAR gs_output.
CONCATENATE gs_p0015-pernr '-00000' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Incentive Data Imported ---
gs_output-activity = 'Incentive Data Imported'.
CONCATENATE gs_p0015-aedtm '120000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" 4. Fetch Payment Data (REGUH)
SELECT * FROM reguh INTO TABLE gt_reguh
WHERE zaldt IN s_date.
LOOP AT gt_reguh INTO gs_reguh.
" Filter for our PERNRs roughly (REGUH does not always have PERNR directly indexable easily in all views)
" For simulation, we map broadly or require join logic. Here assuming simple extraction.
CLEAR gs_output.
CONCATENATE gs_reguh-pernr '-99999' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Bank Transfer File Generated ---
gs_output-activity = 'Bank Transfer File Generated'.
CONCATENATE gs_reguh-laufd gs_reguh-cpzut INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payment Executed ---
gs_output-activity = 'Payment Executed'.
CONCATENATE gs_reguh-zaldt '100000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" Output Display
cl_demo_output=>display( gt_output ). Jak rozpocząć?
Aby usprawnić proces obsługi listy płac, zastosuj ten szablon podczas ekstrakcji danych. Uporządkowane podejście pozwala szybko przejść od surowych danych do wniosków, które można wykorzystać w praktyce.
Usprawnij obsługę listy płac
Dołącz do firm, które już dziś skracają cykle płacowe o 30%.
Nie trzeba podawać danych karty płatniczej. Konfiguracja zajmuje kilka minut.