`
Jack Wu
  • 浏览: 896322 次
  • 来自: ...
社区版块
存档分类
最新评论

ABAP--C语言调用SAP的RFC的代码样例

阅读更多

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 NW RFC SDK,开发者能够创建客户应用程序,这些应用程序能够调用SAP系统中定义好的函数模块,就像它们是在本地调用一样。 在"nwrfcsdk-master"这个压缩包中,通常会包含以下关键组件: 1. **库文件...

    linux使用python通过pyrfc连接SAP使用的nwrfcsdk

    首先,`nwrfcsdk`是SAP提供的一个C语言库,用于非ABAP环境与SAP NetWeaver系统通信。`nwrfc750P_5-70002752`是这个SDK的一个特定版本,可能包含头文件、库文件和其他必要的组件。在Linux上,你需要先安装这个SDK,...

    SAPRFC与PYTHON集成开发[收集].pdf

    ### SAPRFC与PYTHON集成开发详解 #### 一、引言 在现代企业级应用开发中,SAP系统作为企业管理的核心平台之一,其与其他系统的集成变得日益重要。Python作为一种灵活且功能强大的编程语言,在数据处理、自动化脚本...

    JAVA调用SAP函数指南.pdf

    ### JAVA调用SAP函数指南:深入解析与实践 #### 概览 在现代企业级应用开发中,Java与SAP系统的集成变得日益重要。本文档《JAVA调用SAP函数指南》旨在提供一个全面而深入的理解框架,帮助开发者掌握如何通过Java...

    sapjco3.jar for mac 64

    它是一种标准的SAP接口,允许外部系统(如Java应用程序)调用SAP系统中的函数模块,就像它们是本地代码一样。RFC提供了一种灵活且安全的方式来远程执行SAP业务逻辑,使得数据交换和流程集成成为可能。 SAPJCO3.jar...

    SAP Interface

    - **C/C++**: 可以通过C/C++语言编写客户端应用程序来调用SAP系统的RFC接口。 - **OCX (ActiveX Control)**: 提供了与SAP系统交互的另一种方式,尤其适用于Windows环境下的应用程序开发。 - **SAP Business ...

    sapjco-rs6000_64-2.1.10.tgz

    在实际应用中,SAP JCO允许开发人员创建Java应用程序,这些程序能够调用SAP R/3或SAP NetWeaver AS ABAP的BAPI(Business Application Programming Interface)和RFC函数模块,实现跨系统集成和自动化工作流程。...

    java使用jco连接SAP

    JCo库提供了可以直接在Java...该API通过JNI调用部署在客户端的SAP的RFC库。该RFC库是用C语言实现的,并且与JCo库 相互独立发布JCo组件的架构,配置,基本使用方法以及调试,如何对RFC方式调用的ABAP函数进行远程调试。

    jco 在java中调用adap服务

    这种架构允许Java应用程序直接访问SAP系统的功能,尤其是通过远程函数调用(RFC)来调用ABAP函数。 **安装与配置** 为了在Java环境中使用JCo,首先需要下载并配置JCo库。最新版本的JCo可以从SAP Service ...

    JCO基本介绍

    总之,JCO作为SAP与Java平台之间的桥梁,简化了跨系统集成的复杂性,使得开发者能够方便地在Java环境中调用SAP的业务逻辑。通过理解JCO的架构、配置、连接管理和函数调用,开发者可以高效地实现SAP与Java应用程序...

Global site tag (gtag.js) - Google Analytics