在解决标题所言问题之前,我们先回头看看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类型)在函数字段修改或增加后,出现字段映射错误问题的更多相关文章

  1. SAP PI接口ESR IA配置,几种常用的 XSL 转换文档模板

    在PI开发配置中字段映射一般分为Message Mapping(MM)和Imported Archives(IA)这两种形式.MM这种拉线的形式虽然看似方便,但是当接口更新和传输时往往比较麻烦,同时无 ...

  2. SQL替换语句之批量修改、增加、删除字段内容

    语法 REPLACE ( original-string, search-string, replace-string ) 用法 update 表的名称 set 替换字段=REPLACE(替换字段,原 ...

  3. sqlserver 自增字段修改为普通主键字段

    --增加备份字段alter Table tableName add columnNameBak bigint ; --将主键自增字段 赋值到备份字段update tableNameset column ...

  4. SQL替换语句 批量修改、增加、删除字段内容

    sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符. 命令总解:update 表的名称 set 此表要替换的字段名=REPLACE(此表要替换的字段名, '原来内 ...

  5. EF部分字段修改 自动忽略为null字段

    传入一个实体 student(){id = 1,name = "测试" age = null,sex = null} 下面 是修改的方法 public async Task Edi ...

  6. c++指针类型的函数

    下面随笔将讲述c++指针类型的函数. 原创链接:https://www.cnblogs.com/iFrank/p/14444379.html 指针类型的函数 若函数的返回值是指针,该函数就是指针类型的 ...

  7. java获取某一字段日期并增加7天存入另一字段

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String dateString = format.f ...

  8. SAP PI开发手册-ERP发布服务供外围系统调用(RFC类型)

    1转自:https://www.cnblogs.com/fanjb/p/10677018.html 8年进入国网项目后陆陆续续做了一些接口,按实现方法去分有RFC和代理类sproxy类型,按服务提供方 ...

  9. SAP PI入门

    本教程的目的是让读者理解:SAP Process Intergration(以下简称SAP PI)是什么.我们不需要探究课题的本质,但是会讨论SAP PI的架构和不同特点.本文只会覆盖到PI的基本特点 ...

随机推荐

  1. Wpf Backgroundworker

    <Window x:Class="WpfApp53.MainWindow" xmlns="http://schemas.microsoft.com/winfx/20 ...

  2. Docker开启Remote API 访问 2375端口

    Docker常见端口 我看到的常见docker端口包括: 2375:未加密的docker socket,远程root无密码访问主机2376:tls加密套接字,很可能这是您的CI服务器4243端口作为h ...

  3. Web前端基础(8):JavaScript(二)

    1. 数据类型转换 1.1 将数值类型转换成字符串类型 1.1.1 隐式转换 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换 ...

  4. Vuex细说

    vuex 1,什么是 vuex? vuex 是一个专门为 vue.js 应用程序 开发的状态管理模式+库 它充当应用程序中所有组件的集中存储(数据状态) ,其规则确保状态只能以可预测的方式进行变更 并 ...

  5. arcgis api 3.x for js 地图加载多个气泡窗口展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. 配置flutter For IOS

    https://www.cnblogs.com/lovestarfish/p/10628205.html 第一步,下载flutter最新版,解压到自己的目录里: 提供网址:https://flutte ...

  7. Tomcat启动分析(二)-自己编译Tomcat

    为了方便分析Tomcat源码,利用大家习惯的方式来进行Debug调试,那么如何将Tomcat源码导入到Eclipse呢,这就是本文的重点 1 准备 1.1 获取Tomcat源码 获取tomcat源码有 ...

  8. SparkStreaming和storm的区别

    这是2种不同的架构. 他们的区别是SparkStreaming的吞吐量非常高,秒级准实时处理,Storm是容错性非常高,毫秒级实时处理 解释:sparkStreaming是一次处理某个间隔的数据,比如 ...

  9. [Linux] centos6.5升级安装的supervisor

    因为我要用它来管理多个PHP进程去执行任务,在默认版本下的配置多个子进程不起作用 默认版本的supervisor版本比较低2.1.9,对于运行多个子进程貌似有问题,最新版的supervisor4.1的 ...

  10. Linxu:磁盘分区

    了解磁盘分区 磁盘的物理组成: 圆形的磁盘盘(主要记录数据的部分): 机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据): 主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据. ...