Introduktion till ABAP: Datatyper, Operators & Editor – Handledning

⚡ Smart sammanfattning

Introduktionen till ABAP täcker språket SAP skapad för att bygga applikationer på R/3-systemet. Denna resurs förklarar datatyperna, operatorerna, kontrollsatserna, den interna tabellen och SE38-editorn där varje ABAP-program börjar.

  • 🔤 Deklarationssyntax: DATA variabelnamn TYP variabeltyp deklarerar varje variabel i ABAP.
  • 🔢 Datatyper: I, F och P innehåller siffror; C, D, N och T innehåller tecken; X innehåller hexadecimala data.
  • ➗ Operators: Aritmetiska operatorer ändrar värden, medan logiska operatorer som EQ, NE, GT och LT styr beslut.
  • 🔁 Kontrollutlåtanden: IF, CASE, WHILE och DO avgör vilka rader i ett program som faktiskt körs.
  • 📋 Interna tabeller: En intern tabell innehåller flera rader i minnet och är arbetshästen i varje ABAP-rapport.
  • 🖥️ Redaktör: Transaktion SE38 är ABAP-editorn, där program skrivs, kontrolleras och körs.

Introduktion till SAP ABAP

Vad är ABAP?

ABAP står för Advanced Business Application Programming. Det är ett programmeringsspråk för utvecklingping ansökningar för SAP R/3-system.

Den senaste versionen av ABAP heter ABAP Objects och stöder objektorienterad programmering. SAP kommer att köra applikationer skrivna med ABAP/4, den tidigare ABAP-versionen, samt applikationer som använder ABAP-objekt.

Denna introduktion försöker inte dokumentera alla ABAP-språk konstruktion. Den introducerar snabbt de viktigaste begreppen, så att du kan börja skriva arbetsprogram och sedan gå vidare till de mer avancerade ämnena.

Datatyper

Varje ABAP-program börjar med att deklarera de data det ska arbeta med.

Syntax för att deklarera en variabel i ABAP –

DATA Variable_Name TYPE Variable_Type.

Exempel:

DATA employee_number TYPE I.

Följande är en lista över datatyper som stöds av ABAP.

Data typ Initial fältlängd Giltig fältlängd Ursprungligt värde Betydelse
Numeriska typer
I 4 4 0 Heltal (heltal)
F 8 8 0 Flyttalsnummer
P 8 1 - 16 0 Packat nummer
Karaktärstyper
C 1 1 - 65535 '...' Textfält (alfanumeriska tecken)
D 8 8 '00000000' Datumfält (format: ÅÅÅÅMMDD)
N 1 1 - 65535 '0 … 0' Numeriskt textfält (numeriska tecken)
T 6 6 '000000' Tidsfält (format: TTMMSS)
Hexadecimal typ
X 1 1 - 65535 X'0 … 0′ Hexadecimalt fält

De åtta typerna ovan är de klassiska typerna med fast längd. ABAP erbjuder också två typer med variabel längd som nybörjare stöter på nästan omedelbart: STRÄNG för text av valfri längd, och XSTRING för binära data av valfri längd.

ABAP Operatorer

När data har deklarerats är det operatorerna som ändrar och jämför den.

Tilldela värden

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

Alla tre satserna flyttar ett värde. Likhetstecknet är den moderna formen, medan MOVE och WRITE TO är de äldre motsvarigheterna som du fortfarande kommer att stöta på i äldre program.

Aritmetiska operationer

COMPUTE a = a * 100.

ABAP stöder även ADD, SUBTRACT, MULTIPLY och DIVIDE är fristående nyckelord, men COMPUTE-formen som visas ovan är den som används oftast.

logiska operatorer

Logiska operatorer returnerar sant eller falskt, och det är dessa som varje kontrollsats i nästa avsnitt testar. Var och en har en ordform och en symbolform, och de två är utbytbara.

Ordform Symbolform Betydelse
EQ = Lika med
NE <> Inte lika med
GT > Större än
GE >= Större än eller lika med
LT < Less än
LE <= Less än eller lika med

Kontrollutlåtanden

Kontrollsatser använder de logiska operatorerna ovan för att bestämma vilka kodrader som körs och hur ofta.

OM … SLUTOM

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

CASE-uttryck

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

WHILE-slinga

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

DO-slinga

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

En WHILE-loop körs så länge dess villkor gäller. En DO-loop körs ett fast antal gånger, eller oändligt tills en EXIT-sats stoppar den.

Interna tabeller i ABAP

Enskilda variabler är sällan tillräckligt. Affärsprogram läser många rader samtidigt, och den interna tabellen är den struktur som lagrar dem i minnet.

En intern tabell är en dynamisk array. Den har ingen fast storlek, den existerar bara under programmets varaktighet och det är standardsättet att flytta rader mellan databasen och 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 operationerna ovan täcker det mesta av det dagliga arbetet: deklarera tabellen, fyll den med en SELECT-funktion och gå sedan igenom den med LOOP AT. APPEND lägger till en rad, READ TABLE hittar en och DELETE tar bort rader som matchar ett villkor.

ABAP/4-redaktör

All syntax ovan är inskriven på ett enda ställe.

transaktion SE38 öppnar ABAP-redigeraren, där du kommer att spendera större delen av din tid som utvecklare med att skapa och modifiera program.

ABAP/4-redaktör

ABAP/4-redigeraren, transaktion SE38

Hur man skriver sitt första ABAP-program

Skärmen ovan är där följande steg sker. Sekvensen nedan producerar en arbetsrapport på några minuter.

  1. Öppna redigeraren. Ange transaktionskod SE38 i SAP GUI-kommandofältet och tryck på Enter.
  2. Namnge programmet. Skriv ett namn som börjar med Z or Y, till exempel ZHELLO_WORLDDe två bokstäverna är kundens namnrymd, och SAP garanterar att de aldrig kommer att skrivas över under en uppgradering.
  3. Skapa det. Klicka Skapa, ange en kort beskrivning och välj Körbart program som typen.
  4. Tilldela ett paket. Välja Lokalt objekt för övningsarbete. Ett lokalt objekt stannar kvar i ditt system och behöver ingen transportförfrågan.
  5. Skriv koden.
REPORT zhello_world.

DATA employee_name TYPE string.
employee_name = 'Guru99'.

WRITE: / 'Hello, ABAP!',
       / 'Welcome', employee_name.
  1. Kontrollera syntaxen. Klicka Ctrl + F2Statusfältet rapporterar eventuella fel och raden som orsakade det.
  2. Aktivera programmet. Klicka Ctrl + F3Ett inaktivt program kan inte köras.
  3. Kör. Klicka F8Utdatalistan öppnas och visar båda WRITE-raderna.

Snedstrecket i WRITE-satsen tvingar fram en ny rad. Om det tas bort skrivs allt ut på en rad, vilket är den första formateringsvanan som de flesta nybörjare lär sig.

Vanlig ABAP-transaktion Codes

En handfull transaktionskoder täcker nästan allt en ny ABAP-utvecklare behöver.

transaktion Syfte
SE38 ABAP-redigerare. Skapa, redigera, kontrollera och kör program.
SE80 Objektnavigator. En enda arbetsbänk för program, klasser, paket och skärmar.
SE11 ABAP-ordbok. Definiera och inspektera databastabeller, dataelement och domäner.
SE16N Dataläsare. Visa innehållet i valfri tabell utan att skriva en SELECT.
SE37 Funktionsbyggare. Skapa och testa funktionsmoduler.
SE24 Klassbyggare. Skapa globala klasser för ABAP-objekt.
ST22 Dumpanalys. Läs körtidsfelet när ett program avslutas.

SE38 och SE11 räcker för att bygga en första rapport. ST22 blir den mest värdefulla i gruppen i det ögonblick ett program kraschar.

Vanliga frågor

Z och Y bildar kundens namnrymd. SAP skickar aldrig objekt med dessa prefix, så en uppgradering kan inte skriva över ditt program. Namn utanför det namnområdet riskerar att ersättas.

ABAP/4 är den procedurella versionen, byggd på rapporter och subrutiner. ABAP Objects lägger till klasser, gränssnitt och arv. Båda körs i samma system, så gammal och ny kod samexisterar.

Använd P, den packade typen. Den lagrar decimaltal exakt, vilket är vad pengar kräver. Typ F är ett flyttal och introducerar avrundningsfel som gör finansiella totalsummor otillförlitliga.

Ja. En AI-assistent kan förklara en dump, översätta pseudokod till ABAP och föreslå en renare LOOP. Kör alltid syntaxkontrollen, eftersom genererad kod kan referera till tabeller som ditt system saknar.

Inte utan granskning. Genererad kod ignorerar ofta auktoriseringskontroller, prestandaregler och listan över ABAP Cloud-släppta API:er. Behandla den som ett första utkast och testa den sedan som du skulle testa vilken kod som helst.

Sammanfatta detta inlägg med: