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 grid layout

Former Member
0 Likes
1,575

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?

1 ACCEPTED SOLUTION
Read only

kiran_k8
Active Contributor
0 Likes
897

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.

6 REPLIES 6
Read only

kiran_k8
Active Contributor
0 Likes
898

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.

Read only

Former Member
0 Likes
897

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?

Read only

Former Member
0 Likes
897

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

Read only

Former Member
0 Likes
897

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.

Read only

Former Member
0 Likes
897

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.

Read only

Former Member
0 Likes
897

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