cancel
Showing results for 
Search instead for 
Did you mean: 

which code would fit well in End Routine?

Former Member
0 Kudos

Hi All,

I found two way of writing end routine in BW. Out of these which one from below would be the right way to code it and what would be reason behind that.

Please help me out to understand more working of 4th generation language.

1) with append statement

LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS> .

LOOP AT ITAB2 INTO WA WHERE /BIC/ZORDNUM = <RESULT_FIELDS>-/BIC/ZORDNUM.

<RESULT_FIELDS>-/BIC/ZITEMNUM = WA-/BIC/ZITEMNUM.

<RESULT_FIELDS>-MATERIAL = WA-MATERIAL.

<RESULT_FIELDS>-/BIC/ZITMTYP = WA-/BIC/ZITMTYP.

<RESULT_FIELDS>-QUANT_B = WA-QUANT_B.

<RESULT_FIELDS>-BASE_UOM = WA-BASE_UOM.

APPEND  <RESULT_FIELDS> TO ITAB_TARGET.

ENDLOOP.

ENDLOOP

2) with modify statement


LOOP AT RESULT_PACKAGE ASSIGNING WA_RESULT_PACKAGE.

LOOP AT ITAB2 INTO WA WHERE /BIC/ZORDNUM = RESULT_PACKAGE-/BIC/ZORDNUM.

WA_RESULT_PACKAGE-/BIC/ZITEMNUM = WA-/BIC/ZITEMNUM.

WA_RESULT_PACKAGE-MATERIAL = WA-MATERIAL.

WA_RESULT_PACKAGE-/BIC/ZITMTYP = WA-/BIC/ZITMTYP.

WA_RESULT_PACKAGE-QUANT_B = WA-QUANT_B.

WA_RESULT_PACKAGE-BASE_UOM = WA-BASE_UOM.

modify RESULT_PACKAGE from WA_RESULT_PACKAGE.

ENDLOOP.

ENDLOOP

Thanks

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

The code which you mentioned is correct.

when we write a code in start routine or end routine it is better to use field instead.

LOOP AT RESULT_PACKAGE ASSIGNING WA_RESULT_PACKAGE.

READ TABLE ITAB2 INTO WA WITH KEY /BIC/ZORDNUM =RESULT_PACKAGE-/BIC/ZORDNUM.

IF SY-SUBRC = 0.

WA_RESULT_PACKAGE-/BIC/ZITEMNUM = WA-/BIC/ZITEMNUM.

WA_RESULT_PACKAGE-MATERIAL = WA-MATERIAL.

WA_RESULT_PACKAGE-/BIC/ZITMTYP = WA-/BIC/ZITMTYP.

WA_RESULT_PACKAGE-QUANT_B = WA-QUANT_B.

WA_RESULT_PACKAGE-BASE_UOM = WA-BASE_UOM.

modify RESULT_PACKAGE from WA_RESULT_PACKAGE.

   ENDIF.

ENDLOOP

Regards,

Priya M

BenedictV
Active Contributor
0 Kudos

Hi Jinal,

A loop inside another loop is always a bad idea.

Try to use a READ inside the loop if you are only going to select single records,

LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS> .

     READ TABLE ITAB2 INTO WA WITH KEY /BIC/ZORDNUM = <RESULT_FIELDS>-/BIC/ZORDNUM.

     IF SY-SUBRC = 0.

          <RESULT_FIELDS>-/BIC/ZITEMNUM = WA-/BIC/ZITEMNUM.

          <RESULT_FIELDS>-MATERIAL = WA-MATERIAL.

          <RESULT_FIELDS>-/BIC/ZITMTYP = WA-/BIC/ZITMTYP.

          <RESULT_FIELDS>-QUANT_B = WA-QUANT_B.

          <RESULT_FIELDS>-BASE_UOM = WA-BASE_UOM.

          APPEND  <RESULT_FIELDS> TO ITAB_TARGET.

     ENDIF.

ENDLOOP.

*Remember that you are modifying the values in RESULT_PACKAGE table as well here

Benedict

Former Member
0 Kudos

HI Benedict,

I have still my question unanswered.

I can write same way below code as well, so what its best out of it? Its either you mentioned or which is written below?

LOOP AT RESULT_PACKAGE ASSIGNING WA_RESULT_PACKAGE.

READ TABLE ITAB2 INTO WA WITH KEY /BIC/ZORDNUM = RESULT_PACKAGE-/BIC/ZORDNUM.

IF SY-SUBRC = 0.

WA_RESULT_PACKAGE-/BIC/ZITEMNUM = WA-/BIC/ZITEMNUM.

WA_RESULT_PACKAGE-MATERIAL = WA-MATERIAL.

WA_RESULT_PACKAGE-/BIC/ZITMTYP = WA-/BIC/ZITMTYP.

WA_RESULT_PACKAGE-QUANT_B = WA-QUANT_B.

WA_RESULT_PACKAGE-BASE_UOM = WA-BASE_UOM.

modify RESULT_PACKAGE from WA_RESULT_PACKAGE.

   ENDIF.

ENDLOOP

BenedictV
Active Contributor
0 Kudos

No significant difference. I am using a field symbol and you are using a work area. You can learn about the difference between them from other discussions. You may have to use INTO instead of ASSIGNING.

Make sure your ITAB2 is sorted by ZORDNUM and use 'binary search' in your read. Its even better if you can read about 'hash tables' and use it instead of binary search.

Loed
Active Contributor
0 Kudos

Hi,

I'm also using WORKAREA before since I'm used to it..

But many members here are ALWAYS suggesting to use field symbols instead for better performance..So I just ASSUME that field symbols should be used when doing BW routines ONLY..Because I asked several ABAPers and found out that they PREFER to use WORKAREA since field symbol is hard to DEBUG in some cases..

Hope it gave you an idea..

Regards,

Loed