Documente Academic
Documente Profesional
Documente Cultură
Web Dynro for ABAP (cu prescurtare WD4A sau WDA) este standardul actual SAP pentru
dezvoltarea aplicaţiilor Web în mediul ABAP. Conţine un mediu de execuţie şi un mediu de
dezvoltare grafică cu unelte Web Dynpro speciale care formează un framework, integrate în ABAP
Workbench (SE80).
Paradigma după care este realizat acest framework este paradigma MVC. Designul MVC nu
este un concept nou (realizat în 1979 de dezvoltatorii Smalltalk pentru Xerox). De-a lungul timpului
asemenea aplicaţii au crescut în mărime şi complexitate, designul MVC fiind din ce în ce mai
utilizat şi mai acceptat.
MVC vine de la Model-View–Controller şi este un design pattern soft arhitectural care
facilitează decuplarea modelului de date de view (interfaţa cu utilizatorul). Controllerul este o
componentă intermediară care facilitează comunicarea între ele. Orice framework funcţionează pe
principul MVC. Însă, în cazul framework-ului Web Dynpro separarea datelor de design se
concretizează prin intermediul obiectelor care generează date şi a obiectelor care consumă date,
întreaga structură fiind concepută prin componente. Componenta este unitatea fundamentala
programabila in WD4A.
Astfel :
Modelul este responsabil cu procesarea datelor şi returnarea rezultatelor la controller
View este responsabil doar cu interfaţa care este afişată la utilizator
Controller este responsabil cu evaluarea cererilor, trimiterea datelor şi instrucţiunilor la
model, trimiterea datelor la View, … în principiu responsabil cu interacţiunea dintre View şi
Model nefiind o simplă componentă de trecere care conectează Model de View – fig.7.1
(linia continuă reprezintă posibilitatea unui acces direct, linia întreruptă, posibilitatea
referenţierii).
MVC design pattern se comportă ca şi un ghid pentru implementarea părţii de prezentare,
control şi application logic.
Fig.7. 1
Un view este întotdeauna un consumator de date, pe când un controller poate sa fie atât un
consumator cât şi un generator de date. Un Model poate să fie totdeauna doar un generator de date.
Interfeţele utilizator pot fi dezvoltate în framework-ul WD4A prin utilizarea a două tehnici:
declarative (când structura interfeţei este cunoscută înainte de execuţie) şi dinamice (când structura
interfeţei este parţial cunoscută în timpul execuţiei).
În fig. 7.2 este prezentată arhitectura framework-ului Web Dynpro.
Fig. 7.2
Implementarea clientului poate fi definită pentru web browser (Server-Side Rendering) caz
în care are loc implementarea metadatelor şi generarea paginilor HTML cu funcţionalităţi
JavaScript integrate. Mai poate fi definită o implementare XML care este folosită în prezent pentru
scenarii eCATT (extended Computer Aided Test Tool) precum şi pentru integrarea clientului de tip
SP Smart Board – fig. 7.3 [5].
Web eCATT,
Browser SAP Smart Board
Fig. 7.3
Dintre avantajele pe care le oferă Web Dynpo în dezvoltarea aplicaţiilor web amintim [3]:
- posibilitatea utilizării uneltelor grafice
- stricta separare între prezentarea datelor şi procesarea lor
- posibilitatea utilizării şi reutilizării componentelor
- modificarea uşoară a aplicaţiei datorită uneltelor de care dispune
- posibilitatea de acces la datele din contextul aplicaţiei care rămân intacte chiar dacă
pagina se schimbă
- transportul automat al datelor prin data binding
- verificarea automată a intrărilor
- accesul la interfaţa utilizator
- integrarea în totalitate în mediul de dezvoltare ABAP.
Observaţie: Conceptele de bază Web Dynpro ABAP sunt la fel cu conceptele de bază din Web
Dynpro JAVA însă funcţionalităţile pe care le oferă depind de la caz la caz.
Pentru a distinge diferite părţi componente se foloseşte o convenţie de stil de scriere [5]
prezentată în tabelul 8.3.
În plus, framework-ul WD4A conţine şi o serie de cuvinte rezervate [5] prezentate în tabelul
8.4.
O componentă Web Dynpro este o entitatea programabilă, care se poate reutiliza, necesară
pentru o aplicaţie Web Dynpro executabilă.
Prezetăm în detaliu etapele principale ce trebuie parcurse în realizarea unei componente Web
Dynpro for ABAP, pentru a clarifica elementele de limbaj ce descriu părţile ei componente
(structura primară) şi relaţiile ce există între acestea. Componenta afişează un text la Client
(Browser).
9.1 Afisarea unui text în browser prin proprietatea text a elementului view TextView
Fig.9.2
Fig. 9.3
Fig.9.4
Fig. 9.5
Componenta rezultată în urma acestor etape este o versiune inactivă a componentei
<Y_WDA_text_0> afişată în Web Dynpro Explorer – fig. 9.5.
Utilitarul Web Dynpro Explorer este complet integrat în ABAP Workbench şi serveşte ca mediu de
dezvoltare pentru framework-ul WD4A. Utilitarul este disponibil prin tranzacţia SE80.
Se compilează şi se activează componenta 9.6.
Fig. 9.6
Fig. 9.7
Dacă privim fig. 10 descoperim următoarele elemente ale componentei care se genereaza:
Componentcontroller care furnizeaza servicii si date in componenta, Component Interface realizat
dintr-o parte vizuală- Interface Views şi o parte logică – Interface Controller ce raspunde de
comunicarea cu alte componente si Window care reprezinta containerul de view-uri si punctul de
legatura intre aplicatia Web Dynpro executabila si componenta. Fiecarui window ii corespunde in
mod unic un Interface view cu acelasi nume care face legatura cu alte componente si cu aplicatie
Web Dynpro executabila. Pentru interfata cu utilizatorul se poate creea si un View, care va contine
un controller vizibil local. Controller-ele sunt partile active ale componentei care pot furniza
servicii si date. Controller-ele unei componente pot fi- fig.9.8 [http://wiki.sdn.sap.com] View
Controller, controller-e globale care sunt vizibile in toata componenta (ComponentController,
Window Controller, Custom Controller care se creeaza la nevoie si poate furniza servicii si date
intre view-urile grupate) si Interface Controller pentru legatura cu alte componente.
Component Controller este un controller global care furnizeaza servicii si date in componenta.
Fig. 9.8
Fig. 9.9
Componentele WD4A- fig. 9.9 – [6] pot fi utilizate în alte componente WD4A (subiectul îl vom
trata pe larg în capitolul Componentizare), dar ele nu pot fi executate separat. Comunicarea între
elementele a două componente Web Dynpro sau între componentă şi utilizator se realizează prin
interfeţele componentei.
Crearea View-ului
View este utilizat pentru definirea interfeţei vizuale la utilizator– fig. 9.10 – [6].
Fig. 9.10
Pe lângă partea vizibilă (Layout) un view conţine un controller şi un context - fig.9.11 – [6].
Datele la care elementele view sunt legate trebuie stocate în contextul view. Controllerul view
poate conţine metode pentru afişarea datelor sau pentru prelucrarea datelor de intrare de la
utilizator. Fiecare view poate dispune de o conexiune de intrare şi ieşire (inbound şi outbound
plugs, părţi ale controllerului view) astfel că view-urile pot fi legate unele de altele prin legături
de navigare-fig.9.12 – [6] (navigation links). Controlul unei conexiuni de intrare (sau ieşire) se
face printr-o metodă Handler pe care framework-ul WD4A o generează automat.
Fig. 9.11
Fig. 9.12
se poate alege din lista de obiecte din stanga paginii Web Dynpro Explorer cu tasta dreapta
a mouse-ului Create -> View – fig. 9.13.
Fig. 9.13
ca la orice obiect nou creat în ABAP Workbench şi pentru un View apar interogările
pentru descriere –fig.9.14.
Fig. 9.14
dupa <ENTER> (buton verde) urmează o mască de autorizare SAP WAS ABAP –
fig.9.15.
Fig. 9.15
după salvare apare în ierarhia de obiecte a componentei un nod nou – fig.9.16 (Views),
sub care View-ul cu descrierea V_DEFAULT .
Fig.9.16
Se activează View.
Fig. 9.17
În Paginile View-Editor – fig. 9.16 găsim însuşiri şi putem seta proprietăţi pentru:
o Layout
o Inbound- si Outbound-Plugs,
o Context
o Attribute
o Actions
o Methods
Imaginea Layout a View-ului este concepută ca WYSIWYG-Editor (What You See Is What
You Get - ce descrie un sistem în care conţinutul afişat în timpul editării este foarte apropiat
cu rezultatul )
Fig. 9.18
Observaţie: care metodă trebuie întrebuinţată la crearea View-Layout, nu are nici o influenţă asupra
rezultatului final.
Elemente View
Fig. 9.21
Fig. 9.22
Majoritatea proprietăţilor elementului View TextView - TXV_SALUT ( sau oricum s-ar numi)
primesc din WD4A-Framework mărimi standard.
o Salvare (Ctrl + S) -> Verificare (Ctrl+ F2) -> Activare (Ctrl + F3)
Fig. 9.23
Incapsularea View-ului in Window
Un window este partea colectivă a elementului vizual. O componentă poate conţine mai multe
window-uri şi un window poate conţine mai multe view-uri conectate prin link-uri de navigare.
Unul din aceste view-uri este specificat ca un view de start şi este afişat prima dată când
window-ul este apelat. Un view poate fi afişat în browser numai dacă este integrat într-un
window. Astfel fiecare window are asociat în mod unic un interface view conectat cu o aplicaţie
Web Dynpro din care se poate apela window printr-un URL – fig.9.24- [6]. La execuţie un
window poate afişa doar un singur view la un moment dat. Pentru afişarea simultană a mai
multor view-uri, acestea trebuie grupate înt-un view main folosind elementul view
ViewContainerUIElement. Window-urile pot avea şi ele conexiuni de intrare ieşire (inboud şi
outbound plugs sau interface inboud şi outbound plugs) – fig. 9.25 – [6]. Un empty view este un
view generat automat de framework-ul WD4A într-un window care nu are un alt view inserat.
Fig.9.24
Fig. 9.25
Fig. 9.26
Fig.9.27
Fig. 9.28
Din fereastra care apare – fig. 9.29, în câmpul View to Be Embedded, prin input help se selectează
din lista care apare – fig. 9.30 view-ul care trebuie încapsulat.
Fig. 9.29
Fig. 9.30
Fig. 9.31
Rezultatul obţinându-se în fig. 9.32.
Fig. 9.32
Fig. 9.33
Fig. 9.34
Fig. 9.35
o Valoarea din câmpul Interface View indică Window-ul care va fi chemat la pornirea
aplicaţiei
o După ce aplicaţia WD este salvată – fig. 9.36 poate fi testată prin sau – fig. 9.37.
Fig. 9.36
Fig. 9.37
Fig. 9.38
o şi înscrierea iniţială – fig. 9.39:
Fig. 9.39
.
Fig. 9.41
Fig. 9.42