09-11-2007 5:32 AM
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.
09-11-2007 5:45 AM
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
09-11-2007 5:45 AM
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
09-11-2007 6:29 AM
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.
09-11-2007 6:35 AM
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>