Methods of CL_DEMO_OUTPUT

PS:自己测试是display后的内表不能带表头。

类CL_DEMO_OUTPUT 在示例程序中创造了很多简单的数据输出的方法而不需要经典的list。这个类可以通过静态或实例化的方式使用。下面这些方法在输出流中创建输出。

  • 方法BEGIN_SECTION,NEXT_SECTION和END_SECTION创建标题和开始或结束标题级别。
  • 方法WRITE_DATA,WRITE_TEXT,WRITE_XML,WRITE_JSON和WRITE_HTML显示不同类型的输出。
  • 使用WRITE_DATA可以输出基本类型对象(不是引用类型),结构的组件和内表的行类型。
  • 其它方法创建格式化的输出数据如xml ,json,HTML。
  • 方法写是通用的。它处理ABAP数据和文本(非比例格式)。
  • 方法DISPLAY_……(只提供静态方法)工作方式为WRITE_…,但请关闭当前输出流并打开一个新的输出流。如果SAP GUI可用,则输出将显示在窗口中。
  • 方法行创建一个横向行。
  • 方法DISPLAY关闭当前输出流并打开一个新的输出流。如果SAP GUI可用,则输出将显示在窗口中。还可以选择像forWRITE一样传递数据来显示。
  • 方法GET的工作方式与DISPLAY类似,但不显示数据。相反,格式化的输出数据以文本字符串的形式返回,可以进一步处理。
  • 标准输出格式是HTML。您还可以选择使用制表器和换行符来选择简单的文本格式。您可以为静态方法选择带有SET_MODE方法的格式,也可以为实例方法选择factory methodNEW的输入参数模式。
  • CL_DEMO_OUTPUT类在自SP07以来的7.03/7.31版本和更高版本中可用。它有一个类文档。

代码示例

最简单和常见的用法如下:

SELECT * FROM SCARR INTO TABLE @DATA(IT_TAB).
CL_DEMO_OUTPUT=>DISPLAY( IT_TAB ).

使用CL_DEMO_OUTPUT的多个静态方法的程序可能如下所示:

SELECT * FROM SCARR INTO TABLE @DATA(CARRIERS).
CALL TRANSFORMATION ID SOURCE CARRIERS = CARRIERS
RESULT XML DATA(XML).
CL_DEMO_OUTPUT=>BEGIN_SECTION( `Some Text` ).
CL_DEMO_OUTPUT=>WRITE_TEXT( |blah blah blah \n| && |blah blah blah| ).
CL_DEMO_OUTPUT=>NEXT_SECTION( `Some Data` ).
CL_DEMO_OUTPUT=>BEGIN_SECTION( `Elementary Object` ).
CL_DEMO_OUTPUT=>WRITE_DATA( CARRIERS[ ]-CARRID ).
CL_DEMO_OUTPUT=>NEXT_SECTION( `Internal Table` ).
CL_DEMO_OUTPUT=>WRITE_DATA( CARRIERS ).
CL_DEMO_OUTPUT=>END_SECTION( ).
CL_DEMO_OUTPUT=>NEXT_SECTION( `XML` ).
CL_DEMO_OUTPUT=>WRITE_XML( XML ).
CL_DEMO_OUTPUT=>DISPLAY( ).

由于这看起来很丑陋,如果你在一个程序中调用了类的3到4个以上的方法,最好使用实例方法而不是静态方法:

CL_DEMO_OUTPUT=>NEW(
)->BEGIN_SECTION( `Some Text`
)->WRITE_TEXT( |blah blah blah \n| && |blah blah blah|
)->NEXT_SECTION( `Some Data`
)->BEGIN_SECTION( `Elementary Object`
)->WRITE_DATA( CARRIERS[ ]-CARRID
)->NEXT_SECTION( `Internal Table`
)->WRITE_DATA( CARRIERS
)->END_SECTION(
)->NEXT_SECTION( `XML`
)->WRITE_XML( XML
)->DISPLAY( ).

静态方法和实例方法如何具有相同的名称?

实例方法是接口方法。方法NEW返回一个类型为IF_DEMO_OUTPUT的引用变量。这个接口由CL_DEMO_OUTPUT实现。接口方法具有与类的静态方法相同的名称。

为什么要将这些方法链接起来呢?

为了方便起见,每个实例方法都返回自我参考。

如果你想要一个更简单的输出,你可以切换到文字模式:

SELECT * FROM SCARR INTO TABLE @DATA(IT_TAB).
CL_DEMO_OUTPUT=>new( 'TEXT' )->DISPLAY( it_tab ).

如果你想自己处理生成的格式化数据,你可以使用GET而不是DISPLAY:

SELECT * FROM SCARR INTO TABLE @DATA(IT_TAB).
DATA(HTML) = cl_demo_output=>GET( it_tab ).
CL_ABAP_BROWSER=>SHOW_HTML( HTML_STRING = HTML ).

这将产生与上面第一个示例相同的输出。

您还可以检查和运行以下程序,以获得所有可能性的完整概述:

  • DEMO_USAGE_OUTPUT_STATIC
  • DEMO_USAGE_OUTPUT_INSTANCE

例子如下:

ADT中的ABAP关键字文档(即Eclipse中的ABAP)提供了一个框架如何使用CL_DEMO_OUTPUT的示例。如果ABAP示例库的示例使用CL_DEMO_OUTPUT,则文档框架允许您执行示例并显示输出。这是通过从cl_demo_output获取HTML输出并将其合并到(非SAP GUI)文档显示中来实现的。

另一个例子相当引人注目。CL_DEMO_OUTPUT在SAP Teched 2013上亮相!

以下是Vishal Sikka博士主题演讲的截图:

(B.t.w。,请参阅AMDP, SQLScript与Open SQL的比较,以进一步查看该示例的性能结果;上面糟糕的ABAP结果来自嵌套的SELECT循环…)。

最新文章

  1. LoadRunner - 001
  2. JS编码解码
  3. HTML页面的布局
  4. (转)WEB第三方打印控件[ASP.NET常用工具]
  5. PCB阻抗调节
  6. ubuntu下apt-get update出现hash校验和错误
  7. Spring 3.x企业应用开发实战(9-1)----依赖注入
  8. Day_8.《无懈可击的web设计》-巧妙地浮动效果
  9. css3 翻牌(rotate) 以及翻转 导致边缘锯齿解决 方法
  10. 圖片裁剪大頭貼功能 - ASP.NET WebForm + jQuery + imgAreaSelect
  11. gsoap入门实例
  12. monitor.go
  13. python开发遇到的坑(2)mongodb安装路径权限问题
  14. EXCEL公式及宏
  15. Monte Carlo计算Pi,python实现
  16. mysql 5.6 解压缩版安装教程
  17. Java设计模式学习记录-适配器模式
  18. python socket编程函数介绍
  19. oracle归档日志配置查询
  20. D03——C语言基础学习PYTHON

热门文章

  1. volatile可见性案例-黑马
  2. 再次梳理AMD、CMD、CommonJS、ES6 Module的区别
  3. 软件文档写作-plantuml画用例图和时序图
  4. Element-ui 下拉列表 选项过多时通过自定义搜索来解决卡顿问题
  5. Redis入门(三)-Redis的安装及操作key的命令介绍
  6. SpringCloud微服务(06):Config组件,实现配置统一管理
  7. JAVA集合框架(一)-综述
  8. (四十六)c#Winform自定义控件-水波进度条-HZHControls
  9. Slickflow.NET 开源工作流引擎高级开发(六) -- WebTest 引擎接口模拟测试工具集
  10. JS中的slice()和splice()的区别以及记忆方式