Как я могу получить 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
Что вам нужно сделать, если вы хотите вызвать произвольную контрактную печатную форму, что, как я полагаю, вы хотите сделать, задавая этот вопрос:
- Чтобы узнать имя smartform FM, поставьте точку останова в приведенной выше строке
- Построить параметры для этого вызова 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
а также
- Запустите smartform FM /
1BCDWB/SF000000XX
найдено на шаге 1 с этими параметрами
Я не проверял все эти шаги самостоятельно, но я считаю, что это должно работать.