ABAP modularizacija: makro, podrutina i funkcijski modul

⚡ Pametni sažetak

Modularizacija u ABAP-u smješta niz naredbi u višekratno upotrebljivu jedinicu koju glavni program jednostavno poziva. Ova stranica objašnjava makroe, programe, potprograme, funkcijske module i funkcijske grupe, sa sintaksom, primjerima i kriterijima odabira za svaku tehniku.

  • 🧩 Osnovni princip: Modularna jedinica se generira kao da je njen izvorni kod fizički prisutan u pozivnom programu, tako da se struktura poboljšava bez troškova izvođenja.
  • ⚡ Makro: Definirano s DEFINE i END-OF-DEFINITION, upotrebljivo samo unutar programa koji ga definira i samo nakon linije definicije.
  • 📄 Uključi program: Ne sadrži parametarsko sučelje i postoji isključivo za dijeljenje izvornog koda, kao što su dugačke deklaracije podataka, između nekoliko programa.
  • 🔁 Podprogram: Deklarisano s FORM i ENDFORM, pozvano s PERFORM i prilagođeno logici koja se ponovno koristi lokalno unutar jednog programa.
  • 🧱 Funkcijski modul: Sistemska rutina s tipiziranim sučeljem za uvoz, izvoz, promjenu parametara tablice i iznimke.
  • ???? Funkcionalna skupina: Kontejner čiji se globalni podaci dijele sa svakim funkcijskim modulom unutar njega, generiran automatski s njegovim TOP i UXX uključenim stavkama.
  • 🧭 Pravilo odabira: Odaberite makro za lokalnu skraćenicu, potprogram za lokalnu logiku i funkcijski modul kada rutina mora biti ponovno upotrebljiva u cijelom sustavu.

Modularizacija u ABAP-u

Što je modularizacija u ABAP-u?

Kada modularizirate izvorni kod, u modul postavljate niz ABAP naredbi. Zatim, umjesto da smjestite sve naredbe u glavni program, jednostavno pozivate modul. Kada se program generira, izvorni kod u jedinici za modularizaciju tretira se kao da je zapravo fizički prisutan u glavnom programu.

Potreba za modularizacijom

  • Poboljšajte strukturu programa.
  • Lako čitljiv kod
  • Jednostavan za održavanje koda
  • Izbjegava redundanciju i promiče ponovnu upotrebu koda

Razne tehnike modularizacije

  • Upotreba makronaredbi
  • Korištenje uključenih datoteka
  • Potprogrami
  • Funkcijski moduli

Razmotrimo svaki od njih detaljno:

SAP- Makro ABAP

Ako želite ponovno upotrijebiti isti skup izjava više od jednom u programu, možete ih uključiti u makronaredbu.

Makro možete koristiti samo unutar programa u kojem je definiran, a može se pozvati samo u redovima programa koji slijede njegovu definiciju.

Makroi mogu biti korisni za duge izračune ili složene WRITE naredbe.

Sintaksa

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Makronaredbe mogu koristiti parametre &N gdje je N = 1,2,3…

Primjer:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Izlaz: 2

Makro se proširuje tijekom kompajliranja samo unutar jednog programa. Kada se isti kod mora dijeliti između programa, umjesto toga se koristi program za uključivanje.

Uključi programe

Programi Include služe isključivo za modularizaciju izvornog koda i nemaju sučelje parametara.

Uključivanje programa omogućuje vam korištenje istog izvornog koda u različitim programima. Mogu biti korisni ako imate dugačke deklaracije podataka koje želite koristiti u različitim programima.

Sintaksa

Include <include program Name>

Bodovi na bilješku

  • Programi uključivanja ne mogu sami sebe pozvati.
  • Uključi programi moraju sadržavati potpune izjave.

Primjer:

INCLUDE ZILX0004.

WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM.

================================

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Uključeni programi dijele kod, ali ne mogu primati parametre. Potprogrami dodaju taj nedostajući parametarski interfejs.

Potprogrami

Potprogrami su postupci koje možete definirati u bilo kojem ABAP program a također i poziv iz bilo kojeg programa. Potprogrami se obično pozivaju interno, to jest, sadrže dijelove koda ili algoritama koji se često koriste lokalno. Ako želite da se funkcija može ponovno koristiti u cijelom sustavu, koristite funkcijski modul.

Sintaksa-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Naziv potprograma

= Parametri se prosljeđuju

Vrste potprograma

  1. interni
    • Potprogram definiran u istom programu koji se poziva.
    • Može pristupiti svim podatkovnim objektima deklariranim u glavnom programu ABAP/4.
  2. Vanjski
    • Potprogram definiran izvan programa koji se poziva.
    • Treba koristiti opciju ili deklarirati podatkovne objekte u zajedničkim dijelovima memorije.

Pozivanje potprograma

Unutarnje potprograme

PERFORM <subroutine> [<pass>]

= Naziv potprograma

= Parametri se prosljeđuju

Podaci deklarirani u glavnom programu automatski su dostupni.

Vanjski potprogrami

PERFORM <subroutine>(<Program>) [<pass>].

PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND].

PERFORM (<subroutine>) IN PROGRAM  (<Program>) [<pass>] [IF FOUND].

PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].

Bodovi na bilješku

  • Ugniježđeni pozivi dopušteni su u potprogramima (tj. PERFORM unutar FORM … ENDFORM).
  • Mogući su i rekurzivni pozivi.
  • Za definiranje lokalnih podataka upotrijebite naredbu DATA nakon FORM. Svaki put kada uđete u potprogram, podaci se ponovno kreiraju (s početnom vrijednošću) i otpuštaju na kraju (iz stoga).
  • Za definiranje globalnih podataka koji se koriste unutar potprograma, koristite naredbu LOCAL nakon FORM. Vrijednosti se spremaju kada uđete u potprogram, a zatim se otpuštaju na kraju (iz hrpe)

💡 Savjet: Potprogrami se smatraju zastarjelima u ABAP objektima. Novi razvojni programi trebali bi smjestiti logiku za višekratnu upotrebu u metode klase i koristiti funkcijske module kada je potrebno daljinski omogućeno ili sustavno sučelje.

Funkcijski moduli

Funkcijski moduli su ABAP/4 rutine opće namjene koje svatko može koristiti. Zapravo, postoji velik broj dostupnih standardnih funkcijskih modula.

Funkcijski moduli su organizirani u Funkcijske grupe: Zbirke logički povezanih funkcija. Funkcijski modul uvijek pripada funkcijskoj grupi.

Sintaksa-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Važne informacije povezane s funkcijskim modulom

  • Administracija
  • Uvoz/Promjena/Izvoz parametara.
  • Parametri/iznimke tablice.
  • Dokumentacija
  • Izvorni kod – L U01 . je Funkcijska grupa
  • Globalni podaci – L TOP .Globalni podaci za funkcijsku skupinu- Dostupni preko funkcijskih modula u funkcijskoj skupini.
  • Glavni program – SAPL . Sadrži popis svih uključenih datoteka za tu funkcijsku grupu

Pozovite funkcijski modul

Za poziv funkcijskog modula upotrijebite naredbu CALL FUNCTION:

CALL FUNCTION <module>

[EXPORTING  f1 = a 1.... f n = a n]

[IMPORTING  f1 = a 1.... f n = a n]

[CHANGING   f1 = a 1.... f n = a n]

[TABLES     f1 = a 1.... f n = a n]

[EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E]

[OTHERS = ro]].

Svaki funkcijski modul nalazi se unutar funkcijske grupe, pa sljedeći odjeljak objašnjava kako taj kontejner funkcionira.

Funkcijske skupine

Funkcijske grupe su spremnici za funkcijske module. Zapravo, postoji veliki broj standardnih funkcionalnih grupa.
Svi funkcijski moduli u funkcijskoj grupi mogu pristupiti globalnim podacima grupe.

Poput izvršnih programa (tip 1) i bazeni modula (tip M), skupine funkcija mogu sadržavati zaslone, zaslone za odabir i popise.

Bodovi na bilješku

  • Grupe funkcija se ne mogu izvršiti.
  • Naziv funkcionalne grupe može imati do 26 znakova.
  • Kada kreirate funkcijsku grupu ili funkcijski modul, glavni program i uključeni programi generiraju se automatski.
  • Funkcijske grupe enkapsuliraju podatke.

Kako stvoriti funkcionalnu grupu

  1. Idi na transakciju SE80.
  2. Na padajućem izborniku odaberite Program.
  3. Napišite naziv funkcionalne grupe koju želite stvoriti. Općenito korisničke grupe funkcija počinju sa "Z". npr. – . Pritisnite tipku Enter.
  4. Imajte na umu da se TOP uključivanje stvara prema zadanim postavkama ako korisnik označi opciju stvaranja TOP uključivanja.

Kako stvoriti funkcijski modul

  1. Stvorite grupu funkcija (recite "ZCAL").
  2. Izradite funkcijski modul, postavite atribute poput (Funkcionalna grupa, Aplikacija, Kratki tekst i Vrsta procesa) i Spremi.
  3. Uključite datoteku "LZCALU01" imat će izvorni kod prvog funkcijskog modula.
  4. Uključi datoteku “LZCALTOP” imat će globalne podatke.
  5. Glavni program”SAPLZCAL” sadrži
    • Globalni podaci Uključi datoteku “LZCALTOP”
    • Funkcijski moduli uključuju datoteku "LZCALUXX"
    • Korisnički definirano Uključi datoteke “LZCALF..”, “LZCALO..” i “LZCALI..”
  6. Definirajte parametre sučelja i iznimke
  7. Napišite izvorni kod
  8. Aktivirajte funkcijski modul
  9. Testiranje funkcijskog modula – pojedinačni test i otklanjanje pogrešaka
  10. Dokumentiranje i puštanje funkcijskog modula

Kako odabrati pravu tehniku ​​modularizacije

Četiri tehnike se preklapaju, pa odluka ovisi o opsegu ponovne upotrebe i o tome je li potrebno sučelje parametara.

Tehnika Opseg ponovne upotrebe Sučelje parametara Najbolje koristiti za
Makro Jedan program, nakon linije definicije Pozicijske rezervirane riječi od &1 do &9 Kratke ponovljene naredbe, dugi izračuni, složeni WRITE izlaz
Uključi program Bilo koji program koji imenuje uključene nijedan Deklaracije dijeljenih podataka i dijeljeni izvorni kod
Podprogram (FORM) Lokalno ili vanjsko s PERFORM … IN PROGRAM KORIŠTENJE, PROMJENA, TABLICA Logika se često ponovno koristi unutar jednog programa
Funkcijski modul Cijeli sustav, uključujući udaljene pozive UVOZ, IZVOZ, PROMJENA, TABLICA, IZNIMKE Rutine dijeljene između aplikacija i enkapsulirane u funkcijskoj grupi

Kratko pravilo pokriva većinu slučajeva: koristite makro za skraćeni zapis unutar jednog programa, uključeno pravilo za zajedničke deklaracije, potprogram za lokalnu logiku i funkcijski modul kad god rutina mora biti dostupna za pozivanje s bilo kojeg mjesta u sustavu. To je sve o modularnosti u ABAP-u.

Pitanja i odgovori

Makro se proširuje u vrijeme generiranja i radi samo unutar programa koji ga definira. Podprogram je stvarna procedura s tipiziranim parametrima koja se također može pozvati iz drugog programa pomoću PERFORM-a.

Funkcijski modul čija je vrsta obrade postavljena na Daljinski omogućeni modul može se pozvati iz drugog SAP sustava ili iz vanjske aplikacije. Njegovi parametri moraju se proslijediti po vrijednosti, a iznimke se tretiraju kao sistemski kvarovi.

Makro se ne može korak po korak izvršavati u debuggeru jer se proširuje prije generiranja. Premjestite logiku u podrutinu ili metodu kada je potrebno debugiranje redak po redak i ograničite makroe na kratke naredbe.

AI kodni asistenti unutar ABAP razvojnih alata mogu izraditi kostur funkcionalnog modula, njegovo sučelje parametara i njegove iznimke iz jednostavnog opisa. Programer i dalje pregledava logiku, aktivira modul i testira ga prije transporta.

Alati umjetne inteligencije skeniraju program, otkrivaju ponovljene blokove i predlažu gdje treba ukloniti potprogram, metodu ili funkcijski modul.tracted. Prijedlog ubrzava refaktoriranje, iako je jedinično testiranje i dalje potrebno za potvrdu identičnog ponašanja.

Sažmite ovu objavu uz: