Urgente adjuntas 3 archivos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • caralbgro
    Senior Member
    • sep
    • 478

    #1

    Urgente adjuntas 3 archivos

    necesto adjuntar 3 archivos a un mail que se genera automaticamente , el 1 es el pedidoque lo generodesde el spool a pdf y losotrs 2 serìan siempre fijos pero no se como adjuntarlos alguna idea??
    Consultor FI-CO
  • agv1976
    Member
    • jun
    • 66

    #2
    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

    Comentario

    • caralbgro
      Senior Member
      • sep
      • 478

      #3
      gracias

      muchas gracias lo voy a probar
      Consultor FI-CO

      Comentario

      Trabajando...