关于 PCE 项目经验分享

作者:郑德鼎 约 12 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, MM, SD, 开发, 数据工程, 物料管理, 销售分销
关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

# 关于PCE项目经验分享

原创 郭翔 [ 建广技师 ](javascript:void\(0\);)

__ _ _ _ _

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

经历过了2个PCE的项目,就开发而言,基本上和在OP系统上开发体验一致。我们在项目上接口大部分都是在使用RFC、webservice、HTTP

POST之类的技术,对于双方系统的开发而言,对接起来方便,可以查询的文档也比较丰富,基本上没有什么难度。当然,差异还是有的。这里我就给大家简单介绍下开发中常用的问题。

**** **第三方RFC直接调用SAP的BAPI**

PCE项目开发周期都比较短,所以一些接口开发已经由外围系统直接调用BAPI函数来做。优点是省去了SAP的开发时间,不再做机械封装BAPI函数的工作;缺点是SAP这边记录日志会比较复杂,另外有一定的安全风险。

PCE默认是禁止外部系统调用系统的远程函数。我们需要在RZ10固化参数:ucon/rfc/check_blacklist = 0(参考NOTES:

https://launchpad.support.sap.com/#/notes/2295840 )。之后外围系统就可以自由的调用BAPI了。

**** **画屏幕DUMP**

毕竟是公网上的系统,SAP在安全性上做了很多限制。我们在使用绘制Dialog屏幕的时候会不停的被这类型的Dump信息干扰:

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

可以看到,绘制屏幕时,系统内部也是在调用一些远程函数,但是被SAP的安全机制给拦截了。我们需要打开SM59-TCP/IP连接-

EU_SCRP_WN32,来添加一些白名单信息:

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

RS_SCRP_GF_PROCESS_640 RFC_GET_FUNCTION_INTERFACE

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_PROCESS_640RFC_GET

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RBUILDINFO

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RDDICFIELDS

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RELEMTABLE

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RICONS

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RKEYS

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RKEYTEXTS

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RMESSAGES

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RPROPTABLE

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RSTATUS_40

RS_SCRP_GF_PROCESS_640 RS_SCRP_GF_RTEXTS

常见的错误(我报过错的)有上面这些,添加过后基本上就不会再报错了。如果报了,就打开ST22参考dump提供的信息添加白名单即可。

**** **LTMC批导**

过去做ECC和OP的项目,我们需要自己开发批导程序,来完成一些主数据接口的批导工作,现在SAP提供了LTMC工具来完成批导。LTMC服务和应用服务器并不在一起(我们GUI登录的服务器就是应用服务器),因此直接事务代码登录可能无法打开。登录可能需要顾问自己配置hosts文件。LTMS的工作原理实际上就是在调用我们的BAPI程序,因此这里就有一些限制,比如物料主数据,增强字段是无法导入的,但是像设备的主数据就可以实现增强字段的导入。为了导入增强字段,我们需要在事务代码LTMOM对BAPI进行增强。增强分为两部分,一部分是传统的对BAPI进行增强,另一部分是在LTMOM这里进行字段的映射。如果你想批导大量含有增强字段的主数据,不太建议使用LTMC。此外LTMC的批导速度相对于自开发程序,会慢一些,但是因为时上传文件后完全在服务器上执行,稳定性会比前台使用GUI导入要高出很多。

**** **BP创建的奇葩错误**

批导毕竟少不了增强字段,所以有时候放弃才是最省时省力的方案。毕竟我们有成熟的批导解决方案,又不是不能用,对吧!

对吧?

最近BP创建供应商发生了一个很奇怪的事情。BAPI_BUPA_CREATE_FROM_DATA创建完BP基础视图,需要先扩充角色BAPI_BUPA_ROLE_ADD_2,BAPI_TRANSACTION_COMMIT,然后才能写入银行数据,不然会DUMP。

可疑的一点是,参考过两套2020年版本的S4系统,可以先创建基础视图,写银行数据,最后扩充角色,一次性提交,没有问题。但是现在手上的这台2021年版本的系统会出现这样的错误。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

这个问题需要大家后面注意并验证一下。LTMC的批导本身分视图,并且没有增强字段,可能体现不出来这个问题。BP相关的批导程序在2021年之后的版本可能需要改造,也可能使用之前的导入过程不报错。

**** **复杂网络环境建议使用中间件**

上次烦恼接口的时候,还是因为复杂的业务处理逻辑和加锁,秃了我一半的头发,今天我另一半头发,秃在了企业复杂的内网环境。PCE服务器是在网络运营商手中,通过代理配置实现与企业内网的信息通讯。但是,这个连接是以白名单的形式,指定网段连接。如果企业内网本身是异地分布,并试图这样连接SAP,就非常考验企业IT的网络技术能力了:

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

我自己比较建议使用中间件,或接口直连:

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

建议在上SAP系统之前,先处理好企业内部的网络问题,保证分布式或者其他形式存在的企业内网畅通,然后再上SAP,这样可以一次性将网络相关的内容配置好。后期因为网络相关的问题再与SAP相关部门沟通,会比较困难,花费的时间也会比较多。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

**** **接口直连的准备工作:配置负载均衡器(Loadbalancer)**

https://sapvideoa35699dc5.hana.ondemand.com/?entry_id=1_z9b5cxrk

虽然是私有云系统,但可以通过向SAP提交工单,配置负载均衡器,也可以实现例如HTTP POST、Webservice接口的互相调用。

你可以向SAP

ECS部门邮件联系(sap.ecs.private.cloud.customer.center@sap.com),申请Loadbanlancer的模板和根据你实际业务需求的教学指导。模板我这里介绍其中的2个Sheet页。它可以帮助你完成SAP应用服务器与第三方系统之间的互联。

Internet Proxy (Outbound HTTPS)

这个SHEET页维护的是SAP调用第三方接口的信息。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

Source System SIDs,主要是为了区分这个是哪个系统,生产还是非生产,测试还是开发。

Destination URLs or IP Addresses,填写第三方接口地址或者IP地址,SAP给出的建议是填上第三方系统的接口地址。

Destination Protocol / Port:第三方系统提供接口地址的端口号,没有指定的话,一般是默认HTTP 80端口,HTTPS 433端口。

Backend Server host names or IP addresses those needs

outbound,是SAP哪个服务器在调用第三方的接口,是GUI的应用服务器,还是某些SAP的中间件产品或者应用产品所在的服务器IP。这里放心的填写你所知道的内网IP即可。

Application Gateway (External)

这个SHEET页维护的是外围系统连接SAP的配置。这里的配置会比较复杂,我们需要手上有一个PCE Lauchpad权限的账号。登录网站SAP Support

Portal Home,点击Access My Launchpad。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

后面的操作可能有差异,请大家注意。

找到System Operations and Maintenance的My Landscape。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

在弹出的新页面找到Landscape Applications,点击HEC Landscape。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

弹出的新窗口里,我们可以看到这样的界面。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

这里默认是只会看到生产系统相关的内容,如果你想看到其他系统的内容,需要修改下这里的筛选:

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

我们需要了解这些服务器直接的关系。以这里的系统为例,我们的接口是通过SAP Web

Dispatcher先连接,进行负载均衡,然后才进入SAP的应用服务器。比如生产机PS4有WS3和WS4两个服务器做负载均衡,开发机DS4和测试机QS4共用一个WS1服务器做负载均衡。

SAP Web Dispatcher的介绍看这里:

SAP Web Dispatcher - SAP Documentation

我们需要收集的信息都在SAP Web Dispatcher上。以WS1为例。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

打开WS1的页面,点击Additional

Information页签,可以看到一个网址。请注意,SAP也是会犯错的,如果打不开,且端口号是44380,请自行使用https来进行访问。如果需要配置hosts文件,首先点击Application

Instances页签,确定Instance Type为Web Dispatcher的行,记住他的Host Name是什么。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

然后点击Computer Systems页签,点击IPs的图标,根据Host Name来查看对应FQDN的IP。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

这里我们还需要下载一个PDF文件,这里记录了一些信息。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

现在我们看着文件填写模板了。如果是使用SAP提供的默认信息,并且是系统直接的直连,表格的填写会简单很多。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

Tier Type (PROD / non-PROD):这里选择你是生产系统还是非生产系统。

Backend System ID:填写负载均衡器和应用服务器之间的关系。

Internet FQDN:打开刚才的PDF,Location-Dependent

Domain是你的三级域名,大部分情况下,这个三级域名所有系统都是一样的,你需要自定义加些东西,使它成为一个四级域名。比如dev-

cust.chn1.sap.XXXXX.com。红色部分随便起名,区分开生产开发测试即可,蓝色部分请参考你的文档。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

Application Gateway Listener Port:一般来说保持默认即可。

Public IP Address (Frontend):保持默认,这个IP是云服务器供应商提供的。

Pool Members to be Assigned (IP

Address):这里一行填写你的FQDN地址,一行填写对应的IP地址,如果你的应用服务器有多个SAP Web Dispatcher,就全部依次填上即可。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

这里的信息和网页Computer Systems页签里的信息一样。另外吐槽一下,这里的FQDN显示不完整,我只好用Host Name和Location-

Dependent Domain拼接成完整的四级域名。

Backend Communication Protocol / Ports:这里填写的是对应SAP Web

Dispatcher的端口号,要获取准确的端口号,需要登录刚才从网页Additional Information页签看到的网址才能获取信息。

点击菜单MENU-Core System-Paramenters,然后点击右侧窗口的Instance

Profile页签,在Filter筛选wdisp/system,然后注意观察下面的SID和SRCSRV=*,然后对应的填写端口号。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

表格部分基本填写完成,如果是使用默认的设置,后面还需要下载SAP Web Dispatcher的证书。下载证书还是在SAP Web

Dispatcher的网页里完成。

登录网站后,请先确定右上角的权限提示,这里必须是ADMIN权限,如果不是,直接发SAP工单索要权限。后面下载证书需要管理员权限。

关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图
关于 PCE 项目经验 - 封面图

(你不想知道为了这个权限我经过了什么)

点击Menu-SSL and Trust Configuration-PSE Management,然后选择右面的SAPSSLS.pse,点击Export

Own Certificate。

关于 PCE 项目经验 - 封面图.textContent = new Date().getFullYear();