博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SAPGUI画图
阅读量:6313 次
发布时间:2019-06-22

本文共 2033 字,大约阅读时间需要 6 分钟。

国内80后上的编程课应该都学过这门编程语言:

Logo语言是一门专门设计用来进行编程教学的语言,于1967年由Wally Feurzeig, 和发明的。

下图是用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,是一种打印机控制语言,由设计。

下面是我用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(
). APPEND INITIAL LINE TO lt_hpgl ASSIGNING FIELD-SYMBOL(
).
-entry =
. 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文件,内容可以从文末获得。

当然也可以从我的下载:

执行之后,位于本地安装目录下的gnhpx.exe文件会根据txt里的指令进行图形渲染:

“C:Program Files (x86)SAPFrontEndSAPguignhpx.exe”

如果一切正常工作,可以看到一只渲染好的机器猫(哆啦A梦)。

关于HPGL的语法手册,可以在这个网站上查阅:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

转载地址:http://ycexa.baihongyu.com/

你可能感兴趣的文章
第八章 进程间通信
查看>>
「镁客早报」AI可预测心脏病人死亡时间;机器人开始在美国送外卖
查看>>
MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
查看>>
物联网全面升级,十年内推动工业进入智能化新阶段
查看>>
spring-通过ListFactory注入List
查看>>
一种基于SDR实现的被动GSM嗅探
查看>>
阿里云ECS每天一件事D1:配置SSH
查看>>
SQL Server 性能调优(性能基线)
查看>>
uva 10801 - Lift Hopping(最短路Dijkstra)
查看>>
[Java Web]servlet/filter/listener/interceptor区别与联系
查看>>
POJ 2312Battle City(BFS-priority_queue 或者是建图spfa)
查看>>
从零开始学MVC3——创建项目
查看>>
CentOS 7 巨大变动之 firewalld 取代 iptables
查看>>
延时任务和定时任务
查看>>
linux下的权限问题
查看>>
教你如何使用Flutter和原生App混合开发
查看>>
Spring Boot 整合redis
查看>>
CSS hover改变背景图片过渡动画生硬
查看>>
JDBC(三)数据库连接和数据增删改查
查看>>
淘宝应对"双11"的技术架构分析
查看>>