CPI系列 通用接口-数据写入FTP服务器csv文件

2024-03-05 07:48

本文主要是介绍CPI系列 通用接口-数据写入FTP服务器csv文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击蓝字 关注我们

前言

CPI是SAP公司提供的云服务,功能类似于PI/PO,用于集成多个系统之间的调用

本文主要介绍一个通用接口设计 该接口用于实现ECC/S4把数据发到指定FTP服务器的目录中,文件格式csv. 

FTP服务器连接配置

cloud connect 中配置连接内网的FTP服务器.如果FTP服务器有公网地址, 则无需该配置.

CLOUD CONNECT 是SAP的反向代理服务,用于CPI访问内网服务器.

55c2b74e42a0065eaf46c7daeaaaaae6.png

需要配置连接FTP的账号(安全材料),如果是FTPS 或SFTP,还需要导入证书(密钥库)

f5a3970ac4ea97eaffb3f0b7602de950.png

IFlow 配置

这个IFlow配置是一个通用配置, 配置一次后, 所有此类的接口都可以调用这个IFlow,传递json文件到IFlow, IFlow负责把JSON最终转换成CSV 文件, 写入目标FTP服务器

概览

4255b91990117e7ea7f497fefb4651de.png

HTTPS SEND

f961730a8dbc0a29688be4cd2362b7d0.png

JSON到XML的转换器

2fe6ec95cbd9a505184cf9c93b9b2518.png

XML到CSV的转换器

其中/data节点需要留意, 该节点的定义需要和ABAP中数据结构的定义一致.

88d27f70e9a155e7f55555a4ac5e12c1.png

通过脚本修改文件名,添加时间戳后缀, 该节点不是必须的 可以在ABAP传递的http 抬头参数(Filename)中整合相关信息.

3749fc399ca34f70f3c3d3d243587219.png

8aeee2286166fc200ceb42954d967525.png

序列执行的两个步骤

步骤一,用于把csv文件写入ftp服务器,

步骤二,用于返回一个成功消息

261ecf4e22b3e3bcd429bca07fdc0be1.png

步骤一, 写入ftp文件

d3169851a32027ef3b4daef01444f21a.png

步骤二.返回一个成功消息

1ea6639113565a8672d482af6ed8b9f2.png

异常处理, 返回一个失败消息

264bb8c7d4160406ad877c2071cc3c04.png

配置ECC/S4连接CPI

ECC/S4主要通过类 cl_http_client 调用外部系统(包括CPI系统)的rest服务. 需要先定义和CPI服务器的连接信息

获取CPI REST 服务的调用地址

352421f67bf946fd6ec16db2f4ca2aa1.png

在浏览器中获取CPI的证书

76ccf37761cfbc61e9612504c43dd3fc.png

证书导入ECC/S4系统(TCODE STRUST).

  1. 进入修改模式

  2. 导入之前下载的证书文件

  3. Add to certificate list(添加到证书列表)

  4. 保存

  5. 确保再次进入后能看到证书信息

6ca2f9fc22a0b83854c6474b7ba278e9.png

配置SM59和CPI 的连接

创建一个G(HTTP connect to extenal server )类型的连接

4633746b13e54e2e6bbd3704cf6e9766.png

输入连接的关键信息

  1. 主机域名

  2. 端口

  3. 服务地址

  4. 代理服务器地址(因为ECC/S4在内网系统, 无法直接访问外网的CPI服务器, 需要通过代理服务器方式)

  5. 登录信息

  6. 指定https连接(如果不指定, 系统会使用http连接,不符合CPI发布的服务要求).

8597052b7593261528f8a0ce27c546aa.png

7a8c95c2208dfef0ca8f99d726cffb91.png

43046658a5beed44d3174b19b8d973df.png

ABAP调用

ABAP 调用CPI的服务可以封装成一个函数, 多个接口调用这个函数,通过参数指定目录/文件名,传入不同的数据或JSON串,实现把特定的数据写入FTP文件.

创建函数Z_IF_CALL_CPI_FTP.

7fff6455eee378c7bfca2950a3a690f6.png

函数允许传入JSON串或者数据对象. 如果是数据对象, 使用通用类转换成JSON串

2e36d263f5f7e67924d43a016ab0cd8b.png

基于RFC目标定义http client 对象

863239092a83c59ea46ab506aeb1c13d.png

设置密码不弹框及其它抬头参数

9c68f2c24fefe6b4ad9d5da05bd2dda4.png

发送报文,并获取返回的报文

64e4478d970f99365ef8493260b333ee.png

获取并解析返回的报文,

16eb9869a4ad31ae212625baae3f5e54.png

函数测试验证通过

66f00de83ffe844c58e049da0d18c10c.png

查看FTP服务器文件

7c33c50e0b7f20b4216d89503b4884f5.png

数据定义

该数据定义与IFlow中XML->CSV的节点定义相关

836441ed51eefabfaba1b7820bfbe39f.png

关于传递的JSON数据格式如下

{"data": [{"f1": "M001", "f2": "W001", "f3": "10"}, {"f1": "M002", "f2": "W002", "f3": "20"}]}

总结

ABAP数据通过CPI写入外部FTP服务器的指定目录,该接口场景比较简单.尤其应用了CPI中的XML->CSV通用转换后, 所有这一类的接口可以共用这个CPI的配置. 只需要把每个接口特性部分的内容设计成http 抬头参数传递到CPI即可. 比如文件目录,文件名等信息.

基于这类接口的共性, 可以考虑整合到数据同步平台中,作为一种特殊的目标系统(在数据平台原有逻辑写入目标数据库的部分替换成调用一个指定的函数,函数中完成对HTTP服务的调用即可.

这篇关于CPI系列 通用接口-数据写入FTP服务器csv文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775786

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域