Linux 下使用 Go 调用 SAP RFC

1.安装配置 Golang 环境

# 获取 golang 安装包
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

# 解压
tar -xvf go1.9.2.linux-amd64.tar.gz

# 源码安装
sudo mv go /usr/local/

# 设置 golang 路径
export GOROOT=/usr/local/go
export GOPATH=$HOME/Code/go
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH

# 测试 golang 是否安装成功
mkdir -p $HOME/Code/go
mkdir -p $GOPATH/src/test
echo 'package main; import "fmt"; func main(){fmt.Println("Hello, Golang!")}' > $GOPATH/src/test/hello.go
go run $GOPATH/src/test/hello.go

2.配置 SAP SDK 依赖

# 进入到 Golang src
cd $GOPATH/src

# 克隆一个项目,项目中有 SAP SDK 依赖运行的 lib 包
git clone https://github.com/Sdu0/saprfc.git

# 创建 SAP SDK 系统目录
mkdir -p /usr/local/sap/nwrfcsdk

# 设置 SAP SDK 环境变量
export SAPNWRFC_HOME=/usr/local/sap/nwrfcsdk

# 复制刚才克隆下来的项目中的部分文件到 SAP SDK 系统目录中
cp -rp $GOPATH/src/saprfc/nwrfcsdk/* /usr/local/sap/nwrfcsdk/

# 创建系统静态资源链接库的配置文件
echo "/usr/local/sap/nwrfcsdk/lib" > /etc/ld.so.conf.d/nwrfcsdk.conf

# 手动刷新系统静态资源链接库信息
ldconfig -v

# 查看 SAP SDK 依赖是否安装成功(若能看到很多 *.so 说明已经成功)
ldconfig -p | grep sap

3.测试 SAP RFC 是否可以连接

package main

import (
	"fmt"
	"saprfc/helper"
	"time"
)

func abapSystem() saprfc.ConnectionParameter {
	// SAP RFC 的连接信息
	return saprfc.ConnectionParameter{
		Dest:      "",
		Client:    "800",
		User:      "xxx",
		Passwd:    "xxxxxx",
		Lang:      "ZH",
		Ashost:    "127.0.0.1",
		Sysnr:     "00",
		Saprouter: "",
	}
}

func main() {
	// 获取连接
	c, err := saprfc.ConnectionFromParams(abapSystem())
	if err != nil {
		fmt.Printf("Connection Error: %#v \n", err)
	}
	
    // 传入参数
	in_date, err := time.Parse("2006-01-02", "2019-07-01")
	params := map[string]interface{}{
		"IN_DATE": in_date,
	}

	// 调用接口
	r, err := c.Call("ZMM_MATNR", params)
	if err != nil {
		fmt.Printf("Call Error: %#v \n", err)
	}

	// 输出结果
	fmt.Printf("Response: %#v \n", r)

	//关闭连接
	c.Close()
}

End. 👻


参考链接:

Show Comments

Get the latest posts delivered right to your inbox.