代码语言:javascript复制
REPORT ZBC_ALV_01 MESSAGE-ID ZBC.
INCLUDE ZBC_ALV_01TOP.
INCLUDE ZBC_ALV_01FORM.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
IF GT_STU IS NOT INITIAL.
PERFORM display_data.
ELSE.
MESSAGE S001 WITH 'STUDENT INFO . iS EMPTY!' DISPLAY LIKE 'E'.
ENDIF.
ZBC_ALV_01TOP
*&---------------------------------------------------------------------*
*& Include ZBC_ALV_01TOP
*&---------------------------------------------------------------------*
TYPE-POOLs: SLIS .
TYPES: BEGIN OF GTY_STU .
TYPES: BOX TYPE C LENGTH 1.
INCLUDE STRUCTURE ZSTU .
TYPES: ICON TYPE C LENGTH 4 . "icon
TYPES: CHECK TYPE C LENGTH 1 . "checkbox
TYPES: LINE_COLOR TYPE C LENGTH 4 . "coloer
TYPES: FIELD_COLOR TYPE LVC_T_SCOL. " filed color
TYPES: END OF GTY_STU .
DATA: GS_VARIANT TYPE DISVARIANT.
DATA GT_STU TYPE TABLE OF GTY_STU .
DATA GS_STU TYPE GTY_STU .
DATA GS_LAYOUT TYPE SLIS_LAYOUT_ALV .
DATA GT_FIELDCAT TYPE slis_t_fieldcat_alv .
DATA GS_FIELDCAT TYPE slis_fieldcat_alv .
DATA GT_SORT TYPE slis_t_sortinfo_alv.
DATA GS_SORT TYPE slis_sortinfo_alv.
DATA GT_FILTER TYPE slis_t_filter_alv.
DATA GS_FILTER TYPE slis_filter_alv.
DATA GT_EVENTS TYPE slis_t_event.
DATA GS_EVENTS TYPE slis_alv_event.
** marco at most 9 parameters
DEFINE %%APPEND_FIELDCAT.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = &1 .
GS_FIELDCAT-FIELDNAME = &2.
GS_FIELDCAT-OUTPUTLEN = &3.
GS_FIELDCAT-SELTEXT_M = &4.
CASE &2 .
WHEN 'ZCODE'.
GS_FIELDCAT-KEY = 'X'.
WHEN 'ICON' .
GS_FIELDCAT-ICON = 'X'.
WHEN 'CHECK'.
GS_FIELDCAT-CHECKBOX = 'X'.
WHEN 'WEIGHT'.
GS_FIELDCAT-DO_SUM = 'X' .
GS_FIELDCAT-HOTSPOT = 'X' .
* GS_FIELDCAT-QUANTITY = 'KG' .
GS_FIELDCAT-qfieldname = 'ZUNIT' .
GS_FIELDCAT-EMPHASIZE = 'C601' .
WHEN 'ZUNIT'.
GS_FIELDCAT-EMPHASIZE = 'C600' .
ENDCASE.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.
SELECT-OPTIONS R_ZCODE FOR GS_STU-ZSCHOOL.
ZBC_ALV_01FORM
*&---------------------------------------------------------------------*
*& Include ZBC_ALV_01FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
DATA LS_SCOL TYPE LVC_S_SCOL.
SELECT *
FROM ZSTU
INTO CORRESPONDING FIELDS OF TABLE GT_STU
WHERE ZSCHOOL IN R_ZCODE.
LOOP AT GT_STU INTO GS_STU.
"icon setting
IF GS_STU-SEX = 'F'.
GS_STU-ICON = ICON_GREEN_LIGHT.
ELSE.
GS_STU-ICON = ICON_RED_LIGHT.
ENDIF.
" line color
IF GS_STU-SEX IS INITIAL.
GS_STU-LINE_COLOR = 'C611'.
ENDIF.
"cell color
IF GS_STU-SEX IS INITIAL.
CLEAR LS_SCOL .
LS_SCOL-FNAME = 'ZCODE'. "filed
LS_SCOL-COLOR-COL = 5 . "color
LS_SCOL-COLOR-INT = 0 . "weight
LS_SCOL-COLOR-INV = 0 . "inverse
APPEND LS_SCOL TO GS_STU-FIELD_COLOR .
ENDIF.
IF GS_STU-SEX IS INITIAL.
CLEAR LS_SCOL .
LS_SCOL-FNAME = 'ZNAME'. "filed
LS_SCOL-COLOR-COL = 4 . "color
LS_SCOL-COLOR-INT = 0 . "weight
LS_SCOL-COLOR-INV = 0 . "inverse
APPEND LS_SCOL TO GS_STU-FIELD_COLOR .
ENDIF.
MODIFY GT_STU FROM GS_STU.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_data .
PERFORM build_fieldcat.
PERFORM build_layout.
PERFORM build_sort.
PERFORM build_filetr.
PERFORM build_events.
PERFORM build_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_alv .
GS_VARIANT-REPORT = SY-REPID.
* GS_VARIANT-VARIANT = '/BC01'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = 'SET_STATUS'
I_CALLBACK_USER_COMMAND = 'FM_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'FM_TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = 'FM_HTML_TOP_OF_PAGE' "high priorty
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME = ZSTU
* I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'GRID TITLE'
* I_GRID_SETTINGS =
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = GT_SORT
IT_FILTER = GT_FILTER
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = GS_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
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = GT_STU
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcat .
%%APPEND_FIELDCAT: '1' 'ZCODE' '10' 'STUDENCODE',
'2' 'ZNAME' '20' 'STUDENNAME',
'3' 'SEX' '3' 'SEX',
'4' 'ZSCHOOL' '10' 'ZSCHOOL',
'5' 'WEIGH' '10' 'WEIGHT',
'6' 'ZUNIT' '10' 'ZUNIT',
'7' 'ICON' '6' 'ICON',
'8' 'CHECK' '3' 'ICON'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_layout .
GS_LAYOUT-colwidth_optimize = 'X'.
GS_LAYOUT-ZEBRA = 'X' .
GS_LAYOUT-KEY_HOTSPOT = 'X'.
GS_LAYOUT-BOX_FIELDNAME = 'BOX'.
GS_LAYOUT-DETAIL_INITIAL_LINES = 'BOX'.
GS_LAYOUT-WINDOW_TITLEBAR = 'windows_title'.
GS_LAYOUT-confirmation_prompt = 'X'.
GS_LAYOUT-INFO_fieldname = 'LINE_COLOR'. "line color
GS_LAYOUT-COLTAB_FIELDNAME = 'FIELD_COLOR'. "field color
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_sort .
clear GS_SORT.
GS_SORT-spos = '1'.
GS_SORT-fieldname = 'ZSCHOOL'.
GS_SORT-UP = 'X'.
GS_SORT-subtot = 'X'.
APPEND GS_SORT TO GT_SORT.
clear GS_SORT.
GS_SORT-spos = '2'.
GS_SORT-fieldname = 'SEX'.
GS_SORT-DOWN = 'X'.
APPEND GS_SORT TO GT_SORT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_FILETR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_filetr .
clear GS_FILTER.
GS_FILTER-fieldname = 'SEX'.
GS_FILTER-sign0 = 'E'.
GS_FILTER-optio = 'EQ'.
GS_FILTER-valuf = ''.
APPEND GS_FILTER to GT_FILTER.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_events .
"" regester event list in REUSE_ALV_EVENTS_GET
CLEAR GS_EVENTS.
GS_EVENTS-name ='PF_STATUS_SET'.
GS_EVENTS-form ='SET_STATUS'. "" write this subform
APPEND GS_EVENTS TO GT_EVENTS.
CLEAR GS_EVENTS.
GS_EVENTS-name ='USER_COMMAND'.
GS_EVENTS-form ='FM_USER_COMMAND'. "" write this subform
APPEND GS_EVENTS TO GT_EVENTS.
CLEAR GS_EVENTS.
GS_EVENTS-name ='TOP_OF_PAGE'.
GS_EVENTS-form ='FM_TOP_OF_PAGE'. "" write this subform
APPEND GS_EVENTS TO GT_EVENTS.
ENDFORM.
FORM SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
* SET PF-STATUS 'STATUS' EXCLUDING RT_EXTAB.
SET PF-STATUS 'ST_STATUS' EXCLUDING RT_EXTAB.
ENDFORM.
FORM FM_USER_COMMAND USING R_UCOM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD .
CASE R_UCOM.
WHEN '&IC1'.
CASE RS_SELFIELD-fieldname.
WHEN 'ZCODE'.
* MESSAGE S000 WITH 'click studen code' RS_SELFIELD-value ' line'.
SET PARAMETER ID 'LIF' FIELD RS_SELFIELD-VALUE.
CALL TRANSACTION 'FK02'.
WHEN 'WEIGH'.
WHEN OTHERS.
READ TABLE GT_STU INTO GS_STU INDEX RS_SELFIELD-TABINDEX.
PERFORM display_alv_school USING GS_STU-ZSCHOOL.
ENDCASE.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'CALLSF'.
WHEN 'DOWNLOAD'.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_SCHOOL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv_school USING P_ZSCHOOL.
DATA GT_SCHOOL TYPE TABLE OF ZSCHOOL_HQ_03.
SELECT *
FROM ZSCHOOL_HQ_03
INTO CORRESPONDING FIELDS OF TABLE GT_SCHOOL
WHERE ZSCHOOL = P_ZSCHOOL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = ' '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'ZSCHOOL_HQ_03'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
* IT_FIELDCAT =
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_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
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = GT_SCHOOL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM FM_TOP_OF_PAGE.
DATA LT_HEADER TYPE slis_t_listheader.
DATA LS_HEADER TYPE slis_listheader.
clear LS_HEADER.
LS_HEADER-TYP = 'H'.
* LS_HEADER-KEY = .
LS_HEADER-INFO = 'STUDENT INFORMATION'.
APPEND LS_HEADER TO LT_HEADER.
clear LS_HEADER.
LS_HEADER-TYP = 'S'.
* LS_HEADER-KEY = 'DATE'.
LS_HEADER-INFO = SY-DATUM .
APPEND LS_HEADER TO LT_HEADER.
clear LS_HEADER.
LS_HEADER-TYP = 'A'.
* LS_HEADER-KEY = .
LS_HEADER-INFO = 'Available School information'.
APPEND LS_HEADER TO LT_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = LT_HEADER
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM.
FORM FM_HTML_TOP_OF_PAGE USING PR_DOCUMENT TYPE REF TO CL_DD_DOCUMENT.
DATA LV_DATUM TYPE SDYDO_TEXT_ELEMENT.
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = 'Student Information '
SAP_STYLE = CL_DD_DOCUMENT=>TABLE_HEADING .
* SAP_STYLE = CL_DD_DOCUMENT=>SUCCESS .
CALL METHOD PR_DOCUMENT->NEW_LINE .
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = 'DATE: '
SAP_STYLE = CL_DD_DOCUMENT=>MEDIUM .
CALL METHOD PR_DOCUMENT->ADD_GAP
EXPORTING
WIDTH = 3.
WRITE SY-DATUM TO LV_DATUM USING EDIT MASK '____Year__Month__Day'.
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = LV_DATUM
SAP_STYLE = CL_DD_DOCUMENT=>MEDIUM .
CALL METHOD PR_DOCUMENT->NEW_LINE .
CALL METHOD PR_DOCUMENT->ADD_TEXT
EXPORTING
TEXT = 'Link'
SAP_FONTSTYLE = CL_DD_DOCUMENT=>MEDIUM .
CALL METHOD PR_DOCUMENT->ADD_GAP
EXPORTING
WIDTH = 3.
CALL METHOD PR_DOCUMENT->ADD_LINK
EXPORTING
NAME = 'google'
URL = 'http://bzo.bosch.com/'
TEXT = 'bosch' .
ENDFORM.