sap docking 简单分屏alv
在项目过程中,一般写的是ooalv,分上下的,或者几个 屏幕,但是这种方式有点缺点就是,不能拖动将屏幕随意的分开,固定的高度宽度都是在格式里面去改,比较不方便,不灵活。以docking的方式则可以灵活的前台控制分屏的大小。话不多说,参考前者代码,再加上自己简单的处理,
把代码简单化,更易于理解。
REPORT zlgy03.**1、相关数据定义*类定义
CLASS : lcl_event_receiver DEFINITION DEFERRED.**定义alv数据显示内表**sreen 1
DATA(gs_data_a) = VALUE mara( ).
DATA gt_data_a LIKE TABLE OF gs_data_a.
DATA(gs_data_b) = VALUE marc( ).
DATA gt_data_b LIKE TABLE OF gs_data_b.
**sreen 1
DATA BEGIN OF gs_out_a .
INCLUDE TYPE mara.
DATA:check(1) , "复选框END OF gs_out_a.
DATA gt_out_a LIKE TABLE OF gs_out_a.
***dock --ooalv定义
DATA :go_docking TYPE REF TO cl_gui_docking_container,go_splitter1 TYPE REF TO cl_gui_splitter_container,go_sp_container1 TYPE REF TO cl_gui_container, "screen1 的容器go_sp_container2 TYPE REF TO cl_gui_container, "screen2 的容器go_alv_grid1 TYPE REF TO cl_gui_alv_grid, "alv1go_alv_grid2 TYPE REF TO cl_gui_alv_grid, "alv2go_event1 TYPE REF TO lcl_event_receiver, "事件2go_event2 TYPE REF TO lcl_event_receiver. "事件1DATA :gs_fieldcat TYPE lvc_s_fcat,gt_fieldcat1 TYPE lvc_t_fcat,gt_fieldcat2 TYPE lvc_t_fcat,gs_layout TYPE lvc_s_layo,gs_variant1 TYPE disvariant,gs_variant2 TYPE disvariant,gt_exclude TYPE ui_functions, "按钮gs_exclude TYPE ui_func.*---------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.PUBLIC SECTION.METHODS:
**双击handle_double_click FOR EVENT double_click OF cl_gui_alv_gridIMPORTING e_row e_column es_row_no.
**功能键METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_gridIMPORTING e_ucomm sender.
**数据更改METHODS handle_data_changed FOR EVENT data_changed OF cl_gui_alv_gridIMPORTING er_data_changed sender.
**按钮METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_gridIMPORTING e_object e_interactive sender.
**单击,热键METHODS handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_gridIMPORTING e_row_id e_column_id.ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION
*&---------------------------------------------------------------------*
*& 包含 ZCLS
*&---------------------------------------------------------------------*
*---------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.METHOD handle_double_click .PERFORM handle_double_click USING e_row e_column es_row_no.ENDMETHOD . "HANDLE_BUTTON_CLICKMETHOD handle_user_command." PERFORM handle_user_command USING e_ucomm sender.ENDMETHOD. "HANDLE_DATA_CHANGEDMETHOD handle_data_changed." PERFORM handle_data_changed USING er_data_changed sender.ENDMETHOD. "HANDLE_DATA_CHANGEDMETHOD handle_toolbar." PERFORM handle_toolbar USING e_object e_interactive sender.ENDMETHOD.METHOD handle_hotspot_click.PERFORM handle_hotspot_click USING e_row_id e_column_id.ENDMETHOD. "HANDLE_HOTSPOT_CLICKENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATIONPARAMETERS matnr LIKE mara-matnr.START-OF-SELECTION.PERFORM get_data_a USING matnr .PERFORM call_screen_a.*&---------------------------------------------------------------------*
*& Form get_data_a
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> MATNR
*&---------------------------------------------------------------------*
FORM get_data_a USING p_matnr LIKE mara-matnr.SELECT *FROM maraINTO CORRESPONDING FIELDS OF TABLE gt_out_aUP TO 10 ROWS.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form call_screen_a
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM call_screen_a .CALL SCREEN 9000.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.SET PF-STATUS 'STUAI'.SET TITLEBAR '分屏测试'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT .DATA ok_code LIKE sy-ucomm.ok_code = sy-ucomm.CASE ok_code.WHEN '&F03' OR '&F12'."退出LEAVE TO SCREEN 0.WHEN '&F15'.LEAVE PROGRAM.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module INIT_DOCKING OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE init_docking OUTPUT.IF go_docking IS INITIAL.PERFORM init_docking_alv_proc.ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form init_docking_alv_proc
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM init_docking_alv_proc .
**创建dockingCREATE OBJECT go_dockingEXPORTINGrepid = sy-repiddynnr = sy-dynnrextension = '1500' "屏幕大小side = cl_gui_docking_container=>dock_at_top."将屏幕拆分成上下两个屏幕:两行一列CREATE OBJECT go_splitter1EXPORTINGparent = go_dockingrows = 2columns = 1."第一个屏幕放在第一行第一列CALL METHOD go_splitter1->get_containerEXPORTINGrow = 1column = 1RECEIVINGcontainer = go_sp_container1."第一个屏幕高度CALL METHOD go_splitter1->set_row_heightEXPORTINGid = 1height = 50."第二个屏幕 放在第二行第一列CALL METHOD go_splitter1->get_containerEXPORTINGrow = 2column = 1RECEIVINGcontainer = go_sp_container2.*--容器1CREATE OBJECT go_alv_grid1EXPORTINGi_parent = go_sp_container1EXCEPTIONSerror_cntl_create = 1error_cntl_init = 2error_cntl_link = 3error_dp_create = 4OTHERS = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.*-- 容器 2.CREATE OBJECT go_alv_grid2EXPORTINGi_parent = go_sp_container2EXCEPTIONSerror_cntl_create = 1error_cntl_init = 2error_cntl_link = 3error_dp_create = 4OTHERS = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.***创建格式PERFORM frm_layout_gri CHANGING gs_layout.***TOOLBARPERFORM frm_tolber_gri.***FEILDCATPERFORM frm_feildcat_gri .***event data"screen 1PERFORM frm_event_handler_proc CHANGING go_event1go_alv_grid1."screen 2PERFORM frm_event_handler_proc CHANGING go_event1go_alv_grid2.*>> ALV LIST 显示PERFORM frm_call_alv_list_proc_a.ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_layout_gri
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- GS_LAYOUT
*&---------------------------------------------------------------------*
FORM frm_layout_gri CHANGING p_gs_layout LIKE gs_layout.p_gs_layout-sel_mode = 'D'.p_gs_layout-zebra = 'X'.p_gs_layout-cwidth_opt = 'X'.ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_tolber_gri
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_tolber_gri .REFRESH gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.APPEND gs_exclude TO gt_exclude.gs_exclude = cl_gui_alv_grid=>mc_fc_refresh.APPEND gs_exclude TO gt_exclude.ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_feildcat_gri
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- GS_FIELDCAT
*&---------------------------------------------------------------------*
FORM frm_feildcat_gri .DEFINE add_fieldcat1.CLEAR gs_fieldcat.gs_fieldcat-fieldname = &1.gs_fieldcat-reptext = &2.gs_fieldcat-cfieldname = &3.gs_fieldcat-f4availabl = &4.gs_fieldcat-hotspot = &5.gs_fieldcat-edit = &6.gs_fieldcat-checkbox = &7.APPEND gs_fieldcat TO gt_fieldcat1.CLEAR gs_fieldcat.END-OF-DEFINITION.add_fieldcat1:" 'CHECK' '' '' '' '' 'X' 'X','MATNR' '物料编码' '' 'X' 'X' '' '','PSTAT' '维护状态' '' '' '' '' '','MTART' '物料类型' '' '' '' '' '','MBRSH' '行业领域' '' '' '' '' '','MATKL' '物料组' '' '' '' '' '','MEINS' '基本计量单位' '' '' '' '' '','VOLEH' '体积单位' '' '' '' '' '','BEHVO' '容器需求' '' '' '' '' '','RAUBE' '存储条件' '' '' '' '' '','TRAGR' '运输组' '' '' '' '' ''.DEFINE add_fieldcat2.CLEAR gs_fieldcat.gs_fieldcat-fieldname = &1.gs_fieldcat-reptext = &2.gs_fieldcat-cfieldname = &3.gs_fieldcat-f4availabl = &4.gs_fieldcat-hotspot = &5.gs_fieldcat-edit = &6.gs_fieldcat-no_out = &7.APPEND gs_fieldcat TO gt_fieldcat2.CLEAR gs_fieldcat.END-OF-DEFINITION.add_fieldcat2:'MATNR' '物料编码' '' '' '' '' '','PSTAT' '维护状态' '' '' '' '' '','WERKS' '工厂' '' '' '' '' '','BWTTY' '评估类别' '' '' '' '' '','MAABC' 'ABC标识' '' '' '' '' '','EKGRP' '采购组' '' '' '' '' '','EISBE' '安全库存' '' '' '' '' '','MABST' '最大库存级别' '' '' '' '' ''.ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_event_handler_proc
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- GO_EVENT1
*& <-- GO_ALV_GRID1
*&---------------------------------------------------------------------*
FORM frm_event_handler_proc CHANGING p_go_event1 TYPE REF TO lcl_event_receiverp_go_alv_grid1 TYPE REF TO cl_gui_alv_grid.CALL METHOD p_go_alv_grid1->set_ready_for_inputEXPORTINGi_ready_for_input = 1."修改,按钮后刷新CALL METHOD p_go_alv_grid1->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_enter.CALL METHOD p_go_alv_grid1->register_edit_eventEXPORTINGi_event_id = cl_gui_alv_grid=>mc_evt_modified.CREATE OBJECT p_go_event1.IF p_go_alv_grid1 = go_alv_grid1.MESSAGE '触发事件' TYPE 'I'.SET HANDLER p_go_event1->handle_double_click FOR p_go_alv_grid1.SET HANDLER p_go_event1->handle_toolbar FOR p_go_alv_grid1.SET HANDLER p_go_event1->handle_data_changed FOR p_go_alv_grid1." SET HANDLER p_go_event1->handle_onf4 FOR p_go_alv_grid1.ENDIF.SET HANDLER p_go_event1->handle_hotspot_click FOR p_go_alv_grid1.SET HANDLER p_go_event1->handle_user_command FOR p_go_alv_grid1.ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_call_alv_list_proc
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
FORM frm_call_alv_list_proc_a.CALL METHOD go_alv_grid1->set_table_for_first_displayEXPORTINGis_variant = gs_variant1i_save = 'A'is_layout = gs_layoutit_toolbar_excluding = gt_exclude[]CHANGINGit_outtab = gt_out_a[]it_fieldcatalog = gt_fieldcat1[]EXCEPTIONSinvalid_parameter_combination = 1program_error = 2too_many_lines = 3OTHERS = 4.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.CALL METHOD go_alv_grid2->set_table_for_first_displayEXPORTINGis_variant = gs_variant2i_save = 'A'is_layout = gs_layoutit_toolbar_excluding = gt_exclude[]CHANGINGit_outtab = gt_data_b[]it_fieldcatalog = gt_fieldcat2[]EXCEPTIONSinvalid_parameter_combination = 1program_error = 2too_many_lines = 3OTHERS = 4.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& Form handle_data_changed
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> ER_DATA_CHANGED
*& --> SENDER
*&---------------------------------------------------------------------*
FORM handle_data_changed USING po_data_changed TYPE REF TO cl_alv_changed_data_protocolpo_sender TYPE REF TO cl_gui_alv_grid.DATA : ls_stable TYPE lvc_s_stbl,ls_s_col TYPE lvc_s_col. "#EC NEEDEDCLEAR : ls_stable.ls_stable-row = 'X'.ls_stable-col = 'X'.DATA gt_out LIKE TABLE OF gs_out_a.LOOP AT gt_out_a INTO gs_out_a WHERE check = 'X'.APPEND gs_out_a TO gt_out.ENDLOOP.IF gt_out[] IS NOT INITIAL.SELECT *FROM marcINTO CORRESPONDING FIELDS OF TABLE gt_data_bFOR ALL ENTRIES IN gt_outWHERE matnr = gt_out-matnr.ENDIF.CALL METHOD go_alv_grid2->set_frontend_layoutEXPORTINGis_layout = gs_layout.CALL METHOD go_alv_grid2->refresh_table_displayEXPORTINGi_soft_refresh = ' 'is_stable = ls_stable.* CALL METHOD go_alv_grid2->refresh_table_display "数据刷新时固定位置
* EXPORTING
* is_stable = ls_stable.
* CLEAR gt_data_b[].
ENDFORM.
*&---------------------------------------------------------------------*
*& Form handle_double_click
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW
*& --> E_COLUMN
*& --> ES_ROW_NO
*&---------------------------------------------------------------------*
FORM handle_double_click USING pv_row TYPE lvc_s_rowpv_column TYPE lvc_s_colpv_row_no TYPE lvc_s_roid.DATA ls_stable TYPE lvc_s_stbl.ls_stable-row = 'X'.ls_stable-col = 'X'.READ TABLE gt_out_a INTO gs_out_a INDEX pv_row-index.IF sy-subrc = 0.SELECT *FROM marcINTO CORRESPONDING FIELDS OF TABLE gt_data_bWHERE matnr = gs_out_a-matnr.ENDIF.CALL METHOD go_alv_grid2->set_frontend_layoutEXPORTINGis_layout = gs_layout.CALL METHOD go_alv_grid2->refresh_table_displayEXPORTINGi_soft_refresh = ' 'is_stable = ls_stable.MESSAGE '双击' TYPE 'S'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form handle_hotspot_click
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW_ID
*& --> E_COLUMN_ID
*&---------------------------------------------------------------------*
FORM handle_hotspot_click USING p_e_row_id TYPE lvc_s_rowp_e_column_id TYPE lvc_s_col.DATA ls_stable TYPE lvc_s_stbl.ls_stable-row = 'X'.ls_stable-col = 'X'.READ TABLE gt_out_a INTO gs_out_a INDEX p_e_row_id-index.IF sy-subrc = 0.SELECT *FROM marcINTO CORRESPONDING FIELDS OF TABLE gt_data_bWHERE matnr = gs_out_a-matnr.ENDIF.CALL METHOD go_alv_grid2->set_frontend_layoutEXPORTINGis_layout = gs_layout.CALL METHOD go_alv_grid2->refresh_table_displayEXPORTINGi_soft_refresh = ' 'is_stable = ls_stable.MESSAGE '单击' TYPE 'S'.
ENDFORM.
屏幕、状态:
因为我们分屏的话基本不需要用到主屏幕的按钮,所以建议把它们全部删掉
sap docking 简单分屏alv相关推荐
- mac 桌面分屏软件_让你更加详细了解Mac分屏功能
原标题:让你更加详细了解Mac分屏功能 对于只需要简单分屏需求的用户而言,Mac自带的分屏功能已经足够一般用户用了,小小的一个分屏功能可以大大提高我们的工作效率,对于需求不是很深度的普通用户,第三方专 ...
- docking 分屏
在项目过程中,一般写的是ooalv,分上下的,或者几个 屏幕, 但是这种方式有点缺点就是,不能拖动将屏幕随意的分开, 固定的高度宽度都是在格式里面去改,比较不方便,不灵活. 以docking的方式则可 ...
- 将ipad作为电脑拓展屏或分屏的简单方法
用Ipad实现电脑分屏的方法是挺简单的,但鉴于部分小白找不到合适的门路,在此重新分享一下. 需要的装备: ipad 电脑 数据连接线 方法:某宝上搜索 duet display ,只需1元左 ...
- 视频监控分屏简单例子
第一次入住园子,第一次写博客好紧张:) 最近在做关于一个视频监控的项目涉及到分屏显示功能.下载了几个网上的例子看下都不是太符合要求,所以只能自己动手改造一下 首先定义好要分屏样式的数组: //X,Y, ...
- ios分屏_其实iOS远没那么简单!这些好用的隐藏技巧,希望你不是第一次用
其实iOS远没那么简单!这些好用的隐藏技巧,希望你不是第一次用 苹果iOS系统一项以简洁著称,每次更新系统,都会在系统更新里面,说的非常清楚明白,一些使用技巧.并且相较于安卓系统,苹果iOS系统看起来 ...
- 华为Mate X遇上拼多多:分屏比价+多任务操作,拼单更简单
华为Mate X已经上市一段时间了,但火热程度却丝毫未减.作为国内折叠屏手机的领军者,Mate X无论是在做工.品质,还是在技术.创新等方面,均做出了颠覆性改变,市场上一机难求. 伴随华为Mate X ...
- 安卓分屏模式的简单适配
Android N 添加了对同时显示多个应用窗口的支持. 手机上两个应用可以在"分屏"模式中左右并排或上下并排显示. 如何进入分屏模式 打开App,长按底部Overview按键(底 ...
- pad 分屏简单总结
@pad 分屏总结 只有iOS11及以上系统的iPad才支持分屏的功能,不是所有pad都支持分屏操作,iPad Air.iPad mini2无法实现分屏,iPad必须mini4及以上,以下都不支持. ...
- 转 ABAP_ALV_Function方式与OO方式(较为简单、普通的ALV)
ABAP_ALV_Function方式与OO方式(较为简单.普通的ALV) 分类: SAP ABAP2013-01-31 09:58 1511人阅读 评论(0) 收藏 举报 目录 一.ALV简介 1. ...
最新文章
- eBay数据科学家李睿:自然语言处理在eBay的技术实践 数据 网络 类别 技术 分类器 阅读1593 近日,在飞马网主办的“FMI人工智能大数据高峰论坛”上,来自eBay的数据科学家李睿
- [leetcode] 3.无重复字符的最长子串
- Android录制音频的三种方式
- 世界你好! 个人网站搭建过程
- 网店如何提高顾客的回购率?
- delphi BLE 后台
- 声网3D空间音频技术解析:3D空间音效+空气衰减模拟+人声模糊
- 计算机软件图标不正常,桌面图标显示不正常,详细教您桌面图标显示不正常怎么解决...
- c语言函数实现数组输入输出
- opencv studay3
- PostgreSQL11 | pgadmin4基本使用
- android 开机动画实现,Android App启动画面实现
- 系统封装_Ghost光盘制作
- 色环电阻阻值如何识别
- SRM 683 div1 hard
- 提高电脑运行速度--关闭电脑无用服务
- 选择粘贴性无html,用好Office的选择性粘贴
- 2.4G模块及SPI通讯
- 微软学术搜索项目10个版本的历程 - 分析流程
- 【Mac】电脑维修 换电池之被坑记
热门文章
- 金融脱媒(Financial Disintermediation),又称金融非中介化
- Echarts饼图,环形图,鼠标触碰后取消默认放大效果
- 计算机动画专业要学什么课程,学动画专业的应该用什么什么配置的笔记本电脑?...
- 09-使用snappy对Sentinel-1 GRDH数据进行预处理
- 新闻营销推广怎么做?
- 洛谷Java入门级代码
- iOS推送流程(APNS)
- JS使用Lodop控件打印表单和二维码
- WEB攻击之 CSRF 攻击及防御策略
- 矩阵分析理论在实际工程中的应用_论述题:会软件操作≠会做有限元分析(100分)...