SAP GUI 一些实用技巧分享

SAP GUI 是 SAP 的通用客户端,用于访问 SAP 应用程序中提供的开发和业务功能,例如 SAP ERP、SAP Business Suite(SAP CRM、SAP SCM 和 SAP PLM)、SAP Business Intelligence 等。 SAP GUI 既是 SAP 应用的开发环境,也是运行环境。它从 SAP 服务器获取信息,例如在其窗口中需要显示的信息,在何时,何处,以及以什么样的方式来显示。

本文给大家分享笔者使用 SAP GUI 进行开发这些年来,积累的一些实用技巧。

使用 SAP GUI 绘制图形

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

Logo 语言是一门专门设计用来进行编程教学的语言,于 1967 年由 Wally Feurzeig, Seymour PapertCynthia Solomon发明。

下图是用 Logo 语言画出来的图案。

SAP GUI 一些实用技巧分享_第1张图片

同样,在 SAP GUI 里内发现有一个非常古老的 ABAP 包,最后一次修改已经是 22 年前的 1995 年了。这比 SAP 成都研究院很多新同事的年龄都要大。

SAP GUI 一些实用技巧分享_第2张图片

这个包提供了一个 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.

Screen 101 的 PBO 和 PAI 模块:

SAP GUI 一些实用技巧分享_第3张图片

Screen 101 的界面布局,需要手工创建一个名为 CUSTOM_CONTROL 的控件。

SAP GUI 一些实用技巧分享_第4张图片

屏幕状态:

SAP GUI 一些实用技巧分享_第5张图片

执行这个 report,点击 Load Local file,从本地加载 Doraemon.txt 文件,内容可以从我的github下载:

SAP GUI 一些实用技巧分享_第6张图片

执行之后,位于本地安装目录下的 gnhpx.exe 文件会根据 txt 里的指令进行图形渲染:

C:\Program Files (x86)\SAP\FrontEnd\SAPgui\gnhpx.exe

SAP GUI 一些实用技巧分享_第7张图片

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

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

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

如何通过一个 SAP GUI 屏幕反查这个屏幕对应的事务码

假设我通过某种跳转方式打开了下图这个 SAP GUI的屏幕,但我想搞清楚用哪一个事务码可以直接到达这个屏幕,而不通过繁琐的点击,应该怎么做?

SAP GUI 一些实用技巧分享_第8张图片

步骤1,点击 Order 字段,按 F1 打开帮助界面,

SAP GUI 一些实用技巧分享_第9张图片

点上图的图标显示技术信息,得到了实现这个屏幕的程序名称:SAPLCOCU:

SAP GUI 一些实用技巧分享_第10张图片

双击程序名,进入程序实现,再点击这个图标:

SAP GUI 一些实用技巧分享_第11张图片

从而打开了这个程序所属的 function group COCU,其对应的 ABAP 包为 CO:

SAP GUI 一些实用技巧分享_第12张图片

在这个 package CO 里,终于找到了我想要知道的事务码名称:CO01/02/03, 用于操作S/4HANA 里的 production order 即生产订单。

SAP GUI 一些实用技巧分享_第13张图片

SAP GUI 系统登录页面配置的 SAProuter 功能讲解

大家在安装完 SAP GUI 后,准备添加系统列表进行登录时,注意过这个 SAP router 字段么?

SAP GUI 一些实用技巧分享_第14张图片

从 SAP 的帮助文档上可以找到 SAProuter 的定义:

SAProuter is an SAP program that acts as an intermediate station (proxy) in a network connection between SAP systems, or between SAP systems and external networks. SAProuter controls the access to your network, and, as such, is a useful enhancement to an existing firewall system (port filter).

Figuratively, the firewall forms an impenetrable “wall”around your network. However, since particular types of connections need to penetrate this wall, a “gate”has to be made in the firewall. SAProuter assumes control of this gate.
In short, SAProuter provides you with the means of controlling access to your SAP system.

SAProuter 是一个 SAP 发布的应用,在 SAP 系统与系统之间,SAP 系统与外部网络之间扮演着代理的角色。SAProuter 能实现对 SAP 系统的访问控制,是企业防火墙的有效补充。

如下图所示,部署于企业局域网的客户端 SAP GUI 进行系统登录,登录请求通过局域网内的 SAP router 转发到 Internet 网络上的另一台 SAP Router,再转发给部署于企业内网的 ERP 服务器。

SAP GUI 一些实用技巧分享_第15张图片
SAP GUI 一些实用技巧分享_第16张图片

上述描述的场景里,形象的说好比在 ERP 服务器所在的企业内网和 SAP GUI 的客户端所在的内网打了两个洞,在洞里部署两台 SAP router,确保只有受限的网络请求能够进出这两个被防火墙保护的安全网络。

这种 打洞 的思路,在 SAP 另一款解决方案:SAP Cloud Connector 里有类似的用法:

SAP GUI 一些实用技巧分享_第17张图片

我们可以把用 SAP GUI 登录系统的快捷方式保存到本地,下次双击即可直接用 SAP GUI 登入系统:

SAP GUI 一些实用技巧分享_第18张图片

用记事本打开,发现这些 .sap 文件的内容如下:

SAP GUI 一些实用技巧分享_第19张图片

我们主要观看红色高亮部分,其中 H 表示主机名,S 表示服务即 Service.

总结

SAP GUI 是 SAP 的通用客户端,用于访问 SAP 应用程序中提供的开发和业务功能,它既是 SAP 应用的开发环境,也是运行环境。本文分享了笔者使用 SAP GUI 工作多年积累的一些使用小技巧,例如使用 SAP GUI 绘制简单的矢量图,根据一个屏幕反查该屏幕对应事物码,以及 SAP Router 的概念解析。

你可能感兴趣的:(SAP GUI 一些实用技巧分享)