Как я могу получить is_sfparam-content во время печати контрактов RECN?

Как я могу получить is_sfparam-content, используя запрос или функциональный модуль.

затем будет передан в качестве параметра cl_recp_data_cn_general=>get_contract. у тебя есть идеи? Где я могу получить этот is_sfparam-content?

Спасибо

CALL METHOD cl_recp_data_cn_general=>get_contract
  EXPORTING
    id_guid     = is_sfparam-content
  IMPORTING
    es_contract = contract
  CHANGING
    cf_error    = lf_error.

1 ответ

Этот параметр guid не имеет смысла, поскольку он генерируется во время выполнения. Вы можете проверить это самостоятельно, поставив точку останова в первой строке (например, строка 102) метода cl_recp_data_cn_general=>get_contract и проверка id_guid Вар в отладчике. Это будет отличаться с каждым прогоном предварительного просмотра в RECN TCode. Проверьте также строку 11 CONSTRUCTOR метод CL_RECP_SF_DOC класс, он выполняется во время каждого поколения формы.

Объект реального контракта лежит в переменной go_busobj программы SAPLRECA_BDT_APPL_TOOL который обеспечивает функциональность RECN и является глобальным, то есть он постоянно загружается в память во время работы RECN, просто передавая объект doc в вызываемые методы через стек вызовов, за которым вы можете следовать в отладчике.

Где действительно происходит генерация форм CL_RECP_SF_JOB класс, для предварительного просмотра это _FP_PREVIEW метод, для печати это _FP_PRINT, Например, в методе предварительного просмотра в этом месте вызывается форма FM

Что вам нужно сделать, если вы хотите вызвать произвольную контрактную печатную форму, что, как я полагаю, вы хотите сделать, задавая этот вопрос:

  1. Чтобы узнать имя smartform FM, поставьте точку останова в приведенной выше строке
  2. Построить параметры для этого вызова FM. Единственный обязательный параметр LS_SFPARAM-CONTENT который является GUID.

Вы можете создать этот GUID вручную, создав CL_RECP_SF_DOC объект, пусть будет io_doc вар. Конструктор этого объекта имеет входной параметр is_doc которые должны быть заполнены в соответствии с атрибутами контракта, которые вы хотите распечатать, и которые хранятся в VIBDRO а также VICNCN столы.

После создания этого объекта передайте его атрибут io_doc->md_guid в ls_sfparam-content, сгенерируйте другие параметры с CL_RECP_SF_JOB->_sf_get_form_param а также

  1. Запустите smartform FM / 1BCDWB/SF000000XX найдено на шаге 1 с этими параметрами

Я не проверял все эти шаги самостоятельно, но я считаю, что это должно работать.

Другие вопросы по тегам