V tejto druhej časti nášho seriálu sa pozrieme na to, ako vyzerá úplný začiatok práce s jazykom ABAP priamo v systéme SAP. Ukážeme si, ako vytvoriť vlastný jednoduchý program, ako zapisovať príkazy, pracovať s výstupmi, reťazcami, premennými a vstupmi od používateľa. Zameriame sa na základy syntaxe, ktoré potrebujete poznať pri akomkoľvek ďalšom programovaní, a zároveň si vytvoríme prvý funkčný program – známu uvítaciu správu „Ahoj, svet!“. Článok nadväzuje na predchádzajúcu časť seriálu, kde sme sa venovali architektúre SAP a dôvodom pre vývoj vlastných riešení.
Táto kapitola je určená začiatočníkom, ktorí doteraz s ABAPom nepracovali, no chcú získať prvú praktickú skúsenosť. Vysvetlenia sú doplnené o zrozumiteľné komentáre, aby bol každý krok jasný aj bez predchádzajúcej znalosti SAP prostredia.
Cieľom nie je len vytvoriť funkčný kód, ale pochopiť logiku základných príkazov, ktoré sa v ABAPe opakujú veľmi často – ako napríklad WRITE, PARAMETERS, DATA, IF, DO, CONCATENATE a ďalšie.
Ukážeme si, že programovanie v SAPe nemusí byť zložité, a že aj jednoduché aplikácie môžu byť veľmi užitočné – napríklad pre rýchle zobrazenie údajov, výpočet, pozdrav používateľa či kontrolu vstupov. Budeme pracovať v klasickom editore SAP (transakcia SE38), ktorý slúži na písanie jednoduchých reportov bez potreby vytvárať ďalšie objekty.
Po prečítaní tejto časti by ste mali byť schopní:
- samostatne vytvoriť vlastný ABAP report,
- používať základné príkazy na výpis a vstup údajov,
- kombinovať text a premenne v reťazci,
- vykonať jednoduchý výpočet alebo podmienku,
- čítať a upravovať existujúci zdrojový kód v SAPe.
Práve tieto základy vám umožnia prejsť v nasledujúcej časti k práci s internými tabuľkami, dotazom do databázy pomocou SELECT a dynamickému spracovaniu údajov. Teraz sa však pustime do vytvorenia úplne prvých programov. Každý z nich si môžete prakticky vyskúšať priamo vo vašom SAP systéme.
Z čoho sa skladá základný ABAP program? 🧱
Každý ABAP program má svoju vnútornú štruktúru, ktorú je dôležité pochopiť už od začiatku. Aj keď ABAP nevyžaduje prísnu triednu štruktúru ako napríklad Java, má svoje pevne dané konvencie, ktoré zabezpečujú správne spracovanie údajov a čitateľnosť kódu.
Základný ABAP report sa typicky skladá z nasledujúcich častí:
- Hlavička programu
Hlavička sa definuje pomocou príkazu REPORT alebo PROGRAM. Tento riadok určuje názov programu a typ objektu. V praxi sa častejšie používa REPORT, najmä pri jednoduchých výstupných programoch. Názvy programov vytvorených používateľmi by mali začínať písmenom Z alebo Y, aby bolo zrejmé, že ide o zákaznícky vývoj. - Deklarácie premenných a výberových polí
Pomocou príkazov DATA, PARAMETERS alebo SELECT-OPTIONS sa definujú premenné a vstupné parametre. Tieto prvky slúžia na uchovávanie údajov počas behu programu, ako aj na interakciu s používateľom prostredníctvom výberovej obrazovky. - Výkonová časť programu
V jednoduchej podobe sa kód vykonáva hneď po definíciách. V komplexnejších prípadoch sa používa udalosť START-OF-SELECTION, ktorá sa spustí automaticky po inicializácii. Táto časť obsahuje logiku spracovania údajov – výpočty, výpisy, databázové dotazy a podmienky.
Táto štruktúra je veľmi flexibilná a umožňuje postupne rozširovať funkcionalitu bez toho, aby ste museli meniť základnú kostru programu. SAP Editor zdrojového kódu naštaratujte ako profík prostredníctvom SAP transakcie SE38.
Ako vytvoriť a spustiť program v ABAPe 🧭
1. krok: Spustiť transakciu SE38: V hornom paneli SAP GUI zadajte príkaz SE38 a potvrďte Enterom.
2. krok: Vytvoriť nový program
- Do poľa Program zadajte názov (napr. Z_AHOJ_SVET)
- Kliknite na Create
3. krok: Vyplniť detaily programu
- Title: napr. Ahoj svet – prvý ABAP program.
- Type: Executable program
- Package: $TMP (ak nechcete uložiť do transportného balíka)
- Kliknite na Save
4. krok: Zadať kód programu
Vložte napríklad nasledovný kód:
* abap
REPORT z_pozdrav_meno.
PARAMETERS: meno TYPE c LENGTH 20.
WRITE: 'Ahoj,', meno, '! Rád ťa vidím v ABAPe.'.
5. krok: Aktivovať program
- Stlačte Ctrl + F3 alebo kliknite na ikonu Aktivovať (Ikona vyzerá ako Kúzelná palička)
6. krok: Spustiť program
- Kliknite na Execute / Direct processing (F8) (Ikona vyzerá ako Kliešte)
- Zobrazí sa vstupné pole meno – zadajte napr. Miro
- Potvrďte opäť F8 pre zobrazenie výstupu
Prvý program: „Ahoj, svet!“ ✅
Začať programovať v jazyku ABAP si nevyžaduje zložité inštalácie ani rozsiahle knižnice. Prvým krokom je naučiť sa vytvoriť jednoduchý výstup na obrazovku – a práve na to slúži náš prvý program v štýle „Hello World“, ktorý sme tu prispôsobili prostrediu SAP.
V ABAPe si vystačíte s niekoľkými riadkami kódu, aby ste získali prvý funkčný program. Tento príklad vám ukáže, ako vyzerá štruktúra najjednoduchšieho reportu, ako funguje zápis textu a čo znamená príkaz WRITE. Takýto program je výborný na overenie, že váš vývojový systém SAP funguje správne a ste pripravení začať tvoriť vlastné kódy.
Zdrojový kód:
* abap
REPORT z_ahoj_svet.
WRITE: 'Ahoj, svet! Vitaj v ABAPe.'.
Vysvetlenie: Toto je jeden z najjednoduchších ABAP programov, ktorý slúži na výstup textu na obrazovku. Príkaz REPORT z_ahoj_svet. definuje názov nášho programu, ktorý začína písmenom Z, ako sa odporúča pri zákazníckych reportoch. Nasleduje príkaz WRITE, ktorý zabezpečí, že sa na výstup zobrazí reťazec „Ahoj, svet! Vitaj v ABAPe.“
Po aktivácii a spustení programu (napr. v transakcii SE38) sa tento text objaví v konzolovej výstupnej oblasti SAP GUI. Hoci ide o jednoduchý príklad, je dôležitý, pretože ukazuje, že v ABAPe nemusíte nutne používať zložité knižnice alebo triedy – aj minimálny kód je funkčný.
Program s interakciou používateľa ✍️
ABAP umožňuje nielen zobrazovanie výstupov, ale aj získavanie vstupov od používateľa. Interaktívne programy sú základom mnohých praktických aplikácií – od jednoduchých výpočtov až po výberové reporty. V tomto príklade si ukážeme, ako pomocou vstupného poľa nechať používateľa zadať svoje meno a vytvoriť personalizovaný výstup.
Tento program patrí medzi najčastejšie úvodné príklady, pretože demonštruje základy práce s výberovou obrazovkou pomocou príkazu PARAMETERS. Ukazuje, ako možno jednoducho reagovať na vstupné hodnoty a vytvárať dynamické texty.
Zdrojový kód:
* abap
REPORT z_pozdrav_meno.
PARAMETERS: meno TYPE c LENGTH 20.
WRITE: 'Ahoj,', meno, '! Rád ťa vidím v ABAPe.'.
Vysvetlenie: Tento program rozširuje základný výpis o možnosť interakcie s používateľom. Vstupná premenná meno je definovaná pomocou PARAMETERS, čo automaticky vytvorí vstupné pole na obrazovke, kde používateľ zadá svoje meno. Po potvrdení vstupu sa zobrazí správa, ktorá pozdraví používateľa zadaným menom – napríklad „Ahoj, Adam! Rád ťa vidím v ABAPe.“
Tento typ programu je veľmi vhodný na vytváranie dynamických výstupov, kde potrebujete prispôsobiť obsah na základe zadania. Využitie PARAMETERS je základom pre tvorbu interaktívnych reportov.
Výpočet veku – jednoduchý aritmetický príklad 🧮
Aritmetické operácie patria medzi najčastejšie činnosti v akomkoľvek programovacom jazyku – a ABAP nie je výnimkou. Tento príklad vám ukáže, ako v ABAPe pracovať so vstupmi od používateľa a číselnými výpočtami, pričom využijeme jednoduché odčítanie medzi dvoma premennými.
Program požaduje zadanie roku narodenia a na základe neho vypočíta vek používateľa. Takýto výpočet je skvelou ukážkou toho, ako kombinovať vstup, logiku a výstup do jedného funkčného celku. Tento prístup možno využiť v mnohých podnikových scenároch – od výpočtu veku zamestnancov až po dynamické hodnoty vo formulároch.
Zdrojový kód:
* abap
REPORT z_ahoj_svet.
PARAMETERS: rok_nar TYPE i.
DATA: aktualny_rok TYPE i VALUE 2025,
vek TYPE i.
vek = aktualny_rok - rok_nar.
WRITE: 'Váš vek je približne:', vek, 'rokov.'.
Vysvetlenie: Tento príklad kombinuje vstupné pole, deklaráciu premenných a jednoduchý výpočet. Používateľ zadá svoj rok narodenia, program tento údaj porovná s aktuálnym rokom a vypočíta vek. Premenné sú deklarované pomocou DATA. Premenná vek je vypočítaná odpočítaním rok_narodenia od aktualny_rok. Výsledok sa potom zobrazí na obrazovke ako súčasť textu.
Tento typ úlohy je základom pre vytváranie formulárov, kontrol údajov a spracovanie jednoduchých výpočtov v podnikových aplikáciách.
Práca s reťazcami (znakové premenné) 📦
Pri tvorbe výstupov v ABAPe často pracujeme s textami – názvami, menami, vetami či dynamicky vytváranými hláškami. Na tieto účely sa používajú znakové reťazce, ktoré umožňujú manipuláciu s textovými hodnotami. V ABAPe môžeme reťazce spájať, rozdeľovať, nahrádzať alebo dynamicky generovať.
V tomto príklade si ukážeme, ako z dvoch samostatných reťazcov – meno a priezvisko – vytvoriť jeden celok pomocou príkazu CONCATENATE. Reťazce sú deklarované pomocou dátového typu STRING, ktorý je flexibilný a vhodný pre texty s premenlivou dĺžkou.
Zdrojový kód:
* abap
REPORT z_zretazenie.
DATA: meno TYPE string VALUE 'Ján',
priezvisko TYPE string VALUE 'Novák',
cele_meno TYPE string.
CONCATENATE meno priezvisko INTO cele_meno SEPARATED BY space.
WRITE: 'Celé meno:', cele_meno.
Vysvetlenie: Tento kód ukazuje prácu s textovými (znakovými) premennými. Používame typ string, ktorý je flexibilnejší ako typ c (char) a vhodný na dynamickú prácu s textom. Príkaz CONCATENATE slúži na spojenie viacerých reťazcov do jedného. V tomto prípade spájame meno a priezvisko a medzi ne vkladáme medzeru pomocou SEPARATED BY space.
Výsledný reťazec cele_meno je potom vypísaný na obrazovku. Tento princíp sa často využíva pri tvorbe výstupov, hlavičiek dokumentov alebo spracovaní textových údajov.
Prehľad dátových typov premenných v ABAPe | |||
🆔 Typ | 📝 Popis | 💡 Príklad deklarácie | 🧠 Poznámka / Použitie |
---|---|---|---|
C |
Znaky (pevná dĺžka) | DATA: meno TYPE c LENGTH 10. |
Text s pevne stanoveným počtom znakov |
N |
Numerické znaky (ako text) | DATA: rodne_cislo TYPE n LENGTH 10. |
Vhodné na rodné čísla, PSČ, bez aritmetiky |
I |
Celé číslo (4 bajty) | DATA: pocet TYPE i. |
Bežné aritmetické operácie |
F |
Desatinné číslo (8 bajtov) | DATA: kurz TYPE f. |
Výpočty s desatinnými hodnotami (kurz, váha) |
P |
Číslo s pevnou presnosťou | DATA: suma TYPE p DECIMALS 2. |
Ideálne pre finančné výpočty |
D |
Dátum (YYYYMMDD) | DATA: datum TYPE d. |
Automaticky formátovaný dátum |
T |
Čas (HHMMSS) | DATA: cas TYPE t. |
Ukladanie časových údajov |
STRING |
Reťazec premennej dĺžky | DATA: veta TYPE string. |
Keď nepoznáme presnú dĺžku textu |
X |
Hexadecimálny bajt | DATA: subor TYPE x LENGTH 2. |
Binárne dáta, obrázky, súbory |
XSTRING |
Reťazec hex. bajtov premennej dĺžky | DATA: obrazok TYPE xstring. |
Prenos binárnych objektov |
CLASSTYPE |
Odkaz na objekt (reference type) | DATA: objekt TYPE REF TO cl_gui. |
Objektovo orientované programovanie |
TYPE TABLE OF |
Vnútorná tabuľka | DATA: zoznam TYPE TABLE OF i. |
Zoznamy údajov, spracovanie v cykloch |
Výpis na viacero riadkov 📋
Pri zobrazovaní údajov v ABAPe je často potrebné rozdeliť výstup na viacero riadkov tak, aby bol pre používateľa prehľadnejší. Typickým príkladom je výpis zoznamu, správ, údajov zo slučky alebo výsledkov kontroly. ABAP umožňuje veľmi jednoducho zalomiť riadok pomocou lomítka / v príkaze WRITE.
Tento mechanizmus je užitočný najmä pri generovaní výstupov, ktoré majú štruktúrovaný charakter, a chcete, aby sa každá položka zobrazila na samostatnom riadku. Nejde pritom o zložitý nástroj – práve naopak, výpisy v ABAPe sa dajú zvládnuť mimoriadne jednoducho a intuitívne.
Zdrojový kód:
* abap
REPORT z_vypis_riadkov.
WRITE: / 'Riadok 1'.
WRITE: / 'Riadok 2'.
WRITE: / 'Riadok 3'.
Vysvetlenie: Lomítko / pred reťazcom zabezpečí zalomenie riadka vo výstupe. Každý riadok sa teda vypíše samostatne pod sebou. Tento jednoduchý trik sa používa pri výpise viacerých údajov – napríklad zoznamov položiek, správ, výsledkov kontroly alebo v debug výstupe.
ABAP výstup je textový a každá nová výstupná hodnota je automaticky zarovnaná podľa systému, no pomocou / vieme ovplyvniť, kde sa začne nový riadok.
Tip na ďalší krok: Pridaj podmienky a cyklus 📘
Zatiaľ sme pracovali so statickými výstupmi a jednoduchými výpočtami. V praxi sa však často stretávame so situáciami, kedy potrebujeme reagovať na hodnoty premenných alebo opakovať niektorú časť kódu. V týchto prípadoch prichádzajú na rad podmienky a cykly.
Podmienka IF
V programovaní často potrebujeme rozhodnúť, ktorá časť kódu sa má vykonať na základe určitej podmienky. Na to slúži v ABAPe príkaz IF, ktorý umožňuje vetvenie logiky podľa aktuálnych hodnôt premenných alebo výsledkov výpočtov.
Podmienka IF je nevyhnutná všade tam, kde potrebujeme reagovať rôzne podľa toho, či niečo platí alebo nie – napríklad overiť, či používateľ zadal číslo nad určitú hranicu, či položka existuje, alebo či dátum záznamu spĺňa nejaké kritérium. V tomto príklade si ukážeme jednoduché rozhodovanie na základe veku.
Zdrojový kód:
* abap
REPORT z_ahoj_svet.
PARAMETERS: vek TYPE i.
IF vek > 18.
WRITE: 'Ste plnoletý.'.
ELSE.
WRITE: 'Ste neplnoletý.'.
ENDIF.
Vysvetlenie: Pomocou príkazu IF môžeme rozhodovať na základe hodnoty premennej. V tomto príklade testujeme, či je premenná vek väčšia ako 18. Ak áno, zobrazí sa správa „Ste plnoletý.“. V opačnom prípade sa zobrazí alternatívna veta.
Tento konštrukt je základom každej logiky v ABAPe – používa sa pri validácii vstupov, rozhodovaní o výstupe, filtrovaní údajov či generovaní správ.
Cyklus DO
Pri vývoji programov v ABAPe sa veľmi často stretávame so situáciou, keď potrebujeme opakovať určitú časť kódu niekoľkokrát za sebou. Na tento účel slúži príkaz DO, ktorý umožňuje vykonanie bloku príkazov stanovený počet opakovaní.
Cyklus DO je jednoduchý a zároveň veľmi účinný nástroj, najmä ak potrebujeme vytvárať opakujúce sa výpisy, testovať správanie kódu alebo prechádzať cez zoznamy. Môže sa kombinovať so systémovou premennou SY-INDEX, ktorá obsahuje aktuálne číslo opakovania – vďaka čomu môžeme vytvoriť očíslované výstupy, číslované položky alebo záznamy.
Zdrojový kód:
* abap
DO 3 TIMES.
WRITE: / 'Toto sa zopakuje 3-krát.'.
ENDDO.
Vysvetlenie: Cyklus DO sa využíva na opakované vykonanie tej istej časti kódu. V našom príklade sa text vypíše trikrát. Cyklus sa dá použiť aj s číslovaním opakovania pomocou systémovej premennej SY-INDEX, čo umožňuje napríklad vytvoriť číslovaný zoznam:
Zdrojový kód:
* abap
DO 5 TIMES.
WRITE: / 'Poradie:', SY-INDEX.
ENDDO.
Tento typ opakovania je praktický pri generovaní riadkov, testovaní, sumarizáciách a najmä pri práci s tabuľkami, ktorým sa budeme venovať v ďalšej časti.
Zhrnutie najdôležitejších príkazov v ABAPe 📌
Po absolvovaní tejto kapitoly máte k dispozícii základný prehľad príkazov, ktoré sa v ABAPe používajú najčastejšie. Tu je prehľadná tabuľka s ich účelom:
Základné ABAP príkazy a ich účel | |
📌 Príkaz | 💡 Účel |
---|---|
REPORT |
Definuje názov a typ programu |
WRITE |
Zobrazí text alebo premenné hodnoty na obrazovke |
PARAMETERS |
Vytvorí vstupné pole pre používateľa na výberovej obrazovke |
DATA |
Deklaruje premenné (číselné, znakové, reťazcové atď.) |
CONCATENATE |
Spojí viaceré textové reťazce do jedného s možnosťou oddeľovača |
/ (lomítko) |
Začína výpis na novom riadku |
IF...ENDIF |
Umožňuje vetvenie programu podľa podmienky |
DO...ENDDO |
Opakuje blok príkazov zadaný počet opakovaní |
Tieto príkazy predstavujú základný „jazykový balíček“ ABAP začiatočníka. Ich kombináciou možno vytvoriť jednoduché, ale užitočné nástroje a výstupy v prostredí SAP.
Záver a odporúčania k ABAP
V tejto druhej časti série o programovaní v ABAPe sme prešli od úplného základu až po praktické príklady, ktoré môžete ihneď vyskúšať vo vlastnom SAP systéme. Vytvorili sme prvý report, zobrazili text, použili vstup od používateľa, vykonali výpočet, spojili reťazce a zobrazili výstupy na viacerých riadkoch. Zároveň sme si predstavili prácu s podmienkami a cyklami, ktoré tvoria základ každej logiky v programovaní.
Tieto jednoduché príklady tvoria základný repertoár, s ktorým sa môžete pustiť do vlastných pokusov. Skúste upraviť vstupné údaje, pridať ďalšie podmienky, rozšíriť počet opakovaní alebo zmeniť výstupné formátovanie. Čím viac si tieto konštrukcie vyskúšate, tým istejšie sa budete v ABAPe pohybovať.
Objavte naše online kurzy SAP a ABAP
Použité zdroje a literatúra SAP a ABAP
Online zdroje:
- https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm
- https://community.sap.com/topics/abap
- https://developers.sap.com/mission.abap-get-started.html
- https://blogs.sap.com/2020/05/12/a-beginners-guide-to-abap/
- https://www.guru99.com/abap-tutorial.html
- https://www.sapdev.co.uk/abap/abap_home.htm
- https://www.tutorialspoint.com/sap_abap/index.htm
- https://www.geeksforgeeks.org/introduction-to-sap-abap/
- https://www.erpgreat.com/abap/abap-overview.htm
- https://www.saptechnical.com/Tutorials/ABAP/ABAP.htm
Odborné články a knihy:
- Horn, M. (2021). ABAP Programming for SAP S/4HANA. Rheinwerk Publishing.
- Jung, T. (2015). Modern ABAP Programming. SAP Press.
- Keller, G., Krüger, T. (2020). ABAP Objects: ABAP Programming in SAP NetWeaver. SAP Press.
- Müller, T. (2019). Practical Guide to SAP ABAP Part 1: Conceptual Overview. Espresso Tutorials.
- Richter, B. (2017). ABAP Development for SAP Business Workflow. SAP Press.
- Schneider, B. (2018). Clean ABAP: A style guide for better ABAP code. SAP Community WIKI.