Introduktion til ABAP: Datatyper, Operators & Editor – Tutorial

⚡ Smart opsummering

Introduktion til ABAP dækker sproget SAP skabt til at bygge applikationer på R/3-systemet. Denne ressource forklarer datatyperne, operatorerne, kontrolsætningerne, den interne tabel og SE38-editoren, hvor hvert ABAP-program starter.

  • 🔤 Erklæringssyntaks: DATA variabel_navn TYPE variabel_type deklarerer alle variabler i ABAP.
  • 🔢 Datatyper: I, F og P indeholder tal; C, D, N og T indeholder tegn; X indeholder hexadecimale data.
  • Operators: Aritmetiske operatorer ændrer værdier, mens logiske operatorer som EQ, NE, GT og LT styrer beslutninger.
  • 🔁 Kontrolerklæringer: IF, CASE, WHILE og DO bestemmer, hvilke linjer i et program rent faktisk kører.
  • ???? Interne tabeller: En intern tabel indeholder flere rækker i hukommelsen og er arbejdshesten i enhver ABAP-rapport.
  • 🖥️ Redaktør: Transaktion SE38 er ABAP-editoren, hvor programmer skrives, kontrolleres og udføres.

Introduktion til SAP ABAP

Hvad er ABAP?

ABAP står for Advanced Business Application Programming. Det er et programmeringssprog til udviklingping ansøgninger til SAP R/3 system.

Den seneste version af ABAP hedder ABAP Objects og understøtter objektorienteret programmering. SAP vil køre applikationer skrevet ved hjælp af ABAP/4, den tidligere ABAP-version, samt applikationer, der bruger ABAP-objekter.

Denne introduktion forsøger ikke at dokumentere alle ABAP sprog konstruktion. Den introducerer hurtigt nøglebegreberne, så du kan begynde at skrive arbejdsprogrammer og derefter gå videre til de mere avancerede emner.

Datatyper

Ethvert ABAP-program starter med at deklarere de data, det vil arbejde med.

Syntaks til at erklære en variabel i ABAP –

DATA Variable_Name TYPE Variable_Type.

Eksempel:

DATA employee_number TYPE I.

Følgende er en liste over datatyper, der understøttes af ABAP.

Datatype Indledende feltlængde Gyldig feltlængde Startværdi Betydning
Numeriske typer
I 4 4 0 Heltal (helt tal)
F 8 8 0 Flydende kommanummer
P 8 1 - 16 0 Pakket nummer
Karaktertyper
C 1 1 - 65535 '...' Tekstfelt (alfanumeriske tegn)
D 8 8 '00000000' Datofelt (format: ÅÅÅÅMMDD)
N 1 1 - 65535 '0 … 0' Numerisk tekstfelt (numeriske tegn)
T 6 6 '000000' Tidsfelt (format: TTMMSS)
Hexadecimal type
X 1 1 - 65535 X'0 … 0′ Hexadecimalt felt

De otte ovenstående typer er de klassiske typer med fast længde. ABAP tilbyder også to typer med variabel længde, som begyndere møder næsten med det samme: STRING for tekst af enhver længde, og XSTRING for binære data af enhver længde.

ABAP Operatorer

Når data er deklareret, er det operatorerne, der ændrer dem og sammenligner dem.

Tildeling af værdier

a = 16.
MOVE 16 TO a.
WRITE a TO b.

Alle tre udsagn flytter en værdi. Lighedstegnet er den moderne form, mens MOVE og WRITE TO er de ældre ækvivalenter, du stadig vil støde på i ældre programmer.

Aritmetiske operationer

COMPUTE a = a * 100.

ABAP understøtter også ADD, SUBTRACT, MULTIPLY og DIVIDE er selvstændige nøgleord, men COMPUTE-formen vist ovenfor er den, der bruges oftest.

logiske operatorer

Logiske operatorer returnerer sandt eller falsk, og det er dem, som alle kontrolsætninger i næste afsnit tester. Hver operator har en ordform og en symbolform, og de to kan bruges i stedet.

Ordform Symbolform Betydning
EQ = Svarende til
NE <> Ikke lig med
GT > Større end
GE >= Større end eller lig med
LT < Less end
LE <= Less end eller lig med

Kontrolerklæringer

Kontrolsætninger bruger de ovenstående logiske operatorer til at bestemme, hvilke kodelinjer der køres, og hvor ofte.

HVIS … SLUT HVIS

IF [NOT] exp [ AND / OR [NOT] exp ].
  ........
[ELSEIF exp.
  .......]
[ELSE.
  .......]
ENDIF.

CASE-erklæring

CASE variable.
  WHEN value1.
    .........
  WHEN value2.
    .........
  [WHEN OTHERS.
    .........]
ENDCASE.

WHILE-løkke

WHILE <logical expression>.
  .....
ENDWHILE.

DO-løkke

DO <n> TIMES.
  .....
ENDDO.

En WHILE-løkke kører så længe dens betingelse gælder. En DO-løkke kører et fast antal gange eller uendeligt, indtil en EXIT-sætning stopper den.

Interne tabeller i ABAP

Enkeltstående variabler er sjældent nok. Forretningsprogrammer læser mange rækker på én gang, og den interne tabel er den struktur, der holder dem i hukommelsen.

En intern tabel er et dynamisk array. Det har ingen fast størrelse, det eksisterer kun i programmets varighed, og det er standardmåden til at flytte rækker mellem databasen og skærmen.

" Declare an internal table and a work area
DATA: lt_employees TYPE TABLE OF pa0001,
      ls_employee  TYPE pa0001.

" Fill it from the database
SELECT * FROM pa0001 INTO TABLE lt_employees UP TO 10 ROWS.

" Read it row by row
LOOP AT lt_employees INTO ls_employee.
  WRITE: / ls_employee-pernr, ls_employee-ename.
ENDLOOP.

De tre ovenstående operationer dækker det meste af det daglige arbejde: deklarer tabellen, udfyld den med en SELECT, og følg derefter tabellen med LOOP AT. APPEND tilføjer en række, READ TABLE finder en, og DELETE fjerner rækker, der matcher en betingelse.

ABAP/4 Editor

Al ovenstående syntaks er skrevet på ét sted.

transaktion SE38 åbner ABAP Editoren, hvor du som udvikler vil bruge det meste af din tid på at oprette og ændre programmer.

ABAP/4 Editor

ABAP/4-editoren, transaktion SE38

Sådan skriver du dit første ABAP-program

Skærmen ovenfor viser, hvor følgende trin finder sted. Sekvensen nedenfor genererer en arbejdsrapport på få minutter.

  1. Åbn editoren. Indtast transaktionskode SE38 i SAP GUI-kommandofeltet, og tryk på Enter.
  2. Navngiv programmet. Skriv et navn, der starter med Z or Y, For eksempel ZHELLO_WORLDDisse to bogstaver er kundens navneområde, og SAP garanterer, at den aldrig vil overskrive dem under en opgradering.
  3. Skab det. Klik Opret, indtast en kort beskrivelse, og vælg Eksekverbart program som typen.
  4. Tildel en pakke. Vælg Lokalt objekt til øvelsesarbejde. Et lokalt objekt forbliver i dit system og kræver ingen transportanmodning.
  5. Skriv koden.
REPORT zhello_world.

DATA employee_name TYPE string.
employee_name = 'Guru99'.

WRITE: / 'Hello, ABAP!',
       / 'Welcome', employee_name.
  1. Tjek syntaksen. Presse Ctrl + F2Statuslinjen rapporterer enhver fejl og den linje, der forårsagede den.
  2. Aktivér programmet. Presse Ctrl + F3Et inaktivt program kan ikke køre.
  3. Udfør. Presse F8Outputlisten åbnes og viser begge WRITE-linjer.

Skråstregen i WRITE-sætningen fremtvinger en ny linje. Hvis den fjernes, udskrives alt på én linje, hvilket er den første formateringsvane, som de fleste begyndere tilegner sig.

Almindelig ABAP-transaktion Codes

En håndfuld transaktionskoder dækker næsten alt, hvad en ny ABAP-udvikler har brug for.

transaktion Formål
SE38 ABAP Editor. Opret, rediger, tjek og kør programmer.
SE80 Objektnavigator. En enkelt arbejdsbænk til programmer, klasser, pakker og skærmbilleder.
SE11 ABAP-ordbog. Definer og inspicer databasetabeller, dataelementer og domæner.
SE16N Databrowser. Se indholdet af enhver tabel uden at skrive en SELECT.
SE37 Funktionsbygger. Opret og test funktionsmoduler.
SE24 Klassebygger. Opret globale klasser til ABAP-objekter.
ST22 Dumpanalyse. Læs runtime-fejlen, når et program afsluttes.

SE38 og SE11 er nok til at opbygge en første rapport. ST22 bliver den mest værdifulde i gruppen i det øjeblik et program går ned.

Ofte Stillede Spørgsmål

Z og Y danner kundens navneområde. SAP sender aldrig objekter med disse præfikser, så en opgradering kan ikke overskrive dit program. Navne uden for dette navneområde risikerer at blive erstattet.

ABAP/4 er den proceduremæssige version, bygget på rapporter og subrutiner. ABAP Objects tilføjer klasser, grænseflader og arv. Begge kører i det samme system, så gammel og ny kode sameksisterer.

Brug P, den pakkede type. Den gemmer decimaltal præcist, hvilket er, hvad penge kræver. Type F er et flydende kommatal og introducerer afrundingsfejl, der gør økonomiske totaler upålidelige.

Ja. En AI-assistent kan forklare en dump, oversætte pseudokode til ABAP og foreslå en renere LOOP. Kør altid syntakstjekket, da genereret kode kan referere til tabeller, som dit system mangler.

Ikke uden gennemgang. Genereret kode ignorerer ofte godkendelsestjek, ydeevneregler og den ABAP Cloud-udgivne API-liste. Behandl det som et første udkast, og test det derefter, som du ville gøre med al anden kode.

Opsummer dette indlæg med: