Czytając czwartą część serii SAP dla naprawdę początkujących zapoznaliśmy się z elementami składowymi okna GUI. Przyjrzeliśmy się bliżej ikonom w aplikacji SAP i funkcjom, jakie wykonują. Również praca z sesjami nie powinna już stanowić problemu.  Znając skróty i tricki wywołujące transakcje SAP, możemy iść dalej i spróbować je podzielić pod kątem obszaru przeznaczenia, ale przed tym sprawdźmy jak najłatwiej je znaleźć? Których z nich warto się uczyć? Czy w ogóle trzeba znać ich nazwy na pamięć? Jak personalizować warianty wyboru transakcji raportowych?

1. Transakcje SAP – kodyfikacja

Jak zdążyłeś już pewnie zauważyć, każda z transakcji posiada swój własny kod, który należy wprowadzić w menu komend. Celem tej kodyfikacji jest standaryzacja i skatalogowanie pod względem obszaru, w jakim są używane. Tutaj możemy zauważyć pierwszą zależność. Jest nią kodyfikacja pod względem celu zastosowania wywoływanej transakcji. W 80% podzielone są one na:

  1. Tworzenie (transakcje kończące się na 01)
  2. Edycja/zmiana (transakcje kończące się na 02)
  3. Wyświetlanie (transakcje kończące się na 03)

Druga wskazówką pomagającą odnaleźć odpowiednią transakcję jest jej symbol początkowy. Otóż, w 80% z nich pierwszy znak (lub dwa) symbolizują obszar do jakiego się odnoszą. Na pewno przyda się tutaj znajomość języka niemieckiego, ponieważ to właśnie od niego pochodzą nazwy skrótów. Te zaczynające się na V oznaczają grupę transakcji z modułu Sprzedaży i Dystrybucji (ang. „Sales and Distribution” a z niem. „Verkauf„).

Poniżej znajduje się lista najczęściej spotykanych skrótów: 

Kody transakcji Moduły/Obszary
F Finanse
FB Wspólne transakcje finansowe
FK Finansowe dane podstawowy dostawcy
FS Konta księgi głównej
M Gospodarka materiałowa
MB Zarządzanie zapasami (dokumenty materiałowe)
ME Zaopatrzenie
ME1x Zgłoszenie zapotrzebowania
ME2x Zamówienie
MK Dane dostawcy w MM
MM Gospodarka materiałowa
MR Weryfikacja faktury (MM)
V Sprzedaż i dystrybucja
VA Zlecenia sprzedaży
VF Płatności/faktury sprzedaży
XD Centralne dane podstawowe klienta
XK Centralne dane podstawowe dostawcy
CO Zlecenie produkcyjne/sterowanie produkcją
CA Stanowiska robocze i marszruty
CS Specyfikacje materiałowe (PP)
MD MRP (planowanie potrzeb materiałowych)
Tabela 1. Lista najczęściej używanych kodów transakcji SAP.

2. Co kryje się pod transakcjami?

Jak już mówiliśmy w poprzednich częściach serii, pod kodem transakcji kryją się programy ABAP oraz różne funkcje wywołujące procesy w systemie. Niekiedy przebywając w transakcji możemy kliknąć w pole, które przeniesie nas do kolejnej. Nie zawsze musimy być tego świadomi, ale czasami kliknięte pole może być podlinkowane pod zupełnie inny program. Wykonując codzienne zadania, przełączamy się pomiędzy programami i ich ekranami Dynpro, a klikając w łącza, jesteśmy odsyłani do jeszcze innych programów lub uruchamiamy jakąś funkcję. 

Aby sprawdzić w jakim kodzie transakcji i w jakim ekranie, aktualnie się znajdujemy wystarczy poszukać w pasku menu następującej ścieżki: system->status.

Zostanie wyświetlone okno jak na obrazku 1 ze szczegółową informacją o kodzie transakcji i programie, który za pomocą tego kodu został wywołany.

Rys. 1. Dane o transakcji SAP w statusie systemowym.

Jeśli będziemy przebywali w transakcji, która wymaga przejścia do dodatkowych podekranów (na zasadzie okna w oknie), to system wyświetli informację na temat programu oraz podprogramu, w którym się znajdujemy. Na rysunku 2 widać, że po przejściu do transakcji MM02 (SAPLMGMM) dodatkowo został wybrany obszar wglądów (podprogram SPLMGD1), w którym wybrano zakładkę MRP2 i kliknięto w sekcję nagłówka (w ekran o numerze 4004).

Rys.2. Dane wyświetlanego ekranu programu SAP.

Brzmi to bardzo zawile. Moim celem jest pokazanie, że transakcje, które wywołujemy poszczególnymi kodami, uruchamiają programy i ich ekrany. My natomiast, wykorzystujemy je do łatwego wprowadzania danych i nie zawsze jesteśmy świadomi co dzieje się w „bebechach”. Mówiąc prościej, wykorzystujemy „nakładki i formularze” (wchodzące w skład interfejsu SAP GUI), dzięki którym w przyjazny dla nas sposób, wprowadzamy ogromną liczbę danych do bazy, z której korzysta cała nasza firma. Co to właściwie oznacza?

Otóż to, że przebywając w transakcji A możesz edytować zakres danych, który jest w trakcie edycji przez innego użytkownika w transakcji B. Za pomocą różnych programów i ekranów dostaliście się do tej samej tabeli bazy danych i blokujecie się nawzajem, bo przetwarzacie ten sam rekord. W tym przypadku działa zasada, kto był pierwszy ten lepszy, a ten drugi ma pecha. Tutaj warto sobie uświadomić jak istotne jest rzetelne wprowadzanie danych. Możemy być pewni, że efekty naszej pracy będą wykorzystywane przez innych użytkowników w dalszych procesach.

3. Jak odszukać odpowiednie transakcje SAP?

3.1. Szukanie po drzewie menu SAP EASY ACCESS

Może to brzmieć niewiarygodnie, ale przeprowadzając ankietę wśród użytkowników systemu SAP (100 osób) otrzymałem wynik na podstawie którego można stwierdzić, że około 80% z nich ma poważne problemy z odnalezieniem transakcji. Mam tutaj na myśli sytuacje, w których użytkownik musi wykonać jakieś zadanie w systemie pierwszy raz (nie mówię tu o codziennych zadaniach wyuczonych na pamięć). Z kolei połowa z nich nigdy nie zmienia samodzielnie układu wyświetlania tylko korzysta z tego, jaki zastali z pierwszym dniem pracy i na nim pracują już zawsze. Duża część użytkowników stwierdziła, że jest to spowodowane strachem (bo można coś „namieszać”, albo „nie wiem czy mi wolno”). Ależ wolno! Czemu nie? Jeśli przez to znajdziesz sposób, w którym wykonasz swoją pracę o połowę szybciej? Wiecie, że połowę zadań wykonywanych w SAP, można wykonać na kilka sposobów w całkowicie różnych transakcjach? W końcu prowadzą one do tych samych tabel. Proszę spojrzeć na wachlarz transakcji dostępnych chociażby dla samego dokumentu zamówienia:

Rys. 3. Drzewo transakcji SAP dotyczące zamówienia

Na powyższym obrazku widać, że mamy do wyboru aż 9 transakcji służących do wyświetlanie tego samego rekordu danych, czyli zamówienia. Różnią się one sposobem selekcji pól dostępnych na pierwszym ekranie raportu. Jeśli chcielibyśmy odnaleźć zamówienia tylko dostarczane przez zakład A, to skorzystalibyśmy z transakcji ME2W, zamiast kombinować z definicją parametrów wyboru w innych transakcjach widocznych na zdjęciu. Decyzja, jaką transakcję wybierzesz, zależy od tego jaki wynik chcesz uzyskać szybko, w danym momencie. Raz możesz skorzystać z transakcji A, a innym razem z transakcji B w zależności od potrzeb.

Ktoś mógłby stwierdzić „łatwiej powiedzieć niż zrobić – nie jest łatwo znaleźć odpowiednią transakcję w drzewie menu”. Może i nawet bym się z tym zgodził, gdyby nie fakt, że jak już raz zrozumiesz jak one są poukładane to już zawsze będzie Ci łatwiej.

Patrząc na rysunek niżej zauważysz, że drzewo menu kataloguje transakcje modułami. W drzewie menu „biuro” znajdziesz szereg transakcji dotyczących stanowiska roboczego („business workplace”), w którym to możesz odczytywać wiadomości email, planować spotkania w terminarzu itd. W pozostałych obszarach menu znajdziesz:

Rys. 4. Układ menu transakcji SAP

Szukając odpowiedniej transakcji zadaj sobie pytanie, w jakim dziale pracujesz. W dziale produkcji? Dział ten należy do obszaru logistycznego (przyda się tutaj znajomość modułu, opisana w części 2 tego cyklu). Następnie zauważysz, że bez względu na to czy wybierzesz produkcję czy sprzedaż i dystrybucję to drzewo transakcji wygląda podobnie. W każdym module z osobna znajdziesz sekcję (patrz obrazek niżej):

  • Danych podstawowych dotyczących wybranego modułu (1)
  • Transakcje skatalogowane według funkcji jaką użytkownik pełni w danym dziale – może być odpowiedzialny za sterowanie produkcją (2)
  • Zestaw transakcji odpowiedni do dokumentów (obiektów) z jakimi pracuje wspomniany użytkownik w wybranym obszarze na dziale (3)
  • System informacyjny z raportami dedykowanymi tylko dla aktualnie wyświetlanego modułu w menu

Poza tym w każdym module znajdziemy również narzędzia ułatwiające pracę w danym obszarze (czasami automatyzację pracy).

Rys. 5. Drzewo menu dla modułu produkcyjnego.

Spróbujemy zatem znaleźć transakcję odpowiedzialną za potwierdzenie zlecenia produkcyjnego. Nie znam jej kodu. Gdzie bym jej szukał? Zlecenie produkcyjne jest obiektem modułu produkcyjnego, który należy do obszaru logistycznego. Wybrał bym więc: Logistyka ->Produkcja. Teraz pozostaje pytanie, co chcę potwierdzić? Zlecenie produkcyjne. W jakim obszarze mógłbym je znaleźć? Idąc drogą dedukcji poszedłbym do „sterowanie produkcją”, następnie szukając menu „zlecenie”, zauważyłbym tuż pod nim menu „potwierdzenie”. I jesteśmy w domu. Cała ścieżka wyglądałaby tak: Logistyka->Produkcja->Sterowanie produkcją->Potwierdzenie->Wprowadzanie->Dla operacji->Karta czasowa(CO11N).

Obiecaj, że jeśli to czytasz to choć jeden raz spróbujesz w taki sposób znaleźć nową dla siebie transakcję, bez jakiekolwiek korzystania ze ściągawek i bez pytania innych. Zobaczysz, że to Cię wciągnie i wiele na tym skorzystasz. Nie musisz znać nazw transakcji. Poruszając się samymi kodami użytkownik się bardzo ogranicza. Są i tacy co wychwalają się na prawo i lewo jakich to nie znają kodów transakcji. Wydaje im się, że są super ekspertami, a to nie o to w tej grze chodzi. Zresztą spróbuj i sam zrozumiesz. Byłoby miło jakbyś opisał swoje spostrzeżenia w komentarzu. Jeśli chcesz spróbować to mam dla Ciebie zadanie: znajdź, za pomocą menu SAP EASY ACCESS, transakcję w której otrzymasz raport z ilościami dla wszystkich potwierdzeń w obrębie dowolnej operacji w zleceniach produkcyjnych, za poprzedni miesiąc. Następnie porównaj sobie te dane z okresem przed pandemią. Pobaw się! Jak już naprawdę nie dasz rady to przeczytaj ten artykuł.

3.2 Transakcja do szukania innych transakcji 😉

Alternatywną metodą poza eksploracją menu jest po prostu wciśnięcie skrótu CTRL+F. Robimy to podczas przebywania na głównym oknie SAP EASY ACCESS. System otworzy okienko pop-up (rysunek niżej). Jeśli wiemy jak nazwać czynność, którą chcemy wykonać i mamy na tyle dużo szczęścia, że szukana transakcja będzie miała to słowo w nazwie to po prostu wpisujemy jego fragment, poprzedzając i kończąc symbolem *. Dodatkowo musimy zdefiniować, czy chcemy wyszukać w tekstach, czy może tylko w nazwach technicznych (to drugie mija się z celem bo jak znamy nazwę techniczną transakcji to nie potrzebujemy jej szukać).

Rys. 6. Wyszukiwanie transakcji metodą CTRL+F

Po wyszukaniu powyższym sposobem, system rozwinie menu i zaznaczy znalezioną transakcję.

Bardziej przydatną opcją jest transakcja SEARCH_SAP_MENU wywoływana w pasku poleceń. Po wprowadzeniu odpowiedniej frazy otrzymamy listę wszystkich transakcji, które ją zawierają. A żeby tego było mało, system wyświetli wszystkie węzły, które krok po kroku należy wybrać aby się tam dostać. Kolejność węzłów trzeba czytać od dołu. To jest kolejna metoda na nauczenie się logiki opisanej w sekcji 3.1.

Rys. 7. Wyszukiwanie transakcji metodą „SEARCH_SAP_MENU”

3.3. Transakcje SAP według funkcji pełnionej przez użytkownika

Większość transakcji, w obrębie danego procesu biznesowego połączone są jakby w jeden pakiet. Wyobraźcie sobie, że jesteście odpowiedzialni w pracy tylko za dane podstawowe materiałów i chcielibyście wyszukać wszystkich transakcji odpowiedzialnych właśnie za ten proces. Na szczęście są kody, które po wprowadzeniu w pasku komend, uruchamiają struktury menu adekwatne do roli w systemie. W przypadku danych podstawowych materiału wprowadziłbym skrót MM00.

Jeśli spojrzymy na poniższe zdjęcie to zauważymy, że po wprowadzeniu skrótu MM00, system otworzył menu tylko z transakcjami niezbędnymi do pracy na materiałach. Tym sposobem wyświetliśmy menu odpowiedzialne za partie, zapasy specjalne oraz dane podstawowe materiału.

Rys. 8. Menu początkowe „dane podstawowe materiału”.

Pełną listę kodów uruchamiających różne menu początkowe znajdziecie tutaj.

4. Droga na skróty czyli wykaz „najczęściej używane transakcje SAP”

W przypadku gdy już naprawdę będziesz zdesperowany możesz użyć poniższej listy w celu odnalezienia najczęściej stosowanych transakcji. Jeśli chcielibyście wzbogacić listę o dodatkowe moduły, proszę dać znać w komentarzu.

Moduł Opis
MM Gospodarka Materiałowa
SD Sprzedaż i Dystrybucja
PP Produkcja
FI Finanse
WM Gospodarka Magazynowa
Wykaz modułów z listą transakcji

5. Personalizacja transakcji i raportów

5.1. Ograniczenia dynamiczne

Jak już wiemy w jaki sposób znaleźć odpowiednią transakcję, to możemy zabrnąć nieco dalej i spróbować ją spersonalizować. Podczas pracy z systemem zauważysz, że wiele z nich posiada przycisk . Jest to opcja pozwalająca na wybór ograniczeń dynamicznych, uwzględnianych podczas uruchamiania raportu. Warto z takich ograniczeń korzystać jak najwięcej. Bardzo często bez ograniczeń dynamicznych, brakuje nam punktów zaczepienia, na podstawie których moglibyśmy przefiltrować wczytywane dane w raporcie. Bez tego jak bez ręki. Otóż wspomniany przycisk pozwala poszerzyć zakres wyszukiwania o dodatkowe pola tabeli, której dotyczy raport. Weźmy za przykład transakcję LT23, która służy do wyświetlania dokumentów zlecenia przeniesienia. Pierwszy ekran selekcji wspomnianego raportu pozwala na wybór danych zapisanych w tabeli LTAK – nagłówek zlecenia przeniesienia.

Rys. 9. Widok okna transakcji LT23.

Mamy tutaj zatem do wyboru tylko numer magazynu lub sam numer zlecenia przeniesienia oraz jego status i datę utworzenia. Co zrobić w sytuacji gdybyśmy chcieli wyświetlić dane na podstawie daty potwierdzenia (zamiast utworzenia) i do tego jeszcze zawęzić zakres wyszukiwania o te pozycje zlecenia przeniesienia, które pobierane były z konkretnego typu magazynu lub miejsca (lub przez wybranego użytkownika)? Dane źródłowych i docelowych typów magazynu oraz nazwy użytkowników potwierdzających, są przechowywane w pozycji dokumentu (w odrębnej tabeli LTAK). Nie wyselekcjonujemy takich danych z samego nagłówka dokumentu. Aby to zrobić potrzebujemy właśnie ograniczeń dynamicznych. Sprawdźmy zatem co uzyskamy przez ich rozwinięcie.

Na rysunku niżej widać, że ukazuje nam się spora lista pól zgrupowanych w dane nagłówka i pozycji dokumentu.

Rys. 10. Okno ograniczeń dynamicznych w transakcji LT23.

Po dwukrotnym kliknięciu w interesujące nas pola system daje możliwość sprecyzowania dalszych kryteriów. Na rysunku niżej widzimy, że wybrałem pola (1):

Warto pamiętać również o tym, że domyślnie możemy wprowadzić tylko jedną wartość dla każdego z nich (2), ale kiedy skorzystamy z opcji „wyboru wielokrotnego” (3) będziemy mogli manewrować przedziałami (4).

Nic nie staje na przeszkodzie aby pewne przedziały również wykluczyć. ja dla przykładu wybrałem przedział od …. do …. (5).

Rys. 11. Wybór ograniczeń dynamicznych i przedziałów.

5.2. Opcje wyboru wielokrotnego

W oknie wielokrotnych wyborów znajdziemy możliwość wyboru:

Rys. 12. Wybory wielokrotne w transakcjach SAP.

Po zdefiniowaniu odpowiednich wartości możemy pójść jeszcze dalej. Być może chcielibyśmy wybrać przedział od A do Z, który ma zostać nie wyświetlony, lecz wykluczony. Przypuśćmy, że zależy nam na wykluczeniu z raportu pewnych przedziałów. W takim przypadku należy kliknąć w kwadrat wskazany na rysunku niżej, lub postawić kursor na polu i wcisnąć F2. Pojawi się okno umożliwiające wstawienie opcji wyboru:

Rys. 13. Opracowanie opcji wyboru dla wyborów wielokrotnych.

Może czas na małą zagadkę? Bardzo często jestem o to pytany. Jak wykluczyć z raportu puste wartości? Przypuśćmy, że wczytaliśmy transakcję generującą raport, w którym w jednej kolumnie zdarzają się wiersze z pustą wartością i takie rekordy chcielibyśmy pominąć. Tutaj na pomoc przyjdzie opcja „różne”.

Wystarczy wybrać opcję wyboru i kliknąć „enter” bez wprowadzania jakichkolwiek wartości. Zawęzimy w ten sposób obszar wyszukiwania i system ominie wszystkie puste rekordy w wybranym przez nas polu (rysunek niżej).

Rys. 14. Wykluczanie wartości pustych na ekranie wyboru w SAP.

5.3. Zapisanie opcji wyboru jako wariant.

Co teraz zrobić jeśli napracowaliśmy się z wyborem interesujących nas danych i chcielibyśmy wykorzystać je w przyszłości? Po zdefiniowaniu wszystkich danych w ekranie selekcji transakcji wystarczy wcisnąć symbol . Zostaniemy pokierowaniu do ekranu opracowania atrybutów wariantu.

W polu 1 (poniższe zdjęcie) definiujemy nazwę dla wariantu a w polu 2 decydujemy o tym, które z pól chcemy ukryć lub „ochronić” przed edycją, albo oznaczyć pole jako obowiązkowe (system nie pozwoli pójść dalej jeśli nie wprowadzimy żadnej wartości).

W dolnej sekcji atrybutów wariantu znajdziemy pola, które wybraliśmy jako „ograniczenia dynamiczne”. Bardzo przydatna może okazać się opcja dynamicznej kalkulacji daty (3). Jeśli zapiszemy zakres dat, np. od stycznia do marca, to taki zakres dat otrzymamy również, jeśli uruchomimy raport w drugiej części roku. Może to się okazać uciążliwe. Byłoby super jakby system automatycznie podstawiał daty na 3 miesiące do tyłu od daty aktualnej.

Rys. 15. Ekran opracowania wariantu wyboru.

5.4. Dynamiczna kalkulacja daty

Mamy tutaj do wyboru dwie możliwości:

Rys. 16. Opracowywanie atrybutów wariantów – odczyt z tabeli TVARV.
Rys. 17. Dynamiczna kalkulacja daty.

Następnie przesunąć ekran w prawo i kliknąć w symbol kwadratu lub po postawieniu kursora na polu „nazwa zmiennych” wcisnąć klawisz F4:

Rys. 18. Wybór zmiennych dla dynamicznej kalkulacji daty.

Pojawi nam się lista ze zmiennymi. Znajdziecie tam wiele opcji do wyboru, które najlepiej samemu przetestować. Warto pamiętać o wskaźniku włączenia lub wyłączenia opcji decydującej o tym czy podane wartości powinny zostać wybrane przez wariant, czy może z niego wykluczone. Ja wybrałem opcję, która wybierze zaproponowany przeze mnie zakres dat. System będzie dokonywał kalkulacji od dnia aktualnego do 90 dni wstecz.

Rys. 19. Pole SIGN w strukturze tabel SELECT – wybór lub wykluczenie wartości.

Kolejnym krokiem będzie wybór opcji definiującej w jaki sposób system powinien wykorzystać zdefiniowany przez nas zakres. Czy powinien wybrać wartości mniejsze, większe, pojedyncze czy wszystkie w odniesieniu do wartości definiowanej w dalszym kroku.

Rys. 20. Pole OPTION w strukturze tabel SELECT-OPTIONS – wybór opcji.

Po zdefiniowaniu wyżej opisanych kroków wystarczy kliknąć dwukrotnie w pole „nazwa zmiennej” lub zatwierdzić ENTER. Pojawi się okienko pop-up, w którym wprowadzamy ilość dni wstecz, które powinny zostać uwzględnione w kalkulacji, w odniesieniu do lokalnej daty systemowej.

Rys. 21. Definiowanie ilości dni w polu dynamicznej kalkulacji daty.

Po zatwierdzeniu, widok zmiennych dla ograniczeń dynamicznych powinien wyglądać tak:

Rys. 22. Widok zdefiniowanych zmiennych dla dynamicznej kalkulacji daty.

5.4. Odczyt zapisanego wariantu

Po zapisaniu wariantu, zgodnie z poprzednimi punktami, będziemy w stanie w każdej chwili ekspresowo wygenerować raport, który dynamicznie wybierze datę na 90 dni do tyłu od aktualnej. Wystarczy z poziomu paska menu transakcji wybrać: skok do->warianty->odczyt lub wcisnąć skrót Shift+F5.

Rys. 23. Odczyt zapisanego wariantu wyboru w SAP.

System automatycznie dokona kalkulacji daty zgodnie z naszymi założeniami. Kilka dni temu pojawił się komentarz na kanale SPS i padło w nim pytanie: jak uzyskać raport pokazujący ilość wykonanych ruchów 999, przez wybranego użytkownika w danym okresie czasu (lub w danym dniu). Powyższe punkty niniejszego wpisu są odpowiedzią. Wystarczy zdefiniować ograniczenia dynamicznie: rodzaj ruchu WM „999”, użytkownik (należy zwrócić uwagę, które pole wybrać – osoba potwierdzająca i tworząca dokument może się różnić), aż wreszcie data potwierdzania (w naszym przykładzie automatycznie ustawiona na 90 dni wstecz od aktualnej).

Rys. 24. Widok opracowanych kryteriów selekcji przy użyciu ograniczeń dynamicznych.

6. Podsumowanie

Wiemy już jak wyszukać transakcje w SAP i znamy też reguły ich kodyfikacji. Podczas codziennej pracy z systemem będziemy już mogli nieco spersonalizować własne warianty wyboru co uczyni naszą pracę bardziej wydajną. Warianty mogą być zapisane tylko do użytku osoby, która je utworzyła ale również globalnie dla wszystkich użytkowników SAP. Jak zarządzać, edytować i zmieniać warianty wyboru w SAP dowiemy się z kolejnej części. W między czasie pobawcie się i spróbujcie stworzyć swoje własne warianty, które będą dynamicznie proponować datę. Sugerowałbym również jak najczęstsze korzystanie z ograniczeń dynamicznych dlatego, że uczymy się w ten sposób pól, zawartych w tabelach SAP oraz zależności między nimi. To w przyszłości zaowocuje. Do następnego razu i miłej gry w SAP!