使用SAPGUI画图
国内80后上的编程课应该都学过Logo这门编程语言:
Logo语言是一门专门设计用来进行编程教学的语言,于1967年由Wally Feurzeig, Seymour Papert和Cynthia Solomon发明的。
下图是用Logo语言画出来的图案。
Perhaps I practiced it in Pentium 386? I could not remember it clearly.
同样,在SAPGUI里内发现有一个非常古老的ABAP包,最后一次修改已经是22年前的1995年了。这比SAP成都研究院很多新同事的年龄都要大。
这个包提供了一个HPGL接口。Hewlett-Packard Graphics Language,简称为HPGL,是一种打印机控制语言,由Hewlett-Packard设计。
下面是我用ABAP代码写的一个HPGL控制台,可以调用函数GRAPH_HPGL,像小时候使用Logo语言那样在屏幕上作图。
REPORT z.
DATA: go_text_edit TYPE REF TO cl_gui_textedit,
go_cust_container TYPE REF TO cl_gui_custom_container,
ok_code TYPE sy-ucomm.
DATA lt_text(256) TYPE c OCCURS 0.
DATA: BEGIN OF lt_hpgl OCCURS 1,
entry(128),
END OF lt_hpgl.
CALL SCREEN 0101.
MODULE status_0101 OUTPUT.
SET PF-STATUS 'JERRY_CONSOLE'.
SET TITLEBAR 'JERRY_TITLEBAR'.
IF go_cust_container IS INITIAL.
go_cust_container = NEW #( container_name = 'CUSTOM_CONTROL' ).
CREATE OBJECT go_text_edit
EXPORTING
parent = go_cust_container
wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_to_linebreak_mode = cl_gui_textedit=>false.
ENDIF.
ENDMODULE.
MODULE user_command_0101 INPUT.
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'BACK' OR 'QUIT' OR 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'EXECUTE'.
CLEAR: lt_text, lt_hpgl[].
go_text_edit->get_text_as_r3table( IMPORTING table = lt_text ).
LOOP AT lt_text ASSIGNING FIELD-SYMBOL(<text>).
APPEND INITIAL LINE TO lt_hpgl ASSIGNING FIELD-SYMBOL(<hpgl>).
<hpgl>-entry = <text>.
ENDLOOP.
CALL FUNCTION 'GRAPH_HPGL'
TABLES
data = lt_hpgl.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
The PBO and API for screen 101:
The layout of screen 101, 需要手工创建一个名为“CUSTOM_CONTROL”的控件。
The screen status:
执行这个report,点击Load Local file,从本地加载Doraemon.txt文件,内容可以从文末获得。
当然也可以从我的github下载:
执行之后,位于本地安装目录下的gnhpx.exe文件会根据txt里的指令进行图形渲染:
“C:\Program Files (x86)\SAP\FrontEnd\SAPgui\gnhpx.exe”
如果一切正常工作,可以看到一只渲染好的机器猫(哆啦A梦)。
关于HPGL的语法手册,可以在这个网站上查阅:
http://www.isoplotec.co.jp/HPGL/eHPGL.htm
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
使用SAPGUI画图的更多相关文章
- 使用ABAP绘制可伸缩矢量图
Jerry去年的文章 动手使用ABAP Channel开发一些小工具,提升日常工作效率 里曾经介绍过一些用ABAP实现的可供娱乐的小程序,比如用古老的HPGL接口在SAPGUI里绘图: 关于如何用SA ...
- Ubuntu 16.10 安装KolourPaint 4画图工具
KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...
- Android开发之画图的实现
Android开发之画图的实现 四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...
- matlab画图函数plot()/set/legend
简单plot()/legend/XY轴范围axis 除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等:测试代码如下 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); ...
- 对Raphael画图标的一个jquery简单封装
公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...
- java画图之曲线拖动
目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...
- java画图之初体验
1.实现画图程序所需的API类 JFrame JButton ActionListener 动作事件接口 ActionEvent ...
- 【JavaScript】操作Canvas画图
1.页面添加 Canvas 标签 标签内可以写文字,浏览器不支持Canvas的情况下显示, 2.js获取 Canvas 标签 3.利用js函数画图,[线][图][文字] 源:http://www.li ...
- 用Canvas制作简单的画图工具
今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...
随机推荐
- [转] 利用shell创建文本菜单与窗口部件的方法
[From] http://www.jb51.net/article/129460.htm 前言 创建交互式shell脚本最常用的方法是使用菜单.提供各种选项可以帮助脚本用户了解脚本能做什么,不能做什 ...
- 网络那点事之socket队列
1.socket 在内核中是怎么表示的,怎么与文件系统建立关系 2.socket在什么时候创建了接收队列,接收队列的长度是怎么确定的 3.接收到一个数据包根据怎么找到到接收队列的 使用hash算法,分 ...
- 【研究】struts2-045漏洞
攻击者可以通过构造HTTP请求头中的Content-Type值可能造成远程代码执行. 工具: K8(链接:https://pan.baidu.com/s/1kVxgFNx 密码:ygxf) Tomca ...
- UVa 253
UVa 253 #include <iostream> #include <cstdio> #include <string> #include <cstri ...
- 常用维护SQL-数据清理
truncate某个库的表数据 show full processlist; select concat('truncate table ',table_schema,'.',table_name,' ...
- gulp打包css/image/Less/Sass
其他的和打包前一篇随笔(打包js) http://www.cnblogs.com/teersky/p/7251329.html 相同,本篇文章主要写gulpFile.js的配置: 安装CSS打包插件: ...
- failed to push some refs to 'git@github.com:xxx/xxx.git' 解决方法
此时很多人会尝试下面的命令把当前分支代码上传到master分支上. $ git push -u origin master 但依然没能解决问题 会出现: failed to push some ref ...
- Docker的镜像迁移
[root@localhost ~]# mkdir /opt/soft/ [root@localhost ~]# docker save c3987965c15d > /opt/soft/pos ...
- File upload error - unable to create a temporary file
php上传图片的时候会报错: File upload error - unable to create a temporary file 文件上传错误 - 无法创建一个临时文件 你只需要打开你的php ...
- Oracle服务器重命名
转载自:http://www.codesec.net/view/120387.html 因工作需要准备了一台服务器专门按照oracle数据库,并且服务器上安装了windows 2008R2操作系统,在 ...