INCLUDE 程序名_top.

    **
    选择屏幕
    **
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS : p_vkorg TYPE mvke-vkorg DEFAULT ‘1240’ OBLIGATORY. “销售组织
    SELECT-OPTIONS: s_matnr FOR mvke-matnr. “销售订单首个日期
    SELECTION-SCREEN END OF BLOCK blk1.


    ———————————————————————————————————
    * INCLUDE FILES FOR PROCESSING 定义引用其他程序
    ———————————————————————————————————

    INCLUDE 程序名_class.

    &——————————————————————————————————-
    *& initialialization
    &——————————————————————————————————-
    INITIALIZATION.
    (初始化)
    &——————————————————————————————————-
    *& at selection screen
    &——————————————————————————————————-
    AT SELECTION-SCREEN.
    (权限检查)

    ———————————————————————————————————
    * at selection-screen output 当执行时,在操作输出前所处理的事件
    * 例如,在这 些事件中, 可以申请对 选择屏幕上 的字段作出 修改
    ———————————————————————————————————
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_auart-low.
    * PERFORM frm_selection_screen_f4.

    ———————————————————————————————————
    * start-of-selection 当以上的事件处理完没有问题的时候,才执行此事件。
    * 此事件处理的主要是对数据的获取与处理等
    ———————————————————————————————————
    START-OF-SELECTION.
    PERFORM frmcheck**.(屏幕控制,导入检查)

    CALL SCREEN 100.

    ———————————————————————————————————
    * end-of-selection 当执行完对数据处理的事件后,将对数据进行输出显示。
    ———————————————————————————————————
    END-OF-SELECTION.

    ——————————————————————————————————
    CALL SCREEN 100.
    PROCESS BEFORE OUTPUT. MODULE status_0100. MODULE 100_alv_display.
    PROCESS AFTER INPUT. MODULE user_command_0100.

    ——————————————————————————————————
    PERFORM frm100_alv_display. “显示 ALV_

    DATA: lrevent_handler TYPE REF TO alv_event, ls_stable TYPE lvc_s_stbl.
    ALV容器为空则创建,不为空则刷新 IF g_dock_container IS INITIAL.
    创建 容器 CREATE OBJECT g_dock_container
    EXPORTING repid = sy-repid
    dynnr = ‘100’
    “alv所在屏幕 side = cl_gui_docking_container=>dock_at_top
    ratio = 95
    “占屏幕的比例
    extension = 260
    caption = ‘’ “标题 lifetime = cntl_lifetime_dynpro “容器实例生命周期 EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5 OTHERS = 6. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
    创建容器实例 CREATE OBJECT g_grid
    EXPORTING i_parent = g_dock_container
    EXCEPTIONS error_cntl_create = 1 error_cntl_init = 2 error_cntl_link = 3 error_dp_create = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
    “oo alv 控制 wa_layout-zebra = ‘X’. “X:行项目带颜色标识 wa_layout-no_rowins = ‘X’. “X:不允许删除选定行,通过复制粘贴维护可编辑行限定在一定范围内 wa_layout-sel_mode = ‘A’. “A:显示alv的选择行按
    walayout-cwidth_opt = ‘X’. “ALV 控制: 优化列宽度 walayout-stylefname = ‘CELLTAB’. “单元格编辑控制 wa_layout-ctab_fname = ‘CELLCOLORS’.“单元格颜色
    删除系统标准工具条按钮,结合notoolbar使用 PERFORM frmalv_exclude.
    设置输出显示字段 PERFORM frm_100_fieldcat.
    设置下拉框 PERFORM frm_100_drilldown.
    设置事件 CREATE OBJECT lr_event_handler.
    SET HANDLER lrevent_handler->handle_hotspot_click FOR g_grid.”单击事件
    _
    SET HANDLER lrevent_handler->handle_double_click FOR g_grid. “双击事件
    * SET HANDLER lr_event_handler->handle_user_command FOR g_grid. “按钮事件 SET HANDLER lrevent_handler->handle_data_changed FOR g_grid. “数据改动事件 SET HANDLER lr_event_handler->data_changed_finished FOR g_grid. “数据改动事件
    * SET HANDLER lrevent_handler->handle_toolbar FOR g_grid. “工具条事件

    1. CALL METHOD cl_gui_cfw=>flush. _"刷新_<br /> CALL METHOD g_grid->register_edit_event _"注册回车事件_ EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_enter.<br /> CALL METHOD g_grid->register_edit_event _"注册编辑事件_ EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified.<br /> CALL METHOD g_grid->set_drop_down_table _"调用alv类的下拉框方法_ EXPORTING it_drop_down = it_dropdown.<br /> wa_variant-report = sy-repid. wa_variant-handle = '100'. wa_variant-log_group = '100'.<br /> CALL METHOD g_grid->set_table_for_first_display<br /> EXPORTING i_buffer_active = 'X' is_variant = wa_variant<br /> i_save = 'A' i_default = 'X' is_layout = wa_layout<br /> it_toolbar_excluding = it_exclude<br /> CHANGING it_outtab = it_output<br /> it_fieldcatalog = it_fieldcat<br /> EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno<br /> WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.<br /> ELSE. PERFORM frm_refresh_alv USING '100'. ENDIF.

    ——————————————————————————————————
    DATA: lsexclude TYPE ui_func. REFRESH it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_detail. APPEND ls_exclude TO it_exclude.
    “详细信息
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_check. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_view. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_info. APPEND ls_exclude TO it_exclude.
    “最终用户文档
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_graph. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_refresh. APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_variant.
    “选择布局 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_export.
    “导出 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc.
    “降序 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc.
    “升序 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sum.
    “总计 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_maximum.
    “最大值 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_filter.
    “设置过滤器 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_print.
    “打印 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_find.
    “查找 APPEND ls_exclude TO it_exclude.
    CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_sum.
    “汇总_ APPEND ls_exclude TO it_exclude.


    “1 字段名称 “2 字段描述 “3 参考表 “4 宽度 “5 可编辑(X:可编辑,空值不可编辑) “6 图标输出(X:图标,空值不是) “7 单击响应(V:响应单击,空值不响应) “8 段隐藏前置零(X:隐藏,空值不隐藏) “9 是否有搜索帮助(X:有,空值没有)
    macro_fill_fcat ‘SEL’ ‘选择’ ‘ ‘ 4 ‘X’ ‘’ ‘’ ‘’ ‘’.


    DATA ls_stable TYPE lvc_s_stbl.
    ls_stable-row = ‘X’. ls_stable-col = ‘X’. CASE p_mode. WHEN ‘100’. IF g_dock_container IS NOT INITIAL.
    CALL METHOD g_grid->refresh_table_display
    EXPORTING is_stable = ls_stable. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
    WHEN ‘200’.
    IF g_200_custom_container IS NOT INITIAL. CALL METHOD g_200_grid->refresh_table_display
    EXPORTING is_stable = ls_stable. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
    WHEN ‘300’.
    IF g_300_custom_container IS NOT INITIAL. CALL METHOD g_300_grid->refresh_table_display
    EXPORTING is_stable = ls_stable. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
    WHEN OTHERS.
    ENDCASE.
    CALL METHOD cl_gui_cfw=>flush.


    程序TOP
    **
    TABLES 声明
    **
    TABLES: zzpst001.
    **
    类型池声明
    **
    TYPE-POOLS: slis.
    **
    类型定义
    **_

    **
    全局变量声明
    **
    DATA: gdock_container TYPE REF TO cl_gui_docking_container, “ALV容器 g_grid TYPE REF TO cl_gui_alv_grid, “ALV容器的实例 wa_fieldcat TYPE lvc_s_fcat, it_fieldcat TYPE lvc_t_fcat, “ALV 控制: 字段目录 wa_layout TYPE lvc_s_layo, “ALV 控制: 布局结构 wa_variant TYPE disvariant, “格式 (外部使用) it_exclude TYPE ui_functions,“按钮筛选内表(可以筛掉不想要的功能按钮) ok_code_100 TYPE sy-ucomm,“屏幕100触发的功能代码 save_ok_100 TYPE sy-ucomm, it_dropdown_100 TYPE lvc_t_drop, “下拉框语句 wa_dropdown_100 TYPE lvc_s_drop.
    &——————————————————————————————————-
    & Define marco
    &——————————————————————————————————-
    DEFINE macro_fill_fcat.
    定义如下几种常用参数的宏 clear wa_fieldcat. wa_fieldcat-fieldname = &1. “字段名称 wa_fieldcat-scrtext_s = &2. “字段描述 wa_fieldcat-scrtext_m = &2. wa_fieldcat-scrtext_l = &2. wa_fieldcat-ref_table = &3. “参考表 wa_fieldcat-outputlen = &4. “设置列的输出字符宽度 wa_fieldcat-edit = &5. “可编辑(X:可编辑,空值不可编辑) wa_fieldcat-icon = &6. “图标输出(X:图标,空值不是) wa_fieldcat-hotspot = &7. “单击响应(V:响应单击,空值不响应) wa_fieldcat-no_zero = &8. “为输出字段隐藏前置零(X:隐藏,空值不隐藏) wa_fieldcat-f4availabl = &9. “字段是否有搜索帮助(X:有,空值没有) wa_fieldcat-lowercase = ‘X’. “控制大小写
    if wa_fieldcat-fieldname = ‘SEL’. wa_fieldcat-checkbox = ‘X’. wa_fieldcat-fix_column = ‘X’. endif.
    if g_screen = ‘100’.
    if wafieldcat-fieldname = ‘ZZXMDL’.
    _
    wafieldcat-drdn_hndl = ‘1’.
    *
    * endif.
    *
    * if wa_fieldcat-fieldname = ‘ZZXMZL’.
    * wa_fieldcat-drdn_hndl = ‘2’.
    *
    * endif. append wa_fieldcat to it_fieldcat. elseif g_screen = ‘200’. append wa_fieldcat to it_200_fieldcat. elseif g_screen = ‘300’. if wa_fieldcat-fieldname = ‘ZZXMDL’. wa_fieldcat-drdn_hndl = ‘1’.
    endif.
    append wa_fieldcat to it_300_fieldcat. endif.
    END-OF-DEFINITION.