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: