SAP调用Web Service全流程详解

在企业应用集成中,SAP系统经常需要与外部系统通过Web Service进行数据交互。本文将基于一份实际操作文档,详细讲解如何在SAP中调用外部Web Service,涵盖从代理类创建、逻辑端口配置到代码调用的完整流程。


一、概述

SAP调用外部Web Service通常分为三个核心步骤:

  1. 创建代理类 – 通过SE80事务码,基于WSDL生成SAP端的代理类
  2. 配置逻辑端口 – 使用LPCONFIG为代理类配置连接信息
  3. 编写调用代码 – 在ABAP程序中实例化代理类并调用方法

下面我们逐步展开说明。


二、SE80创建代理类

在这里插入图片描述


在这里插入图片描述

代理类(Proxy Class)是SAP内部对外部Web Service的本地映射,它封装了SOAP通信细节,使ABAP程序可以像调用本地类一样调用远程服务。

操作步骤:

  1. 进入SE80,选择“企业服务” → “服务创建” → “服务生成”
  2. 输入WSDL地址,系统将解析服务定义
  3. 选择需要生成的服务和操作
  4. 指定包和传输请求,生成代理类及相关结构

生成后的代理类包含:

  • 一个主代理类(如ZPSI_QLTCO_UPLOADER_SAP
  • 对应的输入/输出结构(如ZPSI_QLTUPLOAD_DATA_REQUEST
  • 异常类

三、LPCONFIG配置逻辑端口

在这里插入图片描述


在这里插入图片描述

逻辑端口(Logical Port)用于存储Web Service的终端地址、认证信息等连接配置,实现代理类与物理地址的解耦。

配置过程:

  1. 运行LPCONFIG事务码
  2. 选择“创建逻辑端口”
  3. 输入端口名称(如ZPSI_QLT_DEV),选择代理类
  4. 配置目标地址(URL)、认证方式等
  5. 保存激活

关键说明:

  • 逻辑端口可按环境(开发、测试、生产)分别配置
  • 若生产地址变更,只需修改或新建逻辑端口,无需重新生成代理类

四、ABAP调用示例

以下是一个典型的调用代码框架,包含异常处理和XML数据传输:

DATA: g_obj TYPE REF TO zpsi_qltco_uploader_sap, err_obj TYPE REF TO cx_ai_system_fault, err_meth TYPE REF TO cx_ai_system_fault, err_meth2 TYPE REF TO cx_ai_application_fault, err_tran TYPE REF TO cx_transformation_error. " 根据客户端选择逻辑端口 TRY. IF sy-mandt = '800'. " 生产机 ELSE. " 测试机 CREATE OBJECT g_obj EXPORTING logical_port_name = 'ZPSI_QLT_DEV'. ENDIF. CATCH cx_ai_system_fault INTO err_obj. " 处理创建异常 ENDTRY. " 使用ST(Simple Transformation)生成XML DATA: p_xml TYPE string. TRY . CALL TRANSFORMATION zpsif_qtl SOURCE root = pt_trans[] RESULT XML p_xml OPTIONS xml_header = 'no'. CATCH cx_transformation_error INTO err_tran. " 处理转换异常 ENDTRY. " 添加XML头部 CONCATENATE '<?xml version="1.0" encoding="UTF-8"?>' p_xml INTO p_xml. " 准备输入参数并调用Web Service DATA: lv_input TYPE zpsi_qltupload_data_request, lv_res TYPE zpsi_qltupload_data_response. lv_input-xml_data = p_xml. TRY. CALL METHOD g_obj->upload_data EXPORTING upload_data_request = lv_input IMPORTING upload_data_response = lv_res. CATCH cx_ai_system_fault INTO err_meth. " 处理系统异常 CATCH cx_ai_application_fault INTO err_meth2. " 处理应用异常 ENDTRY. 

五、关键注意事项

  1. 环境隔离:开发、测试、生产环境应使用不同的逻辑端口,避免配置冲突
  2. 异常处理:必须捕获并处理CX_AI_SYSTEM_FAULTCX_AI_APPLICATION_FAULT等异常
  3. XML处理
    • 使用ST或XSLT生成XML数据
    • 注意编码和特殊字符转义
    • 部分场景下需手动调整XML字符串(如文档中提到的“去掉乱码字符”)
  4. 代理类查看:可通过SE24查看代理类的方法签名和数据结构

六、总结

通过SE80创建代理类、LPCONFIG配置逻辑端口、ABAP调用三步,SAP系统即可安全、灵活地调用外部Web Service。这种方式将外部服务封装为本地对象,提高了代码的可维护性和环境适配性,是企业系统集成中的常用实践。

Read more

《OpenClaw架构与源码解读》· 第 12 章 Cron、Webhooks 与事件驱动自动化

第 12 章 Cron、Webhooks 与事件驱动自动化 前面第 8–10 章介绍的消息处理链路,都是被动响应式的:用户先说话,OpenClaw 才行动。但 OpenClaw 更有价值的地方之一,恰恰是它可以主动出击——在你没有发消息的时候,悄悄把事情做了,再来汇报。 本章介绍三种让 OpenClaw「自己动起来」的机制:Cron 定时任务、Webhooks 外部触发、以及类 Gmail Pub/Sub 的长链路事件源。 12.1 Cron Jobs:让 OpenClaw「记住」该做什么 12.1.1 什么是 Cron Jobs Cron Jobs

LangChain 消息处理全解析:缓存、过滤、合并与流式输出实战

LangChain 消息处理全解析:缓存、过滤、合并与流式输出实战

文章目录 * 一、消息内存缓存 * 核心概念 * 关键组件 * 代码流程 * 运行效果 * 二、消息过滤 * 核心概念 * 关键函数 * 过滤参数 * 代码示例 * 过滤逻辑 * 三、消息合并 * 核心概念 * 关键函数 * 代码示例 * 合并效果 * 两种使用方式 * 四、流式输出 * 什么是流式输出 * 为什么需要? * 典型应用 * 五、同步 vs 异步流式 * 核心区别 * 工作原理 * 何时使用异步? * 六、流式输出基础用法 * 同步流式 * 异步流式 * 七、输出解析器 * 八、流式输出实际应用 * 1. 聊天机器人 * 2. 多用户并发 * 3. FastAPI 集成 * 九、常见问题

前端首屏加载优化方案

前端首屏加载优化落地清单(可直接落地 / 自查,分维度 + 实操步骤 + 检查项) 核心遵循 **「先基础后进阶、先低成本高收益后深度优化」原则,按资源层、网络层、渲染层、计算层、缓存层、服务端协同6 大维度划分,每个维度含实操步骤 + 落地检查项 + 备注 **,适配项目开发 / 重构的全流程优化,可直接作为团队协作的落地标准。 一、资源层优化(核心:减体积、按需加载,低成本高收益) 实操步骤 1. 代码压缩与精简:开启打包工具(Webpack/Vite)的 JS/CSS 压缩,开启 Tree-shaking,剔除未引用代码;第三方库按需引入(如 antd/Element 仅引首屏组件、lodash 用 lodash-es

鸿蒙webview开发中web内部网络请求访问资源跨域问题,客户端解决方案

鸿蒙webview开发中web内部网络请求访问资源跨域问题,客户端解决方案

项目场景: 在鸿蒙系统的h5混合开发过程中,我们使用web组件进行混合开发,后台并未对跨域问题进行处理,web组件内部发送网络请求出现访问资源跨域问题。 问题描述 访问资源跨域是浏览器在发送网络请求时经常遇到的问题,而鸿蒙的web组件也就相当于一个浏览器,因此在web组件内部发送,也会出现跨域问题,这种问题一般需要再后台解决,但是鸿蒙官方也有提供客户端解决跨域的方案,官网:解决Web组件本地资源跨域问题-管理Web组件的网络安全与隐私-ArkWeb(方舟Web)-应用框架 - 华为HarmonyOS开发者 原因分析: 为了提高安全性,ArkWeb内核不允许file协议或者resource协议访问URL上下文中来自跨域的请求。因此,在使用Web组件加载本地离线资源的时候,Web组件会拦截file协议和resource协议的跨域访问。可以通过方法二设置一个路径列表,再使用file协议访问该路径列表中的资源,允许跨域访问本地文件。当Web组件无法访问本地跨域资源时,开发者可以在DevTools控制台中看到类似以下报错信息: 官方解决方案描述: 在鸿蒙官网,提供了两种解决方