SAP GUI 一些实用技巧分享_sapgui是什么软件-程序员宅基地

技术标签: sap  abap  ABAP  

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 的概念解析。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/i042416/article/details/124530066

智能推荐

JavaScript高级程序设计第五章引用类型——RegExp类型_该类未实现此属性-程序员宅基地

文章浏览阅读196次。ECMAScript通过RegExp类型来支持正则表达式。var expression = / pattern / flags ;//pattern模式 flags 标志其中的模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符串,限定符,分组,向前查找以及反向引用。每个正则表达式都可带有一个或多个标志(flags),用以标明正则表达式的行为。正则表达式的匹配模式支持下列3个..._该类未实现此属性

echarts 生成 迁徙图_百度地图+echarts(迁徙图)-程序员宅基地

文章浏览阅读1.4k次。let minigrateChart = echarts.init(document.getElementById("MinigrateChart"));let geoCoordMap = {'上海': [121.4648,31.2891],'东莞': [113.8953,22.901],'东营': [118.7073,37.5513],'中山': [113.4229,22.478],'临汾': ..._echarts 百度 迁徙图 源码

《计算机工程》投稿经验_计算机工程投稿经验-程序员宅基地

文章浏览阅读6.1k次,点赞11次,收藏22次。《计算机工程》投稿经验_计算机工程投稿经验

plist创建方法_构建plist-程序员宅基地

文章浏览阅读361次。_构建plist

loader_utils.py + word2Vec补充学习_loader-utils-程序员宅基地

文章浏览阅读295次。2021SC@SDUSC_loader-utils

php volist模板,ThinkPHP模板Volist标签嵌套循环输出多维数组的方法,thinkphpvolist_PHP教程...-程序员宅基地

文章浏览阅读282次。ThinkPHP模板Volist标签嵌套循环输出多维数组的方法,thinkphpvolist本文实例讲述了ThinkPHP模板Volist标签嵌套循环输出多维数组的方法。分享给大家供大家参考,具体如下:ThinkPHP 中对 volist 标签嵌套使用可实现多维数组的输出。volist 嵌套使用一般的二维数组,可以用 volist 标签直接循环输出。对于多维数组,则需要对其中的数组成员再次使用 v..._phpthink6vilist

随便推点

CodeForces 82A Double Cola 【math】-程序员宅基地

文章浏览阅读302次。A. Double Cola time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Sheldon, Leonard, Penny, Rajesh and Howard are in the queue for a “Double C..._codeforces 82a

开源社区应该选择什么语言?-程序员宅基地

文章浏览阅读195次。点击上方“开源社”关注我们| 作者:庄表伟|编辑:李明康| 设计:王福政前传《在开源的世界里,应该讲开发者都能懂的语言!》(https://my.oschina.net/oscpyaqx..._未来社区开发语言

kali-程序员宅基地

文章浏览阅读566次。1.更新软件源:修改sources.list文件:leafpad /etc/apt/sources.list然后选择添加以下适合自己较快的源(可自由选择,不一定要全部):#官方源deb http://http.kali.org/kali kali main non-free contribdeb-src http://http.kali.org/kali kali main non-f...

【ROS】自定义消息类型_customize_msgs-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏13次。文章目录一、自定义msg文件1、创建工作空间与功能包2、自定义msg文件3、修改CMakeLists.txt4、修改xml5、编译二、自定义msg文件的使用1、新建pkg2、新建publisher3、修改CMakeLists.txt4、编译三、运行一、自定义msg文件工程中由于自定义的msg或srv比较多,通常会单独把自定义的内容放入一个pkg。本节我们新建一个叫public_pkg的pkg。1、创建工作空间与功能包mkdir -p catkin_ws1/srccd catkin_ws1/sr_customize_msgs

3分钟看懂gcc、arm-Linux-gcc和arm-elf-gcc的组成及区别_gcc和arm生成的elf区别-程序员宅基地

文章浏览阅读2.3k次。一、GCC简介The GNU Compiler Collection,通常简称 GCC,是一套由 GNU 开发的编译器集,为什么是编辑器集而不是编译器呢?那是因为它不仅支持 C 语言编译,还支持 C++, Ada,Objective C 等许多语言。另外 GCC 对硬件平台的支持,可以所无所不在,它不仅支持 X86处理器架构, 还支持 ARM, Motorola 68000, Motorola 8..._gcc和arm生成的elf区别

xmpp 消息监听_xmpp 群聊 监听-程序员宅基地

文章浏览阅读1.6k次。1.聊天信息监听chatManager = ChatManager.getInstanceFor(mConnection);chatManager.addIncomingListener(new IncomingChatMessageListener() { @Override public void newIncomingMessage(EntityBareJid m_xmpp 群聊 监听

推荐文章

热门文章

相关标签