01-22-2007 11:42 AM
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
01-22-2007 11:55 AM
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
01-22-2007 11:55 AM
Hi,
Check the standard ALV program examples,
BALV1F01
BALVHD01
BALVHT01
BALVSD01
BALVST01
BALVST02
BALVST02_GRID
Please reward points it it helps.
Regards
01-22-2007 11:56 AM
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
01-22-2007 11:59 AM
<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