Report Output in PDF using htmldb_example.xslt yields blank page; commas

I am able to generate a PDF file from a given region using FOP (Formatting Objects Processor). The file that is produced in the Adobe reader produces a nice report with a header and footer region. However, there is always a blank page (containing the header and footer information only). Also, the report produced contains mixed data (text, dates MM-MON-RR and numbers (1.00 3.00 named Hours and Days) and totals. For certain reports, the total lines for the 2 number columns could get into the thousands (1,996.54 284.52). When the comma in the number is introduced, the total row will no longer align with the detail rows.
I know that htmldb_example.xslt is only an example, but has anybody experienced this behavior?
Of note, the example file "hr_employees.pdf" that is downloaded from Oracle also has a blank page.

Code changed in htmldb_example.xslt to fix comma/number format and extra page:
<!--Some FOP processers require a block element within a table cell to render correctly-->
<fo:block font-size="8pt">
<xsl:choose>
<xsl:when test=".=translate(.,translate(.,'0123456789+-,.',''),'')">
<xsl:attribute name="text-align">end</xsl:attribute>
</xsl:when>
<xsl:when test="string(number(.))='NaN'">
<xsl:attribute name="text-align">start</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="text-align">end</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="."/>
</fo:block
Page break code, before:
<fo:table break-after="page" font-family="Helvetica">
after, (no extra page):
<fo:table font-family="Helvetica">
<!--break-after="page" causes page break after the report ends-->

Similar Messages

  • BIP report output in PDF and RTF generating some blank columns or � symbols

    Hi Experts,
    I am new to BIP. I have developed some BIP reports in 10.1.3.4.1 version which are working fine in Dev and UAT environment.
    But it's generating some blank columns and some columns with proper data and some columns with"cellphone" kind of symbol in PDF and " �"
    symbols in RTF in Prod environment.
    In all the environments the version of BIP is same.
    So any help in resolving this issue is appreciated.
    Thanks in advance..
    Regards,
    Suresh.A

    All of the complex report logic is handled in your Oracle Report (rdf) file.
    If your Oracle report is working OK, then this report should be generating XML.
    After running your report, go to the View Requests window. Highlight your request, and click the Diagnostics button. Then click the 'View XML' button. If you see XML data, then you should be OK.
    When I faced a similar issue, it was because the '1 step' process didnt work for the particular report I was using. The '1 step' process doesn't work for every report. Which report are you using?
    If the report is submitted via a form (not the concurrent manager request form), then you probably need to use 2 steps to produce the desired output.
    For more information, see the following thread:
    Enhancment to avoid 2 step check printing
    HTH,
    Mark K

  • Oracle HTMLDB report output in PDF format using FOP

    Hi,
    We are currently using Oracle HTMLDB1.6.I am trying to implement the HTMLDB report output in PDF format.I got at document but it is not clear.Could you please let use know wheether anybody has already used in their organization.
    Appreciate your response.
    Regards
    Murai

    Hey Murai,
    did you read the technote:
    http://www.oracle.com/technology/pub/notes/technote_htmldb_fop.html
    There is anything explained!
    greets,
    tim

  • Converting simple report output to PDF print layout issue

    Hi all,
    I am converted one report output to PDF format, it is working fine in one DEV sever, but when we moved it to other server the layout of output preview & font size  is not coming properly (as same in DEV server)  in the new server. I am using the below code, please check & correct me if anything is wrong.
    CALL FUNCTION 'GET_PRINT_PARAMETERS'
          EXPORTING
            copies                 = '1'
            cover_page             = space
            destination            = 'LOCL'
            expiration             = '1'
            immediately            = space
            mode                   = space
            new_list_id            = 'X'
            no_dialog              = 'X'
            user                   = sy-uname
            line_size              = 200
            line_count             = 65
    *        layout                 = 'Z_65_230'
            layout                 = 'X_58_170'
            sap_cover_page         = 'X'
          IMPORTING
            out_parameters         = mstr_print_parms
            valid                  = mc_valid
          EXCEPTIONS
            archive_info_not_found = 1
            invalid_print_params   = 2
            invalid_archive_params = 3
            OTHERS                 = 4.
        IF sy-subrc EQ 0.
    **--Creating Spool Request.
          CALL FUNCTION 'JOB_OPEN'
            EXPORTING
              jobname          = lv_job_name
            IMPORTING
              jobcount         = lv_job_count
            EXCEPTIONS
              cant_create_job  = 1
              invalid_job_data = 2
              jobname_missing  = 3
              OTHERS           = 4.
          IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          ELSE.
    **--Submitting the Report & Get the Output.
            SUBMIT  zpsr_submit_prcng WITH SELECTION-TABLE t_ebeln TO SAP-SPOOL WITHOUT SPOOL DYNPRO
                                  SPOOL PARAMETERS mstr_print_parms
                                  USER             sy-uname         " User for runtime authorizations
                                  VIA JOB          lv_job_name
                                  NUMBER           lv_job_count
                                  AND RETURN.
            IF sy-subrc <> 0.
              MESSAGE ID    sy-msgid TYPE sy-msgty NUMBER sy-msgno
                      WITH  sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
            ELSE.
              CALL FUNCTION 'JOB_CLOSE'
                EXPORTING
                  jobcount         = lv_job_count
                  jobname          = lv_job_name
                  strtimmed        = 'X'
                IMPORTING
                  job_was_released = lv_job_released.
              IF sy-subrc <> 0.
                MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
              ENDIF.
    Thanks & Regards
    Avish
    Moderator Message: Please use code tags when pasting code snippets. Also paste relevant portions of the code
    Edited by: Suhas Saha on Jul 13, 2011 3:05 PM

    Dear Alexander,
    Thanks for the reply.
    In this I am using the FM 'CONVERT_ABAPSPOOLJOB_2_PDF'. I have checked the settings from SPAD that is also same in both servers for particular output device. But the patches are diffrennt in both the servers, the server from which layout is not coming properly having the high level patches in compare to the other server(which is working fine).

  • Converting report output to pdf by submit spooland email to multiple vendor

    Hi all,
               my current program converting the report output to pdf and then downaloding andsending  to vendor email.If user enter single vendor is o.k. but if suppose user enter multiple vendors,report is dipalying with multiple vendor information and all this information converting to one pdf file only.but i need particular vendor pdf have particular vendor info only excluding remaining vendor info.I am pasting my code.can anyone suggest?
    TYPES: BEGIN OF type_data,
           lifnr TYPE ekko-lifnr,
           matnr TYPE lips-matnr,
           vgbel TYPE lips-vgbel,
           vgpos TYPE lips-vgpos,
           mfrgr TYPE lips-mfrgr,
           vbeln TYPE ekes-vbeln,
           erdat TYPE ekes-erdat,
           lfdat TYPE ekes-eindt,
           lgort TYPE lips-lgort,
           verur TYPE ekes-xblnr,
           lfuhr TYPE ekes-uzeit,
           lfimg TYPE lips-lfimg,
           meins TYPE lips-meins,
           posnr TYPE lips-posnr,
           kdmat TYPE lips-kdmat,
           dabmg TYPE ekes-dabmg,
           eindt TYPE eket-eindt,
    * Add by liza DEVK989704
           park TYPE ZPO_PARK-menge,
    * End by liza DEVK989704
           END OF type_data.
    DATA: gt_data TYPE STANDARD TABLE OF type_data.
    DATA: gw_data LIKE LINE OF gt_data.
    form display_list.
    DATA: lv_maktx   TYPE makt-maktx,
            lv_adv(01) TYPE c.
      DATA: lv_menge TYPE zomm_t0104m-menge.
    *-- Set titles
      title1 = 'Shipping notifications'.
      title2 = '(Formerly Known As Matsushita Industrial )'.
      title3 = sy-title.
      IF NOT pa_fax IS INITIAL.
        NEW-PAGE LINE-SIZE 120 LINE-COUNT 44.
        title3 = 'Outstanding shipping notifications by supplier'.
      ENDIF.
      SORT gt_data BY lifnr lfdat matnr vgbel vgpos eindt.
      LOOP AT gt_data INTO gw_data.
        AT NEW lifnr.
          NEW-PAGE.
          sy-pagno = 1.
    *-- Get the vendor name
          CLEAR: gv_name1,
                 gv_telf1,
                 gv_telfx.
          SELECT SINGLE name1 telf1 telfx
                 INTO (gv_name1, gv_telf1, gv_telfx)
                 FROM lfa1
                 WHERE lifnr = gw_data-lifnr.
        ENDAT.
    AT NEW matnr.
    *-- Get the material description
          CLEAR lv_maktx.
          SELECT SINGLE maktx INTO lv_maktx
                 FROM makt
                 WHERE matnr = gw_data-matnr
                   AND spras = sy-langu.
        ENDAT.
    *-- If "only pending shipping notifications" is selected, remove all
    *   entries with no pending quantity
        IF gw_data-lfimg LE gw_data-dabmg AND
           pa_pend = 'X'.
          CONTINUE.
        ENDIF.
    *-- Highlight entries where the SN delivery date is before the PO
    *   delivery date
        IF gw_data-lfdat < gw_data-eindt.
          FORMAT INTENSIFIED ON.
          lv_adv = 'X'.
        ELSE.
          FORMAT INTENSIFIED OFF.
          CLEAR lv_adv.
        ENDIF.
        lv_menge = gw_data-lfimg - gw_data-dabmg.
    * Add by liza DEVK989704
        clear: PARKING, T_PARK.
        refresh: T_PARK.
        Select * from ZPO_PARK into T_PARK
        where vbeln = gw_data-vbeln
        and lifnr = gw_data-lifnr
        and matnr =  gw_data-matnr.
        Append T_PARK.
        Endselect.
        Loop at T_PARK.
          PARKING = PARKING + T_PARK-menge.
        Endloop.
        gw_data-park = PARKING.
    * End by liza DEVK989704
        IF pa_fax IS INITIAL.
          WRITE:/2(18) gw_data-matnr,
                  (40) lv_maktx,
                       gw_data-vgbel,
                       gw_data-eindt,
                  (04) gw_data-mfrgr,
                  (18) gw_data-verur,
                       gw_data-vbeln,
                       gw_data-lfdat,
                  (07) gw_data-lfimg UNIT gw_data-meins,
                  (07) gw_data-dabmg UNIT gw_data-meins,
                  (07) lv_menge UNIT gw_data-meins,
                       gw_data-lgort,
                       gw_data-erdat,
                  (01) lv_adv,
    * Add by liza DEVK989704
                  (08) gw_data-park.
    * End by liza DEVK989704
        ELSE.
          WRITE:/2(12) gw_data-matnr,
                  (26) lv_maktx,
                       gw_data-vgbel,
                  (16) gw_data-verur,
                       gw_data-vbeln,
                       gw_data-lfdat,
                  (07) gw_data-lfimg UNIT gw_data-meins,
                  (07) gw_data-dabmg UNIT gw_data-meins,
                  (07) lv_menge UNIT gw_data-meins,
                       gw_data-lgort.
        ENDIF.
        PERFORM write_vline.

    AT END OF lifnr.
         If pa_dtim NE '000000'.
          ULINE.
          SKIP.
          WRITE:/12 TS_VEND.
          WRITE:/12 TS_ATT.
          WRITE:/12 TS_FROM.
          SKIP.                                     "D01K934099
          WRITE:/12'DELIVERY TIME:',pa_dtim.        "D01K934099
          SKIP.                                     "D01K934099
          WRITE:/12 TS_TEXT1.
          WRITE:/12 TS_TEXT2.
          WRITE:/12 TS_TEXT3.
          WRITE:/12 TS_TEXT4.
        Else.
          ULINE.
          SKIP.
          WRITE:/12 TS_VEND.
          WRITE:/12 TS_ATT.
          WRITE:/12 TS_FROM.
          WRITE:/12 TS_TEXT1.
          WRITE:/12 TS_TEXT2.
          WRITE:/12 TS_TEXT3.
          WRITE:/12 TS_TEXT4.
    Endif.
    ENDAT.
         move-corresponding gw_data to t_data.
         move : lv_maktx  to t_data-maktx,
                lv_menge  to t_data-menge,
                lv_adv    to t_data-adv,
                parking   to t_data-park.
           append t_data.
    L_X = 'X'.
      CALL FUNCTION 'GET_PRINT_PARAMETERS'
       EXPORTING
         NO_DIALOG                      = L_X
       IMPORTING
         OUT_PARAMETERS                 = GS_PRINT_PARAMS
         VALID                          = G_VALID
      IF SY-SUBRC  0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
          GS_PRINT_PARAMS-PAART = 'X_65_80'.
          GS_PRINT_PARAMS-LINSZ = '185'.
    *   /*----------store the current selection screen details---------/
      CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
        EXPORTING
          CURR_REPORT           = SY-REPID
        TABLES
          SELECTION_TABLE       = T_RSPARAMS
       EXCEPTIONS
         NOT_FOUND             = 1
         NO_REPORT             = 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.
    *   /*--- importing variable value set at first time to restrict the infinite loop --------/.
    IMPORT VAR FROM MEMORY ID 'abc' .
      VAR = VAR + 1 .
      P_UNAME = SY-UNAME .
      P_REPID = SY-REPID .
    * /*------checking variable to restricted scecond time exction of this block of code---------/
      IF VAR = 1 .
        V_MEMID = 1 .
        EXPORT VAR TO MEMORY ID 'abc' .
    * /*-----------submitting the spool request--------------/
        SUBMIT (P_REPID) WITH SELECTION-TABLE T_RSPARAMS
                           TO SAP-SPOOL
                         SPOOL PARAMETERS GS_PRINT_PARAMS
                         WITHOUT SPOOL DYNPRO
                         AND RETURN.
    endif.
    FREE MEMORY ID 'abc'.
    *  /*-------Calculating the lenth of report name--------/
      v_len = STRLEN( P_REPID ) .
    *  /*-------consutrucing the database variable  rq2name to search the spool request---------/
      IF v_len >= 9 .
        CONCATENATE P_REPID+0(9)
                    P_UNAME+0(3) INTO LC_RQ2NAME .
      ELSE.
        V_LEN1 = 9 - V_LEN .
        DO V_LEN1 TIMES .
          CONCATENATE V_TEMP '_' INTO V_TEMP .
        ENDDO.
        CONCATENATE P_REPID V_TEMP
                    P_UNAME INTO LC_RQ2NAME .
      ENDIF.
    *  /*--------selecting the spool request using the above constructed variable----------/
      SELECT  * FROM TSP01 INTO TABLe IT_TSP01
              WHERE RQ2NAME = LC_RQ2NAME .
    * /*--------sorting the internal table-----------/
      SORT  it_tsp01 BY RQCRETIME DESCENDING .
    * /*--------reading the first spool request-------/
      READ TABLE IT_TSP01 INDEX 1.
    * /*--------Convert Spool to PDF-----------/
      IF GS_PRINT_PARAMS-PDEST IS INITIAL.
        GS_PRINT_PARAMS-PDEST = 'LOCL'.
      ENDIF.
      CONCATENATE P_DEST T_DATA-LIFNR '.PDF' INTO G_FILENAME.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
        EXPORTING
          SRC_SPOOLID                    = IT_TSP01-RQIDENT
         NO_DIALOG                      = SPACE
       IMPORTING
         PDF_BYTECOUNT                  = G_BYTECOUNT
       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
      IF SY-SUBRC  0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.

  • Report output  in PDF format instead of TEXT

    Hello every1,
    I am using oracle application E-bS version 11.5.10.2 and i want ORACLE reports output in PDF format instead of standard 'text' default format(the place where v register concurrent programs). so can any one tell me what changes should i do to achieve my goal i had change format as pdf in concurrent program and run report but it shows error as follows:
    REP-3000: Internal error starting Oracle Toolkit.
    REP-3000: Internal error starting Oracle Toolkit.
    Plz. share your knowledge regarding.
    Radhi
    Edited by: user713 on Jun 20, 2011 9:32 AM

    Hi,
    check this support note.
    Reference
    Master Note : Comprehensive REP-3000 Troubleshooting and Overview Guide (Doc ID 200474.1)
    Regards, roberto

  • Save Oracle Report Output as PDF format in the system folder

    Hi,
    Is it possible to Save Oracle Reports Output as PDF(file_name.pdf) format in the system folder(say C:\temp\file_name.pdf).
    I am using Repors 10g R2.
    Note : i dont want to open the report preview as PDF, just i want to save the PDF file in the a specified location.
    Regards,
    Suresh.V

    Hello,
    Yes, it is possible.
    Execute the Reports passing the parameters :
    DESFORMAT=PDF DESTYPE=FILE DESNAME=C:\temp\file_name.pdf
    Regards

  • PAYABLES NOT GETTING THE REPORT OUTPUT IN PDF AFTER APPLYING RUP5 R12

    Hi All,
    RDBMS:10.2.0.3.0
    Oracle Apps :12.0.4
    OS:AIX 5.3
    Problem Description:
    We are presently facing an issue in Payables not getting the report output in PDF esp for the reports "Invoice Register", Invoice Hold Report and also other reports. We were able to generate the reports till our last test performed on last Thursday. This instance was cloned over the last weekend and probably the new upgrade to RUP5 R12,would have impacted it.
    Concurrent Programs submitted are completed normal but on clicking "view output" results in Blank PDF output.
    The error message what was shown is as below:
    "Adobe Reader could not open 'AcrC.tmp' because it is either not a supported file type or because the file has been damaged (for example, it was sent as an email attachment and wasn't correctly decoded)".
    Where could we locate ther above 'AcrC.tmp' of Adobe Reader..
    could anyone please share such an experience encountered for resolution..
    Would appreciate an early response..
    Thanks for your time!
    Regards,

    I suggest you speak to your DBA/sysadmin. This is not likely to be a reports problem.
    Check that you can see the output from apps through the viewer (the report may not hav output anything)
    Check whether you can print anything on that printer from apps.
    May also be worth checking to see if you can print to another printer from this report.

  • Is there a way to merge 3 or more report output in PDF into one

    Hi All,
    I know about the report sectioning. I am wondering is there any other way to merge 3 or more report output in pdf form to a single document.
    I have seen that there are many thrid party tools. Wondering is there anything from Oracle reports feature or any Oracle product for this?
    Thank You
    Rajesh ALex

    If not changing the reports design, third party tools is the only options. AFAIK, there is no Oracle proprietary tool for merging PDF files..

  • Printing report output in PDF format

    Hi,
    I want to know what are the settings needed to print a report output in PDF format, while executing the report from Oracle applications (Ver 11.5.6).
    Report is executed as a concurrent request from Oracle applications.
    Normally when we run the report from Oracle applications, output will be opened in a internet browser(IE) in HTML format. But I want the output to be opened in PDF format instead of HTML.
    OS: Sun Solaris 2.8.
    Thanks & Regards,
    Sarish

    Hi Sarish
    Please contact Oracle Support for an answer or to customise your application so that it prints a report output in PDF Format.
    To get PDF output you must run report/job with DESFORMAT=PDF in the command line instead of DESFORMAT=HTML/HTMLCSS.
    Regards
    Sripathy

  • Suddenly Can't Open PDFs. Starting about three days ago firefox will no longer open any PDFs. I get a blank page in a new tab.

    Suddenly Can't Open PDFs in Firefox. Starting about three days ago firefox will no longer open any PDFs. I get a blank page in a new tab. Nice timing, with finals and everything where I need to view PDFs of practice tests.

    Mozilla Firefox did not do their job, here. I am an editor and am constantly online. Now, I have to go to Safari to download PDFs. I reinstalled an earlier version of Firefox to get rid of the problem, but somehow Firefox has deactivated my PDF download feature. This is a total wreck and I am so angry I could spit. Stop launching new products until you have fully tested them. Customers are not your guinea pigs. Please fix this now- and fire a few idiots on the way- the ones who let this happen.

  • A hyperlink click to a pdf document in a website does not open a pdf document instead presents a blank page "searching for bookmarks"

    a hyperlink click to a pdf document in a website does not open a pdf document instead presents a blank page "searching for bookmarks"

    Check the settings as shown in the [[opening PDF files within Firefox]] article.

  • Report output as pdf

    I followed the instructions from OTN "Rendering Oracle HTML DB Reports as PDFs Using Formatting Objects Processor". All installation steps have been performed.
    After clicking on the "Output to PDF Document" link I get the following errormessage in a new browser window:
    "The requested URL /htmldb_fop_render.jsp was not found on
    this server."
    I've changed the path in the htmldb_pdf.js file to:
    var g_Render_URL = 'http://131.141.11.163:7777/htmldb_fop_render.jsp';
    Any ideas?
    Thanks for your help

    Depending on your environment (I tried the following with AS 10g / J2EE); you should use http://131.141.11.163:7777/j2ee/htmldb_fop_render.jsp - note the additional j2ee.

  • Report Output to PDF

    Hi all,
    I am facing the following and I am wondering if any of you could help me.
    I have developed a number of bilingual reports (english and greek text) using Oracle reports 6i (batch 10) on Windows 2000. The reports are ok ... but when I try to export the output to pdf the greek text gets messed up. Actually, a lot of strange characters appear instead of the greek ones. Metalink states this as a bug, with 2 possible workarounds, either to use Acrobat Reader 3 (!!!!) or to use specific font styles (btw ... I haven't manage to find these fonts anywhere).
    I am wondering whethere any of you has faced a similar problem (with greek or any other non-latin language). Does any of you has any idea if the problem is solved with Reports 9i?
    Thanks in advance
    Kind regards
    Ioanna

    Hi,
    At Reports 6i, you can see greek data in .pdf files, if you use Acrobat3 and Batang(western) fonts.
    Maria Karakiza

  • Problem in converting report output to pdf

    Hi,
    I'm managing to get the spool id and other requirements but could'nt get the output of the program converted to pdf format.When i'm trying to do this i'm getting the pdf format of the functional module which retrievs the header and item records and displays the numbers records in the header and item like for eg. header records 8 and item records 10 this its displaying in the format in which we get our funtional module output when we give some data into it.....
    Can any one please tell me how to solve this for ur information i'm using hierarchail squential report with multiple reports in the same report.............
    for instance i'm using the following coding please find the bug......
    PARAMETER: p_email1 LIKE somlreci1-receiver
                                        DEFAULT '[email protected]',
               p_sender LIKE somlreci1-receiver
                                        DEFAULT '[email protected]',
               p_delspl  AS CHECKBOX.
    *DATA DECLARATION
    DATA: gd_recsize TYPE i.
    Spool IDs
    TYPES: BEGIN OF t_tbtcp.
            INCLUDE STRUCTURE tbtcp.
    TYPES: END OF t_tbtcp.
    DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
          wa_tbtcp TYPE t_tbtcp.
    Job Runtime Parameters
    DATA: gd_eventid LIKE tbtcm-eventid,
          gd_eventparm LIKE tbtcm-eventparm,
          gd_external_program_active LIKE tbtcm-xpgactive,
          gd_jobcount LIKE tbtcm-jobcount,
          gd_jobname LIKE tbtcm-jobname,
          gd_stepcount LIKE tbtcm-stepcount,
          gd_error    TYPE sy-subrc,
          gd_reciever TYPE sy-subrc.
    DATA:  w_recsize TYPE i.
    DATA: gd_subject   LIKE sodocchgi1-obj_descr,
          it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          gd_sender_type     LIKE soextreci1-adr_typ,
          gd_attachment_desc TYPE so_obj_nam,
          gd_attachment_name TYPE so_obj_des.
    Spool to PDF conversions
    DATA: gd_spool_nr LIKE tsp01-rqident,
          gd_destination LIKE rlgrap-filename,
          gd_bytecount LIKE tst01-dsize,
          gd_buffer TYPE string.
    Binary store for PDF
    DATA: BEGIN OF it_pdf_output OCCURS 0.
            INCLUDE STRUCTURE tline.
    DATA: END OF it_pdf_output.
    CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
               c_no(1)     TYPE c   VALUE ' ',
               c_device(4) TYPE c   VALUE 'LOCL'.
    *START-OF-SELECTION.
    START-OF-SELECTION.
    Write statement to represent report output. Spool request is created
    if write statement is executed in background. This could also be an
    ALV grid which would be converted to PDF without any extra effort
      WRITE 'Hello World'.
      new-page.
      commit work.
      new-page print off.
      IF sy-batch EQ 'X'.
        PERFORM get_job_details.
        PERFORM obtain_spool_id.
    Alternative way could be to submit another program and store spool
    id into memory, will be stored in sy-spono.
    *submit ZSPOOLTOPDF2
           to sap-spool
           spool parameters   %_print
           archive parameters %_print
           without spool dynpro
           and return.
    Get spool id from program called above
    IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
        PERFORM convert_spool_to_pdf.
        PERFORM process_email.
        if p_delspl EQ 'X'.
          PERFORM delete_spool.
        endif.
        IF sy-sysid = c_dev.
          wait up to 5 seconds.
          SUBMIT rsconn01 WITH mode   = 'INT'
                          WITH output = 'X'
                          AND RETURN.
        ENDIF.
      ELSE.
        SKIP.
        WRITE:/ 'Program must be executed in background in-order for spool',
                'request to be created.'.
      ENDIF.
          FORM obtain_spool_id                                          *
    FORM obtain_spool_id.
      CHECK NOT ( gd_jobname IS INITIAL ).
      CHECK NOT ( gd_jobcount IS INITIAL ).
      SELECT * FROM  tbtcp
                     INTO TABLE it_tbtcp
                     WHERE      jobname     = gd_jobname
                     AND        jobcount    = gd_jobcount
                     AND        stepcount   = gd_stepcount
                     AND        listident   <> '0000000000'
                     ORDER BY   jobname
                                jobcount
                                stepcount.
      READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
      IF sy-subrc = 0.
        message s004(zdd) with gd_spool_nr.
        gd_spool_nr = wa_tbtcp-listident.
        MESSAGE s004(zdd) WITH gd_spool_nr.
      ELSE.
        MESSAGE s005(zdd).
      ENDIF.
    ENDFORM.
          FORM get_job_details                                          *
    FORM get_job_details.
    Get current job details
      CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
           IMPORTING
                eventid                 = gd_eventid
                eventparm               = gd_eventparm
                external_program_active = gd_external_program_active
                jobcount                = gd_jobcount
                jobname                 = gd_jobname
                stepcount               = gd_stepcount
           EXCEPTIONS
                no_runtime_info         = 1
                OTHERS                  = 2.
    ENDFORM.
          FORM convert_spool_to_pdf                                     *
    FORM convert_spool_to_pdf.
      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.
    Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf_output.
        TRANSLATE it_pdf_output USING ' ~'.
        CONCATENATE gd_buffer it_pdf_output 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.
    ENDFORM.
          FORM process_email                                            *
    FORM process_email.
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      CHECK gd_recsize > 0.
      PERFORM send_email USING p_email1.
    perform send_email using p_email2.
    ENDFORM.
          FORM send_email                                               *
    -->  p_email                                                       *
    FORM send_email USING p_email.
      CHECK NOT ( p_email IS INITIAL ).
      REFRESH it_mess_bod.
    Default subject matter
      gd_subject         = 'Subject'.
      gd_attachment_desc = 'Attachname'.
    CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
      it_mess_bod        = 'Message Body text, line 1'.
      APPEND it_mess_bod.
      it_mess_bod        = 'Message Body text, line 2...'.
      APPEND it_mess_bod.
    If no sender specified - default blank
      IF p_sender EQ space.
        gd_sender_type  = space.
      ELSE.
        gd_sender_type  = 'INT'.
      ENDIF.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_mess_bod
                                          it_mess_att
                                    using p_email
                                          'Example .xls documnet attachment'
                                          'PDF'
                                          gd_attachment_name
                                          gd_attachment_desc
                                          p_sender
                                          gd_sender_type
                                 changing gd_error
                                          gd_reciever.
    ENDFORM.
          FORM delete_spool                                             *
    FORM delete_spool.
      DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
      ld_spool_nr = gd_spool_nr.
      CHECK p_delspl <> c_no.
      CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
           EXPORTING
                spoolid = ld_spool_nr.
    ENDFORM.
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables it_message
                                              it_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
    data:   t_packing_list like sopcklsti1 occurs 0 with header line,
            t_contents like solisti1 occurs 0 with header line,
            t_receivers like somlreci1 occurs 0 with header line,
            t_attachment like solisti1 occurs 0 with header line,
            t_object_header like solisti1 occurs 0 with header line,
            w_cnt type i,
            w_sent_all(1) type c,
            w_doc_data like sodocchgi1.
      ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = it_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_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.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.

    Please  go throught the code    ... this  is  my salary sending  program to  all the employees   as pdf attach file of his  salary breakup ...... it was  so clear  how the   data  is converted in th  pdf   format   .... and more understanding way the internal tables are declared ....
    DATA W_OPTIONS LIKE ITCPO OCCURS 0 WITH HEADER LINE.
      DATA : z_itcpp LIKE itcpp OCCURS 0 WITH HEADER LINE.
      DATA : otfdt like ITCOO OCCURS 0 WITH HEADER LINE.
      DATA : pdfdt like TLINE OCCURS 0 with header line.
       DATA: NUMBYTES TYPE I.
      DATA: OBJPACK   LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
      DATA: OBJHEAD   LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
      DATA: OBJBIN    LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
      DATA: OBJTXT    LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
      DATA: RECLIST   LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
      DATA: DOC_CHNG  LIKE SODOCCHGI1.
      DATA: TAB_LINES LIKE SY-TABIX.
      DATA: Begin of i_errors occurs 0,
            type(1) type c,
            descr(100) type c,
           End of i_errors.
        w_options-tdprinter = 'POSTSCPT'.
        W_options-TDRDIDEV = 'XP45'.
        W_options-TDGETOTF = 'X'.
        APPEND W_options.
        call function 'OPEN_FORM'
            exporting
                  device                      = 'PRINTER'
                  dialog                      = ' '
                  form                        = 'ZHRPAYSLIP'
                  language                    =  sy-langu
                  options                     =  w_options
    *      IMPORTING
    *         LANGUAGE                    =
    *         NEW_ARCHIVE_PARAMS          =
    *         RESULT                      =
           exceptions
                 canceled                    = 1
                 device                      = 2
                 form                        = 3
                 options                     = 4
                 unclosed                    = 5
                 mail_options                = 6
                 archive_error               = 7
                 invalid_fax_number          = 8
                 more_params_needed_in_batch = 9
                 others                      = 10 .
    CALL FUNCTION 'CLOSE_FORM'
    *    IMPORTING
    *         RDI_RESULT               =
        TABLES
             OTFDATA                  = otfdt
          EXCEPTIONS
               UNOPENED                 = 1
               BAD_PAGEFORMAT_FOR_PRINT = 2
               SEND_ERROR               = 3
               OTHERS                   = 4.
        EXPORT otfdt TO MEMORY ID 'PDFT'.
    CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
       FORMAT                      = 'PDF'
    *   MAX_LINEWIDTH               = 132
    *   ARCHIVE_INDEX               = ' '
    *   COPYNUMBER                  = 0
    *   ASCII_BIDI_VIS2LOG          = ' '
    *   PDF_DELETE_OTFTAB           = ' '
    IMPORTING
       BIN_FILESIZE                = NUMBYTES
    *   BIN_FILE                    =
      TABLES
        otf                         = otfdt
        lines                       = pdfdt
    * 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 .
    Refresh OBJTXT. clear OBJTXT.
      Refresh OBJPACK. clear OBJPACK.
      Refresh objbin. clear objbin.
      Refresh OBJHEAD. clear OBJHEAD.
      Refresh RECLIST. Clear RECLIST.
    * Creation of the document to be sent
    * File Name
      DOC_CHNG-OBJ_NAME = 'PAYSLIP'.
    * Mail Subject
      DOC_CHNG-OBJ_DESCR = 'Payslip'.
    * Mail Contents
      OBJTXT = 'This e-mail was sent from an automated system...'.
      APPEND OBJTXT.
      OBJTXT = 'Do not reply to this message.'.
      APPEND OBJTXT.
      OBJTXT = 'Please open the attachment to view the Payslip'.
      APPEND OBJTXT.
      OBJTXT = ''.
      APPEND OBJTXT.
      if not msgtxt1 is initial.
      OBJTXT = msgtxt1.
      APPEND OBJTXT.
      endif.
      if not msgtxt2 is initial.
      OBJTXT = msgtxt2.
      APPEND OBJTXT.
      endif.
      if not msgtxt3 is initial.
      OBJTXT = msgtxt3.
      APPEND OBJTXT.
      endif.
      DESCRIBE TABLE OBJTXT LINES TAB_LINES.
      READ TABLE OBJTXT INDEX TAB_LINES.
      DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
    * Creation of the entry for the compressed document
      CLEAR OBJPACK-TRANSF_BIN.
      OBJPACK-HEAD_START = 1.
      OBJPACK-HEAD_NUM = 0.
      OBJPACK-BODY_START = 1.
      OBJPACK-BODY_NUM = TAB_LINES.
      OBJPACK-DOC_TYPE = 'RAW'.
      APPEND OBJPACK.
    * Creation of the document attachment
    CALL FUNCTION 'QCE1_CONVERT'
       TABLES
         t_source_tab         = pdfdt
         t_target_tab         = objbin
       EXCEPTIONS
         convert_not_possible = 1
         OTHERS               = 2.
    describe table objbin lines tab_lines.
    OBJHEAD = 'Payslip.PDF'.
    APPEND OBJHEAD.
    ** Creation of the entry for the compressed attachment
      OBJPACK-TRANSF_BIN = 'X'.
      OBJPACK-HEAD_START = 1.
      OBJPACK-HEAD_NUM = 1.
      OBJPACK-BODY_START = 1.
      OBJPACK-BODY_NUM = TAB_LINES.
      OBJPACK-DOC_TYPE = 'PDF'.
      OBJPACK-OBJ_NAME = 'Payslip'.
      OBJPACK-OBJ_DESCR = 'Payslip'.
      OBJPACK-DOC_SIZE = TAB_LINES * 255.
      APPEND OBJPACK.
    * Completing the recipient list
    *  Read table i_pa0105 with key pernr = pernr-pernr binary search.
      loop at i_pa0105 where pernr = pernr-pernr and USRTY = '0010'.
      endloop.
      if sy-subrc = 0.
          RECLIST-RECEIVER = i_pa0105-USRID_LONG.
          RECLIST-REC_TYPE = 'U'.
          APPEND RECLIST.
      endif.
      if RECLIST[] is initial.
          loop at i_pa0105 where pernr = pernr-pernr and USRTY = 'MAIL'.
          endloop.
          if sy-subrc = 0.
              RECLIST-RECEIVER = i_pa0105-USRID.
              RECLIST-REC_TYPE = 'U'.
              APPEND RECLIST.
          endif.
      endif.
       if not RECLIST[] is initial.
    * Sending the document
        CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
           DOCUMENT_DATA = DOC_CHNG
           PUT_IN_OUTBOX = ''
           COMMIT_WORK = 'X'
        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.
                   LOOP AT RECLIST.
    *                   Concatenate pernr-pernr '-'  RECLIST-RECEIVER(48)
    into error1.
                       IF RECLIST-RETRN_CODE = 0.
    *                     Concatenate error1 ': The document was sent' into
    error1.
                         i_errors-descr = pernr-pernr.
                         i_errors-type = 'S'.
                         append i_errors.
                       ELSE.
                         Concatenate error1 ': The document could not be
    sent' into error1.
                         i_errors-descr = error1.
                         i_errors-type = 'E'.
                         append i_errors.
                       ENDIF.
                   ENDLOOP.
            WHEN 1.
               Concatenate pernr-pernr '-'  RECLIST-RECEIVER(48) into
    error1.
               Concatenate error1 ': No authorization for sending to the
    recipients' into error1.
               i_errors-descr = error1.
               i_errors-type = 'E'.
               append i_errors.
            WHEN 2.
               Concatenate pernr-pernr '-'  RECLIST-RECEIVER(48) into
    error1.
               Concatenate error1 ': Document could not be sent to the
    recipient' into error1.
               i_errors-descr = error1.
               i_errors-type = 'E'.
               append i_errors.
            WHEN 4.
               Concatenate pernr-pernr '-'  RECLIST-RECEIVER(48) into
    error1.
               Concatenate error1 ': No send authorization' into error1.
               i_errors-descr = error1.
               i_errors-type = 'E'.
               append i_errors.
            WHEN OTHERS.
               Concatenate pernr-pernr '-'  RECLIST-RECEIVER(48) into
    error1.
               Concatenate error1 ': Error occurred while sending' into
    error1.
               i_errors-descr = error1.
               i_errors-type = 'E'.
               append i_errors.
        ENDCASE.
      else.
        error1 = pernr-pernr.
    *    Concatenate error1 ': Maintain Infotype 0105.' into error1.
        i_errors-descr = error1.
        i_errors-type = 'M'.
        append i_errors.
      endif.
    girish

Maybe you are looking for

  • Source and Destination Port

    Hi, Please clarify my queries on the port assignment in WAN Connection I am having a host A and Host B and trying to access Host C on same Port(Let us say port 20)... Will This Happen Please clarify my query

  • ASR1K 5xE1 MFR Frame relay traffic not forwarding in one direction

     Dear Techies,   Hope all is well ! Im doing this inter-op testing with Alcatel device for frame-relay and MFRs and got stuck at this situation which is actually mind boggling and I think i might be missing something "silly" :-( Its a simple setup of

  • Update 5.0.1 nothing works

    After Update to 5.0.1 notning works... Tried to boot to pad, still nothing works "Settings" and other standard Buttoms works fine, but Facebook and other Apps simply dont react

  • Populate Error message in CRMD_ORDER

    Dear all, I need to launch Error message in Service Order(CRMD_ORDER) when net_value is more than 1000. And i got that FM CRM_MESSAGES_DISPLAY can achieve that. But I'm having confusion on the FM. I coded it as below: CALL FUNCTION 'CRM_MESSAGES_DISP

  • How to customize skins and how to apply them to page template ,

    how to package a EAR and MAR file inside ADF portal application