Получение отчета FAGLL03H с использованием pyrfc - PullRequest
2 голосов
/ 14 января 2020

Это смешанный вопрос между SAP и использованием модуля pyrf c. Мне нужно использовать tcode FAGLL03H, чтобы ежедневно копировать основной отчет в базу данных. Дело в том, что FAGLL03H - это не таблица как таковая, а обозреватель позиций строки основного счета (общий обзор), поэтому мне нужно получить доступ к этому Tcode и передать ряд параметров, чтобы получить информацию, которую мы нужно.

  1. Как я могу использовать протокол RF C для доступа к этому tcode и генерировать отчет?
  2. можно ли сделать (1) через pyrf c?

Это код, который я использую для просмотра таблиц:

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

Ответы [ 2 ]

2 голосов
/ 06 февраля 2020
  1. Ни в коем случае
  2. Нет

Главное, что вам нужно понять, это разница между транзакцией SAP (tcode) и SAP RF C. Разница огромна и делает невозможным использование их подобным образом. Вы пытаетесь вызвать отчет FAGLL03H как таблицу через RFC_READ_TABLE, но это не таблица, а гораздо больше, это транзакция.

SAP tcode - это всего лишь ярлык в SAP, который указывает на некоторые программы, обычно GUI, и могут содержать сотни модулей, включая RF C -подключенные. И некоторые из этих модулей являются внутренними и не имеют эквивалента RF C, поэтому их невозможно вызывать удаленно, хотя бы, но не последним, необходимо знать, как их вызывать (в каком порядке) и какие параметры передавать .

SAP RF C подобен контейнеру для кода ABAP (но также протокол для вызова этого кода), который реализует некоторые функциональные возможности, либо небольшой кусочек, например регистр преобразования символов, либо преобразование единиц измерения или огромных, например, публикация финансовых документов и создание объектов корпоративной иерархии, таких как рабочие центры, центры затрат, торговые организации и т. д. c. RF C -модули можно сравнить с модулями Python или Java, и они обычно реализуются для одной задачи и обычно используются не автономно, а в сочетании с другими методами.

Выше указанная транзакция огромна и предназначена для вывода строк основного счета и не может быть вызвана через PyRF C. Функции PyRF C ограничены вызовом только RF C -модулей, из которых состоит FAGLL03H.

Единственное, что вы можете здесь сделать, - найти эквивалент функциональные модули, которые возвращают те же элементы, что и FAGLL03H. Возможные кандидаты:

  • BAPI_GLX_GETDOCITEMS

  • FAGL_GET_OPEN_ITEMS_GL

  • FAGL_GET_OPEN_ITEMS_KU

  • FAGL_GET_OPEN_ITEMS

  • FKK_GL_LINE_ITEMS_SELECT

  • BAPI_BAC__BAC__95

  • BAPI_AR_ACC_GETBALANCEDITEMS

  • BAPI_AP_ACC_GETOPENITEMS

  • BAPI_AR_ACC_GETOPENITEMS

* 1073 сравните вывод с вашим tcode, если он идентичен. Только после этого вы можете использовать PyRF C для их вызова.
1 голос
/ 03 февраля 2020

Установите этот флажок, чтобы получить все указанные c таблицы:

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

Затем вы можете либо построить оттуда, либо создать отчет ( транзакции SQ01) и выполнить через RSAQ_REMOTE_QUERY_CALL. Ваши бизнес-требования должны решать ваш код, а не наоборот.

...