使用 pyrfc 获取 FAGLL03H 报告

Getting FAGLL03H report using pyrfc

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

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

这是我用来咨询的代码tables:

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

选中此项以获得所有特定表:

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

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

  1. 不行
  2. 没有

你需要理解的重点是SAP transaction (tcode) and SAP RFC之间的区别。差异是巨大的,因此不可能以类似的方式使用它们。您正在尝试通过 RFC_READ_TABLE 像 table 一样调用 FAGLL03H 报告,但它不是 table,它更重要,它是一个事务。

SAP tcode 只不过是 SAP 中指向某个程序(通常是 GUI 程序)的快捷方式,可以包含 数百个 模块,包括支持 RFC 的模块。而且其中一些模块是内部的,没有等效的 RFC,因此不可能远程调用它们,至少但不是最后有必要知道如何调用它们(以什么顺序)以及传递哪些参数。

SAP RFC 就像是 ABAP 代码的容器(但也 a protocol 用于调用此代码),它实现了一些功能,可以是小块,例如转换字符大小写或转换度量单位,也可以是大块,例如发布财务文档和创建企业层次结构对象,如工作中心、成本中心、销售组织等。RFC 模块可以比作 Python 模块或 Java 方法,它们通常为一项任务实现, 通常不单独使用,而是与其他方法结合使用。

上述交易金额巨大,用于G/L账户线的输出,无法通过PyRFC调用。 PyRFC features 仅限于调用 FAGLL03H 包含的 RFC 模块。

您在这里唯一能做的就是找到 等价的 个功能模块,其中 returns 项与 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 进行比较,如果它是相同的。只有这样你才能使用 PyRFC 调用它们。