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: 

REPORTS

Former Member
0 Kudos

hi, i am working on reports but how to develop the report with multiple options that means if select alv grid or list or heirarchy display it has to display the related information can any one give me the code if possible .

thanks in advance

sasi.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

See this example for list and grid

REPORT zkiran_sample1.

TABLES : but000,adrc,but020,tsad3t,tb027t.

DATA : BEGIN OF itab OCCURS 0,

partner LIKE but000-partner,

title LIKE but000-title,

title_medi LIKE tsad3t-title_medi,

name_first LIKE but000-name_first,

name_last LIKE but000-name_last,

xsexm LIKE but000-xsexm,

xsexf LIKE but000-xsexf,

xsexu LIKE but000-xsexu,

marst LIKE but000-marst,

bez20 LIKE tb027t-bez20,

natio LIKE but000-natio,

post_code1 LIKE adrc-post_code1,

city1 LIKE adrc-city1,

country LIKE adrc-country,

END OF itab.

        • AAA *****

DATA : BEGIN OF itab1 OCCURS 0.

INCLUDE STRUCTURE tsad3t.

DATA : END OF itab1.

DATA : BEGIN OF itab2 OCCURS 0.

INCLUDE STRUCTURE tb027t.

DATA : END OF itab2.

        • AAA *****

                        • ALV Declaration ************************************

TYPE-POOLS : slis.

DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,

lf_fieldcat TYPE slis_fieldcat_alv.

      • END OF DATA DECLARATION***************************************

*******ALV Selection screen *****************************************

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: x_list RADIOBUTTON GROUP anz,

x_grid RADIOBUTTON GROUP anz.

SELECTION-SCREEN END OF BLOCK b1.

      • END OF START-OF-SELECTION*****************************************

                        • Data Fetching into ITAB **********************************

SELECT DISTINCT

bc~title

bc~name_first

bc~name_last

bc~xsexu

bc~xsexm

bc~xsexf

bc~marst

bc~natio

ad~post_code1

ad~city1

ad~country

INTO CORRESPONDING FIELDS OF TABLE itab

FROM ( ( but000 AS bc INNER JOIN but020 AS bd ON bcpartner EQ bdpartner )

INNER JOIN adrc AS ad ON bdaddrnumber EQ adaddrnumber ).

                            • Displaying the data from itab *********************

IF NOT itab[] IS INITIAL.

LOOP AT itab.

WRITE : / itab-title,

itab-name_first,

itab-name_last,

itab-post_code1,

itab-city1,

itab-country,

itab-xsexu,

itab-xsexm,

itab-xsexf,

itab-marst,

itab-natio.

ENDLOOP.

ELSE.

WRITE: / 'Data not selected into internal table'.

ENDIF.

********changing display of Title and maritial Status ************

***LOOP AT itab.

***case itab-title.

***when '0001'. itab-title = 'Ms.'.modify itab index sy-tabix.

***when '0002' . itab-title = 'Mr.'.modify itab index sy-tabix.

***when '0003'. itab-title = 'Company'.modify itab index sy-tabix.

***when '0004'. itab-title = 'Mr. and Mrs.'.modify itab index sy-tabix.

***endcase.

***ENDLOOP.

***

***

***LOOP AT itab.

***case itab-marst.

***when '1'. itab-marst = 'S'.modify itab index sy-tabix.

***when '2' . itab-marst = 'M'.modify itab index sy-tabix.

***when '3'. itab-marst = 'W'.modify itab index sy-tabix.

***when '4'. itab-marst = 'D'.modify itab index sy-tabix.

***when '5'. itab-marst = 'S'.modify itab index sy-tabix.

***endcase.

***ENDLOOP.

        • DISPLAYING TITLE_MEDI *****

IF NOT itab[] IS INITIAL.

SELECT * FROM tsad3t INTO TABLE itab1

FOR ALL ENTRIES IN itab

WHERE title = itab-title AND langu = 'E'.

ENDIF.

LOOP AT itab.

READ TABLE itab1 WITH KEY title = itab-title.

IF sy-subrc = 0.

itab-title_medi = itab1-title_medi.

MODIFY itab.

CLEAR itab.

ENDIF.

ENDLOOP.

            • DISPLAYING MARITIAL STATUS *********

IF NOT itab[] IS INITIAL.

SELECT * FROM tb027t INTO TABLE itab2

FOR ALL ENTRIES IN itab

WHERE marst = itab-marst AND spras = 'E'.

ENDIF.

LOOP AT itab.

READ TABLE itab2 WITH KEY marst = itab-marst.

IF sy-subrc = 0.

itab-bez20 = itab2-bez20.

MODIFY itab.

CLEAR itab.

ENDIF.

ENDLOOP.

*********ALV **********************************************************

PERFORM alv_display.

IF x_list = 'X'.

PERFORM display_list.

ELSE.

PERFORM display_grid.

ENDIF.

&----


*& Form alv_display

&----


FORM alv_display .

  • DATA: y_x LIKE boole VALUE 'X'.

  • DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.

DATA: lf_fieldcat TYPE slis_fieldcat_alv.

DATA: lh_index LIKE lf_fieldcat-col_pos.

  • FOR TITLE

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'TITLE_MEDI'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'TSAD3T'.

lf_fieldcat-ref_fieldname = 'TITLE_MEDI'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR FIRST NAME

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NAME_FIRST'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'NAME_FIRST'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR LAST NAME

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NAME_LAST'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'NAME_LAST'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR POST CODE

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'POST_CODE1'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'ADRC'.

lf_fieldcat-ref_fieldname = 'POST_CODE1'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR CITY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'CITY1'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'ADRC'.

lf_fieldcat-ref_fieldname = 'CITY1'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR COUNTRY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'COUNTRY'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'ADRC'.

lf_fieldcat-ref_fieldname = 'COUNTRY'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR SEX U

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'XSEXU'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'XSEXU'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR SEX M

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'XSEXM'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'XSEXM'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR SEX F

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'XSEXF'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'XSEXF'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR MARITIAL STATUS

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'BEZ20'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'TB027T'.

lf_fieldcat-ref_fieldname = 'MARST'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR COUNTRY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NATIO'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'NATIO'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

ENDFORM. " alv_display

&----


*& Form display_list

&----


FORM display_list .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = 'ZKIRAN_SAMPLE1'

it_fieldcat = lt_fieldcat

TABLES

t_outtab = itab

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. " display_list

&----


*& Form display_grid

&----


FORM display_grid .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = 'ZKIRAN_SAMPLE1'

it_fieldcat = lt_fieldcat

TABLES

t_outtab = itab.

ENDFORM. " display_grid

3 REPLIES 3

Former Member
0 Kudos

See this example for list and grid

REPORT zkiran_sample1.

TABLES : but000,adrc,but020,tsad3t,tb027t.

DATA : BEGIN OF itab OCCURS 0,

partner LIKE but000-partner,

title LIKE but000-title,

title_medi LIKE tsad3t-title_medi,

name_first LIKE but000-name_first,

name_last LIKE but000-name_last,

xsexm LIKE but000-xsexm,

xsexf LIKE but000-xsexf,

xsexu LIKE but000-xsexu,

marst LIKE but000-marst,

bez20 LIKE tb027t-bez20,

natio LIKE but000-natio,

post_code1 LIKE adrc-post_code1,

city1 LIKE adrc-city1,

country LIKE adrc-country,

END OF itab.

        • AAA *****

DATA : BEGIN OF itab1 OCCURS 0.

INCLUDE STRUCTURE tsad3t.

DATA : END OF itab1.

DATA : BEGIN OF itab2 OCCURS 0.

INCLUDE STRUCTURE tb027t.

DATA : END OF itab2.

        • AAA *****

                        • ALV Declaration ************************************

TYPE-POOLS : slis.

DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,

lf_fieldcat TYPE slis_fieldcat_alv.

      • END OF DATA DECLARATION***************************************

*******ALV Selection screen *****************************************

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: x_list RADIOBUTTON GROUP anz,

x_grid RADIOBUTTON GROUP anz.

SELECTION-SCREEN END OF BLOCK b1.

      • END OF START-OF-SELECTION*****************************************

                        • Data Fetching into ITAB **********************************

SELECT DISTINCT

bc~title

bc~name_first

bc~name_last

bc~xsexu

bc~xsexm

bc~xsexf

bc~marst

bc~natio

ad~post_code1

ad~city1

ad~country

INTO CORRESPONDING FIELDS OF TABLE itab

FROM ( ( but000 AS bc INNER JOIN but020 AS bd ON bcpartner EQ bdpartner )

INNER JOIN adrc AS ad ON bdaddrnumber EQ adaddrnumber ).

                            • Displaying the data from itab *********************

IF NOT itab[] IS INITIAL.

LOOP AT itab.

WRITE : / itab-title,

itab-name_first,

itab-name_last,

itab-post_code1,

itab-city1,

itab-country,

itab-xsexu,

itab-xsexm,

itab-xsexf,

itab-marst,

itab-natio.

ENDLOOP.

ELSE.

WRITE: / 'Data not selected into internal table'.

ENDIF.

********changing display of Title and maritial Status ************

***LOOP AT itab.

***case itab-title.

***when '0001'. itab-title = 'Ms.'.modify itab index sy-tabix.

***when '0002' . itab-title = 'Mr.'.modify itab index sy-tabix.

***when '0003'. itab-title = 'Company'.modify itab index sy-tabix.

***when '0004'. itab-title = 'Mr. and Mrs.'.modify itab index sy-tabix.

***endcase.

***ENDLOOP.

***

***

***LOOP AT itab.

***case itab-marst.

***when '1'. itab-marst = 'S'.modify itab index sy-tabix.

***when '2' . itab-marst = 'M'.modify itab index sy-tabix.

***when '3'. itab-marst = 'W'.modify itab index sy-tabix.

***when '4'. itab-marst = 'D'.modify itab index sy-tabix.

***when '5'. itab-marst = 'S'.modify itab index sy-tabix.

***endcase.

***ENDLOOP.

        • DISPLAYING TITLE_MEDI *****

IF NOT itab[] IS INITIAL.

SELECT * FROM tsad3t INTO TABLE itab1

FOR ALL ENTRIES IN itab

WHERE title = itab-title AND langu = 'E'.

ENDIF.

LOOP AT itab.

READ TABLE itab1 WITH KEY title = itab-title.

IF sy-subrc = 0.

itab-title_medi = itab1-title_medi.

MODIFY itab.

CLEAR itab.

ENDIF.

ENDLOOP.

            • DISPLAYING MARITIAL STATUS *********

IF NOT itab[] IS INITIAL.

SELECT * FROM tb027t INTO TABLE itab2

FOR ALL ENTRIES IN itab

WHERE marst = itab-marst AND spras = 'E'.

ENDIF.

LOOP AT itab.

READ TABLE itab2 WITH KEY marst = itab-marst.

IF sy-subrc = 0.

itab-bez20 = itab2-bez20.

MODIFY itab.

CLEAR itab.

ENDIF.

ENDLOOP.

*********ALV **********************************************************

PERFORM alv_display.

IF x_list = 'X'.

PERFORM display_list.

ELSE.

PERFORM display_grid.

ENDIF.

&----


*& Form alv_display

&----


FORM alv_display .

  • DATA: y_x LIKE boole VALUE 'X'.

  • DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.

DATA: lf_fieldcat TYPE slis_fieldcat_alv.

DATA: lh_index LIKE lf_fieldcat-col_pos.

  • FOR TITLE

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'TITLE_MEDI'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'TSAD3T'.

lf_fieldcat-ref_fieldname = 'TITLE_MEDI'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR FIRST NAME

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NAME_FIRST'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'NAME_FIRST'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR LAST NAME

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NAME_LAST'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'NAME_LAST'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR POST CODE

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'POST_CODE1'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'ADRC'.

lf_fieldcat-ref_fieldname = 'POST_CODE1'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR CITY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'CITY1'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'ADRC'.

lf_fieldcat-ref_fieldname = 'CITY1'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR COUNTRY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'COUNTRY'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'ADRC'.

lf_fieldcat-ref_fieldname = 'COUNTRY'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR SEX U

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'XSEXU'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'XSEXU'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR SEX M

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'XSEXM'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'XSEXM'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR SEX F

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'XSEXF'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'XSEXF'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR MARITIAL STATUS

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'BEZ20'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'TB027T'.

lf_fieldcat-ref_fieldname = 'MARST'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

*FOR COUNTRY

CLEAR lf_fieldcat.

lf_fieldcat-fieldname = 'NATIO'.

lf_fieldcat-tabname = 'ITAB'.

lf_fieldcat-ref_tabname = 'BUT000'.

lf_fieldcat-ref_fieldname = 'NATIO'.

lh_index = lh_index + 1.

lf_fieldcat-col_pos = lh_index.

APPEND lf_fieldcat TO lt_fieldcat.

ENDFORM. " alv_display

&----


*& Form display_list

&----


FORM display_list .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = 'ZKIRAN_SAMPLE1'

it_fieldcat = lt_fieldcat

TABLES

t_outtab = itab

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. " display_list

&----


*& Form display_grid

&----


FORM display_grid .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = 'ZKIRAN_SAMPLE1'

it_fieldcat = lt_fieldcat

TABLES

t_outtab = itab.

ENDFORM. " display_grid

0 Kudos

thanks for valuable information but i want to display with third option also that is heirarchy sequence if possible give me reply soon

Thanks In advance

Sasi.

Former Member
0 Kudos

Sasi,

Do the following changes in the below section according to your requirement.

*******ALV Selection screen *****************************************

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: x_list RADIOBUTTON GROUP anz,

x_grid RADIOBUTTON GROUP anz,

<b> x_new RADIOBUTTON GROUP anz.</b>

SELECTION-SCREEN END OF BLOCK b1.

      • END OF START-OF-SELECTION*****************************************

In the below include one more perform

PERFORM alv_display.

<b>IF x_list = 'X'.

PERFORM display_list.

ELSE if x_grid = 'X'

PERFORM display_grid.

else

perform new.

ENDIF.

write ur new logic in perform new.</b>