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_containerrow column ).
*  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_containerrow column ).
*  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_containerrow column ).
*  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.
*&---------------------------------------------------------------------*

实现效果如下:


  

猜你喜欢

转载自blog.csdn.net/Sundam/article/details/78679864