【问题标题】:Getting FAGLL03H report using pyrfc使用 pyrfc 获取 FAGLL03H 报告
【发布时间】:2020-04-30 16:03:52
【问题描述】:

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

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

这是我用来查询表格的代码:

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

【问题讨论】:

    标签: python-3.x sap-erp saprfc pyrfc


    【解决方案1】:
    1. 不可能
    2. 没有

    您需要了解的要点是SAP transaction(tcode)和SAP RFC之间的区别。差异很大,因此无法以类似的方式使用它们。您正在尝试通过RFC_READ_TABLE 像表格一样调用 FAGLL03H 报告,但它不是表格,它更多,它是一个事务。

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

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

    上述交易量巨大,用于输出总账科目行,无法通过 PyRFC 调用。 PyRFC features 仅限于调用包含 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 进行比较,如果它是相同的。只有在那之后你才能使用 PyRFC 来调用它们。

    【讨论】:

    • 优秀的答案!非常感谢您的详细解释,很有道理。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2021-03-24
      • 2011-11-08
      相关资源
      最近更新 更多