國內80後上的編程課應該都學過Logo這門編程語言:git
Logo語言是一門專門設計用來進行編程教學的語言,於1967年由Wally Feurzeig, Seymour Papert和Cynthia Solomon發明的。github
下圖是用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語言那樣在屏幕上做圖。ui
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」的控件。3d
The screen status:code
執行這個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的原創文章,請關注公衆號"汪子熙":