Welcome to Jim's Blog

欢迎欢迎


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

Fiori-Connecting Remote Systems in SAP Web IDE Personal Edition

发表于 2017-07-24 | 分类于 Fiori | | 阅读次数

个人版如何连接到远端的系统?

前提

  • 如果安装的系统是SAP_BASIS 7.31 SP 14或者 7.40 SP 8 or later

    必须要安装下面的Notes:

    2046730

    2047506

    1684342
  • 如果用的是SAP_BASIS 7.31,要确保UI组件已经全部安装(UI_INFRA 和 UI5_731)

过程

  1. 创建一个和远程系统同名的文件
    C:\SAPWebIDE\eclipse\config_master\service.destinations\destinations
  2. 打开文件,加入下列配置:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Description=<mysystem> description
    Type=HTTP
    TrustAll=true
    Authentication=NoAuthentication
    Name=<mysystem>
    ProxyType=Internet
    URL=https\://<host>\:<port>
    WebIDEUsage=<add a value according to the table below>
    WebIDESystem=<mysystem>
    WebIDEEnabled=true
    sap-client=<SAP client number for ABAP systems only. Delete this line if you are not using an ABAP system.>
Key value
WebIDEUsage Enter one or more of the following possible values:

odata_abap:
For the OData functionality of Gateway (corresponds to URL path /sap/opu/odata)

odata_gen:
For generic OData functionality (service URL must be provided manually in the New Project wizard)

ui5_execute_abap:
For executing SAPUI5 applications from the SAPUI5 ABAP repository (corresponds to URL path /sap/bc/ui5_ui5)

dev_abap:
For extensibility scenarios and developing or deploying to the SAPUI5 ABAP repository (corresponds to URL path /sap/bc/adt)

bsp_execute_abap:
For working with fact sheets (corresponds to URL path /sap/bc/bsp)

odata_xs:
For SAP HANA XS OData services (corresponds to URL path/sap/hba) |

  1. 保存并关闭文件

如果需要使用代理的话,需要配置Orion应用服务器:
打开Orion.ini文件

在最正文增加下面的配置:

1
2
3
4
5
-Dhttp.proxyHost=<Proxy address>
-Dhttp.proxyPort=<Proxy port>
-Dhttps.proxyHost=<Proxy address>
-Dhttps.proxyPort=<Proxy port>
-Dhttps.nonProxyHosts=localhost|<host1>|<host2>

部署

很抱歉,之前说Local trial版不能部署,经过一天时间的摸索请教再摸索,终于!连通了!但我也说不清楚我到底做了什么了,把能想到的一些必须的步骤写下来,希望能帮到你。

1. Destination文件

按照上面的要求创建一个和你要连接的server SID名字一样的文件,比如下面的N74

放在下面路径:

文件的内容我也粘在这里,很容易明白:

下面是我正在使用的文件内容,参考图修改吧,其中屏蔽了密码和IP地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Description=N74
Type=HTTP
TrustAll=true
Authentication=BasicAuthentication
UserName=ztest01
User=ztest01
Password=<Password>
Name=N74
ProxyType=Internet
URL=https\://<xxx.xx.xx.xx>\:8001
WebIDEUsage=odata_abap,odata_gen,ui5_execute_abap,dev_abap,bsp_execute_abap,odata_xs
WebIDESystem=N74
WebIDEEnabled=true
sap-client=800

一定要注意URL,地址里有两个\做为转义符

2. SICF服务激活

在家连不上系统,再补吧

参考

Connecting Remote Systems in SAP Web IDE Personal Edition

Configuring the Orion Application Server

Fiori-Netweaver Gatway

发表于 2017-07-24 | 分类于 Fiori | | 阅读次数

Gateway

在SAP的世界里,Gateway基于TCP/IP执行RFC Services

上面图显示了三种不同的SAP系统使用Gateway进行RFC连接,分别是ABAP ONLY,JAVA ONLY,DUAL-STACK(双栈)。

它们的区别是:

  1. 对于使用AS ABAP(ABAP ONLY和DUAL-STACK)的系统,每一个实例都包含了一个由ABAP Dispatcher启动和监控的Gateway。

    只要系统是 ASCS实例(ABAP Central Services,由Message Server和单独的Enqueue Server构成)安装的都不包含Gateway。
  2. 在JAVA ONLY的系统中,只需要一个Gateway就可以满足整个系统,因为实例间的通讯并不使用RFC,一个Gateway用来RFC/Jco连接其它系统就可以了。

Gateway Monitor TOCE:SMGW

Fiori-ODATA

发表于 2017-07-20 | 分类于 Fiori | | 阅读次数

ODATA是Fiori和SAP的纽带,前端的开发不需要了解ABAP,后端的ABAP也不需要了解SAPUI5, 但是他们都需要了解ODATA,今天就来详细总结一下ODATA

概念

OData

OData 全称是Open Data Protocol, 即开放数据协议 ,它的主要用途便是通过Web来对数据库中的数据进行查询与更新 。

OData其实不是SAP所创,他是一个设计和使用RESTful API的标准协议(就是大家都要准守的规则,只要你按这个标准创建RESTful API,其它组织都可以按照OData标准中定义的方式去使用这个API获取/修改资源,就像是SQL标准和数据库之间的关系)。OData就是一个接口,基于HTTP(S)协议,各种程序和系统都可以互联互通,执行读、写、改等操作,这样SAP外部的程序就可以操作SAP的数据,甚至调用BAPI等等。相当于SAP对外又开放了一个接口,这个接口基于ODATA协议,这个接口就是SAP Netweaver Gateway。换句话说OData开放和分享了SAP的数据,这样就可以开发基于Web和Mobile的程序而不用考虑Web程序和Mobile应用是用什么技术开发的了,实现了SAP Fiori的跨平台特性。OData协议支持一系列流行的数据格式,包括JSON,XML。

REST

REpresentational State Transfer,REST其实就是所有的数据操作都是通过客户端发送的一系列URI来完成,URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。


1
2
3
4
GET 用来获取资源,
POST 用来新建或更新资源,
PUT 用来更新资源,
DELETE 用来删除资源。

OData Operation HTTP Method What it meant to an ABAPer
Create POST Insert from
Read GET Select Single * From into
Update PUT/PATCH Update set
Delete DELETE Delete from
Query GET Select *? From Into Table
Function Import GET/POST Everything covered by GET and POST. But only use if scenario does not fit into CRUDQ operations.

URI&URL&URN

Uniform Resource Identifier统一资源标识符

Uniform Resource Locator统一资源定位符

Universal Resource Name 统一资源名称

三者的关系:




URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。也就是说,URI分为三种,URL or URN or (URL and URI),URL代表资源的路径地址,而URN代表资源的名称。通过URL和URN找到资源是对网络位置进行标识,就是URI,如:

  • http://example.org/absolute/URI/with/absolute/path/to/resource.txt
  • ftp://example.org/resource.txt

返回值:

日常开发中常遇到的是2xx 和 4xx 5xx,4xx就在开户的客户端找原因,5xx就在后端OData服务找原因。

ICM

  • ICM Internet Communication Manager是SAP Netweaver Application Server的一个组件,负责接受和发送Web请求(HTTP,HTTPS,SMTP)它是以单独的进程实施的,并且由SAP Dispatcher启动和监听。可以通过Profile 参数进行配置。TCODE:SMICM
  • SAP Web Dispatcher 和ICM用同样的基础代码,它们之间主要的不同是 Web Dispatcher在已连接的应用服务器上负责负载均衡并且传递请求给ICMs而不是亲自处理请求,它们可以共享Profile参数和管理选项。

    上图是ICM的架构,
    1
    The Internet Communication Manager ensures that communication between the SAP System (SAP NetWeaver Application Server) and the outside world via HTTP, HTTPS and SMTP protocols works properly. In its role as a server, the ICM can process requests from the Internet that arrive as URLs with the server/port combination that the ICM can listen to. The ICM then calls the relevant local handler for the URL in question.

总之,ICM确保了SAP应用服务器和外界通过HTTP/HTTPS/SMTP协议的交互,ICM可以侦听并处理Internet以URLs(Server+Port组合)传来的请求,然后由ICM调用URL中请求中的本地相应的handler。

ICF

  • ICF Internet Communication Framework 允许用户通过HTTP, HTTPS and SMTP协议与SAP系统进行通信,是应用服务器的一个集成组件。它有几个特点:1. 灵活性,通过ICF用户可从任何有互联网的地方连接到SAP系统。2.方便配置,只需要很简单的安装和配置就可以实现。3.安全性,HTTPS协议保证了数据传输的安全性,安全程度与RFC/SNC相当。

    ICF提供了处理HTTP请求的基础结构,HTTP请求调用ICF Server中的一个服务,这个服务可以包含一个或多个负责执行ABAP功能的HTTP request handlers。

    SAP提供很多标准功能对应的ICF Serivces和request handlers。
    用户可以定义自己的HTTP request handlers和Services。

实例

今天我们就通过一个实例来介绍这三个问题:

  1. 怎么样就是创建了一个OData服务?
  2. OData服务怎么使用?
  3. 开发OData过程中应该注意什么?

Tcode:SEGW

方便大家记忆,SE(做为一个ABAPer最熟悉的开发TCODE都是以SE开头的,SE 38 SE 37,以后记再加一个SEGW)+ GW (G ateW ay)

1.创建或导入Data Model



我们可以看到,Gateway service 分为四个部分 (左边的 panel):

  • Data Model: 数据模型,主要包括 Entity type,( 比如说 product entity,customer entity 等),Entity set (Entity 的集合,多笔数据) 和 Association (Entity 之间的关联)
  • Service Implementation: Entity set 的 CRUD 实现
  • Runtime Artifacts: 基于 Entity set 的代码框架,包括数据模型 (Data model),数据提供者 (Data provider)
  • Service maintenance:注册服务,测试服务。

学习两个新名词:Entity Type 和 Entity Set ,实体类型和实体集,可以简单的理解 Entity Type 为 work area, 其中的Properties为work area的字段, Entity Set为Internal Table, Service implementation就是具体的数据操作方法。

2. 创建Data Model


这里我们通过Import的方式进行导入创建,当然也可以手工进行entity type和entityset的创建。

参考表SCARR创建名称为Airline的Entity。

选中需要的字段

指定Key字段

点击生成,相当于激活

可以看到系统将自动创建6个Class,bass class和Extended Class(EXT),其中EXT是我们将进行服务实现的类。如果不小心将代码写到了base class,那在下一次Generate时自开发代码将会被清空。
MPC和DPC

MPC:Model Provide Class

DPC: Data Provider Class

顾名思义,一个是定义数据模型的类,一个是定义和实现数据操作的类。

DPC提供了Gateway Service的方法实现,MPC提供了Gateway Service的接口,DPC和MPC的连接不是靠代码维系,而是通过配置。

到此为止,OATA Service创建完成。但这仅仅是创建的后端服务,前端想要使用这个服务还要将这个后端的服务注册到前端,也就是注册到Gateway Hub上,向外部暴露我们的OData Service。

3. 注册服务

TCODE:/IWFND/MAINT_SERVICE

这个Gateway的很多TCODE都是这种很长带斜杠的,还有一个常用的/IWFND/GW_CLIENT 这两个分别是Server和Client。自己想办法记忆吧


点击 ‘添加服务’

找到刚刚自己创建的‘项目名+ _ SRV’ 的服务,点击’add Service’


回到刚才的界面,可以通过filter来找到刚刚添加的服务,选中后点击下面的’SAP Gateway Client’(这里也可以通过刚说的TCODE:/IWFND/GW_CLIENT来启动)

测试服务


直接点击Execute,可以看到服务的测试结果,这里只是测试了服务是否连通,想要对数据的增删改,还要进行接下来的Method redefine.

服务实现

服务实现是指提供 CRUD 的具体实现,读取数据,SAP 一般把读取 Entity 叫做 Read,把读取 EntitySet 叫做 Query。在 SEGW 界面中 展开 Service Implementation:

Go to ABAP Workbenck

我们需要编写具体的代码,这样外部才能实现对 SAP 数据的增删改查。首先我们来看看 GetEntitySet 方法的编写过程。

Redifine激活后,我们再到SAP Gateway Client进行测试

对EntitySet的操作可以参考下表:

对Entity的操作也可以参考下表:

###参考

Understand OData in 6 steps

URI Conventions

MarkDown memo

发表于 2017-07-20 | 分类于 Blog | | 阅读次数

除了常用的MarkDown用法外,有一些是需要借助html语法来实现的(Markdown 支持内嵌 HTML 标签,所以说html这个基础工具是一定要有所掌握的啊),比如:

换行

  • 方法一:连续两个以上空格+回车
  • 方法二:使用html语文换行标签: <br>

    首行缩进两个字符

    (每个表示一个空格,连续使用两个即可,不要忘记后面的分号)
  • &ensp;或&#8194; 半角的空格
  • &emsp;或&#8195; 全角的空格
  • &nbsp;或&#160; 不断行的空格
    1
    2
    3
    &ensp;这是一个半角&ensp;的空格
    &emsp;这是一个全角&emsp;的空格
    &nbsp;这是一个不断行&nbsp;的空格

 这是一个半角 的空格
 这是一个全角 的空格
 这是一个不断行 的空格

字体、字号与颜色

直接上效果吧

1
2
3
4
5
6
7
8
<font face="黑体">我是黑体字</font>
<font face="微软雅黑">我是微软雅黑</font>
<font face="STCAIYUN">我是华文彩云</font>
<font color=#0099ff size=7 face="黑体">color=#0099ff size=72 face="黑体"</font>
<font color=#00ffff size=72>color=#00ffff</font>
<font color=gray size=72>color=gray</font>
Size:规定文本的尺寸大小。可能的值:从 1 到 7 的数字。浏览器默认值是 3

我是黑体字

我是微软雅黑

我是华文彩云

color=#0099ff size=72 face=”黑体”

color=#00ffff

color=gray

背景色

Markdown本身不支持背景色设置,需要采用内置html的方式实现

1
<table><tr><td bgcolor=red><font color = blue>背景色是:red</font></td></tr></table>

背景色是:red

Fiori-Step6-Modules

发表于 2017-07-20 | 分类于 Fiori walkthrough | | 阅读次数


1
2
["sap/ui/core/mvc/Controller",
"sap/m/MessageToast"]

这里使用一个数组来指定所需的程序执行所需要的Modules(依赖),一旦这两个模块被成功装载,回调函数就会被调用并且我们可以访问这两个对象的参数。
sap.ui.define:定义一个命名空间,使用它对象才可以在应用内被正常的使用。
使用sap.ui.require可以异步的加载依赖而不需要定义一个namespace,例如那些只需要被执行而不需要被其它代码调用的部分。


第5步用的是javascript alert来提示消息,很难看,所以这步改用了sap.m库的一个API来显示消息,查看文档,尝试修改显示不同的样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
sap.ui.define(
"MuduleName1", ["sap/ui/core/mvc/Controller", "sap/m/MessageToast"],
function(Controller, MessageToast) {
"use strict";
return Controller.extend("sap.ui.demo.wt.controller.App", {
onClick: function() {
alert("you clicked me");
},
onNewClick: function() {
// alert("showme the way");
MessageToast.show("This message should appear in the message toast", {
duration: 6000, // default
width: "30em", // default
my: "center", // default
at: "center", // default
of: window, // default
offset: "0 0", // default
collision: "fit fit", // default
onClose: null, // default
autoClose: true, // default
animationTimingFunction: "ease", // default
animationDuration: 1000, // default
closeOnBrowserNavigation: true // default
});
}
});
}
);

1…5678
Jim Guo

Jim Guo

Hi~

36 日志
5 分类
22 标签
© 2018 Jim Guo
由 Hexo 强力驱动
主题 - NexT.Mist