國内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)SAPFrontEndSAPguignhpx.exe”
如果一切正常工作,可以看到一隻渲染好的機器貓(哆啦A夢)。
關于HPGL的文法手冊,可以在這個網站上查閱:
http://www.isoplotec.co.jp/HPGL/eHPGL.htm本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。