使用 SSIS 从外部系统向 ABAP SOAP Provider 传递深层数据结构

如何解决使用 SSIS 从外部系统向 ABAP SOAP Provider 传递深层数据结构

我们需要使用 SSIS 将深层数据结构从外部系统传递到 SAP。由于我的同事告诉我 SSIS 没有任何类似于 ABAP 结构或表的数据类型,因此我们的第一种方法是将 XML 文件作为字符串传递。

然而,问题出现了,SSIS 对字符串有 5000 个字符的限制,这使得这种方法也无济于事。

然后他建议将 xml 字符串作为“Object”类型传递,因为那里不存在这样的限制。

不幸的是,在 ABAP 中,无法使用通用参数对 RFC 功能模块进行参数化,我可以从中尝试进行一些转换。另外Object类型不能传递给FM的导入字符串参数,也不知道object对应的字典数据类型是什么,其实我觉得没有。有没有办法解决这个问题?

我想到的最后一种方法是拆分字符串并多次调用 fm 每次存储字符串。但是,我被告知在 SSIS 中也无法拆分字符串。我有点怀疑 SSIS 真的有所有这些缺点,因为那些听起来更像是基本功能,但我知道什么......(关于 SSIS,什么都没有)

有人知道如何将深层结构传递给 ABAP SOAP Provider 吗?

干杯

解决方法

在这种情况下使用脚本组件上传字符串 xml。

使用本文中定义的 sql 构建 XML:

https://www.sqlshack.com/for-xml-path-clause-in-sql-server/

如何执行该 SQL 并返回一个字符串:

            string uploadSOAP = "";
            using (OleDbConnection conn = new OleDbConnection([your conn string]))
            {
                string sql = [your XML SQL query];
                using (OleDbCommand cmd = new OleDbCommand(sql,conn))
                {
                    cmd.CommandType = CommandType.Text;
                    conn.Open();
                    uploadSOAP = (string) cmd.ExecuteScaler();
                }
            }

现在如何上传该字符串:

WebClient wc = new WebClient();
//wc.Credentials = new NetworkCredential([username],[password]);
wc.UploadString([url to upload to],uploadSOAP);

要添加的命名空间(在使用部分):

System.Data.OleDb;
System.Net;

注意事项:

  1. ExecuteScalar() 在 for XML 路径是整个 xml 字符串的情况下返回第一行和第一列的值
  2. string 数据类型在 c# 中确实没有限制。我在某些地方看到它是 2GB 的数据。如果您变得更大,则可以转换为流,然后使用 uploadData。
  3. 我将插入注释掉的代码以添加凭据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res