测试
全部博文(931)
分类: 架构设计与优化
2019-08-28 23:04:43
国内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(). 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文件,内容可以从文末获得。
当然也可以从我的github下载:
执行之后,位于本地安装目录下的gnhpx.exe文件会根据txt里的指令进行图形渲染:
“C:\Program Files (x86)\SAP\FrontEnd\SAPgui\gnhpx.exe”
如果一切正常工作,可以看到一只渲染好的机器猫(哆啦A梦)。
关于HPGL的语法手册,可以在这个网站上查阅:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":