Checklist for High-Performance WDA Programming

Use

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.

Dos and Dont's: Web Dynpro Components

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.

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.

Dos and Dont's: Web Dynpro Context

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

Dos and Dont's: Web Dynpro UI Elements

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.

Create application screen that fit into a typical browser window

Use the scrolling features of Table, MultiPane, and RowRepeater

Avoid deep nestings of Containers, Group s, and TabStrip s.

Do not insert any TransparentContainer UI elements into Container UI elements, for example, Group s.

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