Modularizare ABAP: Macro, Subrutină și Modul Funcțional
⚡ Rezumat inteligent
Modularizarea în ABAP plasează o secvență de instrucțiuni într-o unitate reutilizabilă pe care programul principal o apelează pur și simplu. Această pagină explică macrocomenzile, inclusiv programele, subrutinele, modulele de funcții și grupurile de funcții, cu sintaxă, exemple și criterii de selecție pentru fiecare tehnică.

Ce este modularizarea în ABAP?
Când modularizezi codul sursă, plasezi o secvență de instrucțiuni ABAP într-un modul. Apoi, în loc să plasezi toate instrucțiunile în programul principal, pur și simplu apelezi modulul. Când programul este generat, codul sursă din unitatea de modularizare este tratat ca și cum ar fi prezent fizic în programul principal.
Nevoia de modularizare
- Îmbunătățiți structura programului.
- Codul ușor de citit
- Ușor de întreținut codul
- Evitați redundanța și promovează reutilizarea codului
Diverse tehnici de modularizare
- Utilizarea macrocomenzilor
- Utilizarea fișierelor include
- Subrutine
- Module funcționale
Să analizăm fiecare dintre ele în detaliu:
SAP- Macro ABAP
Dacă doriți să reutilizați același set de instrucțiuni de mai multe ori într-un program, le puteți include într-o macrocomandă.
O macrocomandă poate fi utilizată doar în programul în care este definită și poate fi apelată doar în liniile de program care urmează definiției sale.
Macrocomenzile pot fi utile pentru calcule lungi sau instrucțiuni WRITE complexe.
Sintaxă
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Macro-urile pot folosi Parametri &N unde N = 1,2,3...
Exemplu:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Ieșire: 2
O macrocomandă este extinsă la momentul compilării într-un singur program. Când același cod trebuie partajat între programe, se utilizează în schimb un program inclus.
Include programe
Include Programele sunt exclusiv pentru modularizarea codului sursă și nu au interfață de parametri.
Programele incluse vă permit să utilizați același cod sursă în programe diferite. Acestea pot fi utile dacă aveți declarații de date lungi pe care doriți să le utilizați în programe diferite.
Sintaxă
Include <include program Name>
Puncte de remarcat
- Programele includ nu se pot numi singure.
- Include programele trebuie să conțină declarații complete.
Exemplu:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Programele incluse partajează cod, dar nu pot primi parametri. Subrutinele adaugă acea interfață cu parametrii lipsă.
Subrutine
Subrutinele sunt proceduri pe care le puteți defini în orice program ABAP și, de asemenea, apelați din orice program. Subrutinele sunt de obicei numite intern, adică conțin secțiuni de cod sau algoritmi care sunt utilizați frecvent local. Dacă doriți ca o funcție să fie reutilizabilă în întregul sistem, utilizați un modul funcțional.
Sintaxă-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Numele subrutinei
= Parametrii în curs de trecere
Tipuri de subprograme
- Intern
- Subrutină definită în același program apelat.
- Poate accesa toate obiectele de date declarate în programul principal ABAP/4.
- Extern
- Subrutină definită în afara programului apelat.
- Trebuie să utilizați opțiune sau declara obiecte de date în părți comune ale memoriei.
Apelarea unei subrutine
Subrutine interne
PERFORM <subroutine> [<pass>]
= Numele subrutinei
= Parametrii în curs de trecere
Datele declarate în programul principal sunt disponibile automat.
Subrutine externe
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>].
Puncte de remarcat
- Apelurile imbricate sunt permise în subrutine (adică PERFORM într-un FORM … ENDFORM ).
- Apelurile recursive sunt, de asemenea, posibile.
- Pentru a defini datele locale, utilizați instrucțiunea DATA după FORM . De fiecare dată când intrați în subrutină, datele sunt recreate (cu o valoare inițială) și eliberate la sfârșit (din stivă).
- Pentru a defini datele globale utilizate într-o subrutină, utilizați instrucțiunea LOCAL după FORM . Valorile sunt salvate când intrați în subrutină și apoi eliberate la sfârșit (din stivă)
💡 Sfat: Subrutinele sunt considerate învechite în obiectele ABAP. Noile dezvoltări ar trebui să plaseze logica reutilizabilă în metodele unei clase și să utilizeze module de funcții atunci când este necesară o interfață activată de la distanță sau la nivel de sistem.
Module funcționale
Modulele funcționale sunt rutine ABAP/4 de uz general pe care oricine le poate folosi. De fapt, există un număr mare de module cu funcții standard disponibile.
Modulele de funcții sunt organizate în Grupuri de Funcții: Colecții de funcții legate logic. Un modul de funcții aparține întotdeauna unui grup de funcții.
Sintaxă-
FUNCTION <function module> <Statements> ENDFUNCTION.
Informații importante asociate cu modulul funcțional
- Administrare
- Import/Modificare/Exportare parametri.
- Parametri de tabel/Excepții.
- Documentație
- Cod sursă - L U01 . este grupul de funcții
- Date globale – L TOP .Date globale pentru grupul de funcții- Accesibil prin modulele funcționale din grupul de funcții.
- Programul principal - SAPL . Conține lista tuturor fișierelor incluse pentru acel grup de funcții
Apelați un modul funcțional
Pentru a apela un modul de funcție, utilizați instrucțiunea 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]].
Fiecare modul funcțional se află într-un grup de funcții, așa că următoarea secțiune explică cum funcționează acel container.
Grupuri de funcții
Grupurile de funcții sunt containere pentru modulele funcționale. De fapt, există un număr mare de grupuri de funcții standard.
Toate modulele funcționale dintr-un grup de funcții pot accesa datele globale ale grupului.
La fel ca programele executabile (tip 1) și pool-uri de module (tip M), grupurile de funcții pot conține ecrane, ecrane de selecție și liste.
Puncte de remarcat
- Grupurile de funcții nu pot fi executate.
- Numele unui grup de funcții poate avea până la 26 de caractere.
- Când creați un grup de funcții sau un modul de funcție, programul principal și programele includ sunt generate automat.
- Grupurile de funcții încapsulează datele.
Cum se creează un grup de funcții
- Mergeți la tranzacția SE80.
- Selectați Program în meniul drop-down.
- Scrieți numele grupului de funcții pe care doriți să-l creați. În general, grupurile de funcții create de utilizator încep cu „Z”. de exemplu - . Apăsați tasta Enter.
- Rețineți că TOP Include este creat în mod implicit dacă utilizatorul bifează opțiunea de a crea o include TOP.
Cum se creează un modul funcțional
- Creați un grup de funcții (spuneți „ZCAL”).
- Creați un modul funcțional, setați atributele precum (Grup de funcții, Aplicație, Text scurt și Tip de proces) și salvați.
- Includeți fișierul „LZCALU01” va avea codul sursă al primului modul de funcție.
- Includeți fișierul „LZCALTOP” va avea date globale.
- Programul principal „SAPLZCAL” conține
- Date globale Includeți fișierul „LZCALTOP”
- Modulele funcționale includ fișierul „LZCALUXX”
- Definit de utilizator Includeți fișierele „LZCALF..”, „LZCALO..” și „LZCALI..”
- Definiți parametrii de interfață și excepțiile
- Scrieți codul sursă
- Activați modulul funcțional
- Testarea modulului funcțional – Test unic și depanare
- Documentarea și lansarea unui modul funcțional
Cum să alegi tehnica potrivită de modularizare
Cele patru tehnici se suprapun, așadar decizia depinde de scopul reutilizării și de necesitatea unei interfețe cu parametrii.
| Metoda de măsurare | Domeniul de aplicare al reutilizării | Interfața parametrilor | Cel mai bine folosit pentru |
|---|---|---|---|
| Macro | Un program, după linia de definiție | Substituenți poziționali de la &1 la &9 | Instrucțiuni scurte și repetate, calcule lungi, ieșire WRITE complexă |
| Includeți programul | Orice program care denumește includerea | Nici unul | Declarații de date partajate și cod sursă partajat |
| Subrutină (FORM) | Local sau extern cu PERFORM … ÎN PROGRAM | UTILIZAREA, MODIFICAREA TABELELOR | Logica este reutilizată frecvent în cadrul unui program |
| Modul funcțional | Întregul sistem, inclusiv apelurile la distanță | IMPORT, EXPORT, MODIFICARE, TABELE, EXCEPȚII | Rutine partajate între aplicații și încapsulate într-un grup de funcții |
O regulă scurtă acoperă majoritatea cazurilor: folosiți o macrocomandă pentru prescurtare în interiorul unui program, o includere pentru declarații partajate, o subrutină pentru logica locală și un modul de funcții ori de câte ori rutina trebuie să poată fi apelată de oriunde din sistem. Asta e tot ce înseamnă modularitatea în ABAP.
