Consulta sobre Tranformacion a bin

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Hasurac
    Member
    • nov
    • 41

    #1

    Consulta sobre Tranformacion a bin

    Buenos días, tengo un pequeño problema en el que tal ves ustedes me puedan ayudar, el asunto es que debo mandar un mail con un exel el cual se forma de una tabla interna esto yo lo realizaba bajando la tabla a un bin con el gui y luego subiéndolo d e esta misma manera pero resulta que no puedo usar ni gui ni ws para este programa dado que lo ejecuto por debajo, no se si conocen alguna otra forma de pasar una tabla interna a bin o de mandar el mail de una tabla interna convertida a exel cualquier ayuda será agradecida


    le s paso el codigo que tengo lo marcado con rojo es lo que debo canbiar

    FORM f_enviar_mail.



    CONSTANTS: lc_tipo_doc TYPE so_obj_tp VALUE 'xls',
    lc_tipo_email TYPE so_obj_tp VALUE 'RAW',
    lc_urgente TYPE so_obj_nam VALUE 'URGENT',
    lc_caracter TYPE so_obj_sns VALUE 'F',
    lc_tipo TYPE string VALUE '.xls'.

    DATA: li_pack TYPE TABLE OF sopcklsti1,
    li_objtxt TYPE TABLE OF solisti1,
    li_receivers TYPE bubas_t_receiver,
    ls_reclist type somlreci1,
    li_objbin TYPE TABLE OF solisti1,
    lw_data LIKE sodocchgi1,
    lw_pack TYPE sopcklsti1,
    lw_objtxt TYPE solisti1,
    lv_lines_attachment TYPE i value 1,
    lv_righe_testo TYPE i,
    lv_asunto TYPE so_obj_des,
    lv_error TYPE c.

    CLEAR lv_error.
    REFRESH tabla_EXEL.



    * Asunto del e-mail
    lv_asunto = 'Informe Representación Sindical'.
    * Cuerpo del e-mail
    CLEAR lw_objtxt.
    lw_objtxt = ' '.
    APPEND lw_objtxt TO li_objtxt.
    CLEAR lw_objtxt.

    * CLEAR lw_objtxt.
    * lw_objtxt = text-001. "Línea de puntos
    * APPEND lw_objtxt TO li_objtxt.

    * CLEAR lw_objtxt.
    * WRITE text-002 TO lw_objtxt.
    * APPEND lw_objtxt TO li_objtxt.

    tabla_EXEL-ah00290 = 'N.Contrato'.
    tabla_EXEL-ah00301 = 'L.Neg'.
    tabla_EXEL-zrrm_nom_linneg = 'L.Neg txt'.
    tabla_EXEL-tdh00435 = 'C.Tra Pri.'.
    tabla_EXEL-tah00310 = 'E.Contrat.'.
    tabla_EXEL-tak00010 = 'E.Colabor.'.
    tabla_EXEL-ak00020 = 'C.I.F'.
    tabla_EXEL-ak00040 = 'Dom.Soc.'.
    tabla_EXEL-ah00330 = 'Obj.Con.'.
    tabla_EXEL-duracion = 'D.Contrat.'.
    tabla_EXEL-bh00400 = 'Trab.'.
    tabla_EXEL-num_trab_est = 'N.Est.Trb.'.
    tabla_EXEL-acta_coord = 'Acta Coor.'.
    tabla_EXEL-certif_ss_pago = 'Cert.SS.'.
    tabla_EXEL-name1 = 'Ce.SIE'.
    tabla_EXEL-pstlz = 'Cod.Post'.
    tabla_EXEL-ort01 = 'Provincia'.
    tabla_EXEL-lugar_ejec = 'Lug.Ejec.'.
    tabla_EXEL-begda = 'F.Inicio'.
    tabla_EXEL-endda = 'F.Fin'.
    tabla_EXEL-typexp ='T.Exped.'.

    APPEND tabla_EXEL.

    LOOP at tabla_alv.
    MOVE-CORRESPONDING tabla_alv TO tabla_EXEL.
    APPEND tabla_EXEL.
    ENDLOOP.




    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING

    FILENAME = 'Sindical.xls'
    FILETYPE = 'DAT'

    TABLES
    data_tab = tabla_EXEL.

    .
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.


    CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
    filename = 'Sindical.xls'
    FILETYPE = 'BIN'

    tables
    data_tab = li_objbin .
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.





    DESCRIBE TABLE li_objbin LINES lv_lines_attachment.
    DESCRIBE TABLE li_objbin LINES lv_righe_testo.

    * Información del correo
    lw_data-obj_name = lc_urgente. " Urgente
    lw_data-expiry_dat = sy-datum + 10.
    lw_data-obj_descr = lv_asunto. " Asunto del e-mail.
    lw_data-sensitivty = lc_caracter. " Funcional
    lw_data-doc_size = lv_righe_testo * 255. " Tamaño del documento



    lw_pack-transf_bin = 'X'.
    lw_pack-head_start = 1.
    lw_pack-head_num = 1.
    lw_pack-body_start = 1.
    lw_pack-body_num = lv_lines_attachment * 255.
    lw_pack-doc_type = 'XLS'.
    lw_pack-obj_descr = 'Informe Representación Sindical'.
    lw_pack-obj_name = 'Sindical.xls'.
    lw_pack-doc_size = lv_lines_attachment * 255.
    APPEND lw_pack TO li_pack.



    ** Creation of the entry for the compressed document
    CLEAR lw_pack-transf_bin.
    lw_pack-head_start = 1.
    lw_pack-head_num = 0.
    lw_pack-body_start = 1.
    lw_pack-body_num = lv_lines_attachment * 255.
    lw_pack-doc_type = 'RAW'.
    APPEND lw_pack TO li_pack.



    CLEAR ls_reclist.
    ls_reclist-receiver = sy-UNAME.
    ls_reclist-express = 'X'.
    ls_reclist-rec_type = 'B'.
    APPEND ls_reclist TO LI_receivers.

    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    document_data = lw_data
    put_in_outbox = 'X'
    commit_work = 'X'
    TABLES
    packing_list = li_pack
    contents_bin = li_objbin
    contents_txt = li_objtxt
    receivers = li_receivers
    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 = 99.
    * IF sy-subrc NE 0.
    ** No se ha enviado el correo a ninguno de los interesados
    * pio_error = gc_marcado.
    * ENDIF.
    * ENDIF.
    ENDFORM. "f_enviar_mail
  • calanis
    Senior Member
    • oct
    • 147

    #2
    Hola

    La solución es ponerlo en el servidor y reemplazar el código que utilizas para leer el archivo, mediante GUI Download/Upload por un simple OPEN DATASET
    Documentación Oficial
    Programa de Ejemplo en Ingles
    Rutinas varias de Ejemplo en Castellano

    Para saber la ubicación en el Servidor utilizas la transacción AL11, usa la temporal '/tmp'.
    Por ejemplo:'/tmp'/EXCEL_TMP.XLS'

    Espero que la data te sirva

    Saludos
    Carlos D. Alanis
    Carlos D. Alanis
    <=<< Compartir conocimiento es una manera de innovar >>=>

    Comentario

    Trabajando...