C语言代码
#include <stdlib.h>
#include <stdio.h>
#include "sapnwrfc.h"
RFC_RC SAP_API stfc_connection_impl(RFC_CONNECTION_HANDLE rfcHandle, RFC_FUNCTION_HANDLE funcHandle, RFC_ERROR_INFO* errorInfo){
RFC_RC rc = RFC_OK;
SAP_UC requtext[256], buf[256];
rc = RfcGetString(funcHandle, cU("REQUTEXT"), requtext, 256, NULL, errorInfo);
printfU(cU("Got request for STFC_CONNECTION.\nREQUTEXT = %s\n\n"), requtext);
sprintfU(buf, cU("STFC_CONNECTION called with REQUTEXT = %s"), requtext);
rc = RfcSetString(funcHandle, cU("ECHOTEXT"), buf, strlenU(buf), errorInfo);
return rc;
}
int mainU(int argc, SAP_UC** argv){
RFC_RC rc = RFC_OK;
RFC_CONNECTION_PARAMETER loginParams[1];
RFC_ERROR_INFO errorInfo;
RFC_CONNECTION_HANDLE connection;
RFC_FUNCTION_DESC_HANDLE z_perform_callback, stfc_connection;
RFC_FUNCTION_HANDLE functionContainer;
SAP_UC data[256];
loginParams[0].name = cU("dest"); loginParams[0].value = cU("SPJ");
connection = RfcOpenConnection(loginParams, 1, &errorInfo);
if (connection == NULL){
printfU(cU("Error during logon: %s\n"), errorInfo.message);
printfU(cU("Please check that the sapnwrfc.ini file is in the current\nworking directory and the logon parameters are ok.\n"));
return 1;
}
/* Note: In the following all error handling is omitted for simplicity. */
z_perform_callback = RfcGetFunctionDesc(connection, cU("Z_PERFORM_CALLBACK"), &errorInfo);
stfc_connection = RfcGetFunctionDesc(connection, cU("STFC_CONNECTION"), &errorInfo);
// The stfc_connection_impl function will be called from R/3 during the RfcInvoke step below!
rc = RfcInstallServerFunction(NULL, stfc_connection, stfc_connection_impl, &errorInfo);
functionContainer = RfcCreateFunction(z_perform_callback, &errorInfo);
rc = RfcSetString(functionContainer, cU("INPUT_DATA"), cU("Original Request"), 16, &errorInfo);
rc = RfcInvoke(connection, functionContainer, &errorInfo);
rc = RfcGetString(functionContainer, cU("OUTPUT_DATA"), data, 256, NULL, &errorInfo);
RfcCloseConnection(connection, NULL);
printfU(cU("Response from Z_PERFORM_CALLBACK: OUTPUT_DATA = %s\n"), data);
return 0;
}
ABAP代码
FUNCTION z_perform_callback.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(INPUT_DATA) TYPE CHAR255
*" EXPORTING
*" VALUE(OUTPUT_DATA) TYPE CHAR255
*"----------------------------------------------------------------------
DATA: error_message(120),
request LIKE sy-lisel,
echo LIKE sy-lisel.
CONCATENATE 'Z_PERFORM_CALLBACK called with INPUT_DATA =' input_data
INTO request SEPARATED BY space.
CALL FUNCTION 'STFC_CONNECTION' DESTINATION 'BACK'
EXPORTING
requtext = request
IMPORTING
echotext = echo
* RESPTEXT =
EXCEPTIONS
system_failure = 1 MESSAGE error_message
communication_failure = 2 MESSAGE error_message
.
IF sy-subrc NE 0.
CONCATENATE 'Error during callback:' error_message INTO output_data
SEPARATED BY space.
ELSE.
CONCATENATE 'Response from STFC_CONNECTION: ECHOTEXT =' echo INTO output_data
SEPARATED BY space.
ENDIF.
ENDFUNCTION.
分享到:
相关推荐
通过SAP NW RFC SDK,开发者能够创建客户应用程序,这些应用程序能够调用SAP系统中定义好的函数模块,就像它们是在本地调用一样。 在"nwrfcsdk-master"这个压缩包中,通常会包含以下关键组件: 1. **库文件...
首先,`nwrfcsdk`是SAP提供的一个C语言库,用于非ABAP环境与SAP NetWeaver系统通信。`nwrfc750P_5-70002752`是这个SDK的一个特定版本,可能包含头文件、库文件和其他必要的组件。在Linux上,你需要先安装这个SDK,...
### SAPRFC与PYTHON集成开发详解 #### 一、引言 在现代企业级应用开发中,SAP系统作为企业管理的核心平台之一,其与其他系统的集成变得日益重要。Python作为一种灵活且功能强大的编程语言,在数据处理、自动化脚本...
### JAVA调用SAP函数指南:深入解析与实践 #### 概览 在现代企业级应用开发中,Java与SAP系统的集成变得日益重要。本文档《JAVA调用SAP函数指南》旨在提供一个全面而深入的理解框架,帮助开发者掌握如何通过Java...
它是一种标准的SAP接口,允许外部系统(如Java应用程序)调用SAP系统中的函数模块,就像它们是本地代码一样。RFC提供了一种灵活且安全的方式来远程执行SAP业务逻辑,使得数据交换和流程集成成为可能。 SAPJCO3.jar...
- **C/C++**: 可以通过C/C++语言编写客户端应用程序来调用SAP系统的RFC接口。 - **OCX (ActiveX Control)**: 提供了与SAP系统交互的另一种方式,尤其适用于Windows环境下的应用程序开发。 - **SAP Business ...
在实际应用中,SAP JCO允许开发人员创建Java应用程序,这些程序能够调用SAP R/3或SAP NetWeaver AS ABAP的BAPI(Business Application Programming Interface)和RFC函数模块,实现跨系统集成和自动化工作流程。...
JCo库提供了可以直接在Java...该API通过JNI调用部署在客户端的SAP的RFC库。该RFC库是用C语言实现的,并且与JCo库 相互独立发布JCo组件的架构,配置,基本使用方法以及调试,如何对RFC方式调用的ABAP函数进行远程调试。
这种架构允许Java应用程序直接访问SAP系统的功能,尤其是通过远程函数调用(RFC)来调用ABAP函数。 **安装与配置** 为了在Java环境中使用JCo,首先需要下载并配置JCo库。最新版本的JCo可以从SAP Service ...
总之,JCO作为SAP与Java平台之间的桥梁,简化了跨系统集成的复杂性,使得开发者能够方便地在Java环境中调用SAP的业务逻辑。通过理解JCO的架构、配置、连接管理和函数调用,开发者可以高效地实现SAP与Java应用程序...