Enhancements in Web Dynpro for ABAP
Nieuwe ontwikkelingen van SAP zijn steeds meer web gerelateerd waarbij Web Dynpro for ABAP een grote rol speelt. Schermen in SRM bijvoorbeeld zijn sinds versie 7.0 volledig in Web Dynpro for ABAP (WDA) gebouwd.
Het aanpassen van standaard WDA schermen gebeurt volgens de nieuwe enhancement techniek van SAP. De mogelijkheden om standaard schermen aan te passen zonder modificaties zijn hiermee fors toegenomen. Hieronder is een standaard SAP WDA scherm via de enhancement techniek uitgebreid met een nieuw formulierveld.
Een WDA scherm bestaat onder andere uit de volgende onderdelen:
- de layout waarin alle elementen van een scherm gedefinieerd worden;
- de context waarin nodes en attributen gedefinieerd kunnen worden;
- methodes voor onder andere het ophalen en wegschrijven van gegevens.
Om aanpassingen aan deze onderdelen te kunnen maken moet eerst een enhancement gekozen of gecreëerd worden via de button ‘Enchance’ (
). Nu de enhancement actief is kunnen bestaande elementen in een scherm verwijderd worden en nieuwe worden toegevoegd, de context kan uitgebreid worden met nieuwe nodes en attributen en alle methodes kunnen worden uitgebreid met een ‘Pre-exit’, ‘Post-exit’ of 'Overwrite-exit'. De Pre-exit wordt uitgevoerd voordat de methode wordt aangeroepen, de Post-exit wordt uitgevoerd nadat de methode is aangeroepen en de Overwrite-exit overschrijft de standaard methode volledig.
Onderstaande schermprinten tonen een standaard WDA applicatie voor en nadat deze via de enhancement techniek is aangepast. Het tekstveld in de schermprint links is verwijderd en vervangen door een dropdown veld.

Hoe is dit gerealiseerd? Allereerst is het bestaande veld verwijderd en is een nieuw veld toegevoegd aan de view.
Verwijderen van een bestaand element uit een view werkt alsvolgt (let op, dit is alleen mogelijk als de enhancement actief is!):
-
open de view in de ABAP Workbench
-
open het contextemenu van het te verwijderen element door hier met de rechtermuisknop op te klikken
-
selecteer 'Remove Element' uit het context menu.

Het element wordt niet werkelijk verwijderd maar in de properties is zichtbaar dat het element niet meer actief is.
Het toevoegen van een nieuw element via een enhancement werkt op dezelfde wijze waarop een element normaal toegevoegd wordt: open het context menu van de Container en selecteer 'Insert Element' uit het menu.
Vervolgens moet een nieuwe node en attribuut gedefinieerd worden in de context van de view. De node zal de toegestane waardes voor de dropdown key bevatten. Het attribuut is gekoppeld aan het dropdownveld in de view. Als de enhancement actief is, kan de context uitgebreid worden met eigen nodes en attributen op identieke wijze waarop dit normaal gebeurd.

Ten slotte moeten de waardes van de node gedefinieerd worden in een ‘Post-Exit’ van de WDDOINIT methode van de view en is de methode voor het verwerken van de gegevens in het selectiescherm uitgebreid met een ‘Pre-Exit’ zodat gebruik gemaakt wordt van de waarde in het nieuwe veld.

Dit is, in een notendop, alles wat gedaan moet worden om een standaardscherm aan te passen of uit te breiden. Eenvoudiger kan bijna niet en de mogelijkheden zijn legio. Uiteraard moet nog altijd goed worden overwogen wat de gevolgen van een enhancement kunnen zijn. Verwijderen van een verplicht formulierveld bijvoorbeeld is niet zonder risico’s als de waarde van het veld verder in het proces vereist is.



