01-08-2008 12:15 PM
Hi.
I want sample code on ALV block list and Hierarchical list.
Regards
Sandeep.
01-08-2008 12:26 PM
types:
block----
-
displays a blocked list in one report countinue.
hierarchie------its shows hieararchie
for reference pls visit HIERARCHIES EXP.
*&----
*
*& Report Z50818_ALV_HIERARCHIAL_FINAL
*&
*&----
*
REPORT Z50818_ALV_HIERARCHIAL_FINAL MESSAGE-ID ZFAR.
ALV
TYPE-POOLS: SLIS.
*DB tables
TABLES: VBAP,VBAK.
DATA:GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV,
GT_EVENTS TYPE SLIS_T_EVENT,
G_REPID TYPE SY-REPID,
I_VBELN LIKE VBAP-VBELN,
I_VBELN1 LIKE VBAK-VBELN.
DATA: BEGIN OF GT_VBAK OCCURS 0.
INCLUDE STRUCTURE ZVBAK_STRUCTURE1.
DATA: BOX,
*WERT(4) TYPE P,
LIGHTS,
END OF GT_VBAK.
DATA: BEGIN OF GT_VBAP OCCURS 0.
INCLUDE STRUCTURE ZVBAP_STRUCTURE.
DATA: BOX,
LIGHTS,
END OF GT_VBAP.
*LIST HAEADER
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
SELECT-OPTIONS S_VBELN FOR VBAK-VBELN.
SELECTION-SCREEN SKIP 1.
Parameters
PARAMETERS: P_MAXROW TYPE I DEFAULT 50.
SELECTION-SCREEN SKIP 1.
Variante
SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK 0.
Layout
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-002.
PARAMETERS:
P_ZEBRA AS CHECKBOX DEFAULT ' ',
P_NOCOLH AS CHECKBOX DEFAULT ' ',
P_COLOPT AS CHECKBOX DEFAULT ' ',
P_KEYHOT AS CHECKBOX DEFAULT ' ',
P_NOINPT AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK A.
*LIGHTS OF RADIO BUTTONS
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-003.
PARAMETERS:
P_LIGHTN RADIOBUTTON GROUP LIG ,
P_LIGHTH RADIOBUTTON GROUP LIG ,
P_LIGHTI RADIOBUTTON GROUP LIG ,
P_LIGHTC AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK B.
*TOTALS
SELECTION-SCREEN BEGIN OF BLOCK C WITH FRAME TITLE TEXT-004.
PARAMETERS:
P_TOTONL AS CHECKBOX DEFAULT ' ',
P_TOTEXT(60).
P_STTEXT(60).
SELECTION-SCREEN END OF BLOCK C.
*CHECK BOXES
SELECTION-SCREEN BEGIN OF BLOCK D WITH FRAME TITLE TEXT-005.
PARAMETERS:
CHCKBOXN RADIOBUTTON GROUP BOX ,
CHCKBOXH RADIOBUTTON GROUP BOX ,
CHCKBOXI RADIOBUTTON GROUP BOX ,
P_GROUPB AS CHECKBOX DEFAULT ' ',
P_DETPOP AS CHECKBOX DEFAULT 'X'.
P_GROUPS AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK D.
DATA: G_BOXNAM TYPE SLIS_FIELDNAME VALUE 'BOX',
P_LIGNAM TYPE SLIS_FIELDNAME VALUE 'LIGHTS',
G_SAVE(1) TYPE C,
G_TABNAME_HEADER TYPE SLIS_TABNAME,
G_TABNAME_ITEM TYPE SLIS_TABNAME,
G_DEFAULT(1) TYPE C,
G_EXIT(1) TYPE C,
GX_VARIANT LIKE DISVARIANT,
G_VARIANT LIKE DISVARIANT.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
INITIALIZATION.
G_REPID = SY-REPID.
G_TABNAME_HEADER = 'GT_VBAK'.
G_TABNAME_ITEM = 'GT_VBAP'.
define keyinfo
CLEAR GS_KEYINFO.
GS_KEYINFO-HEADER01 = 'VBELN'.
GS_KEYINFO-ITEM01 = 'VBELN'.
GS_KEYINFO-HEADER02 = SPACE.
PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
PERFORM VARIANT_INIT.
GX_VARIANT = G_VARIANT.
Get default variant
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
Process on value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
PAI
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
START-OF-SELECTION.
PERFORM SELECTION.
END-OF-SELECTION.
PERFORM LAYOUT_BUILD USING GS_LAYOUT. "wg. Parameters
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
IT_SPECIAL_GROUPS = GT_SP_GROUP[]
I_SAVE = 'A'
IS_VARIANT = G_VARIANT
IT_EVENTS = GT_EVENTS[]
IT_EVENT_EXIT =
I_TABNAME_HEADER = G_TABNAME_HEADER
I_TABNAME_ITEM = G_TABNAME_ITEM
IS_KEYINFO = GS_KEYINFO
TABLES
T_OUTTAB_HEADER = GT_VBAK
T_OUTTAB_ITEM = GT_VBAP.
*&----
*
*& Form FIELDCAT_INIT
*&----
*
FORM FIELDCAT_INIT USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 1.
LS_FIELDCAT-FIELDNAME = 'VBELN'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'SALES DOCUMENT'.
LS_FIELDCAT-NO_SUM = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 2.
LS_FIELDCAT-FIELDNAME = 'POSNR'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'SALES DOCUMENT ITEM'.
LS_FIELDCAT-NO_SUM = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 3.
LS_FIELDCAT-FIELDNAME = 'MATNR'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'MATERIAL NUMBER'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 4.
LS_FIELDCAT-FIELDNAME = 'ABDAT'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'DATE'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = G_REPID
I_INTERNAL_TABNAME = G_TABNAME_HEADER
I_STRUCTURE_NAME = 'ZVBAK_STRUCTURE1'
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = G_REPID
I_INTERNAL_TABNAME = G_TABNAME_ITEM
I_STRUCTURE_NAME = 'ZVBAP_STRUCTURE'
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
ENDFORM. " FIELDCAT_INIT
*&----
*
*& Form EVENTTAB_BUILD
*&----
*
FORM EVENTTAB_BUILD USING P_GT_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_GT_EVENTS.
READ TABLE GT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO P_GT_EVENTS.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&----
*
*& Form COMMENT_BUILD
*&----
*
FORM COMMENT_BUILD USING P_GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
Listenüberschrift: Typ H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = TEXT-006.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
Kopfinfo: Typ S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = TEXT-007.
LS_LINE-INFO = TEXT-008.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
LS_LINE-KEY = TEXT-051.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
Aktionsinfo: Typ A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
LS_LINE-INFO = TEXT-009.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
ENDFORM. " COMMENT_BUILD
*&----
*
*& Form TOP_OF_PAGE
*&----
*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM. "TOP_OF_PAGE
*&----
*
*& Form F4_FOR_VARIANT
*&----
*
FORM F4_FOR_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE = 'A'
I_TABNAME_HEADER = G_TABNAME_HEADER
I_TABNAME_ITEM = G_TABNAME_ITEM
it_default_fieldcat =
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.
ELSE.
IF G_EXIT = SPACE.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
*&----
*
*& Form PAI_OF_SELECTION_SCREEN
*&----
*
FORM PAI_OF_SELECTION_SCREEN.
IF NOT P_VARI IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VARI TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM VARIANT_INIT.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN
*&----
*
*& Form VARIANT_INIT
*&----
*
FORM VARIANT_INIT.
CLEAR G_VARIANT.
G_VARIANT-REPORT = SY-REPID.
ENDFORM. " VARIANT_INIT
*&----
*
*& Form SELECTION
*&----
*
FORM SELECTION.
SELECT vbeln
ernam
vbtyp
spart FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE GT_VBAK
WHERE VBELN IN S_VBELN.
SELECT vbeln
posnr
matnr
abdat
FROM VBAP
INTO CORRESPONDING FIELDS OF TABLE GT_VBAP
WHERE VBELN IN S_VBELN.
LOOP AT GT_VBAK.
READ TABLE GT_VBAP WITH
KEY VBELN = GT_VBAK-VBELN.
IF SY-SUBRC NE 0.
DELETE GT_VBAP.
ENDIF.
ENDLOOP.
ENDFORM. " SELECTION
*&----
*
*& Form LAYOUT_BUILD
*&----
*
FORM LAYOUT_BUILD USING GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
IF P_LIGHTI = 'X'.
GS_LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
GS_LAYOUT-LIGHTS_TABNAME = G_TABNAME_ITEM.
GS_LAYOUT-LIGHTS_CONDENSE = P_LIGHTC.
ENDIF.
IF P_LIGHTH = 'X'.
GS_LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
GS_LAYOUT-LIGHTS_TABNAME = G_TABNAME_HEADER.
GS_LAYOUT-LIGHTS_CONDENSE = P_LIGHTC.
IF CHCKBOXN = 'X'.
GS_LAYOUT-BOX_FIELDNAME = SPACE.
GS_LAYOUT-BOX_TABNAME = SPACE.
ENDIF.
IF CHCKBOXH = 'X'.
GS_LAYOUT-BOX_FIELDNAME = G_BOXNAM.
GS_LAYOUT-BOX_TABNAME = G_TABNAME_HEADER.
ENDIF.
IF CHCKBOXI = 'X'.
GS_LAYOUT-BOX_FIELDNAME = G_BOXNAM.
GS_LAYOUT-BOX_TABNAME = G_TABNAME_ITEM.
ENDIF.
GS_LAYOUT-HEADER_TEXT = TEXT-011.
GS_LAYOUT-ITEM_TEXT = TEXT-012.
GS_LAYOUT-DEFAULT_ITEM = 'X'.
GS_LAYOUT-ZEBRA = P_ZEBRA.
GS_LAYOUT-COLWIDTH_OPTIMIZE = P_COLOPT.
GS_LAYOUT-NO_INPUT = P_NOINPT.
GS_LAYOUT-NO_COLHEAD = P_NOCOLH.
GS_LAYOUT-TOTALS_TEXT = P_TOTEXT.
GS_LAYOUT-SUBTOTALS_TEXT = P_STTEXT.
GS_LAYOUT-TOTALS_ONLY = P_TOTONL.
GS_LAYOUT-KEY_HOTSPOT = P_KEYHOT.
GS_LAYOUT-DETAIL_POPUP = P_DETPOP.
GS_LAYOUT-GROUP_CHANGE_EDIT = P_GROUPS.
GS_LAYOUT-GROUP_BUTTONS = SPACE.
ENDIF.
ENDFORM. " LAYOUT_BUILD
Call ABAP/4 List Viewer
JUST COPY CUT AND PASTE IN SE38 FOR BETTER UNDERSTANDING
rewards point if usefull. dont forgot....
01-08-2008 12:24 PM
Example for Hierarchical ALV:
http://www.geocities.com/mpioud/Z_ALV_HIERSEQ_LIST.html
Blocked ALV list allows you do have mulitple ALV lists in the screen output, one after the other. Check the sample here.
http://www.sap-basis-abap.com/abap/sample-program-on-block-lists.htm
If you want to display more than one IT in the ALV, the u can go for BLOCK ALV.
Here is the pusedo code on how to do it.
Lets say you have three internal tables, ITAB1, ITAB2 & ITAB3.
Now prepare field catlog for all the three internal tables.
Then,
call function 'REUSE_ALV_BLOCK_LIST_INIT'
exporting
i_callback_program = sy-repid.
Now pass the First internal table like this
call function 'REUSE_ALV_BLOCK_LIST_APPEND'
exporting
it_fieldcat = lt_fieldcat1
i_tabname = 'ITAB1'
tables
t_outtab = itab1
exceptions
program_error = 1
maximum_of_appends_reached = 2
others = 3.
Now ther second
call function 'REUSE_ALV_BLOCK_LIST_APPEND'
exporting
it_fieldcat = lt_fieldcat2
i_tabname = 'ITAB2'
tables
t_outtab = itab2
exceptions
program_error = 1
maximum_of_appends_reached = 2
others = 3.
Now the Third.
call function 'REUSE_ALV_BLOCK_LIST_APPEND'
exporting
it_fieldcat = lt_fieldcat3
i_tabname = 'ITAB3'
tables
t_outtab = itab3
exceptions
program_error = 1
maximum_of_appends_reached = 2
others = 3.
Now call the FM
call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
You will get the report.
reward points if usefull.
01-08-2008 12:26 PM
types:
block----
-
displays a blocked list in one report countinue.
hierarchie------its shows hieararchie
for reference pls visit HIERARCHIES EXP.
*&----
*
*& Report Z50818_ALV_HIERARCHIAL_FINAL
*&
*&----
*
REPORT Z50818_ALV_HIERARCHIAL_FINAL MESSAGE-ID ZFAR.
ALV
TYPE-POOLS: SLIS.
*DB tables
TABLES: VBAP,VBAK.
DATA:GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV,
GT_EVENTS TYPE SLIS_T_EVENT,
G_REPID TYPE SY-REPID,
I_VBELN LIKE VBAP-VBELN,
I_VBELN1 LIKE VBAK-VBELN.
DATA: BEGIN OF GT_VBAK OCCURS 0.
INCLUDE STRUCTURE ZVBAK_STRUCTURE1.
DATA: BOX,
*WERT(4) TYPE P,
LIGHTS,
END OF GT_VBAK.
DATA: BEGIN OF GT_VBAP OCCURS 0.
INCLUDE STRUCTURE ZVBAP_STRUCTURE.
DATA: BOX,
LIGHTS,
END OF GT_VBAP.
*LIST HAEADER
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
SELECT-OPTIONS S_VBELN FOR VBAK-VBELN.
SELECTION-SCREEN SKIP 1.
Parameters
PARAMETERS: P_MAXROW TYPE I DEFAULT 50.
SELECTION-SCREEN SKIP 1.
Variante
SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK 0.
Layout
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-002.
PARAMETERS:
P_ZEBRA AS CHECKBOX DEFAULT ' ',
P_NOCOLH AS CHECKBOX DEFAULT ' ',
P_COLOPT AS CHECKBOX DEFAULT ' ',
P_KEYHOT AS CHECKBOX DEFAULT ' ',
P_NOINPT AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK A.
*LIGHTS OF RADIO BUTTONS
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-003.
PARAMETERS:
P_LIGHTN RADIOBUTTON GROUP LIG ,
P_LIGHTH RADIOBUTTON GROUP LIG ,
P_LIGHTI RADIOBUTTON GROUP LIG ,
P_LIGHTC AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK B.
*TOTALS
SELECTION-SCREEN BEGIN OF BLOCK C WITH FRAME TITLE TEXT-004.
PARAMETERS:
P_TOTONL AS CHECKBOX DEFAULT ' ',
P_TOTEXT(60).
P_STTEXT(60).
SELECTION-SCREEN END OF BLOCK C.
*CHECK BOXES
SELECTION-SCREEN BEGIN OF BLOCK D WITH FRAME TITLE TEXT-005.
PARAMETERS:
CHCKBOXN RADIOBUTTON GROUP BOX ,
CHCKBOXH RADIOBUTTON GROUP BOX ,
CHCKBOXI RADIOBUTTON GROUP BOX ,
P_GROUPB AS CHECKBOX DEFAULT ' ',
P_DETPOP AS CHECKBOX DEFAULT 'X'.
P_GROUPS AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK D.
DATA: G_BOXNAM TYPE SLIS_FIELDNAME VALUE 'BOX',
P_LIGNAM TYPE SLIS_FIELDNAME VALUE 'LIGHTS',
G_SAVE(1) TYPE C,
G_TABNAME_HEADER TYPE SLIS_TABNAME,
G_TABNAME_ITEM TYPE SLIS_TABNAME,
G_DEFAULT(1) TYPE C,
G_EXIT(1) TYPE C,
GX_VARIANT LIKE DISVARIANT,
G_VARIANT LIKE DISVARIANT.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
INITIALIZATION.
G_REPID = SY-REPID.
G_TABNAME_HEADER = 'GT_VBAK'.
G_TABNAME_ITEM = 'GT_VBAP'.
define keyinfo
CLEAR GS_KEYINFO.
GS_KEYINFO-HEADER01 = 'VBELN'.
GS_KEYINFO-ITEM01 = 'VBELN'.
GS_KEYINFO-HEADER02 = SPACE.
PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
PERFORM VARIANT_INIT.
GX_VARIANT = G_VARIANT.
Get default variant
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
Process on value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
PAI
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
START-OF-SELECTION.
PERFORM SELECTION.
END-OF-SELECTION.
PERFORM LAYOUT_BUILD USING GS_LAYOUT. "wg. Parameters
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
IT_SPECIAL_GROUPS = GT_SP_GROUP[]
I_SAVE = 'A'
IS_VARIANT = G_VARIANT
IT_EVENTS = GT_EVENTS[]
IT_EVENT_EXIT =
I_TABNAME_HEADER = G_TABNAME_HEADER
I_TABNAME_ITEM = G_TABNAME_ITEM
IS_KEYINFO = GS_KEYINFO
TABLES
T_OUTTAB_HEADER = GT_VBAK
T_OUTTAB_ITEM = GT_VBAP.
*&----
*
*& Form FIELDCAT_INIT
*&----
*
FORM FIELDCAT_INIT USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 1.
LS_FIELDCAT-FIELDNAME = 'VBELN'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'SALES DOCUMENT'.
LS_FIELDCAT-NO_SUM = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 2.
LS_FIELDCAT-FIELDNAME = 'POSNR'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'SALES DOCUMENT ITEM'.
LS_FIELDCAT-NO_SUM = 'X'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 3.
LS_FIELDCAT-FIELDNAME = 'MATNR'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'MATERIAL NUMBER'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = 4.
LS_FIELDCAT-FIELDNAME = 'ABDAT'.
LS_FIELDCAT-TABNAME = G_TABNAME_HEADER.
LS_FIELDCAT-REF_TABNAME = 'VBAK'.
LS_FIELDCAT-SELTEXT_L = 'DATE'.
APPEND LS_FIELDCAT TO GT_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = G_REPID
I_INTERNAL_TABNAME = G_TABNAME_HEADER
I_STRUCTURE_NAME = 'ZVBAK_STRUCTURE1'
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = G_REPID
I_INTERNAL_TABNAME = G_TABNAME_ITEM
I_STRUCTURE_NAME = 'ZVBAP_STRUCTURE'
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
ENDFORM. " FIELDCAT_INIT
*&----
*
*& Form EVENTTAB_BUILD
*&----
*
FORM EVENTTAB_BUILD USING P_GT_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_GT_EVENTS.
READ TABLE GT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO P_GT_EVENTS.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&----
*
*& Form COMMENT_BUILD
*&----
*
FORM COMMENT_BUILD USING P_GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
Listenüberschrift: Typ H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = TEXT-006.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
Kopfinfo: Typ S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = TEXT-007.
LS_LINE-INFO = TEXT-008.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
LS_LINE-KEY = TEXT-051.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
Aktionsinfo: Typ A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
LS_LINE-INFO = TEXT-009.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
ENDFORM. " COMMENT_BUILD
*&----
*
*& Form TOP_OF_PAGE
*&----
*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM. "TOP_OF_PAGE
*&----
*
*& Form F4_FOR_VARIANT
*&----
*
FORM F4_FOR_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE = 'A'
I_TABNAME_HEADER = G_TABNAME_HEADER
I_TABNAME_ITEM = G_TABNAME_ITEM
it_default_fieldcat =
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.
ELSE.
IF G_EXIT = SPACE.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
*&----
*
*& Form PAI_OF_SELECTION_SCREEN
*&----
*
FORM PAI_OF_SELECTION_SCREEN.
IF NOT P_VARI IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VARI TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM VARIANT_INIT.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN
*&----
*
*& Form VARIANT_INIT
*&----
*
FORM VARIANT_INIT.
CLEAR G_VARIANT.
G_VARIANT-REPORT = SY-REPID.
ENDFORM. " VARIANT_INIT
*&----
*
*& Form SELECTION
*&----
*
FORM SELECTION.
SELECT vbeln
ernam
vbtyp
spart FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE GT_VBAK
WHERE VBELN IN S_VBELN.
SELECT vbeln
posnr
matnr
abdat
FROM VBAP
INTO CORRESPONDING FIELDS OF TABLE GT_VBAP
WHERE VBELN IN S_VBELN.
LOOP AT GT_VBAK.
READ TABLE GT_VBAP WITH
KEY VBELN = GT_VBAK-VBELN.
IF SY-SUBRC NE 0.
DELETE GT_VBAP.
ENDIF.
ENDLOOP.
ENDFORM. " SELECTION
*&----
*
*& Form LAYOUT_BUILD
*&----
*
FORM LAYOUT_BUILD USING GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
IF P_LIGHTI = 'X'.
GS_LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
GS_LAYOUT-LIGHTS_TABNAME = G_TABNAME_ITEM.
GS_LAYOUT-LIGHTS_CONDENSE = P_LIGHTC.
ENDIF.
IF P_LIGHTH = 'X'.
GS_LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
GS_LAYOUT-LIGHTS_TABNAME = G_TABNAME_HEADER.
GS_LAYOUT-LIGHTS_CONDENSE = P_LIGHTC.
IF CHCKBOXN = 'X'.
GS_LAYOUT-BOX_FIELDNAME = SPACE.
GS_LAYOUT-BOX_TABNAME = SPACE.
ENDIF.
IF CHCKBOXH = 'X'.
GS_LAYOUT-BOX_FIELDNAME = G_BOXNAM.
GS_LAYOUT-BOX_TABNAME = G_TABNAME_HEADER.
ENDIF.
IF CHCKBOXI = 'X'.
GS_LAYOUT-BOX_FIELDNAME = G_BOXNAM.
GS_LAYOUT-BOX_TABNAME = G_TABNAME_ITEM.
ENDIF.
GS_LAYOUT-HEADER_TEXT = TEXT-011.
GS_LAYOUT-ITEM_TEXT = TEXT-012.
GS_LAYOUT-DEFAULT_ITEM = 'X'.
GS_LAYOUT-ZEBRA = P_ZEBRA.
GS_LAYOUT-COLWIDTH_OPTIMIZE = P_COLOPT.
GS_LAYOUT-NO_INPUT = P_NOINPT.
GS_LAYOUT-NO_COLHEAD = P_NOCOLH.
GS_LAYOUT-TOTALS_TEXT = P_TOTEXT.
GS_LAYOUT-SUBTOTALS_TEXT = P_STTEXT.
GS_LAYOUT-TOTALS_ONLY = P_TOTONL.
GS_LAYOUT-KEY_HOTSPOT = P_KEYHOT.
GS_LAYOUT-DETAIL_POPUP = P_DETPOP.
GS_LAYOUT-GROUP_CHANGE_EDIT = P_GROUPS.
GS_LAYOUT-GROUP_BUTTONS = SPACE.
ENDIF.
ENDFORM. " LAYOUT_BUILD
Call ABAP/4 List Viewer
JUST COPY CUT AND PASTE IN SE38 FOR BETTER UNDERSTANDING
rewards point if usefull. dont forgot....
01-08-2008 12:28 PM
for blocked alv pls refer below...... hope this will use full for u reward points if usefull dont forgot
&----
*& Report Z50818_BLOCK_ALV_EXAMPLE1
*&
&----
*&
*&
&----
REPORT Z50818_BLOCK_ALV_EXAMPLE1.
----
Declarations for BLOCK ALV DISPLAY
----
*--type pools
TYPE-POOLS:slis.
DATA:x_layout TYPE slis_layout_alv,
t_field TYPE slis_t_fieldcat_alv,
*--field catalog
x_fldcat LIKE LINE OF t_field,
*--to hold all the events
t_events TYPE slis_t_event,
x_events TYPE slis_alv_event,
t_sort TYPE slis_t_sortinfo_alv,
x_sort LIKE LINE OF t_sort ,
*--Print Layout
x_print_layout TYPE slis_print_alv.
*----Macro to add field catalog.
*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN
DEFINE add_catalog.
clear x_fldcat.
x_fldcat-fieldname = &1.
x_fldcat-seltext_m = &2.
x_fldcat-outputlen = &3.
x_fldcat-tech = &4.
x_fldcat-col_pos = &5.
x_fldcat-no_zero = 'X'.
x_fldcat-ddictxt = 'M'.
x_fldcat-datatype = &6.
x_fldcat-ddic_outputlen = &7.
if &6 = 'N'.
x_fldcat-lzero = 'X'.
endif.
*--build field catalog
append x_fldcat to t_field.
END-OF-DEFINITION.
*----- data declerations.
data: v_repid like sy-repid.
data: begin of itab occurs 0,
matnr like mara-matnr,
ernam like mara-ernam,
meins like mara-meins,
end of itab.
data: begin of jtab occurs 0,
matnr like makt-matnr,
maktx like makt-maktx,
end of jtab.
select matnr ernam meins
up to 20 rows
from mara
into table itab.
select matnr maktx
up to 20 rows
from makt
into table jtab.
v_repid = sy-repid.
*DISPLAY alv
Initialize Block
call function 'REUSE_ALV_BLOCK_LIST_INIT'
exporting
i_callback_program = v_repid.
*Block 1:
*INITIALIZE
refresh t_field. clear t_field.
refresh t_events.
*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN
add_catalog:
'MATNR' 'Material' '18' '' '1' 'C' '18',
'ERNAM' 'Created By' '12' '' '2' 'C' '12',
'MEINS' 'Unit' '5' '' '3' 'C' '3'.
*--build table for events.
x_events-form = 'TOP_OF_LIST1'.
x_events-name = slis_ev_top_of_list.
append x_events to t_events.
call function 'REUSE_ALV_BLOCK_LIST_APPEND'
exporting
is_layout = x_layout
it_fieldcat = t_field
i_tabname = 'ITAB'
it_events = t_events
it_sort = t_sort
tables
t_outtab = itab
exceptions
program_error = 1
maximum_of_appends_reached = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
*--BLOCK 2(SUMMARY REPORT)
*INITIALIZE
refresh t_field. clear t_field.
refresh t_events.
*field "text "length "tech "COL_POS "DATATYPE "DDIC_OUTPUTLEN
add_catalog:
'MATNR' 'Material' '20' '' '1' 'C' '18',
'MAKTX' 'Description' '40' '' '2' 'C' '40'.
*--build table for events.
x_events-form = 'TOP_OF_LIST2'.
x_events-name = slis_ev_top_of_list.
append x_events to t_events.
Append table block.
call function 'REUSE_ALV_BLOCK_LIST_APPEND'
exporting
is_layout = x_layout
it_fieldcat = t_field
i_tabname = 'JTAB'
it_events = t_events
tables
t_outtab = jtab
exceptions
program_error = 1
maximum_of_appends_reached = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
*--CALL FM TO DISPLAY THE BLOCK REPORT.
call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'
exporting
is_print = x_print_layout
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.
form top_of_list1.
skip 1.
write: 10 'List 1',
/5 '----
'.
skip 1.
format reset.
endform.
form top_of_list2.
skip 1.
write: 10 'List 2',
/5 '----
'.
skip 1.
format reset.
endform.