这是SAP和pyrfc模块的使用之间的一个复杂问题。我需要使用FAGLL03H
事务代码(tcode)每天将G/L报告复制到数据库中。现在,问题是FAGLL03H
本身不是一个表,而是一个G/L帐户线项浏览器(G/L View),所以我需要访问该Tcode并传递一系列参数来获取我们需要的信息。
这是我用来查阅表的代码:
import pyrfc
from pprint import PrettyPrinter
conn = pyrfc.Connection(ashost=...)
options = [{'TEXT': "FCURR = 'USD'"}]
pp = PrettyPrinter(indent=4)
ROWS_AT_A_TIME = 10
rowskips = 0
while True:
print(u"----Begin of Batch---")
result = conn.call('RFC_READ_TABLE', \
QUERY_TABLE='TCURR', \
OPTIONS=options, \
ROWSKIPS=rowskips, ROWCOUNT=ROWS_AT_A_TIME)
pp.pprint(result['DATA'])
rowskips += ROWS_AT_A_TIME
if len(result['DATA']) < ROWS_AT_A_TIME:
break
发布于 2020-02-06 15:04:44
您需要理解的要点是SAP事务 (tcode)和SAP RFC之间的区别。这种差异是巨大的,因此不可能以类似的方式使用它们。您试图像通过FAGLL03H调用表一样调用RFC_READ_TABLE
报表,但它不是一个表,而是一个事务。
SAP不过是SAP中的一个快捷方式,它指向某个程序(通常是GUI程序),可以包含数百个模块(包括支持RFC的)。其中一些模块是内部的,没有RFC等效的,因此不可能远程调用它们,至少不是最后一个模块,必须知道如何调用它们(按什么顺序)和传递哪些参数。
SAP就像ABAP代码的容器(但也包括调用此代码的协议 ),它实现了一些功能,比如转换字符的情况或转换度量单元,或者是巨大的功能,例如发布财务文档和创建企业层次对象(如工作中心、成本中心、销售组织等)。RFC -模块可以比作Python模块或Java方法,它们通常用于一个单一的任务,通常不是单独使用,而是与其他方法结合使用。
上述交易是巨大的,是为了输出的G/L帐户线,不能通过PyRFC调用。PyRFC 特性仅限于调用由FAGLL03H
组成的RFC模块。
这里唯一可以做的事情是找到与FAGLL03H
相同的返回相同项的等效函数模块。可能的候选人:
如果输出与tcode相同,您应该试一试,并将其与tcode进行比较。只有在那之后,您才能使用PyRFC调用它们。
发布于 2020-02-03 12:41:21
为了获得所有特定的表,请检查以下内容:
https://www.recercat.cat/bitstream/handle/2072/5419/PFCLopezRuizAnnex3.pdf?sequence=4
然后,您可以从那里构建或创建一个报告(transaction SQ01)并通过RSAQ_REMOTE_QUERY_CALL执行。您的业务需求应该决定您的代码,而不是相反。
https://stackoverflow.com/questions/59725142
复制相似问题