来源于B站视频,自己敲的,侵权删,可供学习参考使用,复制粘贴代码是出不来效果的,先建表。
REPORT zts_xsy_test15 MESSAGE-ID eu.
INCLUDE zts_xsy_test15top.
INCLUDE zts_xsy_test15form.
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_TEST15TOP
*&---------------------------------------------------------------------*
*类型池
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: QUAN TYPE P LENGTH 10 DECIMALS 2.
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 gt_fieldcat TYPE LVC_T_FCAT."列属性
DATA gs_fieldcat TYPE LVC_S_FCAT.
*DATA gs_layout TYPE slis_layout_alv. "全局参数
DATA gs_layout TYPE LVC_S_LAYO.
*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.
GS_FIELDCAT-SCRTEXT_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'. "颜色设置
WHEN 'QUAN'.
GS_FIELDCAT-EDIT = 'X'."可编辑
ENDCASE.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.
SELECT-OPTIONS s_zcode FOR gs_student-zcode.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST15FORM
*&---------------------------------------------------------------------*
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.
MOVE GS_STUDENT-WEIGH TO GS_STUDENT-QUAN.
MODIFY gt_student FROM gs_student.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA