SAP dla początkujących – background job

Każdy użytkownik SAP wykonuje codziennie wiele operacji w systemie. Nie zawsze świadomie, za pośrednictwem transakcji uruchamiamy programy ABAP, które się pod nimi kryją i przy ich użyciu wykonujemy operacje. Takie czynności wymagają interakcji z naszej strony, często również wiele czasu, a czasami nawet skupienia i wysiłku. Gdyby jednak spróbować zdefiniować zadanie, dzięki któremu system będzie wykonywać za nas te kroki automatycznie? Nawet wtedy kiedy nie ma nas w pracy? Do tego celu służy funkcja w SAP – background job. To są procesy, które możemy zaplanować jako zadanie wykonywane automatycznie w zdefiniowanym przez nas terminie i które mogą być regularnie powtarzane. Temat ten częściowo poruszyłem we wpisie o kontroli dostępności ATP, jednak tutaj skupimy się tylko na zagadnieniu background job.

Czym jest background job?

Background job jest zadaniem wykonywanym w tle. To nieinteraktywny proces działający w tle za codziennymi czynnościami wykonywanymi przez użytkowników systemu. Bardzo często my jako użytkownicy możemy nawet nie być świadomi, że SAP stale wykonuje jakieś funkcje za pośrednictwem programów, które użytkujemy każdego dnia.

Wyobraźmy sobie, że bez takich zadań musielibyśmy ręcznie wykonywać np.:

  • kontrolę dostępności ATP
  • ręcznie przekształcać zlecenia planowe w produkcyjne
  • tworzyć zamówienia do wygenerowanych zgłoszeń zapotrzebowania
  • uruchamiać przebieg MRP dla różnych materiałów i zakładów

To jest tylko mała garstka przykładów, które możemy zautomatyzować dzięki background job. Jak to dokładnie działa?

Definiowanie zadania SAP background job.

Aby zdefiniować zadanie wykonywane w tle przechodzimy do transakcji SM36. Następnie wprowadzamy nazwę zadania (1) oraz definiujemy jego klasę (2).

Rys. 1. Definiowanie zadania w SAP – background job.

System rozróżnia następujące klasy zadań:

  • A – priorytet najwyższy, którego wykonanie jest absolutnie niezbędne do prawidłowego funkcjonowania procesów w systemie. Zadania z tą klasą są zawsze przetwarzane w pierwszej kolejności
  • B – średni. Te zadania powinny być wykonywane w regularnych odstępach czasowych np. w celach statystycznych lub raportowych. One zawsze są wykonywane przed priorytetem C.
  • C – klasa najniższa. To jest domyślna klasa dla nowotworzonych zadań, która jak się domyślacie uruchamiana jest jako ostatnia.

Aby definiować zadania z klasą A lub B trzeba posiadać specjalne uprawnienia dla obiektu autoryzacji: Background processing: background administrator.

Definiowanie odbiorcy zadania

Jeśli chcielibyśmy aby system dodatkowo wysyłał wynik wykonywanego raportu na skrzynkę odbiorczą SAP to wystarczy wykonać kroki jak niżej.

Opcja ta jest bardzo wygodna jeśli chcielibyśmy zaplanować zrzut systemu z jakiejś transakcji wieczorem i sprawdzić jego wynik na drugi dzień rano. W ten sposób możemy np. kontrolować stany zapasów na magazynie z dnia poprzedniego, albo listę potwierdzonych zleceń przeniesienia itd. Oczywiście to zależy od raportu, jakiego chcemy użyć w zadaniu wykonywanym w tle.

Rys. 2. Definiowanie odbiorcy – lista spool.

Następnie klikamy ENTER lub wciskamy przycisk . System otworzy okienko w którym musimy zdefiniować nazwę programu, który ma zostać użyty w naszym zadaniu.

Wprowadzamy zatem nazwę programu oraz wariant, który ma zostać użyty.

Rys. 3. Definiowanie programu ABAP i wariantu.

Skąd wziąć nazwę programu. To proste – albo skorzystaj z listy na końcu artykułu albo w aktualnie otwartej transakcji SAP rozwiń menu systemowe. System pokaże Ci jaki program kryje się pod transakcją którą aktualnie przetwarzasz:

Rys. 4. Nazwa programu ABAP dla aktualnie przetwarzanej transakcji.

Nie zapomnij również zapisać wariantu selekcji, dla transakcji, którą będziesz chciał użyć bo później ten wariant użyjesz podczas definiowania zadania (rys. 3).

Po zapisaniu system wyświetli okno z listą kroków jakie zdefiniowałeś w zadaniu:

Rys. 5. Lista kroków zadania background job w SAP.

W ten sposób mamy już zdefiniowane kroki dla zadania. Teraz najważniejszy moment, w którym musimy zdefiniować okres oraz powtarzalność zadania, które będzie wykonywane w tle.

Wprowadzanie warunków rozpoczęcia zadania

Teraz musimy zdefiniować kiedy system powinien rozpocząć zadanie (podać dokładną datę lub godzinę). Jeśli chcemy aby zadanie zostało uruchomione natychmiast to po prostu zaznaczamy tą opcję. Ja w przykładzie zdefiniowałem aby zadanie zostało uruchomione 09.12.2021 o godzinie 22:00:00 (3). Jeśli chcesz aby zadanie wykonywane było w regularnych odstępach czasu, skorzystaj z przycisku „wartości okresów” (4). System wyświetli dodatkowe okno, w którym możesz zdefiniować wartości okresów.

Rys. 6. Definiowanie terminu rozpoczęcia – SM36

Pamiętaj również o definicji wartości ograniczeń. To jest bardzo ważna funkcjonalność, która pozwala uniknąć „zmulenia” systemu niepotrzebnymi zadaniami wykonywanymi w weekendy. Więcej opowiadam o tym na filmie, do którego znajdziesz link na końcu wpisu.

W celu definicji ograniczeń wciśnij przycisk „ograniczenia” (1), następnie zdefiniuj kalendarz, dla którego system powinien sprawdzić, które dni są świętami, a które roboczymi (2).

Wybierz jedną z opcji widocznej na rysunku 7 (3):

Rys. 7. Ograniczenia daty rozpoczęcia w zadaniu wykonywanym w tle.

Teraz już możesz zapisać zadanie. Jeśli wszystko poszło poprawnie, to system powinien wyświetlić komunikat jak niżej:

Rys. 8. Komunikat informujący o powodzeniu definicji zadania w SM36.

Monitorowanie zadań w transakcji SM37.

Domyślnie system zapisuje zadanie ze statusem „zwolnione”. Oznacza to, że zadanie czeka na wykonanie w zdefiniowanym przez nas terminie. Aby wyświetlić listę wszystkich zadań należy przejść do transakcji SM37, następnie:

  1. Wprowadzić nazwę zadania lub użytkownika, który zdefiniował zadanie
  2. Wybrać odpowiedni status dla zadania
  3. Zdefiniować warunki uruchomienia zadań.
Rys. 9. Prosty wybór zadań – ekran selekcji.

Znaczenie statusów wynika już z samej ich nazwy, mianowicie planowane to takie, które jeszcze nie zostało zwolnione. Zadanie zwolnione to takie, które czeka na wykonanie, a zadanie „aktywne” to takie, które aktualnie jest w trakcie przetwarzania.

Następnie wciśnij na klawiaturze przycisk „F8” albo użyj przycisku z symbolem zegarka. System wyświetli zadania zgodnie ze zdefiniowanymi uprzednio kryteriami.

Jak widzicie na obrazku nr. 10 system wyświetlił zadanie, które zostało już wykonane oraz kolejne, które jest zaplanowane do uruchomienia.

Rys. 10. Przegląd zadań – transakcja SM37.

Z menu transakcji mamy szereg możliwości do wykonania na zaznaczonym zadaniu, np. możemy je zmodyfikować, usunąć lub zmienić status ze „zwolnionego” na „zaplanowane” (1).

Dodatkowo po kliknięciu w przycisk „Krok” możemy wyświetlić szczegółową listę kroków, jakie zostały zdefiniowane w zadaniu oraz użytych wariantów dla programu (2).

Rys. 11. Modyfikacje zadania zaplanowanego jako background job w transakcji SM37.

Jeśli nie masz uprawnień do transakcji SM36 lub SM37 to nic straconego. Takie zadanie możesz również zaplanować bezpośrednio z transakcji do której posiadasz uprawnienia. Jeśli chciałbyś sprawdzić jak to zrobić to zapraszam do obejrzenia filmu opublikowanego na kanale SPS:

 

Na koniec gorąco zachęcam do korzystania z pliku z listą programów ABAP, które śmiało możesz wykorzystać do definiowania swoich własnych zadań za pośrednictwem transakcji SM36.

Dziękuje za uwagę i do następnego razu!

Chcesz być informowany o nowych wpisach?

Ja nie spamuje! Przeczytaj zasady polityki prywatności tego bloga.

5 1 vote
Article Rating
Subscribe
Powiadom o
guest
2 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
SAPuser

Dzięki za ten wpis a zwłaszcza za film. Ja akurat nie mam uprawnień do transakcji SM* i dlatego nawet nigdy nie myślałem o tworzeniu jobów tylko wysyłałem prośby do naszego IT. Nie wiedziałem, że bez tych uprawnień da się zaplanować zadanie bezpośrednio z normalnej transakcji. Dobrze, że obejrzałem film, bo we wpisie niestety nie ma o tym mowy. Dzięki za film – kawał dobrej roboty 😀
Pozdrawiam
Mateusz

2
0
Would love your thoughts, please comment.x