原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
通过SAP ENJOY演示中心可以学习SAP常用容器的用法(TCODE: DWDM )
其中有5个DEMO程序介绍不同的容器
• 自定义容器
• 固定容器(DOCKING容器)
• 拆分器容器
• easy 拆分器容器
• 对话框容器
**本文主要介绍DOCKING容器的优点及用法.**
可以参考DEMO程序
RSDEMO_DOCKING_CONTROL
结合下文理解DOCKING容器的使用.
二
复杂屏幕设计
一般情况下, 我们使用全屏ALV来显示清单.此时ALV清单占据整个屏幕, 用户调整分辨率或字体大小时,不会影响屏幕的显示.
如果在同一个屏幕上既有输入/输出字段, 又有ALV清单时, 如下图.
就无法使用全屏ALV了. 此时可以选择两种做法.
三
通常做法
通常做法是在屏幕上加上输入输出字段或选择子屏幕后, 再通过一个定制控制绘制一个容器位置, 为了尽量占用屏幕空间,
在设计屏幕时,把定制控制填充更多的屏幕位置,同时设置调整大小.
(设置调整大小可以解决部分ALV显示出现双边框的问题.出现双边框时,查看完整的内容需要两次拖动边框,很麻烦.)
使用定制控制创建一个容器, 后面ALV使用该容器即可.
四
通常做法的弊端
使用上述方式设计屏幕后, 如果客户端电脑的屏幕分辨率更高,或者用户调整了屏幕字段与显示大小等. 都会导致屏幕显示不完整
如下图, 有大量屏幕留白,虽然不影响功能, 但是高分辨率的电脑看着屏幕空间浪费,不能显示更多的内容.还是有点不爽.
低分辨率的电脑则可能出现边框拖动条,查看完整内容需要不停拖动.
五
改用DOCKING容器
改用DOCKING容器,则可以完美解决上述问题(下图时同一个程序改用新容器后的界面). 并且无论分辨率还是屏幕字体,显示大小的调整,显示的内容都是一致的.
六
DOCKING容器使用方式
DOCKING容器的使用
(示例代码中使用DOCKING后,再使用了拆分容器,创建了左/右两个容器放不同的ALV内容
创建容器对象实例的重要参数
• REPID : 容器停靠的程序
• DYNNR : 容器停靠的屏幕 (只能是程序的主屏幕,子屏幕不能停靠)
• SIDE : 容器停靠的方向, 上下左右四个方向可以设置
• EXTENSION: 容器占用的空间
• RATIO : 容器占用的屏幕百分比
七
构造新的方法
DOCKING容器对象创建的时候, 可以通过参数 RATIO 设置容器占用屏幕的百分比. 但是后续如果想调整占用百分比时却没有找到SET_RATIO方法.
该对象只能通过方法 SET_EXTENSION 设置占用屏幕的大小.
但是对象有GET_RATIO 和 GET_EXTENSION方法. 可以自行写出
类似与SET_RATIO的方法调整屏幕占用的百分比.(也可以创建一个类继承cl_gui_docking_container,在新类中创建SET_RATIO方法).
八
总结
DOCKING容器的应用可以解决自定义的程序在不同分辨率的客户端的一致性显示问题.让高分辨率的电脑能够呈现出与低分辨率电脑一致的全屏内容,
建议在复杂界面开发中采用.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
**公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群**