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 Output Format Change...

former_member311223
Participant
0 Likes
2,790

I need to do some changes in an existing report output. Right now all the headers and their respective values are coming Horizontally but out client requires the same report to come Vertically.

-


Current Format

Category Description Header1(value) Header1(QTY) Header2(value) Header2(Qty) Header3(value) Header3(Qty)

Desce1

Desce2

-


Required Format:-

Header1 Qty Value Header3 Qty Value

Desce1 Desce1

Desce2 Desce2

Header2 Qty Value Header4 Qty Value

Desce1 Desce1

Desce2 Desce2

-


here Header1, Header2, Header3, Header4 are different column headers..

Plz suggest.. I am using ALV Field Catalog in the current format to display the output..

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,104

I had faced similar problem...wat you need to do is to transpose the output. below is the sample running code for you

REPORT Z_TRANSPOSEALV .* Type pools declaration for ALV

TYPE-POOLS: slis.*Declarations for ALV, dynamic table and col no for transpose

DATA: l_col TYPE sy-tabix,

l_structure TYPE REF TO data,

l_dyntable TYPE REF TO data,

wa_lvc_cat TYPE lvc_s_fcat,

lt_lvc_cat TYPE lvc_t_fcat,

lt_fieldcatalogue TYPE slis_t_fieldcat_alv,

wa_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv,

lt_layout TYPE slis_layout_alv.*Field symbols declarations

FIELD-SYMBOLS :

<header> TYPE ANY,

<dynheader> TYPE ANY,

<dyndata> TYPE ANY,

<ls_table> TYPE ANY,

<dynamictable> TYPE STANDARD TABLE,

<it_table> TYPE STANDARD TABLE.*Input the name of the table

PARAMETERS p_table TYPE dd02l-tabname OBLIGATORY.*Initialization event

INITIALIZATION.*Start of selection event

START-OF-SELECTION.* Create internal table of dynamic type

CREATE DATA l_dyntable TYPE STANDARD TABLE OF (p_table)

WITH NON-UNIQUE DEFAULT KEY.

ASSIGN l_dyntable->* TO <it_table>.*select statement to select data from the table as input into

*our dynamic internal table.

*Here i have restricted only till 5 rows.

*You can set a variable and give no of rows to be fetched

*The variable can be set in your select statement SELECT * INTO CORRESPONDING FIELDS OF TABLE <it_table>

FROM (p_table) up to 5 rows.*Fieldcatalogue definitions

wa_lvc_cat-fieldname = 'COLUMNTEXT'.

wa_lvc_cat-ref_table = 'LVC_S_DETA'.

APPEND wa_lvc_cat TO lt_lvc_cat. wa_fieldcat-fieldname = 'COLUMNTEXT'.

wa_fieldcat-ref_tabname = 'LVC_S_DETA'.

wa_fieldcat-key = 'X'..

APPEND wa_fieldcat TO lt_fieldcat. DESCRIBE TABLE <it_table>. DO sy-tfill TIMES.

  • For each line, a column 'VALUEx' is created in the fieldcatalog

  • Build Fieldcatalog

WRITE sy-index TO wa_lvc_cat-fieldname LEFT-JUSTIFIED.

CONCATENATE 'VALUE' wa_lvc_cat-fieldname

INTO wa_lvc_cat-fieldname.

wa_lvc_cat-ref_field = 'VALUE'.

wa_lvc_cat-ref_table = 'LVC_S_DETA'.

APPEND wa_lvc_cat TO lt_lvc_cat.

  • Build Fieldcatalog

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = wa_lvc_cat-fieldname.

wa_fieldcat-ref_fieldname = 'VALUE'.

wa_fieldcat-ref_tabname = 'LVC_S_DETA'.

APPEND wa_fieldcat TO lt_fieldcat.

ENDDO.* Create dynamic internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = lt_lvc_cat

IMPORTING

ep_table = l_dyntable. ASSIGN l_dyntable->* TO <dynamictable>.* Create structure as structure of the internal table

CREATE DATA l_structure LIKE LINE OF <dynamictable>.

ASSIGN l_structure->* TO <header>.* Create structure = structure of the internal table

CREATE DATA l_structure LIKE LINE OF <it_table>.

ASSIGN l_structure->* TO <ls_table>.* Create field catalog from our table structure

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = p_table

CHANGING

ct_fieldcat = lt_fieldcatalogue

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF. DESCRIBE TABLE lt_fieldcatalogue.* Fill the internal to display <dynamictable>

DO sy-tfill TIMES.

IF sy-index = 1.

READ TABLE lt_fieldcatalogue INTO wa_fieldcat INDEX 1.

ENDIF.

  • For each field of it_table

ASSIGN COMPONENT 1 OF STRUCTURE <header> TO <dynheader>.

IF sy-subrc NE 0. EXIT .ENDIF.

READ TABLE lt_fieldcatalogue INTO wa_fieldcat INDEX sy-index.

  • Fill 1st column

<dynheader> = wa_fieldcat-seltext_m.

IF <dynheader> IS INITIAL.

<dynheader> = wa_fieldcat-fieldname.

ENDIF.*Filling the other columns

LOOP AT <it_table> INTO <ls_table>.

l_col = sy-tabix + 1.

ASSIGN COMPONENT sy-index OF STRUCTURE <ls_table> TO <dyndata>.

IF sy-subrc NE 0. EXIT .ENDIF.

ASSIGN COMPONENT l_col OF STRUCTURE <header> TO

<dynheader>.

IF sy-subrc NE 0. EXIT .ENDIF.

WRITE <dyndata> TO <dynheader> LEFT-JUSTIFIED.

ENDLOOP.

APPEND <header> TO <dynamictable>.

ENDDO.*Layout for ALV output

lt_layout-zebra = 'X'.

lt_layout-no_colhead = 'X'..

lt_layout-colwidth_optimize ='X'.

lt_layout-window_titlebar = 'ALV GRID TRANSPOSED'.*ALV Grid output for display

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

is_layout = lt_layout

it_fieldcat = lt_fieldcat

TABLES

t_outtab = <dynamictable>.Output:

I need to do some changes in an existing report output. Right now all the headers and their respective values are coming Horizontally but out client requires the same report to come Vertically.

-


Current Format

Category Description Header1(value) Header1(QTY) Header2(value) Header2(Qty) Header3(value) Header3(Qty)

Desce1

Desce2

-


Required Format:-

Header1 Qty Value Header3 Qty Value

Desce1 Desce1

Desce2 Desce2

Header2 Qty Value Header4 Qty Value

Desce1 Desce1

Desce2 Desce2

-


here Header1, Header2, Header3, Header4 are different column headers..

Plz suggest.. I am using ALV Field Catalog in the current format to display the output..

2 REPLIES 2
Read only

Former Member
0 Likes
1,105

I had faced similar problem...wat you need to do is to transpose the output. below is the sample running code for you

REPORT Z_TRANSPOSEALV .* Type pools declaration for ALV

TYPE-POOLS: slis.*Declarations for ALV, dynamic table and col no for transpose

DATA: l_col TYPE sy-tabix,

l_structure TYPE REF TO data,

l_dyntable TYPE REF TO data,

wa_lvc_cat TYPE lvc_s_fcat,

lt_lvc_cat TYPE lvc_t_fcat,

lt_fieldcatalogue TYPE slis_t_fieldcat_alv,

wa_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv,

lt_layout TYPE slis_layout_alv.*Field symbols declarations

FIELD-SYMBOLS :

<header> TYPE ANY,

<dynheader> TYPE ANY,

<dyndata> TYPE ANY,

<ls_table> TYPE ANY,

<dynamictable> TYPE STANDARD TABLE,

<it_table> TYPE STANDARD TABLE.*Input the name of the table

PARAMETERS p_table TYPE dd02l-tabname OBLIGATORY.*Initialization event

INITIALIZATION.*Start of selection event

START-OF-SELECTION.* Create internal table of dynamic type

CREATE DATA l_dyntable TYPE STANDARD TABLE OF (p_table)

WITH NON-UNIQUE DEFAULT KEY.

ASSIGN l_dyntable->* TO <it_table>.*select statement to select data from the table as input into

*our dynamic internal table.

*Here i have restricted only till 5 rows.

*You can set a variable and give no of rows to be fetched

*The variable can be set in your select statement SELECT * INTO CORRESPONDING FIELDS OF TABLE <it_table>

FROM (p_table) up to 5 rows.*Fieldcatalogue definitions

wa_lvc_cat-fieldname = 'COLUMNTEXT'.

wa_lvc_cat-ref_table = 'LVC_S_DETA'.

APPEND wa_lvc_cat TO lt_lvc_cat. wa_fieldcat-fieldname = 'COLUMNTEXT'.

wa_fieldcat-ref_tabname = 'LVC_S_DETA'.

wa_fieldcat-key = 'X'..

APPEND wa_fieldcat TO lt_fieldcat. DESCRIBE TABLE <it_table>. DO sy-tfill TIMES.

  • For each line, a column 'VALUEx' is created in the fieldcatalog

  • Build Fieldcatalog

WRITE sy-index TO wa_lvc_cat-fieldname LEFT-JUSTIFIED.

CONCATENATE 'VALUE' wa_lvc_cat-fieldname

INTO wa_lvc_cat-fieldname.

wa_lvc_cat-ref_field = 'VALUE'.

wa_lvc_cat-ref_table = 'LVC_S_DETA'.

APPEND wa_lvc_cat TO lt_lvc_cat.

  • Build Fieldcatalog

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = wa_lvc_cat-fieldname.

wa_fieldcat-ref_fieldname = 'VALUE'.

wa_fieldcat-ref_tabname = 'LVC_S_DETA'.

APPEND wa_fieldcat TO lt_fieldcat.

ENDDO.* Create dynamic internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = lt_lvc_cat

IMPORTING

ep_table = l_dyntable. ASSIGN l_dyntable->* TO <dynamictable>.* Create structure as structure of the internal table

CREATE DATA l_structure LIKE LINE OF <dynamictable>.

ASSIGN l_structure->* TO <header>.* Create structure = structure of the internal table

CREATE DATA l_structure LIKE LINE OF <it_table>.

ASSIGN l_structure->* TO <ls_table>.* Create field catalog from our table structure

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = p_table

CHANGING

ct_fieldcat = lt_fieldcatalogue

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF. DESCRIBE TABLE lt_fieldcatalogue.* Fill the internal to display <dynamictable>

DO sy-tfill TIMES.

IF sy-index = 1.

READ TABLE lt_fieldcatalogue INTO wa_fieldcat INDEX 1.

ENDIF.

  • For each field of it_table

ASSIGN COMPONENT 1 OF STRUCTURE <header> TO <dynheader>.

IF sy-subrc NE 0. EXIT .ENDIF.

READ TABLE lt_fieldcatalogue INTO wa_fieldcat INDEX sy-index.

  • Fill 1st column

<dynheader> = wa_fieldcat-seltext_m.

IF <dynheader> IS INITIAL.

<dynheader> = wa_fieldcat-fieldname.

ENDIF.*Filling the other columns

LOOP AT <it_table> INTO <ls_table>.

l_col = sy-tabix + 1.

ASSIGN COMPONENT sy-index OF STRUCTURE <ls_table> TO <dyndata>.

IF sy-subrc NE 0. EXIT .ENDIF.

ASSIGN COMPONENT l_col OF STRUCTURE <header> TO

<dynheader>.

IF sy-subrc NE 0. EXIT .ENDIF.

WRITE <dyndata> TO <dynheader> LEFT-JUSTIFIED.

ENDLOOP.

APPEND <header> TO <dynamictable>.

ENDDO.*Layout for ALV output

lt_layout-zebra = 'X'.

lt_layout-no_colhead = 'X'..

lt_layout-colwidth_optimize ='X'.

lt_layout-window_titlebar = 'ALV GRID TRANSPOSED'.*ALV Grid output for display

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

is_layout = lt_layout

it_fieldcat = lt_fieldcat

TABLES

t_outtab = <dynamictable>.Output:

Read only

former_member311223
Participant
0 Likes
1,104

Answered