Quantcast
Channel: SCN : Document List - ABAP Development
Viewing all articles
Browse latest Browse all 935

Create a PDF from NAST entry and send it as a mail.

$
0
0

Summary:

 

The content in this document helps us to  Creates a Spool request--> convert it into a PDF --> Send PDF as mail attachment.

 

CODE:

 

 

 

*****Select NAST entry based on the input parameter(p_docno)

 

SELECT *

       FROM nast INTO TABLE gint_nast WHERE objky EQ p_docno.

                                      

DELETE ADJACENT DUPLICATES FROM gint_nast COMPARING kschl.

 

 

********Convert current time stamp into UTC format before creating the spool (START TIME)

 

cl_abap_tstmp=>systemtstmp_syst2utc(               "timestamp in UTC

       EXPORTING

         syst_date = sy-datum

         syst_time = sy-uzeit

       IMPORTING

         utc_tstmp = gw_starttime ).

 

*******Pass NAST entry and create a spool request using RSNAST00

 

IF gws_nast-vstat = gc_1.

     gws_nast-erdat = sy-datum.

     gws_nast-eruhr = sy-uzeit.

     gws_nast-usnam = sy-uname.

     gws_nast-manue = gc_x.

     gws_nast-vstat = 0.

     CLEAR gws_nast-datvr.

     CLEAR gws_nast-uhrvr.

     CLEAR gws_nast-cmfpnr.

   ENDIF.

 

   MOVE gws_nast TO nast.

 

   PERFORM einzelnachricht_dialog IN PROGRAM rsnast00 USING sy-subrc.

 

   IF sy-subrc NE 0.

     PERFORM objekt_entsperren IN PROGRAM rsnast00.

     IF sy-subrc EQ 9.

       RAISE print_error_dial.

     ELSE.

       RAISE print_error.

     ENDIF.

   ENDIF.

 

 

   SET SCREEN 0.

   PERFORM objekt_entsperren IN PROGRAM rsnast00.

 

 

 

   COMMIT WORK AND WAIT.


*************************************Convert current time stamp into UTC format before creating the spool (END TIME)

 

  cl_abap_tstmp=>systemtstmp_syst2utc(                         "timestamp in UTC

    EXPORTING

      syst_date = sy-datum

      syst_time = sy-uzeit

    IMPORTING

      utc_tstmp = gw_endtime ).

 

***********************Fetch Spool numbers from TSP01

 

 

   gw_start = gw_starttime.

   CONCATENATE gw_start gc_00 INTO gw_start.

   CONDENSE gw_start NO-GAPS.

 

   gw_end = gw_endtime.

   CONCATENATE gw_end gc_00 INTO gw_end.

   CONDENSE gw_end NO-GAPS.

 

   SELECT * FROM tsp01 INTO TABLE gint_tsp01           "fetch spools from TSP01

     WHERE rqclient EQ sy-mandt

     AND rqowner EQ sy-uname

     AND rqcretime BETWEEN gw_start AND gw_end.

 

************************Get Spool Type

 

SELECT SINGLE * FROM tsp01 INTO w_tsp01 WHERE rqident = w_rqident.

   IF sy-subrc <> 0.

     MESSAGE e126(po) WITH w_rqident RAISING no_such_job.

   ENDIF.

 

* Checks if the job is OTF

   CALL FUNCTION 'RSPO_GET_TYPE_SPOOLJOB'

     EXPORTING

       rqident        = w_rqident

     IMPORTING

       is_otf         = lw_data_is_otf

     EXCEPTIONS

       can_not_access = 1

       OTHERS         = 2.

   IF sy-subrc <> 0.

     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

   ENDIF.


IF lw_data_is_otf = 'X'.

 

 

*************Convert OTF JOB into a PDF

 


CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'

        EXPORTING

             src_spoolid              = w_rqident

             no_dialog                = 'X'

*      IMPORTING

*           PDF_BYTECOUNT            = L_BYTECOUNT

        TABLES

             pdf                      = it_pdf

        EXCEPTIONS

             err_no_otf_spooljob      = 1

             err_no_spooljob          = 2

             err_no_permission        = 3

             err_conv_not_possible    = 4

             err_bad_dstdevice        = 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.

 

   IF sy-subrc = 0.

 

* For page formatting

     CALL FUNCTION 'QCE1_CONVERT'

       TABLES

         t_source_tab         = it_pdf

         t_target_tab         = objcont

*t_target_tab         = gws_objcont

*        t_target_tab         = it_pdf

       EXCEPTIONS

         convert_not_possible = 1

         OTHERS               = 2.

     IF sy-subrc <> 0.

       MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

     ENDIF.

   ELSE.

     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

   ENDIF.


ELSE.

 

*************Convert ABAP JOB into a PDF

 

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

        EXPORTING

             src_spoolid              = w_rqident

             no_dialog                = 'X'

*      IMPORTING

*           PDF_BYTECOUNT            = L_BYTECOUNT

        TABLES

             pdf                      = it_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.

 

   IF sy-subrc = 0.

 

* For page formatting

     CALL FUNCTION 'QCE1_CONVERT'

       TABLES

         t_source_tab         = it_pdf

         t_target_tab         = objcont

       EXCEPTIONS

         convert_not_possible = 1

         OTHERS               = 2.

     IF sy-subrc <> 0.

       MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

     ENDIF.

 

   ELSE.

 

     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

   ENDIF.

 

 

***********Convert PDF into HEX

 

IF NOT objcont[] IS INITIAL.

 

         REFRESH int_bin_cont.

         TRY.

             CALL METHOD cl_bcs_convert=>soli_to_solix

               EXPORTING

                 it_soli  = objcont[]

               RECEIVING

                 et_solix = int_bin_cont.

           CATCH cx_bcs.

             MESSAGE e445(so).

         ENDTRY.

 

*********Create Mail Body

 

        w_send_request = cl_bcs=>create_persistent( ).

 

         w_document = cl_document_bcs=>create_document(

               i_type    = 'RAW'

               i_text    = int_text

               i_subject = w_sub ).

 

*********Add Attachment to mail Body

 

TRY.

               w_document->add_attachment(

               i_attachment_type    = 'PDF'

               i_attachment_subject = mailtitle

               i_att_content_text   = objcont[]

               i_att_content_hex    = int_bin_cont[] ).

             CATCH cx_document_bcs.

*          WRITE : w_err-textid.

               MESSAGE 'error' TYPE 'E'.

           ENDTRY.

 

***********Send to reciepients

 

w_send_request->set_document( w_document ).

             CLEAR gws_receivers.

             LOOP AT gint_receivers INTO gws_receivers.

               CASE gws_receivers-rec_type.

 

                 WHEN 'U'.

                   w_int_address = gws_receivers-receiver.

                   w_camuser = cl_cam_address_bcs=>create_internet_address( w_int_address ).

                   w_recipient = w_camuser.

 

                 WHEN OTHERS.

                   MESSAGE i865(so) WITH text-006.

                   RAISE sending_failed.

               ENDCASE.

               w_send_request->add_recipient( w_recipient ).

             ENDLOOP.

 

            w_send_request->send_request->set_link_to_outbox( 'X' ).

 

             w_sent_to_all = w_send_request->send( i_with_error_screen = 'X' ).

 

             COMMIT WORK.

 

             IF w_sent_to_all IS INITIAL.

               RAISE sending_failed.

             ENDIF.





Viewing all articles
Browse latest Browse all 935

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>