首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用pyrfc获取FAGLL03H报告

使用pyrfc获取FAGLL03H报告
EN

Stack Overflow用户
提问于 2020-01-13 22:32:26
回答 2查看 952关注 0票数 2

这是SAP和pyrfc模块的使用之间的一个复杂问题。我需要使用FAGLL03H事务代码(tcode)每天将G/L报告复制到数据库中。现在,问题是FAGLL03H本身不是一个表,而是一个G/L帐户线项浏览器(G/L View),所以我需要访问该Tcode并传递一系列参数来获取我们需要的信息。

  1. 如何使用RFC协议访问该tcode并生成报告?
  2. 通过pyrfc可以做(1)吗?

这是我用来查阅表的代码:

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-06 15:04:44

  1. 不行
  2. 不是

您需要理解的要点是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相同的返回相同项的等效函数模块。可能的候选人:

  • BAPI_GLX_GETDOCITEMS
  • FAGL_GET_OPEN_ITEMS_GL
  • FAGL_GET_OPEN_ITEMS_KU
  • FAGL_GET_OPEN_ITEMS_LI
  • FAGL_GET_OPEN_ITEMS
  • FKK_GL_LINE_ITEMS_SELECT
  • BAPI_AP_ACC_GETBALANCEDITEMS
  • BAPI_AR_ACC_GETBALANCEDITEMS
  • BAPI_AP_ACC_GETOPENITEMS
  • BAPI_AR_ACC_GETOPENITEMS

如果输出与tcode相同,您应该试一试,并将其与tcode进行比较。只有在那之后,您才能使用PyRFC调用它们。

票数 3
EN

Stack Overflow用户

发布于 2020-02-03 12:41:21

为了获得所有特定的表,请检查以下内容:

https://www.recercat.cat/bitstream/handle/2072/5419/PFCLopezRuizAnnex3.pdf?sequence=4

然后,您可以从那里构建或创建一个报告(transaction SQ01)并通过RSAQ_REMOTE_QUERY_CALL执行。您的业务需求应该决定您的代码,而不是相反。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59725142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档