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 działania do śledzenia w analizie procesu
- Instrukcja wyodrębniania danych krok po kroku
Atrybuty procesu Record to Report: zamknięcie okresu i uzgadnianie
| Nazwa | Opis | ||
|---|---|---|---|
| Okres finansowy FinancialPeriod | Unikalny identyfikator cyklu sprawozdawczego, na przykład '2023-12' dla grudnia 2023 r. Pełni funkcję case w procesie zamknięcia okresu. | ||
| Opis Okres finansowy to podstawowy identyfikator case, który grupuje wszystkie działania związane z zamknięciem ksiąg za określony przedział czasu, zwykle miesiąc kalendarzowy lub okres obrotowy. Każdy okres finansowy odpowiada jednemu pełnemu przebiegowi procesu zamknięcia. W analizie process mining ten atrybut pozwala śledzić cały cykl zamknięcia okresu, od rozpoczęcia po końcowe sprawozdanie. Umożliwia porównywanie czasu cyklu w różnych okresach, wskazywanie typowych ścieżek procesu i analizowanie różnic między zamknięciem miesięcznym, kwartalnym i rocznym. Traktując każdy okres jako osobny case, analitycy mogą mierzyć wyniki w czasie i wykrywać systemowe wąskie gardła. Dlaczego to ważne To podstawowy identyfikator case, który wyznacza zakres analizy i pozwala porównywać wyniki zamknięcia okresu w czasie oraz wykrywać trendy i powtarzające się problemy. Skąd pobrać Wyznaczany przez połączenie pól roku obrotowego (GJAHR) i okresu księgowania (MONAT) z nagłówków dokumentów finansowych, zwykle z tabel takich jak BKPF. Przykłady 2023-122024-032024-Q1 | |||
| Czas rozpoczęcia EventTime | Znacznik czasu wskazujący, kiedy rozpoczęło się dane działanie lub kiedy zostało zarejestrowane w systemie. | ||
| Opis Czas zdarzenia określa dokładną datę i godzinę wykonania działania. W przypadku księgowań finansowych jest to często czas utworzenia (CPUTM) lub data księgowania (BUDAT) dokumentu. W przypadku zmian statusu lub zadań jest to znacznik czasu zarejestrowania zmiany. Ten atrybut ma zasadnicze znaczenie dla chronologicznego uporządkowania działań i stanowi podstawę wszystkich analiz opartych na czasie. Służy do obliczania czasu cyklu między działaniami, czasu trwania poszczególnych zadań i całego procesu. Umożliwia też pomiar KPI, takich jak średni czas cyklu zamknięcia okresu i średni czas zatwierdzania uzgodnień. Dlaczego to ważne Ten wymagany znacznik czasu pozwala uporządkować zdarzenia chronologicznie i stanowi podstawę obliczeń czasu trwania oraz wyników procesu. Skąd pobrać Dane pochodzą z pól znacznika czasu, takich jak data utworzenia (CPUDT) i godzina utworzenia (CPUTM) w tabelach takich jak BKPF, lub z pól daty zmiany w różnych tabelach statusów, na przykład CDHDR i CDPOS. Przykłady 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| Działanie ActivityName | Nazwa konkretnego kroku lub zadania biznesowego w procesie zamknięcia okresu, na przykład 'Zaksięgowano korygujący zapis księgowy' lub 'Zamknięto okres księgowania'. | ||
| Opis Ten atrybut oznacza pojedyncze zdarzenie lub zadanie w całym procesie zamknięcia okresu i uzgadniania. Działania tworzą mapę procesu i pokazują kolejność wykonywanej pracy. Często są wyznaczane na podstawie kodów transakcji, typów dokumentów lub zmian statusu w SAP S/4HANA. Analiza działań jest podstawą process mining. Pozwala zwizualizować przebieg procesu, wykryć odstępstwa od standardowych procedur, znaleźć wąskie gardła powodujące opóźnienia oraz sprawdzić częstotliwość i kolejność zadań. Ma to znaczenie między innymi dla dashboardów takich jak Analiza wariantów zamknięcia okresu i Bieżący status zamknięcia okresu. Dlaczego to ważne Określa kroki procesu, stanowi podstawę mapy procesu i umożliwia analizę jego przebiegu, odstępstw oraz wąskich gardeł. Skąd pobrać Dane pochodzą z różnych źródeł, takich jak kody transakcji (TCODE), typy dokumentów (BLART) lub pola statusu w tabelach dotyczących zadań zamknięcia finansowego, na przykład w SAP Financial Closing Cockpit. Przykłady Okres otwarty do księgowaniaRozpoczęto uzgadnianie kontaWygenerowano sprawozdania finansoweRozpoczęto uzgadnianie międzyspółkowe | |||
| Czas zakończenia EndTime | Znacznik czasu wskazujący, kiedy zakończono działanie. | ||
| Opis Czas zakończenia oznacza moment ukończenia zadania. W niektórych przypadkach może być taki sam jak czas rozpoczęcia, jeśli system rejestruje zdarzenie jako natychmiastowe. W przypadku działań o mierzalnym czasie trwania wskazuje moment ich zakończenia. W połączeniu z czasem rozpoczęcia atrybut ten pozwala obliczyć Dlaczego to ważne Pozwala obliczyć czas trwania działań (czas przetwarzania), co pomaga wykrywać wąskie gardła i analizować efektywność. Skąd pobrać Podobnie jak czas rozpoczęcia, można go pobrać z różnych pól znacznika czasu. W przypadku niektórych działań może być taki sam jak czas rozpoczęcia. W innych przypadkach może to być osobne pole daty zakończenia lub zmiany w tabelach aplikacji albo dziennikach zmian (CDHDR, CDPOS). Przykłady 2023-12-28T09:16:10Z2024-01-02T17:30:00Z2024-01-05T11:21:00Z | |||
| Docelowa data zakończenia TargetCompletionDate | Planowany termin lub ostateczna data zakończenia ważnej czynności, na przykład sporządzenia sprawozdań finansowych. | ||
| Opis Docelowa data zakończenia to wewnętrzny lub zewnętrzny termin realizacji określonego etapu zamknięcia okresu. Do tego dnia zadanie powinno zostać ukończone. Atrybut ten jest niezbędny do oceny realizacji harmonogramu i dotrzymywania terminów. Stanowi podstawę dashboardu „Dotrzymywanie terminów raportowania” oraz KPI „Odsetek sprawozdań finansowych sporządzonych na czas”. Wskaźniki te porównują datę docelową z Dlaczego to ważne Umożliwia ocenę realizacji zadań względem terminów oraz pomiar i poprawę terminowości najważniejszych czynności związanych z zamknięciem. Skąd pobrać Dane te często znajdują się w systemie do zarządzania zadaniami lub harmonogramem, takim jak SAP Financial Closing cockpit, w którym listy zadań zamknięcia zawierają planowane daty zakończenia. Przykłady 2024-01-05T23:59:59Z2024-04-04T23:59:59Z2024-07-05T23:59:59Z | |||
| Kod spółki CompanyCode | Unikalny identyfikator podmiotu prawnego lub spółki w strukturze organizacyjnej SAP. | ||
| Opis Jednostka gospodarcza (Company Code) to niezależna jednostka księgowa w przedsiębiorstwie, dla której można prowadzić kompletny, odrębny zestaw ksiąg. Wszystkie czynności związane z zamknięciem okresu wykonuje się na poziomie jednostki gospodarczej. To podstawowy wymiar organizacyjny w analizie finansowej. W process mining umożliwia porównanie przebiegu zamknięcia okresu w różnych podmiotach prawnych. Dashboard „Analiza wariantów zamknięcia okresu” wykorzystuje jednostkę gospodarczą do wykrywania rozbieżności i ujednolicania procedur zamknięcia. Dlaczego to ważne Zapewnia ważny kontekst organizacyjny, dzięki któremu można porównywać procesy w różnych podmiotach prawnych, wykrywać różnice i wskazywać dobre praktyki. Skąd pobrać Występuje w niemal wszystkich tabelach finansowych SAP, przede wszystkim w tabeli nagłówkowej BKPF (pole BUKRS). Przykłady 10001710US01DE01 | |||
| Numer dokumentu DocumentNumber | Unikalny identyfikator dokumentu finansowego, na przykład zapisu księgowego. | ||
| Opis Numer dokumentu to unikalny klucz nadawany przez SAP każdemu księgowaniu. Służy jako podstawowy punkt odniesienia przy śledzeniu i audytowaniu poszczególnych transakcji składających się na czynności w procesie zamknięcia. Sam w sobie nie jest identyfikatorem case, ale zapewnia ważne powiązanie z systemem źródłowym. Analitycy mogą użyć numeru dokumentu, aby przejść z widoku process mining do szczegółów konkretnej transakcji w SAP S/4HANA i ustalić przyczynę problemu. Jest to szczególnie przydatne podczas analizy konkretnych księgowań korygujących lub zapisów związanych z uzgadnianiem. Dlaczego to ważne Zapewnia bezpośrednie odniesienie do transakcji w SAP, ułatwiając przejście do jej szczegółów i audyt z poziomu modelu procesu. Skąd pobrać Znajduje się w tabeli nagłówkowej dokumentów finansowych BKPF (pole BELNR) oraz w tabelach pozycji, takich jak BSEG lub ACDOCA. Przykłady 100000045190000001300000023 | |||
| Numer konta księgi głównej GlAccountNumber | Identyfikator konkretnego konta w księdze głównej. | ||
| Opis Numer konta księgi głównej (GL) identyfikuje poszczególne konta służące do rejestrowania operacji finansowych, takich jak środki pieniężne, zobowiązania wobec dostawców czy przychody. Wiele czynności wykonywanych przy zamknięciu okresu, na przykład uzgadnianie sald i księgowanie korekt, dotyczy konkretnych kont GL. Ten atrybut jest niezbędny do szczegółowej analizy procesów finansowych. Dashboard „Analiza księgowań korygujących” pokazuje liczbę korekt na poszczególnych kontach i pomaga wykrywać problematyczne obszary. KPI „Średni czas uzgadniania konta GL” pozwala z kolei wskazać opóźnienia związane z konkretnymi kontami. Dlaczego to ważne Łączy czynności w procesie z konkretnymi kontami finansowymi, umożliwiając szczegółową analizę uzgodnień i zapisów księgowych w celu ustalenia przyczyn problemów. Skąd pobrać Występuje w tabelach pozycji dokumentów finansowych, głównie BSEG (pole HKONT) lub w uniwersalnej tabeli księgi głównej ACDOCA w S/4HANA. Przykłady 113100004000000073000000 | |||
| Odpowiedzialny użytkownik ResponsibleUser | Identyfikator użytkownika, który wykonał działanie lub odpowiada za zadanie. | ||
| Opis Ten atrybut wskazuje pracownika, który wykonał dane zadanie, na przykład zaksięgował zapis księgowy lub zatwierdził uzgodnienie. Zwykle jest rejestrowany jako identyfikator użytkownika w dziennikach systemowych i nagłówkach dokumentów. Analiza procesu według użytkownika pomaga zrozumieć rozkład obciążenia, indywidualne wyniki i potrzeby szkoleniowe. Dashboard Efektywność przydziału zasobów wykorzystuje ten atrybut do wizualizacji czasu wykonywania działań przez poszczególnych użytkowników. Może też pomóc wskazać zadania do automatyzacji, pokazując powtarzalne czynności wykonywane przez wiele osób. Dlaczego to ważne Łączy działania w procesie z osobami, które je wykonały, umożliwiając analizę obciążenia, optymalizację zasobów i zarządzanie wynikami. Skąd pobrać Dane te można znaleźć w tabelach nagłówków dokumentów, takich jak BKPF (pole USNAM, nazwa użytkownika), lub w tabelach dokumentów zmian, takich jak CDHDR (pole USERNAME). Przykłady ABROWNCSMITHDJOHNSON | |||
| Status uzgodnienia ReconciliationStatus | Status uzgadniania konta, na przykład „Nie rozpoczęto”, „W toku” lub „Zatwierdzono”. | ||
| Opis Ten atrybut pokazuje stan uzgadniania danego konta lub zadania. Informuje, czy uzgadnianie zostało rozpoczęte, przekazane do weryfikacji, zatwierdzone czy odrzucone. Zmiany statusu są ważnymi zdarzeniami w procesie. Atrybut ten stanowi podstawę dashboardu „Analiza poprawek w uzgodnieniach”. Analiza kolejnych statusów pozwala wykryć sytuacje, w których po statusie „Zatwierdzono” wprowadzono dalsze korekty, co wskazuje na konieczność ponownej pracy. Atrybut wspiera też KPI „Odsetek uzgodnień zatwierdzonych za pierwszym razem”, pokazując, które uzgodnienia zatwierdzono bez wcześniejszego odrzucenia ani ponownego otwarcia. Dlaczego to ważne Pokazuje postęp i wynik zadań związanych z uzgadnianiem, co pozwala wykrywać poprawki, mierzyć odsetek zatwierdzeń i analizować wąskie gardła. Skąd pobrać Informacje te są zwykle przechowywane w tabelach używanego narzędzia do uzgadniania, na przykład SAP Financial Closing cockpit lub SAP Account Substantiation and Automation by BlackLine. Przykłady Nie rozpoczętoW przygotowaniuZatwierdzonoOdrzucono | |||
| Czas trwania cyklu zamknięcia okresu PeriodCloseCycleTime | Łączny czas od pierwszej do ostatniej czynności w danym okresie finansowym. | ||
| Opis Ta miara określa całkowity czas realizacji procesu zamknięcia okresu dla jednego case (okresu finansowego). Oblicza się ją jako różnicę między znacznikiem czasu ostatniej i pierwszej czynności w tym okresie. To podstawowy KPI, który zasila dashboard „Przegląd czasu trwania cyklu zamknięcia okresu” oraz KPI „Średni czas trwania cyklu zamknięcia okresu”. Pokazuje ogólną sprawność i szybkość zamknięcia, umożliwiając porównania w czasie oraz między jednostkami gospodarczymi. Dlaczego to ważne To podstawowy KPI mierzący łączny czas trwania procesu. Pozwala ogólnie śledzić zmiany efektywności w czasie. Skąd pobrać Obliczane na poziomie case: Przykłady 5 dni, 10 godzin i 30 minut7 dni i 2 godziny6 dni | |||
| Czy czynność jest zautomatyzowana IsAutomated | Wartość logiczna wskazująca, czy czynność wykonał użytkownik systemowy, czy proces zautomatyzowany. | ||
| Opis Ta flaga odróżnia zadania wykonywane ręcznie przez użytkownika od tych realizowanych automatycznie przez system, na przykład zaplanowanego zadania wsadowego do wyceny walut lub automatycznego rozliczania. Zwykle wyznacza się ją na podstawie identyfikatora Atrybut ten pomaga określić poziom automatyzacji procesu zamknięcia. Wskazuje możliwości dalszej automatyzacji, ujawniając zadania ręczne o dużym wolumenie. Przydaje się również w analizie przyczyn problemów, ponieważ pozwala sprawdzić, czy wąskie gardła występują na etapach ręcznych, czy zautomatyzowanych. Dlaczego to ważne Odróżnia czynności wykonywane przez ludzi od tych realizowanych przez system, co pomaga wskazywać możliwości automatyzacji i analizować efektywność obu rodzajów pracy. Skąd pobrać To atrybut pochodny, zwykle wyznaczany na podstawie reguły dotyczącej pola „ResponsibleUser” (na przykład sprawdzenia, czy identyfikator należy do użytkownika systemowego lub wsadowego, takiego jak „BATCHUSER”) albo kodu transakcji. Przykłady truefalse | |||
| Czy wystąpiły poprawki w uzgodnieniu IsReconciliationRework | Wartość logiczna ustawiona na prawdę, jeśli po czynności uzgadniania następuje odrzucenie lub wprowadzenie dalszych korekt. | ||
| Opis Ten obliczany atrybut wykrywa poprawki w podprocesie uzgadniania. Flaga wskazuje czynności lub case, w których uzgodnienie odrzucono, ponownie otwarto po przekazaniu do weryfikacji albo zaksięgowano korekty po zakończeniu uzgadniania konta GL. Atrybut ten zasila dashboard „Analiza poprawek w uzgodnieniach” oraz KPI „Odsetek uzgodnień wymagających poprawek”. Złożone sekwencje czynności zamienia na prostą, mierzalną wartość, która pokazuje skalę poprawek i pomaga zespołom poprawić jakość uzgodnień za pierwszym razem. Dlaczego to ważne Bezpośrednio mierzy poprawki, które są oznaką nieefektywności procesu. Umożliwia ukierunkowaną analizę i poprawę jakości uzgodnień. Skąd pobrać Obliczane na podstawie sekwencji czynności. Na przykład flaga przyjmuje wartość prawda, jeśli po sekwencji „Zatwierdzono uzgodnienie” następuje „Zaksięgowano zapis korygujący” dla tego samego konta GL i okresu. Przykłady truefalse | |||
| Czy zakończono na czas IsOnTime | Wartość logiczna ustawiona na prawdę, jeśli etap zakończono w docelowym terminie lub wcześniej. | ||
| Opis Atrybut ten w prosty, binarny sposób pokazuje, czy dotrzymano harmonogramu. Oblicza się go przez porównanie To podstawa obliczania KPI „Odsetek sprawozdań finansowych sporządzonych na czas”. Ułatwia śledzenie wyników, zamieniając porównanie dat na czytelny status „na czas” lub „po terminie”, który można przedstawić na dashboardach i w raportach. Pomaga ocenić skuteczność działań przyspieszających zamknięcie. Dlaczego to ważne Upraszcza analizę dotrzymywania terminów, pokazując jednoznacznie, czy zadanie zakończono na czas. Ułatwia śledzenie i raportowanie terminowości. Skąd pobrać Pole obliczane: Przykłady truefalse | |||
| Kod transakcji TransactionCode | Kod transakcji SAP (T-code) użyty do wykonania czynności. | ||
| Opis Kod transakcji to skrót służący do uruchamiania określonej funkcji lub programu w SAP. Na przykład FB01 służy do księgowania dokumentu, a FAGLB03 do wyświetlania sald kont GL. Kod T-code często jasno wskazuje, jaką czynność wykonano. Atrybut ten pomaga definiować czynności w modelu procesu. Pozwala wiarygodnie odróżnić czynności zautomatyzowane od ręcznych i ustalić, jak dokładnie wykonano zadanie w systemie. Analiza kodów T-code może ujawnić niestandardowe lub nieefektywne metody pracy. Dlaczego to ważne Pokazuje technicznie, na poziomie systemu, jak wykonano daną czynność. Ułatwia rozpoznawanie kroków ręcznych i zautomatyzowanych oraz niestandardowych procedur. Skąd pobrać Występuje w tabeli nagłówkowej dokumentów finansowych BKPF (pole TCODE) lub w dziennikach zmian dokumentów. Przykłady FB01FAGL_FCVF.13 | |||
| Kwota dokumentu DocumentAmount | Łączna wartość księgowania w walucie dokumentu. | ||
| Opis Atrybut ten określa wartość pieniężną dokumentu finansowego. W przypadku korekt na koniec okresu może to być kwota rozliczenia międzyokresowego lub księgowanej korekty. Analiza kwot pomaga ocenić istotność pozycji. Analitycy mogą w pierwszej kolejności sprawdzić księgowania korygujące o wysokiej wartości, które mogą wiązać się z większym ryzykiem finansowym. Można też filtrować mapę procesu, aby wyświetlała tylko transakcje przekraczające określony próg. Ułatwia to skupienie się na najważniejszych czynnościach. Dlaczego to ważne Uzupełnia analizę o wymiar finansowy i pozwala ustalać priorytety na podstawie wpływu pieniężnego oraz istotności problemów. Skąd pobrać Wartość tę zwykle trzeba zsumować z tabel pozycji, takich jak BSEG lub ACDOCA (pole WRBTR, kwota w walucie dokumentu). Przykłady 15000.00250.75-500.00 | |||
| Ostatnia aktualizacja danych LastDataUpdate | Znacznik czasu wskazujący, kiedy dane zostały ostatnio odświeżone lub wyodrębnione z systemu źródłowego. | ||
| Opis Ten atrybut zapisuje datę i godzinę ostatniego wyodrębnienia danych. Informuje, jak aktualne są dane analizowane w narzędziu process mining. Służy przede wszystkim do zarządzania danymi i informowania użytkowników. Osoby przeglądające dashboard mogą sprawdzić aktualność analizy, co jest szczególnie ważne w dashboardach do monitorowania zbliżonego do czasu rzeczywistego, takich jak 'Bieżący status zamknięcia okresu'. Dzięki temu wiadomo, czy analizowane dane pochodzą z dzisiaj, wczoraj czy z poprzedniego tygodnia. Dlaczego to ważne Informuje użytkowników o aktualności danych, dzięki czemu wiedzą, jak bieżące są wnioski dotyczące procesu. Skąd pobrać To metadane generowane i zapisywane w zbiorze danych przez narzędzie do wyodrębniania danych lub ETL podczas jego uruchomienia. Przykłady 2024-06-10T08:00:00Z2024-06-09T08:00:00Z | |||
| Rodzaj zapisu księgowego JournalEntryType | Rodzaj księgowanego dokumentu finansowego, pozwalający odróżnić standardowe zapisy, rozliczenia międzyokresowe i korekty. | ||
| Opis Rodzaj zapisu księgowego, określany w SAP jako typ dokumentu, to klucz klasyfikujący dokumenty księgowe. Określa, na jakich typach kont można zaksięgować dokument, i pozwala rozróżniać różne operacje biznesowe, na przykład fakturę od dostawcy (KR), księgowanie w księdze głównej (SA) lub płatność od klienta (DZ). Podczas zamknięcia okresu atrybut ten pozwala wyodrębnić konkretne rodzaje czynności. Analitycy mogą na przykład skupić się na księgowaniach korygujących, aby zasilić dashboard „Analiza księgowań korygujących” i KPI „Liczba księgowań korygujących”. Atrybut pomaga również obliczyć „Udział księgowań ręcznych”. Dlaczego to ważne Klasyfikuje operacje finansowe i pozwala skupić analizę na wybranych rodzajach księgowań, takich jak ręczne korekty, które mają znaczenie dla sprawnego zamknięcia okresu. Skąd pobrać To standardowe pole w tabeli nagłówkowej dokumentów finansowych BKPF (pole BLART). Przykłady Księgowanie w księdze głównejFaktura od dostawcyDokument księgowy | |||
| Rzeczywista data zakończenia ActualCompletionDate | Rzeczywista data zakończenia ważnej czynności lub całego zamknięcia okresu. | ||
| Opis Atrybut ten zapisuje rzeczywistą datę zakończenia ważnego etapu. Jest to znacznik czasu ostatniego zatwierdzenia sprawozdań finansowych lub zamknięcia okresu księgowania. Stanowi odpowiednik Dlaczego to ważne Podaje rzeczywisty czas realizacji etapów, niezbędny do oceny wyników względem planowanych terminów i analizy opóźnień. Skąd pobrać Pochodzi z pola EventTime ostatniej czynności w sekwencji, na przykład „Zatwierdzono sprawozdania finansowe” lub „Zamknięto okres księgowania”. Przykłady 2024-01-06T10:00:00Z2024-04-05T17:00:00Z2024-07-04T11:00:00Z | |||
| System źródłowy SourceSystemId | Identyfikator konkretnej instancji lub klienta SAP S/4HANA, z którego wyodrębniono dane. | ||
| Opis Ten atrybut wskazuje system, z którego pochodzą dane. W środowiskach z wieloma instancjami SAP, na przykład dla różnych regionów lub jednostek biznesowych, pozwala rozróżnić źródła danych. Służy przede wszystkim do zarządzania danymi, audytu i zapewnienia ich integralności. W analizie można go użyć jako filtra do porównywania procesów z różnych systemów źródłowych po połączeniu ich w jednym modelu process mining. Dlaczego to ważne Zapewnia informacje o pochodzeniu danych i ich kontekst, co ułatwia ustalenie źródła, zwłaszcza w środowiskach z wieloma systemami. Skąd pobrać To zwykle metadane dodawane podczas wyodrębniania danych, często pobierane z identyfikatora systemu SAP (SY-SYSID) lub klienta (SY-MANDT). Przykłady S4H_PROD_100S4H_QAS_200ECC_LEGACY_001 | |||
| Waluta dokumentu DocumentCurrency | Kod waluty, w której podano kwoty w dokumencie finansowym. | ||
| Opis Atrybut ten określa walutę, w której zarejestrowano transakcję, na przykład USD, EUR lub JPY. Zapewnia niezbędny kontekst dla atrybutu W organizacjach działających w wielu krajach analiza według waluty może mieć duże znaczenie. Pozwala prawidłowo interpretować kwoty i jest niezbędna do przeliczenia ich na jedną walutę raportową w analizie zbiorczej. Bez tej informacji wartości Dlaczego to ważne Zapewnia niezbędny kontekst do prawidłowej interpretacji kwot, szczególnie gdy używa się wielu walut. Skąd pobrać Znajduje się w tabeli nagłówkowej dokumentów finansowych BKPF (pole WAERS). Przykłady USDEURJPY | |||
Działania w procesie Record to Report: zamknięcie okresu i uzgadnianie
| Działanie | Opis | ||
|---|---|---|---|
| Okres otwarty do księgowania | To początek okresu finansowego, kiedy otwiera się okresy księgowania, aby można było rejestrować transakcje. Administrator finansowy wykonuje w SAP jawną, rejestrowaną zmianę konfiguracji, która umożliwia księgowanie zapisów w nowym okresie. | ||
| Dlaczego to ważne To główne zdarzenie rozpoczynające proces zamknięcia okresu. Pozwala dokładnie zmierzyć całkowity czas cyklu i wyznacza początek analizy procesu. Skąd pobrać Zdarzenie jest rejestrowane w dokumentach zmian (tabele CDHDR i CDPOS), które zapisują modyfikacje tabeli kontroli okresów księgowania T001B, zwykle wprowadzane za pomocą transakcji OB52. Rejestrowanie Przefiltruj dzienniki zmian tabeli T001B według odpowiedniego roku obrotowego i okresu. Typ zdarzenia explicit | |||
| Rozpoczęto uzgadnianie konta | Oznacza początek ręcznego lub częściowo zautomatyzowanego procesu potwierdzania sald kont księgi głównej. Zdarzenie można wywnioskować ze zmiany statusu uzgodnienia z 'New' na 'In Progress' lub z zarejestrowania pierwszego działania osoby przygotowującej uzgodnienie. | ||
| Dlaczego to ważne To ważny etap pozwalający określić czas i nakład pracy potrzebne do potwierdzenia sald bilansowych. Pomaga wskazać konta lub działy, które zbyt późno rozpoczynają uzgadnianie. Skąd pobrać Zdarzenie jest zwykle rejestrowane w dedykowanym narzędziu do uzgadniania, takim jak SAP Account Substantiation and Automation firmy BlackLine, lub w innym systemie zewnętrznym. Można je wywnioskować ze znaczników czasu zmian statusu. Rejestrowanie Śledź znacznik czasu pierwszej zmiany statusu z 'Not Started' dla uzgodnienia danego konta księgi głównej. Typ zdarzenia inferred | |||
| Rozpoczęto uzgadnianie międzyspółkowe | To początek procesu dopasowywania i uzgadniania transakcji między różnymi kodami spółek w ramach tej samej grupy kapitałowej. Proces często rozpoczyna się od uruchomienia zadania uzgadniającego lub utworzenia nowego case uzgodnienia w narzędziu ICMR w SAP. | ||
| Dlaczego to ważne Uzgadnianie międzyspółkowe bywa złożone i czasochłonne. Analiza jego czasu trwania i przebiegu pomaga usprawnić zamknięcie grupy oraz zadbać o poprawność skonsolidowanych danych finansowych. Skąd pobrać Zdarzenie można wywnioskować ze zmian statusu w module SAP Intercompany Matching and Reconciliation (ICMR) lub z utworzenia pierwszych dokumentów uzgodnieniowych dla danego okresu. Rejestrowanie W narzędziu ICMR śledź datę utworzenia lub znacznik czasu zmiany statusu jednostek uzgodnieniowych dla danego okresu. Typ zdarzenia inferred | |||
| Wygenerowano sprawozdania finansowe | To działanie oznacza utworzenie oficjalnych sprawozdań finansowych, takich jak bilans i rachunek zysków i strat. Zamyka ono procesy księgowe i konsolidacyjne na koniec okresu. | ||
| Dlaczego to ważne To ważny etap cyklu Record to Report. Termin jego realizacji ma zasadnicze znaczenie dla dotrzymania terminów sprawozdawczych i przekazania interesariuszom aktualnych informacji. Skąd pobrać Najlepiej rejestrować to zdarzenie w narzędziu do zarządzania zamknięciem finansowym, takim jak SAP Financial Closing Cockpit, gdzie jest ono jawnym zadaniem. W przeciwnym razie trzeba je wywnioskować z dzienników generowania raportów lub znaczników czasu utworzenia plików. Rejestrowanie Śledź status ukończenia zadania 'Generate Financial Statements' w narzędziu do zarządzania zamknięciem albo analizuj dzienniki wykonania raportów. Typ zdarzenia inferred | |||
| Zaksięgowano korygujący zapis księgowy | Oznacza korygujący zapis księgowy wprowadzony po wstępnym uzgodnieniu, zwykle w celu usunięcia rozbieżności wykrytych podczas weryfikacji. Jest to jawna transakcja zaksięgowana w księdze głównej. | ||
| Dlaczego to ważne Częste księgowanie korekt wskazuje na niską jakość wcześniejszych procesów lub uzgodnień. Analiza tych zapisów pomaga ustalić przyczyny błędów i ograniczyć konieczność ponownej pracy. Skąd pobrać Zdarzenie jest rejestrowane jako jawne dokumenty w tabelach ACDOCA i BKPF. Można je rozpoznać po określonych typach dokumentów, dacie księgowania przypadającej na późny etap zamknięcia lub konkretnych opisach tekstowych. Rejestrowanie Przefiltruj zapisy księgowe w BKPF, uwzględniając typ dokumentu i datę księgowania w odniesieniu do działań związanych z uzgadnianiem. Typ zdarzenia explicit | |||
| Zamknięto okres księgowania | To ostatnie działanie w cyklu. Okres księgowania zostaje formalnie zamknięty, aby uniemożliwić rejestrowanie kolejnych transakcji. Chroni to integralność danych w zatwierdzonych sprawozdaniach finansowych. | ||
| Dlaczego to ważne To ostateczne zdarzenie kończące proces. Jest niezbędne do obliczenia całkowitego czasu cyklu zamknięcia okresu i analizy trendów dotyczących ukończenia procesu. Skąd pobrać Podobnie jak otwarcie okresu, zdarzenie jest rejestrowane w dokumentach zmian (tabele CDHDR i CDPOS), które zapisują aktualizacje tabeli kontroli okresów księgowania T001B wprowadzone za pomocą transakcji OB52. Rejestrowanie Przefiltruj dzienniki zmian tabeli T001B, aby wskazać zamknięcie odpowiedniego roku obrotowego i okresu. Typ zdarzenia explicit | |||
| Zatwierdzono uzgodnienie konta | To ostateczne zatwierdzenie uzgodnienia konta księgi głównej, które potwierdza, że saldo zostało uzasadnione, a wszystkie problemy rozwiązane. Zdarzenie można wywnioskować ze zmiany statusu na 'Approved' w narzędziu do uzgadniania. | ||
| Dlaczego to ważne Ten etap oznacza zakończenie ważnej czynności kontrolnej. Śledzenie czasu zatwierdzania pomaga wykrywać wąskie gardła w procesie weryfikacji i mierzyć liczbę poprawek oraz skuteczność za pierwszym razem. Skąd pobrać Zdarzenie jest rejestrowane w systemie zarządzania uzgodnieniami, takim jak SAP Account Substantiation and Automation, na podstawie znacznika czasu ostatecznego zatwierdzenia. Rejestrowanie Ustal znacznik czasu, w którym pole statusu uzgodnienia zmienia się na końcowy stan 'Approved'. Typ zdarzenia inferred | |||
| Przeliczenie wartości w walutach obcych | To standardowa procedura na koniec miesiąca, która służy do przeliczenia otwartych pozycji i sald w walutach obcych według kursów z końca okresu. Uruchomienie programu powoduje zaksięgowanie różnic z wyceny. | ||
| Dlaczego to ważne Zapewnia zgodność ze standardami rachunkowości i rzetelny obraz sytuacji finansowej. Śledzenie tego działania pomaga dopilnować, by wycena wszystkich walut odbyła się na czas. Skąd pobrać Zdarzenie jest rejestrowane w dziennikach wykonania programu wyceny walut obcych (np. FAGL_FCV). Szczegóły zadań są przechowywane w tabelach TBTCO i TBTCP. Rejestrowanie Monitoruj dzienniki wykonania zadań powiązanych z transakcją FAGL_FCV lub jej programem bazowym. Typ zdarzenia explicit | |||
| Przygotowano zestawienie obrotów i sald | Oznacza wygenerowanie i zapisanie zestawienia obrotów i sald do weryfikacji. To ważny punkt kontrolny przed sporządzeniem końcowych sprawozdań finansowych. Rejestracja tego zdarzenia często zależy od tego, czy zapisano wynik raportu. | ||
| Dlaczego to ważne Przygotowanie zestawienia obrotów i sald jest ważnym punktem kontroli jakości. Analiza terminu jego przygotowania pomaga ocenić gotowość do sporządzenia końcowych sprawozdań i wykryć opóźnienia na wcześniejszych etapach. Skąd pobrać Często nie jest to jawne zdarzenie. Można je wywnioskować z wykonania określonej transakcji raportowej, jeśli warianty zapisano wraz z użytkownikiem i datą, albo jeśli proces jest zarządzany w narzędziu takim jak SAP Financial Closing Cockpit. Rejestrowanie Należy przeanalizować system, aby ustalić, czy istnieje wiarygodny mechanizm rejestrowania, na przykład dzienniki wykonania raportów lub listy zadań w narzędziu do zarządzania zamknięciem. Typ zdarzenia inferred | |||
| Uruchomiono automatyczne rozliczanie | Oznacza uruchomienie programów automatycznego rozliczania w SAP, takich jak rozliczanie GR/IR (przyjęcie towaru/faktura). Zadania te dopasowują i rozliczają pozycje otwarte na określonych kontach księgi głównej, ograniczając nakład pracy przy ręcznym uzgadnianiu. | ||
| Dlaczego to ważne To działanie pokazuje poziom automatyzacji procesu uzgadniania. Błędy lub wyjątki podczas tych uruchomień mogą prowadzić do znacznej ilości pracy ręcznej i opóźnień. Skąd pobrać Zdarzenie jest rejestrowane w dziennikach wykonania określonych zadań wsadowych, takich jak F.13 lub F.13E do automatycznego rozliczania. Szczegóły wykonania znajdują się w tabelach dziennika zadań TBTCO i TBTCP. Rejestrowanie Monitoruj znaczniki czasu rozpoczęcia i zakończenia zadań powiązanych z transakcjami takimi jak F.13 w dziennikach zadań SAP. Typ zdarzenia explicit | |||
| Wykonano zadania konsolidacyjne | Oznacza wykonanie działań konsolidacyjnych w SAP Group Reporting, takich jak przeliczenie walut, reklasyfikacja i eliminacja zysków międzyspółkowych. Zadania te są zwykle zarządzane i rejestrowane w monitorze konsolidacji. | ||
| Dlaczego to ważne W organizacjach obejmujących wiele podmiotów prawnych konsolidacja jest jednym z etapów decydujących o terminie zamknięcia. Monitorowanie tych zadań pomaga usprawnić zamknięcie grupy i terminowo przygotować skonsolidowane sprawozdania. Skąd pobrać Zdarzenie jest rejestrowane w dziennikach statusów w Data Monitor lub Consolidation Monitor w SAP S/4HANA for Group Reporting. Każde zadanie ma zwykle przypisanego użytkownika, znacznik czasu i status. Rejestrowanie Wyodrębnij dzienniki wykonania zadań z tabel bazowych monitora konsolidacji Group Reporting. Typ zdarzenia explicit | |||
| Zakończono transfer danych z ksiąg pomocniczych | Oznacza zakończenie zadań wsadowych, które przenoszą zagregowane dane z ksiąg pomocniczych, takich jak należności, zobowiązania i ewidencja środków trwałych, do księgi głównej. Dzięki temu przed rozpoczęciem zamknięcia wszystkie powiązane transakcje operacyjne są ujęte w księdze głównej. | ||
| Dlaczego to ważne Opóźnienia w zamykaniu ksiąg pomocniczych mogą stać się poważnym wąskim gardłem całego procesu. Śledzenie tego działania pomaga wykryć nieefektywności w gromadzeniu i integracji danych z systemów źródłowych. Skąd pobrać Zdarzenie można wywnioskować z pomyślnego zakończenia określonych zadań wsadowych odpowiedzialnych za rozliczenie ksiąg i transfer danych. Dzienniki zadań znajdują się w tabelach TBTCO i TBTCP. Rejestrowanie W SAP, w przeglądzie zadań (transakcja SM37), sprawdź i monitoruj znaczniki czasu zakończenia odpowiednich zadań wsadowych. Typ zdarzenia explicit | |||
| Zaksięgowano rozliczenia międzyokresowe i rezerwy | To zdarzenie obejmuje utworzenie ręcznych zapisów księgowych dotyczących rozliczeń międzyokresowych, odroczeń i innych rezerw niezbędnych do prawidłowego sprawozdawczości finansowej zgodnie z zasadą memoriałową. Są to jawne transakcje zaksięgowane w księdze głównej. | ||
| Dlaczego to ważne Śledzenie tych księgowań pozwala analizować liczbę i terminy ręcznych korekt. Ich duża liczba może wskazywać na możliwości automatyzacji lub usprawnienia wcześniejszych etapów procesu. Skąd pobrać Zdarzenie jest rejestrowane jako jawne zapisy księgowe w tabeli dziennika uniwersalnego ACDOCA i tabeli nagłówków BKPF. Wpisy można rozpoznać po określonych typach dokumentów skonfigurowanych dla rozliczeń międzyokresowych. Rejestrowanie Przefiltruj dokumenty w tabeli BKPF według typu dokumentu (np. 'SA' lub typów niestandardowych) i daty księgowania przypadającej na dany okres. Typ zdarzenia explicit | |||
| Zatwierdzono sprawozdania finansowe | Oznacza ostateczne zatwierdzenie sprawozdań finansowych przez uprawnione kierownictwo przed ich publikacją. Często odbywa się poza systemem, ale można je rejestrować, jeśli istnieje formalny etap zatwierdzania cyfrowego. | ||
| Dlaczego to ważne To końcowy etap kontroli jakości i zgodności. Śledzenie czasu jego realizacji pomaga ocenić dotrzymywanie terminów sprawozdawczych i efektywność całego cyklu weryfikacji przez kierownictwo. Skąd pobrać Zdarzenie można zarejestrować, jeśli istnieje workflow lub pole statusu zatwierdzenia sprawozdania, na przykład w SAP Financial Closing Cockpit lub systemie zarządzania dokumentami. Rejestrowanie Wskaż pole danych i znacznik czasu informujące o ostatecznym zatwierdzeniu pakietu sprawozdań finansowych. Typ zdarzenia inferred | |||
Instrukcje wyodrębniania danych
Kroki
- Znajdź i sprawdź widoki CDS: Zaloguj się do systemu SAP S/4HANA za pomocą SAP HANA Studio lub Eclipse z ADT. Wyszukaj w ABAP Development Tools standardowe widoki CDS wymienione w zapytaniu, takie jak I_JournalEntryItem, I_BatchJob i I_ConsolidationTaskLog, i sprawdź, czy są dostępne. W przypadku procesów takich jak uzgadnianie kont może być konieczne utworzenie własnych widoków CDS, na przykład Z_I_ACCOUNTRECONCILIATION, aby rejestrować zmiany statusu.
- Udostępnij widoki CDS przez OData: W systemie SAP uruchom transakcję
SEGW(Gateway Service Builder) i utwórz nowy projekt. Kliknij prawym przyciskiem folder Data Model i wybierz „Reference -> Data Source”. Dodaj wymagane widoki CDS. Wygeneruj obiekty wykonawcze, aby utworzyć usługę OData udostępniającą te widoki zewnętrznym narzędziom. - Aktywuj usługę OData: W hubie SAP Gateway uruchom transakcję
/IWFND/MAINT_SERVICE. Kliknij „Add Service”, znajdź usługę wygenerowaną w poprzednim kroku i dodaj ją. Usługa będzie aktywna i gotowa do odpytywania. - Nawiąż połączenie z danymi: W wybranym narzędziu do wyodrębniania danych, takim jak Python, Power BI lub dedykowana platforma ETL, skonfiguruj połączenie z nową usługą OData. Potrzebny będzie adres URL usługi oraz dane uwierzytelniające z uprawnieniami dostępu do widoków CDS.
- Dostosuj i uruchom zapytanie: Skopiuj podane zapytanie SQL. Zmień wartości zastępcze dotyczące zakresu dat, kodów spółek oraz nazw własnych widoków CDS lub zadań wsadowych, tak aby odpowiadały konfiguracji systemu SAP. Uruchom zapytanie względem punktu końcowego usługi OData. OData używa innej składni (
$filter,$select), dlatego może być konieczne przełożenie logiki zapytania UNION ALL na osobne wywołania API, po jednym dla każdego działania. - Połącz dane o działaniach: OData zazwyczaj nie obsługuje złożonych zapytań UNION ALL w jednym wywołaniu. Dlatego należy wysłać osobne żądanie dla każdego bloku działań w zapytaniu, a następnie połączyć wyniki w jeden zbiór danych lub tabelę w używanym narzędziu.
- Przekształć i oczyść dane: Sprawdź połączone dane. Upewnij się, że kolumny
EventTimeiEndTimemają spójny format timestamp. Sprawdź, czyFinancialPeriodma prawidłowy format „YYYY-MM”. W razie potrzeby obsłuż wartości NULL w kolumnach takich jakResponsibleUserlubDocumentNumber. - Wyeksportuj dziennik zdarzeń: Wyeksportuj końcowy, połączony zbiór danych do pliku CSV. Nagłówki kolumn powinny odpowiadać wymaganym atrybutom, takim jak
FinancialPeriod,ActivityName,EventTime,EndTime,ResponsibleUseritd. Plik jest gotowy do przesłania do ProcessMind.
Konfiguracja
- Widoki CDS: Zapytanie korzysta z połączenia standardowych i własnych widoków CDS. Niezbędne są standardowe widoki, takie jak
I_JournalEntryItem(pozycje zapisów księgowych) iI_BatchJob(uruchomienia automatyczne). Własne widoki, takie jakZ_I_ACCOUNTRECONCILIATION, są często potrzebne do rejestrowania statusów procesów wewnętrznych, których nie obejmują widoki standardowe. - Zakres dat: Określ konkretny zakres dat, aby kontrolować ilość wyodrębnianych danych. W zapytaniu użyto wartości zastępczych
[Start Date]i[End Date]. Zazwyczaj warto uwzględnić od 3 do 6 pełnych okresów obrachunkowych, aby uzyskać miarodajne wyniki. - Najważniejsze filtry: Filtrowanie ma zasadnicze znaczenie dla wydajności i przydatności wyników. Zawsze filtruj według
CompanyCode. Inne ważne filtry obejmująLedger(np. „0L” dla księgi głównej),FiscalYearoraz konkretne wartościDocumentType, które pozwalają odróżnić standardowe księgowania od rozliczeń międzyokresowych i korekt. - Wymagania wstępne: Użytkownik uruchamiający wyodrębnianie danych musi mieć w SAP uprawnienia do wskazanych widoków CDS i usług OData (np. obiekty autoryzacyjne
S_SERVICE,S_RFC). Usługi SAP Gateway muszą być skonfigurowane i aktywowane. - Wydajność: Odpytanie
I_JournalEntryItemmoże mocno obciążać system. Zawsze stosuj selektywne filtry, zwłaszcza dotyczące dat, kodów spółek i ksiąg. Warto uruchamiać wyodrębnianie poza godzinami szczytu lub stosować ładowanie przyrostowe na potrzeby ciągłego monitorowania.
Przykładowe zapytanie sql
SELECT
CONCAT(CAST(PostingDate AS DATE FORMAT 'YYYY'), '-', CAST(PostingDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- This is a proxy; this activity is a configuration change often found in change logs (CDHDR/CDPOS for table T001B)
WHERE PostingPeriodVariant = '[Your Variant]' AND FiscalYear = '[Your Fiscal Year]' AND FromPostingPeriod = 1 AND AuthorizationGroup IS NOT NULL -- Logic to detect the opening event
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod, -- Infer period from Job Name if patterned, otherwise use job start date
'Subledger Data Transfer Completed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Subledger Job Prefix]%' AND JobStatus = 'F' -- 'F' for Finished
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(CreationDate AS DATE FORMAT 'YYYY'), '-', CAST(CreationDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Intercompany Reconciliation Started' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
CreatedByUser AS ResponsibleUser,
LeadingCompanyCode AS CompanyCode,
NULL AS GlAccountNumber,
ReconciliationCase AS DocumentNumber,
ReconciliationCaseStatus AS ReconciliationStatus,
NULL AS TargetCompletionDate,
NULL AS ProcessingTime
FROM I_ICRcnCase -- Part of SAP S/4HANA for group reporting
WHERE CreationDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Accrual Doc Type 1]', '[Accrual Doc Type 2]') -- e.g., 'SA', 'AC'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Automated Clearing Run Executed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'SAPF124%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'FAGL_FCV%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on like SAP Account Substantiation and Automation.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
ChangedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'In Progress' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'IN_PROGRESS' AND OldStatus = 'NEW'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Adjustment Doc Type 1]', '[Adjustment Doc Type 2]') -- e.g., 'AJ'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on product.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Approved' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
CAST(ChangedAt AS TIMESTAMP) AS EndTime,
ApprovedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'Approved' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'APPROVED'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Consolidation Tasks Executed' AS ActivityName,
CAST(TaskExecutionUTCTimestamp AS TIMESTAMP) AS EventTime,
CAST(TaskCompletionUTCTimestamp AS TIMESTAMP) AS EndTime,
ExecutedByUser AS ResponsibleUser,
ConsolidationUnitCompanyCode AS CompanyCode, -- Assuming mapping exists
NULL AS GlAccountNumber,
DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(TaskExecutionUTCTimestamp AS TIMESTAMP), CAST(TaskCompletionUTCTimestamp AS TIMESTAMP)) AS ProcessingTime
FROM I_ConsolidationTaskLog
WHERE ConsolidationTaskStatus = 'S' -- Successful
AND TaskExecutionUTCDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Trial Balance Prepared' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Trial Balance Job Prefix]%' AND JobStatus = 'F' -- Example: FAGL_TRIAL_BALANCE_RUN
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Fin Statement Job Prefix]%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- Approval is often a manual step. This requires a custom solution to capture.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(ApprovalYear, '-', LPAD(ApprovalPeriod, 2, '0')) AS FinancialPeriod,
'Financial Statements Approved' AS ActivityName,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EventTime,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EndTime,
ApproverUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
FinancialStatementVersion AS DocumentNumber,
'Approved' AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM Z_I_FINSTATEMENTAPPROVAL -- Placeholder for custom approval tracking view
WHERE ApprovalDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(LastChangeDate AS DATE FORMAT 'YYYY'), '-', CAST(LastChangeDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
CAST(LastChangeDateTime AS TIMESTAMP) AS EventTime,
CAST(LastChangeDateTime AS TIMESTAMP) AS EndTime,
LastChangedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- Proxy, see note on 'Period Opened'
WHERE PostingPeriodStatus = 'C' -- 'C' for Closed
AND LastChangeDate BETWEEN '[Start Date]' AND '[End Date]'; Kroki
- Potwierdź, że dostępny jest bezpośredni dostęp do odczytu schematu SAP HANA zawierającego wymagane tabele aplikacyjne. Ustal właściciela schematu dla ACDOCA, TBTCO, CDHDR i CDPOS. Zastąp w zapytaniu wartość zastępczą schematu zatwierdzoną nazwą.
- Ustal rok obrachunkowy, okres obrachunkowy, zakres kodów spółek i zakres dat wyodrębniania. Uwzględnij cały cykl zamknięcia, zwykle od trzech do sześciu miesięcy, i zastąp parametry dat wartościami odpowiednimi dla systemu.
- Sprawdź lokalne mapowania pól dotyczące zmian konfiguracji okresu księgowego, zakończenia zadań wsadowych, zmian statusu uzgadniania, konsolidacji, generowania raportów i zatwierdzeń. Zapytanie zawiera przykładowe nazwy obiektów źródłowych, które mogą nie występować w każdej instalacji SAP S/4HANA. Przed uruchomieniem zastąp je zatwierdzonymi widokami lub tabelami z Państwa systemu.
- Uruchom zapytanie przy użyciu poświadczeń bazy danych z uprawnieniami tylko do odczytu. Zapytanie tworzy osobny wiersz zdarzenia dla każdego wymaganego działania i nie wyprowadza dodatkowych zdarzeń na podstawie ich kolejności.
- Sprawdź zwrócone kolumny.
FinancialPeriodjest identyfikatorem sprawy,ActivityNameopisuje działanie, aEventTimezawiera wymagany znacznik czasu zdarzenia. KolumnyEndTime,ResponsibleUser,CompanyCode,GlAccountNumber,DocumentNumber,ReconciliationStatusiTargetCompletionDatesą uwzględniane, jeśli zawiera je rekord źródłowy. - Sprawdź, czy wynik obejmuje wszystkie wymagane działania, także te, dla których w danym okresie mogą nie istnieć rekordy źródłowe. Jeśli brakuje typów działań, zapytanie zwraca wiersz kontrolny z wartością
Activity Coverage Validationw kolumnieActivityName. Jeśli import do ProcessMind ma obejmować wyłącznie zdarzenia biznesowe, usuń ten wiersz lub obsłuż go osobno. - Porównaj wybrane zdarzenia z rekordami aplikacyjnymi SAP i dziennikami zadań. Sprawdź, czy zdarzenia dotyczące zapisów księgowych odpowiadają rekordom ACDOCA, zdarzenia zadań rekordom TBTCO, a zdarzenia zmian rekordom CDHDR i CDPOS lub skonfigurowanym źródłom danych o uzgodnieniach i zatwierdzeniach.
- Wyeksportuj wynik do pliku CSV w kodowaniu UTF-8 lub innym tabelarycznym formacie obsługiwanym przez ProcessMind. Zachowaj dokładne nazwy kolumn
FinancialPeriod,ActivityNameiEventTime. Posortuj dane wedługFinancialPeriodiEventTime, pozostawiając jeden wiersz dla każdego jawnie wyodrębnionego zdarzenia. - Prześlij dziennik zdarzeń do ProcessMind i ustaw
FinancialPeriodjako identyfikator sprawy,ActivityNamejako działanie, aEventTimejako znacznik czasu rozpoczęcia. Jeśli dostępna jest kolumnaEndTime, przypisz ją do znacznika czasu zakończenia. Pozostałe kolumny przypisz jako atrybuty zdarzenia lub sprawy.
Ważna informacja o mapowaniu źródeł: SAP S/4HANA nie ma jednej uniwersalnej struktury tabel dla wszystkich narzędzi do uzgadniania, monitorów konsolidacji, archiwów raportów, workflow zatwierdzania ani konfiguracji okresów księgowych. Zastąp w zapytaniu każde wystąpienie [Your table name] i [Your column name] zweryfikowanym obiektem i kolumną z Państwa systemu. Nie należy traktować wartości zastępczych jako gotowego do uruchomienia kodu SQL.
Konfiguracja
- Dostęp do bazy danych: Użyj użytkownika bazy SAP HANA z uprawnieniami tylko do odczytu i uprawnieniem SELECT dla ACDOCA, TBTCO, CDHDR, CDPOS oraz skonfigurowanych obiektów źródłowych dotyczących kontroli okresu księgowego, uzgadniania, konsolidacji, raportowania i zatwierdzeń.
- Konfiguracja schematu: Zastąp [Your SAP schema] rzeczywistą nazwą schematu zawierającego obiekty aplikacyjne. Sprawdź, czy są to tabele, widoki obliczeniowe czy zatwierdzone widoki raportowe.
- Zakres dat: Wyodrębnij cały cykl zamknięcia, zwykle od trzech do sześciu miesięcy. Uwzględnij działania otwierające i zamykające, późne księgowania, storna, zatwierdzenia oraz korekty po zamknięciu.
- Okres obrachunkowy: Filtruj według roku i okresu obrachunkowego używanego dla danego kodu spółki. Nie zakładaj, że okresy pokrywają się z rokiem kalendarzowym, jeśli wariant roku obrachunkowego jest inny.
- Company Code: Zastosuj filtr kodu spółki, jeśli proces obejmuje wybrane podmioty prawne. Jeśli zakres jest określany w osobnym mapowaniu organizacyjnym, użyj [Configure based on your system].
- Typy dokumentów: Ogranicz wyodrębnianie zapisów księgowych do typów dokumentów używanych przy rozliczeniach międzyokresowych, rezerwach, korektach, wycenie, rozliczeniach i innych księgowaniach związanych z zamknięciem. Przed włączeniem tych filtrów sprawdź lokalną konfigurację typów dokumentów.
- Status zadania: W działaniach dotyczących zakończenia uwzględniaj tylko zadania ukończone lub zakończone pomyślnie. Przed zastosowaniem warunku statusu sprawdź lokalne wartości statusów TBTCO.
- Dokumenty zmian: Filtruj CDHDR i CDPOS według odpowiedniej klasy obiektu i wskaźników zmian, po sprawdzeniu lokalnej konfiguracji. Same dokumenty zmian mogą nie wskazywać wszystkich działań biznesowych.
- Źródła uzgodnień i zatwierdzeń: Skonfiguruj zweryfikowane obiekty źródłowe dla zmian statusu uzgodnień, działań osób przygotowujących, zatwierdzeń, terminów docelowych i podpisów elektronicznych. Źródła zależą od wdrożonych komponentów i rozszerzeń SAP.
- Wydajność: Ogranicz warunki filtrowania według roku i okresu obrachunkowego, kodu spółki, daty księgowania i znacznika czasu zdarzenia. Stosuj filtry w każdej części UNION ALL, unikaj nieograniczonego skanowania ACDOCA i uruchamiaj zapytanie w zatwierdzonym oknie raportowym.
- Typy danych: Ujednolić znaczniki czasu pod względem strefy czasowej i typu danych. Zamień puste ciągi na NULL i zachowaj zera wiodące w kodach spółek, numerach kont i numerach dokumentów.
- Wymagania wstępne: Sprawdź, czy dostępne i uzupełnione są wymagane komponenty SAP, narzędzia do uzgadniania, funkcje konsolidacji, rejestrowanie zadań, aktywacja dokumentów zmian oraz rejestrowanie audytowe raportów lub workflow.
- Bezpieczeństwo i zgodność: Stosuj zasadę minimalnych uprawnień, chroń dane finansowe i dane użytkowników, dokumentuj cel wyodrębniania oraz przestrzegaj wymagań organizacji dotyczących audytu SAP i baz danych.
Przykładowe zapytanie sql
WITH
params AS (
SELECT
TO_DATE('[Start date YYYY-MM-DD]') AS start_date,
TO_DATE('[End date YYYY-MM-DD]') AS end_date,
'[Fiscal year]' AS fiscal_year_filter,
'[Fiscal period]' AS fiscal_period_filter,
'[Company code filter]' AS company_code_filter
FROM DUMMY
),
base_events AS (
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0') AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(a.BUDAT AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(a.USNAM AS NVARCHAR(80)) AS ResponsibleUser,
CAST(a.RBUKRS AS NVARCHAR(20)) AS CompanyCode,
CAST(a.RACCT AS NVARCHAR(40)) AS GlAccountNumber,
CAST(a.BELNR AS NVARCHAR(40)) AS DocumentNumber,
CAST(NULL AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Accrual document type]', '[Provision document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Adjusting Journal Entry Posted',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Adjusting journal entry document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Foreign Currency Valuation Run',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Foreign currency valuation document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Automated Clearing Run Executed',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Automated clearing document type]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Subledger Data Transfer Completed',
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job end timestamp column] >= p.start_date
AND j.[Job end timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job status column] = '[Successful job status]'
AND j.[Job name column] IN ('[AR transfer job]', '[AP transfer job]', '[Asset Accounting transfer job]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(j.[Job start timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job start timestamp column] >= p.start_date
AND j.[Job start timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job name column] IN ('[Intercompany reconciliation job]')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for intercompany reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('Started', 'In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Approved',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Approver user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(c.[Financial period column] AS NVARCHAR(20)),
'Consolidation Tasks Executed',
CAST(c.[Execution start timestamp column] AS TIMESTAMP),
CAST(c.[Execution end timestamp column] AS TIMESTAMP),
CAST(c.[Responsible user column] AS NVARCHAR(80)),
CAST(c.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(c.[Task identifier column] AS NVARCHAR(40)),
CAST(c.[Status column] AS NVARCHAR(40)),
CAST(c.[Target completion date column] AS DATE)
FROM [Your table name for consolidation execution] c
CROSS JOIN params p
WHERE c.[Execution start timestamp column] >= p.start_date
AND c.[Execution start timestamp column] < ADD_DAYS(p.end_date, 1)
AND c.[Status column] IN ('Completed', 'Successful')
UNION ALL
SELECT
CAST(t.[Financial period column] AS NVARCHAR(20)),
'Trial Balance Prepared',
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Responsible user column] AS NVARCHAR(80)),
CAST(t.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(t.[Report identifier column] AS NVARCHAR(40)),
CAST(t.[Status column] AS NVARCHAR(40)),
CAST(t.[Target completion date column] AS DATE)
FROM [Your table name for trial balance output] t
CROSS JOIN params p
WHERE t.[Report saved timestamp column] >= p.start_date
AND t.[Report saved timestamp column] < ADD_DAYS(p.end_date, 1)
AND t.[Status column] IN ('Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Generated',
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Responsible user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement output] f
CROSS JOIN params p
WHERE f.[Generation timestamp column] >= p.start_date
AND f.[Generation timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] IN ('Generated', 'Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Approved',
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approver user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement approval] f
CROSS JOIN params p
WHERE f.[Approval timestamp column] >= p.start_date
AND f.[Approval timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Opened For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Open'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Closed For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Closed'
),
activity_list AS (
SELECT 'Period Opened For Posting' AS ActivityName FROM DUMMY
UNION ALL SELECT 'Subledger Data Transfer Completed' FROM DUMMY
UNION ALL SELECT 'Intercompany Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Accruals And Provisions Posted' FROM DUMMY
UNION ALL SELECT 'Automated Clearing Run Executed' FROM DUMMY
UNION ALL SELECT 'Foreign Currency Valuation Run' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Adjusting Journal Entry Posted' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Approved' FROM DUMMY
UNION ALL SELECT 'Consolidation Tasks Executed' FROM DUMMY
UNION ALL SELECT 'Trial Balance Prepared' FROM DUMMY
UNION ALL SELECT 'Financial Statements Generated' FROM DUMMY
UNION ALL SELECT 'Financial Statements Approved' FROM DUMMY
UNION ALL SELECT 'Period Closed For Posting' FROM DUMMY
),
missing_activities AS (
SELECT
CAST(NULL AS NVARCHAR(20)) AS FinancialPeriod,
'Activity Coverage Validation' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(NULL AS NVARCHAR(80)) AS ResponsibleUser,
CAST(NULL AS NVARCHAR(20)) AS CompanyCode,
CAST(NULL AS NVARCHAR(40)) AS GlAccountNumber,
CAST(NULL AS NVARCHAR(40)) AS DocumentNumber,
CAST('Missing activity: ' || al.ActivityName AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM activity_list al
LEFT JOIN base_events b ON b.ActivityName = al.ActivityName
WHERE b.ActivityName IS NULL
)
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM base_events
UNION ALL
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM missing_activities
ORDER BY FinancialPeriod, EventTime, ActivityName Gotowi do rozpoczęcia?
Wykorzystaj ten szablon danych, aby zwiększyć efektywność i poprawić zgodność w organizacji. Już dziś rozpocznij usprawnianie procesu Record to Report.
Usprawnij zamknięcie i uzgadnianie w procesie Record to Report
Wykryj nieefektywności i skróć cykl zamknięcia nawet o 30%.
Nie trzeba podawać danych karty płatniczej. Rozpoczęcie zajmuje kilka minut.