‎2008 Dec 02 11:19 AM
Hi all.
I want to make a report based on customer information in alv list..
In this list output is like..
customer no. : 1
customer name. :aaa
comes as top of alv.
detail of defined customer 1.
than
customer no. : 2
customer name. :rrr
comes as top of alv.
detail of defined customer 2.
and same as others.
I tried it with
REUSE_ALV_BLOCK_LIST_INIT,
REUSE_ALV_BLOCK_LIST_APPEND,
REUSE_ALV_BLOCK_LIST_DISPLAY.
But i can't get proper output . plz help me...
.
Edited by: ankita patel on Dec 2, 2008 12:19 PM
‎2008 Dec 03 10:30 AM
REPORT TEST NO STANDARD PAGE HEADING.
*"General Data
TYPE-POOLS: SLIS.
DATA: GT_OUTTABH TYPE SCARR OCCURS 0 WITH HEADER LINE,
GT_OUTTAB TYPE SFLIGHT OCCURS 0 WITH HEADER LINE,
GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE ,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV,
G_REPID LIKE SY-REPID.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE .
DATA:
GT_EVENTS TYPE SLIS_T_EVENT,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
G_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
G_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
G_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',
G_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.
INITIALIZATION.
define keyinfo
CLEAR GS_KEYINFO.
GS_KEYINFO-HEADER01 = 'CARRID'.
GS_KEYINFO-ITEM01 = 'CARRID'.
GS_KEYINFO-HEADER02 = SPACE.
GS_KEYINFO-ITEM02 = 'CONNID'.
G_REPID = SY-REPID.
GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.
GT_SORT-FIELDNAME = 'CURRCODE'.
GT_SORT-tabNAME = '1'.
GT_SORT-SPOS = 1.
GT_SORT-UP = 'X'.
GT_SORT-SUBTOT = 'X'.
GT_SORT-GROUP = '*'.
APPEND GT_SORT.
GT_SORT-FIELDNAME = 'CARRID'.
GT_SORT-tabNAME = '1'.
GT_SORT-SPOS = 2.
GT_SORT-UP = 'X'.
GT_SORT-SUBTOT = 'X'.
GT_SORT-GROUP = ' '.
APPEND GT_SORT.
GT_FIELDCAT-FIELDNAME = 'PRICE'.
GT_FIELDCAT-tabname = '2'.
GT_FIELDCAT-outputlen = 12.
GT_FIELDCAT-DO_SUM = 'X'.
APPEND GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'CARRID'.
GT_FIELDCAT-tabname = '1'.
GT_FIELDCAT-outputlen = 6.
GT_FIELDCAT-DO_SUM = space.
APPEND GT_FIELDCAT.
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
START-OF-SELECTION.
SELECT * FROM SCARR INTO CORRESPONDING FIELDS
OF TABLE GT_OUTTABH.
SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS
OF TABLE GT_OUTTAB.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_STRUCTURE_NAME_HEADER = 'SCARR'
I_STRUCTURE_NAME_ITEM = 'SFLIGHT'
IS_KEYINFO = GS_KEYINFO
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
I_TABNAME_HEADER = '1'
I_TABNAME_ITEM = '2'
IT_EVENTS = GT_EVENTS[]
IT_SORT = GT_SORT[]
TABLES
T_OUTTAB_HEADER = GT_outtabh
T_OUTTAB_ITEM = GT_outtab.
----
FORM EVENTTAB_BUILD *
----
FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.
*"Registration of events to happen during list display
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = RT_EVENTS.
READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO RT_EVENTS.
ENDIF.
ENDFORM.
----
FORM TOP_OF_PAGE *
----
FORM TOP_OF_PAGE.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
*
REFRESH GT_LIST_TOP_OF_PAGE.
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = '<Header>'.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
STATUS LINE: TYPE S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = '<Status1>'.
LS_LINE-INFO = GT_OUTTABH-CURRCODE.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
‎2008 Dec 02 11:22 AM
You need to triger top of page for every customer.
Regards
Neha
‎2008 Dec 02 11:23 AM
try with this 'REUSE_ALV_LIST_DISPLAY'
eg:
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = GS_EXTRACT1-REPORT
I_STRUCTURE_NAME = 'SFLIGHT'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_SFLIGHT.
‎2008 Dec 02 11:28 AM
‎2008 Dec 02 11:28 AM
‎2008 Dec 03 10:30 AM
REPORT TEST NO STANDARD PAGE HEADING.
*"General Data
TYPE-POOLS: SLIS.
DATA: GT_OUTTABH TYPE SCARR OCCURS 0 WITH HEADER LINE,
GT_OUTTAB TYPE SFLIGHT OCCURS 0 WITH HEADER LINE,
GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE ,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV,
G_REPID LIKE SY-REPID.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE .
DATA:
GT_EVENTS TYPE SLIS_T_EVENT,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
G_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
G_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
G_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',
G_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.
INITIALIZATION.
define keyinfo
CLEAR GS_KEYINFO.
GS_KEYINFO-HEADER01 = 'CARRID'.
GS_KEYINFO-ITEM01 = 'CARRID'.
GS_KEYINFO-HEADER02 = SPACE.
GS_KEYINFO-ITEM02 = 'CONNID'.
G_REPID = SY-REPID.
GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.
GT_SORT-FIELDNAME = 'CURRCODE'.
GT_SORT-tabNAME = '1'.
GT_SORT-SPOS = 1.
GT_SORT-UP = 'X'.
GT_SORT-SUBTOT = 'X'.
GT_SORT-GROUP = '*'.
APPEND GT_SORT.
GT_SORT-FIELDNAME = 'CARRID'.
GT_SORT-tabNAME = '1'.
GT_SORT-SPOS = 2.
GT_SORT-UP = 'X'.
GT_SORT-SUBTOT = 'X'.
GT_SORT-GROUP = ' '.
APPEND GT_SORT.
GT_FIELDCAT-FIELDNAME = 'PRICE'.
GT_FIELDCAT-tabname = '2'.
GT_FIELDCAT-outputlen = 12.
GT_FIELDCAT-DO_SUM = 'X'.
APPEND GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = 'CARRID'.
GT_FIELDCAT-tabname = '1'.
GT_FIELDCAT-outputlen = 6.
GT_FIELDCAT-DO_SUM = space.
APPEND GT_FIELDCAT.
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
START-OF-SELECTION.
SELECT * FROM SCARR INTO CORRESPONDING FIELDS
OF TABLE GT_OUTTABH.
SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS
OF TABLE GT_OUTTAB.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_STRUCTURE_NAME_HEADER = 'SCARR'
I_STRUCTURE_NAME_ITEM = 'SFLIGHT'
IS_KEYINFO = GS_KEYINFO
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
I_TABNAME_HEADER = '1'
I_TABNAME_ITEM = '2'
IT_EVENTS = GT_EVENTS[]
IT_SORT = GT_SORT[]
TABLES
T_OUTTAB_HEADER = GT_outtabh
T_OUTTAB_ITEM = GT_outtab.
----
FORM EVENTTAB_BUILD *
----
FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.
*"Registration of events to happen during list display
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = RT_EVENTS.
READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO RT_EVENTS.
ENDIF.
ENDFORM.
----
FORM TOP_OF_PAGE *
----
FORM TOP_OF_PAGE.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
*
REFRESH GT_LIST_TOP_OF_PAGE.
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = '<Header>'.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
STATUS LINE: TYPE S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = '<Status1>'.
LS_LINE-INFO = GT_OUTTABH-CURRCODE.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
‎2008 Dec 03 10:32 AM
Hi,
Try to create bloack alv. Refer Below code
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = v_repid.
wa_layout1-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = wa_layout1
it_fieldcat = it_fieldcat[]
i_tabname = 'it_final'
it_events = it_events
TABLES
t_outtab = it_final
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.
LOOP AT it_fieldcat INTO wa_fieldcat.
lv_index = sy-tabix.
IF wa_fieldcat-fieldname = 'ERDAT'.
wa_fieldcat-fieldname = 'TITLE'.
wa_fieldcat-seltext_m = text-026.
wa_fieldcat-outputlen = 10.
ENDIF.
MODIFY it_fieldcat FROM wa_fieldcat INDEX lv_index TRANSPORTING
fieldname seltext_m outputlen.
CLEAR : wa_fieldcat.
ENDLOOP.
wa_layout2-no_colhead = 'X'.
wa_layout2-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = wa_layout2
it_fieldcat = it_fieldcat[]
i_tabname = 'it_total'
it_events = it_event1
TABLES
t_outtab = it_total
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.
wa_layout3-no_colhead = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = wa_layout3
it_fieldcat = it_fieldcat2[]
i_tabname = 'it_ship'
it_events = it_event2
TABLES
t_outtab = it_ship
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.
IF NOT it_final IS INITIAL OR
NOT it_total IS INITIAL OR
NOT it_ship IS INITIAL.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
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.
ENDIF.
Regards,
Prashant
‎2008 Dec 03 10:32 AM
Hi,
Try to create bloack alv. Refer Below code
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = v_repid.
wa_layout1-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = wa_layout1
it_fieldcat = it_fieldcat[]
i_tabname = 'it_final'
it_events = it_events
TABLES
t_outtab = it_final
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.
LOOP AT it_fieldcat INTO wa_fieldcat.
lv_index = sy-tabix.
IF wa_fieldcat-fieldname = 'ERDAT'.
wa_fieldcat-fieldname = 'TITLE'.
wa_fieldcat-seltext_m = text-026.
wa_fieldcat-outputlen = 10.
ENDIF.
MODIFY it_fieldcat FROM wa_fieldcat INDEX lv_index TRANSPORTING
fieldname seltext_m outputlen.
CLEAR : wa_fieldcat.
ENDLOOP.
wa_layout2-no_colhead = 'X'.
wa_layout2-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = wa_layout2
it_fieldcat = it_fieldcat[]
i_tabname = 'it_total'
it_events = it_event1
TABLES
t_outtab = it_total
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.
wa_layout3-no_colhead = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = wa_layout3
it_fieldcat = it_fieldcat2[]
i_tabname = 'it_ship'
it_events = it_event2
TABLES
t_outtab = it_ship
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.
IF NOT it_final IS INITIAL OR
NOT it_total IS INITIAL OR
NOT it_ship IS INITIAL.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
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.
ENDIF.
Regards,
Prashant
‎2008 Dec 03 10:38 AM
hi you can use 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' function module .
you can take two internal table one is header and other the detail information and pass to the function module and you can get the data as required by you.
so many standard program are there you can go and look into the code.
‎2008 Dec 03 11:09 AM
hello Ankita,
Please go though this lick.
I am sure.This link will solve your problem.
http://help-abap.blogspot.com/search/label/SALV%20Tutorial.
Thanks,
Tarangi