call function 'DATE_CHECK_PLAUSIBILITY'
exporting
date = lv_dt
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2 .
***** Validação
LOOP AT ... INTO WA. TRY.
data(ls_ztbsd0027) = gt_ztbsd0027[ kostl = wa-kostl
perio = wa-perio
gjahr = wa-gjahr
] .
CATCH cx_sy_itab_line_not_found .
gv_erro = abap_true.
message s000(zlg) with 'Não existe valores para serem rateados'
'rateados neste Centro de Custo' wa-kostl.
return.
ENDTRY.
ENDLOOP.
FORM F_PRINT_FORM using p_kostl p_obra.
data:
lv_tam type i,
lv_pos type i.
data:
lv_formname type TDSFNAME,
lv_data type c LENGTH 8,
lv_hora type c LENGTH 6,
lv_path type string,
lv_subrc type sysubrc,
lv_msg type bapi_msg,
lo_util type ref to ZCL_UTIL.
data:
wa_control_parameters type SSFCTRLOP,
wa_output_options type SSFCOMPOP,
wa_job_output_info type SSFCRESCL,
gv_devtype type RSPOPTYPE,
gv_formname type tdsfname,
gv_size type i,
gt_lines TYPE table of TLINE, "ZCTSD0004,
gt_lines_out TYPE ZCTSD0004,
gv_string TYPE string,
gt_otf TYPE TSFOTF.
CREATE OBJECT lo_util.
* Nome do Formulário
lv_formname = c_form. " ZSFSD001
* Identificação de Data e Hora
lv_data = sy-datum.
lv_hora = sy-uzeit.
* Verifica o caminho (pasta)
lv_tam = strlen( p_folder ).
if lv_tam is initial.
exit.
else.
lv_pos = lv_tam - 1.
if p_folder+lv_pos(1) <> '\'.
p_folder = p_folder && '\'.
endif.
endif.
* Path --> Caminho + Nome do Arquivo
if p_folder is not initial.
lv_path = p_folder &&
|Espelho_| &&
p_kostl &&
|_| &&
p_obra &&
|_| &&
lv_data &&
|.pdf| .
* Busca o parâmetro de identificação do 'drive' do PDF
CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
I_LANGUAGE = sy-langu
IMPORTING
E_DEVTYPE = gv_devtype
EXCEPTIONS
NO_LANGUAGE = 1
LANGUAGE_NOT_INSTALLED = 2
NO_DEVTYPE_FOUND = 3
SYSTEM_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
exit.
ENDIF.
* Identifica a função do smartforms
lv_formname = c_form .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_formname
IMPORTING
fm_name = gv_formname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
exit.
ENDIF.
* Parâmetros de geração do PDF
wa_control_parameters-no_dialog = abap_true.
wa_control_parameters-GETOTF = abap_true.
wa_output_options-tdprinter = gv_devtype . "'PDF1'.
* Executa o formulário
CALL FUNCTION gv_formname
EXPORTING
control_parameters = wa_control_parameters
output_options = wa_output_options
CABEC = wa_cabec
DADOS = gt_dados
IMPORTING
* document_output_info = wa_document_output_info
* job_output_options = wa_job_output_options
job_output_info = wa_job_output_info
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
if sy-subrc <> 0 .
exit.
endif.
* Converte para PDF
gt_otf = wa_job_output_info-OTFDATA[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = gv_size
TABLES
otf = gt_otf
lines = gt_lines
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
OTHERS = 5.
IF sy-subrc <> 0.
exit.
ENDIF.
* Captura o caminho + Nome do Arquivo
gv_string = lv_path.
* Gera o arquivo PDF - LOCAL
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE = gv_size
FILENAME = gv_string
FILETYPE = 'BIN'
* IMPORTING
* FILELENGTH =
CHANGING
DATA_TAB = gt_lines
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
NOT_SUPPORTED_BY_GUI = 22
ERROR_NO_GUI = 23
others = 24.
IF SY-SUBRC <> 0.
message s398(00) with 'ERRO ao gerar o arquivo' gv_string DISPLAY LIKE 'E'.
ELSE.
message s398(00) with 'Arquivo' gv_string 'gerado com sucesso'.
ENDIF.
endif.
ENDFORM. "F_PRINT_FORM