‎2008 Mar 13 9:51 AM
hi all,
I am handling 3 different reports in an ALV grid program. On pressing the corresponding buttons, the report should be displayed with the respective layouts. How do i assign diff layout variants by default for each report and associate with my report buttons?
‎2008 Mar 13 9:56 AM
Anu,
if r1 = 'X'
build the fieldcatalog for the r1
display the alv
elseif r2 = 'X'.
build the fieldcatalog for the r2
display the alv
else
build the fieldcatalog for the r3
display the alv
endif.
K.Kiran.
‎2008 Mar 13 9:56 AM
Anu,
if r1 = 'X'
build the fieldcatalog for the r1
display the alv
elseif r2 = 'X'.
build the fieldcatalog for the r2
display the alv
else
build the fieldcatalog for the r3
display the alv
endif.
K.Kiran.
‎2008 Mar 13 10:05 AM
Hi Kiran,
I am having different field catalogs for the 3 reports. But the problem is i want to remove some fields from the default display of one of the reports. I dont want to delete it from field catalog. I want to change the layout in grid and save as default layout for that report. But when i do this change, the layout of the other two reports are getting affected.. any idea how to fix this?
‎2008 Mar 13 9:56 AM
Hi ,
Declare I_LAYOUT TYPE SLIS_LAYOUT_ALV .
one for each report and assign when calling the reuse grid FM
checkt he following:
TYPE-POOLS:slis.
TABLES:ekko.
SELECT-OPTIONS:so_ebeln FOR ekko-ebeln.
PARAMETERS: VARIANT LIKE DISVARIANT-VARIANT.
DATA:BEGIN OF it_ekko OCCURS 0,
ebeln LIKE ekko-ebeln, "PURCHASE DOCUMENT NUMBER
bukrs LIKE ekko-bukrs, "COMPANY CODE
bstyp LIKE ekko-bstyp, "PURCHASE DOCUMENT CATEGORY
bsart LIKE ekko-bsart, "PUCHASE DOCUMENT TYPE
END OF it_ekko.
*FIELD CATALOG AND EVENT CATALOG TABLE DECLARATION.
DATA:i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
i_eventcat TYPE slis_t_event WITH HEADER LINE,
I_LAYOUT TYPE SLIS_LAYOUT_ALV .
ZDLAYOUT1 TYPE SLIS_LAYOUT_ALV .
DATA:W_VARIANT LIKE DISVARIANT,
W_VARIANT1 LIKE DISVARIANT.
INITIALIZATION.
MOVE: SY-REPID TO W_VARIANT-REPORT,
SY-REPID TO W_VARIANT1-REPORT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
cs_variant = W_VARIANT.
MOVE W_VARIANT-VARIANT TO w_VARIANT1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR VARIANT.
DATA: L_EXIT.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = W_VARIANT1
I_TABNAME_HEADER =
I_TABNAME_ITEM =
IT_DEFAULT_FIELDCAT =
I_SAVE = 'A'
I_DISPLAY_VIA_GRID = ' '
IMPORTING
E_EXIT = L_EXIT
ES_VARIANT = W_VARIANT.
START-OF-SELECTION.
*INTERNAL TABLE POPULATION
SELECT ebeln
bukrs
bstyp
bsart
FROM ekko
INTO TABLE it_ekko
WHERE ebeln IN so_ebeln.
*POPULATING FIELD CATALOG BY USING FUNCTION MODULE
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-cprog
i_internal_tabname = 'IT_EKKO'
i_inclname = sy-cprog
CHANGING
ct_fieldcat = i_fieldcat[].
*DISPLAYING ALV GRID WITH MULTIPLE LAYOUTSETS
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = 'ZDLAYOUT1'
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A' "'U' "'X'
IS_VARIANT = VARIANT
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = IT_EKKO.
Regards,
Himanshu
‎2008 Mar 13 9:57 AM
Hi,
Use RADIO BUTTONS in selection screen.
So , based on the radio button selected, the report would be displayed with respective layouts.
Reward if helpful.
Regards.
‎2008 Mar 13 10:01 AM
HI ANU ,
check this exact code for this,
DATA: is_variant LIKE disvariant,
g_save TYPE c VALUE 'A'.
PARAMETER p_layout LIKE disvariant-variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout..
*~~ Creating variant for Layout
is_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = is_variant
i_save = g_save
IMPORTING
es_variant = is_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
p_layout = is_variant-variant.
ENDIF.
START-OF-SELECTION.
is_variant-variant = p_layout.
is_variant-report = sy-repid.
it_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = it_layout
it_fieldcat = it_fieldcat
i_save = g_save
is_variant = is_variant
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
WRITE:/ 'Error occured while displaying the report'(008).
ENDIF.
regards,
venkat.
‎2008 Mar 13 10:03 AM
Hi,
Try this.
Data:
v_variant LIKE disvariant,
v_variant1 LIKE disvariant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAYOUT.
PERFORM layout.
&----
*& Form layout
&----
text
-
--> p1 text
<-- p2 text
-
Form Layout.
v_variant-report = sy-repid.
v_variant-username = sy-uname.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = v_variant
i_save = v_save
IMPORTING
e_exit = v_exit1
es_variant = v_variant1
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF v_exit1 = space.
P_LAYOUT = v_variant1-variant.
v_variant = v_variant1.
ELSE.
MESSAGE 'No layouts found' TYPE 'I'.
ENDIF.
ENDIF.
Endform.
Please reward points if useful.
Regards
Rose