GO程序连接SAP RFC函数测试代码。
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://www.gavindong.com/2595.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
GO程序连接SAP RFC函数测试代码。
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://www.gavindong.com/2595.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
开发环境 操作系统:Fedora-Workstation-x86_64-27-1.6 Go版本:1.9.2 下载安装包:https://golang.org/dl/ 选择Linux…
https://medium.freecodecamp.org/learning-go-from-zero-to-hero-d2a3223b3d86 https://www.osc…
使用SAP的nwrfcsdk和gorfc库。 基本步骤如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
Windows下使用go连接SAP RFC函数 #安装nwrfcsdk C:\nwrfcsdk #配置path ;C:\nwrfcsdk\lib #配置环境变量 变量名:CGO_CFLAGS 变量值:C:\nwrfcsdk\include 变量名:CGO_LDFLAGS 变量值:C:\nwrfcsdk\lib #安装gcc https://sourceforge.net/projects/mingw/ #安装go saprfc库 go get github.com/stretchr/testify go get github.com/sap/gorfc cd $GOPATH/src/github.com/sap/gorfc/gorfc go build go install #Hello World package main import ( "fmt" "github.com/sap/gorfc/gorfc" "github.com/stretchr/testify/assert" "reflect" "testing" "time" ) func abapSystem() gorfc.ConnectionParameter { return gorfc.ConnectionParameter{ Dest: "I64", Client: "800", User: "demo", Passwd: "welcome", Lang: "EN", Ashost: "11.111.11.111", Sysnr: "00", Saprouter: "/H/222.22.222.22/S/2222/W/xxxxx/H/222.22.222.222/H/", } } func main() { c, _ := gorfc.Connection(abapSystem()) var t *testing.T params := map[string]interface{}{ "IMPORTSTRUCT": map[string]interface{}{ "RFCFLOAT": 1.23456789, "RFCCHAR1": "A", "RFCCHAR2": "BC", "RFCCHAR4": "ÄBC", "RFCINT1": 0xfe, "RFCINT2": 0x7ffe, "RFCINT4": 999999999, "RFCHEX3": []byte{255, 254, 253}, "RFCTIME": time.Now(), "RFCDATE": time.Now(), "RFCDATA1": "HELLÖ SÄP", "RFCDATA2": "DATA222", }, } r, _ := c.Call("STFC_STRUCTURE", params) assert.NotNil(t, r["ECHOSTRUCT"]) importStruct := params["IMPORTSTRUCT"].(map[string]interface{}) echoStruct := r["ECHOSTRUCT"].(map[string]interface{}) assert.Equal(t, importStruct["RFCFLOAT"], echoStruct["RFCFLOAT"]) assert.Equal(t, importStruct["RFCCHAR1"], echoStruct["RFCCHAR1"]) assert.Equal(t, importStruct["RFCCHAR2"], echoStruct["RFCCHAR2"]) assert.Equal(t, importStruct["RFCCHAR4"], echoStruct["RFCCHAR4"]) assert.Equal(t, importStruct["RFCINT1"], echoStruct["RFCINT1"]) assert.Equal(t, importStruct["RFCINT2"], echoStruct["RFCINT2"]) assert.Equal(t, importStruct["RFCINT4"], echoStruct["RFCINT4"]) // assert.Equal(t, importStruct["RFCHEX3"], echoStruct["RFCHEX3"]) assert.Equal(t, importStruct["RFCTIME"].(time.Time).Format("150405"), echoStruct["RFCTIME"].(time.Time).Format("15. assert.Equal(t, importStruct["RFCDATE"].(time.Time).Format("20060102"), e/Users/d037732/Downloads/gorfc/README.mdchoStruct["RFCDATE"].(time.Time).Format(". assert.Equal(t, importStruct["RFCDATA1"], echoStruct["RFCDATA1"]) assert.Equal(t, importStruct["RFCDATA2"], echoStruct["RFCDATA2"]) fmt.Println(reflect.TypeOf(importStruct["RFCDATE"])) fmt.Println(reflect.TypeOf(importStruct["RFCTIME"])) c.Close() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package main import ( "fmt" ) func main() { s1 := make([]int, 5, 8) s1[0] = 100 s1[1] = 100 s1[2] = 200 s1[3] = 888 s1[4] = 999 //a1 := [...]int{1, 3, 5, 7, 9} // s1 = a1[3:] //s1 = a1[1:4] s2 := make([]int, 8, 10) s2[3] = 699 s2[4] = 799 // copy(s2, s1) // copy(s1, s2) s2 = append(s2, 9, 10, 11, 12) fmt.Printf("%p,%v,%d,%d\n", s1, s1, len(s1), cap(s1)) fmt.Printf("%p,%v,%d,%d", s2, s2, len(s2), cap(s2)) } |
两个适合SAP ABAP顾问以及OA、中台等外围系统开发者和测试者调试SAP RFC接口函数、分析网络和bug的小工具,操作简单、功能齐全,值得收藏。 SAP RFC测试工具1 S…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
package main import ( "fmt" ) func main() { // var stu [10]int // stu := [10]int{1, 2} // var stu [10]string // stu[0] = "GO_lang" // stu[5] = "C++" // stu := [...]int{5: 9008} // stu1 := [5]int{} // stu2 := [3]int{} // stu2 == stu1 // var stu = new([5]int) // stu := [...][3]string{ // {"zhangsan", "shenzhen", "luohu"}, // {"wangwu", "shenzhen", "futian"}, // } var stu [10]int for i := 0; i < 10; i++ { stu[i] = i * 3 } fmt.Println(stu) fmt.Println(&stu) } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { /* db host: localhost db port: 3306 db version: 10.3.7-MariaDB database: create database go; table: create table Person(`uid` int(10) not null auto_increment, `name` varchar(50), `age` int(1), `city` varchar(50), primary key(`uid`)) ; */ //connect to mysql/mariadb //username:password@protocol(address)/dbname?param=value //my database is:go db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/go?charset=utf8") checkErr(err) //insert mysql stmt, err := db.Prepare("INSERT Person SET name=?,age=?,city=?") checkErr(err) res, err := stmt.Exec("李玲", 35, "上海市") checkErr(err) id, _ := res.LastInsertId() fmt.Println("最后插入id", id) //update stmt, err = db.Prepare("update Person set name=? where uid=?") checkErr(err) res, err = stmt.Exec("李璐", 1) checkErr(err) affect, err := res.RowsAffected() checkErr(err) fmt.Println("更新行数:", affect) //delete. stmt, err = db.Prepare("delete from Person where name=?") checkErr(err) res, err = stmt.Exec("李玲") checkErr(err) affect2, err2 := res.RowsAffected() checkErr(err2) fmt.Println("删除行数", affect2) //select mysql. rows, err := db.Query("SELECT * FROM Person") checkErr(err) for rows.Next() { var uid int var name string var age int var city string err = rows.Scan(&uid, &name, &age, &city) checkErr(err) fmt.Println(uid, name, age, city) } //关闭mysql数据库连接 db.Close() } func checkErr(err error) { if err != nil { //err非空则表明遇到错误. panic(err) } } |
1.先安装go运行环境,设置好GOPATH、GOROOT和GOBIN、PATH信息。 参考:GO语言学习环境搭建 2.安装gitscm 网址:https://git-scm.com…