SAP PI接口(RFC类型)在函数字段修改或增加后,出现字段映射错误问题
在解决标题所言问题之前,我们先回头看看RFC和sproxy这两种接口的优缺点。
关于PI接口的实现,目前我了解到的各大国企项目像中海油、中石化、国网等,普遍实现方式是RFC和代理类sproxy这两种。至于我现在做的国网人资项目,由于历史原因更或者是接口开发者贪图自己的方便原因,实现方式都是RFC类型(很不幸,为了项目的延续性和未来交接,那个贪图方便的人就是指我)。RFC类型较之于代理类存在了很多弊端,总体而言有以下几点:
1、RFC类型(外围服务)使用的SM59 Destination这种连接形式存在着性能瓶颈,最无法忍受的是丢数据现象。我在为薪酬组开发薪酬过账接口时,PID的环境下SM59连接丢数据现象非常严重,几乎接近50%的失败率,当然这里面存在了开发环境分配的服务器资源不足的原因,好在PIP并没有此情况,但依然无法接受。
2、当业务出现变更,调整了RFC的传入传出参数时。RFC类型的接口需要在PI的ESR配置部分重新导入函数。如果接口还在开发环节还好,如果已传生产就带来了额外的工作量。同时由于通道缓存问题,PI的IB部分也需重新激活才可以。
3、SM59创建的连接PROGRAM ID需要在环境单独创建。
4、从项目的协作角度来看,大型企业的项目组划分详细,PI和ABAP是作为两个技术部门存在的。往往ABAP开发并不了解PI的开发配置,就会出现abaper在GUI更改了RFC的参数字段,但并未通知PI人员的情况。等传到生产出现了问题,不必要的扯皮就出现了。
下表是更加详细的区别对比:

回到标题问题!
福利组的两个公积金接口,一个作为服务方,一个作为消费方。两个接口的开发过程都经历过一次小的调整。前者是RFC的传入表结构增加了一个字段,出现了字段映射错位的情况,奇怪的是错位的字段是新增字段前面的字段;在ESR重新导入RFC后,问题没有得到解决。第二个接口是传出表结构里的一个业务类型字段长度变更,变更前长度为2,测试值为Y2。变更后长度为1,值为D。但是外围系统却接受到了D2的值。在ESR重新导入RFC后,问题并没有得到解决。这两种情况在查日志时均显示正常,OM测试,ID测试均正常,并没有字段错位、长度不一致的问题。但在RFC里debug动态断点时错误又真实存在。校验了各个组件无果之后,只能祭出了最后一招,重新激活各个组件。重新激活后,问题得到了解决。后来和其他PI开发讨论这个问题时得知,其实只需要重新激活communication channel就可以,原因是xml报文形式会在CC通道里留有缓存。
RFC类型接口的的这些问题完全可以在使用代理类接口后来规避。因为代理类的参数是在PI端进行的开发配置,当业务发生更改需要改变参数时必然会经过PI,参数经过PI推送到GUI,abaper无法在GUI侧直接修改。
转自:https://www.cnblogs.com/fanjb/p/10782637.html
SAP PI接口(RFC类型)在函数字段修改或增加后,出现字段映射错误问题的更多相关文章
- SAP PI接口ESR IA配置,几种常用的 XSL 转换文档模板
在PI开发配置中字段映射一般分为Message Mapping(MM)和Imported Archives(IA)这两种形式.MM这种拉线的形式虽然看似方便,但是当接口更新和传输时往往比较麻烦,同时无 ...
- SQL替换语句之批量修改、增加、删除字段内容
语法 REPLACE ( original-string, search-string, replace-string ) 用法 update 表的名称 set 替换字段=REPLACE(替换字段,原 ...
- sqlserver 自增字段修改为普通主键字段
--增加备份字段alter Table tableName add columnNameBak bigint ; --将主键自增字段 赋值到备份字段update tableNameset column ...
- SQL替换语句 批量修改、增加、删除字段内容
sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符. 命令总解:update 表的名称 set 此表要替换的字段名=REPLACE(此表要替换的字段名, '原来内 ...
- EF部分字段修改 自动忽略为null字段
传入一个实体 student(){id = 1,name = "测试" age = null,sex = null} 下面 是修改的方法 public async Task Edi ...
- c++指针类型的函数
下面随笔将讲述c++指针类型的函数. 原创链接:https://www.cnblogs.com/iFrank/p/14444379.html 指针类型的函数 若函数的返回值是指针,该函数就是指针类型的 ...
- java获取某一字段日期并增加7天存入另一字段
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String dateString = format.f ...
- SAP PI开发手册-ERP发布服务供外围系统调用(RFC类型)
1转自:https://www.cnblogs.com/fanjb/p/10677018.html 8年进入国网项目后陆陆续续做了一些接口,按实现方法去分有RFC和代理类sproxy类型,按服务提供方 ...
- SAP PI入门
本教程的目的是让读者理解:SAP Process Intergration(以下简称SAP PI)是什么.我们不需要探究课题的本质,但是会讨论SAP PI的架构和不同特点.本文只会覆盖到PI的基本特点 ...
随机推荐
- Java生鲜电商平台-深刻理解电商的库存架构与解决方案
Java生鲜电商平台-深刻理解电商的库存架构与解决方案 说明:一般电商的库存都是跟SKU相关联的,那么怎么样才能进行SKU的库存管理呢?有以下几种方式与方法: 一.七大库存分类 首先得学习什么是库存, ...
- sed文本处理
1.基本概述 sed是一个流编辑器, 非交互式的编辑器,它一次处理一行内容. 处理时,把当前处理的行存储在临时缓冲区中,称* 为"模式空间"(pattern space) 接着用 ...
- ts常用数据类型
1.1 布尔值 let isTrue: boolean = false; console.log(isTrue); 1.2 数字 let age: number = 26; console.log(a ...
- Dynamics CRM定制子网格添加按钮实例之一
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复221或者20160430可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- 真机调试(A valid provisioning profile for this executable was not found.)
这个问题是因为provisioning的问题,因为真机没有加入到账号下面的原因 解决步骤 1.吧identifier复制然后再平开开发中心 2.点击+号添加设备保存 3.在develope中选中保存即 ...
- golang中的接口
CSDN找的一个网页,照着抄练一次. 差不多的使用场景都在了. package main import ( "fmt" ) type People interface { Retu ...
- CentOS离线安装Rust
条件所限,无法在线连接外网,或是下载慢,容易中断时,可以采用. 一,下载离线安装包 https://forge.rust-lang.org/other-installation-methods.htm ...
- 【CF981F】Round Marriage(二分答案,hall定理)
传送门 题意: 给出一个长度为\(L\)的环,标号从\(0\)到\(L-1\). 之后给出\(n\)个新郎,\(n\)个新娘离起点的距离. 现在新郎.新娘要一一配对,但显然每一对新人的产生都会走一定的 ...
- gn gen ninja
- 接口测试中GET和POST两种基本HTTP请求方法的区别
面试时,可以回答(一般答前4条就行): GET参数通过url传递,POST放在request body中 GET请求在url中传递的参数是有长度限制的,而POST没有 GET比POST更不安全,因为参 ...