Ver Mensaje Individual
  #2  
Viejo 28/10/10, 16:33:01
agv1976 agv1976 is offline
Member
 
Fecha de Ingreso: jun 2006
Mensajes: 66
Este report adjuntaba 5 archivos

---------------------------------------------------------------------*
*& Report ZPC_PDF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

* Includes declare data
INCLUDE zpc_pdf_top. " Global Data

INCLUDE rlb_invoice_data_declare.

* INCLUDE ZPC_PDF_O01. " PBO-Modules
* INCLUDE ZPC_PDF_I01. " PAI-Modules
* INCLUDE ZPC_PDF_F01. " FORM-Routines

* Selection screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: p_spmon TYPE s710-spmon,
p_subje(255).

SELECT-OPTIONS: s_smtp FOR adr6-smtp_addr,
s_file FOR filetext-filename.

SELECTION-SCREEN END OF BLOCK b1.

* Include de funciones
INCLUDE zpc_pdf_forms.

* Mail program
START-OF-SELECTION.

PERFORM param.

* Form name
lf_formname = 'ZPRUEBA_PDF'.

PERFORM set_print_data_to_read USING lf_formname
CHANGING ls_print_data_to_read
cf_retcode.

PERFORM module_name.

PERFORM convert_otf.

PERFORM line_change.

PERFORM config_mail.

* Enviar mail
PERFORM enviar_email
TABLES
pdf_tab_aux " <-- Tabla con el pdf de 255 de anchura
ltb_body " <-- Texto del cuerpo del correo
ltb_recipients " <-- Receptores del correo
USING
lw_subject " <-- Titulo del correo
lw_filename. " <-- Nombre del adjunto

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Include ZPC_PDF_FORMS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form set_print_data_to_read
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LF_FORMNAME text
* <--P_LS_PRINT_DATA_TO_READ text
* <--P_RETCODE text
*----------------------------------------------------------------------*

FORM set_print_data_to_read USING if_formname LIKE tnapr-sform
CHANGING cs_print_data_to_read TYPE lbbil_print_data_to_read
cf_retcode.

FIELD-SYMBOLS: <fs_print_data_to_read> TYPE xfeld.
DATA: lt_fieldlist TYPE tsffields.

* Datos requeridos para la impresión de los Smart-Forms.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE
cs_print_data_to_read TO <fs_print_data_to_read>.
IF sy-subrc <> 0. EXIT. ENDIF.
<fs_print_data_to_read> = 'X'.
ENDDO.

CALL FUNCTION 'SSF_FIELD_LIST'
EXPORTING
formname = if_formname
* VARIANT = ' '
IMPORTING
fieldlist = lt_fieldlist
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.

ENDFORM. " set_print_data_to_read

*&--------------------------------------------------------------------*
*& Form ENVIAR_EMAIL
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*

FORM enviar_email TABLES ptb_pdf255 STRUCTURE solisti1
ptb_body STRUCTURE solisti1
ptb_recipients STRUCTURE somlreci1
USING pw_subject TYPE so_obj_des
pw_filename TYPE char100.

* Data declaration
* Variables y tablas internas
DATA: BEGIN OF ltb_objbin OCCURS 0.
INCLUDE STRUCTURE solisti1.
DATA: END OF ltb_objbin.

DATA: start TYPE i,
end TYPE i.

DATA: lwa_doc_chng LIKE sodocchgi1,
lw_tab_lines LIKE sy-tabix,
ltb_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE,
ltb_objheader LIKE solisti1 OCCURS 0 WITH HEADER LINE.

* Main processing section
CLEAR: ltb_objbin, ltb_objtxt, ltb_objpack, lwa_doc_chng.
REFRESH: ltb_objbin, ltb_objtxt, ltb_objpack.

* Control Data
lwa_doc_chng-obj_name = 'URGENT'.
lwa_doc_chng-sensitivty = 'P'.
lwa_doc_chng-no_change = 'X'.
lwa_doc_chng-priority = '1'.
lwa_doc_chng-obj_prio = '1'.
lwa_doc_chng-obj_langu = sy-langu.

* Email Subject
lwa_doc_chng-obj_descr = pw_subject.

* Attachment
* Move the binary attachment to other internal table.
ltb_objbin[] = ptb_pdf255[].

APPEND ltb_objbin.

ltb_objpack-transf_bin = 'X'.

* Inicially 1 for attachments
ltb_objpack-head_num = 1.
ltb_objpack-body_start = 1.

* Get the number of lines in the Attachment (PDF FILE)
DESCRIBE TABLE ltb_objbin LINES lw_tab_lines.

ltb_objpack-body_num = lw_tab_lines.
ltb_objpack-doc_type = 'PDF'.
ltb_objpack-obj_descr = pw_filename.
ltb_objpack-obj_name = pw_filename.
ltb_objpack-doc_size = lw_tab_lines * 255.

APPEND ltb_objpack.

LOOP AT s_file.

ltb_objpack-body_start = ltb_objpack-body_start + ltb_objpack-body_num.

l_file = s_file-low.
fdpos = STRLEN( l_file ) - 3.

PERFORM read_from_frontend TABLES ltb_objbin_aux
CHANGING l_file
ltb_objpack-doc_size
ltb_objpack-body_num.

LOOP AT ltb_objbin_aux.
MOVE ltb_objbin_aux TO ltb_objbin.
APPEND ltb_objbin.
ENDLOOP.

pw_filename = l_file+3(fdpos).

ADD 1 TO ltb_objpack-head_start.
ltb_objpack-transf_bin = 'X'.
ltb_objpack-doc_type = 'RAW'.
ltb_objpack-obj_descr = pw_filename.
ltb_objpack-obj_name = pw_filename.

APPEND ltb_objpack.

ENDLOOP.

* Call the function to send the PDF file by email
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = lwa_doc_chng
put_in_outbox = 'X'
* COMMIT_WORK = ' '
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = ltb_objpack
contents_bin = ltb_objbin
contents_txt = ltb_objtxt
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
receivers = ptb_recipients
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
COMMIT WORK.
* Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
ENDIF.

ENDFORM. "enviar_email

*&---------------------------------------------------------------------*
*& Form Line_change
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM line_change.

* Cambio de tamaño
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
transfer_bin = 'X'
TABLES
content_in = pdf_tab
content_out = pdf_tab_aux.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " Line_change
*&---------------------------------------------------------------------*
*& Form param
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM param.

ls_composer_param-tddest = 'LOCL'. "Dispositivo de salida
ls_composer_param-tdnewid = 'X'.
ls_composer_param-tdimmed = 'X'. "Salida inmediata
ls_composer_param-tddelete = ' '. "Borrar tras salida orden spool

ls_control_param-getotf = 'X'.
ls_control_param-no_dialog = 'X'.
ls_control_param-preview = 'X'.

ENDFORM. " param

*&---------------------------------------------------------------------*
*& Form module_name
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM module_name.

* Llamada al modulo de funciones que ejecuta el smart-forms.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lf_formname
IMPORTING
fm_name = lf_fm_name.

CALL FUNCTION lf_fm_name
EXPORTING
archive_index = toa_dara
archive_parameters = arc_params
control_parameters = ls_control_param
mail_recipient = ls_recipient
mail_sender = ls_sender
output_options = ls_composer_param
user_settings = space
is_nast = nast
is_repeat = repeat
spmon = p_spmon
IMPORTING
job_output_info = tab_otf_data
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4.

* Appending the otf data into the final table
tab_otf_final[] = tab_otf_data-otfdata[].

ENDFORM. " module_name
*&---------------------------------------------------------------------*
*& Form convert_otf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM convert_otf.

* Converting OTF data into pdf data
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
* ARCHIVE_INDEX = ' '
* COPYNUMBER = 0
* ASCII_BIDI_VIS2LOG = ' '
* PDF_DELETE_OTFTAB = ' '
IMPORTING
bin_filesize = bin_filesize
* BIN_FILE =
TABLES
otf = tab_otf_final
lines = pdf_tab
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
OTHERS = 5.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " convert_otf

*&---------------------------------------------------------------------*
*& Form Config_mail
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM config_mail.

* Envío por mail
lw_subject = p_subje. "<-- Subject del correo

lwa_body-line = ''.
APPEND lwa_body TO ltb_body.

*lw_filename = 'Cert.Lilly'. "<-- Nombre del archivo adjunto

* Recipients
LOOP AT s_smtp.

lwa_recipients-rec_type = 'U'. "<-- Correo al exterior
lwa_recipients-express = 'X'.
lwa_recipients-receiver = s_smtp-low. "<-- Destinatario
lwa_recipients-copy = ''.

APPEND lwa_recipients TO ltb_recipients.

ENDLOOP.

ENDFORM. " Config_mail

*&---------------------------------------------------------------------*
*& Form read_from_frontend
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM read_from_frontend TABLES it_bin STRUCTURE ltb_objbin_aux
CHANGING fichero TYPE string
size TYPE so_doc_siz
line TYPE so_bd_num.

CLEAR: line, size.

CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = fichero
filetype = 'ASC'
has_field_separator = 'X'
* header_length = 0
* read_by_line = 'X'
dat_mode = 'X'
* codepage = space
* ignore_cerr = abap_true
* replacement = '#'
* virus_scan_profile =
* IMPORTING
* filelength =
* header =
CHANGING
data_tab = it_bin[]
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.
line = sy-tabix.
size = line * 255.

* APPEND it_bin.
*
* DELETE it_bin WHERE matnr EQ 0.

ENDIF.

ENDFORM. " read_from_frontend

*&---------------------------------------------------------------------*
*& Form initiate_mail_execute_program
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM initiate_mail_execute_program.

WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.

ENDFORM. " initiate_mail_execute_program
*&---------------------------------------------------------------------*
*& Include ZPC_PDF_TOP Report ZPC_PDF
*&
*&---------------------------------------------------------------------*

REPORT zpc_pdf.

TABLES: adr6, filetext.

TYPE-POOLS: meein.

DATA: ls_print_data_to_read TYPE lbbil_print_data_to_read,
lf_fm_name TYPE rs38l_fnam,
ls_control_param TYPE ssfctrlop,
ls_composer_param TYPE ssfcompop,
ls_recipient TYPE swotobjid,
ls_sender TYPE swotobjid,
lf_formname TYPE tdsfname,
ls_addr_key LIKE addr_key.

DATA: l_doc TYPE meein_purchase_doc_print,
l_druvo LIKE t166k-druvo,
l_from_memory.

DATA: file_size TYPE i,
bin_filesize TYPE i,
tab_otf_data TYPE ssfcrescl,
pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE,
tab_otf_final TYPE itcoo OCCURS 0 WITH HEADER LINE.

DATA: cf_retcode LIKE sy-subrc,
tabla_out TYPE ssfcrescl,
pdf_tab_aux TYPE so_text255 OCCURS 0,
size TYPE i.

DATA: lw_subject TYPE so_obj_des,
lwa_body TYPE solisti1,
ltb_body TYPE TABLE OF solisti1,
lw_filename TYPE char100,
ltb_recipients TYPE TABLE OF somlreci1,
lwa_recipients TYPE somlreci1.

* Variables
DATA: gt_file TYPE filetable,
l_filename TYPE string,
gt_subrc TYPE sy-subrc,
user_act TYPE i.

DATA: ltb_objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
l_file TYPE string,
fdpos TYPE syfdpos.

DATA: BEGIN OF ltb_objbin_aux OCCURS 0,
matnr TYPE mara-matnr,
ersda TYPE mara-ersda,
ernam TYPE mara-ernam,
laeda TYPE mara-laeda,
aenam TYPE mara-aenam,
vpsta TYPE mara-vpsta,
pstat TYPE mara-pstat,
END OF l
Responder Con Cita