You are on page 1of 6

Handling Hardcoded values in ABAP Objects

Custom Table - ZCA_ORG_ELEMENT and Fields details (Tcode - ZCAPGORG )

Organization elements maintained at Domain level ( Fixed Values)

Class Name: ZCACL_PG_ORG


Scenario – 1 IF condition with one Org element value – Hardcoded

Exiting Logic

New Logic

DATA : gv_run_bukrs TYPE char15.


CLEAR : gv_run_bukrs.
gv_run_bukrs = i_rbkpv-bukrs.
IF i_rbkpv-bukrs EQ 'IN01' OR
zcacl_pg_org=>select_single( org_ele = 'BUKRS'
old_value = 'IN01' new_value = gv_run_bukrs ) EQ
abap_true.
Scenario - 2 IF condition with more than one Org element value - Hardcoded

Existing Logic

New Logic

DATA :lt_r_old TYPE zca_org_range.


DATA :lt_r_new TYPE zca_org_range.
CLEAR :lt_r_old,lt_r_new.
lt_r_old = VALUE #( sign = 'I' option = 'EQ'
( low = 'TH01' )
( low = 'PH01' ) ).
lt_r_new = VALUE #( sign = 'I' option = 'EQ'
( low = gt_postab-vkorg ) ).
IF gt_postab-vkorg = 'TH01' OR gt_postab-vkorg =
'PH01' OR zcacl_pg_org=>select_multi( org_ele = 'VKORG'
old_value = lt_r_old new_value = lt_r_new ) EQ
abap_true.
Scenario - 3 Select statement with one Org element value – Hardcoded

Existing Logic

New Logic

DATA :r_range TYPE zca_org_range.


CLEAR:r_range.
zcacl_pg_org=>select_single( EXPORTING org_ele =
'WERKS' option = 'EQ' old_value = 'IN01' IMPORTING
er_range = r_range ).
IF r_range[] IS INITIAL.
select single usrid from t526 into lv_so_sap_nam
where sachx = lv_pa0001-sachp and werks = 'IN01'.
ELSE.
select single usrid from t526 into lv_so_sap_nam
where sachx = lv_pa0001-sachp and werks IN r_range.
ENDIF.
Scenario - 4 Select statement with more than one Org element value – Hardcoded

Existing Logic

New Logic

DATA :lt_r_old TYPE zca_org_range.


DATA :lt_r_range TYPE zca_org_range.
CLEAR :lt_r_old,lt_r_range.
lt_r_old = VALUE #( sign = 'I' option = 'EQ'
( low = 'IN01' ) ( low = 'IN02' ) ( low = 'IN03' ) (
low = 'IN04' ) ( low = 'IN05' ) ( low = 'IN06' )
( low = 'IN07' ) ).
zcacl_pg_org=>select_multi( EXPORTING org_ele = 'BUKRS'
old_value = lt_r_old IMPORTING er_range = lt_r_range ).
IF lt_r_range IS NOT INITIAL.
SELECT bukrs butxt land1 FROM t001 INTO TABLE
lt_help_bdg WHERE ( bukrs EQ 'IN01' OR bukrs EQ
'IN02' OR bukrs EQ 'IN03'

OR bukrs EQ 'IN04' OR bukrs EQ 'IN05' OR bukrs EQ


'IN06' OR bukrs EQ 'IN07' ) .
ELSE.
SELECT bukrs butxt land1 FROM t001 INTO TABLE
lt_help_bdg WHERE bukrs IN lt_r_range.
ENDIF.

You might also like