ABAP - ABAP
Paradygmat | Zorientowany obiektowo , uporządkowany , imperatywny |
---|---|
Zaprojektowany przez | SAP SE |
Po raz pierwszy pojawiły się | 1983 |
Wersja stabilna | 7.55 / 2 września 2020
|
Dyscyplina pisania | Statyczny , mocny , bezpieczny , mianownik |
OS | Wieloplatformowy |
Stronie internetowej | SCN |
Główne wdrożenia | |
SAP R/2 , SAP R/3 , SAP S/4HANA | |
Wpływem | |
Cel-C , COBOL , SQL |
ABAP (Advanced Business Application Programming, pierwotnie Allgemeiner Berichts-Aufbereitungs-Prozessor , po niemiecku „ogólny procesor przygotowywania raportów”) to język programowania wysokiego poziomu stworzony przez niemiecką firmę programistyczną SAP SE . Obecnie jest pozycjonowany, obok Javy , jako język programowania SAP NetWeaver Application Server , który jest częścią platformy SAP NetWeaver do budowy aplikacji biznesowych.
Wstęp
ABAP jest jednym z wielu specyficznych dla aplikacji języków czwartej generacji ( 4GL ) opracowanych po raz pierwszy w latach 80. XX wieku. Pierwotnie był to język raportowania dla SAP R/2 , platformy, która umożliwiała dużym korporacjom tworzenie aplikacji biznesowych typu mainframe do zarządzania materiałami oraz rachunkowości finansowej i zarządczej. ABAP ustanawia integrację między niezależnym oprogramowaniem.
ABAP kiedyś skrótem A llgemeiner B erichts- A ufbereitungs- P rozessor , niemiecki dla „procesor przygotowania raportu generic”, ale został później przemianowany na angielskiej A dvanced B usiness A TOSOWANIE P ROGRAMOWANIE . ABAP był jednym z pierwszych języków, który zawierał koncepcję logicznych baz danych (LDB), która zapewnia wysoki poziom abstrakcji od podstawowego poziomu baz danych, który obsługuje każdą platformę, język i jednostki.
Język ABAP był pierwotnie używany przez programistów do tworzenia platformy SAP R/3 . Miał również służyć klientom SAP do ulepszania aplikacji SAP – klienci mogą tworzyć niestandardowe raporty i interfejsy za pomocą programowania ABAP. Język został nastawiony na bardziej technicznych klientów z doświadczeniem w programowaniu.
ABAP pozostaje językiem do tworzenia programów dla systemu klient-serwer R/3 , który firma SAP wydała po raz pierwszy w 1992 roku. Wraz z rozwojem sprzętu komputerowego w latach 90. coraz więcej aplikacji i systemów SAP było pisanych w języku ABAP. Do 2001 roku w ABAP napisano wszystkie funkcje oprócz najbardziej podstawowych. W 1999 roku firma SAP wydała zorientowane obiektowo rozszerzenie do ABAP o nazwie ABAP Objects wraz z wersją R/3 4.6.
Obecna platforma programistyczna SAP NetWeaver obsługuje zarówno ABAP, jak i Javę .
ABAP ma abstrakcję między aplikacjami biznesowymi, systemem operacyjnym i bazą danych. Gwarantuje to, że aplikacje nie zależą bezpośrednio od konkretnego serwera lub platformy bazy danych i mogą być łatwo przenoszone z jednej platformy na drugą.
SAP Netweaver działa obecnie w systemach UNIX ( AIX , HP-UX , Solaris , Linux ), Microsoft Windows , i5/OS na IBM System i (wcześniej iSeries, AS/400) oraz z/OS na IBM System z (wcześniej zSeries, S /390). Obsługiwane bazy danych to HANA , SAP ASE (dawniej Sybase), IBM DB2 , Informix , MaxDB , Oracle i Microsoft SQL Server (obsługa Informix została wycofana w SAP Basis w wersji 7.00).
Środowisko wykonawcze ABAP
Wszystkie programy ABAP znajdują się w bazie danych SAP. Nie są one przechowywane w oddzielnych plikach zewnętrznych, takich jak programy Java lub C++. W bazie danych cały kod ABAP istnieje w dwóch formach: kodu źródłowego, który można przeglądać i edytować za pomocą narzędzi ABAP Workbench; i wygenerowany kod, reprezentacja binarna nieco porównywalna z kodem bajtowym Javy . Programy ABAP działają pod kontrolą systemu uruchomieniowego, który jest częścią jądra SAP. System runtime odpowiada za przetwarzanie instrukcji ABAP, sterowanie logiką przepływu ekranów i reagowanie na zdarzenia (takie jak kliknięcie przez użytkownika przycisku na ekranie); pod tym względem może być postrzegana jako maszyna wirtualna porównywalna z maszyną wirtualną Java. Kluczowym elementem systemu wykonawczego ABAP jest interfejs bazy danych, który zamienia instrukcje ABAP niezależne od bazy danych („Open SQL”) w instrukcje rozumiane przez bazowy DBMS („Native SQL”). Interfejs bazy danych obsługuje całą komunikację z relacyjną bazą danych w imieniu programów ABAP; Zawiera również dodatkowe funkcje, takie jak buforowanie tabel i często używanych danych w pamięci lokalnej serwera aplikacji.
Systemy i krajobrazy SAP
Wszystkie dane SAP istnieją i całe oprogramowanie SAP działa w kontekście systemu SAP . System składa się z centralnej relacyjnej bazy danych i jednej lub więcej aplikacji („instancji”) uzyskujących dostęp do danych i programów w tej bazie danych. System SAP zawiera co najmniej jedną instancję, ale może zawierać więcej, głównie ze względu na wielkość i wydajność. W systemie z wieloma instancjami mechanizmy równoważenia obciążenia zapewniają równomierne rozłożenie obciążenia na dostępne serwery aplikacji.
Instalacje Web Application Server ( krajobrazy ) zazwyczaj składają się z trzech systemów: jeden do rozwoju; jeden do testowania i zapewnienia jakości; i jeden do produkcji. Krajobraz może zawierać więcej systemów (np. oddzielne systemy do testów jednostkowych i testów przedprodukcyjnych) lub może zawierać mniej (np. tylko rozwój i produkcja, bez oddzielnej kontroli jakości); niemniej jednak trzy to najczęstsza konfiguracja. Programy ABAP są tworzone i przechodzą pierwsze testy w systemie deweloperskim. Następnie są dystrybuowane do innych systemów w krajobrazie. Działania te odbywają się pod kontrolą Change and Transport System (CTS), który odpowiada za kontrolę współbieżności (np. uniemożliwianie dwóm programistom zmiany tego samego kodu w tym samym czasie), zarządzanie wersjami oraz wdrażanie programów na QA i systemy produkcyjne.
Web Application Server składa się z trzech warstw: warstwy bazy danych; warstwa aplikacji; i warstwę prezentacji. Warstwy te mogą działać na tych samych lub na różnych komputerach fizycznych. Warstwa bazy danych zawiera relacyjną bazę danych i oprogramowanie bazodanowe. Warstwy aplikacji wiedzy zawiera wystąpienie lub wystąpienia w systemie. Wszystkie procesy aplikacyjne, w tym transakcje biznesowe i rozwój ABAP, przebiegają w warstwie aplikacji. Warstwa prezentacji obsługuje interakcję z użytkownikami systemu. Dostęp online do serwerów aplikacji ABAP może odbywać się za pośrednictwem zastrzeżonego interfejsu graficznego, zwanego „SAP GUI” lub za pośrednictwem przeglądarki internetowej.
Warstwy oprogramowania
Oprogramowanie ABAP jest wdrażane w komponentach oprogramowania. Oto przykłady:
- SAP_BASIS jest wymaganą techniczną warstwą bazową, która jest wymagana w każdym systemie ABAP.
- SAP_ABA zawiera funkcjonalności wymagane dla wszelkiego rodzaju aplikacji biznesowych, takich jak zarządzanie partnerami biznesowymi i adresami.
- SAP_UI zapewnia funkcjonalność tworzenia aplikacji SAP UI5.
- BBPCRM to przykład aplikacji biznesowej, w tym przypadku aplikacji CRM
- SAP ABAP to język programowania ERP.
Transakcje
Transakcja w terminologii SAP to wykonanie programu. Normalnym sposobem wykonania kodu ABAP w systemie SAP jest wprowadzenie kodu transakcji (na przykład VA01 to kod transakcji dla „Utwórz zlecenie sprzedaży”). Transakcje można wywoływać za pomocą zdefiniowanych przez system lub specyficznych dla użytkownika menu opartych na rolach. Można je również uruchomić wpisując kod transakcji bezpośrednio do pola polecenia, które jest obecne na każdym ekranie SAP. Transakcje można również wywoływać programowo za pomocą instrukcji ABAP CALL TRANSACTION i LEAVE TO TRANSACTION. Ogólne pojęcie transakcji nazywa się logiczną jednostką pracy (LUW) w terminologii SAP; skróconą formą kodu transakcji jest T-code .
Rodzaje programów ABAP
Podobnie jak w innych językach programowania, program ABAP jest jednostką wykonywalną lub biblioteką, która zapewnia kod wielokrotnego użytku innym programom i nie jest wykonywalny niezależnie.
ABAP rozróżnia dwa typy programów wykonywalnych:
- Raporty
- Pule modułów
Raporty są zgodne ze stosunkowo prostym modelem programowania, w którym użytkownik opcjonalnie wprowadza zestaw parametrów (np. wybór spośród podzbioru danych), a następnie program wykorzystuje parametry wejściowe do utworzenia raportu w formie interaktywnej listy. Termin „raport” może być nieco mylący, ponieważ raporty mogą być również zaprojektowane do modyfikowania danych; Powodem, dla którego te programy są nazywane raportami, jest „zorientowana na listę” natura generowanych przez nie wyników.
Pule modułów definiują bardziej złożone wzorce interakcji użytkownika przy użyciu kolekcji ekranów. Termin „ekran” odnosi się do rzeczywistego, fizycznego obrazu, który widzi użytkownik. Każdy ekran ma również „logikę przepływu”, która odnosi się do kodu ABAP niejawnie wywoływanego przez ekrany, który jest podzielony na sekcję „PBO” (Process Before Output) i „PAI” (Process After Input). W dokumentacji SAP termin „dynpro” (program dynamiczny) odnosi się do kombinacji ekranu i jego logiki przepływu.
Niewykonywalne typy programów to:
- ZAWIERA moduły
- Baseny podprogramów
- Grupy funkcyjne
- Klasy obiektów
- Interfejsy
- Wpisz baseny
ZAWIERAJĄ moduł zostaje włączone w momencie generacji do urządzenia wywołującego; jest często używany do dzielenia dużych programów.
Pule podprogramów zawierają podprogramy ABAP (bloki kodu zawarte w instrukcjach FORM/ENDFORM i wywoływane przez PERFORM).
Grupy funkcyjne to biblioteki samodzielnych modułów funkcyjnych (zamknięte przez FUNCTION/ENDFUNCTION i wywoływane przez CALL FUNCTION).
Klasy obiektów i interfejsy są podobne do klas i interfejsów Java; pierwsze definiują zestaw metod i atrybutów, drugie zawierają „puste” definicje metod, dla których każda klasa implementująca interfejs musi dostarczyć jawny kod.
Pule typów definiują kolekcje typów danych i stałych.
Programy ABAP składają się z pojedynczych zdań (wypowiedzi). Pierwsze słowo w instrukcji nazywa się słowem kluczowym ABAP. Każdy wyciąg kończy się kropką. Słowa muszą być zawsze oddzielone co najmniej jedną spacją. Wyciągi można dowolnie wcinać. W przypadku słów kluczowych, dodatków i operandów system wykonawczy ABAP nie rozróżnia wielkich i małych liter.
Instrukcje mogą wykraczać poza jedną linię. W jednej linii możesz umieścić kilka instrukcji (choć nie jest to zalecane). Wiersze zaczynające się od gwiazdki * w pierwszej kolumnie są rozpoznawane przez system wykonawczy ABAP jako wiersze komentarza i są ignorowane. Podwójne cudzysłowy (") wskazują, że pozostała część wiersza jest komentarzem.
Środowisko programistyczne
Istnieją dwa możliwe sposoby rozwoju w ABAP. Dostępność zależy od wydania systemu ABAP.
Środowisko pracy ABAP
ABAP Workbench jest częścią systemu ABAP i jest dostępne poprzez SAP GUI . Zawiera różne narzędzia do edycji programów. Najważniejsze z nich to (kody transakcji podano w nawiasach):
- ABAP Editor do pisania i edycji raportów, pul modułów, dołączania i pul podprogramów (SE38)
- Słownik ABAP do przetwarzania definicji tabel bazy danych i pobierania typów globalnych (SE11)
- Malarz menu do projektowania interfejsu użytkownika (pasek menu, standardowy pasek narzędzi, pasek narzędzi aplikacji, przypisanie klawiszy funkcyjnych) (SE41)
- Screen Painter do projektowania ekranów i logiki przepływu (SE51)
- Funkcja Builder dla modułów funkcyjnych (SE37)
- Class Builder dla klas i interfejsów ABAP Objects (SE24)
Object Navigator (SE80 transakcji) zapewnia pojedynczy zintegrowany interfejs do tych różnych narzędzi.
Narzędzia programistyczne ABAP
Te narzędzia ABAP Development ( ADT ), formalnie znany jako „ABAP w Eclipse”, to zestaw wtyczek dla platformy Eclipse rozwijać ABAP.
W tym scenariuszu programista ABAP instaluje wymagane narzędzia na swoim komputerze i pracuje lokalnie, podczas gdy wykonywana jest ciągła synchronizacja z backendem.
Słownik ABAP
Słownik ABAP zawiera wszystkie metadane dotyczące danych w systemie SAP. Jest ściśle powiązany ze środowiskiem ABAP Workbench w tym sensie, że wszelkie odniesienia do danych (np. tabela, widok lub typ danych) będą uzyskiwane ze słownika. Deweloperzy używają transakcji ABAP Dictionary (bezpośrednio lub za pośrednictwem SE80 Object Navigator w ABAP Workbench) do wyświetlania i utrzymywania tych metadanych.
Gdy obiekt słownika zostanie zmieniony, program, który odwołuje się do zmienionego obiektu, automatycznie odniesie się do nowej wersji przy następnym uruchomieniu programu. Ponieważ ABAP jest interpretowany, nie jest konieczne ponowne kompilowanie programów, które odwołują się do zmienionych obiektów słownika.
Poniżej krótki opis najważniejszych typów obiektów słownika:
- Tabele to kontenery danych, które istnieją w bazowej relacyjnej bazie danych. W większości przypadków istnieje relacja 1 do 1 między definicją tabeli w Słowniku ABAP a definicją tej samej tabeli w bazie danych (ta sama nazwa, te same kolumny). Tabele te są znane jako „przezroczyste”. Istnieją dwa typy nieprzezroczystych tabel: tabele „w puli” istnieją jako niezależne jednostki w słowniku ABAP, ale są pogrupowane w duże tabele fizyczne („pule”) na poziomie bazy danych. Tabele zbiorcze to często małe tabele zawierające na przykład dane konfiguracyjne. Tabele „klastrowe” są fizycznie pogrupowane w „klastry” na podstawie ich kluczy podstawowych; załóżmy na przykład, że zgrupowana tabela H zawiera dane „nagłówkowe” dotyczące faktur sprzedaży, podczas gdy inna zgrupowana tabela D zawiera pozycje faktury. Każdy wiersz H byłby następnie fizycznie pogrupowany z powiązanymi wierszami z D w „tabeli klastrów” w bazie danych. Ten typ klastrowania, zaprojektowany w celu poprawy wydajności, istnieje również jako natywna funkcja w niektórych, choć nie we wszystkich, relacyjnych systemach baz danych.
- Indeksy zapewniają przyspieszony dostęp do danych tabeli dla często używanych warunków selekcji. Każda tabela SAP ma „indeks podstawowy”, który jest tworzony niejawnie wraz z tabelą i służy do wymuszania unikalności klucza podstawowego. Można zdefiniować dodatkowe indeksy (unikalne lub nieunikalne); są to tak zwane „indeksy wtórne”.
- Widoki mają ten sam cel, co w bazowej bazie danych: definiują podzbiory kolumn (i/lub wierszy) z jednej lub - za pomocą warunku złączenia - kilku tabel. Ponieważ widoki są wirtualnymi tabelami (odwołują się do danych w innych tabelach), nie zajmują dużo miejsca.
- Struktury to złożone typy danych składające się z wielu pól (porównywalne do struktury w C/C++).
- Elementy danych zapewniają treść semantyczną dla pola tabeli lub struktury. Na przykład dziesiątki tabel i struktur mogą zawierać pole z ceną (gotowego produktu, surowca, zasobu, ...). Wszystkie te pola mogą mieć ten sam element danych „CENA”.
- Domeny definiują cechy strukturalne elementu danych. Na przykład element danych PRICE może mieć przypisaną domenę, która definiuje cenę jako pole liczbowe z dwoma miejscami po przecinku. Domeny mogą również zawierać treść semantyczną, dostarczając listę możliwych wartości. Na przykład domena „BOOLEAN” mogłaby definiować pole typu „znak” o długości 1 i bez uwzględniania wielkości liter, ale ograniczyłaby również możliwe wartości do „T” (prawda) lub „F” (fałsz).
- Wyszukiwanie pomaga (następcy przestarzałych „kodów dopasowania”) zapewnia zaawansowane strategie wyszukiwania, gdy użytkownik chce zobaczyć możliwe wartości pola danych. Środowisko wykonawcze ABAP zapewnia niejawną pomoc (wymieniając wszystkie wartości pola, np. wszystkie istniejące numery klientów), ale pomoc wyszukiwania można wykorzystać do udoskonalenia tej funkcji, np. zapewniając wyszukiwanie klientów według lokalizacji geograficznej, ratingu kredytowego itp.
- Obiekty blokady implementują blokowanie na poziomie aplikacji podczas zmiany danych.
Składnia ABAP
Ten krótki opis składni ABAP zaczyna się od wszechobecnego programu „ Witaj świecie ”.
Witaj świecie
REPORT TEST.
WRITE 'Hello World'.
Ten przykład zawiera dwie instrukcje: REPORT
i WRITE
. Program wyświetla listę na ekranie. W tym przypadku lista składa się z jednego wiersza „Hello World”. REPORT
Zestawienie wskazuje, że ten program jest raport. Ten program może być pulą modułów po zastąpieniu REPORT
instrukcji przez PROGRAM
.
Powiązane wypowiedzi
Kolejne instrukcje z identyczną pierwszą (najbardziej lewą) częścią można połączyć w „połączoną” instrukcję za pomocą operatora łańcucha :
. Wspólna część wypowiedzi jest zapisana po lewej stronie dwukropka, a różne części po prawej stronie dwukropka i oddzielone przecinkami. Operator dwukropka jest dołączony bezpośrednio do poprzedniego tokena, bez spacji (to samo dotyczy przecinków na liście tokenów, jak widać na poniższych przykładach).
Tworzenie łańcuchów jest często używane w WRITE
instrukcjach. WRITE
akceptuje tylko jeden argument, więc jeśli na przykład chciałbyś wyświetlić trzy pola ze struktury o nazwie FLIGHTINFO, musiałbyś zakodować:
WRITE FLIGHTINFO-CITYFROM.
WRITE FLIGHTINFO-CITYTO.
WRITE FLIGHTINFO-AIRPTO.
Łączenie stwierdzeń w łańcuch daje bardziej czytelną i bardziej intuicyjną formę:
WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.
W instrukcji łańcuchowej pierwsza część (przed dwukropkiem) nie jest ograniczona do samej nazwy instrukcji. Całą część wspólną kolejnych wypowiedzi można umieścić przed dwukropkiem. Przykład:
REPLACE 'A' WITH 'B' INTO LASTNAME.
REPLACE 'A' WITH 'B' INTO FIRSTNAME.
REPLACE 'A' WITH 'B' INTO CITYNAME.
można przepisać w formie łańcuchowej jako:
REPLACE 'A' WITH 'B' INTO: LASTNAME, FIRSTNAME, CITYNAME.
Uwagi
ABAP ma 2 sposoby definiowania tekstu jako komentarza :
- Gwiazdka (*) w skrajnej lewej kolumnie linii sprawia, że całą linię komentarz
- Znak podwójne notowanie ( ") w dowolnym miejscu na linii sprawia, że resztę tej linii komentarz
Przykład:
***************************************
** Program: BOOKINGS **
** Author: Joe Byte, 07-Jul-2007 **
***************************************
REPORT BOOKINGS.
* Read flight bookings from the database
SELECT * FROM FLIGHTINFO
WHERE CLASS = 'Y' "Y = economy
OR CLASS = 'C'. "C = business
(...)
Przestrzenie
Kod w ABAP jest wrażliwy na białe znaki.
x = a+b(c).
przypisuje zmiennej x podłańcuch zmiennej a, zaczynając od b o długości określonej przez zmienną c.
x = a + b( c ).
przypisuje zmiennej x sumę zmiennej a oraz wynik wywołania metody b z parametrem c.
Oświadczenia ABAP
W przeciwieństwie do języków takich jak C/C++ lub Java, które definiują ograniczony zestaw instrukcji specyficznych dla danego języka i zapewniają większość funkcji za pośrednictwem bibliotek, ABAP zawiera obszerną ilość wbudowanych instrukcji. W tych stwierdzeniach tradycyjnie używano struktur zdaniowych i unikano symboli, dzięki czemu programy ABAP były stosunkowo gadatliwe. Jednak w nowszych wersjach języka ABAP możliwy jest zwięzły styl.
Przykład składni opartej na instrukcjach (której składnia pochodzi z języka COBOL) w przeciwieństwie do składni opartej na wyrażeniach (jak w C/Java):
ADD TAX TO PRICE.
* is equivalent to
PRICE = PRICE + TAX .
Typy danych i zmienne
ABAP udostępnia zestaw wbudowanych typów danych. Ponadto każda struktura, tabela, widok lub element danych zdefiniowany w Słowniku ABAP może być użyty do wpisania zmiennej. Również klasy obiektów i interfejsy mogą być używane jako typy.
Wbudowane typy danych to:
Rodzaj | Opis |
---|---|
i | Liczba całkowita |
P | Upakowane dziesiętne |
F | zmiennoprzecinkowy |
n | Znak numeryczny |
C | Postać |
D | Data |
T | Czas |
x | Szesnastkowy (surowy bajt) |
STRUNOWY | Ciąg o zmiennej długości |
XSTRING | Tablica bajtów surowych o zmiennej długości |
Zmienne lub stałe daty (typ D) zawierają liczbę dni od 1 stycznia 1 AD. Zmienne lub stałe czasowe (typ T) zawierają liczbę sekund od północy. Specjalną cechą obu typów jest to, że mogą być dostępne zarówno jako liczby całkowite, jak i ciągi znaków (z wewnętrznym formatem „RRRRMMDD” dla dat i „hhmmss” dla godzin), które mogą być używane do obsługi daty i godziny. Na przykład poniższy fragment kodu oblicza ostatni dzień poprzedniego miesiąca (uwaga: SY-DATUM to zmienna zdefiniowana przez system zawierająca bieżącą datę):
DATA LAST_EOM TYPE D. "last end-of-month date
* Start from today's date
LAST_EOM = SY-DATUM.
* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to "01",
* giving the first day of the current month
LAST_EOM+6(2) = '01'.
* Subtract one day
LAST_EOM = LAST_EOM - 1.
WRITE: 'Last day of previous month was', LAST_EOM.
Wszystkie zmienne ABAP muszą być jawnie zadeklarowane, aby mogły być używane. Mogą być deklarowane za pomocą indywidualnych instrukcji i jawnego typowania lub, od wersji ABAP 7.40, w linii z wywnioskowanym typowaniem .
Jawnie wpisana deklaracja
Zwykle wszystkie deklaracje są umieszczane na górze modułu kodu (programu, podprogramu, funkcji) przed pierwszą wykonywalną instrukcją; to umieszczenie jest konwencją, a nie wymuszoną regułą składni. Deklaracja składa się z nazwy, typu, długości (jeśli dotyczy), dodatkowych modyfikatorów (np. liczby domniemanych miejsc dziesiętnych dla upakowanego pola dziesiętnego) i opcjonalnie z wartości początkowej:
* Primitive types:
DATA: COUNTER TYPE I,
VALIDITY TYPE I VALUE 60,
TAXRATE(3) TYPE P DECIMALS 1,
LASTNAME(20) TYPE C,
DESCRIPTION TYPE STRING.
* Dictionary types:
DATA: ORIGIN TYPE COUNTRY.
* Internal table:
DATA: T_FLIGHTS TYPE TABLE OF FLIGHTINFO,
T_LOOKUP TYPE HASHED TABLE OF FLT_LOOKUP.
* Objects:
DATA: BOOKING TYPE REF TO CL_FLT_BOOKING.
Zwróć uwagę na użycie dwukropka do łączenia ze sobą kolejnych instrukcji DATA.
Deklaracja inline
Od wersji ABAP 7.40 zmienne mogą być deklarowane w sposób zgodny z następującą składnią:
DATA(variable_name) = 'VALUE'.
Dla tego typu deklaracji musi istnieć możliwość statycznego wywnioskowania typu, np. poprzez sygnaturę metody lub strukturę tabeli bazy danych.
Ta składnia jest również możliwa w instrukcjach OpenSQL:
SELECT * FROM ekko into @DATA(lt_ekko) WHERE ebeln EQ @lv_ebeln.
Obiekty ABAP
Język ABAP obsługuje programowanie obiektowe dzięki funkcji znanej jako „obiekty ABAP”. Pomaga to uprościć aplikacje i zwiększyć ich kontrolę.
ABAP Objects jest w pełni kompatybilny z istniejącym językiem, więc można używać istniejących instrukcji i jednostek modularyzacji w programach korzystających z ABAP Objects, a także można używać ABAP Objects w istniejących programach ABAP. Sprawdzanie składni jest silniejsze w programach ABAP Objects, a niektóre formy składniowe (zwykle starsze) niektórych instrukcji są niedozwolone.
Przedmioty tworzą kapsułę, która łączy postać z odpowiednim zachowaniem. Obiekty powinny umożliwiać programistom odwzorowanie rzeczywistego problemu i proponowanego rozwiązania programowego na zasadzie jeden-do-jednego. Typowe obiekty w środowisku biznesowym to na przykład „Klient”, „Zamówienie” lub „Faktura”. Począwszy od wersji 3.1, repozytorium obiektów biznesowych (BOR) SAP Web Application Server ABAP zawiera przykłady takich obiektów. Model obiektów BOR zostanie zintegrowany z obiektami ABAP w następnym wydaniu poprzez migrację typów obiektów BOR do biblioteki klas ABAP. Kompleksowe wprowadzenie do orientacji obiektowej jako całości wykraczałoby daleko poza granice tego wprowadzenia do obiektów ABAP. Ta dokumentacja wprowadza wybór terminów, które są powszechnie używane w orientacji obiektowej, a także występują w obiektach ABAP. W kolejnych sekcjach omówiono bardziej szczegółowo, w jaki sposób te terminy są używane w obiektach ABAP. Na końcu tej sekcji znajduje się lista dalszych lektur, z wyborem tytułów dotyczących orientacji obiektu.
- Obiekty są instancjami klas. Zawierają dane i świadczą usługi. Dane tworzą atrybuty obiektu. Usługi są znane jako metody (znane również jako operacje lub funkcje). Zazwyczaj metody operują na danych prywatnych (atrybutach lub stanie obiektu), które są widoczne tylko dla metod obiektu. Zatem atrybuty obiektu nie mogą być zmieniane bezpośrednio przez użytkownika, a jedynie za pomocą metod obiektu. Gwarantuje to wewnętrzną spójność obiektu.
- Klasy opisują obiekty. Z technicznego punktu widzenia obiekty są instancjami klasy w czasie wykonywania. Teoretycznie można stworzyć dowolną liczbę obiektów w oparciu o jedną klasę. Każda instancja (obiekt) klasy ma unikalną tożsamość i własny zestaw wartości dla swoich atrybutów.
- Odniesienia do obiektów to unikalne adresy, których można używać do identyfikowania i wskazywania obiektów w programie. Odwołania do obiektów umożliwiają dostęp do atrybutów i metod obiektu.
W programowaniu obiektowym obiekty mają zwykle następujące właściwości:
- Hermetyzacja — obiekty ograniczają widoczność swoich zasobów (atrybutów i metod) innym użytkownikom. Każdy obiekt ma interfejs, który określa, w jaki sposób inne obiekty mogą z nim współdziałać. Implementacja obiektu jest hermetyzowana, czyli niewidoczna na zewnątrz samego obiektu.
- Dziedziczenie — istniejąca klasa może służyć do tworzenia nowej klasy. Klasy pochodne dziedziczą dane i metody nadklasy. Mogą jednak nadpisywać istniejące metody, a także dodawać nowe.
- Polimorfizm — Identyczne (o tej samej nazwie) metody zachowują się inaczej w różnych klasach. W ABAP Objects polimorfizm jest implementowany przez przedefiniowanie metod podczas dziedziczenia i za pomocą konstrukcji zwanych interfejsami.
Widoki CDS
ABAP Core Data Services (ABAP CDS) to implementacja ogólnej koncepcji CDS dla AS ABAP. ABAP CDS umożliwia definiowanie semantycznych modeli danych na centralnej bazie danych serwera aplikacji. W AS ABAP modele te można definiować niezależnie od systemu bazy danych. Jednostki tych modeli zapewniają rozszerzone funkcje dostępu w porównaniu z istniejącymi tabelami i widokami bazy danych zdefiniowanymi w ABAP Dictionary, umożliwiając optymalizację aplikacji opartych na Open SQL. Jest to szczególnie widoczne, gdy AS ABAP korzysta z bazy danych SAP HANA, ponieważ jego charakterystyka w pamięci może zostać zaimplementowana w optymalny sposób.
Modele danych są definiowane przy użyciu języka definicji danych (DDL) i języka kontroli danych (DCL) dostarczonych w ABAP CDS w składni ABAP CDS. Obiekty zdefiniowane za pomocą tych języków są zintegrowane ze słownikiem ABAP i tutaj również zarządzane.
Kod źródłowy CDS można zaprogramować tylko w narzędziach programistycznych ABAP (ADT) opartych na środowisku Eclipse. Język definicji danych (DDL) i język sterowania danymi (DCL) korzystają z różnych edytorów.
Cechy
SAP NW ABAP | Połączenia SQL | Operacje na zbiorach SQL | WYBIERZ klauzule |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 | |||
7,50 | |||
7.51 |
|
SAP NW ABAP | Literały | Operatory arytmetyczne | Wyrażenia warunkowe |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
||
7,50 | |||
7.51 |
|
SAP NW ABAP | Funkcje agregujące | Funkcje numeryczne | Funkcje ciągów |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
|
|
7,50 |
|
||
7.51 |
|
|
|
SAP NW ABAP | Funkcje ciągu bajtów | Funkcje daty i czasu | Inne funkcje |
---|---|---|---|
7.40 SP05 |
|
||
7.40 SP08 |
|
||
7,50 |
|
|
|
7.51 |
|
|
SAP NW ABAP | Wyrażenia warunkowe (CASE) | Rozciągliwość | Stowarzyszenia (niezarządzane) |
---|---|---|---|
7.40 SP05 |
|
|
|
7.40 SP08 |
|
|
|
7,50 |
|
|
|
7.51 |
|
|
|
SAP NW ABAP | Zmienne sesji | Parametry wejściowe | Inne |
---|---|---|---|
7.40 SP05 |
|
||
7.40 SP08 |
|
||
7,50 |
|
|
|
7.51 |
|
|
Tabele wewnętrzne w ABAP
Tabele wewnętrzne są ważną cechą języka ABAP. Tablica wewnętrzna jest definiowana podobnie do wektora struktur w C++ lub wektora obiektów w Javie. Główną różnicą między tymi językami jest to, że ABAP udostępnia kolekcję instrukcji ułatwiających dostęp i manipulowanie zawartością tabel wewnętrznych. Zauważ, że ABAP nie obsługuje tablic; jedynym sposobem zdefiniowania wieloelementowego obiektu danych jest użycie tabeli wewnętrznej.
Tabele wewnętrzne są sposobem na przechowywanie zmiennych zestawów danych o stałej strukturze w pamięci roboczej ABAP oraz zapewniają funkcjonalność tablic dynamicznych. Dane są przechowywane w kolejności wiersz po wierszu, przy czym każdy wiersz ma taką samą strukturę.
Tabele wewnętrzne są korzystnie używane do przechowywania i formatowania zawartości tabel bazy danych z poziomu programu. Ponadto tabele wewnętrzne w połączeniu ze strukturami są ważnym sposobem definiowania złożonych struktur danych w programie ABAP.
Poniższy przykład definiuje wewnętrzną tabelę z dwoma polami w formacie tabeli bazy danych VBRK.
* First define structured type
TYPES: BEGIN OF t_vbrk,
VBELN TYPE VBRK-VBELN,
ZUONR TYPE VBRK-ZUONR,
END OF t_vbrk.
* Now define internal table of our defined type t_vbrk
DATA : gt_vbrk TYPE STANDARD TABLE OF t_vbrk,
gt_vbrk_2 TYPE STANDARD TABLE OF t_vbrk. "easy to define more tables
* If needed, define structure (line of internal table)
* Definition with type or with reference to internal table:
DATA : gs_vbrk TYPE t_vbrk,
gs_vbrk_2 LIKE LINE OF gt_vbrk_2.
* You can also define table type if needed
TYPES tt_vbrk TYPE STANDARD TABLE OF t_vbrk.
Historia
Poniższa lista zawiera jedynie ogólny zarys niektórych ważnych kamieni milowych w historii języka ABAP. Aby uzyskać więcej informacji, zobacz temat ABAP — Zmiany specyficzne dla wersji .
Wersja | Data wydania | Główne zmiany |
---|---|---|
4,6C | maj 2000 |
|
6.40 | 2004 | |
7,0 | 2006 |
|
7.02 |
|
|
7.40 | 2012-11-29 |
|
7.40 SP05 | Grudzień 2013 |
|
7.40 SP08 | wrzesień 2014 |
|
7,50 | listopad 2015 |
|
7.51 | Październik 2016 |
|
7,52 | wrzesień 2017 |
|
7.54 | wrzesień 2019 |
|
7,55 | wrzesień 2020 |
|
Zobacz też
Bibliografia
Linki zewnętrzne
- ABAP — Dokumentacja słów kluczowych
- Portal pomocy SAP
- Dyskusje na temat ABAP Development , blogi, dokumenty i filmy w SAP Community Network (SCN)