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: 

Information regarding varient function modules in ALV

Former Member
0 Kudos

Hi,

Any body having info on use of varient function modules in ALV reports with examples. like

<b>1.REUSE_ALV_VARIANT_DEFAULT_GET

2.REUSE_ALV_VARIANT_F4</b> etc.

Thanks&Regards

Giridhar Karnam

4 REPLIES 4

Former Member
0 Kudos

Hi giridhar,

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.

PARAMETERS P_LAYOUT TYPE DISVARIANT-VARIANT.

SELECTION-SCREEN END OF BLOCK B3.

INITIALIZATION.

*--Initialize

  • Initialize to default layout if one exist.

WA_VARIANT-REPORT = SY-REPID.

WA_VARIANT-USERNAME = SY-UNAME.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = C_ALL

CHANGING

CS_VARIANT = WA_VARIANT

EXCEPTIONS

WRONG_INPUT = 1

NOT_FOUND = 2

PROGRAM_ERROR = 3

OTHERS = 4.

IF SY-SUBRC = 0.

P_LAYOUT = WA_VARIANT-VARIANT.

ENDIF.

*-- On value request for varaint

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAYOUT.

DATA: TL_DYNPFIELDS TYPE TABLE OF DYNPREAD,

WL_EXIT TYPE C,

WAL_VARIANT LIKE WA_VARIANT,

WAL_DYNPFIELDS TYPE DYNPREAD.

  • Get values from the selection screen to determine layout set

WAL_DYNPFIELDS-FIELDNAME = 'P_LAYOUT'.

APPEND WAL_DYNPFIELDS TO TL_DYNPFIELDS.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = SY-CPROG

DYNUMB = '1000'

TRANSLATE_TO_UPPER = C_CHECK

TABLES

DYNPFIELDS = TL_DYNPFIELDS.

  • Get the variant (we have only 1 entry)

READ TABLE TL_DYNPFIELDS INTO WAL_DYNPFIELDS INDEX 1.

IF SY-SUBRC EQ 0.

WA_VARIANT-VARIANT = WAL_DYNPFIELDS-FIELDVALUE.

ENDIF.

WA_VARIANT-REPORT = SY-REPID.

WA_VARIANT-USERNAME = SY-UNAME.

  • Invoke function to provide drop down entries

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = WA_VARIANT

I_SAVE = C_ALL

IMPORTING

E_EXIT = WL_EXIT

ES_VARIANT = WAL_VARIANT

EXCEPTIONS

NOT_FOUND = 1

PROGRAM_ERROR = 2

OTHERS = 3.

IF SY-SUBRC IS INITIAL.

IF WL_EXIT IS INITIAL.

P_LAYOUT = WAL_VARIANT-VARIANT.

WA_VARIANT = WAL_VARIANT.

ENDIF.

ELSE.

MESSAGE I208(00) WITH 'No layouts found'(022).

ENDIF.

FREE: TL_DYNPFIELDS.

http://sap.ittoolbox.com/code/archives.asp?a=s&d=3619

http://www.sap-img.com/abap/use-simple-alv-functions-to-make-reporting-easy.htm

Former Member
0 Kudos

Hi,

Check the standard ALV program examples,

BALV1F01

BALVHD01

BALVHT01

BALVSD01

BALVST01

BALVST02

BALVST02_GRID

Please reward points it it helps.

Regards

Former Member
0 Kudos

Hi

They are fms to manage the ALV output variant as parameter in selection-screen:

"1.REUSE_ALV_VARIANT_DEFAULT_GET: to get the default variant:


PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

DATA: GX_VARIANT LIKE DISVARIANT,
           G_VARIANT  LIKE DISVARIANT,
           G_SAVE       TYPE C,
           G_EXIT          TYPE C

INITIALIZATION.

  G_SAVE     = 'A'.

  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_VARIANT_F4: to run the search help

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.

"3. REUSE_ALV_VARIANT_EXISTENCE: to check the variant

AT SELECTION-SCREEN.
  IF NOT P_VARI IS INITIAL.
    MOVE G_VARIANT TO GX_VARIANT.
    MOVE: P_VARI         TO GX_VARIANT-VARIANT,
          SY-REPID       TO GX_VARIANT-REPORT.
    CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
         EXPORTING
              I_SAVE     = G_SAVE
         CHANGING
              CS_VARIANT = GX_VARIANT.
    G_VARIANT = GX_VARIANT.
  ENDIF.

Max

Former Member
0 Kudos

<b>REUSE_ALV_VARIANT_DEFAULT_GET</b>

You will have layouts saved with your ALV Grid / List. This function module will return the layout name which is marked as default for the ALV list / grid.

<b>REUSE_ALV_VARIANT_F4</b>

This function will show a pop up with the list of layout associated with a ALV grid / list. The user can select any one from the list.

Regards,

Ravi

Note - Please mark all the helpful answers