SAP RUNTIME ERROR DYN PROC - Guide
Get Example source ABAP code based on a different SAP table
GUIDELINE 6.47
Runtime Errors in Dynamic Processing
ABAP_BACKGROUND
When dynamic techniques are used, various exception situations can arise that can never occur when the corresponding static techniques are used because they can be checked statically.
ABAP_RULE
Respond appropriately to all possible error situations when using dynamic techniques.
ABAP_DETAILS
The different dynamic techniques also require different reactions to the possible exception situations. Examples:
These examples illustrate how the use of dynamic techniques can lead to more complex and less clear code due to the numerous possible exception situations. Of course, the more the mentioned techniques are combined, the more complex and less clear the code becomes. Therefore,
Note
If it is not possible to particular error situations, for example, because no exception that can be handled exists, it must be ensured that this error situation never occurs and this then verified in extensive test scenarios.
Bad example
The seemingly legible source code section uses almost only dynamic operands and tokens. Neither the
DELETE FROM (dbtab_name) WHERE (<(><<)>where_clause>).
IF sy-subrc = 0.
CALL METHOD (class_name)=>(method_name).
ENDIF.>
Good example
The following source code corrects the above example with an appropriate error handling this reduces the legibility, of course. Here, it is additionally considered that an initial dynamic
ASSIGN where_clauses[ ... ] TO <(><<)>where_clause>.
IF sy-subrc <(><<)>> 0.
RAISE EXCEPTION ...
ENDIF.
ASSERT <(><<)>where_clause> IS ASSIGNED.
IF <(><<)>where_clause> IS NOT INITIAL.
TRY.
DELETE FROM (dbtab_name) WHERE (<(><<)>where_clause>).
CATCH cx_sy_dynamic_osql_error.
...
ENDTRY.
IF sy-subrc = 0.
TRY.
CALL METHOD (class_name)=>(method_name).
CATCH cx_sy_dyn_call_error.
...
ENDTRY.
ENDIF.
ENDIF.>