Application Development 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: 

ALV Layout

Former Member
0 Kudos

Hello,

I am having an ALV list as follows:

Material Description M112005 M112004 M122005 M122004

XXXXX ZZZZZZZZZZZ 20 18 20 19

Now I want to format the ALV layout as below:

Material Description November December

2005 2004 2005 2004

XXXXX ZZZZZZZZZZZ 20 18 20 19

Hope I have made myself clear.

How to do it?

Thanks and Regards,

Pankaj

6 REPLIES 6

Former Member
0 Kudos

is the layout constant or it varies

r u storing this data in any variables

M112005 M112004 M122005 M122004

0 Kudos

Hello,

My ALV is constant and all the data are stored in internal table.

Regards,

Pankaj

0 Kudos

Pankaj,

Are you trying to merge cells like in Excel. You want one heading 'November' and under that two more headings '2004' and '2005'.

If this is the case, I don't think it will be possible.

Regards,

Ravi

Former Member
0 Kudos

assume itab-date1 = M112005

assume itab-date2 = M112004

assume itab-date3 = M122005

assume itab-date4 = M112004

data : begin of itab1 occurs 0,

mon(2) type c, " example 11

mon_desc(15) type c, "example november

end of itab1.

loop at itab.

l_mon1 = itab-date1+1(2).

l_year1 = itab-date1+3(4).

itab1-mon = l_mon1.

append itab1.

clear itab1.

l_mon2 = itab-date2+1(2).

l_year2 = itab-date2+3(4).

itab1-mon = l_mon2.

append itab1.

clear itab1.

l_mon3 = itab-date3+1(2).

l_year3 = itab-date3+3(4).

itab1-mon = l_mon3.

append itab1.

clear itab1.

l_mon4 = itab-date4+1(2).

l_year4 = itab-date4+3(4).

itab1-mon = l_mon3.

append itab1.

clear itab1.

delete adjacent duplicates from itab1 comparing mon.

  • write one perform here to get month description for given month using CASE statement and store in itab1-mon_desc.

loop at itab1.

if l_mon_desc1 is initial.

l_mon_desc1 = itab1-mon_desc.

else.

l_mon_desc2 = itab1-mon_desc.

endif.

endloop.

write : 'material description' ,l_mon_desc1 , l_mon_desc2.

write : l_year1 ,l_year2 ,l_year3 ,l_year4 .

just assuming the layout what u had given

former_member186741
Active Contributor
0 Kudos

I think you are just trying to change the column headings from M112005->November 2005, M112004->November 2004, M122005->December 2005, M122004->December 2004. To change the headings you can modify the field catalog. Try something like this:

...........................

PERFORM change_headings

USING

*.. Table name

'?' "put your table name i here!!

*.. Fieldname

'M112005'

*.. Short...

'NOV 2005'

*.. Long

'November 2005'

*.. Medium

'November 2005'

*.. Dictionary Heading

'November 2005'.

*

&----


*& Form change_headings

&----


  • Changes the short, long, medium and and dictionary heading

  • fields for a given output field.

----


  • -->us_fieldname name of field to deal with

  • -->us_short text for short heading

  • -->us_long text for long heading

  • -->us_medium text for medium heading

  • -->us_heading text for dictionary heading

----


FORM change_headings

USING

us_tabname TYPE tabname

us_fieldname TYPE fieldname

us_short TYPE scrtext_s

us_long TYPE scrtext_l

us_medium TYPE scrtext_m

us_heading TYPE reptext.

*.. Short...

PERFORM set_fieldcat_attribute

USING

us_tabname

us_fieldname

'seltext_S'

us_short

t_fieldcat.

*.. Long

PERFORM set_fieldcat_attribute

USING

us_tabname

us_fieldname

'seltext_L'

us_long

t_fieldcat.

*.. Medium

PERFORM set_fieldcat_attribute

USING

us_tabname

us_fieldname

'seltext_M'

us_medium

t_fieldcat.

*.. Dictionary Heading

PERFORM set_fieldcat_attribute

USING

us_tabname

us_fieldname

'reptext_ddic'

us_heading

t_fieldcat.

ENDFORM. " change_headings

*

&----


*& Form SET_fieldCAT_attribute

&----


  • sets a fieldcat attribute,

  • e.g. can hide a field in ALV output, change title, etc

----


  • -->pv_table table name

  • -->pv_field field name

  • -->pv_attrib name of attribute to be changed

  • -->pv_newval new value to be put in attribute

  • -->pt_fieldcat field catlog

----


FORM set_fieldcat_attribute

USING pv_table TYPE tabname

pv_field TYPE fieldname

pv_attrib TYPE fieldname

pv_newval TYPE any

pt_fieldcat TYPE slis_t_fieldcat_alv

.

FIELD-SYMBOLS: <attrib>,

<fieldcat> TYPE slis_fieldcat_alv.

  • ensure working in upper case

TRANSLATE pv_table TO UPPER CASE.

  • ensure working in upper case

TRANSLATE pv_field TO UPPER CASE.

  • find the entry matching the input fieldname

READ TABLE pt_fieldcat ASSIGNING <fieldcat>

WITH KEY fieldname = pv_field tabname = pv_table.

  • if found..

IF sy-subrc = 0.

*.. set up the full name of field

CONCATENATE '<FIELDCAT>-' pv_attrib INTO w_field_name.

*.. point a field-symbol to it

ASSIGN (w_field_name) TO <attrib>.

*.. fill it with the input new value

<attrib> = pv_newval.

ENDIF.

ENDFORM. " set_fieldcat_attribute

Former Member
0 Kudos

Hi Pankaj,

1. What u are asking for is CROSS-TAB query.

2. ALV does not support this kind of format.

(Crystal Report supports this kind of reports)

3. However this data in alv

can be transferred to EXCEL in PIVOT format

( or pivot can be used in excel after transferring raw data)

4. As far as i know, without applying some logic

to the internal table and its conents,

it is not directly possible.

Regards,

Amit M.