1. 程式人生 > 其它 >SAP GUI 一些實用技巧分享

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 裡內發現有一個非常古老的 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.

Screen 101 的 PBO 和 PAI 模組:

Screen 101 的介面佈局,需要手工建立一個名為 CUSTOM_CONTROL 的控制元件。

螢幕狀態:

執行這個 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

如何通過一個 SAP GUI 螢幕反查這個螢幕對應的事務碼

假設我通過某種跳轉方式打開了下圖這個 SAP GUI的螢幕,但我想搞清楚用哪一個事務碼可以直接到達這個螢幕,而不通過繁瑣的點選,應該怎麼做?

步驟1,點選 Order 欄位,按 F1 開啟幫助介面,

點上圖的圖示顯示技術資訊,得到了實現這個螢幕的程式名稱:SAPLCOCU:

雙擊程式名,進入程式實現,再點選這個圖示:

從而打開了這個程式所屬的 function group COCU,其對應的 ABAP 包為 CO:

在這個 package CO 裡,終於找到了我想要知道的事務碼名稱:CO01/02/03, 用於操作S/4HANA 裡的 production order 即生產訂單。

SAP GUI 系統登入頁面配置的 SAProuter 功能講解

大家在安裝完 SAP GUI 後,準備新增系統列表進行登入時,注意過這個 SAP router 欄位麼?

從 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 伺服器。


上述描述的場景裡,形象的說好比在 ERP 伺服器所在的企業內網和 SAP GUI 的客戶端所在的內網打了兩個洞,在洞裡部署兩臺 SAP router,確保只有受限的網路請求能夠進出這兩個被防火牆保護的安全網路。

這種 打洞 的思路,在 SAP 另一款解決方案:SAP Cloud Connector 裡有類似的用法:

我們可以把用 SAP GUI 登入系統的快捷方式儲存到本地,下次雙擊即可直接用 SAP GUI 登入系統:

用記事本開啟,發現這些 .sap 檔案的內容如下:

我們主要觀看紅色高亮部分,其中 H 表示主機名,S 表示服務即 Service.

總結

SAP GUI 是 SAP 的通用客戶端,用於訪問 SAP 應用程式中提供的開發和業務功能,它既是 SAP 應用的開發環境,也是執行環境。本文分享了筆者使用 SAP GUI 工作多年積累的一些使用小技巧,例如使用 SAP GUI 繪製簡單的向量圖,根據一個螢幕反查該螢幕對應事物碼,以及 SAP Router 的概念解析。