Data-2-Code vs Code-2-Data

Klasyczne raporty ALV są pisane zgodnie z koncepcją Data-2-Code, która oznacza, że generalnie dane są pobierane z bazy danych w niezmienionej postaci na poziom serwera aplikacji i tamże dopiero obrabiane do wymaganej postaci finalnej. Baza danych w tej koncepcji nie pełni szczególnie istotnej roli obliczeniowej, wspierane są tylko podstawowe operacje SQL. Oczywiście w przypadku zastosowania tradycyjnych (dyskowych) baz danych ta koncepcja była i jest nadal słuszna. SAP HANA otwiera jednak zupełnie nowe możliwości; po pierwsze SAP HANA przechowuje całość danych w pamięci operacyjnej (RAM), a po drugie – SAP HANA zawiera wbudowane algorytmy, które potrafią efektywnie czynić użytek z nowoczesnych maszyn wieloprocesorowych. Nie bez znaczenia jest również tzw. kolumnowa organizacja danych w pamięci, która ma szczególnie pozytywne przełożenie na możliwości raportowania analitycznego. Klasyczne raporty ALV uruchomione na systemie SAP pracującym na bazie SAP HANA będą oczywiście też szybsze (dane w pamięci zamiast na dysku), ale dopiero raporty przeprojektowane zgodnie z koncepcją Code-2-Data są znacznie szybsze (o kilka rzędów wielkości). W skrócie chodzi o to, aby maksymalnie wykorzystać możliwości przetwarzania danych samej bazy danych. W koncepcji Code-2-Data dane są pobierane na poziom serwera aplikacji w postaci finalnej, a obróbką i przygotowaniem danych zajmuje się baza danych SAP HANA. Koncepcja Code-2-Data jest również nazywana koncepcją Code Pushdown, od „zepchnięcia w dół” przetwarzania danych na poziom bazy danych. Raporty ALV IDA są właśnie tworzone zgodnie z tą koncepcją dzięki czemu są tak szybkie.

Klasyczny raport ALV vs. raport ALV IDA – struktura programu

Każdy raport ALV – zarówno klasyczny, jak i IDA składa się zasadniczo z pięciu bloków logicznych:

  • Kryteriów selekcji i parametrów wykonania raportu;
  • Algorytmu selekcji danych;
  • Algorytmu obróbki danych;
  • Algorytmu konfiguracji kontrolki ALV;
  • Wywołania kontrolki ALV.

Klasyczny raport ALV jest w całości pisany za pomocą języka programowania ABAP i jest dostępny najczęściej w postaci kodu transakcji. W raporcie ALV IDA przeobrażeniu ulega przede wszystkim blok selekcji i obróbki danych (zaznaczony kursywą). Selekcję danych i ich obróbkę definiuje się za pomocą tzw. wglądów CDS (Core Data Services), a za jej wykonanie odpowiedzialne są algorytmy wbudowane w bazę danych SAP HANA. Wglądy CDS są niezależnymi obiektami repozytorium ABAP definiowanymi za pomocą języka DDL (Data Definition Language). Wglądy CDS są niejako „przepisami” do wykonania selekcji i obróbki danych na poziomie bazy danych SAP HANA. W samym raporcie ALV IDA przypisanie do wglądu CDS jest po prostu elementem konfiguracji kontrolki ALV IDA (możliwe jest również przypisanie bezpośrednio do tabeli bazy danych – bez wglądu CDS – ale użyteczność tej opcji jest raczej niewielka oraz do tzw. zewnętrznego wglądu SAP HANA – również bez wglądu CDS – ale z kolei ta opcja jest już przestarzała). Innymi słowy, w raporcie ALV IDA nie ma ani jednej instrukcji ABAP związanej z selekcją i obróbką danych – wszystkie operacje muszą być zaprojektowane za pomocą jednego lub więcej wglądów CDS.

Core Data Services – technologia umożliwiająca realizację koncepcji Code-2-Data

Core Data Services, to technologia umożliwiająca definiowanie semantycznie bogatych modeli danych przeznaczonych do konsumpcji w różnych aplikacjach klienckich (w niniejszym artykule rolę aplikacji klienckiej odgrywa raport zbudowany na bazie kontrolki ALV IDA). Wglądy CDS oferują bardzo dużo możliwości wykraczających znacząco poza możliwości tradycyjnego języka SQL. Kluczowe rozszerzenia dostępne w języku DDL, w którym definiuje się wglądy CDS, to wyrażenia, asocjacje i adnotacje. Wyrażenia pozwalają na przetwarzanie wybieranych pól (również za pomocą wbudowanych funkcji), asocjacje zasadniczo zastępują operacje łączenia, tak że możliwe są dostępy według tzw. ścieżek, a adnotacje pozwalają semantycznie wzbogacić wybierane dane, np. określić, że kolumna zawiera jednostkę miary albo walutę. Szczególnie istotną cechą wglądów CDS jest możliwość ich nawarstwiania – zwana również koncepcją View-On-View. To właśnie możliwość nawarstwiania jest szczególnie przydatna podczas projektowania raportów. Na przykład możliwe jest: stworzenie wglądów pierwszego poziomu zawierających projekcję wyników z różnych tabel (podzbiory pól, zgodnie z zadanym filtrem); następnie stworzenie wglądów drugiego poziomu łączących wyniki z wglądów pierwszego poziomu; i ostatecznie stworzenie wglądu trzeciego poziomu, zawierającego informacje semantyczne, przeznaczonego do konsumpcji w aplikacji klienckiej. W istocie firma SAP, projektując system S/4HANA stworzyła model danych zgodnie z tą logiką – która jest również nazywana wirtualnym modelem danych (VDM – Virtual Data Model). W VDM wglądy pierwszego poziomu, to tzw. wglądy podstawowe (BASIC), wglądy drugiego poziomu to wglądy złożone (COMPOSITE), a wglądy trzeciego poziomu, to wglądy konsumpcyjne (CONSUMPTION). Wglądy można jednakże nawarstwiać dowolnie, nie muszą to być dokładnie trzy poziomy. Na rysunku 2 przedstawiono przykład, w jaki sposób można zbudować raport ALV IDA przedstawiający informacje o skali realizowanych zakupów materiałowych. Można np. zdefiniować wglądy CDS V_MARA oraz V_MARC zawierające odpowiednio ogólne i zakładowe dane podstawowe materiałów oraz wglądy V_EKKO i V_EKPO zawierające dane zamówień: odpowiednio ich nagłówki i pozycje. Następnie na wyższym poziomie można zdefiniować wglądy CDS łączące dane z wglądów niższego poziomu: V_MAT_PLANT (ogólne dane materiału razem z zakładowymi) i V_POS (dane zamówień wraz z pozycjami). Jako ostatni zostałby zdefiniowany wgląd konsumpcyjny V_PUR_MAT łączący dane podstawowe materiałów razem z danymi zamówień i wykonujący jakąś agregację, np. sumę po wartości netto pozycji. Wgląd V_PUR_MAT mógłby zostać podpięty bezpośrednio do raportu ALV IDA jako jego źródło danych.

W nomenklaturze analitycznej wgląd CDS V_PUR_MAT mógłby być nazwany niejako „wielowymiarową kostką OLAP” zawierającą wymiary (dimensions) oraz miary (measures). Wymiarem mógłby być np. numer materiału, zakład, dział zaopatrzenia, grupa materiałowa oraz oczywiście czasookres. Miarą byłaby wartość netto zamówień (w lokalnej walucie jednostki gospodarczej).

Wglądy CDS są dostępne w systemach SAP pracujących na platformie SAP NetWeaver Application Server ABAP 7.40 oraz wyższych. Źródła DDL zawierające definicje wglądów CDS można tworzyć wyłącznie w nowym środowisku programistycznym ABAP Development Tools for Eclipse (ADT). Innymi słowy, wglądu CDS nie da się utworzyć w środowisku ABAP Workbench (transakcja SE80).

Funkcje kontrolki ALV IDA

Kontrolka ALV IDA nie różni się od swojego klasycznego odpowiednika w zakresie najważniejszych funkcji, takich jak sortowanie, filtrowanie, grupowanie, sumowanie, drukowanie, ekstrakcja danych do formatu Excel, obsługa układów, wzorzec zebra (zmieniające się kolory wierszy parzystych i nieparzystych) itp. Niemniej jest kilka niuansów, które warto znać rozpoczynając pracę z raportem ALV IDA.

Pasek narzędzi generalnie jest „odchudzony”, nie są dostępne rzadko używane funkcje, takie jak analiza ABC, grafika, informacja/pomoc czy eksport do pliku w formacie innym niż Excel. Przycisk do zarządzania układami znajduje się zawsze po prawej stronie paska narzędzi. Tuż obok niego może być dostępny przycisk wyszukiwania pełnotekstowego na wskroś kolumn (bez określania, w której kolumnie szukamy zadanego tekstu). Wyszukiwanie pełnotekstowe może działać dokładnie (exact) albo może być rozmyte (fuzzy), tzn. może wyszukiwać teksty podobne do wpisanego – przy czym poziom podobieństwa, z jakim program ma działać, należy określić od 0 do 1 (0 to w ogóle nie podobne, 1 to identyczne – zazwyczaj stosuje się poziom podobieństwa równy 0,8). Wyszukiwanie pełnotekstowe jest również możliwe, dzięki zastosowaniu bazy danych SAP HANA. Ponadto raportów ALV IDA nie można uruchamiać w tle, są to zawsze raporty uruchamiane dialogowo. Kontrolka ALV IDA nie może być również użyta do tworzenia programów, w których tabela danych podlega edycji.

Na rysunkach 3 oraz 4 zaprezentowany jest przykładowy raport ALV IDA (rzeczywisty przykład od jednego z klientów SNP Poland – aktualnie All for One Poland), który pokazuje prostą informację analityczną, mianowicie liczbę otwartych pozycji roboczych workflow w poszczególnych zadaniach jednego wzorca workflow utworzonych w zadanym czasookresie dla określonej jednostki gospodarczej.

Rysunek 3. Ekran selekcji przykładowego raportu ALV IDA

Rysunek 4. Ekran z danymi przykładowego raportu ALV IDA

Kontrolka ALV IDA jest dostępna w systemach SAP pracujących na platformie SAP NetWeaver Application Server ABAP 7.40 oraz wyższych. Raporty ABAP z użyciem kontrolki ALV IDA można tworzyć zarówno w nowym środowisku programistycznym ABAP Development Tools for Eclipse (ADT), jak również w środowisku ABAP Workbench (transakcja SE80).

Podsumowanie różnic w zakresie technologii – klasyczne raporty ALV vs raporty ALV IDA

Dla kogo?

Raporty ALV IDA na bazie wglądów CDS można tworzyć na systemach SAP ERP 6.0 EHP7-8 działających na bazie danych SAP HANA (SoH, Business Suite on HANA) oraz oczywiście na systemach S/4HANA w dowolnej wersji – przy czym w kontekście S/4HANA należy pamiętać, że raporty ALV IDA używają klasycznego interfejsu użytkownika dostępnego poprzez aplikację kliencką SAP GUI (nie SAP Fiori).