Envió de PDF en un programa ejecutado en Fondo (job)

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • marialeqd
    Senior Member
    • jun
    • 188

    #1

    Envió de PDF en un programa ejecutado en Fondo (job)

    Hola foro, tengo la siguiente situación necesito nadar un archivo PDF en un mail directamente desde SAP, hasta que todo bien, pues se que con el metodo
    CALL METHOD OF APPOUTLOOK se hace, pero el problema es que necesito hacer esto en un programa que se ejcuta en fondo (JOB), se que con la funcion SO_NEW_DOCUMENT_ATT_SEND_API1 se puede envias adjunto pero no se como se usa is alguien me puede decir algo seria de mucha ayuda,
    Gracias
    Mariale
  • Anel Lazcano
    Member
    • feb
    • 49

    #2
    no tengo experiencia con esa funcion, pero encontre un codigo q tal vez te de una idea, la liga es la siguiente:


    Saludos, suerte.
    Saludos, Anel

    Comentario

    • marialeqd
      Senior Member
      • jun
      • 188

      #3
      Hola anel gracias por tu respuesta, sabes ahora tengo un problemilla con la rutina que pasa la tabla PDFa la bin, no lo hace bien y cuando veo el correo y le doy para visulaizar el adjunto me dice que el archivo eta dañano que no lo puede abrir, posiblemente problemas al traducir al archivo,

      sabes algo de esto,
      algun comentario,
      Mariale

      Comentario

      • Gregoryg
        Senior Member
        • abr
        • 115

        #4
        Envió de PDF en un programa ejecutado en Fondo (job)

        Hola Marialeqd

        Yo tuve el mismo problema, y eso es debe a un error de conversion de la tabla OTF a la tabla BIN que es la que passas a la funcion que envia el correo.

        Chequea este codigo

        IT_OUTPUT[] = ST_JOB_OUTPUT_INFO-OTFDATA[].
        * Move OTF code to structure SOLI form email
        CLEAR I_OTF. REFRESH I_OTF.
        LOOP AT P_OUTPUT.
        I_OTF-LINE = P_OUTPUT.
        APPEND I_OTF.
        ENDLOOP.

        CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
        EXPORTING
        FORMAT_SRC = 'OTF'
        FORMAT_DST = 'PDF'
        DEVTYPE = 'PRINTER'
        * FUNCPARA =
        LEN_IN = '1234'
        * IMPORTING
        * LEN_OUT =
        TABLES
        CONTENT_IN = I_OTF
        CONTENT_OUT = I_OBJBIN
        EXCEPTIONS
        ERR_CONV_FAILED = 1
        OTHERS = 2
        .

        Saludos
        GregoryG

        Comentario

        • marialeqd
          Senior Member
          • jun
          • 188

          #5
          gracias, gregory sabes soluciones con este codigo, el que colocas esta bien pero cuando se trata de un sapscript, en mi caso es un listado ABAP,

          CALL FUNCTION '.....CONVERT_ABAPSPOOLJOB_2_PDF'
          EXPORTING
          SRC_SPOOLID = SPOOL_ID
          IMPORTING
          PDF_BYTECOUNT = PBYTE
          TABLES
          PDF = T_PDF
          EXCEPTIONS
          ERR_NO_ABAP_SPOOLJOB = 1
          ERR_NO_SPOOLJOB = 2
          ERR_NO_PERMISSION = 3
          ERR_CONV_NOT_POSSIBLE = 4
          ERR_BAD_DESTDEVICE = 5
          USER_CANCELLED = 6
          ERR_SPOOLERROR = 7
          ERR_TEMSEERROR = 8
          ERR_BTCJOB_OPEN_FAILED = 9
          ERR_BTCJOB_SUBMIT_FAILED = 10
          ERR_BTCJOB_CLOSE_FAILED = 11
          OTHERS = 12.
          break mquintero.
          CHECK sy-subrc = 0.

          * Transfer the 132-long strings to 255-long strings
          LOOP AT T_PDF.
          TRANSLATE T_PDF USING ' ~'.
          CONCATENATE gd_buffer T_PDF INTO gd_buffer.
          ENDLOOP.
          TRANSLATE gd_buffer USING '~ '.

          DO.
          it_mess_att = gd_buffer.
          APPEND it_mess_att.
          SHIFT gd_buffer LEFT BY 255 PLACES.
          IF gd_buffer IS INITIAL.
          EXIT.
          ENDIF.
          ENDDO.
          append lines of it_mess_att to i_cont_bin.
          ......
          *---------
          DESCRIBE TABLE i_cont_bin LINES TAB_LINES.
          I_OBJPACK-TRANSF_BIN = 'X'.
          I_OBJPACK-HEAD_START = 1.
          I_OBJPACK-HEAD_NUM = 1.
          I_OBJPACK-HEAD_NUM = 1.
          I_OBJPACK-BODY_START = 1.
          I_OBJPACK-BODY_NUM = TAB_LINES.
          I_OBJPACK-DOC_TYPE = 'PDF'.
          i_objpack-doc_size = PBYTE.
          MOVE OBJHEAD TO I_OBJPACK-OBJ_DESCR.
          MOVE OBJHEAD TO I_OBJPACK-OBJ_NAME.
          I_OBJPACK-DOC_SIZE = TAB_LINES * 255.
          APPEND I_OBJPACK.
          .........
          *-----------
          CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
          EXPORTING
          DOCUMENT_DATA = DOC_DATA
          PUT_IN_OUTBOX = 'X'
          TABLES
          PACKING_LIST = I_OBJPACK
          OBJECT_HEADER = OBJHEAD
          CONTENTS_BIN = i_cont_bin
          CONTENTS_TXT = OBJTXT
          RECEIVERS = IT_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 = 8.
          Mariale

          Comentario

          • seimeinomi
            Member
            • oct
            • 75

            #6
            Hola Problema pdf mayor de 100 hojas

            Originalmente publicado por marialeqd
            gracias, gregory sabes soluciones con este codigo, el que colocas esta bien pero cuando se trata de un sapscript, en mi caso es un listado ABAP,

            CALL FUNCTION '.....CONVERT_ABAPSPOOLJOB_2_PDF'
            EXPORTING
            SRC_SPOOLID = SPOOL_ID
            IMPORTING
            PDF_BYTECOUNT = PBYTE
            TABLES
            PDF = T_PDF
            EXCEPTIONS
            ERR_NO_ABAP_SPOOLJOB = 1
            ERR_NO_SPOOLJOB = 2
            ERR_NO_PERMISSION = 3
            ERR_CONV_NOT_POSSIBLE = 4
            ERR_BAD_DESTDEVICE = 5
            USER_CANCELLED = 6
            ERR_SPOOLERROR = 7
            ERR_TEMSEERROR = 8
            ERR_BTCJOB_OPEN_FAILED = 9
            ERR_BTCJOB_SUBMIT_FAILED = 10
            ERR_BTCJOB_CLOSE_FAILED = 11
            OTHERS = 12.
            break mquintero.
            CHECK sy-subrc = 0.

            * Transfer the 132-long strings to 255-long strings
            LOOP AT T_PDF.
            TRANSLATE T_PDF USING ' ~'.
            CONCATENATE gd_buffer T_PDF INTO gd_buffer.
            ENDLOOP.
            TRANSLATE gd_buffer USING '~ '.

            DO.
            it_mess_att = gd_buffer.
            APPEND it_mess_att.
            SHIFT gd_buffer LEFT BY 255 PLACES.
            IF gd_buffer IS INITIAL.
            EXIT.
            ENDIF.
            ENDDO.
            append lines of it_mess_att to i_cont_bin.
            ......
            *---------
            DESCRIBE TABLE i_cont_bin LINES TAB_LINES.
            I_OBJPACK-TRANSF_BIN = 'X'.
            I_OBJPACK-HEAD_START = 1.
            I_OBJPACK-HEAD_NUM = 1.
            I_OBJPACK-HEAD_NUM = 1.
            I_OBJPACK-BODY_START = 1.
            I_OBJPACK-BODY_NUM = TAB_LINES.
            I_OBJPACK-DOC_TYPE = 'PDF'.
            i_objpack-doc_size = PBYTE.
            MOVE OBJHEAD TO I_OBJPACK-OBJ_DESCR.
            MOVE OBJHEAD TO I_OBJPACK-OBJ_NAME.
            I_OBJPACK-DOC_SIZE = TAB_LINES * 255.
            APPEND I_OBJPACK.
            .........
            *-----------
            CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
            EXPORTING
            DOCUMENT_DATA = DOC_DATA
            PUT_IN_OUTBOX = 'X'
            TABLES
            PACKING_LIST = I_OBJPACK
            OBJECT_HEADER = OBJHEAD
            CONTENTS_BIN = i_cont_bin
            CONTENTS_TXT = OBJTXT
            RECEIVERS = IT_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 = 8.

            Hola como te va estoy usando la misma función para generar mi pdf y enviarlo por mail. El problema que estoy teniendo es cuando el pdf es mayor a 99 hojas, esta funcion tiene un limte de hojas, caso contrario como puedo solucionarlo.
            Edward Manrique A.

            Comentario

            Trabajando...