2011 Aug 14 3:24 AM
Hi , I develop a report by using ALV List sort by plant. When the plant changing, it will display on header (TOP_OF_PAGE) .e.g.
Plant 1000
Item 1
item 2
item 3
Plant 2000
item 1
item 2
item 3.
I menage to let my report display as above, But when user Sort the report by 1 of the field in the item, the top of page will not function and both plant data will merge together and only 1 top of page display. Am I missing something on this?
FORM display_alv .
CLEAR: gt_fieldcat,
gwa_layout,
gt_sort,
gt_events.
gv_repid = sy-repid.
PERFORM build_fieldcat USING:
col_pos fieldname ref_fieldname tabname ref_tabname hotspot seltext_l
1 'LGORT' 'LGORT' 'GT_FINAL' 'IKPF' '' '',
2 'LGOBE' 'LGOBE' 'GT_FINAL' 'T001l' '' '',
3 'MATKL' 'MATKL' 'GT_FINAL' 'MARA' '' '',
4 'WGBEZ' 'WGBEZ' 'GT_FINAL' 'T023T' '' '',
5 'ITMNO' 'ZEILE' 'GT_FINAL' 'ISEG' '' '',
6 'MAKTX' 'MAKTX' 'GT_FINAL' 'MAKT' '' '',
7 'MATNR' 'MATNR' 'GT_FINAL' 'ISEG' '' '',
8 'BTEXT' 'BTEXT' 'GT_FINAL' 'T064B' '' '',
9 'IBLNR' 'IBLNR' 'GT_FINAL' 'ISEG' '' '',
10 'ZEILI' 'ZEILE' 'GT_FINAL' 'ISEG' '' 'Phys. Line No.',
11 'ERFME' 'ERFME' 'GT_FINAL' 'ISEG' '' '',
12 'PCCNT' 'ERFMG' 'GT_FINAL' 'ISEG' '' '',
13 'ERFMG' 'ERFMG' 'GT_FINAL' 'ISEG' '' ''
.
*//Build ALV layout
CLEAR gwa_layout.
gwa_layout-colwidth_optimize = 'X'.
gwa_layout-zebra = 'X'.
PERFORM build_events.
PERFORM build_sort.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = gv_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
is_layout = gwa_layout
it_fieldcat = gt_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sort
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
i_save = 'A'
IS_VARIANT =
it_events = gt_events
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_final
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. " DISPLAY_ALV
FORM build_sort.
DATA: lwa_sort LIKE LINE OF gt_sort.
CLEAR lwa_sort.
lwa_sort-spos = 1.
lwa_sort-fieldname = 'WERKS'.
lwa_sort-tabname = 'GT_FINAL'.
lwa_sort-up = 'X'.
lwa_sort-group = '*'.
APPEND lwa_sort TO gt_sort.
CLEAR lwa_sort.
ENDFORM. "BUILD_SORT
FORM build_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
et_events = gt_events
EXCEPTIONS
list_type_wrong = 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.
*
READ TABLE gt_events INTO gwa_event WITH KEY name = 'TOP_OF_PAGE'.
gwa_event-form = 'TOP_OF_PAGE'.
MODIFY gt_events FROM gwa_event INDEX sy-tabix.
CLEAR gwa_event.
ENDFORM. "SET_EVENTS
FORM TOP_OF_PAGE.
PERFORM header_simple IN PROGRAM saplkkbl USING lwa_final.
NEW-LINE NO-SCROLLING.
WRITE:/ 'Plant:'(d01),
25 lwa_final-werks,
ENDFORM.
I try to google it but not manage to find it. Hope can get help from here. thank you.
Hi , I develop a report by using ALV List sort by plant. When the plant changing, it will display on header (TOP_OF_PAGE) .e.g.
Plant 1000
Item 1
item 2
item 3
Plant 2000
item 1
item 2
item 3.
I menage to let my report display as above, But when user Sort the report by 1 of the field in the item, the top of page will not function and both plant data will merge together and only 1 top of page display. Am I missing something on this?
FORM display_alv .
CLEAR: gt_fieldcat,
gwa_layout,
gt_sort,
gt_events.
gv_repid = sy-repid.
PERFORM build_fieldcat USING:
col_pos fieldname ref_fieldname tabname ref_tabname hotspot seltext_l
1 'LGORT' 'LGORT' 'GT_FINAL' 'IKPF' '' '',
2 'LGOBE' 'LGOBE' 'GT_FINAL' 'T001l' '' '',
3 'MATKL' 'MATKL' 'GT_FINAL' 'MARA' '' '',
4 'WGBEZ' 'WGBEZ' 'GT_FINAL' 'T023T' '' '',
5 'ITMNO' 'ZEILE' 'GT_FINAL' 'ISEG' '' '',
6 'MAKTX' 'MAKTX' 'GT_FINAL' 'MAKT' '' '',
7 'MATNR' 'MATNR' 'GT_FINAL' 'ISEG' '' '',
8 'BTEXT' 'BTEXT' 'GT_FINAL' 'T064B' '' '',
9 'IBLNR' 'IBLNR' 'GT_FINAL' 'ISEG' '' '',
10 'ZEILI' 'ZEILE' 'GT_FINAL' 'ISEG' '' 'Phys. Line No.',
11 'ERFME' 'ERFME' 'GT_FINAL' 'ISEG' '' '',
12 'PCCNT' 'ERFMG' 'GT_FINAL' 'ISEG' '' '',
13 'ERFMG' 'ERFMG' 'GT_FINAL' 'ISEG' '' ''
.
*//Build ALV layout
CLEAR gwa_layout.
gwa_layout-colwidth_optimize = 'X'.
gwa_layout-zebra = 'X'.
PERFORM build_events.
PERFORM build_sort.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = gv_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
is_layout = gwa_layout
it_fieldcat = gt_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sort
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
i_save = 'A'
IS_VARIANT =
it_events = gt_events
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_final
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. " DISPLAY_ALV
FORM build_sort.
DATA: lwa_sort LIKE LINE OF gt_sort.
CLEAR lwa_sort.
lwa_sort-spos = 1.
lwa_sort-fieldname = 'WERKS'.
lwa_sort-tabname = 'GT_FINAL'.
lwa_sort-up = 'X'.
lwa_sort-group = '*'.
APPEND lwa_sort TO gt_sort.
CLEAR lwa_sort.
ENDFORM. "BUILD_SORT
FORM build_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
et_events = gt_events
EXCEPTIONS
list_type_wrong = 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.
*
READ TABLE gt_events INTO gwa_event WITH KEY name = 'TOP_OF_PAGE'.
gwa_event-form = 'TOP_OF_PAGE'.
MODIFY gt_events FROM gwa_event INDEX sy-tabix.
CLEAR gwa_event.
ENDFORM. "SET_EVENTS
FORM TOP_OF_PAGE.
PERFORM header_simple IN PROGRAM saplkkbl USING lwa_final.
NEW-LINE NO-SCROLLING.
WRITE:/ 'Plant:'(d01),
25 lwa_final-werks,
ENDFORM.
I try to google it but not manage to find it. Hope can get help from here. thank you.
2011 Aug 14 5:28 AM
Solved by myself by using event exit and repopulate the sort table by Plant
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |