KSO-SAP ABAP调用远程RFC函数详细过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言RFC几种调用模式
            • 1. 同步RFC
            • 2. 异步RFC
            • 3. 事务性RFC
            • 4. 队列RFC
            • 5. 并行RFC
  • 一、创建远程链接SM59(对方也是sap系统)
          • 创建目标主机:输入目标主机和实例号
  • 二、使用步骤创建SE38程序


创建abap函数 KSO-SAP,ABAP创建远程RFC函数

前言RFC几种调用模式

1. 同步RFC

同步RFC(sRFC,synchronous RFC)是RFC的最原始版本,其执行基于同步通信模式,远程调用时,通信双方的系统必须均可用,调用程序等待远程功能处理结束并返回结果。是应该包括对标准异常OMMUNICATION_FAILURE 和 SYSTEM_FAILURE 的处理。

2. 异步RFC

在异步RFC(aRFC,asynchronous RFC)中,执行并不依赖于RFC服务器系统的可用性。被调用的远程功能启动之后,调用程序继续运行,远程功能和调用程序处理相互分离。远程功能的结果可以稍后接收。
使用 STARTING NEW TASK 附加关键字,可以异步的调用一个远程函数模块。任务名称可以任意选择。被调用的函数模块在它自己的工作进程中执行。只能处理两个系统异常(COMMUNICATION_FAILURE 和 SYSTEM_FAILURE)

3. 事务性RFC

事务性RFC(tRFC,taansactional RFC)广义上也属于异步通信模式,调用程序不接收调用结果而继续运行,但并不立即启动远程功能。相关联的RFC可捆绑至一个事务(即逻辑工作单元LUW,logical unit of work)中,然后通过事务性处理,将LUW内部各个调用中的更新操作作为整体提交或全部取消,且保证所有操作只执行一次,以确保RFC功能的可靠和安全。

4. 队列RFC

队列RFC(qRFC,queued RFC)是事务性RFC功能上的进一步扩展。在事务性RFC中,存在多个LUW时,这些LUW的执行次序是无法确定的。如果要确保每个LUW都按照指定的顺序执行,可以通过队列RFC对事务性RFC进行序列化。

5. 并行RFC

并行RFC(pRFC,parallel RFC)实质上为异步RFC,在功能上实现多个SAP系统或同一SAP系统内部不同应用服务器间,以及应用服务器内部各个工作过程的并行处理。

一、创建远程链接SM59(对方也是sap系统)

点击新建创建新的链接
在这里插入图片描述
在这里插入图片描述
连接类型详细解释:
RFC连接类型:
2. 类型3: ABAP连接或R/3连接,指定主机名和通信服务
3. 类型I:内部连接,与当前系统连接到同一ABAP系统中,预定义无法修改,与SM51中所显示的应用服务器名相同
4. 类型L:逻辑目标,通常工作流系统指定过程中配置的RFC目标即为该类型的逻辑目标
5. 类型X:指定安装了特殊的ABAP设备驱动程序的系统,必须制定ABAP设备驱动程序名
6. 类型S:通过SNA或APPC启动的外部程序连接
7. 类型M:通过CMC到ABAP系统的异步RFC连接
8. 类型T:通过TCP/IP并使用RFC库或SAP连接器的外部程序连接;分为启动(指定主机名、程序路径名)和注册(RFC服务器程序)两种连接模式。
9. 类型G:定义外部系统到本地HTTP连接
10. 类型H: 定义ABAP系统到本地的HTTP连接

创建目标主机:输入目标主机和实例号

在这里插入图片描述
输入对方的用户密码等一些基础信息:,点击连接测试
在这里插入图片描述
在这里插入图片描述
出现以下状况就是成功了:
在这里插入图片描述

二、使用步骤创建SE38程序

data:lv_dest type rfcdes-rfcdest value 'ZKSO_RFC6', "上面SM59创建的链接对象名称ls_res  type trexs_connection_check_result."远程是否连接测试函数
call function 'TREX_RFC_CONNECT_CHECK_LOCAL'exportingtrex_destination        = lv_destimportinglocal_result            = ls_resexceptionssystem_failure          = 1communication_failure   = 2authority_not_available = 3send_error              = 4others                  = 5.
if ls_res-ping_time = '        0'."无响应message 'SAP 联通 失败' type 'I'.
else .write : / 'ZKSO RFC 5  OK'.
endif.data:lo_root       type ref to cx_root,lv_subrc      type sy-subrc,lv_error_text type c length 100,lv_rfc        type funcname value 'ZKSO_RFC5'. " 被调用方RFC函数名称data gs_message type message .
data i_zmatnr type matkl .
types: begin of gty_war,mandt         type  mandt,zwarhouseid   type c length 10,zwarhousename type c length 50,zaddr         type c length 50,zcreatetime   type dats,zisstart      type c length 2,end of gty_war .
data gt_datanew type table of gty_war .* 发送数据
try.call function lv_rfcdestination lv_destexportingi_zmatnr              = 'R1FC'importinge_message             = gs_messagetablesgt_data               = gt_datanewexceptionssystem_failure        = 1 message lv_error_textcommunication_failure = 2 message lv_error_textothers                = 99.write :  /  gs_message  .loop at gt_datanew assigning field-symbol(<styu>).write : /   <styu>-zwarhousename  .endloop.catch cx_root into lo_root.data(lv_message) = lo_root->get_text( ).message lv_message type 'S' display like 'E'.
endtry.
"=================================异步的方式=========
call function lv_rfcdestination lv_destSTARTING NEW TASK 'ZKSO_TASK1'exportingi_zmatnr              = 'R1FC'importinge_message             = gs_messagetablesgt_data               = gt_datanewexceptionssystem_failure        = 1 message lv_error_textcommunication_failure = 2 message lv_error_textothers                = 99.
"=================================事务的方式=========
call function lv_rfcdestination lv_destSTARTING NEW TASK 'ZKSO_TASK1'exportingi_zmatnr              = 'R1FC'importinge_message             = gs_messagetablesgt_data               = gt_datanewexceptionssystem_failure        = 1 message lv_error_textcommunication_failure = 2 message lv_error_textothers                = 99.
if sy-subrc = 0 .COMMIT  WORK.   "提交函数
endif.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661752.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

React Hooks 面试题 | 04.精选React Hooks面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

互斥量介绍

队列 环形缓冲区 休眠唤醒 信号量全局整数 休眠唤醒 互斥量全局整数 休眠唤醒 优先级继承 什么叫优先级继承 优先级翻转 也就是C想获得A的锁&#xff0c;但是A的锁还没有被释放&#xff0c;所以C进入了阻塞状态&#xff0c;这时候B就来执行。B一直也没有停下来。所以A也…

【全网最详细】手把手教学Charles抓包工具详细自学教程,完整版安装教程,详细介绍工具栏如何使用及实战案例(建议收藏)

Charles抓包工具 【1】Charels简介【2】Charles安装Charles客户端下载下载安装完成后激活Charles配置苹果系统操作 【3】什么是证书&#xff1f;为何需要证书&#xff1f;http协议是不安全的使用对称秘钥进行数据加密非对称秘钥加密小技巧 【4】Charles 乱码解决办法1.解决resp…

2023-12-29 工作心得补充 适时抽取方法,让代码变简洁

1 JSONObject 实际上是个map 2 数据库实际上也是map 只不过map 是竖着写&#xff0c;数据库横着写. 3 像 用户名 密码 这种后续可能随时会改的&#xff0c;不要写死在代码里&#xff0c;都写成nacos参数。 4 方法的抽取 让代码变得简洁 可读性很高。这是方法抽取的秘诀。写文…

鸿蒙开发之崩溃信息收集FaultLogger

前申&#xff1a;果然系统的API没有让我失望&#xff0c;日志完全看不出来崩溃原因所在 一、使用 logCrash() {FaultLogger.query(FaultLogger.FaultType.JS_CRASH,(err,val) > {if (err) {console.log(fault log get an errJSON.stringify(err))return}let len val.lengt…

SpringBoot+AOP+Redis 防止重复请求提交

本文项目基于以下教程的代码版本&#xff1a; https://javaxbfs.blog.csdn.net/article/details/135224261 代码仓库: springboot一些案例的整合_1: springboot一些案例的整合 1、实现步骤 2.引入依赖 我们需要redis、aop的依赖。 <dependency><groupId>org.spr…

大厂整理的23年前端工程师面试手册,高频面试题终结篇,github上标星16k!

前端开发所需掌握知识点概要&#xff1a; HTML&CSS&#xff1a;浏览器内核、渲染原理、依赖管理、兼容性、CSS语法、层次关系&#xff0c;常用属性、布局、选择器、权重、CSS盒模型、Hack、CSS预处理器、CSS3动画 JavaScript&#xff1a; 数据类型、运算、对象、Function、…

【JavaWeb学习-第四章(2)】前后端分离开发 前端工程化

文章目录 1. 前后端分离开发1.1. 介绍1.2. YAPI1.2.1. YAPI 介绍1.2.2. 接口文档管理 3. 前端工程化3.1. 介绍3.2. 前端工程化入门3.2.1. 环境准备3.2.1.1. NodeJS安装3.2.1.2. Vue-cli 安装 3.2.2. Vue项目简介3.2.2.1. 创建vue项目3.2.2.2. vue项目之目录结构介绍3.2.2.3. 运…

Python高级用法:生成器(generator)

生成器&#xff08;generator&#xff09; 生成器是一种返回生成序列的方法&#xff0c;与直接使用列表等方式返回序列的方式不同的是&#xff0c;他的生成可以是无限的。 生成器可以与next搭配使用&#xff0c;可以被看作是一种特殊的迭代器。 yield语句 yield一般与循环相…

CNAS中兴新支点——源代码审计对企业有哪些好处?

源代码扫描&#xff0c;对应用程序进行静态漏洞扫描&#xff0c;分析源代码中存在的安全风险&#xff0c;运行应用于模拟器中对应用进行实时漏洞攻击检测。 你是否了解源代码扫描对企业的好处&#xff1f; 一、源代码扫描&#xff0c;通常能够帮助企业解决这些问题&#xff1…

pycharm用Pipenv创建项目

一、pipenv介绍 pipenv是一个python的包管理工具&#xff0c;提供python的各个版本间的管理&#xff0c;各种包管理。官网 pipenv主要有以下特点&#xff1a; pipenv集成了pip&#xff0c;virtualenv两者的功能。pipenv会在项目根目录下创建Pipfile文件用于记录包的版本信息…

unity exe程序置顶和全屏

1.置顶和无边框 设置显示位置和范围 using System; using System.Runtime.InteropServices; using UnityEngine; public class WindowMod : MonoBehaviour {public enum appStyle{FullScreen,WindowedFullScreen,Windowed,WindowedWithoutBorder}public enum zDepth{Normal…

本地部署Python Flask并搭建web问答应用程序框架实现远程访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

概率论相关题型

文章目录 概率论的基本概念放杯子问题条件概率与重要公式的结合独立的运用 随机变量以及分布离散随机变量的分布函数特点连续随机变量的分布函数在某一点的值为0正态分布标准化随机变量函数的分布 多维随机变量以及分布条件概率max 与 min 函数的相关计算二维随机变量二维随机变…

2023中国企业级存储市场:整体韧性成长,领域此消彼长

多年之后回头看&#xff0c;2023年也许是中国企业级存储市场标志性的一年。 后疫情时代的开启&#xff0c;中国数字经济快速发展、数据产业方兴未艾&#xff0c;为数据存储市场带来了前所未有的活力&#xff1b;与此同时&#xff0c;外部环境的不确定性骤增&#xff0c;人工智…

关于“Python”的核心知识点整理大全49

目录 16.2.10 加亮颜色主题 16.3 小结 第&#xff11;7 章 使用API 17.1 使用 Web API 17.1.1 Git 和 GitHub 17.1.2 使用 API 调用请求数据 17.1.3 安装 requests 17.1.4 处理 API 响应 python_repos.py 注意 17.1.5 处理响应字典 python_repos.py import json i…

1.Linux快速入门

Linux快速入门 Linux操作系统简介Linux操作系统优点Linux操作系统发行版1. Red Hat Linux2. CentOS3. Ubuntu4. SUSE Linux5. Fedora Linux 32位与64位操作系统的区别Linux内核命名规则 Linux操作系统简介 Linux操作系统是基于UNIX以网络为核心的设计思想&#xff0c;是一个性…

什么是计算机视觉

计算机视觉&#xff08;Computer Vision&#xff09;是一门研究如何让计算机能够理解和分析数字图像或视频的学科。简单来说&#xff0c;计算机视觉的目标是让计算机能够像人类一样对视觉信息进行处理和理解。为实现这个目标&#xff0c;计算机视觉结合了图像处理、机器学习、模…

JavaSE基础50题:28.(数组练习)冒泡排序

概述 给定一个整型数组&#xff0c;实现冒泡排序。 如&#xff1a;给一组数组{5&#xff0c;10&#xff0c;8&#xff0c;3&#xff0c;7}进行冒泡排序。 j一直往下走&#xff0c;和下一个数字进行比较&#xff0c;如果当前数字大于下一个数字&#xff0c;则两个数字交换&…

什么是高并发系统?

1.1 什么是高并发&#xff1f; 高并发&#xff08;High Concurrency&#xff09;&#xff0c;通常是指通过设计保证系统能够同时处理很多请求。即在同一个时间点&#xff0c;有很多的请求同时访问同一个接口。高并发意味着大流量&#xff0c;需要运用技术手段去抵抗这种大流量…