ABAP

**ABAP** (Advanced Business Application Programming, dáslep Allgemeiner Berichts-Aufbereitungs-Prozessor, nemisshe «ulıwma esabat tayarlaw processorı») — bul Germaniyanıń SAP SE programmalıq támiynat kompaniyası tárepinen jaratılǵan joqarı dárejeli programmalastırıw tili. Ol házirgi waqıtta Java menen birge SAP NetWeaver Application Server programmalastırıw tili retinde jaylasqan, bul biznes qosımshaların dúziwge arnalǵan SAP NetWeaver platformasınıń bir bólegi bolıp tabıladı.

## Kirisiw
ABAP - 1980-jılları islep shıǵılǵan kóplegen qosımshaǵa arnalǵan tórtinshi áwlad tilleriniń (4GLs) biri. Ol dáslep iri korporaciyalarǵa materiallardı basqarıw, finanslıq hám basqarıw esabı ushın meynfreym biznes qosımshaların dúziwge múmkinshilik beretuǵın SAP R/2 platforması ushın esabat tili bolǵan.

ABAP burın nemisshe «ulıwma esabat tayarlaw processorı» degen mánisti bildiretuǵın **A**llgemeiner **B**erichts-**A**ufbereitungs-**P**rozessor sóziniń qısqartpası edi, biraq keyinirek inglisshe Advanced Business Application Programming dep ózgertildi. ABAP logikalıq maǵlıwmatlar bazaları (LDBs) koncepciyasın óz ishine alǵan birinshi tillerdiń biri boldı, bul tiykarǵı maǵlıwmatlar bazası dárejesinen joqarı dárejeli abstrakciyanı támiyinleydi hám hárbir platforma, til hám birliklerdi qollap-quwatlaydı.

ABAP tili dáslep baǵdarlamashılar tárepinen SAP R/3 platformasın islep shıǵıw ushın paydalanılǵan. Ol sonday-aq SAP klientleri tárepinen SAP qosımshaların jaqsılaw ushın da itibarǵa alınǵan - klientler ABAP programmalastırıw menen arnawlı esabatlar hám interfeysler islep shıǵa aladı. Bul til programmalastırıw tájiriybesine iye bolǵan texnikalıq tárepten kúshli klientlerge arnalǵan.

ABAP SAP birinshi ret 1992-jılı shıǵarǵan klient-server R/3 sisteması ushın programmalar jaratıw tili bolıp qalmaqta. 1990-jıllar dawamında kompyuterdiń apparatlıq támiynatı rawajlanǵan sayın, SAP-tıń kóbirek qosımshaları hám sistemaları ABAP tilinde jazıldı. 2001-jılǵa kelip, eń ápiwayı funkciyalardan basqalarınıń hámmesi ABAP tilinde jazılǵan. 1999-jılı SAP R/3 4.6 versiyası menen birge ABAP Objects dep atalǵan ABAP-qa obyektke baǵdarlanǵan keńeytpe shıǵardı.

SAP-tıń házirgi rawajlanıw platforması NetWeaver ABAP hám Java tillerin qollaydı.

ABAP biznes qosımshaları, operaciyalıq sistema hám maǵlıwmatlar bazası arasında abstrakciyaǵa iye. Bul qosımshalardıń belgili bir serverge yamasa maǵlıwmatlar bazası platformasına tikkeley ǵarezli bolmawın támiyinleydi hám bir platformadan ekinshisine ańsat kóshiriwge múmkinshilik beredi.

Hazirgi waqıtta SAP Netweaver UNIX (AIX, HP-UX, Solaris, Linux), Microsoft Windows, IBM System i (burınǵı iSeries, AS/400) sistemasındaǵı i5/OS hám IBM System z (burınǵı zSeries, S/390) sistemasındaǵı z/OS-da isleydi. Qollap-quwatlanatuǵın maǵlıwmatlar bazaları: HANA, SAP ASE (burınǵı Sybase), IBM Db2, Informix, MaxDB, Oracle hám Microsoft SQL Server (Informix-ti qollap-quwatlaw SAP Basis 7.00 versiyasında toqtatılǵan).

## ABAP Orınlaw Ortalıǵı
Barlıq ABAP programmaları SAP maǵlıwmatlar bazasınıń ishinde jaylasadı. Olar Java yamasa C++ programmaları sıyaqlı bólek sırtqı fayllarda saqlanbaydı. Maǵlıwmatlar bazasında barlıq ABAP kodı eki formada boladı: ABAP Workbench quralları menen kóriwge hám redaktorlawǵa bolatuǵın derek kodı; hám Java bayt-kodına uqsas ekilik kórinistegi generaciyalanǵan kod. ABAP programmaları SAP yadrosınıń bir bólegi bolǵan orınlaw sisteması basqarıwı astında orınlanadı. Orınlaw sisteması ABAP operatorların qayta islew, ekranlardıń aǵım logikasın basqarıw hám waqıyalarǵa juwap beriw (mısalı, paydalanıwshınıń ekrandaǵı túymeni basıwı) ushın juwapker bolıp tabıladı; bul jaǵınan onı Java VM-ge uqsas Virtual Mashina retinde qarawǵa boladı. ABAP orınlaw sistemasınıń tiykarǵı komponenti - bul maǵlıwmatlar bazasına baylanıslı bolmaǵan ABAP operatorların («Open SQL») tómengi MBBS («Native SQL») túsinetuǵın operatorlarǵa aylandıratuǵın Maǵlıwmatlar Bazası Interfeysi bolıp tabıladı. Maǵlıwmatlar bazası interfeysi ABAP programmaları atınan relyaciyalıq maǵlıwmatlar bazası menen barlıq baylanıstı ámelge asıradı; Ol sonday-aq qosımsha serverdiń jergilikli yadında kestelerdi hám jiyi kiriletuǵın maǵlıwmatlardı buferlew sıyaqlı qosımsha funkciyalarǵa iye.

### SAP Sistemaları hám Landshaftları
Barlıq SAP maǵlıwmatları SAP sisteması kontekstinde bar hám barlıq SAP programmalıq támiynatı sol jerde isleydi. Sistema oraylıq relyaciyalıq maǵlıwmatlar bazasınan hám usı maǵlıwmatlar bazasındaǵı maǵlıwmatlarǵa hám programmalarǵa kiretuǵın bir yamasa bir neshe qosımsha serverinen («instanciya») ibarat. SAP sisteması keminde bir instanciyaǵa iye, biraq ólshem hám ónimdarlıq sebepleri boyınsha kóbirek bolıwı múmkin. Kóp instanciyalı sistemada júklemelerdi teńlestiriw mexanizmleri júklemeniń qoljetimli qosımsha serverleri arasında bir tegis bóliniwin támiyinleydi.

Veb-qosımsha Serverin (landshaftlar) ornatıw ádette úsh sistemadan ibarat boladı: biri islep shıǵıw ushın; biri testlew hám sapanı támiyinlew ushın; hám biri islep shıǵarıw ushın. Landshaft kóbirek sistemalardı (mısalı, birlik testlewi hám islep shıǵarıw aldınan testlew ushın bólek sistemalar) yamasa azıraq sistemalardı (mısalı, bólek sapalıq támiyinlewsiz tek islep shıǵıw hám islep shıǵarıw) óz ishine alıwı múmkin; degen menen úsh eń kóp tarqalǵan konfiguraciya bolıp tabıladı. ABAP programmaları islep shıǵıw sistemasında jaratıladı hám birinshi testlewden ótedi. Keyin olar landshafttaǵı basqa sistemalarǵa tarqatıladı. Bul háreketler Ózgerisler hám Transport Sisteması (CTS) basqarıwı astında boladı, ol parallel basqarıw (mısalı, eki baǵdarlamashınıń bir waqıtta birdey kodtı ózgertiwiniń aldın alıw), versiyalardı basqarıw hám programmalardı sapalıq támiyinlew hám islep shıǵarıw sistemalarında jaylastırıw ushın juwapker bolıp tabıladı.

Veb-qosımsha Serveri úsh qatlamnan ibarat: maǵlıwmatlar bazası qatlamı; qosımsha qatlamı; hám kórsetiw qatlamı. Bul qatlamlar birdey yamasa hár túrli fizikalıq mashinalarda isley aladı. Maǵlıwmatlar bazası qatlamı relyaciyalıq maǵlıwmatlar bazasın hám maǵlıwmatlar bazası programmalıq támiynatın óz ishine aladı. «Qosımsha qatlamı» sisteması instanciyasın yamasa instanciyaların óz ishine aladı. Barlıq qosımsha processleri, sonıń ishinde biznes operaciyaları hám ABAP islep shıǵıwı, qosımsha qatlamında orınlanadı. Kórsetiw qatlamı sistema paydalanıwshıları menen óz-ara tásirdi basqaradı. ABAP qosımsha serverlerine onlayn kiriw «SAP GUI» dep atalatuǵın menshikli grafikalıq interfeys arqalı yamasa veb-brauzer arqalı bolıwı múmkin.

### Programmalıq támiynat qatlamları
ABAP programmalıq támiynatı programmalıq támiynat komponentlerinde jaylastırıladı. Olarǵa mısal retinde:

* **SAP_BASIS** - bul hárbir ABAP sistemasında talap etiletuǵın texnikalıq tiykar qatlamı.
* **SAP_ABA** - biznes sherikles hám adresti basqarıw sıyaqlı barlıq túrdegi biznes qosımshaları ushın talap etiletuǵın funkciyalardı óz ishine aladı.
* **SAP_UI** - SAP UI5 qosımshaların jaratıw funkciyasın támiyinleydi.
* **BBPCRM** - bul biznes qosımshasına mısal, bul jaǵdayda CRM qosımshası.

## Tranzakciyalar
SAP terminologiyasında tranzakciya - bul programmanıń orınlanıwı. SAP sistemasında ABAP kodın orınlawdıń ádettegi usılı - tranzakciya kodın kirgiziw (mısalı, VA01 - «Satıw Buyırtpasın Jaraw» ushın tranzakciya kodı). ABAP baǵdarlamashısı tárepinen qollanılatuǵın ulıwma tranzakciya kodları (T-kodları): SE38, SE09, SE10, SE24, SE11, SE16N, SE80, SE37, ST22 hám t.b. Tranzakciyalardı sistema tárepinen anıqlanǵan yamasa paydalanıwshıǵa arnalǵan, rolge tiykarlanǵan menyuler arqalı shaqırıwǵa boladı. Olardı sonday-aq hárbir SAP ekranında bar bolǵan buyrıq maydanına tikkeley tranzakciya kodın kirgiziw arqalı da baslawǵa boladı. Tranzakciyalardı ABAP operatorları CALL TRANSACTION hám LEAVE TO TRANSACTION arqalı programmalıq tárepten de shaqırıwǵa boladı. SAP terminologiyasında tranzakciyanıń ulıwma túsinigi Logikalıq Jumıs Birligi (LUW) dep ataladı.

## ABAP programmalarınıń túrleri
Basqa programmalastırıw tillerindegi sıyaqlı, ABAP programması ya orınlanatuǵın birlik, ya basqa programmalarǵa qayta paydalanılatuǵın kodtı usınatuǵın hám óz aldına orınlanbaytuǵın kitapxana bolıp tabıladı.

ABAP orınlanatuǵın programmalardıń eki túrin ajıratadı:

* Esabatlar
* Modul toplamları

Esabatlar salıstırmalı túrde ápiwayı programmalastırıw modelin qollanadı, bunda paydalanıwshı qálewi boyınsha parametrler jıynaǵın (mısalı, maǵlıwmatlardıń bir bólegin tańlaw) kirgizedi hám programma keyin kirgiziw parametrlerin paydalanıp interaktiv dizim túrinde esabat shıǵaradı. «Esabat» termini biraz shatastırıwı múmkin, sebebi esabatlar maǵlıwmatlardı ózgertiw ushın da proektlestiriliwi múmkin; bul programmalardıń esabatlar dep atalıwınıń sebebi - olar shıǵaratuǵın nátiyjeniń «dizimge baǵdarlanǵan» tábiyatı.

Modul toplamları ekranlar jıynaǵın paydalanıp, paydalanıwshı menen óz-ara tásirdiń quramalı úlgilerin anıqlaydı. «Ekran» termini paydalanıwshı kóretuǵın haqıyqıy, fizikalıq súwretti ańlatadı. Hárbir ekrannıń sonday-aq «aǵım logikası» bar, bul ekranlar tárepinen tikkeley shaqırılatuǵın ABAP kodın ańlatadı, ol «PBO» (Nátiyjeden Aldın Process) hám «PAI» (Kirgiziwden Keyin Process) bólimlerine bólingen. SAP hújjetlerinde «dynpro» (dinamikalıq programma) termini ekrannıń hám onıń aǵım logikasınıń birikpesin ańlatadı.

Orınlanbaytuǵın programma túrleri:

* **INCLUDE modulleri** - Bular generaciya waqtında shaqırıwshı birlikke kirgiziledi; ol kóbinese úlken programmalardı bóliw ushın qollanıladı.
* **Podprogramma toplamları** - Bular ABAP podprogrammaların (FORM/ENDFORM operatorları menen oralǵan hám PERFORM menen shaqırılatuǵın kod blokları) óz ishine aladı.
* **Funkciya toparları** - Bular óz aldına funkciya modulleriniń (FUNCTION/ENDFUNCTION menen oralǵan hám CALL FUNCTION menen shaqırılatuǵın) kitapxanaları bolıp tabıladı.
* **Obyekt klassları** - Bular Java klasslarına hám interfeyslerine uqsas; birinshileri metodlar hám atributlar jıynaǵın anıqlaydı, ekinshileri «bos» metod anıqlamaların óz ishine aladı, olar ushın interfeysti ámelge asıratuǵın hárbir klass anıq kod usınıwı kerek.
* **Interfeysler** - Obyekt klassları menen birdey.
* **Tip toplamları** - Bular maǵlıwmatlar tipleri hám konstantalar jıynaǵın anıqlaydı.

ABAP programmaları jeke gáplerden (operatorlardan) ibarat. Operatordaǵı birinshi sóz ABAP gilt sózi dep ataladı. Hárbir operator noqat penen juwmaqlanadı. Sózler arasında bárqulla keminde bir bos orın bolıwı kerek. Operatorlardı qálegenińizshe shegindiriwge boladı. Gilt sózler, qosımshalar hám operandlar menen ABAP orınlaw sisteması úlken hám kishi háriplerdi ayırmaydı.

Operatorlar bir qatardan asıp ketiwi múmkin. Bir qatarda bir neshe operatorlardı jaylastırıwǵa boladı (biraq bul usınıs etilmeydi). Birinshi baǵanada juldızsha * menen baslanatuǵın qatarlar ABAP orınlanıw sisteması tárepinen kommentariya qatarları retinde tanılıp, itibarǵa alınbaydı. Tırnaqshalar (") qatardıń qalǵan bólegi kommentariya ekenligin kórsetedi.

## ABAP sintaksisi
ABAP sintaksisiniń bul qısqasha túsindirmesi hámmege málim bolǵan «Hello» mısalı menen baslanadı.

### Hello world

```abap
REPORT TEST.
WRITE 'Hello, World!'.
```
Bul mısalda eki operator bar: REPORT hám WRITE. Programma ekranda dizim kórsetedi. Bul jaǵdayda dizim «Hello, World!» degen bir qatardan ibarat. REPORT operatorı bul programmanıń esabat ekenligin bildiredi. Bul programma REPORT operatorın PROGRAM menen almastırǵannan keyin modul toplamı bola aladı.

### Shınjırlı operatorlar
Birinshi (shep jaqtaǵı) bólegi birdey bolǵan izbe-iz operatorlardı shınjır operatorı : arqalı «shınjırlı» operatorǵa birlestiriwge boladı. Operatorlardıń ulıwma bólegi qos noqattıń shep jaǵında, al ayırmashılıq etetuǵın bólekleri oń jaǵında útir menen ajıratılıp jazıladı. Qos noqat operatorı aldınǵı tokenge tikkeley, bos orınsız jalǵanadı (bul tómendegi mısalda kórsetilgenindey, tokenler dizimindegi útirlerge de tiyisli).

Shınjırlaw kóbinese WRITE operatorlarında qollanıladı. WRITE tek bir ǵana argumentti qabıl etedi, sol sebepli, mısalı, eger siz FLIGHTINFO dep atalǵan strukturadan úsh maydandı kórsetpekshi bolsańız, tómendegishe kod jazıwıńız kerek:
```abap
WRITE FLIGHTINFO-CITYFROM.
WRITE FLIGHTINFO-CITYTO.
WRITE FLIGHTINFO-AIRPTO.
```
Operatorlardı shınjırlaw oqıwǵa qolaylı hám intuitiv túsinikli formaǵa alıp keledi:
```abap
WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.
```
Shınjırlı operatorda birinshi bólek (qos noqattan aldınǵı) tek ǵana operator atı menen sheklenbeydi. Izbe-iz keletuǵın operatorlardıń pútkil ulıwma bólegin qos noqattıń aldına qoyıwǵa boladı. Mısal:
```abap
REPLACE 'A' WITH 'B' INTO LASTNAME.
REPLACE 'A' WITH 'B' INTO FIRSTNAME.
REPLACE 'A' WITH 'B' INTO CITYNAME.
```
shınjırlı formada tómendegishe qayta jazılıwı múmkin:
```abap
REPLACE 'A' WITH 'B' INTO: LASTNAME, FIRSTNAME, CITYNAME.
```


### Kommentariyalar
ABAP-ta tekstti kommentariya retinde anıqlawdıń 2 usılı bar:

* Qatardıń eń shep baǵanasındaǵı juldızsha (*) pútkil qatardı kommentariyaǵa aylandıradı.
* Qatardıń qálegen jerindegi tırnaqsha (") sol qatardıń qalǵan bólegin kommentariyaǵa aylandıradı.

Mısal:
```abap
***************************************
** 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
(...)
```


### Bos orınlar
ABAP-ta kod bos orınlarǵa sezimtal.
```abap
x = a+b(c).
```
x ózgeriwshisine a ózgeriwshisiniń b-dan baslanatuǵın hám uzınlıǵı c ózgeriwshisi menen anıqlanǵan ishki qatarın menshikleydi.
```abap
x = a + b( c ).
```
x ózgeriwshisine a ózgeriwshisiniń hám c parametri menen b metodın shaqırıw nátiyjesiniń qosındısın menshikleydi.

## Derekler

__BÖLİDİMÖNDEMEW__