不说了,该离职了,B站视频源码,侵权删。
REPORT zts_xsy_test14 MESSAGE-ID eu.
INCLUDE zts_xsy_test14top.
INCLUDE zts_xsy_test14form.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
IF gt_student IS NOT INITIAL.
PERFORM display_data.
ELSE.
MESSAGE s001 DISPLAY LIKE 'E'.
ENDIF.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST14TOP
*&---------------------------------------------------------------------*
*类型池
TYPE-POOLS slis.
TYPES: BEGIN OF gty_student.
TYPES: box TYPE c LENGTH 1.
INCLUDE STRUCTURE zbc_xsy_student.
TYPES: icon TYPE c LENGTH 4. "图标
TYPES: check TYPE c LENGTH 1. "复选框
*TYPES: line_color TYPE c LENGTH 4. "行颜色
TYPES: FIELD_COLOR TYPE LVC_T_SCOL. "单元格颜色
TYPES: END OF gty_student.
DATA gt_student TYPE TABLE OF gty_student.
DATA gs_student TYPE gty_student.
*FUNCTION ALV
DATA gt_fieldcat TYPE slis_t_fieldcat_alv."列属性
DATA gs_fieldcat TYPE slis_fieldcat_alv.
DATA gs_layout TYPE slis_layout_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. "CALLBACK事件
DATA gs_events TYPE slis_alv_event.
*DATA pr_document TYPE .
*宏 每个宏中最多可以 定义9个参数
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'. "复选框
* GS_FIELDCAT-EDIT = 'X'."可选择
WHEN 'WEIGH'.
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 s_zcode FOR gs_student-zcode.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST14FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
DATA LS_SCOL TYPE LVC_S_SCOL.
SELECT *
FROM zbc_xsy_student
INTO CORRESPONDING FIELDS OF TABLE gt_student
WHERE zcode IN s_zcode.
LOOP AT gt_student INTO gs_student.
* 图标
IF gs_student-sex = 'F'.
gs_student-icon = icon_green_light." '@05@'.
ELSE.
gs_student-icon = icon_red_light.
ENDIF.
* 颜色
*行颜色
* IF GS_STUDENT-SEX IS INITIAL.
* GS_STUDENT-LINE_COLOR = 'C600'. "性别为空,设置底纹颜色
* ENDIF.
*单元格颜色
*1.性别字段增加颜色
IF GS_STUDENT-SEX IS INITIAL.
CLEAR LS_SCOL.
LS_SCOL-FNAME = 'SEX'. "字段名
LS_SCOL-COLOR-COL = 6. "颜色
LS_SCOL-COLOR-INT = 0. "加重
LS_SCOL-COLOR-INV = 0. "反色
APPEND LS_SCOL TO GS_STUDENT-FIELD_COLOR.
ENDIF.
IF GS_STUDENT-WEIGH IS INITIAL.
CLEAR LS_SCOL.
LS_SCOL-FNAME = 'WEIGH'. "字段名
LS_SCOL-COLOR-COL = 6. "颜色
LS_SCOL-COLOR-INT = 0. "加重
LS_SCOL-COLOR-INV = 0. "反色
APPEND LS_SCOL TO GS_STUDENT-FIELD_COLOR.
ENDIF.
MODIFY gt_student FROM gs_student.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_data .
PERFORM build_fieldcat.
PERFORM build_layout.
PERFORM build_sort.
PERFORM build_filter.
PERFORM build_event.
PERFORM build_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_alv .
** CALL FUNCTION 'REUSE_ALV_LIST_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_STRUCTURE_NAME =
** 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 = ' '
** 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
** IR_SALV_LIST_ADAPTER =
** IT_EXCEPT_QINFO =
** I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
** IMPORTING
** E_EXIT_CAUSED_BY_CALLER =
** ES_EXIT_CAUSED_BY_USER =
** TABLES
** t_outtab = gt_student
** EXCEPTIONS
** PROGRAM_ERROR = 1
** OTHERS = 2
** .
** IF sy-subrc <> 0.
** Implement suitable error handling here
** ENDIF.
* gs_variant-report = sy-repid.
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'
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
i_grid_title = 'GRID标题'
* 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_student
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' '学生编号' ,
'2' 'ZNAME' '20' '学生姓名' ,
'3' 'SEX' '10' '性别' ,
'4' 'ZSCHOOL' '10' '学校' ,
'5' 'WEIGH' '15' '体重' ,
'6' 'ZUNIT' '10' '单位' ,
'7' 'ICON' '7' '图标' ,
'8' 'CHECK' '7' '选择' .
* CLEAR GS_FIELDCAT.
* GS_FIELDCAT-COL_POS = '1'.
* GS_FIELDCAT-FIELDNAME = 'ZCODE'.
* GS_FIELDCAT-OUTPUTLEN = '10'.
* GS_FIELDCAT-SELTEXT_M = '学生编号'.
* APPEND GS_FIELDCAT TO GT_FIELDCAT.
*
* CLEAR GS_FIELDCAT.
* GS_FIELDCAT-COL_POS = '2'.
* GS_FIELDCAT-FIELDNAME = 'ZNAME'.
* GS_FIELDCAT-OUTPUTLEN = '20'.
* GS_FIELDCAT-SELTEXT_M = '学生姓名'.
* APPEND GS_FIELDCAT TO GT_FIELDCAT.
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 = 'X'.
gs_layout-window_titlebar = '窗体抬头'.
gs_layout-confirmation_prompt = 'X'.
* 颜色
* GS_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'. "行颜色
GS_LAYOUT-COLTAB_FIELDNAME = 'FIELD_COLOR'. "单元格颜色
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_sort .
*1.按照学校升序
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.
*2.按照性别降序
CLEAR gs_sort.
gs_sort-spos = '2'.
gs_sort-fieldname = 'SEX'.
gs_sort-down = 'X'.
APPEND gs_sort TO gt_sort.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_FILTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_filter .
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_EVENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_event .
CLEAR gs_events.
gs_events-name = 'PF_STATUS_SET'.
gs_events-form = 'SET_STATUS'.
APPEND gs_events TO gt_events .
CLEAR gs_events.
gs_events-name = 'USER_COMMAND'.
gs_events-form = 'FM_USER_COMMAND'.
APPEND gs_events TO gt_events .
CLEAR gs_events.
gs_events-name = 'TOP_OF_PAGE'.
gs_events-form = 'FM_TOP_OF_PAGE'.
* GS_EVENTS-FORM = 'FM_TOP_OF_PAGE_WRITE'. "LIST函数时用
APPEND gs_events TO gt_events .
ENDFORM.
*FORM FM_TOP_OF_PAGE_WRITE. "LIST函数时用
* WRITE:/(50) '学生信息表' CENTERED.
* WRITE:/ '日期',6 SY-DATUM.
*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'. "HEADER
*LS_HEADER-KEY =
ls_header-info = '学生信息表'.
APPEND ls_header TO lt_header.
CLEAR ls_header.
ls_header-typ = 'A'. "ACTION
ls_header-info = '可查看学校信息'.
APPEND ls_header TO lt_header.
CLEAR ls_header.
ls_header-typ = 'S'. "SELECTION
ls_header-key = '当前日期'.
ls_header-info = sy-datum .
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 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. "SET_STATUS
FORM fm_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield .
CASE r_ucomm.
WHEN '&IC1'."单击
CASE rs_selfield-fieldname.
WHEN 'ZCODE'. "单击或双击,点击了学号字段
* MESSAGE S000 WITH '单击了学号为' RS_SELFIELD-VALUE '的行'.
SET PARAMETER ID 'LIF' FIELD rs_selfield-value.
CALL TRANSACTION 'FK03'.
WHEN 'WEIGH'. "单击或双击,点击了体重
WHEN OTHERS."双击
"当前行的学校信息
READ TABLE gt_student INTO gs_student INDEX rs_selfield-tabindex.
PERFORM display_alv_school USING gs_student-zschool.
ENDCASE.
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 zbc_xsy_school.
SELECT *
FROM zbc_xsy_school
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 = 'ZBC_XSY_SCHOOL'
* 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.
*PERFORM FM_HTML_TOP_OF_PAGE USING PR_DOCUMENT TYPE REF TO CL_DD_DOCUMENT.
* DATA LV_DATUM TYPE C LENGTH 20.
*
* CALL METHOD PR_DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = '学生信息表'.
* SAP_FONTSTYLE = CL_DD_DOCUMENT=>TABLE_HEADING. "常量要用双箭头
*
*
* CALL METHOD PR_DOCUMENT->NEW_LINE.
*
* CALL METHOD PR_DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = '日期'
* SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM.
*
* CALL METHOD PR_DOCUMENT->ADD_GAP
* EXPORTING
* WIDTH = 3.
* WRITE SY-DATUM TO LV_DATUM USING EDIT MASK '____年_月_日'.
* CALL METHOD PR_DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = LV_DATUM
* SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM.
*
* CALL METHOD PR_DOCUMENT->NEW_LINE.
*
* CALL METHOD PR_DOCUMENT->ADD_TEXT
* EXPORTING
* TEXT = '链接'
* SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM.
*
* CALL METHOD PR_DOCUMENT->ADD_GAP
* EXPORTING
* WIDTH = 3.
*
* CALL METHOD PR_DOCUMENT->ADD_LINK
* EXPORTING
* NAME = 'BAIDU'
* URL = 'http://www.baidu.com/'
* TEXT = '百度'.
*
*
*ENDFORM.