2

这是 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
4

2 回答 2

3
  1. 没门

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

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

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

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

于 2020-02-06T15:04:44.213 回答
1

检查此项以获取所有特定表:

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

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

于 2020-02-03T12:41:21.823 回答