Вывести кирилицу в PDF получилось методом attach_file_to_response.
Код целиком:
Code:
METHOD get_pdf.
TYPE-POOLS abap.
DATA:
value TYPE string,
fm_name TYPE rs38l_fnam,
lt_params TYPE abap_func_parmbind_tab,
param LIKE LINE OF lt_params,
lt_exceptions TYPE abap_func_excpbind_tab,
exception LIKE LINE OF lt_exceptions,
pdf_ref TYPE REF TO fpformoutput,
fp_docparams TYPE sfpdocparams,
fp_formoutput TYPE fpformoutput,
fp_outputparams TYPE sfpoutputparams,
adserrstr TYPE string,
pdf TYPE xstring,
* generate the PDF
* => get the name of the generated function module
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = formular
IMPORTING
e_funcname = fm_name.
* set doc params so that the pdf will be interactive
* fp_docparams-fillable = abap_true.
param-name = '/1BCDWB/DOCPARAMS'.
param-kind = abap_func_exporting.
GET REFERENCE OF fp_docparams INTO param-value.
INSERT param INTO TABLE lt_params.
* add parameters
LOOP AT params INTO param.
INSERT param INTO TABLE lt_params.
ENDLOOP.
* add the formoutput exporting parameter
param-name = '/1BCDWB/FORMOUTPUT'.
param-kind = abap_func_importing.
GET REFERENCE OF fp_formoutput INTO param-value.
INSERT param INTO TABLE lt_params.
* add the exception
exception-name = 'OTHERS'.
exception-value = 10.
INSERT exception INTO TABLE lt_exceptions.
* set output parameters and open spool job
fp_outputparams-nodialog = 'X'.
fp_outputparams-getpdf = 'X'.
* fp_outputparams-connection = m_ads_destination.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = fp_outputparams.
* dynamic call of the generated function module
CALL FUNCTION fm_name
PARAMETER-TABLE
lt_params
EXCEPTION-TABLE
lt_exceptions.
IF sy-subrc <> 0.
* there was an error; check, if it was an ADS related problem
CALL FUNCTION 'FP_GET_LAST_ADS_ERRSTR'
IMPORTING
e_adserrstr = adserrstr.
errstr = adserrstr.
RETURN.
ENDIF.
* close spool job
CALL FUNCTION 'FP_JOB_CLOSE'.
* get the pdf
READ TABLE lt_params WITH KEY name = '/1BCDWB/FORMOUTPUT' INTO param.
pdf_ref ?= param-value.
pdf = pdf_ref->pdf.
* transfer the pdf to the user
cl_wd_runtime_services=>attach_file_to_response(
i_filename = 'myOfflinePdf.pdf'
i_content = pdf
i_mime_type = 'application/pdf'
i_in_new_window = abap_true
i_inplace = abap_true
).
ENDMETHOD.