Szablon danych Record to Report: zamknięcie okresu i uzgadnianie
Szablon danych Record to Report: zamknięcie okresu i uzgadnianie
- Zalecane atrybuty do zebrania
- Najważniejsze czynności do śledzenia
- Wskazówki dotyczące ekstrakcji
Atrybuty procesu Record to Report: zamknięcie okresu i uzgadnianie
| Nazwa | Opis | ||
|---|---|---|---|
| Okres finansowy FinancialPeriod | Unikalny identyfikator cyklu sprawozdawczego, zwykle złożony z roku obrotowego i okresu księgowania. | ||
| Opis Okres finansowy jest głównym identyfikatorem przypadku. Grupuje wszystkie działania związane z zamknięciem i uzgadnianiem kont w danym cyklu sprawozdawczym, na przykład „2023-12” dla grudnia 2023 r. Dzięki temu można przeanalizować cały proces zamknięcia, od początku do końca, dla każdego okresu. Analiza pozwala śledzić czas cyklu zamknięcia, porównywać wyniki między okresami oraz wykrywać trendy i odchylenia. Przypisanie każdemu okresowi finansowemu unikalnego identyfikatora przypadku umożliwia wizualizację i pomiar wydajności, wąskich gardeł oraz zmian w procesie zamknięcia na przestrzeni czasu. Dlaczego to ważne To podstawowy identyfikator przypadku, który wyznacza zakres analizy i pozwala porównywać między okresami czas cyklu zamknięcia, obciążenie pracą oraz zgodność procesu. Skąd pobrać Ten atrybut zwykle powstaje przez połączenie roku obrotowego (GJAHR) i okresu księgowania (MONAT) z nagłówków dokumentów finansowych, na przykład z tabeli BKPF. Przykłady 2023-122024-032023-Q4 | |||
| Czas zdarzenia EventTime | Znacznik czasu wskazujący, kiedy wystąpiła czynność lub zdarzenie. | ||
| Opis Czas zdarzenia określa dokładną datę i godzinę każdej czynności w procesie, stanowiąc podstawę chronologicznej analizy. Zwykle łączy datę i godzinę utworzenia dokumentu. Ten znacznik czasu jest niezbędny do prawidłowego uporządkowania zdarzeń i odtworzenia przebiegu procesu. Służy do obliczania wszystkich miar czasu, w tym czasu cyklu między czynnościami, czasu oczekiwania i całkowitego czasu zamknięcia okresu. Analiza znaczników czasu pomaga wykrywać opóźnienia i sprawdzać, jak praca rozkłada się w czasie. Dlaczego to ważne Ten wymagany atrybut określa chronologiczną kolejność zdarzeń, niezbędną do obliczania czasu cyklu i wykrywania wąskich gardeł procesu. Skąd pobrać W przypadku dokumentów finansowych dane pochodzą zwykle z daty wprowadzenia dokumentu (CPUDT) i godziny wprowadzenia (CPUTM) w tabeli BKPF. Przykłady 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| Czynność ActivityName | Nazwa konkretnego zdarzenia biznesowego lub zadania wykonanego w ramach procesu zamknięcia okresu. | ||
| Opis Ten atrybut rejestruje poszczególne kroki cyklu Record to Report, takie jak „Zaksięgowano zapis korygujący” lub „Wygenerowano sprawozdania finansowe”. Stanowi podstawę mapy procesu i pokazuje kolejność zdarzeń składających się na zamknięcie okresu. Analiza czynności jest podstawą process mining. Pozwala zobrazować przebieg procesu, ustalić kolejność zadań, wykryć różne warianty oraz zmierzyć częstotliwość i czas trwania poszczególnych kroków. Ułatwia wskazanie wąskich gardeł, niestandardowych ścieżek i możliwości standaryzacji lub automatyzacji. Dlaczego to ważne Ten atrybut jest niezbędny do utworzenia mapy procesu oraz wizualizacji i analizy kolejności zadań podczas zamknięcia okresu. Skąd pobrać Atrybut wynika z połączenia kodów transakcji SAP (TCODE), typów dokumentów (BLART) lub uruchomień konkretnych programów, na przykład FAGL_FCV do wyceny w walutach obcych. Przykłady Zaksięgowano zapis korygującyRozpoczęto uzgadnianie kontZamknięto okres księgowania | |||
| Ostatnia aktualizacja danych LastDataUpdate | Znacznik czasu ostatniego odświeżenia danych lub pobrania ich z systemu źródłowego. | ||
| Opis Ten atrybut informuje, jak aktualne są analizowane dane. Pokazuje datę i godzinę ostatniego uruchomienia potoku danych, dzięki czemu wiadomo, kiedy powstały prezentowane informacje o procesie. W dashboardach, zwłaszcza tych pokazujących bieżący postęp, znacznik czasu pomaga ustalić, czy dane są aktualne, czy pochodzą z poprzedniego dnia. Pozwala właściwie ocenić ich aktualność i poprawnie interpretować wyniki analizy. Dlaczego to ważne Informuje o aktualności danych, co pozwala ocenić, czy analizy i dashboardy przedstawiają bieżące informacje. Skąd pobrać Ten znacznik czasu dodaje narzędzie do pobierania danych lub ETL po zakończeniu każdego ładowania. Przykłady 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| System źródłowy SourceSystem | Identyfikator systemu źródłowego, z którego pobrano dane. | ||
| Opis Ten atrybut wskazuje źródło danych o zdarzeniach, na przykład nazwę lub identyfikator instancji SAP ECC. W organizacjach korzystających z kilku systemów ERP lub finansowych pozwala rozróżnić dane z poszczególnych źródeł. Nawet w środowisku z jednym systemem jest ważnym elementem metadanych na potrzeby zarządzania danymi, audytu i rozwiązywania problemów. Potwierdza pochodzenie danych, co pomaga budować zaufanie do analizy i zachować przejrzystość ich przepływu. Dlaczego to ważne Pozwala ustalić pochodzenie danych na potrzeby zarządzania nimi i odróżnić procesy w środowisku z wieloma systemami. Skąd pobrać Zwykle jest to stała wartość dodawana podczas pobierania danych, która identyfikuje klienta SAP i identyfikator systemu, na przykład na podstawie tabeli T000. Przykłady ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| Kod spółki BUKRS | Jednostka organizacyjna reprezentująca podmiot prawny, dla którego sporządza się sprawozdania finansowe. | ||
| Opis Kod spółki to podstawowa jednostka organizacyjna w SAP Financials. Reprezentuje niezależną spółkę prowadzącą własne księgi. Wszystkie transakcje finansowe są księgowane na poziomie kodu spółki. W process mining filtrowanie według kodu spółki pozwala porównywać proces zamknięcia okresu w różnych podmiotach prawnych należących do grupy. Ułatwia wskazanie dobrych praktyk w sprawnie działających spółkach oraz tych, które mają opóźnienia, dużą liczbę korekt lub odchylenia od procesu. To ważny wymiar segmentacji analizy. Dlaczego to ważne Pozwala porównywać terminowość zamknięcia okresu i zgodność procesu w różnych podmiotach prawnych, co ma znaczenie w analizie finansowej całej grupy. Skąd pobrać To pole występuje w niemal wszystkich tabelach dokumentów finansowych SAP, przede wszystkim w BKPF (nagłówek) i BSEG (pozycja). Przykłady 10002000US01DE01 | |||
| Konto księgi głównej HKONT | Numer konta księgi głównej, na które księgowana jest pozycja. | ||
| Opis Konto księgi głównej (GL) to podstawowy element danych podstawowych w finansach, służący do klasyfikowania transakcji. Każde księgowanie finansowe jest przypisane do co najmniej jednego konta księgi głównej. Podczas zamknięcia okresu analiza czynności według kont księgi głównej jest niezbędna w dashboardach „Wąskie gardła w uzgadnianiu kont” i „Analiza liczby zapisów korygujących”. Pozwala ustalić, które konta najtrudniej uzgodnić, które wymagają najwięcej korekt i gdzie ryzyko istotnego zniekształcenia danych może być największe. Dzięki temu zespoły mogą skupić się na problematycznych kontach. Dlaczego to ważne Umożliwia szczegółową analizę uzgodnień i zapisów korygujących, pomagając wskazać problematyczne konta, które powodują opóźnienia lub wymagają częstych korekt. Skąd pobrać Dostępne w tabeli pozycji dokumentu finansowego BSEG (HKONT). Przykłady 113100400500750000 | |||
| Kwota w walucie lokalnej DMBTR | Wartość finansowa pozycji transakcji wyrażona w walucie lokalnej kodu spółki. | ||
| Opis Ten atrybut określa wartość pieniężną księgowania. To podstawowa miara ilościowa wpływu transakcji na księgę główną. Analiza kwot pomaga ustalać priorytety i oceniać ryzyko finansowe. Na przykład dashboard „Analiza liczby zapisów korygujących” dostarcza więcej informacji, gdy pozwala odróżnić dużą liczbę korekt o niskiej wartości od niewielu korekt o wysokiej wartości. Ułatwia skupienie uwagi na transakcjach o istotnym wpływie finansowym. Dlaczego to ważne Określa wpływ finansowy transakcji i pozwala analizować je pod kątem istotności, na przykład wskazywać zapisy korygujące o wysokiej wartości. Skąd pobrać Dostępne w tabeli pozycji dokumentu BSEG (DMBTR). Przykłady 1500.75-25000.00123456.00 | |||
| Numer dokumentu BELNR | Unikalny identyfikator dokumentu księgowego w ramach roku obrotowego i kodu spółki. | ||
| Opis Numer dokumentu księgowego jest podstawowym identyfikatorem księgowań finansowych w SAP. Każdy zapis dziennika, faktura i dokument płatności otrzymuje unikalny numer. Numer dokumentu rzadko wykorzystuje się w analizie procesów na wysokim poziomie, ale jest bardzo przydatny przy szczegółowym badaniu danych. Analitycy mogą użyć go w dashboardzie process mining, aby przejść bezpośrednio do konkretnej transakcji w SAP i zbadać nieprawidłowości, takie jak wysoki zapis korygujący lub opóźniona pozycja uzgadniana. Łączy wnioski z analizy z transakcją źródłową. Dlaczego to ważne Zapewnia bezpośrednie przejście do transakcji źródłowej w SAP i umożliwia szczegółową analizę konkretnych zapisów księgowych z poziomu widoku procesu. Skąd pobrać Znajduje się w tabeli BKPF (BELNR) jako klucz podstawowy. Przykłady 100000456719000001233000008901 | |||
| Typ dokumentu BLART | Kod klasyfikujący rodzaje dokumentów księgowych. | ||
| Opis W SAP typ dokumentu pozwala rozróżniać transakcje biznesowe, takie jak faktury od dostawców (KR), płatności od klientów (DZ) i księgowania w księdze głównej (SA). Określa również właściwości dokumentu, na przykład zakres numeracji. Podczas analizy zamknięcia okresu typ dokumentu jest przydatnym filtrem. Pozwala wyodrębnić konkretne rodzaje czynności, takie jak rozliczenia międzyokresowe, rezerwy lub storna. Ułatwia analizę liczby i wpływu finansowego transakcji związanych z zamknięciem oraz definiowanie konkretnych czynności w modelu procesu. Dlaczego to ważne Ułatwia klasyfikowanie i filtrowanie transakcji, dzięki czemu można wyodrębnić i analizować konkretne czynności, takie jak rozliczenia międzyokresowe, storna lub księgowania międzyspółkowe. Skąd pobrać Znajduje się w tabeli nagłówków dokumentów BKPF (BLART). Przykłady SAABKR | |||
| Typ zapisu dziennika JournalEntryType | Klasyfikacja zapisów dziennika, na przykład „Standardowy”, „Korygujący”, „Rozliczenie międzyokresowe” lub „Storno”. | ||
| Opis To atrybut pochodny, który klasyfikuje dokumenty finansowe według ich celu biznesowego w procesie zamknięcia. Określa się go zwykle na podstawie typu dokumentu (BLART), przyczyny storna (STGRD) lub użytych kont księgi głównej. Ta klasyfikacja jest podstawą dashboardu „Analiza liczby zapisów korygujących” i powiązanych KPI. Jawne oznaczenie zapisów korygujących i rozliczeń międzyokresowych pozwala mierzyć ich liczbę i wartość, śledzić zmiany w czasie oraz badać przyczyny ich tworzenia. Ułatwia odróżnienie rutynowych księgowań operacyjnych od korekt na koniec okresu. Dlaczego to ważne Klasyfikuje księgowania na potrzeby szczegółowej analizy, umożliwiając śledzenie i pomiar ważnych typów zapisów, takich jak korekty i rozliczenia międzyokresowe, które wskazują kondycję procesu. Skąd pobrać To pole pochodne. Logikę należy określić na podstawie reguł biznesowych, zwykle z wykorzystaniem pól takich jak typ dokumentu (BLART) z tabeli BKPF. Przykłady KorygującyRozliczenie międzyokresoweStornoStandardowy | |||
| Użytkownik odpowiedzialny USNAM | Identyfikator użytkownika SAP, który utworzył dokument lub wykonał transakcję. | ||
| Opis To pole wskazuje użytkownika, który zaksięgował dokument, uruchomił raport lub wykonał program związany z zamknięciem. Pozwala ustalić, kto odpowiada za daną czynność. Analiza według użytkownika pomaga ocenić rozkład obciążenia pracą, wskazać potrzeby szkoleniowe i zbadać odchylenia od procesu. Dashboardy pokazujące liczbę czynności na użytkownika mogą ujawnić przeciążonych członków zespołu lub osoby stosujące niestandardowe procedury. Ułatwiają też zarządzanie wynikami pracy i przydzielanie zasobów w zespole finansowym. Dlaczego to ważne Umożliwia analizę rozkładu obciążenia pracą i wyników zespołu oraz wykrywanie odchyleń od procesu powiązanych z konkretnymi osobami. Skąd pobrać W przypadku tworzenia dokumentu dane znajdują się w tabeli BKPF (USNAM). Dla zadań wsadowych można je znaleźć w TBTCO (SDLUNAME). Przykłady JSMITHRDOEFIN_ADMIN | |||
| Czy po terminie IsOverdue | Obliczany wskaźnik określający, czy czynność zakończono po planowanym terminie. | ||
| Opis Ten atrybut logiczny porównuje rzeczywisty czas zakończenia czynności (EventTime) z planowanym terminem (TargetCompletionDate). Jeśli zdarzenie nastąpiło po tym terminie, wskaźnik przyjmuje wartość true. Atrybut ten bezpośrednio zasila dashboard „Zgodność z terminami zamknięcia i zadania po terminie” oraz KPI „Odsetek zamknięć okresu na czas”. Wyraźnie pokazuje odchylenia od harmonogramu, dzięki czemu osoby zarządzające mogą szybko wykryć opóźnione zadania, ocenić ich wpływ na cały harmonogram i rozliczać zespoły z dotrzymywania terminów. Dlaczego to ważne Wyraźnie wskazuje niezgodność z harmonogramem, ułatwiając szybkie wykrywanie opóźnionych zadań i pomiar terminowości. Skąd pobrać To atrybut obliczany w narzędziu process mining przez porównanie EventTime z TargetCompletionDate. Przykłady truefalse | |||
| Czy ponowna praca IsRework | Obliczany wskaźnik identyfikujący czynności oznaczające ponowne wykonanie pracy, takie jak storno lub odrzucone uzgodnienie. | ||
| Opis Ten atrybut logiczny oznacza zdarzenia lub sekwencje zdarzeń wskazujące na nieefektywne pętle albo korekty w procesie. Na przykład czynność „Uzgodnienie sprawdzone”, po której na tym samym koncie następuje kolejne „Zaksięgowano zapis korygujący”, można oznaczyć jako ponowną pracę. Atrybut ten pozwala określić skalę strat w procesie i zasila dashboard „Przypadki ponownej pracy przy uzgadnianiu” oraz KPI „Wskaźnik ponownej pracy przy uzgadnianiu”. Wyodrębnienie takich przypadków pomaga zespołom zbadać ich przyczyny, ocenić wpływ na czas cyklu i śledzić skuteczność działań usprawniających, których celem jest poprawne wykonanie zadania za pierwszym razem. Dlaczego to ważne Pozwala mierzyć nieefektywność procesu, oznaczając czynności będące korektami lub powtórzeniami. Ułatwia ocenę i ograniczanie zmarnowanego nakładu pracy. Skąd pobrać To atrybut obliczany. Reguły definiuje się w narzędziu process mining na podstawie określonych sekwencji czynności, np. pętli, lub atrybutów, np. ReversalReason nie jest pusty. Przykłady truefalse | |||
| Czy zautomatyzowane IsAutomated | Wskaźnik określający, czy czynność wykonał użytkownik, czy system automatyczny. | ||
| Opis Ten atrybut logiczny odróżnia zadania ręczne od tych wykonywanych automatycznie przez system, takich jak zaplanowane zadanie wsadowe do wyceny walut obcych lub bot księgujący cykliczne zapisy. Informację tę często ustala się na podstawie nazwy użytkownika powiązanej z transakcją, np. „BATCHUSER”. Znajomość poziomu automatyzacji pomaga wskazać możliwości zwiększenia efektywności. Analiza tego atrybutu pokazuje, które części procesu są wykonywane ręcznie i mogą nadawać się do automatyzacji. Ułatwia też rzetelną ocenę obciążenia pracowników, ponieważ pozwala wykluczyć czynności generowane przez system. Dlaczego to ważne Odróżnia czynności ręczne od wykonywanych przez system. Jest to istotne przy identyfikowaniu możliwości automatyzacji i rzetelnym pomiarze nakładu pracy ręcznej. Skąd pobrać To atrybut pochodny. Zazwyczaj ustala się go na podstawie pola User Name (USNAM): identyfikatory znanych użytkowników systemowych lub wsadowych wskazują na zadanie automatyczne. Przykłady truefalse | |||
| Dział Department | Dział funkcjonalny lub centrum kosztów odpowiedzialne za czynność albo transakcję. | ||
| Opis Ten atrybut wskazuje dział powiązany z transakcją, na przykład finanse, sprzedaż lub logistyka. Często określa się go na podstawie danych podstawowych centrum kosztów przypisanego do księgowania lub danych podstawowych użytkownika. Analiza według działu wspiera dashboard „Rozkład obciążenia pracą zespołu zamknięcia”. Pomaga ustalić, jak różne obszary firmy wpływają na obciążenie pracą pod koniec okresu, zwłaszcza przez inicjowanie transakcji, które mogą później wymagać korekt lub uzgodnień. Może wskazać obszary spoza zespołu finansowego, które wpływają na przebieg zamknięcia. Dlaczego to ważne Ułatwia analizę obciążenia pracą i przestrzegania procesu w różnych obszarach firmy oraz pokazuje, jak poszczególne działy wpływają na sprawność zamknięcia finansowego. Skąd pobrać Atrybut często określa się na podstawie centrum kosztów (KOSTL) w BSEG lub danych podstawowych HR użytkownika odpowiedzialnego. Może to wymagać połączenia kilku tabel. Przykłady Finanse korporacyjneZobowiązania wobec dostawcówFP&A | |||
| Partner handlowy VBUND | Identyfikator powiązanej spółki z grupy uczestniczącej w transakcji międzyspółkowej. | ||
| Opis Identyfikator partnera handlowego wskazuje drugi kod spółki uczestniczący w transakcji międzyspółkowej. Jest niezbędny do uzgadniania kont między powiązanymi podmiotami prawnymi. Ten atrybut bezpośrednio wspiera dashboard „Przebieg uzgadniania międzyspółkowego” i KPI „Czas cyklu uzgadniania międzyspółkowego”. Filtrowanie transakcji z przypisanym partnerem handlowym pozwala skupić analizę na sprawności i terminowości uzgadniania międzyspółkowego, które często sprawia trudności podczas zamknięcia okresu. Dlaczego to ważne Pozwala jednoznacznie wskazać transakcje międzyspółkowe i skupić analizę na uzgadnianiu między spółkami, które często jest czasochłonne i złożone. Skąd pobrać Znajduje się w tabeli pozycji dokumentu BSEG (VBUND). Przykłady 1000US013000 | |||
| Planowana data zakończenia TargetCompletionDate | Planowany termin wykonania czynności lub zamknięcia całego okresu. | ||
| Opis Planowana data zakończenia wyznacza harmonogram, względem którego mierzy się przebieg zamknięcia okresu. Określa termin, do którego należy zrealizować poszczególne etapy lub zakończyć całe zamknięcie. Ten atrybut jest niezbędny do analizy wyników i zgodności z terminami. Służy do obliczania KPI „Odsetek zamknięć okresu na czas” oraz zasilania dashboardu „Zgodność z terminami zamknięcia i zadania po terminie”. Porównując rzeczywisty czas zdarzenia z planowaną datą, system określa, czy zadania przebiegają zgodnie z planem, są opóźnione lub zagrożone opóźnieniem. Dzięki temu można wcześniej reagować na problemy z zamknięciem okresu. Dlaczego to ważne Umożliwia monitorowanie zgodności z terminami i wyników, zapewniając punkt odniesienia do oceny, czy czynności związane z zamknięciem okresu są wykonywane na czas. Wspiera też KPI dotyczące terminowości. Skąd pobrać Zazwyczaj są to dane podstawowe przechowywane w osobnym kalendarzu, narzędziu do zarządzania zamknięciem, takim jak SAP Financial Closing cockpit, lub arkuszu kalkulacyjnym. Nie należą do danych transakcyjnych. Przykłady 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| Przyczyna storna ReversalReason | Kod wskazujący przyczynę odwrócenia dokumentu finansowego. | ||
| Opis Podczas odwracania dokumentu w SAP można przypisać kod przyczyny, na przykład „Storno w bieżącym okresie” lub „Nieprawidłowy zapis”. Ten atrybut wyjaśnia, dlaczego trzeba ponownie wykonać pracę. Analiza przyczyn storna pomaga wykrywać powtarzające się błędy, takie jak nieprawidłowe dane lub daty. Na tej podstawie można wprowadzić działania zapobiegawcze, poprawić szkolenia lub wzmocnić kontrole systemowe, aby ograniczyć liczbę błędów i kolejnych storien oraz usprawnić zamknięcie. Dlaczego to ważne Pokazuje przyczyny błędów i ponownego wykonywania pracy, pomagając wskazać możliwości usprawnienia procesu i zapobiegania błędom. Skąd pobrać Znajduje się w tabeli nagłówków dokumentów BKPF (STGRD). Przykłady 010205 | |||
| Rok obrotowy GJAHR | Rok obrotowy, w którym zaksięgowano transakcję. | ||
| Opis Rok obrotowy to podstawowy element porządkowania danych finansowych. Jest częścią identyfikatora case Financial Period i dostarcza kontekstu dla wszystkich transakcji. Choć często wchodzi w skład identyfikatora case, warto przechowywać go także jako osobny atrybut. Ułatwia to analizę trendów w dłuższym okresie i porównywanie rok do roku czasu zamknięcia, liczby korekt oraz innych KPI. Dzięki temu można wykryć poprawę lub pogorszenie wyników na przestrzeni kilku lat. Dlaczego to ważne Zapewnia kontekst czasowy i umożliwia porównywanie wyników procesu zamknięcia rok do roku. Skąd pobrać Dostępny w tabeli nagłówków dokumentów BKPF (GJAHR). Przykłady 202320242022 | |||
| Status uzgodnienia ReconciliationStatus | Bieżący status uzgadniania konta, na przykład „Otwarte”, „W trakcie weryfikacji” lub „Zatwierdzone”. | ||
| Opis Ten atrybut śledzi status uzgadniania konta na kolejnych etapach workflow. Informuje, czy uzgadnianie zostało rozpoczęte, przekazane do weryfikacji, zatwierdzone czy odrzucone. Pozwala monitorować postęp uzgadniania na bieżąco. Ułatwia wskazanie uzgodnień, które utknęły, i określenie, jak długo to trwa, wspierając KPI takie jak „Czas cyklu uzgadniania kont”. Pokazuje przebieg zatwierdzania i jest przydatny w dashboardach śledzących wąskie gardła w uzgadnianiu oraz obciążenie zespołu. Dlaczego to ważne Pokazuje przebieg workflow uzgadniania, umożliwiając śledzenie postępów, wykrywanie wąskich gardeł oraz pomiar czasu weryfikacji i zatwierdzania. Skąd pobrać Te informacje często znajdują się w osobnym narzędziu do uzgadniania, np. SAP Account Substantiation and Automation by BlackLine, albo w niestandardowym polu statusu. Zazwyczaj nie są przechowywane w standardowym polu tabel BKPF/BSEG. Przykłady NierozpoczęteW tokuZatwierdzoneOdrzucone | |||
Czynności w procesie Record to Report: zamknięcie okresu i uzgadnianie
| Działanie | Opis | ||
|---|---|---|---|
| Otwarto okres do księgowania | To oficjalny początek okresu finansowego, od którego można księgować transakcje w księdze głównej. Uprawniony użytkownik otwiera konkretny okres dla księgowań w jednym lub kilku kodach spółki, zmieniając konfigurację. | ||
| Dlaczego to ważne To zdarzenie wyznacza początek przypadku procesu zamknięcia okresu. Analiza czasu od tego momentu pozwala ocenić pełny przebieg zamknięcia okresu finansowego. Skąd pobrać Zmiany okresów księgowania wprowadzane za pomocą transakcji OB52 są rejestrowane. Można je odczytać z dokumentów zmian dotyczących tabeli konfiguracyjnej T001B, zwykle z tabel CDHDR i CDPOS. Rejestrowanie Dane z dokumentów zmian (CDHDR/CDPOS) dotyczących tabeli T001B. Typ zdarzenia explicit | |||
| Rozpoczęto uzgadnianie kont | To początek uzgadniania zestawu kont księgi głównej za dany okres. W standardowym SAP ECC nie jest to odrębne zdarzenie. Zwykle można je wywnioskować z powiązanych działań, na przykład pierwszego uruchomienia kluczowego raportu. | ||
| Dlaczego to ważne To ważny punkt odniesienia przy pomiarze czasu trwania całej fazy uzgadniania. Ustalenie, kiedy uzgadnianie się rozpoczyna, jest niezbędne do obliczenia KPI czasu cyklu uzgadniania kont. Skąd pobrać To zdarzenie nie jest rejestrowane bezpośrednio. Trzeba je wywnioskować z innych źródeł, na przykład z dziennika audytowego systemu (transakcja STAD), sprawdzając pierwsze uruchomienie raportu sald, takiego jak FAGLB03 lub FS10N. Rejestrowanie Wnioskowanie na podstawie pierwszego uruchomienia odpowiednich raportów (np. FAGLB03) zarejestrowanego w dziennikach systemowych. Typ zdarzenia inferred | |||
| Uruchomiono wycenę w walutach obcych | To uruchomienie programu, który przelicza otwarte pozycje i salda w walutach obcych według kursów z końca okresu. Zwykle odbywa się jako zadanie wsadowe w ramach zamknięcia okresu. | ||
| Dlaczego to ważne Ten krok pomaga zapewnić prawidłowość sprawozdawczości finansowej w organizacjach międzynarodowych. Analiza czasu uruchomienia i jego trwania pozwala wskazać możliwości automatyzacji i poprawy wydajności. Skąd pobrać Dane pochodzą z dzienników uruchomień programu wyceny walut obcych, takiego jak FAGL_FCV lub F.05. Szczegóły zadań wsadowych w tabelach takich jak TBTCO i TBTCP zawierają znaczniki czasu uruchomienia. Rejestrowanie Z dzienników zadań wsadowych (tabela TBTCO) dla programu FAGL_FC_VALUATION lub SAPF100. Typ zdarzenia explicit | |||
| Wygenerowano sprawozdania finansowe | To moment wygenerowania oficjalnych sprawozdań finansowych, takich jak rachunek zysków i strat oraz bilans. Zdarzenie można zwykle zarejestrować, śledząc uruchomienie konkretnego programu raportowego. | ||
| Dlaczego to ważne To ważny etap, który oznacza koniec przetwarzania danych i początek końcowej weryfikacji oraz zatwierdzania. Czas od tego zdarzenia do zatwierdzenia jest istotnym KPI. Skąd pobrać Zdarzenie można wywnioskować z dzienników audytowych systemu, takich jak STAD, które rejestrują uruchomienie programu generującego sprawozdania finansowe, najczęściej transakcji F.01. Rejestrowanie Z dzienników systemowych (STAD) rejestrujących uruchomienie transakcji F.01 do generowania sprawozdań finansowych. Typ zdarzenia inferred | |||
| Zaksięgowano zapis korygujący | Po zakończeniu wstępnego przetwarzania transakcji za dany okres księguje się zapis korygujący, aby poprawić salda kont. SAP rejestruje go jako standardowy dokument finansowy. | ||
| Dlaczego to ważne To zdarzenie jest niezbędne do analizy liczby zapisów korygujących. Duża liczba korekt może wskazywać na problemy z dokładnością wcześniejszych etapów procesu i stanowić obszar do usprawnienia. Skąd pobrać Dane znajdują się w tabelach BKPF i BSEG. Pozycje można zwykle rozpoznać po określonym typie dokumentu (BKPF-BLART) zarezerwowanym dla korekt lub po zaksięgowaniu w specjalnym okresie zamknięcia, na przykład od 13 do 16. Rejestrowanie Filtrowanie tabeli BKPF według dokumentów zaksięgowanych w specjalnych okresach lub oznaczonych typami dokumentów korekt. Typ zdarzenia explicit | |||
| Zamknięto okres księgowania | To formalne zamknięcie okresu księgowania, które uniemożliwia dalsze księgowanie bieżących zapisów operacyjnych. Chroni integralność danych finansowych za zamknięty okres i jest jawną zmianą konfiguracji. | ||
| Dlaczego to ważne To zdarzenie wyznacza koniec procesu zamknięcia okresu. Jest niezbędne do prawidłowego obliczenia całkowitego czasu cyklu zamknięcia okresu i pomiaru terminowości. Skąd pobrać Zamknięcie okresów za pomocą transakcji OB52 jest rejestrowane. Zmiany można znaleźć w dokumentach zmian (tabele CDHDR i CDPOS) dotyczących tabeli konfiguracyjnej T001B. Rejestrowanie Dane z dokumentów zmian (CDHDR/CDPOS) dotyczących tabeli T001B. Typ zdarzenia explicit | |||
| Rozliczono dokument międzyspółkowy | To rozliczenie otwartej pozycji między dwoma kodami spółki. Oznacza, że transakcja międzyspółkowa została uregulowana lub uzgodniona. W SAP jest rejestrowane jako jawne księgowanie finansowe, zwykle dokument rozliczeniowy. | ||
| Dlaczego to ważne Opóźnienia w rozliczaniu pozycji międzyspółkowych często wydłużają zamknięcie okresu. Śledzenie tego zdarzenia pozwala mierzyć i skracać czas uzgadniania rozrachunków międzyspółkowych. Skąd pobrać Zdarzenie można rozpoznać w dokumentach finansowych w tabelach BKPF i BSEG. Dokument rozliczeniowy wskazuje i zamyka otwarte pozycje, a data rozliczenia (BSEG-AUGDT) jest znacznikiem czasu zdarzenia. Transakcje międzyspółkowe można zidentyfikować na podstawie pól partnera handlowego. Rejestrowanie Wyszukanie dokumentów rozliczeniowych w BKPF/BSEG dotyczących pozycji z partnerami handlowymi. Typ zdarzenia explicit | |||
| Sprawdzono uzgodnienie | Oznacza, że uzgodnienie konkretnego konta lub grupy kont zostało sprawdzone i potwierdzone. W standardowym SAP ECC zdarzenie to nie jest rejestrowane bezpośrednio. Często obsługuje się je za pomocą kontroli poza systemem lub rozwiązań niestandardowych. | ||
| Dlaczego to ważne Śledzenie czasu weryfikacji pomaga wykrywać wąskie gardła na etapach kontroli i nadzoru podczas zamknięcia. Może ujawnić opóźnienia wynikające z dostępności kierownictwa lub konieczności ponownego wykonania pracy. Skąd pobrać Standardowe tabele ECC nie zawierają tych informacji. Ich rejestrowanie wymaga rozwiązania niestandardowego, na przykład pola statusu w tabeli Z, prostego workflow lub integracji ze specjalistycznym narzędziem zewnętrznym do uzgadniania. Rejestrowanie Rejestrowanie zmiany statusu w niestandardowym workflow lub tabeli Z, jeśli zostały wdrożone. Typ zdarzenia inferred | |||
| Uruchomiono rozliczanie GR/IR | Uruchomienie automatycznego programu rozliczającego konto przyjęć towarów i faktur (Goods Receipt/Invoice Receipt). Program dopasowuje odpowiadające sobie przyjęcia towarów i faktury, a następnie wzajemnie rozlicza te pozycje. | ||
| Dlaczego to ważne Konto GR/IR często powoduje problemy z uzgodnieniami. Monitorowanie tego zdarzenia pozwala sprawdzić, czy krok automatyczny przebiega prawidłowo, oraz określić liczbę wyjątków wymagających ręcznej obsługi. Skąd pobrać Uruchomienie jest rejestrowane w dziennikach zadań wsadowych (transakcja SM37). Zwykle działa program SAPF124 uruchamiany przez transakcję F.13. Tabele dzienników zadań, takie jak TBTCO, zawierają potrzebne znaczniki czasu. Rejestrowanie Z dzienników zadań wsadowych (tabela TBTCO) dla programu rozliczającego SAPF124. Typ zdarzenia explicit | |||
| Wygenerowano zestawienie obrotów i sald | Oznacza uruchomienie raportu generującego zestawienie obrotów i sald. To ważny krok, który pozwala sprawdzić, czy suma obciążeń jest równa sumie uznań, zanim powstaną oficjalne sprawozdania finansowe. | ||
| Dlaczego to ważne To ważny punkt kontroli jakości przed przygotowaniem końcowych raportów. Wielokrotne uruchamianie raportu może oznaczać, że wykrywane i poprawiane są problemy z danymi, co może opóźniać zamknięcie. Skąd pobrać Zdarzenie można wywnioskować z dzienników audytowych systemu, takich jak transakcja STAD, które mogą rejestrować uruchomienie transakcji raportujących zestawienie obrotów i sald, na przykład S_ALR_87012277 lub F.01. Rejestrowanie Z dzienników systemowych (STAD) rejestrujących uruchomienia transakcji raportowych. Typ zdarzenia inferred | |||
| Zaksięgowano rozliczenie międzyokresowe lub rezerwę | To zaksięgowanie pozycji dziennika dotyczącej rozliczenia międzyokresowego, odroczenia lub rezerwy, zwykle pod koniec okresu. SAP nie rejestruje tego jako odrębnego typu zdarzenia. Można je wywnioskować na podstawie cech konkretnych pozycji dziennika. | ||
| Dlaczego to ważne Wyodrębnienie tych pozycji pozwala analizować podproces zarządzania szacunkami. Duża liczba rozliczeń międzyokresowych lub częste korekty mogą wskazywać obszary wymagające usprawnienia. Skąd pobrać Zdarzenie można wywnioskować z tabel dokumentów finansowych BKPF i BSEG. Pozycje można rozpoznać po określonym typie dokumentu (BKPF-BLART), konkretnym koncie księgi głównej (BSEG-HKONT) lub słowach kluczowych w tekście nagłówka (BKPF-BKTXT). Rejestrowanie Filtrowanie tabel BKPF/BSEG według typu dokumentu, wybranych kont księgi głównej lub pól tekstowych. Typ zdarzenia inferred | |||
| Zaksięgowano storno | To zaksięgowanie dokumentu odwracającego wcześniej zaksięgowany zapis dziennika, często w celu poprawienia błędu. SAP tworzy bezpośrednie powiązanie między dokumentem storna a dokumentem pierwotnym. | ||
| Dlaczego to ważne Duża liczba storien może wskazywać na problemy z poprawnością wprowadzanych danych lub mechanizmami kontroli procesu. Śledzenie tych zdarzeń pozwala mierzyć odsetek poprawnych operacji za pierwszym razem i wskazywać obszary wymagające usprawnienia. Skąd pobrać Dokumenty storna znajdują się w tabeli BKPF. Często tworzy się je za pomocą transakcji FB08, a numer odwracanego dokumentu jest zapisany w polu BKPF-STBLG. Rejestrowanie Wyszukanie dokumentów z wypełnionym polem BKPF-STBLG lub utworzonych za pomocą transakcji storna. Typ zdarzenia explicit | |||
Instrukcje ekstrakcji
Kroki
- Otwórz narzędzie SAP Query: Zaloguj się do systemu SAP ECC. Przejdź do kodu transakcji
SQVI(QuickViewer). 2. Utwórz nowe zapytanie: Wpisz nazwę zapytania, na przykładZ_R2R_PERIOD_CLOSE, i kliknij „Create”. W oknie podręcznym podaj opisowy tytuł, np. „Ekstrakcja danych o zamknięciu okresu Record to Report”. W polu „Data source” wybierz „Table join”. 3. Zdefiniuj połączenia tabel: Dodaj tabelę głównąBKPF(nagłówek dokumentu księgowego), a następnie tabelęBSEG(pozycje dokumentu księgowego). SAP automatycznie zaproponuje warunki połączenia (MANDT, BUKRS, BELNR, GJAHR). Sprawdź je i zaakceptuj. Do czynności otwarcia i zamknięcia okresu potrzebne będzie osobne zapytanie łączące tabeleCDHDRiCDPOS. 4. Wybierz pola wynikowe (List Fields): Przejdź do karty „List fld. select.” i wybierz z dostępnych tabel pola potrzebne w dzienniku zdarzeń. Należą do nichBKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTRoraz inne, zależnie od potrzeb. 5. Zdefiniuj parametry wejściowe (Selection Fields): Przejdź do karty „Selection fields” i wybierz pola, które posłużą do filtrowania danych podczas uruchamiania zapytania. Najważniejsze toBKPF-BUKRS(kod spółki) iBKPF-GJAHR(rok obrotowy). Można też dodaćBKPF-MONAT(okres księgowania) orazBKPF-BLART(typ dokumentu). 6. Utwórz warianty dla poszczególnych czynności: Ponieważ SQVI nie pozwala łączyć różnych zestawów danych, np. za pomocą SQL UNION, zapytanie trzeba uruchomić kilka razy. Dla każdej czynności, np. „Zaksięgowano rozliczenie międzyokresowe lub rezerwę”, uruchom zapytanie i na ekranie wyboru wprowadź odpowiednie filtry, takie jak lista typów dokumentów dotyczących rozliczeń międzyokresowych. Zapisz kryteria wyboru jako wariant. Powtórz te czynności dla każdego rodzaju danych, który można wyodrębnić. 7. Uruchom zapytanie i wyodrębnij dane: Uruchom zapytanie dla każdego utworzonego wariantu. Zastosowane zostaną filtry przypisane do danej czynności. 8. Wyeksportuj wyniki: Na ekranie wyników wyeksportuj dane do pliku lokalnego. Najczęściej wybieranym formatem jest „Spreadsheet”. Powtórz eksport dla każdego wariantu. 9. Połącz i przekształć dane: Otwórz wyeksportowane pliki w arkuszu kalkulacyjnym lub użyj narzędzia skryptowego. Ręcznie połącz dane ze wszystkich plików w jeden plik główny. 10. Dodaj kolumny stałe i obliczane: W połączonym pliku dodaj kolumny, których nie można pobrać bezpośrednio z tabel SAP. Należą do nichActivityName(wprowadź ręcznie na podstawie wariantu, z którego pochodzą dane),FinancialPeriod(połącz rok obrotowy i okres),EventTime(połącz pola daty i czasu),SourceSystemorazLastDataUpdate. 11. Przygotuj plik do przesłania: Zapisz plik końcowy w formacie CSV lub Excel, używając nagłówków kolumn wymaganych przez narzędzie process mining. Przed przesłaniem sprawdź typy danych i formatowanie.
Konfiguracja
- Źródło danych: połączenie tabel w SAP Query (SQVI). Najważniejsze tabele to BKPF, BSEG, CDHDR i CDPOS. * Zakres dat: Zaleca się pobranie danych z co najmniej 3 do 6 pełnych okresów finansowych, aby wykryć powtarzające się wzorce. Ustaw filtr na
BKPF-GJAHR(rok obrotowy) iBKPF-MONAT(okres). * Filtr kodu spółki: Zawsze filtruj dane wedługBKPF-BUKRS(kodu spółki), aby ograniczyć ich ilość i skupić analizę na wybranych jednostkach prawnych. Nie zaleca się jednoczesnego pobierania danych dla wszystkich kodów spółek. * Filtr typu dokumentu: Użyj filtrówBKPF-BLART(typ dokumentu), aby wyodrębnić określone czynności, takie jak rozliczenia międzyokresowe, korekty lub storna. Należy ustalić typy dokumentów używane w danej organizacji. * Wymagania wstępne: Użytkownik uruchamiający ekstrakcję musi mieć uprawnienia do transakcjiSQVIoraz dostęp do wyświetlania odpowiednich tabel finansowych, np. przez obiekt autoryzacji S_TABU_DIS. * Wydajność: Połączenie tabel BKPF i BSEG może znacznie obciążać system. Ekstrakcję należy uruchamiać poza godzinami szczytu. Nie należy stosować bardzo szerokiego zakresu dat ani pozostawiać otwartego filtra kodu spółki, ponieważ może to prowadzić do problemów z pamięcią lub przekroczenia limitu czasu.
Przykładowe zapytanie sql
/*
LOGICAL REPRESENTATION FOR SAP QUERY (SQVI)
This is not a single executable script. Due to limitations in SQVI, you must create a base query joining BKPF and BSEG, then run it multiple times using different selection screen variants to extract each activity below. The results must be combined manually.
A separate query joining CDHDR and CDPOS is needed for period open/close activities.
*/
-- Activity 1: Period Opened For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW > CDPOS.VALUE_OLD;
UNION ALL
-- Activity 2: Accrual Or Provision Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Accrual' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('SA', '[Your Accrual Doc Type]'); -- Filter by document types used for accruals
UNION ALL
-- Activity 3: Intercompany Document Cleared
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.AUGBL AS BELNR, -- The clearing document number
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BSEG.AUGBL IS NOT NULL AND BSEG.VBUND IS NOT NULL; -- Identify cleared items with an intercompany trading partner
UNION ALL
-- Activity 4: Foreign Currency Valuation Run
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Valuation' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('FAGL_FCV', 'FBB1'); -- Filter by FCV transaction code
UNION ALL
-- Activity 5: GR/IR Clearing Run Executed
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('F.13', 'F13E'); -- Filter by automated clearing transaction codes
UNION ALL
-- Activity 6: Account Reconciliation Started (Proxy)
-- This is a proxy. It takes the earliest adjusting journal entry timestamp for the period.
SELECT
A.FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
MIN(A.EventTime) AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
A.BUKRS,
NULL AS BELNR,
NULL AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM (
SELECT CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
BKPF.BUKRS
FROM BKPF
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]')
) AS A
GROUP BY A.FinancialPeriod, A.BUKRS;
UNION ALL
-- Activity 7: Adjusting Journal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Adjusting' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]'); -- Filter by document types for adjustments
UNION ALL
-- Activity 8: Reversal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Reversal' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.STBLG IS NOT NULL; -- STBLG (Reversed Document Number) is populated for reversals
UNION ALL
-- Activity 9: Period Closed For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW < CDPOS.VALUE_OLD;
/*
-- Activities Not Extractable via this Method
-- The following activities are not data postings and cannot be reliably extracted by querying finance tables BKPF/BSEG.
-- Extraction would require analyzing application logs (SLG1), system logs (STAT), or custom-built logging solutions.
-- Activity: Trial Balance Report Generated
-- Activity: Financial Statements Generated
-- Activity: Reconciliation Reviewed
*/ Kroki
- Określ zakres i zaprojektuj program: Zdefiniuj reguły identyfikacji każdej z 12 wymaganych czynności. Skonsultuj się z właścicielami procesów i analitykami funkcjonalnymi SAP, aby potwierdzić typy dokumentów, konta księgi głównej i nazwy programów powiązane z czynnościami zamknięcia okresu w danym środowisku SAP ECC.
- Utwórz program ABAP: W transakcji
SE38(ABAP Editor) utwórz nowy program wykonywalny, na przykładZ_PM_R2R_EXTRACTION. Podaj opisowy tytuł i ustaw typ programu na „Executable Program”. - Zdefiniuj ekran wyboru: W programie zdefiniuj ekran wyboru za pomocą
PARAMETERSiSELECT-OPTIONS. Umożliwi on określenie zakresu ekstrakcji, w tym kodu spółki (BUKRS), roku obrotowego (GJAHR) i okresu księgowania (MONAT). To ważne, aby kontrolować ilość pobieranych danych. - Zadeklaruj struktury danych: Zdefiniuj strukturę tabeli wewnętrznej, która będzie przechowywać końcowe dane dziennika zdarzeń. Uwzględnij wszystkie wymagane i zalecane atrybuty:
FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTRiJournalEntryType. - Zaimplementuj logikę ekstrakcji danych: Napisz główną logikę ABAP, która pobierze dane dla każdej z 12 czynności. Dla każdej z nich odczytaj odpowiednie tabele SAP, np. BKPF, BSEG, TBTCO i CDHDR, a następnie wypełnij pośrednią tabelę wewnętrzną. Jako wzór wykorzystaj logikę z dołączonej sekcji zapytania ABAP.
- Zidentyfikuj czynności wywnioskowane: W przypadku czynności, które nie są jawnie rejestrowane w standardowym SAP, takich jak „Rozpoczęto uzgadnianie konta” lub „Sprawdzono uzgodnienie”, zaimplementuj uzgodnione reguły wnioskowania. Może to wymagać sprawdzenia pierwszego uruchomienia określonego raportu lub odczytania niestandardowych tabel Z, jeśli istnieją.
- Skonsoliduj dane o zdarzeniach: Po pobraniu danych dla poszczególnych czynności dołącz rekordy z każdej pośredniej tabeli wewnętrznej do końcowej tabeli zbiorczej. Upewnij się, że pole
EventTimejest prawidłowo wypełniane na podstawie odpowiedniego pola źródłowego, np. daty i godziny księgowania dokumentu lub rozpoczęcia zadania. - Ujednolić i sformatuj dane: Przed wygenerowaniem pliku ujednolić najważniejsze pola. Połącz rok obrotowy i okres w identyfikator
FinancialPeriod. Ustaw stałe wartości dlaSourceSystemiLastDataUpdate. Zadbaj o spójny format znaczników czasu. - Dodaj funkcję eksportu: Dodaj do programu funkcję eksportu końcowej tabeli wewnętrznej. Najczęściej dane zapisuje się do pliku CSV lub rozdzielanego tabulatorami na serwerze aplikacyjnym SAP (za pomocą
OPEN DATASET) albo umożliwia użytkownikowi pobranie pliku bezpośrednio na komputer (za pomocą modułu funkcyjnegoGUI_DOWNLOAD). - Przetestuj i zweryfikuj: Dokładnie przetestuj program na reprezentatywnym zbiorze danych obejmującym wiele kodów spółek i okresów. Wykonaj kroki walidacji, aby sprawdzić dokładność i kompletność danych. Na podstawie uwag ekspertów funkcjonalnych dopracuj logikę wyboru.
- Zaplanuj uruchamianie (opcjonalnie): Po walidacji można zaplanować uruchamianie programu jako zadania w tle za pomocą transakcji
SM36. Pozwoli to okresowo pobierać dziennik zdarzeń automatycznie, bez ręcznej obsługi.
Konfiguracja
- Kryteria wyboru: Program powinien mieć ekran wyboru umożliwiający filtrowanie danych. Najważniejsze filtry to:
Kod spółki (BUKRS): wymagany, aby ograniczyć zakres do odpowiednich jednostek prawnych.Rok obrotowy (GJAHR): wymagany do określenia głównego roku objętego ekstrakcją.Okres księgowania (MONAT): wymagany do wyboru konkretnych okresów finansowych.
- Konfiguracja poszczególnych czynności: Wiele ustawień zależy od konfiguracji SAP w danej organizacji. Należy udostępnić je jako parametry lub stałe w programie:
Typy dokumentów rozliczeń międzyokresowych i rezerw: lista typów dokumentów (BLART) używanych do identyfikacji księgowań rozliczeń międzyokresowych i rezerw.Typy dokumentów zapisów korygujących: lista typów dokumentów używanych do identyfikacji zapisów korygujących.Nazwy zadań wsadowych i programów: nazwy techniczne programów używanych do wyceny walut obcych, np.FAGL_FCV, rozliczania GR/IR, np.SAPF124, raportów zestawienia obrotów i sald oraz generowania sprawozdań finansowych, np.RFBILA00.
- Zakres dat: Choć podstawowy wybór odbywa się według roku obrotowego i okresu, logika powinna uwzględniać pełną datę i godzinę zdarzeń. Do wstępnej analizy zaleca się pobranie danych z ostatnich 3 do 6 zakończonych okresów finansowych.
- Wydajność: W dużych środowiskach SAP wydajność programu ma duże znaczenie. W zapytaniach do bazy należy używać pól indeksowanych, zwłaszcza w tabelach takich jak
BKPFiBSEG. Nie należy pobierać wszystkich pól (SELECT *). W razie potrzeby dane należy przetwarzać w mniejszych partiach. - Uprawnienia: Użytkownik lub konto usługi uruchamiające program musi mieć uprawnienia do odczytu wszystkich używanych tabel (
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS) oraz do wykonywania transakcji takich jakSE38(programowanie) iSM37/SM36(planowanie i monitorowanie).
Przykładowe zapytanie abap
REPORT Z_PM_R2R_EXTRACTION.
" ====================================================================
" DATA DECLARATIONS
" ====================================================================
TYPES: BEGIN OF ty_event_log,
FinancialPeriod TYPE string,
ActivityName TYPE string,
EventTime TYPE timestamp,
SourceSystem TYPE string,
LastDataUpdate TYPE timestamp,
BUKRS TYPE bukrs,
BELNR TYPE belnr_d,
USNAM TYPE usnam,
HKONT TYPE hkont,
BLART TYPE blart,
DMBTR TYPE dmbtr,
JournalEntryType TYPE string,
END OF ty_event_log.
DATA: lt_final_log TYPE STANDARD TABLE OF ty_event_log,
ls_log_entry LIKE LINE OF lt_final_log.
DATA: lv_source_system TYPE string VALUE 'SAP ECC'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_bukrs FOR ls_log_entry-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_monat FOR bkpf-monat OBLIGATORY.
PARAMETERS: p_accrl TYPE blart DEFAULT 'SA', " Example Doc Type for Accruals
p_adjst TYPE blart DEFAULT 'AJ', " Example Doc Type for Adjustments
p_fcv TYPE btcjob DEFAULT 'FAGL_FCV*', " Program for FC Valuation
p_grir TYPE btcjob DEFAULT 'SAPF124*', " Program for GR/IR Clearing
p_fs TYPE btcjob DEFAULT 'RFBILA00'. " Program for Fin. Statements
" ====================================================================
" MAIN LOGIC
" ====================================================================
START-OF-SELECTION.
" --- 1. Period Opened For Posting ---
" Note: This is complex. This example queries change documents for posting period config (T001B).
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_open)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_open INTO DATA(ls_period_open).
" Further logic needed to parse OBJECTID and check CDPOS for opening a period.
" This is a simplified placeholder for a complex logic.
ls_log_entry-ActivityName = 'Period Opened For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" --- 2. Accrual Or Provision Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_accrual)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_accrl.
LOOP AT lt_accrual INTO DATA(ls_accrual).
CLEAR ls_log_entry.
CONVERT DATE ls_accrual-cpudt TIME ls_accrual-cputm INTO TIME STAMP ls_log_entry-EventTime TIME ZONE sy-zonlo.
CONCATENATE ls_accrual-gjahr ls_accrual-monat INTO ls_log_entry-FinancialPeriod.
ls_log_entry-ActivityName = 'Accrual Or Provision Posted'.
ls_log_entry-BUKRS = ls_accrual-bukrs.
ls_log_entry-BELNR = ls_accrual-belnr.
ls_log_entry-USNAM = ls_accrual-usnam.
ls_log_entry-HKONT = ls_accrual-hkont.
ls_log_entry-BLART = ls_accrual-blart.
ls_log_entry-DMBTR = ls_accrual-dmbtr.
ls_log_entry-JournalEntryType = 'Accrual'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
ls_log_entry-SourceSystem = lv_source_system.
APPEND ls_log_entry TO lt_final_log.
ENDLOOP.
" --- 3. Intercompany Document Cleared ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_ic_clear)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat
AND h~blart = 'AB' AND i~vbund <> space.
LOOP AT lt_ic_clear INTO DATA(ls_ic_clear).
" Populate ls_log_entry and append to lt_final_log, setting ActivityName = 'Intercompany Document Cleared'
ENDLOOP.
" --- 4. Foreign Currency Valuation Run ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fcv_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fcv AND j~status = 'F'. " F = Finished
LOOP AT lt_fcv_jobs INTO DATA(ls_fcv_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Foreign Currency Valuation Run'
ENDLOOP.
" --- 5. GR/IR Clearing Run Executed ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_grir_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_grir AND j~status = 'F'.
LOOP AT lt_grir_jobs INTO DATA(ls_grir_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'GR/IR Clearing Run Executed'
ENDLOOP.
" --- 6. Account Reconciliation Started (Inferred) ---
" Note: Inferring this by first run of a report, e.g., FAGLB03. Requires custom logging or complex logic.
" Placeholder: Query a custom log table if available.
" SELECT ... FROM zreco_log ...
" --- 7. Adjusting Journal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_adjust)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_adjst.
LOOP AT lt_adjust INTO DATA(ls_adjust).
" Populate ls_log_entry and append, setting ActivityName = 'Adjusting Journal Entry Posted', JournalEntryType = 'Adjusting'
ENDLOOP.
" --- 8. Reversal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_reversal)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~stblg <> space.
LOOP AT lt_reversal INTO DATA(ls_reversal).
" Populate ls_log_entry and append, setting ActivityName = 'Reversal Entry Posted', JournalEntryType = 'Reversal'
ENDLOOP.
" --- 9. Trial Balance Report Generated (Inferred from Job) ---
" Similar to other jobs, query TBTCO for Trial Balance report programs.
" SELECT ... FROM tbtco ... WHERE jobname LIKE '[Your Trial Balance Program]'.
" --- 10. Financial Statements Generated ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fs_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fs AND j~status = 'F'.
LOOP AT lt_fs_jobs INTO DATA(ls_fs_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Financial Statements Generated'
ENDLOOP.
" --- 11. Reconciliation Reviewed (Inferred) ---
" Note: This activity is almost always managed outside of SAP or in a custom solution.
" Placeholder: Query a custom approval/log table if available.
" SELECT ... FROM zreco_approval ...
" --- 12. Period Closed For Posting ---
" Note: Similar to 'Period Opened', this is very complex. Query change documents for T001B.
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_close)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_close INTO DATA(ls_period_close).
" Further logic needed to parse OBJECTID and check CDPOS for closing a period.
ls_log_entry-ActivityName = 'Period Closed For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" ... Code to display or download the lt_final_log internal table ...
ENDFORMS. Kroki
- Zbierz wymagane informacje: Uzyskaj dane dostępowe do bazy SAP ECC z uprawnieniami tylko do odczytu. Ustal właściwy schemat bazy danych, zazwyczaj
SAPSR3lub inną nazwę podaną przez administratora bazy. - Sprawdź konfigurację systemu: Skonsultuj się z zespołem SAP Finance, aby ustalić kody spółek (
BUKRS) i okresy finansowe, które mają zostać przeanalizowane. Koniecznie określ typy dokumentów (BLART) używane w systemie dla czynności „Zaksięgowano rozliczenie międzyokresowe lub rezerwę”, „Zaksięgowano zapis korygujący” oraz transakcji wewnątrzgrupowych. - Sprawdź nazwy programów i zadań: Potwierdź nazwy programów używanych w ważnych zadaniach wsadowych, takich jak wycena walut obcych, np.
FAGL_FCV, rozliczanie GR/IR, np.SAPF124, raporty zestawienia obrotów i sald, np.RFBILA00, oraz generowanie sprawozdań finansowych, np.RFBILA00. Można je sprawdzić w zaplanowanych zadaniach w transakcjiSM37. - Dostosuj zapytanie SQL: Skopiuj podane zapytanie SQL do edytora tekstu lub klienta SQL. Zastąp zmienne zastępcze
{{start_date}},{{end_date}}i{{company_codes}}rzeczywistymi wartościami dla analizy. Zaktualizuj listy typów dokumentów i nazw programów na podstawie informacji zebranych w poprzednich krokach. - Połącz się z bazą danych: Użyj standardowego klienta SQL, takiego jak DBeaver, SQL Server Management Studio lub Oracle SQL Developer, aby połączyć się z bazą SAP przy użyciu uzyskanych danych dostępowych.
- Uruchom zapytanie: Wykonaj dostosowane zapytanie SQL na bazie danych. W zależności od zakresu dat i wielkości tabel finansowych jego wykonanie może zająć dużo czasu.
- Sprawdź wstępne wyniki: Po zakończeniu zapytania sprawdź pobrane dane. Upewnij się, że liczba wierszy jest wiarygodna, wszystkie kolumny są obecne, a wyniki zawierają różne wartości
ActivityName. - Wyeksportuj dane: Wyeksportuj cały zestaw wyników z klienta SQL do pliku CSV. Zapisz go w kodowaniu UTF-8, aby uniknąć problemów z wyświetlaniem znaków.
- Przygotuj plik do przesłania: Przed przesłaniem danych do narzędzia process mining sprawdź, czy nagłówki kolumn w pliku CSV dokładnie odpowiadają wymaganym nazwom atrybutów (
FinancialPeriod,ActivityName,EventTimeitd.). Upewnij się też, że kolumnaEventTimema spójny format znacznika czasu, np.YYYY-MM-DD HH:MI:SS.
Konfiguracja
- Dane dostępowe do bazy: Wymagane jest konto użytkownika bazy danych z uprawnieniami tylko do odczytu i dostępem do podstawowych tabel finansowych oraz systemowych SAP, takich jak
BKPF,BSEG,TBTCO,CDHDRiCDPOS. - Zakres dat: Zalecamy pobranie danych z co najmniej 3 do 6 pełnych okresów finansowych, aby uchwycić istotne różnice w przebiegu procesu. Należy pamiętać, że szerszy zakres dat znacznie wydłuży wykonywanie zapytania.
- Kody spółek (
BUKRS): Zawsze filtruj dane według określonej listy kodów spółek. Uruchomienie zapytania dla wszystkich kodów spółek w dużym systemie jest niewykonalne i prawdopodobnie spowoduje problemy z wydajnością. - Typy dokumentów (
BLART): Identyfikacja typów zapisów księgowych, takich jak rozliczenia międzyokresowe i korekty, zależy od konfiguracji SAP w danej organizacji. Aby prawidłowo klasyfikować czynności, należy podać właściwe kody typów dokumentów w klauzulachWHEREzapytania. - Nazwy programów i zadań: Zapytanie korzysta z typowych nazw programów obsługujących automatyczne czynności zamknięcia. W danym systemie mogą być używane niestandardowe programy opakowujące lub inne nazwy zadań. Sprawdź je w transakcji
SM37i odpowiednio zmodyfikuj zapytanie. - Wydajność: Zapytanie odczytuje bardzo duże tabele, zwłaszcza
BSEGiCDPOS. Zaleca się uruchamianie ekstrakcji poza godzinami pracy, aby nie obciążać systemu. Najskuteczniej skróci czas wykonania zastosowanie wąskich filtrów daty i kodu spółki.
Przykładowe zapytanie sql
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'FRPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'TOPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Accrual' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('SA', '[Your Accrual Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
h.AUGDT AS EventTime, -- Clearing Date
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Clearing' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.AUGDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Intercompany Doc Type]')
AND h.AUGBL IS NOT NULL
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'FAGL_FCV' OR p.PROGNAME = 'SAPF100'
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F' -- Finished
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'SAPF124' -- Program for F.13
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName, -- Proxy event
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('FAGLL03', 'FBL3N') -- Common reconciliation reports
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Adjusting' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Adjusting Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Reversal' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.STBLG IS NOT NULL -- STBLG links to the reversed document
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Trial Balance Report Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('RFSSLD00', 'S_ALR_87012310')
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'RFBILA00' -- Program for F.01
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
-- UNION ALL
-- Note: 'Reconciliation Reviewed' is typically not a standard, logged event in SAP ECC.
-- This activity often happens offline or in a custom tool.
-- The following is a placeholder to be adapted if a custom (Z-table) log exists.
-- SELECT
-- CONCAT(CAST(YEAR(z.REVIEW_DATE) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(z.REVIEW_DATE)), 2)) AS FinancialPeriod,
-- 'Reconciliation Reviewed' AS ActivityName,
-- z.REVIEW_DATE AS EventTime,
-- 'SAP_ECC' AS SourceSystem,
-- CURRENT_TIMESTAMP AS LastDataUpdate,
-- z.BUKRS AS CompanyCode,
-- z.HKONT AS DocumentNumber, -- Using GL Account as a proxy identifier
-- z.REVIEWER_USER AS ResponsibleUser,
-- z.HKONT AS GLAccount,
-- NULL AS DocumentType,
-- NULL AS AmountInLocalCurrency,
-- NULL AS JournalEntryType
-- FROM ZRECON_LOG z -- Replace with your custom table for reconciliation status
-- WHERE z.REVIEW_DATE BETWEEN '{{start_date}}' AND '{{end_date}}'
-- AND z.STATUS = 'Reviewed'
; Gotowi do rozpoczęcia?
Skorzystaj z tego szablonu danych, aby rozpocząć analizę process mining i uzyskać przydatne informacje o operacjach związanych z zamknięciem finansowym. Już dziś zacznij usprawniać proces Record to Report.
Usprawnij zamknięcie Record to Report i skróć czas cyklu
Usuń wąskie gardła i skróć cykl zamknięcia Record to Report o 30%.
Nie trzeba podawać danych karty płatniczej. Rozpocznij 14-dniowy okres próbny.