SAP – wyszukiwanie ostatnich zmian w dokumentach
Jakiś czasu temu w pracy otrzymałem telefon z działu sprzedaży, z prośbą o pomoc. Właściwie jak rozmówca to określił z prośbą o ratowanie życia. Rozmówca dokonał zmian w dokumencie sprzedaży w SAP i z jakiegoś powodu, nie zapamiętał jego numeru a potrzebował pilnie tą zmianę cofnąć. Problem tkwił w tym, że pracował on z dużą ilością zleceń w tamtym momencie i pamiętał tylko co zmienił, ale nie pamiętał gdzie. Oczywiście jak zwykle zgodziłem się pomóc a dopiero później zastanawiałem się jak to zrobić.
Wielokrotnie wspominałem już na filmach na kanale youtube, że ogromna moc drzemie w znajomości tabel, nawet jeśli jesteś użytkownikiem końcowym, dlatego i tym razem postanowiłem skorzystać z narzędzia SQVI. Oczywiście nie będę ściemniał, że mam nazwy tabel w głowie, zostawiłem tam miejsce na bardziej przyziemne rzeczy. Po prostu jak zwykle zapytałem wujka Google o tabelę w której przechowywane są dokumenty zmian i otrzymałem odpowiedź, iż jest to tabela CDHDR.
Nie marnując czasu użytkownika czekającego na linii, zapytałem o jego login do SAP i orientacyjną godzinę o jakiej dokonał zmiany. Poprosiłem, żeby zadzwonił za 5 minut i zabrałem się za budowę bardzo szybkiego raportu w SQVI.
Wystarczy po prostu przejść do wspomnianej transakcji i wprowadzić nazwę dla tworzonego przez nas raportu.
Osobiście w swoim SQVI mam zapisanych około 30 raportów a korzystam może z 5 lub 6 na stale, dlaczego? Ponieważ nie pamiętam do czego służy ta cała reszta, którą nazwałem 123 lub 654 co widać na rysunku 1. Nie wiem czy też to zauważyliście ale większość SAP-owców jest bardzo skrupulatna i dokładna w tym co robi. Zawsze imponowali mi ci, którzy lubią mieć porządek w tworzonych przez siebie nazwach, plikach, skrótach itd. Nawet nazwy wszystkich tabel lub transakcji w SAP mają ukryty sens. Weźmy na przykład wspomnianą tabelę CDHDR – skąd ten skrót? Z angielskiego „Change Document Header”, czyli zmiany nagłówka dokumentu. Ale do czego zmierzam? Trzeba po prostu dziękować Bogu, że człowiek, który tworzył te nazwy nie nazywał tabel tak jak zrobiłbym to ja czyli: 123 lub 654 😉 Więc jeśli zaczynasz z SQVI to nie powielaj mojego błędu – nazywaj te raporty tak abyś w przyszłości wiedział do czego Ci służyły bo możesz często do nich wracać.
A więc definiujemy nazwę raportu i klikamy przycisk „tworzenie”.
Pojawi nam się kolejne okno, w którym musimy zdecydować czy korzystamy z połączenia tabel, czy może chcemy odczytać tylko jedną tabelę. Dodatkowo definiujemy tytuł dla raportu.
Następnie definiujemy pola, które chcemy udostępnić na liście naszego raportu (1) oraz pola, które będą dostępne na ekranie selekcji raportu (czyli to na podstawie czego będziemy chcieli szukać danych) (2) i klikamy po prostu w „wykonanie” (3).
Po kliknięciu przycisku „wykonanie” ukaże nam się ekran selekcji raportu, w którym możemy wprowadzić dane na podstawie których chcemy uzyskać jakiś wynik. W tym wypadku akurat chciałem znaleźć zmiany w dokumentach dokonane przez wybranego użytkownika (1) w zakresie dat (2) oraz w zdefiniowanych przeze mnie przedziałach godzinowych (3). Gdyby pojawiła się taka potrzeba to można by nawet wybrać nazwę transakcji za pomocą, której jakiś użytkownik dokonał zmian (4).
Po wybraniu danych jak w rysunku 4, system podał jak na dłoni wszystkie zmiany dokonane przez użytkownika w wybranym zakresie godzin. Czyli wiemy już, że użytkownik dokonał zmiany w dokumencie zlecenia sprzedaży 0203187308 (1) w transakcji VA02 (2). Patrząc natomiast na godziny, widzimy, że użytkownik ten majstrował coś wcześniej w transakcji VD02.
Oczywiście dane te mówią nam tylko o tym w jakim dokumencie użytkownik dokonał zmian. Dlaczego? Ponieważ skorzystaliśmy z tabeli dokumentu zmian dla nagłówka dokumentu. Mamy więc dane nagłówka zmienianego dokumentu. Wiemy, że dokument oprócz nagłówka posiada jeszcze pozycje i gdyby zależało nam na uzyskaniu informacji w jakich polach pozycji dokumentu były dokonywane zmiany musielibyśmy skorzystać z dodatkowej tabeli podczas generowania raportu w SQVI. Ale o tym później, wróćmy teraz do wspomnianej sytuacji z życia wziętej.
Rys. 5. Wynik raportu SQVI
Oczywiście po uzyskaniu raportu, wiedziałem już, że będę w przyszłości chciał go używać – bo okazał się przydatny, tak więc zapisałem zmiany .
Chcąc taki raport udostępnić innemu użytkownikowi (by korzystał z niego samodzielnie w przyszłości) skorzystałem z menu dostępnego na poziomie ekranu głównego transakcji SQVI. Należy po prostu wybrać menu: szybki przegląd ->Dalsze funkcje->Generowanie programu. Później powtórzyć jeszcze raz ten krok ale tym razem jako ostatnie wybrać „wyświetlanie nazwy raportu”.
System wyświetli nam nazwę raportu, którą możemy udostępnić dowolnemu użytkownikowi w transakcji SA38.
Po tym zabiegu oddzwoniłem do tej osoby i udzieliłem mu odpowiedzi na pytanie w jakim dokumencie dokonał zmiany między podanymi przez niego godzinami. Żebyście mogli usłyszeć te wyrazy wdzięczności. To było jak ratowanie życia, a cały zabieg trwał naprawdę nie dłużej niż 5 minut. Zaproponowałem temu komuś aby sprawdził czy ma dostęp do transakcji SA38. Miał. Więc wysłałem mu emailem nazwę wygenerowanego przeze mnie raportu: AQ10SYSTQV000375ZMIANY========
W odpowiedzi usłyszałem tylko: „Wow!! Skąd Ty znasz takie nazwy transakcji? ” – i co tu odpowiedzieć? No przecież nie z głowy… długa historia 😉 To jest po prostu moc SQVI.
Ale ktoś mógłby zapytać: co jeśli chciałbym wiedzieć co dokładnie użytkownik zmienił w tym dokumencie? Po prostu trzeba by było utworzyć raport w analogiczny sposób tylko z wykorzystaniem dwóch tabel. A więc ponownie wujek Google podpowie, że tabela do wyświetlania dokumentów zmian ale tym razem dla pozycji to CDPOS.
I tak wcześniej tworzymy raport z tą różnicą, że tym razem wybieram opcję połączenia tabel (4):
Następnie w kolejnym ekranie klikamy w przycisk (1) i w polu (2) dodajemy tabelę i zatwierdzamy (3) i tak robimy kilka razy aż wprowadzimy wszystkie tabele.
Następnie system sam zaproponuje połączenie tabel jak niżej. Oznacza to, że system używa dwóch oddzielnych tabel. Każda z nich przechowuje jakieś dane, ale system musi te tabele połączyć wspólnymi polami aby powstała jedna, sensowna całość. Już na poniższym rysunku (rys. 10) widzimy, że w tabeli CDPOS znajdują się pola „VALUE_NEW” i „VALUE_OLD” co by oznaczało, że uzyskamy odpowiedź na pytanie: co było zmieniane w dokumencie i jaką miało wartość przed zmianą.
W kolejnym etapie, tak samo jak w poprzedniej metodzie, wybieramy po prostu pola, które chcemy pokazać w raporcie i te które chcemy mieć na ekranie selekcji. A my chcemy w raporcie mieć dane nazwy zmienianego pola oraz jego wartość przed i po zmianie.
Jako wynik otrzymaliśmy informację, w której widzimy, że w wybranym zakresie dat dokonano zmian w transakcji VA02. W pierwszej kolumnie po lewej widzimy w jakim polu wprowadzane były zmiany a w pozostałych dwóch kolumnach widzimy stare i nowe wartości. Jeśli te nazwy nic nam nie mówią, to wystarczy po prostu wyświetlić jakiś wybrany numer dokumentu np. w transakcji VA02 czy jakiejkolwiek innej, której dotyczy raport i namierzyć te pola. Z czasem jednak nauczycie się rozpoznawać te nazwy bez uczenia się ich na pamięć.
Na koniec chciałbym nadmienić, że w trakcie tworzenia wspomnianego raportu coś mi zaświtało w głowie, że temat ten był już poruszany przez Dominika Tylczyńskiego we wpisie o uniwersalnym wyświetlaniu dokumentów zmian w SAP ERP opublikowanym na stronie Polskiej Grupy Użytkowników SAP. Faktycznie mógłbym z niego korzystać – zapomniałem o tym wcześniej. Tak jak piszę Dominik wystarczy w transakcji SA38 wybrać raport: RSSCD100, a następnie wybrać obiekt w którym dokonano zmiany:
Jednakże mi akurat jako normalnemu użytkownikowi znalezienie wybranego obiektu przysparza trochę trudności. Mógłbym z drugiej strony po prostu nie wybierać nic tylko po prostu wprowadzić nazwę użytkownika i odpowiednie daty. Jednak grzebanie w SQVI pozwala troszkę zapoznać się z nazwami tabel , a poza tym – być może jestem czubkiem ale przynosi mi to niezłą frajdę 🙂
Pozdrawiam serdecznie wszystkich i do następnego razu!
SAP ERP, SAP MM, SAP SD, dokumenty zmian, SAP program, SAP szkolenie, SAP tutorial, SAP po polsku