ALV GRID类型

本文主要探讨ALV GRID类型的相关内容,包括其在B站视频源码中的应用和可能涉及的侵权问题。对于想要深入了解ALV GRID类型的读者,将提供关键信息。
摘要由CSDN通过智能技术生成

不说了,该离职了,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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值