Checklist for High-Performance WDA Programming 
Keep in mind the following points when programming Web Dynpro ABAP applications.
|
Design your application for good performance and pay attention to low memory consumption. |
|
First check your own coding for performance and memory bottlenecks before you create a message under component BC-WD-ABA. |
|
Run performance and memory tests. |
|
Read the Web Dynpro ABAP Documentation |
Only use Web Dynpro entities for UI programming.
|
Do not write your entire application source code in Web Dynpro components. For more information, see: Number, Size, and Genericness of Components |
|
Write your application source code in ABAP OO classes. For example, use the assistance class. |
|
Use Web Dynpro components only for managing the views and context.
Note that Web Dynpro components are not lightweights! End of the note. |
|
Do not create a Web Dynpro component for one single view only. |
|
In a Web Dynpro component, group together as many views that belong to one application part as possible. If, however, the ABAP workload is too large, split the component up. |
|
Delete all Web Dynpro component instances as soon as they are no longer needed. To do that, use IF_WD_COMPONENT_USAGE=>DELETE_COMPONENT. |
|
Use dynamic navigation or dynamic component usages only if it is absolutely necessary. |
|
Set the lifetime of a view to when visible, if the view is displayed only once in an application. |
|
As far as possible always set the lifetime to when visible.
Although memory consumption is reduced by the lifespan of when visible, when visible can affect performance since in this case the view has to be initialized every time it is displayed. See also Creating and Deleting Components and Views. End of the note. |
UI data is stored and managed in the Web Dynpro context.
|
Do not put all your data into the context. Do not create a mega context for all data belonging to one application. |
|
Put only the data required for the UI element binding into the context. |
|
Use the assistance class or other ABAP OO classes for the data exchange. |
|
If required create local contexts, for example, in views |
|
Do not create deep-nested contexts. |
|
Use singleton nodes if nestings (master detail) are necessary |
|
Do not use dynamic attributes (IF_WD_CONTEXT_NODE_INFO->ADD_ATTRIBUTE) |
|
Use data with context structure for BIND_TABLE |
|
Update the context only if the data actually has to be updated |
|
Do not create long context mapping chains |
More Information: Context
The size of your application screen has enormous effects on performance.
|
Do not use container scrolling (scrollingMode<>none) |
|
Do not use the scrolling function of the browser window.
Note the following exception: If the application screen is to be used for display only and not for user input, as an exception you can use browser scrolling to avoid unnecessary server roundtrips. End of the note. |
|
Create application screen that fit into a typical browser window |
|
Use the scrolling features of Table, MultiPane, and RowRepeater |
|
Avoid deep nestings of Containers, Groups, and TabStrips.
Server and client performance is strongly affected by nestings It may also occur that deeply nested contents are not shown on the front end as a result of browser restrictions which cannot be influenced by the Web Dynpro ABAP framework. End of the note. |
|
Do not insert any TransparentContainer UI elements into Container UI elements, for example, Groups. |
|
To minimize nesting depths, if possible, swap the RootUIElementContainer UI element (TransparentContainer) with other Container UI elements, such as Table, TabStrip, and Group. See also Root Elements of Views. |
|
It is best to arrange logically nested contents into rows |
|
As far as possbile, do not use the UI element tree |
|
To display tree structures use a Table with either TreeByKeyTableColumn or TreeByNestingTableColumn. |
|
Do not use dynamic UI element programming and/or multiple components for repeating layouts |
|
Use RowRepeater or MultiPane for repeating layouts. |
|
Modify your UI elements only if they really have to be changed |
|
If possible, use delta rendering |
|
Note that there are special Performance Aspects when using the InteractiveForm UI element. |
More Information: User Interface