cancel
Showing results for 
Search instead for 
Did you mean: 

how to convert sap script to pdf format?

Former Member
0 Kudos

how to convert scrpts into pdf file format?can any one tell the process?

Accepted Solutions (0)

Answers (7)

Answers (7)

Former Member
0 Kudos

<b>Steps:</b>

1. Create a job and spool request from thet script.

2. Get the spool no.

3. Convert that spool no to Pdf

<b>first u write Internal table to spool then u can convert the spool to pdf....see the below code.. hope it helps...</b>

DATA: BEGIN OF i_mara OCCURS 0,
matnr LIKE mara-matnr.
DATA: END OF i_mara.

DATA: v_dest LIKE tsp01-rqdest,
v_handle LIKE sy-tabix,
v_spool_id LIKE tsp01-rqident,
v_rc TYPE c,
v_errmessage(100) TYPE c,
v_text(70) TYPE c.

START-OF-SELECTION.

SELECT matnr FROM mara INTO TABLE i_mara.

CALL FUNCTION 'RSPO_OPEN_SPOOLREQUEST'
EXPORTING
dest = 'LOCL'
* LAYOUT =
* NAME =
* SUFFIX1 =
* SUFFIX2 =
* COPIES =
* PRIO =
* IMMEDIATE_PRINT =
* AUTO_DELETE =
* TITLELINE =
* RECEIVER =
* DIVISION =
* AUTHORITY =
* POSNAME =
* ACTTIME =
* LIFETIME = '8'
* APPEND =
* COVERPAGE =
* CODEPAGE =
* DOCTYPE =
IMPORTING
handle = v_handle
spoolid = gd_spool_nr
rc = v_rc
errmessage = v_errmessage.

LOOP AT i_mara.
v_text = i_mara-matnr.
CALL FUNCTION 'RSPO_WRITE_SPOOLREQUEST'
EXPORTING
handle = v_handle
text = v_text
* LENGTH =
* CODEPAGE =
* TRUNCATE =
IMPORTING
rc = v_rc
errmessage = v_errmessage
EXCEPTIONS
handle_not_valid = 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.

ENDLOOP.

CALL FUNCTION 'RSPO_CLOSE_SPOOLREQUEST'
EXPORTING
handle = v_handle
IMPORTING
rc = v_rc
errmessage = v_errmessage
EXCEPTIONS
handle_not_valid = 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.


CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
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.
CHECK sy-subrc = 0.

<b>

get the spool number</b>

  • Declaration of local variables.

DATA:
LV_RQ2NAME LIKE TSP01-RQ2NAME.
 
CONCATENATE SY-REPID+0(8)
SY-UNAME+0(3)
INTO LV_RQ2NAME SEPARATED BY '_'.
* Get the spool number.
SELECT * FROM TSP01 WHERE RQ2NAME = LV_RQ2NAME
ORDER BY RQCRETIME DESCENDING.
V_RQIDENT = TSP01-RQIDENT.
EXIT.
ENDSELECT.
IF SY-SUBRC NE 0.
CLEAR V_RQIDENT.
ENDIF

Former Member
0 Kudos

Hi Sagarika,

step 1:Go for print option. Incase u dont want any print out to be taken cancel a pop up window which will start the print process.A spool is now created of your script.

Step2 : go to sp01.note the spool request no.

step 3: go to se38.Run program RSTXPDFT4.Mention the spool request no and the desired location for pdf to stored.

Hope this helps.

Reward if you find this helpful.

Regards,

Subodh

Former Member
0 Kudos

Hi Sagarika

Here is the sample code to send script through E mail..


*&---------------------------------------------------------------------*
*& Report  ZRICHA_OTF_PDF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
 
report  zricha_otf_pdf
    message-id zz.
 
*----------------------------------------------------------------------*
*  CONSTANTS                                                           *
*----------------------------------------------------------------------*
 
constants : c_x(1)      type c value 'X',      " For constant value
            c_otf(3)    type c value 'OTF',    " For format
            c_u(1)      type c value 'U'.      " Mail Option
 
*----------------------------------------------------------------------*
*  VARIABLES                                                           *
*----------------------------------------------------------------------*
 
data : v_rqident  type tsp01-rqident,  " For Spool Number
       v_rqclient type tsp01-rqclient, " For Client
       v_rqo1name type tsp01-rqo1name, " For Object name
       v_spool    type tsp01-rqident,  " For Spool Number
       v_spool1   type tsp01-rqident.  " For Spool Number
 
*----------------------------------------------------------------------*
*  FLAGS                                                               *
*----------------------------------------------------------------------*
 
data : f_spool type c.
 
*----------------------------------------------------------------------*
*   INTERNAL TABLES                                                    *
*----------------------------------------------------------------------*
 
* Internal table for sending mails
data: it_pdf          like tline      occurs 10 with header line,
      it_xi_pdf       like tline      occurs 0  with header line,
      it_html         like solisti1   occurs 0  with header line,
      it_xi_temp      like bapiqcmime occurs 0  with header line,
      it_xi_mime(255) type c          occurs 0  with header line.
 
* For sending mail
data: it_objpack like sopcklsti1 occurs 2 with header line.
 
* Internal table for Single List with Column Length 255
data : it_objbin like solisti1 occurs 10 with header line.
 
* Internal table for Single List with Column Length 255
data : it_objtxt like solisti1 occurs 10 with header line.
 
* Internal table for Structure of the API Recipient List
data : it_reclist like somlreci1 occurs 5 with header line.
 
* Structure of the API Recipient List
data: x_doc_chng like sodocchgi1.
 
* Internal table for storing the variants
data : begin of it_variant1 occurs 0,
        variant like varid-variant,
       end   of it_variant1.
 
* Internal table to store variants for the programs
data: it_variant2 like it_variant1 occurs 0 with header line.
 
* Internal table for storing the selected values
data it_return type ddshretval occurs 0 with header line.
 
* Internal table for storing the mail-ids
data : begin of it_mailid occurs 0,
        kokrs like csks-kokrs,
        kostl like csks-kostl,
        datbi like csks-datbi,
        telx1 like csks-telx1,
       end   of it_mailid.
 
* Internal table for storing the mail-ids
data : it_mailid1 like it_mailid occurs 0 with header line.
 
*----------------------------------------------------------------------*
*   SELECTION SCREEN                                                   *
*----------------------------------------------------------------------*
data : v_char type char50.
 
selection-screen begin of block b1 with frame title text-001.
select-options: s_email for v_char  no intervals
                lower case
                no-display.
select-options: s_email1 for v_char  no intervals
                lower case
                no-display.
selection-screen end of block b1.
 
selection-screen begin of block a1 with frame title text-028.
 
selection-screen begin of line.
parameters : p_c1 as checkbox.
selection-screen comment 3(66) text-026 for field p_c1.
selection-screen end of line.
parameters : p_set like tsp1d-papart matchcode object zh_tsp1d.
selection-screen skip 1.
 
parameters : p_vara1 type rs38m-selset.
selection-screen end of block a1.
 
selection-screen begin of block a2 with frame title text-029.
 
selection-screen begin of line.
parameters : p_c2 as checkbox.
selection-screen comment 3(56) text-027 for field p_c1.
selection-screen end of line.
parameters : p_set1 like tsp1d-papart matchcode object zh_tsp1d.
selection-screen skip 1.
 
parameters : p_vara2 type rs38m-selset.
selection-screen end of block a2.
 
*---------------------------------------------------------------------*
* AT SELECTION SCREEN ON VALUE REQUEST
*---------------------------------------------------------------------*
at selection-screen on value-request for p_vara1.
 
* For fetching the variants available for the program
  perform fetch_variants.
 
at selection-screen on value-request for p_vara2.
 
* For fetching the variants available for the program
  perform fetch_variants1.
 
*---------------------------------------------------------------------*
* AT SELECTION SCREEN
*---------------------------------------------------------------------*
at selection-screen.
 
* For Validation
  perform validation.
 
*----------------------------------------------------------------------*
*  START OF SELECTION                                                  *
*----------------------------------------------------------------------*
start-of-selection.
 
* To get the output data and mail
  perform fetch_data.
 
*----------------------------------------------------------------------*
*  END OF SELECTION                                                    *
*----------------------------------------------------------------------*
end-of-selection.
 
  if f_spool = c_x.
    message e000 with 'Spool Not Generated'(060).
  endif.
 
*&---------------------------------------------------------------------*
*&      Form  fetch_data
*&---------------------------------------------------------------------*
*       To get the output data and mail
*----------------------------------------------------------------------*
form fetch_data .
 
* To send the output to spool
  perform generate_spool.
 
endform.                    " fetch_data
 
*&---------------------------------------------------------------------*
*&      Form  generate_spool
*&---------------------------------------------------------------------*
*       To send the output to spool
*----------------------------------------------------------------------*
form generate_spool .
 
  data: l_params like pri_params,
        l_days(1)  type n value 2,
        l_count(3) type n value 1,
        l_valid    type c,
        l_valid1   type c,
        l_params1  like pri_params.
 
  data: l_device type usr01-spld.
 
*Get the printer name for the user
  select single spld into l_device from usr01 where bname = sy-uname.
  if l_device is initial.
    l_device = 'LOCL'.
  endif.
 
* For report-1
  if p_c1 = 'X'.
 
* Setting the print parameters
 
    call function 'GET_PRINT_PARAMETERS'
      exporting
        destination    = l_device
        copies         = l_count
        list_name      = sy-uname
        list_text      = 'SUBMIT ... TO SAP-SPOOL'(008)
        release        = c_x
        new_list_id    = c_x
        expiration     = l_days
*        LINE_SIZE      = 255
*        LINE_COUNT     = 65
        layout         = p_set
        sap_cover_page = space
        cover_page     = space
        receiver       = 'SAP*'(010)
        department     = 'System'(011)
        no_dialog      = c_x
      importing
        out_parameters = l_params
        valid          = l_valid.
 
    if l_valid <> space.
 
      clear v_spool.
* Fetch the spool number b4 submit
      perform fetch_recent_spool using v_spool.
 
* Submitting the program to spool
      submit rkaep000 to sap-spool
        using selection-set p_vara1
        spool parameters l_params
        without spool dynpro
        and return.
 
      clear v_spool1.
* Fetch the spool number after submit
      perform fetch_recent_spool using v_spool1.
 
      if v_spool = v_spool1.
        f_spool = c_x.
        if p_c2 is initial.
          stop.
        endif.
      else.
* Checking the format ( ABAP/OTF)
        perform format_check tables s_email.
      endif.
 
 
    else.
      message e000 with 'Problem in print settings'(003).
      stop.
    endif.
  endif.
 
* For Report-2
  if p_c2 = 'X'.
 
* Setting the print parameters
 
    call function 'GET_PRINT_PARAMETERS'
      exporting
        destination    = l_device
        copies         = l_count
        list_name      = sy-uname
        list_text      = 'SUBMIT ... TO SAP-SPOOL'(008)
        release        = c_x
        new_list_id    = c_x
        expiration     = l_days
*        LINE_SIZE      = 200
*        LINE_COUNT     = 65
        layout         = p_set1
        sap_cover_page = space
        cover_page     = space
        receiver       = 'SAP*'(010)
        department     = 'System'(011)
        no_dialog      = c_x
      importing
        out_parameters = l_params1
        valid          = l_valid1.
 
    if l_valid1 <> space.
 
      clear v_spool.
* Fetch the spool number b4 submit
      perform fetch_recent_spool using v_spool.
 
* Submitting the program to spool
      submit gp3diehxy88snfj0391v7kf9ek7050 to sap-spool
        using selection-set p_vara2
        spool parameters l_params1
        without spool dynpro
        and return.
 
      clear v_spool1.
* Fetch the spool number after submit
      perform fetch_recent_spool using v_spool1.
 
      if v_spool = v_spool1.
        message e000 with 'Spool Not Generated'(060).
        stop.
      endif.
 
* Checking the format ( ABAP/OTF)
      perform format_check tables s_email1.
 
    else.
      message e000 with 'Problem in print settings'(003).
      stop.
    endif.
  endif.
 
endform.                    " generate_spool
*&---------------------------------------------------------------------*
*&      Form  fetch_recent_spool
*&---------------------------------------------------------------------*
*       Fetch the recent spool number generated
*----------------------------------------------------------------------*
form fetch_recent_spool using p_v_spool type tsp01-rqident .
 
  data:  l_user like tsp01-rq2name.
 
  clear : v_rqident,
          v_rqclient,
          v_rqo1name.
 
  l_user = sy-uname.
 
* Get latest Spool No
  select single rqident
                rqclient
                rqo1name
         into (v_rqident , v_rqclient , v_rqo1name)
    from tsp01
   where rqcretime =   ( select max( rqcretime )
                                from tsp01
                               where rq2name eq l_user
                                 and rqfinal eq '.' ).
 
  if sy-subrc = 0 .
    p_v_spool = v_rqident.
  endif.
 
 
endform.                    " fetch_recent_spool
 
*&---------------------------------------------------------------------*
*&      Form  format_check
*&---------------------------------------------------------------------*
*       Checking the format ( ABAP/OTF)
*----------------------------------------------------------------------*
form format_check tables p_s_email structure s_email.
 
  data : l_objtype    like rststype-type.
 
  call function 'RSTS_GET_ATTRIBUTES'
    exporting
      authority     = 'SP01'(019)
      client        = v_rqclient
      name          = v_rqo1name
      part          = 1
    importing
      objtype       = l_objtype
    exceptions
      fb_error      = 1
      fb_rsts_other = 2
      no_object     = 3
      no_permission = 4.
 
  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 l_objtype(3) = c_otf.
* Convert OTF Spool to PDF
    perform convert_otf2pdf tables p_s_email.
  else.
* Convert ABAP Spool to PDF
    perform convert_abap2pdf tables p_s_email.
  endif.
 
endform.                    " format_check
 
*&---------------------------------------------------------------------*
*&      Form  convert_otf2pdf
*&---------------------------------------------------------------------*
*       Convert OTF Spool to PDF
*----------------------------------------------------------------------*
form convert_otf2pdf tables p_p_s_email structure s_email .
 
  clear   it_pdf.
  refresh it_pdf.
 
  data : l_bytecount  type i.
 
* Fn. to get the PDF format
  call function 'CONVERT_OTFSPOOLJOB_2_PDF'
    exporting
      src_spoolid              = v_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 format
    perform page_format tables p_p_s_email.
  else.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
 
endform.                    " convert_otf2pdf
 
*&---------------------------------------------------------------------*
*&      Form  convert_abap2pdf
*&---------------------------------------------------------------------*
*        Convert ABAP Spool to PDF
*----------------------------------------------------------------------*
form convert_abap2pdf tables p_p_s_email structure s_email.
 
  clear   it_pdf.
  refresh it_pdf.
 
  data : l_bytecount  type i.
 
* Fn. to convert to PDF format
  call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
    exporting
      src_spoolid              = v_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
    perform page_format tables p_p_s_email.
  else.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
 
endform.                    " convert_abap2pdf
 
*&---------------------------------------------------------------------*
*&      Form  send_mail
*&---------------------------------------------------------------------*
*       For sending mail
*----------------------------------------------------------------------*
form send_mail tables mail structure s_email .
 
* Structures and internal tables for the send data
  data: objpack like sopcklsti1 occurs 2  with header line,
        objhead like solisti1   occurs 1  with header line,
        objbin  like solisti1   occurs 0  with header line,
        objtxt  like solisti1   occurs 10 with header line,
        reclist like somlreci1  occurs 5  with header line.
 
  data: doc_chng like sodocchgi1,
        tab_lines like sy-tabix.
 
* Data for the status output after sending
  data: sent_to_all like sonv-flag.
 
  clear: it_reclist, it_reclist[],
         it_objtxt , it_objtxt[],
         it_objpack, it_objpack[],
         it_objbin , it_objbin[],x_doc_chng.
 
  loop at it_html.
    objbin-line = it_html-line.
    append objbin.
    clear objbin.
  endloop.
 
 
* Create the document which is to be sent
  doc_chng-obj_name  = 'List'(012).
  doc_chng-obj_descr = 'Mail'(013).
 
* Heading
  objtxt-line = 'Mail with pdf attachment'(014).
  append objtxt.
  clear objtxt.
 
* Size
  describe table objtxt lines tab_lines.
  read table objtxt index tab_lines.
  doc_chng-doc_size = ( tab_lines - 1 ) * 255 + strlen( objtxt ).
 
* Fill the fields of the packing_list for the main document:
  clear objpack-transf_bin.
 
* The document needs no header (head_num = 0)
  objpack-head_start = 1.
  objpack-head_num = 0.
 
* Body
  objpack-body_start = 1.
  objpack-body_num = tab_lines.
  objpack-doc_type = 'RAW'(015).
  append objpack.
 
* Create the attachment (the list itself)
  describe table objbin lines tab_lines.
 
* Fill the fields of the packing_list for the attachment:
  objpack-transf_bin = 'X'.
 
* Header
  objpack-head_start = 1.
  objpack-head_num = 0.
 
* Body
  objpack-body_start = 1.
  objpack-body_num = tab_lines.
  objpack-doc_type = 'PDF'(016).
  objpack-obj_name = 'Attachment'(017).
  objpack-obj_descr = 'Mail with pdf Attachment'(018).
  objpack-doc_size = tab_lines * 255.
  append objpack.
 
*-Fill the mail recipient list
  loop at mail.
    reclist-receiver = mail-low.
    reclist-rec_type = c_u.
    append reclist.
    clear: reclist,
           mail.
  endloop.
 
*-Send the document by calling the SAPoffice API1 module for sending
*-documents with attachments
 
  call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    exporting
      document_data              = doc_chng
      put_in_outbox              = c_x
      commit_work                = c_x
    importing
      sent_to_all                = sent_to_all
    tables
      packing_list               = objpack
      object_header              = objhead
      contents_bin               = objbin
      contents_txt               = objtxt
      receivers                  = reclist
    exceptions
      too_many_receivers         = 1
      document_not_sent          = 2
      operation_no_authorization = 4
      others                     = 99.
 
  case sy-subrc .
    when 0.
      message i000 with 'Mail has been sent successfully'(006).
    when others.
      message e000 with 'Problem in sending the mail'(023).
  endcase.
 
endform.                    " send_mail
*&---------------------------------------------------------------------*
*&      Form  page_format
*&---------------------------------------------------------------------*
*        For page foramtting
*----------------------------------------------------------------------*
form page_format tables email structure s_email .
 
  data : l_lines       type i,
         l_temp(500)   type c,
         l_offset      type p,
         l_lineslen(2) type p,
         l_mimelen(2)  type p,
         l_tabix       like sy-tabix.
 
  clear : it_xi_pdf,
          it_xi_temp.
 
  refresh : it_xi_pdf,
            it_xi_temp.
 
  it_xi_pdf[] = it_pdf[].
 
* Reformat the line to 255 characters wide (--code from SAP--)
  clear: l_temp, l_offset, it_xi_temp.
  describe table it_xi_pdf   lines  l_lines.
  describe field it_xi_pdf   length l_lineslen in character mode.
  describe field it_xi_temp  length l_mimelen in character mode.
 
  loop at it_xi_pdf.
    l_tabix = sy-tabix.
    move it_xi_pdf to l_temp+l_offset.
    if l_tabix = l_lines.
      l_lineslen = strlen( it_xi_pdf ).
    endif.
    l_offset = l_offset + l_lineslen.
    if l_offset ge l_mimelen.
      clear it_xi_temp.
      it_xi_temp = l_temp(l_mimelen).
      append it_xi_temp.
      shift l_temp by l_mimelen places.
      l_offset = l_offset - l_mimelen.
    endif.
    if l_tabix = l_lines.
      if l_offset gt 0.
        clear it_xi_temp.
        it_xi_temp = l_temp(l_offset).
        append it_xi_temp.
      endif.
    endif.
  endloop.
 
  clear : it_xi_mime,
          it_xi_mime[].
 
  loop at it_xi_temp.
    it_xi_mime(255) = it_xi_temp-line.
    append it_xi_mime.
    clear  it_xi_mime.
  endloop.
 
* Final Data
  clear : it_html,
          it_html[].
 
  it_html[] = it_xi_mime[].
 
* For sending mail
  perform send_mail tables email.
 
endform.                    " page_format
*&---------------------------------------------------------------------*
*&      Form  fetch_variants
*&---------------------------------------------------------------------*
*       For fetching the variants available for the program
*----------------------------------------------------------------------*
form fetch_variants .
 
  data : l_program like rs38m-programm value 'RKAEP000',
         l_vara1 type dfies-fieldname value 'P_VARA1'.
 
  clear : it_variant1,
          it_variant1[].
 
* Get variants
  perform get_variants tables it_variant1
                       using l_program.
 
* F4 Help
  if not it_variant1[] is initial.
    perform get_f4_help tables it_variant1
                         using l_vara1
                        changing p_vara1.
  else.
    message e000 with 'No variants available for report1'(054).
  endif.
 
endform.                    " fetch_variants
 
*&---------------------------------------------------------------------*
*&      Form  validation
*&---------------------------------------------------------------------*
*       For Validation
*----------------------------------------------------------------------*
form validation .
 
  data : l_pro1 like rs38m-programm value 'RKAEP000',
         l_pro2 like rs38m-programm value 'GP3DIEHXY88SNFJ0391V7KF9EK7050',
         l_c1,
         l_c2.
 
* If both check-box are unchecked
  if p_c1 is initial
 and p_c2 is initial.
    message e000 with 'Check any one check-box'(049).
  endif.
 
* If checked without varaint
  if not p_c1 is initial and p_vara1 is initial.
    message e000 with 'Please give any one of the variant for report1'(055).
  endif.
 
* If checked without varaint
  if not p_c2 is initial and p_vara2 is initial.
    message e000 with 'Please give any one of the variant for report2'(061).
  endif.
 
* Reading the variant and fetching the mail-ids
  if p_c1 = c_x.
 
    l_c1 = '1'.
    clear : s_email,
            s_email[].
 
    perform read_variants tables it_mailid
                                 s_email
                           using p_vara1
                                 l_pro1
                                 l_c1.
    if s_email[] is initial.
      message e000 with 'No Id available for given Cost report1'(066).
    else.
      sort s_email by low.
      delete adjacent duplicates from s_email comparing low.
    endif.
 
  endif.
 
* Reading the variant and fetching the mail-ids
  if p_c2 = c_x.
 
    clear : s_email1,
            s_email1[].
 
    l_c2 = '2'.
    perform read_variants tables it_mailid1
                                 s_email1
                           using p_vara2
                                 l_pro2
                                 l_c2.
 
    if s_email1[] is initial.
      message e000 with 'No Id available for given Cost report2'(067).
    else.
      sort s_email1 by low.
      delete adjacent duplicates from s_email1 comparing low.
    endif.
 
  endif.
 
endform.                    " validation
 
*&---------------------------------------------------------------------*
*&      Form  GET_VARIANTS
*&---------------------------------------------------------------------*
*       Fetching Variants
*----------------------------------------------------------------------*
form get_variants  tables   p_it_variant structure it_variant1
                   using    p_v_program  type rs38m-programm.
 
  select variant
         from varid
         into table p_it_variant
         where report = p_v_program.
 
endform.                    " GET_VARIANTS
*&---------------------------------------------------------------------*
*&      Form  GET_F4_HELP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form get_f4_help  tables   p_it_variant1 structure it_variant1
                   using   p_l_vara1 like dfies-fieldname
                  changing p_p_vara like p_vara1.
 
 
* Fn. for Pop-Up
  call function 'F4IF_INT_TABLE_VALUE_REQUEST'
    exporting
      retfield        = p_l_vara1
      value_org       = 'S'
      display         = ' '
    tables
      value_tab       = p_it_variant1
      return_tab      = it_return
    exceptions
      parameter_error = 1
      no_values_found = 2
      others          = 3.
  if sy-subrc = 0.
    p_p_vara = it_return-fieldval.
  else.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
 
endform.                    " GET_F4_HELP
*&---------------------------------------------------------------------*
*&      Form  FETCH_VARIANTS1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form fetch_variants1 .
 
  data : v_program1 like rs38m-programm value 'GP3DIEHXY88SNFJ0391V7KF9EK7050',
         l_vara2  type dfies-fieldname value 'P_VARA2'.
 
  clear : it_variant2,
          it_variant2[].
 
* Get Variants
  perform get_variants tables it_variant2
                       using v_program1.
 
* F4 Help
  if not it_variant2[] is initial.
    perform get_f4_help tables it_variant2
                        using  l_vara2
                      changing p_vara2.
  else.
    message e000 with 'No variants available for report2'(050).
  endif.
 
endform.                    " FETCH_VARIANTS1
 
*&---------------------------------------------------------------------*
*&      Form  read_variants
*&---------------------------------------------------------------------*
*        Reading the variant and fetching the mail-ids
*----------------------------------------------------------------------*
form read_variants tables p_it_mailid structure it_mailid
                          p_s_email   structure s_email
                   using  p_p_vara1   like p_vara1
                          p_l_pro1    like rs38m-programm
                          p_l_c1      type c.
 
  data : l_temp(44),
         it_valutab like rsparams occurs 0 with header line.
 
  ranges : r_cocen for csks-kostl.
 
* Function Module to get the variant contents
  call function 'RS_VARIANT_CONTENTS'
    exporting
      report               = p_l_pro1
      variant              = p_p_vara1
    tables
      valutab              = it_valutab
    exceptions
      variant_non_existent = 1
      variant_obsolete     = 2
      others               = 3.
 
  if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
 
  clear : r_cocen,
          r_cocen[].
 
  loop at it_valutab where selname = 'KOSTL'
                        or selname = '_C-CCTR'.
 
* Getting the range of cost centers
    if it_valutab-option = 'BT'.
      r_cocen-low    = it_valutab-low.
* For Conversion Routine
      perform conversion using r_cocen-low.
      r_cocen-high   = it_valutab-high.
* For Conversion Routine
      perform conversion using r_cocen-high.
      r_cocen-option = 'BT'.
      r_cocen-sign   = 'I'.
      append r_cocen.
      clear  r_cocen.
    endif.
 
* Getting the single cost centers
    if it_valutab-option = 'EQ'.
      r_cocen-low    = it_valutab-low.
* For Conversion Routine
      perform conversion using r_cocen-low.
      r_cocen-option = 'EQ'.
      r_cocen-sign   = 'I'.
      append r_cocen.
      clear  r_cocen.
    endif.
 
  endloop.
 
* If no cost centers
  if not r_cocen[] is initial.
    select kokrs
           kostl
           datbi
           telx1
      from csks
           into table p_it_mailid
     where kostl in r_cocen.
 
    if p_it_mailid[] is initial.
      if p_l_c1 = '1'.
        message e000 with 'No IDs available for report1'(059).
      elseif p_l_c1 = '2'.
        message e000 with 'No IDs available for report2'(062).
      endif.
 
    endif.
 
* Deleting the blank entries
    delete p_it_mailid where telx1 = space.
 
    clear l_temp.
    read table p_it_mailid index 1.
    l_temp = p_it_mailid-telx1.
 
    data : l_check.
 
    loop at p_it_mailid where telx1 <> l_temp.
      l_check = c_x.
    endloop.
 
* For checking the unique ids
    if l_check = c_x.
      if p_l_c1 = '1'.
        message e000 with 'No unique mail-ids for  report1'(058).
      elseif p_l_c1 = '2'.
        message e000 with 'No unique mail-ids for  report2'(065).
      endif.
    endif.
 
* Populating the IDs for the cost centers
    loop at p_it_mailid.
      set locale language sy-langu.
      translate p_it_mailid-telx1 to lower case.
      set locale language space .
      concatenate p_it_mailid-telx1 '@allergan.com' into l_temp.
      p_s_email-low = l_temp.
      p_s_email-sign = 'I'.
      p_s_email-option = 'EQ'.
      append p_s_email.
      clear  p_s_email.
    endloop.
 
  else.
    if p_l_c1 = '1'.
      message e000 with 'No Cost Center Available for report1'(057).
    elseif p_l_c1 = '2'.
      message e000 with 'No Cost Center Available for report2'(063).
    endif.
  endif.
 
endform.                    " read_variants
*&---------------------------------------------------------------------*
*&      Form  CONVERSION
*&---------------------------------------------------------------------*
*       For Conversion Routine
*----------------------------------------------------------------------*
form conversion  using    p_it_valutab_low type c.
 
  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input  = p_it_valutab_low
    importing
      output = p_it_valutab_low.
 
endform.                    " CONVERSION
 

chk this one to send script to pdf

<b>http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm</b>

Regards Rk

former_member223446
Active Participant
0 Kudos

hi sagarika

just run the standard program RSTXPDFT4.PRESS F8. give the mandatory inputs .

i hope this is sloved.

if helpful

plz reward points

kiran

Former Member
0 Kudos

Hi

To convert the SapScript to PDF, you should use the function module,

SX_OBJECT_CONVERT_OTF_PDF.

Thanks

Archana

Former Member
0 Kudos
ferry_lianto
Active Contributor
0 Kudos

Hi,

Please check this links for sample codes.

http://www.sapgenie.com/abap/pdf_creation.htm

/people/sap.user72/blog/2004/11/10/bsphowto-generate-pdf-output-from-a-bsp

http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm

Regards,

Ferry Lianto