回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

小厂奋斗
• 阅读 428

今天我的 SAP 开发技术交流群里,有朋友问这样的问题:

在 Fiori 界面中,怎么查看当前 Client?

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

我觉得要回答这个问题,需要提问的朋友提供更多的背景信息,比如:

Fiori 界面,是运行在 ABAP On-Premises 上,还是 Cloud 环境(Cloud 环境下想知道 Client ID 貌似没有意义,因为这个字段值只对 SAP Support Engineer 有用)?

Fiori 界面是 Fiori 1.0,2.0 还是 Fiori 3.0?

在不同的 Fiori 部署方式和版本,查看当前 Client 的方法略微有些差异。Jerry 近期会逐一介绍。

在开始介绍查看 Client 方法之前,我们可以先复习一下这几篇文章介绍到的知识:

下面我们从 Fiori 1.0 开始聊起。

SAP Fiori 1.0 正式发布于 2013 年,旨在通过 Mobile First(移动设备优先)的设计策略,对 SAP 不同领域使用频率最高的应用进行重构。Fiori 1.0 在这门设计语言发展历史上,起到的最重要的作用,就是提出了基于角色的应用访问原则(Role-based Access Principle),目标是开发出具备 simple, responsive, coherent 和 delightful 特性的应用程序。这些原则和目标,贯穿于 Fiori 长达10年的漫长演进历史中。

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

Fiori 1.0 基于的 SAP UI5 版本号范围是 1.26 到 1.38. 下图是我早在 2014年时,在 SAP 成都研究院 CRM Fiori 开发团队负责开发的 My Opportunity 应用的截图。

从应用的地址栏里,可以一眼看出这个 Fiori 应用的 ABAP 系统名称为 GM4,Client ID 为 001.

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

如果用户访问的系统 url 被重定向或者由于种种其他原因,无法直接从地址中提取出系统名称和 Client ID,可以打开 Chrome 开发者工具,切换到 network 面板,输入关键字 start_up 进行过滤:

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

这个 start_up 请求的响应里,就包含了当前系统的 System 和 Client ID,如下图图例1和2所示。除此之外,还有当前登录用户的明细,比如使用的语言,所处时区等信息。

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

知道了 ABAP On-Premises 系统的系统 ID 和 Client ID,准确的说,这个系统特指 SAP Gateway(也称为 Frontend) 服务器。

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

Frontend 服务器通过 ABAP RFC 与运行 SAP 业务逻辑的后台系统连接。

在 SAP Gateway 系统上的事务码 /IWFND/MAINT_SERVICE 里,可以指定 Frontend 服务器同后台服务器的映射关系。比如下图的配置,语义就是 GM4 Gateway 系统,可以通过 RFC 连接到两个后台 ABAP 系统,分别是 GHD/504 和 AG3/001. 至于当前登录用户,运行时实际被分配到哪个后台系统,是通过用户分配的 PFCG role,即下图绿色高亮区域所示的角色决定的。

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

在 Gateway 系统的 /IWFND/CL_MGW_REQUEST_MANAGER~CALL_BACKEND 方法设置断点,运行时通过 Destination 的值,就能分辨出当前用户的请求,到底被 Gateway 系统分发到哪个后台服务器上了。

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

后续我会介绍如何在更高版本的 SAP Fiori UI 中实现同样的目的,比如 SAP S/4HANA 2021 的 Fiori 3.0 界面里如何找到 Client ID.

我之前写过一套基于 SAP ABAP SEGW 实现的 OData 服务开发教程,已经更新了 35 篇,里面包含了 SAP ABAP OData 服务的开发技巧,以及相关的系统设计原理,思路和相关开发工具。下面是 35 篇文章的目录:

回答朋友提问:Fiori UI 中如何知道当前系统 Client ID (一)

  1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目
  2. 在 SAP ABAP 系统对事物码 SEGW 创建的 OData 服务进行配置并测试
  3. SAP ABAP OData 服务诊断工具 /IWFND/ERROR_LOG 的使用方法
  4. SAP ABAP OData 服务 Data Provider Class 的 GET_ENTITYSET 方法实现指南
  5. SAP ABAP OData 服务如何支持 $filter (过滤)操作
  6. 使用 Postman 工具高效管理和测试 SAP ABAP OData 服务
  7. SAP ABAP OData 服务如何支持 $orderby (排序)操作
  8. SAP ABAP OData 服务如何支持创建(Create)操作
  9. SAP ABAP OData 服务如何支持删除(Delete)操作
  10. SAP ABAP OData 服务如何支持修改(Update)操作
  11. 使用 HTTP PUT, PATCH 以及 MERGE 请求消费 SAP ABAP OData 服务修改操作的实现及其区别
  12. SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值
  13. SAP ABAP OData 服务的分页加载数据集的实现(Paging)
  14. 几种 SAP ABAP OData 服务的性能评估和测试工具介绍
  15. SAP ABAP OData 服务里 EntityType 和 EntitySet 的区别
  16. 如何修改 SAP ABAP OData 模型,使其支持 $expand 操作
  17. 如何通过 SAP ABAP OData $expand 操作在同一个 HTTP 请求中返回多个节点的数据
  18. SAP ABAP OData 服务嵌套创建功能的实现步骤(Create Deep)
  19. 如何使用 ABAP 程序消费 SAP ABAP OData 服务
  20. 如何使用 ABAP 代码消费需要传递 CSRF token 的 OData 服务
  21. SAP ABAP OData 服务的 $count 操作实现
  22. SAP ABAP OData 服务的 $count 和 $inlinecount 两个操作的区别
  23. 如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头
  24. SAP 标准产品里使用 OData 服务的一些细节分享
  25. 答疑 - SAP OData 框架处理 Metadata 元数据请求的实现细节,前后端组件部署在同一台物理服务器
  26. SAP ABAP OData Gateway 框架里 /IWFND, /IWBEP 这些缩写代表了什么含义?
  27. SAP OData 框架里的缓存(Cache)设计专题讲座
  28. 如何使用 SAP OData 服务向 ABAP 服务器上传文本格式的文件
  29. 如何通过 ABAP 代码给 SAP OData 元数据增添注解
  30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展
  31. SAP UI5 Fiori 应用在启动时向 ABAP 后台发起的 OData 请求序列的顺序和作用分析
  32. 关于 Fiori 应用里 SAP UI5 前端开发和 SEGW 后台 OData 服务开发的工作量比值问题
  33. 如何找出 SAP Fiori Launchpad 里点击 tile 之后,读取业务数据调用的是哪个 SAP 后台系统的 OData 服务
  34. 如何使用 Postman 发送 SAP OData Batch 请求到 ABAP 后台服务器
  35. 如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
小厂奋斗
小厂奋斗
Lv1
热爱的事情都要不留余力。
文章
4
粉丝
0
获赞
0