天天看點

使用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)SAPFrontEndSAPguignhpx.exe”

如果一切正常工作,可以看到一隻渲染好的機器貓(哆啦A夢)。

關于HPGL的文法手冊,可以在這個網站上查閱:

http://www.isoplotec.co.jp/HPGL/eHPGL.htm

本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。

繼續閱讀