Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
jrgkraus
Active Contributor
In JAVA, we have FINAL for making sure, a variable is assigned only once. This blog is about how to emulate this concept with ABAP

After reading, have a look at part two of this blog!

Motivation


Often, when I decide to extract a complex method into a new class, I struggle with the fact, that importing parameters should not change in the class.

Usually, I turn all the parameters into class attributes which makes the importing parameters changeable. My motivation was to avoid being able to change these attributes once they are set.

Approach


I use a little local class to keep all the immutable variables:
class read_only definition final.
public section.
data vbdkr type vbdkr read-only.
data vbdpr type vbdpr read-only.
data nast type nast read-only.

methods constructor
importing
i_vbdkr type vbdkr
i_vbdpr type vbdpr
i_nast type nast.
endclass.

CLASS read_only IMPLEMENTATION.

METHOD constructor.
vbdkr = i_vbdkr.
vbdpr = i_vbdpr.
nast = i_nast.
ENDMETHOD.

ENDCLASS.

Since the public attributes are read-only, they can be only accessed with read.

In the entry method, I instantiate the class passing my importing variables:
    read_only = new #(  i_vbdkr = i_vbdkr
i_vbdpr = i_vbdpr
i_nast = i_nast ).

In the coding, I access the variables using the direct reference
      ls_ftechdat-vbeln = read_only->vbdkr-vbeln.
ls_ftechdat-posnr = read_only->vbdpr-posnr.
ls_ftechdat-vgbel = read_only->vbdpr-vgbel.

Result: as soon as I try to change the values in the read_only class, I will get a syntax error.
5 Comments
Labels in this area