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

ALV rows to column dynamic internal table

Former Member
0 Likes
705

Hello People ,

I am stuck in a report which displays an output in ALV as follows :-

bukrs | kntyp | konto | knfix | period | element | emeng | emein

1000 | 10 | 1100 | berlin | 11.2011 | AG | 0.148 | kgAG

1000 | 10 | 1100 | berlin | 11.2011 | AU | 0.104 | kgAU

1000 | 10 | 1100 | berlin | 11.2011 | GA | 0.207 | kgGA

And this table has many values corresponding to element AG,AU and GA respectively . For example , there would be many element AG's with many "EMENG" values . Similarly for AU and GA .

MY question :- I am asked to make AG , AU , GA as 3 different fields which should show the value "EMENG" under respective elements . Like :-

bukrs | kntyp | konto | knfix | period | AG | AU | GA | emein

1000 | 10 | 1100 | berlin | 11.2011 | 0.148 | 0.104 | 0.207 | kgAG

That should be my output . ( elements replaced by AG , AU and GA which comes from a Metal table ZXXXX where

metal no. 1 = AU

metal no. 2 = AG

metal no. 3 = GA

If there is any metal added to it would be metal no. 4 ,5,6,7 .... so on ) and then that should be added as a field in our report .. So that has to be DYNAMIC .

I am unable to move on with problem . Pls suggest ? I am pasting my report here ...

FORM select_table_gt_bb CHANGING p_gt_bb.

TABLES : zpam_as .

DATA : i_zpam_as TYPE TABLE OF zpam_as ,

wa_zpam_as LIKE LINE OF i_zpam_as ,

i_tcurr TYPE TABLE OF tcurr ,

wa_tcurr LIKE LINE OF i_tcurr,

zt_as TYPE TABLE OF zpam_as.

SELECT * FROM zpam_as INTO TABLE gt_as

WHERE bukrs EQ bukrs

AND kntyp IN kntyp

AND konto IN konto

AND knfix IN knfix

AND buper IN buper

AND element IN element

AND ameng IN ameng

AND ashkz IN ashkz

AND emeng IN emeng

AND eshkz IN eshkz

AND emein IN emein.

SELECT * FROM zpam_tcurr INTO TABLE gt_tcurr.

IF sy-subrc IS INITIAL.

LOOP AT gt_tcurr INTO gw_tcurr.

SELECT * FROM tcurr INTO wa_tcurr WHERE fcurr = gw_tcurr-fcurr AND

tcurr = tcurr.

ENDSELECT.

APPEND wa_tcurr TO i_tcurr.

DELETE ADJACENT DUPLICATES FROM i_tcurr.

ENDLOOP.

ENDIF.

IF i_tcurr IS NOT INITIAL.

LOOP AT gt_as INTO gw_as.

CLEAR sy-subrc.

LOOP AT i_tcurr

INTO wa_tcurr

WHERE fcurr = gw_as-emein.

gw_as-tcurr = wa_tcurr-tcurr.

gw_as-ukurs = wa_tcurr-ukurs.

gw_as-total = abs( gw_as-emeng ) * wa_tcurr-ukurs.

APPEND gw_as TO zt_as.

ENDLOOP.

IF sy-subrc <> 0.

gw_as-tcurr = 'None'.

gw_as-ukurs = ''.

gw_as-total = ''.

APPEND gw_as TO zt_as.

ENDIF.

ENDLOOP.

REFRESH gt_as.

LOOP AT zt_as INTO gw_as.

APPEND gw_as TO gt_as.

ENDLOOP.

ENDIF.

ENDFORM.

Priority normalized

Edited by: Rob Burbank on Dec 28, 2011 3:44 PM

Hello People ,

I am stuck in a report which displays an output in ALV as follows :-

bukrs | kntyp | konto | knfix | period | element | emeng | emein

1000 | 10 | 1100 | berlin | 11.2011 | AG | 0.148 | kgAG

1000 | 10 | 1100 | berlin | 11.2011 | AU | 0.104 | kgAU

1000 | 10 | 1100 | berlin | 11.2011 | GA | 0.207 | kgGA

And this table has many values corresponding to element AG,AU and GA respectively . For example , there would be many element AG's with many "EMENG" values . Similarly for AU and GA .

MY question :- I am asked to make AG , AU , GA as 3 different fields which should show the value "EMENG" under respective elements . Like :-

bukrs | kntyp | konto | knfix | period | AG | AU | GA | emein

1000 | 10 | 1100 | berlin | 11.2011 | 0.148 | 0.104 | 0.207 | kgAG

That should be my output . ( elements replaced by AG , AU and GA which comes from a Metal table ZXXXX where

metal no. 1 = AU

metal no. 2 = AG

metal no. 3 = GA

If there is any metal added to it would be metal no. 4 ,5,6,7 .... so on ) and then that should be added as a field in our report .. So that has to be DYNAMIC .

I am unable to move on with problem . Pls suggest ? I am pasting my report here ...

FORM select_table_gt_bb CHANGING p_gt_bb.

TABLES : zpam_as .

DATA : i_zpam_as TYPE TABLE OF zpam_as ,

wa_zpam_as LIKE LINE OF i_zpam_as ,

i_tcurr TYPE TABLE OF tcurr ,

wa_tcurr LIKE LINE OF i_tcurr,

zt_as TYPE TABLE OF zpam_as.

SELECT * FROM zpam_as INTO TABLE gt_as

WHERE bukrs EQ bukrs

AND kntyp IN kntyp

AND konto IN konto

AND knfix IN knfix

AND buper IN buper

AND element IN element

AND ameng IN ameng

AND ashkz IN ashkz

AND emeng IN emeng

AND eshkz IN eshkz

AND emein IN emein.

SELECT * FROM zpam_tcurr INTO TABLE gt_tcurr.

IF sy-subrc IS INITIAL.

LOOP AT gt_tcurr INTO gw_tcurr.

SELECT * FROM tcurr INTO wa_tcurr WHERE fcurr = gw_tcurr-fcurr AND

tcurr = tcurr.

ENDSELECT.

APPEND wa_tcurr TO i_tcurr.

DELETE ADJACENT DUPLICATES FROM i_tcurr.

ENDLOOP.

ENDIF.

IF i_tcurr IS NOT INITIAL.

LOOP AT gt_as INTO gw_as.

CLEAR sy-subrc.

LOOP AT i_tcurr

INTO wa_tcurr

WHERE fcurr = gw_as-emein.

gw_as-tcurr = wa_tcurr-tcurr.

gw_as-ukurs = wa_tcurr-ukurs.

gw_as-total = abs( gw_as-emeng ) * wa_tcurr-ukurs.

APPEND gw_as TO zt_as.

ENDLOOP.

IF sy-subrc <> 0.

gw_as-tcurr = 'None'.

gw_as-ukurs = ''.

gw_as-total = ''.

APPEND gw_as TO zt_as.

ENDIF.

ENDLOOP.

REFRESH gt_as.

LOOP AT zt_as INTO gw_as.

APPEND gw_as TO gt_as.

ENDLOOP.

ENDIF.

ENDFORM.

Priority normalized

Edited by: Rob Burbank on Dec 28, 2011 3:44 PM

4 REPLIES 4
Read only

Former Member
0 Likes
644

There are plenty of discussions in this forum about dynamic internal tables. Have you looked for them?

Rob

Read only

0 Likes
644

Hey,

But after understanding my question correctly , you sure that dynamic internal table is the solution for it ?

Read only

0 Likes
644

You have to pass an internal table to ALV; you don't know it's structure in advance; so...

Rob

Read only

0 Likes
644

Without doubt, dynamic internal table is the solution because the number of 'metal' can only be known during runtime...