使用SAPGUI画图

作者: _扫地僧_ | 来源:发表于2018-11-21 23:14 被阅读24次

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

    Logo语言是一门专门设计用来进行编程教学的语言,于1967年由Wally Feurzeig, Seymour PapertCynthia 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)\SAP\FrontEnd\SAPgui\gnhpx.exe”

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

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

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

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

    相关文章

      网友评论

        本文标题:使用SAPGUI画图

        本文链接:https://www.haomeiwen.com/subject/chzhqqtx.html