Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

How to improve this existing code...

aris_hidalgo
Contributor
0 Likes
856

Hello Experts,

I am currently modifying an existing report and I would like to get some

inputs on how to improve the following code below. What it does is to put values

on a range. My question is, how can I improve the code below? its too manual and

I think it can be improved. the conditions p_donat, etc. si based from checkboxes

on the selection screen. Thank you guys and take care!

IF p_donat EQ 'X'.

lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.

lr_auart-low = 'ZUDO'.

APPEND lr_auart.

lr_auart-low = 'ZURD'.

APPEND lr_auart.

lr_auart-low = 'ZUCI'.

APPEND lr_auart.

lr_auart-low = 'ZURV'.

APPEND lr_auart.

ENDIF.

IF p_prods EQ 'X'.

lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.

lr_auart-low = 'ZUPR'.

APPEND lr_auart.

lr_auart-low = 'ZURR'.

APPEND lr_auart.

ENDIF.

IF p_freeg EQ 'X'.

lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.

lr_auart-low = 'ZUCF'.

APPEND lr_auart.

lr_auart-low = 'ZUCM'.

APPEND lr_auart.

lr_auart-low = 'ZUCQ'.

APPEND lr_auart.

lr_auart-low = 'ZUDM'.

APPEND lr_auart.

lr_auart-low = 'ZUEX'.

APPEND lr_auart.

lr_auart-low = 'ZUFU'.

APPEND lr_auart.

lr_auart-low = 'ZUIN'.

APPEND lr_auart.

lr_auart-low = 'ZUIS'.

APPEND lr_auart.

lr_auart-low = 'ZULO'.

APPEND lr_auart.

lr_auart-low = 'ZUOR'.

APPEND lr_auart.

lr_auart-low = 'ZUQT'.

APPEND lr_auart.

lr_auart-low = 'ZURC'.

APPEND lr_auart.

lr_auart-low = 'ZURE'.

APPEND lr_auart.

lr_auart-low = 'ZURG'.

APPEND lr_auart.

lr_auart-low = 'ZURL'.

APPEND lr_auart.

lr_auart-low = 'ZURO'.

APPEND lr_auart.

lr_auart-low = 'ZURU'.

APPEND lr_auart.

lr_auart-low = 'ZUVF'.

APPEND lr_auart.

lr_auart-low = 'ZUVG'.

APPEND lr_auart.

lr_auart-low = 'ZUVI'.

APPEND lr_auart.

lr_auart-low = 'ZUVP'.

APPEND lr_auart.

lr_auart-low = 'ZUVR'.

APPEND lr_auart.

lr_auart-low = 'ZVCF'.

APPEND lr_auart.

lr_auart-low = 'ZVCM'.

APPEND lr_auart.

lr_auart-low = 'ZVCQ'.

APPEND lr_auart.

lr_auart-low = 'ZVDM'.

APPEND lr_auart.

lr_auart-low = 'ZVRE'.

APPEND lr_auart.

lr_auart-low = 'ZVSO'.

APPEND lr_auart.

ENDIF.

IF lr_auart[] IS INITIAL.

lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.

lr_auart-low = 'XXXX'.

APPEND lr_auart.

ENDIF.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
742

Hi..

these both are common for all append statements:

<b>lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.</b>

so..remove them from remaining append stmts: ur code will be..

<b>lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.</b>

I<b>F p_donat EQ 'X'.

lr_auart-low = 'ZUDO'.

APPEND lr_auart.

lr_auart-low = 'ZURD'.

APPEND lr_auart.

lr_auart-low = 'ZUCI'.

APPEND lr_auart.

lr_auart-low = 'ZURV'.

APPEND lr_auart.

ENDIF.

IF p_prods EQ 'X'.

lr_auart-low = 'ZUPR'.

APPEND lr_auart.

lr_auart-low = 'ZURR'.

APPEND lr_auart.

ENDIF.

IF p_freeg EQ 'X'.

lr_auart-low = 'ZUCF'.

APPEND lr_auart.

lr_auart-low = 'ZUCM'.

APPEND lr_auart.

lr_auart-low = 'ZUCQ'.

APPEND lr_auart.

lr_auart-low = 'ZUDM'.

APPEND lr_auart.

lr_auart-low = 'ZUEX'.

APPEND lr_auart.

lr_auart-low = 'ZUFU'.

APPEND lr_auart.

lr_auart-low = 'ZUIN'.

APPEND lr_auart.

lr_auart-low = 'ZUIS'.

APPEND lr_auart.

lr_auart-low = 'ZULO'.

APPEND lr_auart.

lr_auart-low = 'ZUOR'.

APPEND lr_auart.

lr_auart-low = 'ZUQT'.

APPEND lr_auart.

lr_auart-low = 'ZURC'.

APPEND lr_auart.

lr_auart-low = 'ZURE'.

APPEND lr_auart.

lr_auart-low = 'ZURG'.

APPEND lr_auart.

lr_auart-low = 'ZURL'.

APPEND lr_auart.

lr_auart-low = 'ZURO'.

APPEND lr_auart.

lr_auart-low = 'ZURU'.

APPEND lr_auart.

lr_auart-low = 'ZUVF'.

APPEND lr_auart.

lr_auart-low = 'ZUVG'.

APPEND lr_auart.

lr_auart-low = 'ZUVI'.

APPEND lr_auart.

lr_auart-low = 'ZUVP'.

APPEND lr_auart.

lr_auart-low = 'ZUVR'.

APPEND lr_auart.

lr_auart-low = 'ZVCF'.

APPEND lr_auart.

lr_auart-low = 'ZVCM'.

APPEND lr_auart.

lr_auart-low = 'ZVCQ'.

APPEND lr_auart.

lr_auart-low = 'ZVDM'.

APPEND lr_auart.

lr_auart-low = 'ZVRE'.

APPEND lr_auart.

lr_auart-low = 'ZVSO'.

APPEND lr_auart.

ENDIF.

IF lr_auart[] IS INITIAL.

lr_auart-low = 'XXXX'.

APPEND lr_auart.

ENDIF.</b>

Hi..

these both are common for all append statements:

<b>lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.</b>

so..remove them from remaining append stmts: ur code will be..

<b>lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.</b>

I<b>F p_donat EQ 'X'.

lr_auart-low = 'ZUDO'.

APPEND lr_auart.

lr_auart-low = 'ZURD'.

APPEND lr_auart.

lr_auart-low = 'ZUCI'.

APPEND lr_auart.

lr_auart-low = 'ZURV'.

APPEND lr_auart.

ENDIF.

IF p_prods EQ 'X'.

lr_auart-low = 'ZUPR'.

APPEND lr_auart.

lr_auart-low = 'ZURR'.

APPEND lr_auart.

ENDIF.

IF p_freeg EQ 'X'.

lr_auart-low = 'ZUCF'.

APPEND lr_auart.

lr_auart-low = 'ZUCM'.

APPEND lr_auart.

lr_auart-low = 'ZUCQ'.

APPEND lr_auart.

lr_auart-low = 'ZUDM'.

APPEND lr_auart.

lr_auart-low = 'ZUEX'.

APPEND lr_auart.

lr_auart-low = 'ZUFU'.

APPEND lr_auart.

lr_auart-low = 'ZUIN'.

APPEND lr_auart.

lr_auart-low = 'ZUIS'.

APPEND lr_auart.

lr_auart-low = 'ZULO'.

APPEND lr_auart.

lr_auart-low = 'ZUOR'.

APPEND lr_auart.

lr_auart-low = 'ZUQT'.

APPEND lr_auart.

lr_auart-low = 'ZURC'.

APPEND lr_auart.

lr_auart-low = 'ZURE'.

APPEND lr_auart.

lr_auart-low = 'ZURG'.

APPEND lr_auart.

lr_auart-low = 'ZURL'.

APPEND lr_auart.

lr_auart-low = 'ZURO'.

APPEND lr_auart.

lr_auart-low = 'ZURU'.

APPEND lr_auart.

lr_auart-low = 'ZUVF'.

APPEND lr_auart.

lr_auart-low = 'ZUVG'.

APPEND lr_auart.

lr_auart-low = 'ZUVI'.

APPEND lr_auart.

lr_auart-low = 'ZUVP'.

APPEND lr_auart.

lr_auart-low = 'ZUVR'.

APPEND lr_auart.

lr_auart-low = 'ZVCF'.

APPEND lr_auart.

lr_auart-low = 'ZVCM'.

APPEND lr_auart.

lr_auart-low = 'ZVCQ'.

APPEND lr_auart.

lr_auart-low = 'ZVDM'.

APPEND lr_auart.

lr_auart-low = 'ZVRE'.

APPEND lr_auart.

lr_auart-low = 'ZVSO'.

APPEND lr_auart.

ENDIF.

IF lr_auart[] IS INITIAL.

lr_auart-low = 'XXXX'.

APPEND lr_auart.

ENDIF.</b>

3 REPLIES 3
Read only

Former Member
0 Likes
743

Hi..

these both are common for all append statements:

<b>lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.</b>

so..remove them from remaining append stmts: ur code will be..

<b>lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.</b>

I<b>F p_donat EQ 'X'.

lr_auart-low = 'ZUDO'.

APPEND lr_auart.

lr_auart-low = 'ZURD'.

APPEND lr_auart.

lr_auart-low = 'ZUCI'.

APPEND lr_auart.

lr_auart-low = 'ZURV'.

APPEND lr_auart.

ENDIF.

IF p_prods EQ 'X'.

lr_auart-low = 'ZUPR'.

APPEND lr_auart.

lr_auart-low = 'ZURR'.

APPEND lr_auart.

ENDIF.

IF p_freeg EQ 'X'.

lr_auart-low = 'ZUCF'.

APPEND lr_auart.

lr_auart-low = 'ZUCM'.

APPEND lr_auart.

lr_auart-low = 'ZUCQ'.

APPEND lr_auart.

lr_auart-low = 'ZUDM'.

APPEND lr_auart.

lr_auart-low = 'ZUEX'.

APPEND lr_auart.

lr_auart-low = 'ZUFU'.

APPEND lr_auart.

lr_auart-low = 'ZUIN'.

APPEND lr_auart.

lr_auart-low = 'ZUIS'.

APPEND lr_auart.

lr_auart-low = 'ZULO'.

APPEND lr_auart.

lr_auart-low = 'ZUOR'.

APPEND lr_auart.

lr_auart-low = 'ZUQT'.

APPEND lr_auart.

lr_auart-low = 'ZURC'.

APPEND lr_auart.

lr_auart-low = 'ZURE'.

APPEND lr_auart.

lr_auart-low = 'ZURG'.

APPEND lr_auart.

lr_auart-low = 'ZURL'.

APPEND lr_auart.

lr_auart-low = 'ZURO'.

APPEND lr_auart.

lr_auart-low = 'ZURU'.

APPEND lr_auart.

lr_auart-low = 'ZUVF'.

APPEND lr_auart.

lr_auart-low = 'ZUVG'.

APPEND lr_auart.

lr_auart-low = 'ZUVI'.

APPEND lr_auart.

lr_auart-low = 'ZUVP'.

APPEND lr_auart.

lr_auart-low = 'ZUVR'.

APPEND lr_auart.

lr_auart-low = 'ZVCF'.

APPEND lr_auart.

lr_auart-low = 'ZVCM'.

APPEND lr_auart.

lr_auart-low = 'ZVCQ'.

APPEND lr_auart.

lr_auart-low = 'ZVDM'.

APPEND lr_auart.

lr_auart-low = 'ZVRE'.

APPEND lr_auart.

lr_auart-low = 'ZVSO'.

APPEND lr_auart.

ENDIF.

IF lr_auart[] IS INITIAL.

lr_auart-low = 'XXXX'.

APPEND lr_auart.

ENDIF.</b>

Read only

Former Member
0 Likes
742

Hi

Maybe you try this way for more readability though performance wise it will not make much difference.

lr_auart-sign = 'I'.
lr_auart-option = 'EQ'.

IF p_donat EQ 'X'.
   perform append using: 'ZUDO', 'ZURD', 'ZUCI', ZURV'.
ENDIF.

IF p_prods EQ 'X'.
   perform append using: 'ZUPR', 'ZURR'.
ENDIF.

IF p_freeg EQ 'X'.
   perform append using: 'ZUCF', 'ZUCM', 'ZUCQ', 'ZUDM', 'ZUEX',
                         'ZUFU', 'ZUIN', 'ZUIS', 'ZULO', 'ZUOR',
                         'ZUQT', 'ZURC', 'ZURE', 'ZURG', 'ZURL', 
                         'ZURO', 'ZURU', 'ZUVF', 'ZUVG', 'ZUVI',
                         'ZUVP', 'ZUVR', 'ZVCF', 'ZVCM', 'ZVCQ',
                         'ZVDM', 'ZVRE', 'ZVSO'.
           
ENID.

IF lr_auart[] IS INITIAL.
   perform append using 'XXXX'.
ENDIF.

form append using p_auart.

  lr_auart-low = p_auart.
  append lr_auart.

endform.

Regards

Eswar

Read only

Former Member
0 Likes
742

Use an ABAP macro. It will greatly shorten the length of your code, and will help keep you sane.

DEFINE append_auart.

lr_auart-sign = 'I'.

lr_auart-option = 'EQ'.

lr_auart-low = &1.

APPEND lr_auart.

END-OF-DEFINITION.

IF p_donat EQ 'X'.

append_auart 'ZUDO'.

append_auart 'ZURD'.

append_auart 'ZUCI'.

append_auart 'ZURV'.

ENDIF.

IF p_prods EQ 'X'.

append_auart 'ZUPR'.

append_auart 'ZURR'.

ENDIF.

IF p_freeg EQ 'X'.

append_auart 'ZUCF'.

append_auart 'ZUCM'.

append_auart 'ZUCQ'.

append_auart 'ZUDM'.

append_auart 'ZUEX'.

append_auart 'ZUFU'.

append_auart 'ZUIN'.

append_auart 'ZUIS'.

append_auart 'ZULO'.

append_auart 'ZUOR'.

append_auart 'ZUQT'.

append_auart 'ZURC'.

append_auart 'ZURE'.

append_auart 'ZURG'.

append_auart 'ZURL'.

append_auart 'ZURO'.

append_auart 'ZURU'.

append_auart 'ZUVF'.

append_auart 'ZUVG'.

append_auart 'ZUVI'.

append_auart 'ZUVP'.

append_auart 'ZUVR'.

append_auart 'ZVCF'.

append_auart 'ZVCM'.

append_auart 'ZVCQ'.

append_auart 'ZVDM'.

append_auart 'ZVRE'.

append_auart 'ZVSO'.

ENDIF.

IF lr_auart[] IS INITIAL.

append_auart 'XXXX'.

ENDIF.