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

about function module in alv

Former Member
0 Likes
612

hai all

iwant to know about few function modules in alv

1) reuse_alv_default_varients_get.

2)reuse alv_varients_f4

what is the use of these function modules

how to use these function modules, what r the structures used to use these function module. where to pass this in

in list and grid display function modules.

plz help me.

thanks & regards

sindu

5 REPLIES 5
Read only

Former Member
0 Likes
567

lets assume my selection screen field for variant is

PARAMETERS : P_VARI TYPE DISVARIANT-VARIANT. 
   "Layout
this is used to have one of the already saved variants to be displayed.


about<b> 'REUSE_ALV_VARIANT_DEFAULT_GET'</b>
this is used to get any default layout variant exists or not. we normally call this FM in INITIALIZATION Event.

*----------------------------------------------------------------------*
*                  INITIALIZATION
*----------------------------------------------------------------------*
<b>INITIALIZATION.</b>

  V_REPID = SY-REPID.
  V_VARIANT_SAVE = 'A'.
  CLEAR V_VARIANT.
  V_VARIANT-REPORT = V_REPID.
*-- Default-Variant
  V_DEF_VARIANT = V_VARIANT.
  CALL FUNCTION <b>'REUSE_ALV_VARIANT_DEFAULT_GET'</b>
    EXPORTING
      I_SAVE     = V_VARIANT_SAVE
    CHANGING
      CS_VARIANT = V_DEF_VARIANT
    EXCEPTIONS
      NOT_FOUND  = 2.
  IF SY-SUBRC = 0.
    P_VARI = V_DEF_VARIANT-VARIANT.
  ENDIF.


another FM <b>'REUSE_ALV_VARIANT_F4'</b>
this is to give F4 help to the user to choose one of the layouts,which already saved.

*-- F4 help for Variant
<b>AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
  PERFORM F4_FOR_VARIANT.</b>
*----------------------------------------------------------------------*
*       FORM  F4_FOR_VARIANT                                           *
*----------------------------------------------------------------------*
*       Provide F4 help for the Variant                                *
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT .

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      IS_VARIANT    = V_VARIANT
      I_SAVE        = V_VARIANT_SAVE
    IMPORTING
      E_EXIT        = V_VARIANT_EXIT
      ES_VARIANT    = V_DEF_VARIANT
    EXCEPTIONS
      NOT_FOUND     = 1
      PROGRAM_ERROR = 2
      OTHERS        = 3.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    IF V_VARIANT_EXIT = SPACE.
      P_VARI = V_DEF_VARIANT-VARIANT.
    ENDIF.
  ENDIF.
ENDFORM.                    " F4_FOR_VARIANT

and while calling the ALV function module,

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = V_REPID
      IT_FIELDCAT        = IT_FIELDCAT
      I_DEFAULT          = 'X'
      I_SAVE             = 'A'
<b>      IS_VARIANT         = V_VARIANT</b> 
   TABLES
      T_OUTTAB           = P_ITAB[]
    EXCEPTIONS
      PROGRAM_ERROR      = 1
      OTHERS             = 2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Message was edited by: Srikanth Kidambi

Read only

Former Member
0 Likes
567

Hi

- reuse_alv_default_varients_get: it returns the default layout variant, so you can inizialize the parameters you have to transfer to the ALV:

PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

INITIALIZATION.

DATA: G_SAVE(1) TYPE C VALUE 'A',

GX_VARIANT LIKE DISVARIANT.

GX_VARIANT-REPORT = SY-REPID.

GX_VARIANT-USERNAME = SY-UNAME.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = G_SAVE

CHANGING

CS_VARIANT = GX_VARIANT

EXCEPTIONS

WRONG_INPUT = 1

NOT_FOUND = 2

PROGRAM_ERROR = 3

OTHERS = 4.

IF SY-SUBRC = 0.

P_VARI = GX_VARIANT-VARIANT.

ELSE.

CLEAR GX_VARIANT.

ENDIF.

2) reuse alv_varients_f4 is to manage the search help for layout variant:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.

G_VARIANT-REPORT = SY-REPID.

G_VARIANT-USERNAME = SY-UNAME.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = G_VARIANT

I_SAVE = G_SAVE

IMPORTING

E_EXIT = G_EXIT

ES_VARIANT = GX_VARIANT

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.

CLEAR: G_VARIANT, GX_VARIANT.

ELSE.

IF G_EXIT = SPACE.

P_VARI = GX_VARIANT-VARIANT.

ENDIF.

ENDIF.

Max

Read only

Former Member
0 Likes
567

Hi sindu,

answer to 2)

try this extract:

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(30) T_VARIAN.

PARAMETERS: P_VARIAN LIKE DISVARIANT-VARIANT.

SELECTION-SCREEN: END OF LINE.

*

DATA: VARIANT LIKE DISVARIANT.

*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARIAN.

*

DATA: I_VARIANT LIKE DISVARIANT.

DATA: E_VARIANT LIKE DISVARIANT.

*

I_VARIANT-REPORT = SY-REPID.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = I_VARIANT

I_SAVE = 'A'

IMPORTING

ES_VARIANT = E_VARIANT

EXCEPTIONS

NOT_FOUND = 1

PROGRAM_ERROR = 2

OTHERS = 3.

*

IF SY-SUBRC <> 0.

MESSAGE I010 WITH 'Es sind keine Varianten angelegt'.

CLEAR: P_VARIAN.

ELSE.

P_VARIAN = E_VARIANT-VARIANT.

ENDIF.

*

INITIALIZATION.

*

T_VARIAN = 'Anzeigevariante'.

*

...

START-OF-SELECTION.

*

...

VARIANT-VARIANT = P_VARIAN.

...

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

...

IS_VARIANT = VARIANT

...

*

Regards, Dieter

Read only

Former Member
0 Likes
567
Read only

Former Member
0 Likes
567

HI,

check this.

REPORT Z_TEST_alv_variant .

TYPE-POOLS : SLIS.

PARAMETERS: ONE RADIOBUTTON GROUP G1 DEFAULT 'X',

TWO RADIOBUTTON GROUP G1.

DATA: BEGIN OF I_TAB OCCURS 0,

FIELD1 TYPE I,

FIELD2 TYPE I,

END OF I_TAB.

DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: L_VARIANT TYPE DISVARIANT,

LX_VARIANT LIKE DISVARIANT,

L_SAVE TYPE C,

L_EXIT(1) TYPE C.

SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-VAR.

PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

SELECTION-SCREEN END OF BLOCK 0.

INITIALIZATION.

L_SAVE = 'A'.

PERFORM VARIANT_INIT.

  • Get default variant

LX_VARIANT = L_VARIANT.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = L_SAVE

CHANGING

CS_VARIANT = LX_VARIANT

EXCEPTIONS

NOT_FOUND = 2.

IF SY-SUBRC = 0.

P_VARI = LX_VARIANT-VARIANT.

ENDIF.

  • Process on value request

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.

PERFORM F4_FOR_VARIANT.

I_TAB-FIELD1 = 19.

I_TAB-FIELD2 = 20.

APPEND I_TAB.

I_TAB-FIELD1 = 19.

I_TAB-FIELD2 = 20.

APPEND I_TAB.

I_TAB-FIELD1 = 19.

I_TAB-FIELD2 = 20.

APPEND I_TAB.

I_TAB-FIELD1 = 19.

I_TAB-FIELD2 = 20.

APPEND I_TAB.

I_TAB-FIELD1 = 19.

I_TAB-FIELD2 = 20.

APPEND I_TAB.

PERFORM INITIALIZE_FIELDCAT USING GT_FIELDCAT[].

PERFORM CALL_ALV TABLES I_TAB[]

USING GT_FIELDCAT.

&----


*& Form initialize_fieldcat

&----


  • text

----


  • -->P_GT_FIELDCAT[] text

----


FORM INITIALIZE_FIELDCAT USING L_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

LS_FIELDCAT-FIELDNAME = 'FIELD1'.

LS_FIELDCAT-KEY = 'X'.

LS_FIELDCAT-COL_POS = 1.

LS_FIELDCAT-SELTEXT_S = 'Work center'.

LS_FIELDCAT-SELTEXT_L = 'Work center'.

APPEND LS_FIELDCAT TO L_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'FIELD2'.

LS_FIELDCAT-KEY = ' '.

LS_FIELDCAT-COL_POS = 2.

LS_FIELDCAT-SELTEXT_S = 'Work center2'.

LS_FIELDCAT-SELTEXT_L = 'Work center2'.

APPEND LS_FIELDCAT TO L_FIELDCAT.

CLEAR LS_FIELDCAT.

ENDFORM. " initialize_fieldcat

&----


*& Form call_alv

&----


  • text

----


  • -->P_GT_FIELDCAT text

  • -->P_I_TAB text

----


FORM CALL_ALV TABLES P_TAB

USING P_GT_FIELDCAT .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IT_FIELDCAT = P_GT_FIELDCAT

I_DEFAULT = 'X'

IS_VARIANT = L_VARIANT

I_SAVE = L_SAVE

TABLES

T_OUTTAB = P_TAB[]

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " call_alv

&----


*& Form VARIANT_INIT

&----


  • text

----


FORM VARIANT_INIT.

*

CLEAR L_VARIANT.

L_VARIANT-REPORT = SY-REPID.

ENDFORM. " VARIANT_INIT

&----


*& Form variant_SELECTION_SCREEN

&----


  • text

----


FORM VARIANT_SELECTION_SCREEN .

IF NOT P_VARI IS INITIAL.

MOVE L_VARIANT TO LX_VARIANT.

MOVE P_VARI TO LX_VARIANT-VARIANT.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

I_SAVE = L_SAVE

CHANGING

CS_VARIANT = LX_VARIANT.

L_VARIANT = LX_VARIANT.

ELSE.

PERFORM VARIANT_INIT.

ENDIF.

ENDFORM. " variant_SELECTION_SCREEN

&----


*& Form F4_FOR_VARIANT

&----


  • text

----


FORM F4_FOR_VARIANT.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = L_VARIANT

I_SAVE = L_SAVE

IMPORTING

E_EXIT = L_EXIT

ES_VARIANT = LX_VARIANT

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 L_EXIT = SPACE.

P_VARI = LX_VARIANT-VARIANT.

ENDIF.

ENDIF.

ENDFORM. "F4_FOR_VARIANT

Regards,

Laxmi.