Designing user friendly ABAP Programs
Typically, SAP ABAP based programs/applications are not known for a lot of user friendliness. However we can apply a set of design techniques to the programs which combined together can make programs much more user friendly, easy to maintain and support. Easy to use programs are better adopted by users, lead to savings in time and effort throughout the life cycle of the program.
In this post I have summarized a list of techniques which can serve as a checklist when designing/reviewing a program. Some of these techniques are well known however some of these get overlooked during the design and build process.
These techniques can reduce the cost of design phase since the programs become easier to develop and test, result in less defects, less rework and quicker user testing. This results in faster time to market. Moreover these techniques result into more predictable program designs and can lower support cost and good SLA adherence.
Figure 1: Program Life-cycle and benefits of user friendly design
When designing a program, the first step is to identify the audience or the users of your program. This will help you determine the environment in which users will use the program and how they will interact with your program. This will help you design the program, the user interface with end user in mind. Understanding the user’s perspective will help you make appropriate design decisions which will lead to development of a good quality program.
Typically, there are 3 types of users for a program –
- Business users/end users who will use the program to perform various business functions
- Technical consultants or developers who will maintain the program in future and
- Support team who will be dealing with supporting or using the programs (or the product/application) depending on purpose of the program
Figure 2: Types of users
Next step is to apply various applicable techniques to your programs.
A. Easy to use
The program should be easy to use for end user. It should have below listed features/attributes.
- Simple interface
- The program must have a simple user interface with clearly organized screen elements.
- Any field name or label on the screen should be easy to understand and self-explanatory.
- The program design should adhere to design standards.
- The interface should have a user interface design consistent with other programs in the organization.
- The user interface should be easy to navigate.
- When possible provide keyboard shortcuts to various commands.
- If the program performs multiple operations then provide a Menu with clearly organized functions and sub-functions.
- Use contextual menus to provide relevant shortcuts together.
- Good error handling
- The program should have robust data validation so that errors are minimized.
- Always show meaningful error messages which are easy to understand and help in determine next steps to be taken.
- Create a log file in case there is lot of information to be provided along with the error.
- Programs should be written with effective error handing so that there are no short dumps.
- Easy to execute
- Make sure that documentation related to the program is accessible from program main screen either using the help documentation feature or by giving appropriate links to where documentation can be found.
- Use meaningful field names on the user interface screen.
- Try to provide default values on input fields where possible.
- Use selection screen variants to help users choose various scenarios easily.
- Use layout variants to help users choose desired output layout quickly.
- Show progress indicator when program is executing to give a visual idea of how much processing is pending.
- If the program involves uploading a file for processing then the documentation should contain the file layout and a sample file so that any user of program can figure out the file format to be used. Also in such case mention the file extensions allowed by the program such as .CSV, .TXT, .XLS etc.
- Easy to use result
- Provide ability to choose the data export format such as CSV, spreadsheets etc. from selection screen. This makes gathering results in a usable format much faster.
- Provide ability to print data.
- Provide ability to receive output data as an email attachment.
- File uploading
- If program deals with uploading a file for processing then give options to read a file from desktop (presentation server) or a network directory (application server).
- Ability to run in background
- Provide ability to run the program in background in case there is large amount of data to be processed.
- Provide enough informational messages which will get captured in the job log.
- Provide ability to receive an email notification when the background job is finished.
B. Easy to maintain
The program should be easy to update or maintain for another developer. It should have below listed features/attributes including the basic hygiene factors such as adherence to development standards and best practices.
- Adhere to development standards so that code is easy to maintain in future.
- Make sure that there are no code inspector errors. In case there are certain errors which cannot be resolved, add comments in the code why such error cannot be resolved.
- Use meaningful variable names.
- Make sure that the code and the technical specification is well documented.
- Well format the code using Pretty Printer.
- Arrange the subroutines in a meaningful sequence and also giving a sequence number in the subroutine name.
- Modularize the code as much possible to promote reuse and maintainability.
C. Easy to support
The program should be easy to support for the technical/functional support team. It should have below listed features/attributes.
- Program should be easy to troubleshoot for the support team.
- Program should generate sufficient logs which support team can use for troubleshooting.
- Provide detailed technical information about an error or undesirable situation.
- Make sure that it is easy to pin point type of issue – data, user input, dependency, system.
This is my first post about making programs more usable. In the next posts I will try to cover some of above points in more detail and with some examples or some sample code. However please do share comments about any other points about usability you think should be considered when designing the programs.
Below are some good reads related to this topic:
Thank you for reading.