W systemie mySAP ERP od wersji NetWeaver 2004s (bazującej na SAP Web Application Server 7.0) dostępna jest technologia Web Dynpro w języku ABAP, która dotychczas mogła być wykorzystywana wyłącznie przez programistów Java.

W Web Dynpro podstawowymi obiektami są komponenty. Składają się one z elementów odpowiedzialnych za przechowywanie, przetwarzanie i wyświetlanie danych. Same „aplikacje” zawierają wyłącznie informacje, które komponenty i w jaki sposób powinny być uruchomione.

Można je więc porównać do transakcji w systemach SAP, które określają, jak wykonać programy. Ten sam komponent można uruchomić na wiele sposobów, co umożliwia szybki dostęp do różnych funkcjonalności – np. ekran początkowy aplikacji oraz ekran konfiguracji.

MVC – sprawdzony wzorzec

Komponenty zbudowane są zgodnie ze wzorcem projektowym MVC (ang. Model – View – Controller). Wyróżnione są w nim trzy części odpowiedzialne za przechowywanie danych (Model), ich wyświetlanie (prezentację, ang. View) oraz przetwarzanie (Controller). W Web Dynpro te części to:

  • konteksty – przechowywanie danych,
  • widoki (są najmniejszymi obiektami możliwymi do wyświetlenia jako całość) i okna (są wyświetlane na ekranie przeglądarki, każdy z nich zawiera jeden lub więcej widoków) – warstwa prezentacji,
  • kontrolery – przetwarzanie danych.

Warto zwrócić uwagę, że również widoki są zbudowane według MVC – posiadają swój kontekst (pobierający dane z głównego kontekstu z komponentu) i kontroler – odpowiedzialny za wykonywanie metod kontrolera komponentu oraz prostych akcji na widoku.

Dzięki temu w jednym miejscu przetwarzane są wszystkie dane, które mogą być współdzielone przez widoki – elementy kontekstu kontrolera i widoków są wiązane (ang. binding) ze sobą. Taka struktura ułatwia rozbudowę aplikacji, gdyż dodanie nowych funkcji i ekranów nie zaburzy istniejącej funkcjonalności.

Podział komponentu zgodnie ze wzorcem MVC znacznie zwiększa przejrzystość – tworzenie aplikacji Web Dynpro składa się z wyraźnie wyodrębnionych etapów:

  • tworzenia struktur danych,
  • określania, jakie zdarzenia i metody będą wykorzystywane,
  • definiowania możliwych przejść między ekranami

Wszystkie obiekty mają określone miejsce, dzięki czemu łatwo można odnaleźć powiązania pomiędzy nimi. Jest to dużym ułatwieniem podczas modyfikacji aplikacji, gdyż zmniejsza ryzyko powstania błędów w programie – zmiany w aplikacji są bezpieczniejsze.

Raz napisz, często korzystaj

Komponenty Web Dynpro są integralnymi obiektami, które mogą być zagnieżdżane wewnątrz innych komponentów. Umożliwia to budowanie różnych aplikacji przy wykorzystaniu gotowych elementów – innych własnych komponentów lub standardowych, dostarczonych przez SAP, np. tabele ALV czy ekrany selekcji.

Takie współdzielenie obiektów skraca czas tworzenia aplikacji – raz napisany komponent może być wykorzystywany wielokrotnie. Na przykład prosty element wyświetlający dane materiału można wykorzystać zarówno w aplikacji magazynowej, jak i wyświetlającej pozycje faktur.

Parametry obiektu portalowego SAP Web Dynpro iView (kategoria właściwości: Content – Web Dynpro)

Wprowadzone na stałe:

  • Platform: Web Dynpro for ABAP
  • Namespace: sap

Ustawienia aplikacji:

  • Application Name: zcompanies (nazwa aplikacji)
  • Logon Language: Polish (język aplikacji)
  • System: ABC (nazwa systemu)

Małym nakładem pracy

Jeśli nie korzystało się wcześniej z podobnych technologii, np. Web Dynpro Java, pierwszy kontakt z Web Dynpro ABAP może być zaskakujący. Nakład pracy programisty przy pierwszych aplikacjach jest niewielki w porównaniu z efektami i praktycznie wiążący się raczej z samym środowiskiem projektowym – wykorzystywany jest bowiem znany programistom obiektowy język ABAP.

Środowisko oferuje znaczne wsparcie, podpowiadając składnię, nazwy zmiennych i oferując narzędzia graficzne – co znacznie skraca czas powstawania aplikacji.

Ponadto wszystko, co zapewnia system mySAP ERP, jest dostępne bezpośrednio, bez zbędnych interfejsów czy konektorów – można nadal wykorzystywać dobrze znane i przydatne moduły funkcyjne, BAPI, komunikaty, tabele, pomoce wyszukiwania itp. Poza tym generowanie aplikacji w Web Dynpro to bardziej projektowanie niż kodowanie, a całość prac odbywa się z poziomu transakcji se80.

Z korzystaniem z tego środowiska wiążą się także wszelkie udogodnienia od strony repozytorium. Dla osób, które programują w języku ABAP, wykorzystanie technologii Web Dynpro to naprawdę niewielka zmiana.

Mamy bowiem ten sam system transportów, aplikację można podpiąć do pakietu, np. wraz z raportami ALV, a część kodu, np. zapytania, można kopiować między „zwykłymi” raportami a raportami w Web Dynpro.

Inne zalety

Poza podkreślonymi już zaletami warto zaznaczyć możliwość testowania za pomocą eCATT, automatyczną walidację danych i całkiem spory zakres kontrolek (wykresy, interaktywne formularze itp.).

Aplikacja może być uruchamiana w przeglądarce internetowej, u klienta Web Dynpro, na urządzeniach mobilnych – zatem nie jest wymagana instalacja SAP GUI, a logowanie do aplikacji odbywa się za pomocą tych samych użytkowników co do systemu ERP.

Definicja UI również jest niezależna od klienta (HTM, JS, XML…).

Aplikację Web Dynpro można integrować z SAP NetWeaver Portal. To dobra wiadomość dla tych, którzy mają wdrożony portal SAP albo zastanawiają się nad jego kupnem. Aplikację napisaną w Web Dynpro można umieścić na portalu poprzez użycie szablonu SAP Web Dynpro iView.

Czym to się różni?

Aby porównać różne technologie, wybraliśmy przykłady prostych programów utworzonych z wykorzystaniem kilku z nich. Wszystkie te programy korzystają z funkcji systemów SAP, jaką jest BAPI. Dane prezentowane są w postaci tabeli i listy ze szczegółami wybranego wiersza.

Współdzielenie obiektów w Web Dynpro skraca czas tworzenia aplikacji – raz napisany komponent może być wykorzystywany wielokrotnie.

Pierwszą przewagą aplikacji pisanych w języku ABAP (zwykłe aplikacje, BSP oraz Web Dynpro ABAP) jest wywoływanie BAPI bezpośrednio, z wykorzystaniem instrukcji języka ABAP.

Programy w pozostałych technologiach korzystają ze zdalnego wykonywania funkcji, co wiąże się z dodatkowym nakładem pracy potrzebnym do przekazania danych jako parametry wywołania oraz odczytania wyniku.

W przypadku rozbudowanej funkcjonalności i przy wykorzystywaniu wielu modułów funkcyjnych (lub modułów zwracających dużą liczbę danych) sposób wywołania funkcji może mieć wpływ na czas pisania obsługi modułu i sam czas potrzebny na uruchomienie tej funkcji.

W związku z tym aplikacje ABAP-owe można napisać w krótszym czasie i mogą one działać szybciej.

Skrzynka z narzędziami

W programowaniu znaczną rolę odgrywają narzędzia wspomagające proces tworzenia aplikacji (kreatory kodu, wyglądu itp.). Wiele z nichi dostępnych jest dla programistów Web Dynpro ABAP oraz Web Dynpro Java. Są to m.in.:

  • graficzny edytor ekranów – umożliwia nie tylko szybkie umieszczanie tekstów, pól edycji, przycisków, ale także tworzenie całych formularzy i tabel – razem z obsługą wyświetlania danych. Malarz ekranów ABAP i narzędzia innych technologii nie dają takich możliwości,
  •  kreator wywołania modułów funkcyjnych, wykonywania metod obiektów WebService – tworzy wszystkie potrzebne pliki potrzebne do uruchomienia funkcji znajdującej się na innym serwerze lub w innym systemie,
  • graficzny edytor nawigacji między ekranami – służy do konfiguracji kolejności wyświetlanych ekranów i możliwości przejść między nimi.

Dzięki takim narzędziom można szybko utworzyć prostą aplikację, nie pisząc żadnej linii kodu źródłowego.

Tworząc strony internetowe w BSP lub JSP, można skorzystać z istniejących edytorów HTML, ale nie mają one możliwości automatycznego tworzenia tabel lub formularzy w oparciu o struktury lub interfejsy modułów funkcyjnych systemu ERP. Poza tym tak utworzone strony zawierają sam wygląd ekranów, bez obsługi wyświetlania i przetwarzania danych.

Nie zawsze najlepsze

Pisanie aplikacji w środowiskach wspomagających programistę wiąże się z pewnymi ograniczeniami. Przede wszystkim możemy tworzyć wygląd aplikacji tylko z określonych obiektów.

Najczęściej funkcjonalność aplikacji można łatwo uzyskać, korzystając z dostępnych przycisków, tekstów, standardowych tabel, itd. Jednakże mogą się zdarzyć sytuacje, w których te obiekty nie będą wystarczające lub nie będą spełniały wszystkich żądanych funkcji.

Omawiana technologia ma też pewne niedociągnięcia, ale dotyczą one fazy budowania aplikacji i nie wpływają w żaden sposób na późniejsze jej działanie. Nie są to wady, ale raczej pewne braki, do których z pewnością spora część programistów zdążyła się przyzwyczaić, pracując w innych środowiskach.

Dodatkowo wygenerowane aplikacje – w tym aplikacje Web Dynpro – są „ciężkie” Zużywają one więcej zasobów serwera, potrzebują dłuższego czasu na wyświetlenie się i wykonywanie funkcji niż ma to miejsce w „lekkich” aplikacjach, np. JSP czy BSP.

Jeżeli nie możemy pozwolić na większe obciążenie serwera, lepiej wykorzystać inną technologię niż Web Dynpro. Web Dynpro ABAP jest narzędziem dającym bardzo duże możliwości, począwszy od wsparcia od strony programistycznej, poprzez optymalizację procesu powstawania aplikacji, po elastyczność i efektywność rozwiązania.

Zapewne fakt, że nie zmieniamy środowiska projektowego, a jedynie wykorzystujemy nowe jego narzędzie, będzie zachętą dla programistów, a wynik końcowy – dostępny przez przeglądarkę internetową – będzie miły dla oka i przyjemny w korzystaniu dla użytkownika końcowego.