Show TOC

Background documentationChecklist for High-Performance WDA Programming Locate this document in the navigation structure

 

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.

Note Note

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.

Note Note

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.
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.

Note Note

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.

Note Note

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