zoukankan      html  css  js  c++  java
  • ALV 小计、红绿灯、多选按钮、复选框、热点、编辑单元格数据

    参考:https://www.cnblogs.com/jiangzhengjun/archive/2004/01/13/4291344.html#_Toc411672653

      1 REPORT ztest3 NO STANDARD PAGE HEADING.
      2 TYPE-POOLS:slis.
      3 TABLES:sflight.
      4 
      5 DATA:BEGIN OF gt_itab OCCURS 0,
      6     sel TYPE c,      "用来做选择按钮列
      7   light TYPE c,     "红绿灯
      8   checkbox TYPE c.  "用作复选框列image055
      9         INCLUDE STRUCTURE sflight.
     10 DATA:END OF gt_itab.
     11 
     12 DATA gt_fieldcat TYPE slis_t_fieldcat_alv.
     13 DATA gs_fieldcat TYPE slis_fieldcat_alv.  "表字段
     14 DATA gs_layout TYPE slis_layout_alv.  "布局
     15 DATA: gt_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
     16 
     17 
     18 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
     19 SELECT-OPTIONS:s_carrid FOR sflight-carrid.                "航线承运人ID
     20 SELECT-OPTIONS:s_connid FOR sflight-connid.                 "航班连接 Id
     21 SELECT-OPTIONS:s_fldate FOR sflight-fldate.                 "航班日期
     22 SELECTION-SCREEN END OF BLOCK b1.
     23 
     24 START-OF-SELECTION.
     25   SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_itab
     26     WHERE carrid IN s_carrid
     27     AND connid IN s_carrid
     28     AND fldate IN s_carrid.
     29 
     30   LOOP AT gt_itab.
     31     IF  gt_itab-price BETWEEN 0 AND 500.
     32       gt_itab-light = '1'.
     33 *      gt_itab-checkbox = 'X'.
     34 *      gt_itab-sel = 'X'.
     35     ELSEIF gt_itab-price BETWEEN 500 AND 800.
     36       gt_itab-light = '2'.
     37     ELSE.
     38       gt_itab-light = '3'.
     39     ENDIF.
     40     MODIFY gt_itab.
     41   ENDLOOP.
     42 
     43 END-OF-SELECTION.
     44   PERFORM set_layout.
     45   PERFORM set_flildname.
     46 *  PERFORM set_sum.  "是否需要进行分类合并、并进行小计
     47   PERFORM result_alv.
     48 
     49 
     50 *&---------------------------------------------------------------------*
     51 *&      Form  set_sum
     52 *&---------------------------------------------------------------------*
     53 *       text
     54 *----------------------------------------------------------------------*
     55 FORM set_sum.
     56   gt_sort-spos = '1'."排序的顺序,如果根据多个字段来排时,决定哪个先排
     57   gt_sort-fieldname = 'CONNID'.
     58   gt_sort-up = 'X'.     "升序(即gt_sort-up、gt_sort-down都没设置时),默认为升序
     59   gt_sort-subtot = 'X'.    "是否需要以此字段进行分类小计
     60   APPEND gt_sort.
     61 ENDFORM.                    " SET_LAYOUT
     62 *&---------------------------------------------------------------------*
     63 *&      Form  set_layout
     64 *&---------------------------------------------------------------------*
     65 *       text
     66 *----------------------------------------------------------------------*
     67 FORM set_layout .
     68   gs_layout-zebra = 'X'.
     69   gs_layout-colwidth_optimize = 'X'.
     70   gs_layout-cell_merge = 'X'.           "内容能够复制到剪贴板
     71   gs_layout-lights_fieldname  = 'LIGHT'."指定灯列名
     72   gs_layout-box_fieldname = 'CHECKBOX'."行多选择按钮设置
     73 ENDFORM.                    " SET_LAYOUT
     74 *&---------------------------------------------------------------------*
     75 *&      Form  SET_FLILDNAME
     76 *&---------------------------------------------------------------------*
     77 *       text
     78 *----------------------------------------------------------------------*
     79 *  -->  p1        text
     80 *  <--  p2        text
     81 *----------------------------------------------------------------------*
     82 FORM set_flildname .
     83   CLEAR: gt_fieldcat,gs_fieldcat.
     84 
     85   CLEAR: gs_fieldcat.
     86   gs_fieldcat-fieldname = 'LIGHT'.
     87   gs_fieldcat-seltext_m = '红绿灯'.
     88   gs_fieldcat-icon = 'X'.    "作为图标输出
     89   APPEND gs_fieldcat TO gt_fieldcat.
     90 
     91 
     92   CLEAR: gs_fieldcat.
     93   gs_fieldcat-fieldname = 'CARRID'.
     94   gs_fieldcat-seltext_m = '航线承运人ID'.
     95   gs_fieldcat-key = 'X'.     "主键字段
     96   gs_fieldcat-hotspot = 'X'.  "单击热点
     97   APPEND gs_fieldcat TO gt_fieldcat.
     98 
     99   CLEAR: gs_fieldcat.
    100   gs_fieldcat-fieldname = 'CONNID'.
    101   gs_fieldcat-seltext_m = '航班连接 Id'.
    102   gs_fieldcat-key = 'X'.
    103   gs_fieldcat-hotspot = 'X'.
    104   APPEND gs_fieldcat TO gt_fieldcat.
    105 
    106   CLEAR: gs_fieldcat.
    107   gs_fieldcat-fieldname = 'FLDATE'.
    108   gs_fieldcat-seltext_m = '航班日期'.
    109   gs_fieldcat-key = 'X'.
    110   gs_fieldcat-hotspot = 'X'.
    111   APPEND gs_fieldcat TO gt_fieldcat.
    112 
    113   CLEAR: gs_fieldcat.
    114   gs_fieldcat-fieldname = 'PRICE'.
    115   gs_fieldcat-seltext_m = '航空运费'.
    116   gs_fieldcat-do_sum = 'X'. "总计
    117   APPEND gs_fieldcat TO gt_fieldcat.
    118 
    119   CLEAR: gs_fieldcat.
    120   gs_fieldcat-fieldname = 'CURRENCY'.
    121   gs_fieldcat-seltext_m = '航班的本地货币'.
    122   APPEND gs_fieldcat TO gt_fieldcat.
    123 
    124   CLEAR: gs_fieldcat.
    125   gs_fieldcat-fieldname = 'SEATSMAX'.
    126   gs_fieldcat-seltext_m = '最大容量'.
    127   gs_fieldcat-edit = 'X'.     "设置该字段可编辑
    128   APPEND gs_fieldcat TO gt_fieldcat.
    129 
    130   CLEAR: gs_fieldcat.
    131   gs_fieldcat-fieldname = 'SEL'.
    132   gs_fieldcat-seltext_l = '复选框'.
    133   gs_fieldcat-checkbox = 'X'.
    134   gs_fieldcat-edit = 'X'.
    135   APPEND gs_fieldcat TO gt_fieldcat.
    136 ENDFORM.                    " SET_FLILDNAME
    137 *&---------------------------------------------------------------------*
    138 *&      Form  RESULT_ALV
    139 *&---------------------------------------------------------------------*
    140 *       text
    141 *----------------------------------------------------------------------*
    142 *  -->  p1        text
    143 *  <--  p2        text
    144 *----------------------------------------------------------------------*
    145 FORM result_alv .
    146   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    147     EXPORTING
    148       i_callback_program          = sy-repid
    149       i_callback_html_top_of_page = 'TOP_OF_PAGE'
    150       i_grid_title                = 'ALV报表功能模板'
    151       is_layout                   = gs_layout
    152       it_fieldcat                 = gt_fieldcat
    153       it_sort                     = gt_sort[]
    154       i_callback_user_command     = 'USER_COMMAND'
    155     TABLES
    156       t_outtab                    = gt_itab
    157     EXCEPTIONS
    158       program_error               = 1
    159       OTHERS                      = 2.
    160 ENDFORM.                    " RESULT_ALV
    161 
    162 *&---------------------------------------------------------------------*
    163 *&      Form  user_command
    164 *&---------------------------------------------------------------------*
    165 *  1.单击。双击热点
    166 *     单击:需设置gs_fieldcat-hotspot = 'X'.      
    167 *  2.单元格数据修改后同步(即立即触发DATA_CHANGED事件)输出内表
    168 *----------------------------------------------------------------------*
    169 *      -->UCOMM      text
    170 *      -->SELFIELD   text
    171 *----------------------------------------------------------------------*
    172 FORM user_command USING ucomm  LIKE sy-ucomm   selfield TYPE slis_selfield.
    173   DATA str TYPE string.
    174   CLEAR str.
    175   selfield-refresh = 'X'.
    176 
    177   MESSAGE i001(00) WITH '热点触发事务码:'  ucomm.                  "1.单击。双击热点
    178 
    179 *  IF ucomm = 'SAVE'.      "2.单元格数据
    180 *    PERFORM frm_update.   "可以写更新代码
    181 *  ENDIF.
    182 ENDFORM.                    "user_command
    183 
    184 *&---------------------------------------------------------------------*
    185 *&      Form  top_of_page
    186 *&---------------------------------------------------------------------*
    187 *       text
    188 *----------------------------------------------------------------------*
    189 *      -->R_DDOC     text
    190 *----------------------------------------------------------------------*
    191 FORM top_of_page USING r_ddoc TYPE REF TO cl_dd_document.
    192   DATA: text TYPE sdydo_text_element.
    193   CALL METHOD r_ddoc->initialize_document.
    194   CALL METHOD r_ddoc->add_text"控制输出字体为粗体
    195     EXPORTING
    196      text = '行状态图标含义'
    197      sap_emphasis = 'STRONG'.
    198 
    199   DEFINE write_inf.
    200     call method r_ddoc->new_line."换行
    201     call method r_ddoc->add_icon"输出图标
    202       exporting
    203         sap_icon = &1.
    204     call method r_ddoc->add_text"输出文本
    205       exporting
    206         text = &2.
    207   END-OF-DEFINITION.
    208 
    209   write_inf 'ICON_GREEN_LIGHT' ':价格过高'."表头输出的图标及类型
    210   write_inf 'ICON_RED_LIGHT' ':实惠'.
    211 ENDFORM.                    "top_of_page
  • 相关阅读:
    《DSP using MATLAB》Problem 6.17
    一些老物件
    《DSP using MATLAB》Problem 6.16
    《DSP using MATLAB》Problem 6.15
    《DSP using MATLAB》Problem 6.14
    《DSP using MATLAB》Problem 6.13
    《DSP using MATLAB》Problem 6.12
    《DSP using MATLAB》Problem 6.11
    P1414 又是毕业季II
    Trie树
  • 原文地址:https://www.cnblogs.com/freeandeasy/p/13718125.html
Copyright © 2011-2022 走看看