ABAP SPLITTER技术总结及使用技巧

ABAP SPLITTER技术总结及使用技巧

SPLITTER的两种实现方式:

1.切割CONTAINER方式

使用时需引用cl_gui_splitter_container类

  DATA lo_container    TYPE REF TO cl_gui_splitter_container.
  DATA lo_left         TYPE REF TO cl_gui_custom_container.

实例化container后再以此实例化SPLITTER CONTORL

  CREATE OBJECT lo_left  “实例化container
    
EXPORTING
      container_name 'LEFT_CON'. 画好的container名称

  CREATE OBJECT lo_container   “实例化SPLITTER CONTORL

    EXPORTING
      parent  lo_left
      
rows    2
      columns 1.

这里的行/列代表把container 切割成几行几列,上面这个例子就是将container切割成了两行一列的上下两个部分

之后就可以用来实例化你所需要的窗口类控件了,比如alv_grid或TREE CONTORL

*建立树对象
  CREATE OBJECT lo_tree
    
EXPORTING
      parent   lo_container->get_containerrow column )
      node_selection_mode cl_gui_simple_tree=>node_sel_mode_single.

将container的第一行第一列分配给树对象

 

*建立ALV对象

  CREATE OBJECT lo_alv
    
EXPORTING
      i_parent lo_container->get_containerrow column ).

将container的第二行第一列分配给ALV对象

效果如下:

这种方法较为简单,效果也很明显,缺点是无法使用画屏的方式来生成想要的控件,而且分块是偶数个,一旦超过两块整个报表就会显得很杂乱,该方法适合用来直接生成窗口类控件

2.切割SCREEN方式

使用时需引用cl_dynpro_splitter类

DATA splitter TYPE REF TO cl_dynpro_splitter.

START-OF-SELECTION.

  CREATE OBJECT splitter
    
EXPORTING
      splitter_name 'SPLITTER'.

  CALL SCREEN 100.

MODULE set_status OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE set_sash OUTPUT.
  splitter->set_sash( ).
ENDMODULE.

MODULE cancel.
  LEAVE PROGRAM.
ENDMODULE.

MODULE get_sash INPUT.
  splitter->get_guisash( ).
ENDMODULE.

在我看来这是种比较玄学的方式,我只是在SAP中找到了一个名为DEMO_DYNPRO_SPLITTER_CONTROL的DEMO程序,然而我并不知道如何直接在屏幕上画出splitter来,每次使用时需要先复制这个程序再做修改

进入屏幕绘制器后画风是这个样子滴

splitter两边各分配了一块子屏幕,只能编辑大小无法添加其他屏幕控件,然而我用了一种比较挫的方法勉强添加了一些屏幕控件,

方法就是先将屏幕下载,对其文本编辑后再上载回程序

我尝试着在上面添加了一小块子屏幕做为顶端

屏幕变成了这样

我已经尽力了

这种splitter方式的强大之处就是你可以在子屏幕上做普通画屏能做的任何事,完全可以在其中一块子屏幕上再调用第一种SPLITTER方式:

猜你喜欢

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