PYTHON和SAP函数

2020-09-14 00:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好社区,

我尝试将ActiveX" wdtfuncs.ocx"与Python 3配合使用,但是当我调用FM RFC_READ_TABLE时,语法检查器向我显示一条错误消息。 代码下方:

从win32com.client导入*
 
LogonControl = Dispatch(" SAP.LogonControl.1") Y_objConnection = LogonControl.NewConnection
Y_objConnection.Client = X_MANDANTE
Y_objConnection.ApplicationServer = X_APPLICATION_SERVER Y_objConnection.User = X_USER
Y_objConnection.Password = X_PASSWORD Y_objConnection.SystemNumber = X_NUMERO_ISTANZA Y_objConnection.UseSAPLogonIni = False SilentLogon =真 Y_errore_connessione ="" 如果不是Y_objConnection.Logon(0,SilentLogon): Y_errore_connessione =" KO" 其他: Y_errore_connessione ="确定"

功能= Dispatch(" SAP.Functions") Functions.Connection = objConnection objRfcFunc = Functions.Add(" RFC_READ_TABLE") objRfcFunc.Exports(" QUERY_TABLE")。Value =" QPCD" objRfcFunc.Exports(" ROWCOUNT")。Value =" 99999" objRfcFunc.Exports(" DELIMITER")。Value =";" objRfcFunc.Tables(" OPTIONS")。FreeTable() objRfcFunc.Tables(" OPTIONS")。Rows.add objRfcFunc.Tables(" OPTIONS")(objRfcFunc.Tables(" OPTIONS")。RowCount," TEXT")=" CODE ='ZPROVA'" objRfcFunc.Tables(" FIELDS")。FreeTable() objRfcFunc.Tables(" FIELDS")。Rows.Add objRfcFunc.Tables(" FIELDS")(objRfcFunc.Tables(" FIELDS")。RowCount," FIELDNAME")=" CODE"
如果objRfcFunc.Call == False: 通过
width_Mymatrix = 1 行索引= 0 output_Matrix = {} 对于objRfcFunc.Tables(" DATA")。Rows()中的objDatRec: 对于范围(width_Mymatrix)中的columindex: output_Matrix [rowindex,columindex] = str(objDatRec(" WA"))。strip()。split(";")[columindex] 打印(output_Matrix [rowindex,columindex]) 行索引+ = 1

语法检查器返回以下语句错误:
objRfcFunc.Tables(" OPTIONS")(objRfcFunc.Tables(" OPTIONS")。RowCount," TEXT")=" CODE ='ZPROVA'"

错误消息是"无法分配给函数调用"。

我不明白要使用的正确语法是什么。
请帮帮我



         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好社区,

我尝试将ActiveX" wdtfuncs.ocx"与Python 3配合使用,但是当我调用FM RFC_READ_TABLE时,语法检查器向我显示一条错误消息。 代码下方:

从win32com.client导入*
 
LogonControl = Dispatch(" SAP.LogonControl.1") Y_objConnection = LogonControl.NewConnection
Y_objConnection.Client = X_MANDANTE
Y_objConnection.ApplicationServer = X_APPLICATION_SERVER Y_objConnection.User = X_USER
Y_objConnection.Password = X_PASSWORD Y_objConnection.SystemNumber = X_NUMERO_ISTANZA Y_objConnection.UseSAPLogonIni = False SilentLogon =真 Y_errore_connessione ="" 如果不是Y_objConnection.Logon(0,SilentLogon): Y_errore_connessione =" KO" 其他: Y_errore_connessione ="确定"

功能= Dispatch(" SAP.Functions") Functions.Connection = objConnection objRfcFunc = Functions.Add(" RFC_READ_TABLE") objRfcFunc.Exports(" QUERY_TABLE")。Value =" QPCD" objRfcFunc.Exports(" ROWCOUNT")。Value =" 99999" objRfcFunc.Exports(" DELIMITER")。Value =";" objRfcFunc.Tables(" OPTIONS")。FreeTable() objRfcFunc.Tables(" OPTIONS")。Rows.add objRfcFunc.Tables(" OPTIONS")(objRfcFunc.Tables(" OPTIONS")。RowCount," TEXT")=" CODE ='ZPROVA'" objRfcFunc.Tables(" FIELDS")。FreeTable() objRfcFunc.Tables(" FIELDS")。Rows.Add objRfcFunc.Tables(" FIELDS")(objRfcFunc.Tables(" FIELDS")。RowCount," FIELDNAME")=" CODE"
如果objRfcFunc.Call == False: 通过
width_Mymatrix = 1 行索引= 0 output_Matrix = {} 对于objRfcFunc.Tables(" DATA")。Rows()中的objDatRec: 对于范围(width_Mymatrix)中的columindex: output_Matrix [rowindex,columindex] = str(objDatRec(" WA"))。strip()。split(";")[columindex] 打印(output_Matrix [rowindex,columindex]) 行索引+ = 1

语法检查器返回以下语句错误:
objRfcFunc.Tables(" OPTIONS")(objRfcFunc.Tables(" OPTIONS")。RowCount," TEXT")=" CODE ='ZPROVA'"

错误消息是"无法分配给函数调用"。

我不明白要使用的正确语法是什么。
请帮帮我



付费偷看设置
发送
2条回答

嗨Danilo,

外部应用程序不应调用功能模块RFC_READ_TABLE FM。 请参阅SAP注释

382318 -常见问题解答|功能模块RFC_READ_TABLE

最诚挚的问候,

Antal

DafaDDDa
2楼-- · 2020-09-14 01:24

您好Danilo

这里有同样的问题(顺便说一句,您同时找到了解决方案吗?)

该函数调用有效,但是我不能在调用之前将值放在OPTIONS和FIELDS表中。 一切都可以在VBA和PHP中完美运行,而不是Python。

按照示例

 RfcCallTransaction.Tables(" OPTIONS")。AppendRow
 print(RfcCallTransaction.Tables(" OPTIONS")。RowCount)

输出为0。

@Antal:是的,RFC_READ_TABLE可能不是最好的方法,但是它确实有效,至少从15年以来就存在了。 我同意该功能不应在生产代码中使用,但是它仍然是从SAP检索快速数据的最佳方法,而无需每次需要从DB读取某些行时都需要程序员的参与。

任何帮助将不胜感激

一周热门 更多>