2007 Apr 10 3:52 AM
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.
2007 Apr 10 4:13 AM
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>
2007 Apr 10 4:13 AM
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>
2007 Apr 10 4:35 AM
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
2007 Apr 10 5:38 AM
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.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |