Web Dynpro

From HandWiki
Jump to: navigation, search

Web Dynpro (WD) is a proprietary web application technology developed by SAP SE that focuses on the development of server-side business applications. One of its main design features is that the user interface is defined in an entirely declarative manner. Web Dynpro applications can be developed using either a Java (Web Dynpro for Java, WDJ or WD4J) or ABAP (Web Dynpro ABAP,[1] WDA or WD4A) flavor.


The earliest version of Web Dynpro appeared in 2003 and was based on Java. This variant was released approximately 18 months before the ABAP variant.

The Java variant of Web Dynpro experienced limited commercial success, and as of 2010, has been placed in maintenance. This means that the existing product is supported to the extent that any bugs are fixed; however, no new functionality will be added. SAP's development effort is now focused on the ABAP variant of Web Dynpro.

WD follows a design architecture based on an interpretation of the MVC design pattern and uses a model driven development approach ("minimize coding, maximize design").

The Web Dynpro Framework is a server-side runtime environment into which many dedicated "hook methods" are available. The developer then places their own custom coding within these hook methods in order to implement the desired business functionality. These hook methods belong to one of the broad categories of either "life-cycle" and "round-trip"; that is, those methods that are concerned with the life-cycle of a software component (i.e. processing that takes place at start up and shut down etc.), and those methods that are concerned with processing the fixed sequence of events that take place during a client-initiated round trip to the server.

Web Dynpro is aimed at the development of business applications that follow standardized UI principles, applications that connect to backend systems and which are scalable.

Main disadvantages

  • renders improperly (or not at all) in any browser but Internet Explorer, not even in newer versions without using the compatibility view.[2]
  • proprietary codebase, only operates on SAP servers
  • some bundled UI elements are reproductions of standard HTML elements (e.g. drop-down menus) and do not gracefully degrade
  • HTML generated by WD is neither semantic nor readily readable: many UI layout elements are combinations of deeply nested tables, divs, and spans. For example, rather than utilizing a fieldset (two elements including legend) for the Group UI element, WD recreates it with two spans surrounding a two row table with further spans, a div, and a wbr for a total of 13 elements.
  • less flexible due to requirement that interface be made up of WD UI elements (i.e. custom HTML is not possible). To reduce the limitations, several measures have been taken. For example, WD supports so-called "islands" for e.g. flash applications that enrich the Web Dynpro UI element collection by rich UI elements. This disadvantage doesn't seem so serious but in fact basic features that a user would expect cannot be implemented, e.g. colored rows in a table, colors in general, advanced alignment of simple UI elements (due to nonexistence of more complicated ones), selecting multiple rows in tree-like tables (this is due to preserving basic concept of WD) and many more. Utilizing such an island requires the developer to forgo WD UI elements within.
  • rendering speed in browser for larger tables. (>1000 rows).
  • Very bad performance and slow speed, maximum time the browser time out before further processing.

Main advantages

  • typed access for design time checks, e.g. navigation links and messages are accessed via types instead of string keys like in JSF
  • diverse services for backend access, like aRFC, JEE and Web Service data models
  • integration with SAP Interactive Forms by Adobe, which are interactive PDF forms, during design (same IDE) and run time (data sharing)
  • integration with business process management and business rules management (since NetWeaver CE 7.1 EHP 1)
  • designed to support development of large-scale applications by adding multiple grouping layers on top of Java packages (DCs, SCs, products)
  • runs on different clients e.g. web browser, mobile device, widget engine
  • comes with a big collection of UI elements providing a wealth of functionality and only have to be configured but not programmed


External links