abap SPLITTER 开发实例
此方法可以实现用单个container放置多个ALV grid,每个ALV grid可以任意拖拽大小,
切该container不影响屏幕中放置的其他container .
*&---------------------------------------------------------------------*
*& Form FORM_INIT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM form_init .
DATA go_container TYPE REF TO cl_gui_alv_grid.
DATA go_right TYPE REF TO cl_gui_alv_grid.
DATA lo_container TYPE REF TO cl_gui_splitter_container.
DATA lo_main TYPE REF TO cl_gui_custom_container.
DATA l_fieldcat TYPE lvc_t_fcat.
DATA l_pfcat TYPE lvc_t_fcat.
DATA l_ppcat TYPE lvc_t_fcat.
DATA wa_layout_sjmx TYPE lvc_s_layo.
DATA wa_layout_pomx TYPE lvc_s_layo.
DATA wa_layout_prmx TYPE lvc_s_layo.
DATA l_rootkey TYPE lvc_nkey.
DATA l_key TYPE lvc_nkey.
DATA l_text TYPE lvc_value.
DATA go_meta TYPE REF TO cl_gui_alv_grid.
DATA go_pack TYPE REF TO cl_gui_alv_grid.
DATA go_metapack TYPE REF TO cl_gui_alv_grid.
* DATA lo_event TYPE REF TO cl_event_receiver.
CREATE OBJECT lo_main
EXPORTING
container_name = 'MAIN'.
CREATE OBJECT lo_container "指定container
EXPORTING
parent = lo_main
rows = 2
columns = 2.
* CREATE OBJECT lo_event. "注册 event
* SET HANDLER lo_event->handle_hotspot_click FOR go_meta.
* SET HANDLER lo_event->handle_double_click FOR go_meta.
* SET HANDLER lo_event->handle_toolbar FOR go_meta.
* SET HANDLER lo_event->handle_command FOR go_meta.
CREATE OBJECT go_meta
EXPORTING
i_parent = lo_container->get_container( row = 1 column = 1 ).
* CREATE OBJECT go_meta
* EXPORTING
* i_parent = go_container->get_container( row = 1 column = 1 ). "第一列的第一行
PERFORM form_append_field:
USING 'VBELN' '销售凭证' CHANGING l_fieldcat,
USING 'POSNR' '销售凭证项目' CHANGING l_fieldcat,
USING 'WERKS' '工厂' CHANGING l_fieldcat,
USING 'AUART' '销售凭证类型' CHANGING l_fieldcat,
USING 'BSTNK' '客户参考' CHANGING l_fieldcat,
USING 'POSEX' '优先采购订单的项目号' CHANGING l_fieldcat,
USING 'KUNNR' '售达方' CHANGING l_fieldcat,
USING 'KUNWE' '送达方' CHANGING l_fieldcat,
USING 'ZZDKH' '消费者编码' CHANGING l_fieldcat,
USING 'ZKHMC' '消费者名称' CHANGING l_fieldcat,
USING 'MATNR' '物料编号' CHANGING l_fieldcat,
USING 'MATKL' '物料组' CHANGING l_fieldcat,
USING 'KWMENG' '数量' CHANGING l_fieldcat,
USING 'VRKME' '销售单位' CHANGING l_fieldcat,
USING 'ARKTX' '销售订单项目短文本' CHANGING l_fieldcat,
USING 'ZWLLX' '物料类型' CHANGING l_fieldcat,
USING 'MAKTX' '物料描述' CHANGING l_fieldcat.
CREATE OBJECT go_pack
EXPORTING
i_parent = lo_container->get_container( row = 1 column = 2 ).
* CREATE OBJECT go_pack
* EXPORTING
* i_parent = go_right->get_container( row = 1 column = 1 ). "第二列的第一行
PERFORM form_append_field:
USING 'EBELN' '采购凭证' CHANGING l_pfcat,
USING 'EBELP' '行项目' CHANGING l_pfcat,
USING 'ETENR' '计划行' CHANGING l_pfcat,
USING 'EINDT' '交货日期' CHANGING l_pfcat,
USING 'MENGE' '数量' CHANGING l_pfcat,
USING 'WEMNG' '已交货数量' CHANGING l_pfcat,
USING 'BANFN' '采购申请' CHANGING l_pfcat,
USING 'BNFPO' '行项目' CHANGING l_pfcat,
USING 'MATNR' '物料编号' CHANGING l_pfcat,
USING 'MAKTX' '物料描述' CHANGING l_pfcat,
USING 'LIFNR' '供应商' CHANGING l_pfcat,
USING 'NAME1' '供应商' CHANGING l_pfcat.
CREATE OBJECT go_metapack
EXPORTING
i_parent = lo_container->get_container( row = 2 column = 2 ).
* CREATE OBJECT go_metapack
* EXPORTING
* i_parent = go_right->get_container( row = 2 column = 1 ). "第二列的第二行
PERFORM form_append_field:
USING 'BANFN' '采购申请编号' CHANGING l_ppcat,
USING 'BNFPO' '采购申请的项目编号' CHANGING l_ppcat,
USING 'BSART' '采购申请凭证类型' CHANGING l_ppcat,
USING 'EKGRP' '采购组' CHANGING l_ppcat,
USING 'MATNR' '物料编号' CHANGING l_ppcat,
USING 'MAKTX' '物料描述' CHANGING l_ppcat,
USING 'WERKS' '工厂' CHANGING l_ppcat,
USING 'LGORT' '库存地点' CHANGING l_ppcat,
USING 'MATKL' '物料组' CHANGING l_ppcat,
USING 'MENGE' '采购申请数量' CHANGING l_ppcat,
USING 'MEINS' '采购申请计量单位' CHANGING l_ppcat,
USING 'BADAT' '申请(请求)日期' CHANGING l_ppcat,
USING 'LFDAT' '项目交货日期' CHANGING l_ppcat,
USING 'DISPO' 'MRP控制者' CHANGING l_ppcat,
USING 'BSMNG' '对应于此采购申请的订货数量' CHANGING l_ppcat,
USING 'ZSYSL' '未转换数量' CHANGING l_ppcat.
wa_layout_sjmx-grid_title = '合计需求明细'.
wa_layout_sjmx-sel_mode = 'A'.
wa_layout_pomx-grid_title = 'PO明细'.
wa_layout_pomx-sel_mode = 'A'.
wa_layout_prmx-grid_title = 'PR明细'.
wa_layout_prmx-sel_mode = 'A'.
CALL METHOD go_meta->set_table_for_first_display
EXPORTING
is_layout = wa_layout_sjmx
CHANGING
it_fieldcatalog = l_fieldcat
it_outtab = gt_outmx[].
CALL METHOD go_pack->set_table_for_first_display
EXPORTING
is_layout = wa_layout_pomx
CHANGING
it_fieldcatalog = l_pfcat
it_outtab = gt_pomx_02[].
CALL METHOD go_metapack->set_table_for_first_display
EXPORTING
is_layout = wa_layout_prmx
CHANGING
it_fieldcatalog = l_ppcat
it_outtab = gt_prmx_03[].
* CALL METHOD go_meta->free .
* CALL METHOD go_pack->free .
* CALL METHOD go_metapack->free .
ENDFORM.
FORM form_append_field USING fname ftext CHANGING ch_fcat TYPE lvc_t_fcat.
DATA wa_field TYPE lvc_s_fcat.
wa_field-fieldname = fname.
wa_field-coltext = ftext.
wa_field-outputlen = 20.
APPEND wa_field TO ch_fcat.
ENDFORM.
*&---------------------------------------------------------------------*
实现效果如下: