最近有使用的需求,查询了一下,网络上找到的都是标准FUNCTION调用,只有TH_USER_LIST和rfc_read_table,然后就是相互一大抄。虽有借鉴意义,但是没有完全解决我的问题。
因此在研究使用完后,稍做记录。主要方便自己日后查看。
编写结构一般如下:
sub xxx()
1. 连接SAP
2.输入入参
3.执行FUNCTION,并接受出参
4.出参显示到EXCEL
end sub
其中:
“1.连接SAP”的部分,到处都有,不记录
“2.输入入参”的部分,这里有尝试几种类型,也还有几个问题未解决,如果有对此做过研究的朋友,欢迎互相交流
2.1 BAPI_GOODSMVT_GETITEMS的输入在“表”一共11个条件,我取了10个条件,列在EXCEL的sheet1,一个条件一列,然后循环往里写
2.2 入参在“导入”用exports的,如果是单值,尝试过直接写入到也没问题。但是如果开发把exports里面的入参做成和表类似的结构,就没有成功过了,不知道是不是exports不支持和tables一样的写法,毕竟我也没有找到标准function这么写的,只能靠猜测了
“3.接受出参”的部分
3.1输出一般在“导出”页签或者“表”页签。感觉和入参的exports一样,sap可能对于入出参里面,与vba连接不太支持维护成类型表的结构(我没有找到符合这种情况的标准function或者BAPI,所以有此猜测)
3.2对于BAPI_GOODSMVT_GETITEMS,执行完输入是表,到没有imports的问题,接受和写入EXCEL我自己是这么写的
这里有个很有意思的地方,写成ch.value(y,sheets("items").cells(2,s))就报错,把其中sheets("items").cells(2,s)先赋给a,再写成ch.value(y,a)就不报错。还不知道原因
“4.显示到EXCEL”的部分,这部分和与SAP的连接无关,主要是VBA的写法。能达到目的就行吧