Report Output Name

Good afternoon,
When I run my Oracle Report from my form, Oracle appends random information at the end of the report name saved on the report server. Is there some way of stopping that? or is there some way of finding out the complete output filename so that I can delete it from the server after doing a copy_report_object_output?
If I do a get_report_object_property and request REPORT_DESNAME, I don't get the random information appended to the end of the filename.
If I do the copy_report_object_output as it stands now, I end up with 2 copies of the report, the original and the one I just created with the copy. I want to delete the original.
Thanks,
Don.

Hello,
You can use the builtin COPY_REPORT_OBJECT_OUTPUT . You will be bale to copy the Reports output on the application server with a name you pass to the builtin.
COPY_REPORT_OBJECT_OUTPUT Built-in
Description Copies the output of a report to a file.
Syntax
PROCEDURE COPY_REPORT_OBJECT_OUTPUT
(report_id VARCHAR2(20),
output_file VARCHAR2
Regards

Similar Messages

  • Variant Name to be displayed at the report output

    Hi,
    I need to display the selection screen variant name which I am currently using to run my ABAP report at the report output.
    Please let me know how do I do that.
    Thanks,
    Mathangi

    Mathangi,
    use<b> SY-SLSET</b> to know the variant name.....
    Write : SY-SLSET.
    Regards.

  • How To Restrict Number Of Rows For Multiple Group In Report Output

    Hi ,
    I have a requirement to restrict number of rows in report output.I have three different group , if i use same no of rows to restrict then output is as expected but if i want Deduction group should have 7 rows , earning should have 5 rows and Tax group have 3 rows in report output then XML tag is not working.
    Below is the XML tag i am using -
    First i have declare the variable to restrict the rows -
    <xsl:variable name="lpp" select="number(7)"/>
    <xsl:variable name="lpp1" select="number(5)"/>
    <xsl:variable name="lpp2" select="number(3)"/>
    For Each -
    <?for-each:PAYSLIP?>
    <xsl:variable xdofo:ctx="incontext" name="DedLines" select=".//AC_DEDUCTIONS"/>
    <xsl:variable xdofo:ctx="incontext" name="EarLines" select=".//AC_EARNINGS[ELEMENT_CLASSIFICATION!='Taxable Benefits']"/>
    <xsl:variable xdofo:ctx="incontext" name="EarTaxLines" select=".//AC_EARNINGS[ELEMENT_CLASSIFICATION='Taxable Benefits']>
    <?for-each:$DedLines?><?if:(position()-1) mod $lpp=0?> <xsl:variable name="start" xdofo:ctx="incontext" select="position()"/>
    <?if:(position()-1) mod $lpp1=0?><xsl:variable name="start1" xdofo:ctx="incontext" select="position()"/
    <?if:(position()-1) mod $lpp2=0?><xsl:variable name="start2" xdofo:ctx="incontext" select="position()"/>
    Report output is tabular form (one page has two column - Earning and Deduction ) . Tax group comes below earning group.
    Deduction Group -
    <?for-each-group:$DedLines;./REPORTING_NAME?><?if:position()>=$start and position()<$start+$lpp?>
    <?REPORTING_NAME?>
    <?end if?><?end for-each-group?>
    Earning Group -
    <?for-each-group:$EarLines;./REPORTING_NAME?><?if:position()>=$start1 and position()<$start1+$lpp1?>
    <?REPORTING_NAME?>
    <?end if?><?end for-each-group?>
    Tax Group -
    <?for-each-group:$EarTaxLines;./REPORTING_NAME?><?if:position()>=$start2 and position()<$start2+$lpp2?>
    <?REPORTING_NAME?>
    <?end if?><?end for-each-group?>
    Please let me know in case additional detail is require.
    Thanks in Advance.
    Thanks,
    Harsh
    Edited by: Harsh.rkg on Jan 14, 2013 9:43 PM

    variable lpp2 is declare to restrict EarTaxLines -
    <xsl:variable name="lpp2" select="number(2)"/>
    This will help to restrict the no of rows on one page , if we have more then two tax benefits line then layout will roll over to continuation page.
    As part of report output my expectation is if i restrict Earning , Deduction and Tax benefits to same no of line for example - variable lpp ,lpp1 and lpp2 have same value "number(2)" , we can see the layout is continue on next page (restrict every group can have max two lines) .This is the reason we have 4 header grid , deduction and Tax Benefit lines are rolled over to continuation page .But if we restrict different value for each variable then continuation page layout is missing .
    When we tried for <xsl:variable name="lpp2" select="number(3)"/> value continuation page layout is not getting generate for both employee number .

  • ABAP Dump while Changing the Layout fields in Report output - RCOPCA02

    Hi,
    I Copied the Standard Program RCOPCA02 to ZRCOPCA02. I added two new fields(AUART, AUGRU) in the report output. It is executing correctly with default layout, While Changing the layout for displaying new fields it is dumping.
    I am not understanding, What should i do...
    Here is the Code.
    report ZRCOPCA02 no standard page heading message-id km
                    line-count (2) line-size 81.
    type-pools: slis, ecarc.
    DDIC-Tabellen *******************************************************
    tables: glpca,                         "Einzelposten / Ist
            glu1,                          "Übergabestruktur FI-SL-Anzeige
            t000,
            tka01,
            sscrfields,
            vbak.
    Variablen und int. Tabellen *****************************************
    data: l_vbeln like vbak-vbeln,
    l_auart like vbak-auart,
    l_augru like vbak-augru.
    data: afield type slis_fieldcat_alv,
    sp_group type slis_sp_group_alv,
    t_listheader type slis_t_listheader with header line,
    t_layout type slis_layout_alv,
    t_fieldcat type slis_t_fieldcat_alv,
    t_spec_groups type slis_t_sp_group_alv,
    event type slis_alv_event,
    t_events type slis_t_event,
    g_variant like disvariant,
    gx_variant like disvariant,
    g_exit(1) type c,
    g_save(1) type c,
    g_repid like sy-repid,
    msgtyp like sy-msgty,
    lt_dynpread like dynpread occurs 1 with header line,
    ls_rpcak like rpcak, "note 0310592
    packsize type i value 1000,
    text1(60) type c,
    text2(60) type c,
    oldkokrs like glpca-kokrs,
    oldracct like glpca-racct.
    data: whr_size type i value 50,"Maximum of single values per MIC 46a
    "charact. in the where-clause of the select-statement
    lines type i, "number of lines of range table MIC 46a
    cnt_rldnr type i, "Zähler Anzahl selektierter Ledger
    cnt_kokrs type i, "Zähler Anzahl selektierter KoReKreise
    cnt_poper type i, "Zähler Anzahl selektierter Perioden
    cnt_ryear type i, "Zähler Anzahl selektierter GeschJahre
    cnt_rvers type i, "Zähler Anzahl selektierter Versionen
    cnt_bukrs type i, "Zähler Anzahl selektierter BuKreise
    empge like dkobr-empge,
    ksl_curr like tka01-pcacur,
    hsl_curr like t001-waers,
    a_rec like rstirec.
    data: begin of dim_data.
    include structure rgcdi. "data for dimensions
    data: end of dim_data.
    data: begin of tab_fields occurs 80,
    name like dntab-fieldname, "fields in table i_glpca
    end of tab_fields.
    data: begin of i_glpca occurs 0.
    include structure rpca2.
    data: racct_ktext like rpcak-ktext,
    psppp like prps-posid,
    v_auart like vbak-auart,
    v_augru like vbak-augru,
          end of i_glpca.
    data: rw_subrc   like sy-subrc,      "Flag: Report-Writer-Schnittstelle
          re_subrc   like sy-subrc,        "Flag: Recherche-Schnittstelle
          subrc      like sy-subrc.
    data: set_id    like sethier-setid,    "Set-ID        "RDI_SETS_4.0
          set_class like sethier-setclass, "Setklasse     "RDI_SETS_4.0
          set_sname like sethier-shortname."Setname (24)  "RDI_SETS_4.0
    data: authorised(1),
          s_message(1),
          auth_dbcount like sy-tabix,
        Hex-Konstanten für Minimum/Maximum-Werte
          begin of hex00,
            x1(12) type c,
            x2(12) type c,
          end of hex00,
          begin of hexff,
            x1(12) type c,
            x2(12) type c,
          end of hexff.
    ranges rclnt for glpca-rclnt.
    field-symbols:  type ecarc_glpca_curr.
    Selektionsoptionen *************************************************
    select-options:
      rldnr    for glpca-rldnr   default '8A' no-display,
      rassc    for glpca-rassc                no-display,
    rrcty    for glpca-rrcty   default 0,
      rrcty    for glpca-rrcty,
      rvers    for glpca-rvers   default '000',
      kokrs    for glpca-kokrs   memory id cac,
      bukrs    for glpca-rbukrs  memory id buk,
    poper    for glpca-poper   default sy-datlo+4(2),
    ryear    for glpca-ryear   default sy-datlo,
      poper    for glpca-poper,
      ryear    for glpca-ryear,
      prctr    for glpca-rprctr  matchcode object prct,
      pprctr   for glpca-sprctr  matchcode object prct,
    RACCT    FOR GLPCA-RACCT   MATCHCODE OBJECT KART,      "RD_P30K128304
      racct    for glpca-racct,            "RD_P30K128304
      drcrk    for glpca-drcrk,
      activ    for glpca-activ,
      rhoart   for glpca-rhoart,
      rfarea   for glpca-rfarea,
      stagr    for glpca-stagr,
      rtcur    for glpca-rtcur,
      runit    for glpca-runit,
      versa    for glpca-versa  no-display,
      eprctr   for glpca-eprctr no-display,
      afabe    for glpca-afabe  no-display,
      rmvct    for glpca-rmvct  no-display,
      hrkft    for glpca-hrkft  no-display,  "note 550972
      sbukrs   for glpca-sbukrs no-display,  "note 550972
      shoart   for glpca-shoart no-display,  "note 550972
      sfarea   for glpca-sfarea no-display,  "note 550972
      docct    for glpca-docct,
      docnr    for glpca-docnr,
      refdocct for glpca-refdocct,
      refdocnr for glpca-refdocnr,
      werks    for glpca-werks,
      repmatnr for glpca-rep_matnr matchcode object pca_shlp_rep_matnr,
      rscope   for glpca-rscope.
    parameters: no_rrint no-display default ' '." skip       "MICP40K066037
    " report-report-interface
    display variant                                       ">>MICP40K039857
    selection-screen begin of block 0 with frame title text-e01.
    parameters: p_vari like disvariant-variant.
    selection-screen comment 47(40) varname for field p_vari.
    selection-screen end of block 0.
    parameters log_grp(4) type c no-display default 'KE5Z'.
    "<<MICP40K039857
    ranges: v_racct  for glpca-racct,
            v_prctr  for glpca-rprctr,
            v_pprctr for glpca-sprctr.
    Tabelle mit Werten aus den Berichts-Set vom Report-Writer           *
    data  begin of val_tab occurs 50.
            include structure rgciv.
    data  end of val_tab.
           MICP30K166368
    feldkatalog und interface für bb-schnittstelle rw        MICP30K166368
           MICP30K166368
    "MICP30K166368
    data  begin of bbs_fieldtab occurs 20. "MICP30K166368
            include structure rstifields.  "MICP30K166368
    data  end of bbs_fieldtab.             "MICP30K166368
    archiv
    type-pools: rsds.
    types:      begin of ty_archive_objects,
                   object       like arch_obj-object,
                end   of ty_archive_objects,
                ty_t_archive_objects type ty_archive_objects occurs 2.
    constants:  lc_set          type  c           value 'X',
                lc_report       type  progname    value 'KE5Z',
                lc_reporttype   type  reporttype  value 'TR'.
    tables:     admi_files.
    select-options lr_files for admi_files-archiv_key no-display.
    parameter:  read_db       type c            default 'X' no-display,
                read_ar       type c                        no-display,
                arc_obj       like arch_obj-object          no-display,
                read_as       type c            default 'X' no-display.
    data  :     lt_arch_obj     type ty_t_archive_objects with header line,
                ls_selections   type rsds_frange,
                lt_selections   type rsds_frange_t,
                ls_selopt type rsdsselopt,
                lt_glpca_archiv type ecarc_t_glpca_curr.
    *********************************************************>>MICP40K039857
    INITIALIZATION
    initialization.
    Diverse Initialisierungen
      perform init_vars.
      g_repid = sy-repid.
    Set default values for record type
      rrcty-sign = 'I'.
      rrcty-option = 'EQ'.
      rrcty-low    = '0'.
      append rrcty.
      rrcty-low = '2'.
      append rrcty.
    Set default values for period and year (if kokrs or bukrs is known)
      get parameter id 'BUK' field bukrs-low.
      get parameter id 'CAC' field kokrs-low.
      if     kokrs-low is initial       "get contr. area from company code
         and not bukrs-low is initial.
        call function 'KOKRS_GET_FROM_BUKRS'
          exporting
            i_bukrs        = bukrs-low
          importing
            e_kokrs        = kokrs-low
          exceptions
            no_kokrs_found = 1
            others         = 2.
        if sy-subrc <> 0.
          clear kokrs-low.
        endif.
      endif.
      if not kokrs-low is initial.
        call function 'K_KOKRS_READ'       "get fiscal year variant
             exporting
                  kokrs           = kokrs-low
              importing
                  e_tka01         = tka01
            exceptions
                  not_found       = 1
                  not_found_gjahr = 2
                  others          = 3.
        if sy-subrc = 0.
          call function 'G_PERIOD_GET'
            exporting
              date                           = sy-datlo
              variant                        = tka01-lmona
            importing
              period                         = poper-low
              year                           = ryear-low
            exceptions
              ledger_not_assigned_to_company = 1
              period_not_defined             = 2
              variant_not_defined            = 3
              others                         = 4.
          if sy-subrc = 0.
            poper-sign = 'I'.
            poper-option = 'EQ'.
            append poper.
            ryear-sign = 'I'.
            ryear-option = 'EQ'.
            append ryear.
          endif.
        endif.
      endif.
    Settings for display variants
      g_save = 'A'.  "Schalter Varianten benutz./allg. speichern
      clear g_variant.
      g_variant-report = g_repid.
      g_variant-log_group = log_grp.
      g_variant-username = sy-uname.
    Get default variant
      gx_variant = g_variant.
      call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
        exporting
          i_save     = g_save
        changing
          cs_variant = gx_variant
        exceptions
          not_found  = 2.
      if sy-subrc = 0.
        p_vari = gx_variant-variant.
      endif.
    Set variant
      if p_vari is initial.
        p_vari = '1SAP'.
        move p_vari to gx_variant-variant.
        call function 'REUSE_ALV_VARIANT_EXISTENCE'
          exporting
            i_save     = g_save
          changing
            cs_variant = gx_variant
          exceptions
            not_found  = 1.
        if sy-subrc ne 0.
          clear p_vari.
          clear gx_variant-variant.
        endif.
      endif.
      varname = gx_variant-text.
      "<<MICP40K039857
    archiv
      call function 'KARL_DATA_INPUT_INIT'
        exporting
          i_report     = lc_report
          i_reporttype = lc_reporttype
        importing
          e_xusedb     = read_db
          e_xusear     = read_ar
          e_archobj    = arc_obj
          e_infosys    = read_as
        tables
          t_arch_sel   = lr_files.
      data: lt_excluding like sy-ucomm occurs 0 with header line.
      call function 'RS_SET_SELSCREEN_STATUS'
        exporting
          p_status  = 'SELSCREEN'
          p_program = 'RCOPCA02'
        tables
          p_exclude = lt_excluding.
    Initialisieren der Bericht/Bericht-Schnittstellen                   *
      data: ld_no_rrint type boole_d.      "note 490484 begin
      import rri = ld_no_rrint from memory id 'RCOPCA02_NO_RRI'.
      if ld_no_rrint = 'X'.
        free memory id 'RCOPCA02_NO_RRI'.
      else.                                "note 490484 end
        call function 'G_REPORT_INTERFACE_INIT'   "Report-Writer?
            exporting                      "MICP30K166368
                 table = 'GLPCT'           "MICP30K166368
             importing
                 subrc = rw_subrc          "MICP30K166368
            tables                         "MICP30K166368
                 it_fieldr = bbs_fieldtab. "MICP30K166368
        call function 'RSTI_APPL_STACK_POP'"oder Recherche?
             importing
                  i_rec                      = a_rec
             exceptions
                  appl_stack_not_initialized = 1.
        re_subrc = sy-subrc.
        if re_subrc = 0.
       check Receiver is this report
          if not ( ( a_rec-rtool = 'RT' and a_rec-ronam = 'RCOPCA02' )
                   or ( a_rec-rtool = 'TR' and a_rec-ronam = 'KE5Z' ) ) .
            re_subrc = 2.
          endif.
        endif.
      endif.
    AT SELCTION-SCREEN on value request**********************************
    *at selection-screen on value-request for racct-low.          "RD "4.6a
                                                                "RD "4.6a
    call function 'K_RACCT_VALUE_REQUEST'                       "RD "4.6a
         importing                                              "RD "4.6a
              e_racct      = racct-low.                         "RD "4.6a
                                                                "RD "4.6a
                                                                "RD "4.6a
    *at selection-screen on value-request for racct-high.         "RD "4.6a
                                                                "RD "4.6a
    call function 'K_RACCT_VALUE_REQUEST'                       "RD "4.6a
         importing                                              "RD "4.6a
              e_racct      = racct-high.                        "RD "4.6a
    at selection-screen on value-request for p_vari.         "MICP40K039857
      perform f4_for_variant.              "MICP40K039857
    at selection-screen on value-request for poper-low.         "RD "4.6a
    begin of insertion note 522715
      call function 'K_KOKRS_READ'
        exporting
          kokrs           = kokrs-low
        exceptions
          not_found       = 1
          not_found_gjahr = 2
          others          = 3.
      if sy-subrc = 0.
    end of insertion note 522715
        call function 'ECPCA_RPMAX_VALUE_REQUEST'               "RD "4.6a
             exporting                                          "RD "4.6a
                  i_kokrs     = kokrs-low                       "RD "4.6a
                  i_ryear     = ryear-low                       "RD "4.6a
             importing                                          "RD "4.6a
                  e_rpmax     = poper-low                       "RD "4.6a
    begin of insertion note 522715
             exceptions
                  table_empty = 1.
      endif.
    end of insertion note 522715
    at selection-screen on value-request for poper-high.        "RD "4.6a
    begin of insertion note 522715
      call function 'K_KOKRS_READ'
        exporting
          kokrs           = kokrs-low
        exceptions
          not_found       = 1
          not_found_gjahr = 2
          others          = 3.
      if sy-subrc = 0.
    end of insertion note 522715
        call function 'ECPCA_RPMAX_VALUE_REQUEST'               "RD "4.6a
             exporting                                          "RD "4.6a
                  i_kokrs     = kokrs-low                       "RD "4.6a
                  i_ryear     = ryear-low                       "RD "4.6a
             importing                                          "RD "4.6a
                  e_rpmax     = poper-high                      "RD "4.6a
    begin of insertion note 522715
             exceptions
                  table_empty = 1.
      endif.
    end of insertion note 522715
    AT SELCTION-SCREEN ***************************************************
    at selection-screen.
      perform pai_of_selection_screen.
    begin of insertion note 522715
      if not kokrs-low is initial.
        call function 'K_KOKRS_READ'
          exporting
            kokrs           = kokrs-low
          exceptions
            not_found       = 1
            not_found_gjahr = 2
            others          = 3.
        if sy-subrc <> 0.
          message e101(ki) with kokrs-low.
        endif.
      endif.
    end of insertion note 522715
    archiv
      if sy-ucomm = 'FC01' or sy-ucomm = 'UCDS'
        or sy-ucomm = 'ONLI' and read_ar = 'X'
        and read_as is initial and lr_files[] is initial.
        if lt_arch_obj[] is initial.
          lt_arch_obj-object = 'PCA_OBJECT'. append lt_arch_obj.
          lt_arch_obj-object = 'EC_PCA_ITM'. append lt_arch_obj.
        endif.
        call function 'KARL_DATA_INPUT_SELECT'
          exporting
            i_db_and_arc       = lc_set
            i_infosys_possible = lc_set
            i_object_fixed     = 'V'
            i_documentation    = 'KARL_DATA_INPUT_SEL_KE5YZ'
            i_report           = lc_report
            i_reporttype       = lc_reporttype
          tables
            t_objects          = lt_arch_obj
            t_arch_sel         = lr_files
          changing
            c_xusedb           = read_db
            c_xusear           = read_ar
            c_archobj          = arc_obj
            c_infosys          = read_as.
      endif.
    START-OF-SELECTION **************************************************
    start-of-selection.
      Default-Werte löschen, falls Aufruf über Recherche
      oder Report-Writer erfolgt ist
      if no_rrint is initial and ld_no_rrint is initial.        "note 490484
        if rw_subrc eq 0 or re_subrc eq 0.
          refresh: rldnr, rrcty, rvers,  kokrs, bukrs, poper,  ryear,
                   racct, prctr, pprctr, drcrk, activ, rhoart, rfarea,
                   versa, afabe, eprctr,
                   v_racct, v_prctr, v_pprctr.
          clear:   rldnr, rrcty, rvers,  kokrs, bukrs, poper,  ryear,
                   racct, prctr, pprctr, drcrk, activ, rhoart, rfarea,
                   versa, afabe, eprctr,
                   v_racct, v_prctr, v_pprctr.
        endif.
    Parameter einlesen über Report-Writer-Schnittstelle                 *
        if rw_subrc eq 0.
          perform rw_get_parameters.
    oder Parameter einlesen über Recherche-Schnittstelle                *
        elseif re_subrc eq 0.
          perform re_get_parameters.
        endif.
      endif.
      if read_db = 'X'.                     " read from DB (archiv)
    Bewegungsdaten einlesen und puffern...................................
        call function 'SAPGUI_PROGRESS_INDICATOR'
          exporting
            text = 'Einzelposten selektieren'(p10).
    Use dirty trick to mislead DB-optimizer
        call function 'DB_DO_NOT_USE_CLIENT_INDEX'
          exporting
            value    = sy-mandt
          tables
            mandttab = rclnt.
        select (tab_fields) from glpca
           client specified
           package size packsize
          APPENDING CORRESPONDING FIELDS OF TABLE i_glpcaO
            into corresponding fields of table i_glpca
           where rldnr     in rldnr
             and rrcty     in rrcty
             and rvers     in rvers
             and kokrs     in kokrs
             and rbukrs    in bukrs
             and ryear     in ryear
             and rassc     in rassc
             and hrkft     in hrkft   "note 550972
             and sbukrs    in sbukrs  "note 550972
             and shoart    in shoart  "note 550972
             and sfarea    in sfarea  "note 550972
             and racct     in racct
             and rprctr    in prctr
             and sprctr    in pprctr
             and poper     in poper
             and drcrk     in drcrk
             and activ     in activ
             and rhoart    in rhoart
             and rfarea    in rfarea
             and versa     in versa
             and eprctr    in eprctr
             and afabe     in afabe
             and rmvct     in rmvct
             and docct     in docct
             and docnr     in docnr
             and stagr     in stagr
             and rtcur     in rtcur
             and runit     in runit
             and refdocct  in refdocct
             and refdocnr  in refdocnr
             and werks     in werks
             and rep_matnr in repmatnr       "RDIP40K020663
             and rscope    in rscope         "RDIP40K020663
          and rclnt     in rclnt.       "dirty trick to mislead DB-optimizer
          if sy-dbcnt > 1.
            text1 = sy-dbcnt.
            condense text1.
            concatenate text1 text-m01 into text2 separated by space.
            call function 'SAPGUI_PROGRESS_INDICATOR'
              exporting
                text = text2.          " ... Datensätze gelesen
          endif.
        endselect.
    Entfernt nicht zugehörige Einträge....................................
        loop at i_glpca where ( not rprctr in v_prctr  )
                           or ( not sprctr in v_pprctr )
                           or ( not racct  in v_racct  ).
          delete i_glpca.
        endloop.
      endif.
    *archiv
      if read_ar = 'X' and not
        ( read_as is initial and lr_files[] is initial ).
        call function 'SAPGUI_PROGRESS_INDICATOR'
          exporting
            text = 'Lesen im Archiv'(p12).
        define fill_lt_selections.
          if not &2[] is initial.
            clear ls_selections.
            move &1 to ls_selections-fieldname.
            loop at &2.
              clear ls_selopt.
              move-corresponding &2 to ls_selopt.
              append ls_selopt to ls_selections-selopt_t.
            endloop.
            append ls_selections to lt_selections.
          endif.
        end-of-definition.
        fill_lt_selections 'RLDNR'  rldnr.
        fill_lt_selections 'RRCTY'  rrcty.
        fill_lt_selections 'RVERS'  rvers.
        fill_lt_selections 'KOKRS'  kokrs.
        fill_lt_selections 'RBUKRS' bukrs.
        fill_lt_selections 'POPER'  poper.
        fill_lt_selections 'RYEAR'  ryear.
        fill_lt_selections 'RPRCTR' prctr.
        fill_lt_selections 'SPRCTR' pprctr.
        fill_lt_selections 'RACCT'  racct.
        fill_lt_selections 'DRCRK'  drcrk.
        fill_lt_selections 'ACTIV'  activ.
        fill_lt_selections 'RHOART' rhoart.
        fill_lt_selections 'RFAREA' rfarea.    "note 401961
        fill_lt_selections 'STAGR'  stagr.
        fill_lt_selections 'RTCUR'  rtcur.
        fill_lt_selections 'RUNIT'  runit.
        fill_lt_selections 'VERSA'  versa.
        fill_lt_selections 'EPRCTR' eprctr.
        fill_lt_selections 'AFABE'  afabe.
        fill_lt_selections 'RMVCT'  rmvct.
        fill_lt_selections 'DOCCT'  docct.
        fill_lt_selections 'DOCNR'  docnr.
        fill_lt_selections 'REFDOCCT' refdocct.
        fill_lt_selections 'REFDOCNR' refdocnr.
        fill_lt_selections 'WERKS'  werks.
        fill_lt_selections 'REP_MATNR' repmatnr.
        fill_lt_selections 'RSCOPE' rscope.
        fill_lt_selections 'HRKFT'  hrkft.   "note 550972
        fill_lt_selections 'SBUKRS' sbukrs.  "note 550972
        fill_lt_selections 'SHOART' shoart.  "note 550972
        fill_lt_selections 'SFAREA' sfarea.  "note 550972
        call function 'EC_PCA_SELECT_FROM_ARCHIVE'
          exporting
            i_selections            = lt_selections[]
            i_files_sequential_read = lr_files[]
          importing
            e_glpca                 = lt_glpca_archiv[]
          exceptions
            no_infostruc_found      = 1.
        if sy-subrc = 1.
          message id sy-msgid type 'I' number sy-msgno
                  with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        endif.
        clear i_glpca.
        loop at lt_glpca_archiv assigning  to i_glpca.
          append i_glpca.
        endloop.
      endif.
      if i_glpca[] is initial.         "Info,nichts gefunden
        message s000.
        exit.
      endif.
    get texts for accounts ...............................................
      sort i_glpca by kokrs racct.
      loop at i_glpca assigning -racct_ktext = ls_rpcak-ktext.
      endloop.
    Liste mit Einzelposten geeignet sortieren.............................
      call function 'SAPGUI_PROGRESS_INDICATOR'
        exporting
          text = 'Einzelposten sortieren'(p30).
    if show_ref is initial.
       sort i_glpca by rldnr ryear rbukrs rrcty rvers
                       docct docnr docln.
    else.
      sort i_glpca by rldnr kokrs ryear rbukrs rrcty rvers poper
                      refdocct refdocnr refdocln.
    endif.
    Berechtigungsprüfung und gemerkte Belege aufbereiten .................
      call function 'SAPGUI_PROGRESS_INDICATOR'
        exporting
          text = 'Berechtigungsprüfungen'(p40).
      clear: cnt_rldnr, cnt_kokrs, cnt_ryear, cnt_rvers, cnt_bukrs.
      loop at i_glpca assigning .
      Berechtigungscheck
        perform check_repo_authority changing authorised.
        if authorised is initial.
          delete i_glpca.
          s_message = 'X'.
        zählen der Sätze ohne Berechtigung
          auth_dbcount = auth_dbcount + 1.
        else. "Weitere Bearbeitung nur für berechtigte Belege...
        Zusätzlich merken der Anzahl der Ausprägungen
        bestimmter Dimensionen
          on change of -rbukrs
                ct       = '10'
              importing
                currency = hsl_curr.
          endon.
        externe Immobilienbezeichnung                     "ww/kb
        on change of i_glpca-imkey.
          if ( not -dabrz
                    I_length   = 20
                 importing
                      e_empge    = -konty.
            endif.
          CONCATENATE I_GLPCA-KONTY I_GLPCA-EMPGE INTO I_GLPCA-IMBEZ.
          endif.
        endon.
        on change of i_glpca-dabrz.
           call function 'REMD_IMKEY_TO_EMPGE'
                exporting
                     i_imkey    = i_glpca-imkey
                     i_dabrz    = i_glpca-dabrz
                    i_length   = 20
                importing
                     e_empge    = i_glpca-empge
                     e_konty    = i_glpca-konty.
          CONCATENATE I_GLPCA-KONTY I_GLPCA-EMPGE INTO I_GLPCA-IMBEZ.
         endon.
        Konvertierungsproblem mit PSP-Nummer bereinigen
          if not -psppp.
            endif.
          endif.
        Währungen in Hilfsfeldern speichern
          if -ksl_curr = ksl_curr.
          endif.
        modify i_glpca.
        endif.
      endloop.
    Nachricht, wenn nicht alle Einzelposten angezeigt werden.
      if not s_message is initial.
        message s407(km) with auth_dbcount.
      endif.
    EP ausgeben...........................................................
      call function 'SAPGUI_PROGRESS_INDICATOR'
        exporting
          text = 'Einzelposten ausgeben'(p50).
      t_layout-detail_initial_lines = 'X'.
      t_layout-detail_popup         = 'X'.
      t_layout-f2code               = 'PIC1'.                "MICP40K039857
      t_layout-get_selinfos         = 'X'.
      t_layout-group_change_edit    = 'X'.                   "note 576149
      perform fill_listheader.
      perform fieldcat_fill.
      perform spec_groups_fill.
      perform events_fill.                 "MICP40K039857
      ">>MICP40K039857
    call function 'K_KKB_LIST_DISPLAY'
          exporting
               i_callback_program       = 'RCOPCA02'
               i_callback_user_command  = 'USR_CMD'
               i_callback_top_of_page   = 'TOP_OF_PAGE'
              I_CALLBACK_END_OF_PAGE   =
              I_CALLBACK_END_OF_LIST   =
               i_callback_pf_status_set = 'SET_PF_STATUS'
              I_CALLBACK_LAYOUT_SAVE   =
              I_CALLBACK_FIELDCAT_SAVE =
               i_tabname                = 'I_GLPCA'
               is_layout                = t_layout
               it_fieldcat              = t_fieldcat
              I_FCTYPE                 = 'R'
              IT_EXCLUDING             =
               it_special_groups        = t_spec_groups
              IT_SORT                  =
              IS_SEL_HIDE              =
              I_SCREEN_START_COLUMN    = 0
              I_SCREEN_START_LINE      = 0
              I_SCREEN_END_COLUMN      = 0
              I_SCREEN_END_LINE        = 0
          tables
               t_outtab                 = i_glpca
          exceptions
               others                   = 1.
    loop at i_glpca.
    select single vbeln auart augru
    into (l_vbeln, l_auart, l_augru)
    from vbak where vbeln = i_glpca-aubel.
    if sy-subrc = 0.
    move l_auart to i_glpca-v_auart.
    move l_augru to i_glpca-v_augru.
    modify i_glpca.
    endif.
    endloop.
      call function 'REUSE_ALV_GRID_DISPLAY'
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
         exporting
            I_INTERFACE_CHECK        = ' '
               i_callback_program       = 'ZRCOPCA02'
               i_callback_pf_status_set = 'SET_PF_STATUS'
               i_callback_user_command  = 'USR_CMD'
               i_structure_name         = 'I_GLPCA'
               is_layout                = t_layout
               it_fieldcat              = t_fieldcat
            IT_EXCLUDING             =
               it_special_groups        = t_spec_groups
            IT_SORT                  =
            IT_FILTER                =
            IS_SEL_HIDE              =
               i_default                = 'X'
               i_save                   = g_save
               is_variant               = g_variant
               it_events                = t_events
            IT_EVENT_EXIT            =
            IS_PRINT                 =
            I_SCREEN_START_COLUMN    = 0
            I_SCREEN_START_LINE      = 0
            I_SCREEN_END_COLUMN      = 0
            I_SCREEN_END_LINE        = 0
       IMPORTING
            E_EXIT_CAUSED_BY_CALLER  =
            ES_EXIT_CAUSED_BY_USER   =
          tables
               t_outtab                 = i_glpca
        exceptions
             program_error            = 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.
      "<<MICP40K039857
      clear i_glpca.
    *&      Form  CHECK_REPO_AUTHORITY
    Check only new auth-object K_PCA                                    *
    -->  p1        text
    <--  p2        text
    form check_repo_authority changing authorized like authorised.
    fill structure for userexit in K_PCA_RESP_AUTHORITY_CHECK
      data: auth like pca_i_auth.          "46a MIC check K_PCA and G_GLTP
      auth-bukrs = -rrcty.
      clear authorized.
    check PrCtr/account/activity
      call function 'K_PCA_RESP_AUTHORITY_CHECK'
        exporting
          i_kokrs             = -racct
          i_vorgn             = 'REPP'
          i_actvt             = '28'
          i_auth              = auth
          i_no_dialog_message = 'X'
        exceptions
          no_authority        = 1
          data_missing        = 2
          others              = 3.
      if sy-subrc = 0.                                          "ok
    check ledger/version/record type
        call function 'PCA_G_GLTP_AUTH_CHECK'
          exporting
            rldnr            = -rrcty
          exceptions
            no_authorisation = 1
            others           = 2.
        if sy-subrc = 0.                   "ok, User is authorized
          authorized = 'X'.
        endif.
      endif.
    endform.                               " CHECK_REPO_AUTHORITY
    *&      Form  INIT_VARS
          Initialisieren diverser Hilfsvariablen und -tabellen           *
    form init_vars.
      data begin of nametab occurs 80. "Tabelle mit Feldern aus der RPCA2
              include structure dntab.
      data end of nametab.
      select single * from t000
                      client specified
                      where mandt = sy-mandt.
      refresh nametab.
      call function 'NAMETAB_GET'
        exporting
          only    = 'T'
          tabname = 'RPCA2'
        tables
          nametab = nametab.
    Übernehmen der Feldnamen, die auch in der GLPCA
    vorkommen.
      loop at nametab where fieldname ne 'KSL_CURR'
                        and fieldname ne 'HSL_CURR'
                        and fieldname ne 'EMPGE'               "ww/kb
                        and fieldname ne 'KONTY'.              "ww/kb
        move nametab-fieldname to tab_fields-name.
        append tab_fields.
      endloop.
    fill Fields of receiver for BBS                          "MIC46C
      call function 'RSTI_REPORT_FIELDS_FIND'
        exporting
          e_repid   = 'RCOPCA02'
          e_type    = 'R'
        tables
          it_fields = bbs_fieldtab.
    correct fieldnames
      read table bbs_fieldtab with key rfield = 'PRCTR'.
      if sy-subrc = 0.
        bbs_fieldtab-rfield = 'RPRCTR'.
        modify bbs_fieldtab index sy-tabix.
      endif.
      read table bbs_fieldtab with key rfield = 'PPRCTR'.
      if sy-subrc = 0.
        bbs_fieldtab-rfield = 'SPRCTR'.
        modify bbs_fieldtab index sy-tabix.
      endif.
      read table bbs_fieldtab with key rfield = 'BUKRS'.
      if sy-subrc = 0.
        bbs_fieldtab-rfield = 'RBUKRS'.
        modify bbs_fieldtab index sy-tabix.
      endif.
    Unicode
      class cl_abap_char_utilities definition load.
      clear hex00 with cl_abap_char_utilities=>minchar.
      clear hexff with cl_abap_char_utilities=>maxchar.
    endform.                               " INIT_VARS
          FORM FILL_LISTHEADER                                          *
          List-Header in Abhängigkeit der selektierten Daten            *
    form fill_listheader.
      read table i_glpca index 1.
      if sy-subrc ne 0.
        exit.
      endif.
      t_listheader-typ  = 'S'.
      t_listheader-key  = 'Ledger              '(h01).
      if cnt_rldnr <= 1.
        t_listheader-info = i_glpca-rldnr.
      else.
        t_listheader-info = '*'.
      endif.
      append t_listheader.
      t_listheader-typ  = 'S'.
      t_listheader-key  = 'Kostenrechnungskreis'(h02).
      if  cnt_kokrs <= 1.
        t_listheader-info = i_glpca-kokrs.
      else.
        t_listheader-info = '*'.
      endif.
      append t_listheader.
      t_listheader-typ  = 'S'.
      t_listheader-key  = 'Buchungskreis       '(h03).
      if cnt_bukrs <= 1.
        t_listheader-info = i_glpca-rbukrs.
      else.
        t_listheader-info = '*'.
      endif.
      append t_listheader.
      t_listheader-typ  = 'S'.
      t_listheader-key  = 'Buchungsperiode     '(h04).
      if cnt_poper <= 1.
        t_listheader-info = i_glpca-poper.
      else.
        t_listheader-info = '*'.
      endif.
      append t_listheader.
      if cnt_ryear <= 1.
        t_listheader-typ  = 'S'.
        t_listheader-key  = 'Geschäftsjahr       '(h05).
        t_listheader-info = i_glpca-ryear.
        append t_listheader.
      endif.
      t_listheader-typ  = 'S'.
      t_listheader-key  = 'Version             '(h06).
      if cnt_rvers <= 1.
        t_listheader-info = i_glpca-rvers.
      else.
        t_listheader-info = '*'.
      endif.
      append t_listheader.
    endform.                    "fill_listheader
    *&      Form  FIELDCAT_FILL
    *&      Aufbau des Feldkataloges für den K_KKB_LIST_DISPLAY,           *
    *&      bzw REUSE_ALV_LIST_DISPLAY,                                    *
    *&      weitere Infos enthält die FktBaustein-Doku                     *
    form fieldcat_fill.
      data: i type i value 0.
      refresh t_fieldcat.
    Ledger
    if cnt_rldnr > 1.
      add 1 to i.
      clear afield.
      afield-col_pos     = i.
      afield-fieldname   = 'RLDNR'.
      afield-no_sum      = 'X'.
      afield-no_out      = 'X'.
      afield-key         = 'X'.
      afield-ref_tabname = 'GLPCA'.
      afield-sp_group    = '1'.
      append afield to t_fieldcat.
    endif.
    Satzart
      add 1 to i.
      clear afield.
      afield-col_pos     = i.
      afield-fieldname   = 'RRCTY'.
      afield-no_sum      = 'X'.
      afield-ref_tabname = 'GLPCA'.
      afield-no_out      = 'X'.
      afield-sp_group    = '1'.
      append afield to t_fieldcat.
    Version
    if cnt_rvers > 1.
      add 1 to i.
      clear afield.
      afield-col_pos     = i.
      afield-fieldname   = 'RVERS'.
      afield-no_sum      = 'X'.
      afield-ref_tabname = 'GLPCA'.
      afield-no_out      = 'X'.
      afield-sp_group    = '1'.
      append afield to t_fieldcat.
    endif.
    Periode
    if cnt_poper > 1.
      add 1 to i.
      clear afield.
      afield-col_pos     = i.
      afield-fieldname   = 'POPER'.
      afield-no_sum      = 'X'.
      afield-ref_tabname = 'GLPCA'.
      afield-no_out      = 'X'.
      afield-sp_group    = '1'.
      append afield to t_fieldcat.
    endif.
    Geschäftsjahr
    if cnt_ryear > 1.
      add 1 to i.
      clear afield.
      afield-col_pos     = i.
      afield-fieldname   = 'RYEAR'.
      afield-no_sum      = 'X'.
      afield-ref_tabname = 'GLPCA'.
      afield-no_out      = 'X'.
      afield-sp_group    = '1'.
      append afield to t_fieldcat.
    endif.
    Referenzbelegtyp
      add 1 to i.
      clear afield.
      afield-col_pos     = i.
      afield-fieldname   = 'REFDOCCT'.
      afield-ref_tabname = 'GLPCA'.
      afield-key_sel     = 'X'.
      afield-no_sum      = 'X'.
      afield-sp_group    = '2'.
      afield-seltext_s   = 'Typ'(t01).
      afield-seltext_m   = 'Belegtyp'(t02).
      afield-seltext_l   = 'Ref.Belegtyp'(t03).
      afield-outputlen   = 3. "Platz für die Sterne der Zwischensummen
    if not show_ref is initial.
      afield-key = 'X'.
    else.
       afield-no_out = 'X'.
    endif.
      append afield to t_fieldcat.
    Referenzbelegnummer
      add 1 to i.
      clear afield.
      afield-col_pos     = i.
      afield-fieldname   = 'REFDOCNR'.
      afield-ref_tabname = 'GLPCA'.
      afield-key_sel     = 'X'.
      afield-no_sum      = 'X'.
      afield-sp_group    = '2'.
      afield-seltext_s  = 'Refbeleg'(t04).
      afield-seltext_m  = 'Refbelegnr'(t05).
      afield-seltext_l  = 'Ref.Belegnummer'(t06).
    if not show_ref is initial.
      afield-key = 'X'.
    else.
       afield-no_out = 'X'.
    endif.
      append

    Hi Prabhu,
    You are right, problem is with Field Catalog...
    When I use  FM 'REUSE_ALV_GRID_DISPLAY'  it is dumping...
    When i tried with FM 'REUSE_ALV_LIST_DISPLAY'  it is working perfectly....
    how can i use FM 'REUSE_ALV_GRID_DISPLAY' without dumping????
    do i need to pass any thing in FM????
    Here is the dump:
    Runtime Errors         MESSAGE_TYPE_X                                
           Occurred on     12/21/2006 at 01:03:24                                                                               
    The current application triggered a termination with a short dump.   
                                                             What happened?                                                       
    The current application program detected a situation which really    
    should not occur. Therefore, a termination with a short dump was     
    triggered on purpose by the key word MESSAGE (type X).               
                                                         Error analysis                                                       
    Short text of error message:                                                                               
    Technical information about the message:                             
    Message classe...... "0K "                                           
    Number.............. 000 
    User, transaction...                                                                               
    Language key........ "E"                                                    
    Transaction......... "SE38 "                                                
    Program............. "SAPLSLVC "                                            
    Screen.............. "SAPLSLVC_FULLSCREEN 0500"                             
    Screen line......... 3                                                                               
    Information on where termination occurred                                                                               
    The termination occurred in the ABAP program "SAPLSLVC " in "LINE_OUT_NEW_2".
    The main program was "ZRCOPCA02 ".                                          
    The termination occurred in line 918 of the source code of the (Include)    
    program "LSLVCF01 "                                                        
    of the source code of program "LSLVCF01 " (when calling the editor 9180).   
                                                             Source code extract                                                                               
    008880         gs_roid-row_id = rs_row-index * -1.                          
    008890       endif.                                                         
    008900       gs_roid-sub_row_id = rs_row-rowtype+7(10).                     
    008910       gs_poid-row_id = gs_roid-row_id.                               
    008920       gs_poid-sub_row_id = gs_roid-sub_row_id.                       
    008930       gs_poid-rowtype    = rs_row-rowtype.                           
    008940       gs_poid-index      = rs_row-index.                             
    008950       insert gs_poid into table rt_poid.  
    008960     endif.                                                               
    008970     append gs_roid to rt_roid.                                           
    008980                                                                          
    008990     loop at rt_fieldcat assigning <ls_fieldcat> where tech ne 'X' and    
    009000                                                       no_out ne 'X'.     
    009010                                                                          
    009020       if gflg_invisible = 'X'.                                           
    009030         if <ls_fieldcat>-do_sum is initial.                              
    009040           clear gflg_invisible.                                          
    009050           continue.                                                      
    009060         else.                                                            
    009070           clear g_col_counter.                                           
    009080           clear gflg_invisible.                                          
    009090         endif.                                                           
    009100       endif.                                                             
    009110                                                                          
    009120       clear gs_lvc_data.                                                 
    009130       clear g_style.                                                     
    009140                                                                          
    009150       assign component                                                   
    009160              <ls_fieldcat>-fieldname of structure rt_data to <g_field>.  
    009170       if sy-subrc ne 0.                                                  
         >         message x000(0k).                                                
    009190       endif.                                                             
    009200                                                                          
    009210       g_col_counter = g_col_counter + 1.                                 
    009220                                                                          
    009230       gs_lvc_data-row_pos = r_row_counter.                               
    009240       gs_lvc_data-col_pos = g_col_counter.                               
    009250       gs_lvc_data-row_id  = gs_roid-row_id.                              
    009260       gs_lvc_data-sub_row_id = gs_roid-sub_row_id.                       
    009270                                                                          
    009280   *   Endtotal and average                                               
    009290       if rs_row-rowtype(1) ca 'T' and <ls_fieldcat>-do_sum = 'C'.        
    009300   *     save the actual grouplevel information                    
    009310         gs_grouplevels = rs_grouplevels.                          
    009320         clear g_lines.                                            
    009330                                                                   
    009340   *     get number of lines of the collect table                  
    009350         describe table rt_data lines g_lines.                     
    009360   *     if there is only one line or the field has no references so
    009370   *     that only the first line has to be considered                                                                               
    Thanks,
    fractal
    null

  • How to do the ALV report output in groups and caluculate the tOTALS(URGENT

    Hi
    In my ALV report output .I have to group the output based on the DAYS field
    0-10 days in one group
    10-30 days in one group
    above 30 days one group
    There is also a field by name "AMOUNT" in my output.
    I have to calculate SUBTOTALs at the end of every group and at the end of the report i should caluculate GRAND TOTAL.
    Please remember that i should not use any any BLOCKED ALVs and for Totals i should not use the SYMBOLS provided in the application toolbar of the report
    Thanks in Advance

    Please don't repost your questions...
    Check out my answer in your other post.
    How to make the ALV report in groups  and caluculate the TOTALS
    Regards,
    Naimesh Patel

  • Printing logo with ALV report output?

    Hi all,
    I have written a sinple program to display a report output in ALV grid format and inserted a logo in it usingh standrad FM. Though the logo is inserted successfully displaying with list ,  but  when i am clicking on print preview the logo is missing.
    Please help me on how to print the logo with the list?
    Thanks,
    Vamshi.

    Hi Krishna,
    -->Firstly go to T-Code OAER.
    -->Give Class Name as PICTURES
    -->Give Class Type as OT
    -->Give Object Key as(watever the name you wish to give)
    -->Example key 1000
    -->Click on Execute.
    Here you will get Standard Document Types.
    Select which ever you want i.e., Attachment,Screen,Template ,etc.
    Double click on Attchment it will ask you the File on the Desktop.
    Upload the image.
    Now you can see the Image in the Folder PICTURES.
    Now go to the Report.
    Function Module 'REUSE_ALV_COMMENTARY_WRITE'.
                             i_logo = '1000'.
    Hope this will Help you.
    With Regards,
    Sharmishta.

  • Report output to convert to pdf and mail it to recepient

    Hi
    I'm using the below coding for converting the output of the program to pdf and then mail it to the recepient.The coding works for background processsing only can i do the same for online.In the write statement i'm using the sy-repid my program name and when i get the pdf mail i'm getting the name of the program but instead i need to get the output of my program.Can any one help me in correcting the coding to get the output in pdf format.I know where i'm going wrong but this is the first time i'm working with this so new to this....It would be better if i could run the program and get the convertions into pdf through mail instead of background processing.....Please change the coding below to get the same.....
    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 sy-repid.
      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         = 'Branch Revenue'.
      gd_attachment_desc = 'Branch Revenue'.
    CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
      it_mess_bod        = 'Branch Revenue,Profit and Commissions'.
      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
                                          'Branch Revenue'
                                          '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.
    Thanks in advance.....

    Hi
      Below is the code I was used to convert the sap script( Sales Order) to convert to PDf and send as an attachment.
    Dev/UDD Id :  EUR-770416                                             *
    Author     :  M.Sreeram Kumar                                        *
    Date       :  08-Apr-07                                              *
    Request    :  DU1K933766
    Description:  Send an order confirmation to the multiple user in a   *
                  PDF format via Email.                                  *
    Change Log                                                           *
    Author      :                                                        *
    Date        :                                                        *
    Description :                                                        *
    Request     :                                                        *
                 Print of an order confirmation by SAPscript
    REPORT zrep_email LINE-COUNT 100 MESSAGE-ID vn.
    TABLES: komk,                          "Communicationarea for conditions
            komp,                          "Communicationarea for conditions
            komvd,                         "Communicationarea for conditions
            vbco3,                         "Communicationarea for view
            vbdka,                         "Headerview
            vbdpa,                         "Itemview
            vbdpau,                        "Subitemnumbers
            conf_out,                      "Configuration data
            sadr,                          "Addresses
            tvag,                          "Reason for rejection
            vedka,                         "Servicecontract head data
            vedpa,                         "Servicecontract position data
            vedkn,                         "Servicecontract head notice data
            vedpn,                         "Servicecontract pos. notice data
            vbpa,                          "Sales Document: Partner
            kna1,                          "General Data in Customer Master
            riserls,                       "Serialnumbers
            komser,                        "Serialnumbers for print
            tvbur,                         "Sales office
            tvko,                          "Sales organisation
            adrs,                          "Communicationarea for Address
            fpltdr.                        "billing schedules
    INCLUDE zrep_rvadtabl.
    *INCLUDE yzrvadtabl.
    *INCLUDE RVADTABL.
    INCLUDE zrep_rvdirekt.
    *INCLUDE yzrvdirekt.
    *INCLUDE RVDIREKT.
    INCLUDE zrep_vedadata.
    *INCLUDE yzvedadata.
    *INCLUDE VEDADATA.
    DATA: retcode   LIKE sy-subrc.         "Returncode
    DATA: repeat(1) TYPE c.
    DATA: xscreen(1) TYPE c.               "Output on printer or screen
    DATA: BEGIN OF steu,                   "Controldata for output
            vdkex(1) TYPE c,
            vdpex(1) TYPE c,
            kbkex(1) TYPE c,
            kbpex(1) TYPE c,
          END OF steu.
    DATA: BEGIN OF tvbdpa OCCURS 0.        "Internal table for items
            INCLUDE STRUCTURE vbdpa.
    DATA: END OF tvbdpa.
    DATA: BEGIN OF tkomv OCCURS 50.
            INCLUDE STRUCTURE komv.
    DATA: END OF tkomv.
    DATA: BEGIN OF tkomvd OCCURS 50.
            INCLUDE STRUCTURE komvd.
    DATA: END OF tkomvd.
    DATA: BEGIN OF tvbdpau OCCURS 5.
            INCLUDE STRUCTURE vbdpau.
    DATA: END   OF tvbdpau.
    DATA: BEGIN OF tkomcon OCCURS 50.
            INCLUDE STRUCTURE conf_out.
    DATA: END   OF tkomcon.
    DATA: BEGIN OF tkomservh OCCURS 1.
            INCLUDE STRUCTURE vedka.
    DATA: END   OF tkomservh.
    DATA: BEGIN OF tkomservp OCCURS 5.
            INCLUDE STRUCTURE vedpa.
    DATA: END   OF tkomservp.
    DATA: BEGIN OF tkomservhn OCCURS 5.
            INCLUDE STRUCTURE vedkn.
    DATA: END   OF tkomservhn.
    DATA: BEGIN OF tkomservpn OCCURS 5.
            INCLUDE STRUCTURE vedpn.
    DATA: END   OF tkomservpn.
    DATA: BEGIN OF tkomser OCCURS 5.
            INCLUDE STRUCTURE riserls.
    DATA: END   OF tkomser.
    DATA: BEGIN OF tkomser_print OCCURS 5.
            INCLUDE STRUCTURE komser.
    DATA: END   OF tkomser_print.
    DATA: BEGIN OF tfpltdr OCCURS 5.
            INCLUDE STRUCTURE fpltdr.
    DATA: END   OF tfpltdr.
    DATA: pr_kappl(01)   TYPE c VALUE 'V'. "Application for pricing
    DATA: BEGIN OF char_val OCCURS 0,
            atnam LIKE cabn-atnam,
            atwrt LIKE ausp-atwrt,
          END OF char_val.
    FORM entry USING return_code us_screen.
      CLEAR retcode.
      xscreen = us_screen.
      PERFORM processing.
      IF retcode NE 0.
        return_code = 1.
      ELSE.
        return_code = 0.
      ENDIF.
    ENDFORM.                    "ENTRY
          FORM PROCESSING                                               *
    FORM processing.
      PERFORM get_data.
      CHECK retcode = 0.
      PERFORM form_open USING xscreen vbdka-land1.
      CHECK retcode = 0.
      PERFORM logo_selection.
    PERFORM form_title_print.
      CHECK retcode = 0.
      PERFORM write_header_info.
      PERFORM validity_print.
      CHECK retcode = 0.
      PERFORM header_data_print.
      CHECK retcode = 0.
      PERFORM header_serv_print.
      CHECK retcode = 0.
      PERFORM header_notice_print.
      CHECK retcode = 0.
      PERFORM header_inter_print.
      CHECK retcode = 0.
      PERFORM header_text_print.
      CHECK retcode = 0.
      PERFORM item_print.
      CHECK retcode = 0.
      PERFORM end_print.
      CHECK retcode = 0.
      PERFORM form_close.
      CHECK retcode = 0.
      PERFORM zemail_process.
    ENDFORM.                    "PROCESSING
          S U B R O U T I N E S                                         *
          FORM ALTERNATIVE_ITEM                                         *
          A text is printed, if the item is an alternative item.        *
    FORM alternative_item.
      CHECK vbdpa-grpos CN '0'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ALTERNATIVE_ITEM'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "ALTERNATIVE_ITEM
          FORM CHECK_REPEAT                                             *
          A text is printed, if it is a repeat print for the document.  *
    FORM check_repeat.
      CLEAR repeat.
      SELECT * INTO *nast FROM nast WHERE kappl = nast-kappl
                                    AND   objky = nast-objky
                                    AND   kschl = nast-kschl
                                    AND   spras = nast-spras
                                    AND   parnr = nast-parnr
                                    AND   parvw = nast-parvw
                                    AND   nacha BETWEEN '1' AND '4'.
        CHECK *nast-vstat = '1'.
        repeat = 'X'.
        EXIT.
      ENDSELECT.
    ENDFORM.                    "CHECK_REPEAT
          FORM DELIVERY_DATE                                            *
          If the delivery date in the item is different to the header   *
          date and there are no scheduled quantities, the delivery date *
          is printed in the item block.                                 *
    FORM delivery_date.
      IF vbdka-lfdat =  space AND
         vbdpa-lfdat NE space AND
         vbdpa-etenr_da = space.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_DELIVERY_DATE'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
    ENDFORM.                    "DELIVERY_DATE
          FORM DIFFERENT_CONSIGNEE                                      *
          If the consignee in the item is different to the header con-  *
          signee, it is printed by this routine.                        *
    FORM different_consignee.
      CHECK vbdka-name1_we NE vbdpa-name1_we
        OR  vbdka-name2_we NE vbdpa-name2_we
        OR  vbdka-name3_we NE vbdpa-name3_we
        OR  vbdka-name4_we NE vbdpa-name4_we.
      CHECK vbdpa-name1_we NE space
        OR  vbdpa-name2_we NE space
        OR  vbdpa-name3_we NE space
        OR  vbdpa-name4_we NE space.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_CONSIGNEE'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "DIFFERENT_CONSIGNEE
          FORM DIFFERENT_REFERENCE_NO                                   *
          If the reference number in the item is different to the header*
          reference number, it is printed by this routine.              *
    FORM different_reference_no.
      CHECK vbdpa-vbeln_vang NE vbdka-vbeln_vang
        OR  vbdpa-vbtyp_vang NE vbdka-vbtyp_vang.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_REFERENCE_NO'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "DIFFERENT_REFERENCE_NO
          FORM DIFFERENT_TERMS                                          *
          If the terms in the item are different to the header terms,   *
          they are printed by this routine.                             *
    FORM different_terms.
      DATA: us_vposn   LIKE vedpa-vposn.
      DATA: us_text(1) TYPE c.             "Flag for Noticetext was printed
      IF vbdpa-zterm NE vbdka-zterm AND
         vbdpa-zterm NE space.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_TERMS_OF_PAYMENT'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
      IF vbdpa-inco1 NE space.
        IF vbdpa-inco1 NE vbdka-inco1 OR
           vbdpa-inco2 NE vbdka-inco2.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_TERMS_OF_DELIVERY'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        ENDIF.
      ENDIF.
    Print different validity-data for the position
      READ TABLE tkomservp WITH KEY vbdpa-posnr.
      IF sy-subrc EQ 0.
        vedpa = tkomservp.
        IF vedpa-vbegdat NE space       AND
           vedpa-venddat NE space       AND
           NOT vedpa-vbegdat IS INITIAL AND
           NOT vedpa-venddat IS INITIAL.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_TERMS_OF_SERV1'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        ELSEIF vedpa-vbegdat NE space AND
               NOT vedpa-vbegdat IS INITIAL.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_TERMS_OF_SERV2'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        ELSE.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_TERMS_OF_SERV3'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        ENDIF.
      ENDIF.
    Notice-rules for the positions.
      MOVE vbdpa-posnr TO us_vposn.
      CLEAR us_text.
      LOOP AT tkomservpn WHERE vposn = us_vposn.
        vedpn = tkomservpn.
        IF us_text IS INITIAL.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_TERMS_OF_NOTTXT'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
          us_text = charx.
        ENDIF.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'ITEM_TERMS_OF_NOTICE'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDLOOP.
      IF NOT us_text IS INITIAL.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'EMPTY_LINE'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
    ENDFORM.                    "DIFFERENT_TERMS
          FORM END_PRINT                                                *
    FORM end_print.
      PERFORM get_header_prices.
      CALL FUNCTION 'CONTROL_FORM'
        EXPORTING
          command = 'PROTECT'.
      PERFORM header_price_print.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'END_VALUES'.
      CALL FUNCTION 'CONTROL_FORM'
        EXPORTING
          command = 'ENDPROTECT'.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'SUPPLEMENT_TEXT'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "END_PRINT
          FORM FORM_CLOSE                                               *
          End of printing the form                                      *
    FORM form_close.
    CALL FUNCTION 'CLOSE_FORM'
       EXCEPTIONS
         OTHERS = 1.
      CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
      RESULT                         =
      RDI_RESULT                     =
       TABLES
         otfdata                        = t_otfdata
    EXCEPTIONS
      UNOPENED                       = 1
      BAD_PAGEFORMAT_FOR_PRINT       = 2
      SEND_ERROR                     = 3
      SPOOL_ERROR                    = 4
      CODEPAGE                       = 5
       OTHERS                         = 1.
      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 sy-subrc NE 0.
        PERFORM protocol_update.
        retcode = 1.
      ENDIF.
      SET COUNTRY space.
    ENDFORM.                    "FORM_CLOSE
          FORM FORM_OPEN                                                *
          Start of printing the form                                    *
    -->  US_SCREEN  Output on screen                                   *
                     ' ' = printer                                      *
                     'X' = screen                                       *
    -->  US_COUNTRY County for telecommunication and SET COUNTRY       *
    FORM form_open USING us_screen us_country.
      INCLUDE zrep_rvadopfo.
    INCLUDE yzrvadopfo.
    INCLUDE RVADOPFO.
    ENDFORM.                    "FORM_OPEN
          FORM FORM_TITLE_PRINT                                         *
          Printing of the form title depending of the field VBTYP       *
    FORM form_title_print.
      CASE vbdka-vbtyp.
        WHEN 'A'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_A'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'B'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_B'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'C'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_C'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'E'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_E'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'F'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_F'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'G'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_F'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'H'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_H'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'K'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_K'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN 'L'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_L'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        WHEN OTHERS.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TITLE_OTHERS'
              window  = 'TITLE'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
      ENDCASE.
      IF repeat NE space.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'REPEAT'
            window  = 'REPEAT'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
    ENDFORM.                    "FORM_TITLE_PRINT
          FORM GET_DATA                                                 *
          General provision of data for the form                        *
    FORM get_data.
      DATA: us_veda_vbeln     LIKE veda-vbeln.
      DATA: us_veda_posnr_low LIKE veda-vposn.
      CALL FUNCTION 'RV_PRICE_PRINT_REFRESH'
        TABLES
          tkomv = tkomv.
      CLEAR komk.
      CLEAR komp.
      vbco3-mandt = sy-mandt.
      vbco3-spras = nast-spras.
      vbco3-vbeln = nast-objky.
      vbco3-kunde = nast-parnr.
      vbco3-parvw = nast-parvw.
      CALL FUNCTION 'RV_DOCUMENT_PRINT_VIEW'
        EXPORTING
          comwa = vbco3
        IMPORTING
          kopf  = vbdka
        TABLES
          pos   = tvbdpa.
    Fetch servicecontract-data and notice-data for head and position.
      us_veda_vbeln     = vbdka-vbeln.
      us_veda_posnr_low = posnr_low.
      CALL FUNCTION 'SD_VEDA_GET_PRINT_DATA'
        EXPORTING
          i_document_number = us_veda_vbeln
          i_language        = sy-langu
          i_posnr_low       = us_veda_posnr_low
        TABLES
          print_data_pos    = tkomservp
          print_data_head   = tkomservh
          print_notice_pos  = tkomservpn
          print_notice_head = tkomservhn.
      PERFORM get_controll_data.
      PERFORM sender.
      PERFORM check_repeat.
      PERFORM tvbdpau_create.
    ENDFORM.                    "GET_DATA
          FORM GET_ITEM_BILLING_SCHEDULES                               *
          In this routine the billing schedules are fetched from the    *
          database.                                                     *
    FORM get_item_billing_schedules.
      REFRESH tfpltdr.
      CHECK NOT vbdpa-fplnr IS INITIAL.
      CALL FUNCTION 'BILLING_SCHED_PRINTVIEW_READ'
        EXPORTING
          i_fplnr    = vbdpa-fplnr
          i_language = nast-spras
        TABLES
          zfpltdr    = tfpltdr.
    ENDFORM.                    "GET_ITEM_BILLING_SCHEDULES
    *&      Form  ITEM_BILLING_SCHEDULES_PRINT
          This routine prints the billing shedules of a salesdocument    *
          position.                                                      *
    FORM  item_billing_schedules_print.
      DATA: first_line(1) TYPE c.
      first_line = charx.
      LOOP AT tfpltdr.
        fpltdr = tfpltdr.
      Output of the following printlines
        IF NOT fpltdr-perio IS INITIAL.
        periodische Fakturen
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_BILLING_SCHEDULE_PERIODIC'
            EXCEPTIONS
              element = 1
              window  = 2.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        bei periodischen nur eine Zeile
          EXIT.
        ELSEIF fpltdr-fareg CA '14'.
        prozentuale Teilfakturierung
          IF NOT first_line IS INITIAL.
            CLEAR first_line.
            CALL FUNCTION 'WRITE_FORM'
              EXPORTING
                element = 'ITEM_BILLING_SCHEDULE_PERCENT_HEADER'
              EXCEPTIONS
                element = 1
                window  = 2.
            IF sy-subrc NE 0.
              PERFORM protocol_update.
            ENDIF.
          ELSE.
            CALL FUNCTION 'WRITE_FORM'
              EXPORTING
                element = 'ITEM_BILLING_SCHEDULE_PERCENT'
              EXCEPTIONS
                element = 1
                window  = 2.
            IF sy-subrc NE 0.
              PERFORM protocol_update.
            ENDIF.
          ENDIF.
        ELSEIF fpltdr-fareg CA '235'.
        wertmäßige  Teilfakturierung
          IF NOT first_line IS INITIAL.
            CLEAR first_line.
            CALL FUNCTION 'WRITE_FORM'
              EXPORTING
                element = 'ITEM_BILLING_SCHEDULE_VALUE_HEADER'
              EXCEPTIONS
                element = 1
                window  = 2.
            IF sy-subrc NE 0.
              PERFORM protocol_update.
            ENDIF.
          ELSE.
            CALL FUNCTION 'WRITE_FORM'
              EXPORTING
                element = 'ITEM_BILLING_SCHEDULE_VALUE'
              EXCEPTIONS
                element = 1
                window  = 2.
            IF sy-subrc NE 0.
              PERFORM protocol_update.
            ENDIF.
          ENDIF.
        ELSEIF fpltdr-fareg CA '3'.
        Schlußrechnung
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "ITEM_BILLING_SCHEDULES_PRINT
    *eject
          FORM GET_ITEM_CHARACTERISTICS                                 *
          In this routine the configuration data item is fetched from   *
          the database.                                                 *
    FORM get_item_characteristics.
      REFRESH tkomcon.
      CHECK NOT vbdpa-cuobj IS INITIAL.
      CALL FUNCTION 'CUD0_GET_CONFIGURATION'                    "#EC EXISTS
        EXPORTING
          instance      = vbdpa-cuobj
          language      = nast-spras
        TABLES
          configuration = tkomcon
        EXCEPTIONS
          OTHERS        = 4.
    ENDFORM.                    "GET_ITEM_CHARACTERISTICS
          FORM GET_ITEM_PRICES                                          *
          In this routine the price data for the item is fetched from   *
          the database.                                                 *
    FORM get_item_prices.
      CLEAR: komp,
             tkomv.
      IF komk-knumv NE vbdka-knumv.
        CLEAR komk.
        komk-mandt = sy-mandt.
        komk-kalsm = vbdka-kalsm.
        komk-kappl = pr_kappl.
        komk-waerk = vbdka-waerk.
        komk-knumv = vbdka-knumv.
        komk-vbtyp = vbdka-vbtyp.
      ENDIF.
      komp-kposn = vbdpa-posnr.
      CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
        EXPORTING
          comm_head_i = komk
          comm_item_i = komp
          language    = nast-spras
        IMPORTING
          comm_head_e = komk
          comm_item_e = komp
        TABLES
          tkomv       = tkomv
          tkomvd      = tkomvd.
    ENDFORM.                    "GET_ITEM_PRICES
          FORM GET_HEADER_PRICES                                        *
          In this routine the price data for the header is fetched from *
          the database.                                                 *
    FORM get_header_prices.
      CALL FUNCTION 'RV_PRICE_PRINT_HEAD'
        EXPORTING
          comm_head_i = komk
          language    = nast-spras
        IMPORTING
          comm_head_e = komk
        TABLES
          tkomv       = tkomv
          tkomvd      = tkomvd.
    ENDFORM.                    "GET_HEADER_PRICES
    *&      Form  HEADER_DATA_PRINT
          Printing of header data like terms, weights ....               *
    FORM header_data_print.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'HEADER_DATA'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                               " HEADER_DATA_PRINT
          FORM HEADER_PRICE_PRINT                                       *
          Printout of the header prices                                 *
    FORM header_price_print.
      LOOP AT tkomvd.
        AT FIRST.
          IF komk-supos NE 0.
            CALL FUNCTION 'WRITE_FORM'
              EXPORTING
                element = 'ITEM_SUM'.
          ELSE.
            CALL FUNCTION 'WRITE_FORM'
              EXPORTING
                element = 'UNDER_LINE'
              EXCEPTIONS
                element = 1
                window  = 2.
            IF sy-subrc NE 0.
              PERFORM protocol_update.
            ENDIF.
          ENDIF.
        ENDAT.
        komvd = tkomvd.
        IF komvd-koaid = 'D'.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'TAX_LINE'.
        ELSE.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'SUM_LINE'.
        ENDIF.
      ENDLOOP.
      DESCRIBE TABLE tkomvd LINES sy-tfill.
      IF sy-tfill = 0.
        CALL FUNCTION 'WRITE_FORM'
          EXPORTING
            element = 'UNDER_LINE'
          EXCEPTIONS
            element = 1
            window  = 2.
        IF sy-subrc NE 0.
          PERFORM protocol_update.
        ENDIF.
      ENDIF.
    ENDFORM.                    "HEADER_PRICE_PRINT
          FORM HEADER_TEXT_PRINT                                        *
          Printout of the headertexts                                   *
    FORM header_text_print.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'HEADER_TEXT'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "HEADER_TEXT_PRINT
          FORM ITEM_CHARACERISTICS_PRINT                                *
          Printout of the item characteristics -> configuration         *
    FORM item_characteristics_print.
      LOOP AT tkomcon.
        conf_out = tkomcon.
        IF sy-tabix = 1.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_LINE_CONFIGURATION_HEADER'
            EXCEPTIONS
              OTHERS  = 1.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        ELSE.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_LINE_CONFIGURATION'
            EXCEPTIONS
              OTHERS  = 1.
          IF sy-subrc NE 0.
            PERFORM protocol_update.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "ITEM_CHARACTERISTICS_PRINT
          FORM ITEM_DELIVERY_CONFIRMATION                               *
          If the delivery date is not confirmed, a text is printed      *
    FORM item_delivery_confirmation.
      CHECK vbdpa-lfdat = space.
      CHECK vbdpa-kwmeng NE 0.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_DELIVERY_CONFIRMATION'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "ITEM_DELIVERY_CONFIRMATION
          FORM ITEM_PRICE_PRINT                                         *
          Printout of the item prices                                   *
    FORM item_price_print.
      LOOP AT tkomvd.
        komvd = tkomvd.
        IF sy-tabix = 1.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_LINE_PRICE_QUANTITY'.
        ELSE.
          CALL FUNCTION 'WRITE_FORM'
            EXPORTING
              element = 'ITEM_LINE_PRICE_TEXT'.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "ITEM_PRICE_PRINT
          FORM ITEM_PRINT                                               *
          Printout of the items                                         *
    FORM item_print.
      DATA: da_subrc LIKE sy-subrc,
            da_dragr LIKE tvag-dragr.
      CALL FUNCTION 'WRITE_FORM'           "First header
           EXPORTING  element = 'ITEM_HEADER'
           EXCEPTIONS OTHERS  = 1.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
      CALL FUNCTION 'WRITE_FORM'           "Activate header
           EXPORTING  element = 'ITEM_HEADER'
                      type    = 'TOP'
           EXCEPTIONS OTHERS  = 1.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
      LOOP AT tvbdpa.
        vbdpa = tvbdpa.
      TVAG lesen um festzustellen ob abgesagte Positionen gedruckt werden
      sollen
        PERFORM tvag_select(sapmv45a) USING vbdpa-abgru
                                            da_dragr
                                            space
                                            da_subrc.
        IF da_dragr EQ space.              "Print rejected item?
          IF vbdpa-posnr_neu NE space.     "Item
            PERFORM get_item_serials.
            PERFORM get_item_characteristics.
            PERFORM get_item_billing_schedules.
            PERFORM get_item_prices.
            CALL FUNCTION 'CONTROL_FORM'
              EXPORTING
                command = 'ENDPROTECT'.
            CALL FUNCTION 'CONTROL_FORM'
              EXPORTING
                command = 'PROTECT'.
            CALL FUNCTION 'WRITE_FORM'
              EXPORTING
                element = 'ITEM_LINE'.
            PERFORM item_rejected.
            PERFORM item_price_print.
            CALL FUNCTION 'CONTROL_FORM'
              EXPORTING
                command = 'ENDPROTECT'.
            PERFORM item_text_print.
            PERFORM item_serials_print.
            PERFORM item_characteristics_print.
            PERFORM alternative_item.
            PERFORM delivery_date.
            PERFORM item_delivery_confirmation.
            PERFORM item_billing_schedules_print.
            PERFORM different_reference_no.
            PERFORM different_terms.
            PERFORM different_consignee.
            PERFORM schedule_header.
            PERFORM main_item.
          ELSE.
            PERFORM schedule_print.
          ENDIF.
        ENDIF.
      ENDLOOP.
      CALL FUNCTION 'WRITE_FORM'           "Deactivate Header
           EXPORTING  element  = 'ITEM_HEADER'
                      function = 'DELETE'
                      type     = 'TOP'
           EXCEPTIONS OTHERS   = 1.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "ITEM_PRINT
          FORM ITEM_REJECTED                                            *
          A text is printed, if the item is rejected                    *
    FORM item_rejected.
      CHECK NOT vbdpa-abgru IS INITIAL.
      CALL FUNCTION 'WRITE_FORM'
        EXPORTING
          element = 'ITEM_REJECTED'
        EXCEPTIONS
          element = 1
          window  = 2.
      IF sy-subrc NE 0.
        PERFORM protocol_update.
      ENDIF.
    ENDFORM.                    "ITEM_REJECTED
          FORM MAIN_ITEM                                                *
          A text is printed, if the item is a main item                 *

  • Oracle Discoverer Desktop Report output showing unicode characters

    Hi,
    Oracle Discoverer Desktop 4i version Report output showing the below unicode characters.
    kara¿ah L¿MAK HOLD¿NG A.¿
    We ran the same query in sql at that time the data showing correctly.
    Please let me know, is there any language settings/ NLS settings are need to set
    Thanks in Advance.

    Hi
    Let me give you some background. In the Windows registy, every Oracle Home has a setting called NLS_LANG. This is the variable that controls, among other things, the numeric characters and the language used. The variable is made up of 3 parts. These are:
    language_territory.characterset
    Notice how there is an underscore character between the first two variables and a period between the last two. This is very important and must not be changed.
    So, for example, most American settings look like this: AMERICAN_AMERICA.WE8MSWIN1252
    The second variable, the territory, controls the default date, monetary, and numeric formats and must correspond to the name of a country. So if I wanted to use the Greek settings for numeric formatting, editing the NLS_LANG for Discoverer Desktop to this setting will do the trick:
    AMERICAN_GREECE.WE8MSWIN1252
    Can you please check your settings? Here's a workflow:
    a) Open up your registry by running Regedit
    b) Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
    c) Look for the Oracle Home corresponding to where Discoverer Desktop is installed. It's probably called KEY_BIToolsHome_1
    d) Clicking on the Oracle Home will display all of the variables
    e) Take a look at the variable called NLS_LANG - if it is correct Exit the registry
    f) If its not correct please right-click on it and from the pop-up select Modify
    f) Change the variable to the right setting
    g) Click the OK button to save your change
    h) Exit the registry
    Best wishes
    Michael

  • Email sending: "sending report output directly to the body of the email"

    Hi
         I got one requirement.this is the enhancement to already exisitng report.when user clicks on send email check box,report has to be display and this report output has to be send to email of the particular vendor. it has be seen directly in the body of the mail.not as attachement.Report output is in ALV format.Data is stored in internal table t_data.can anyone suggest what is the procedure for this.

    Hi i have tried the same thing and it works very fine,
    i will share my code, you just follow exactly, hopefully you can solve the issue..
    you refer clearly the body of the mail,
    it should solve your issue/
    FORM send_email .
        DATA  lt_message     TYPE            bcsy_text.
        DATA  lv_mail_title  TYPE            so_obj_des.
        DATA  document       TYPE REF TO     cl_document_bcs.
        DATA  recipient      TYPE REF TO     if_recipient_bcs.
        DATA  send_request   TYPE REF TO     cl_bcs.
        DATA  sent_to_all    TYPE            os_boolean.
        DATA  bcs_execption  TYPE REF TO     cx_bcs.
        DATA  wf_string(200)  TYPE            c.
    *    DATA  wf_string      TYPE            string.
        DATA  doc_execption  TYPE REF TO     cx_document_bcs.
        DATA lv_status(20)    TYPE c.
        DATA lv_count_email TYPE i.
        DATA lv_temp_stepcount TYPE c.
        LOOP AT wt_email INTO wa_email.
          TRY.
              CLEAR send_request.
              send_request = cl_bcs=>create_persistent( ).
    *Create Title
              lv_mail_title = 'Report Title'.
    *Create Message(EMAIL Body)
              REFRESH lt_message.
              APPEND '<p><b>Dear Sir/Madam,</b></p>' TO lt_message.
              APPEND '<p>The following report shows the status of </p>' TO lt_message.
              APPEND '<br>' TO lt_message.
              APPEND '<table border= "1" color = 2>' TO lt_message.
              CLEAR wf_string.
              CONCATENATE '<th><tr>'
                          '<td>Vendor  </td>'
                          '<td>Vendor Name</td>'
                          '<td>Coloun 1</td>'
                          '<td>Coloum 2</td>'
                          '</tr></th>' INTO wf_string.
              APPEND wf_string TO lt_message.
              LOOP AT wt_itbl INTO wa_itbl WHERE vendor = wa_email-vendor. "-> Define your Condition here wt_email( should contains vendor and its respective email id)
               CLEAR wf_string.
                CONCATENATE '<tr><td>' wa_itbl-vendor '</td>' INTO wf_string.
                APPEND wf_string TO lt_message.
                CONCATENATE '<td>' wa_itbl-Vendor_name '</td>' INTO wf_string.
                APPEND wf_string TO lt_message.
                CONCATENATE '<td>' wa_itbl-COL2 '</td></tr>' INTO wf_string.
                APPEND wf_string TO lt_message.
                CONCATENATE '<td>' wa_itbl-COL3 '</td></tr>' INTO wf_string.
                APPEND wf_string TO lt_message.
              ENDLOOP.
              APPEND '</table>' TO lt_message.
              APPEND '<br>' TO lt_message.
              APPEND '<p><b>Thank You</b></p>' TO lt_message.
    *Create Document
              CLEAR  document.
              TRY.
                  CALL METHOD cl_document_bcs=>create_from_text
                    EXPORTING
                      i_text         = lt_message
                      i_documenttype = 'HTM'
                      i_subject      = lv_mail_title
                    RECEIVING
                      result         = document.
                CATCH cx_document_bcs INTO doc_execption.
              ENDTRY.
    *Add document to email
              send_request->set_document( document ).
    *Add recipients to send request
              IF wa_email-smtp_addr IS NOT INITIAL.
                recipient = cl_cam_address_bcs=>create_internet_address(
                          i_address_string = wa_email-smtp_addr ).
                send_request->add_recipient( i_recipient = recipient ).
              ENDIF.
    *Send Email
              CALL METHOD send_request->send
                RECEIVING
                  result = sent_to_all.
              COMMIT WORK.
              IF sent_to_all EQ 'X'.
                lv_count_email = lv_count_email + 1.
              ENDIF.
            CATCH cx_bcs INTO bcs_execption.
          ENDTRY.
        ENDLOOP.
        IF sent_to_all = 'X'.
          SKIP 2.
          FORMAT COLOR COL_GROUP INTENSIFIED ON.
          ULINE /(10).
          WRITE: / 'Remark : '.
          ULINE /(10).
          FORMAT RESET.
          WRITE: /  'Email Message Sent Succesfully'.
          RETURN.
        ENDIF.
      ENDFORM.

  • 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

  • Error when sending report output to printer from Forms 10g

    Hi,
    I have a simple report that I am running from a form using run_report_object built-in. I can successfully send the report output to a file but when I send the report output to a printer my report is
    terminated with report status of 'TERMINATED_WITH_ERROR'. I am using the default forms service and reports server that comes with the forms builder. How do I specify the reports server to user my default network printer ?Following is the code that runs my report.
    Thanks,
    Anna
    PROCEDURE SEND_TO_PRINTER IS
    repid REPORT_OBJECT;
    v_rep VARCHAR2(100);
    rep_status VARCHAR2(50);
    rep_server system_variables.reports_server%type;
    alldone          exception;
    BEGIN
         select reports_server
         into rep_server
         from system_variables;
         if rep_server is null then
              msg_alert('Error getting the reports server name', 'I', FALSE);                
              raise alldone;
         end if;
         :ctrl.run_report_errors := 'N';                    
         repid := find_report_object('REP_OBJ1');
         SET_REPORT_OBJECT_PROPERTY(repid,REPORT_SERVER,rep_server);
         SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE,BATCH);
         SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS);
         IF :ctrl.rg_print = 'P' THEN
              --Send the output to printer.
              SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,PRINTER);
              SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,'dflt');
         ELSIF :ctrl.rg_print = 'R' THEN
              --Rich Text Format
              SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,FILE);
              SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,'rtf');
              SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESNAME,:ctrl.filename);
         END IF;
         v_rep := RUN_REPORT_OBJECT(repid);
         rep_status := REPORT_OBJECT_STATUS(v_rep);
         WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED')
         LOOP
              rep_status := report_object_status(v_rep);
         END LOOP;
         IF rep_status = 'FINISHED' THEN
              null;
         ELSE
              :ctrl.run_report_errors := 'Y';
              msg_alert('Error when running report.' || rep_status, 'I', FALSE);           
         END IF;
    EXCEPTION
         when no_data_found then
              msg_alert('Error getting the reports server name', 'I', FALSE);      
         when alldone then
              null;     
    END;

    If you use Windows the user that runs the reports server is usually LocalSystem. Check this in the Windows Services panel.
    LocalSystem has no printer access. To be able to print, you have to use a real domain user that has access to the printer. So, change the Log on properties in the Services panel.

  • How do i save FSG xml report output to External Drive.

    We are implementing XML publisher to replace our ADI. How i save xml publisher report output to network drive also need to change report name dynamically.
    The answer from oracle is
    :There is no built-in functionality to do what is requested however,
    the output file exists at the O/S level and a printer DRIVER can be created and in the "Arguments" field, a copy command can be entered instead of the print command"
    how do i implement this. help please
    Thx

    Make sure the drive is formatted Mac OS Extended (Journaled)
    Do you want to merge these libraries into one? If so, then you'll need the paid version ($20) of  iPhoto Library Manager
    It's the only way to merge Libraries while preserving all metadata, versions and so on.
    Otherwise, simply rename one of the Libraries (so they don't overwite each other) and Copy the iPhoto Library from the Pictures Folder to the External Disk. in each case.
    To choose which library to open: holf down the option (or alt) key while launching iPhoto. From the resulting menu select 'Choose Library' and navigate to the new location.
    Regards
    TD

  • Report Output in Notepad File

    hi i'm using oracle ERP EBS R12
    Oracle database 10g
    i have a report . and i define the output in XML format
    when i click on view output and save in the xls file [excel] then it works
    i want the output in notepad file?
    is there any possiblity to view output in notepad file without any space between the columns?
    or
    is there any possibility to make a tab delimited text format report?

    Hi,
    Please see these docs.
    How To Export Form Or Report Data From Oracle Applications And Into Excel [ID 372353.1]
    How to Setup The Report Output to Different Viewer Types in Oracle Applications 11i [ID 184375.1]
    How to Control the Name and the Application that Opens the Concurrent Request Output File on the Client? [ID 316752.1]
    Thanks,
    Hussein

  • How to send ALV report Output through mail in background !

    Hi ,
    I had an ALV Report. I want to send this report output to patricular email id every day ! Presenty i do this manually. I run the report and send the output to the particular email address. Now i want to schecule the report daily in background and the out put of the report should be mailed to particular email ids in background itself. How can i do this ?
    Is there and method or setting through which we can do this ?
    Regards

    Hi Nau,
    For this requirement you will have to write another program.
    This program will convert the spool requests into PDF document and sends an email  to the recipients that you specify.
    These are the threads which are already posted in The SDN.
    *http://wiki.sdn.sap.com/wiki/display/Snippets/Converts+spool+request+into+PDF+document+and+emails*
    *<a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="353650"></a>*
    *<a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="902985"></a>*
    You need to use the Function module :
    -- Sending the document
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    I will provide you with the code to get this functionality.
    *&      Form  SEND_EMAIL
    form SEND_EMAIL .
    DATA:   t_mailpack   TYPE sopcklsti1 OCCURS 0 WITH HEADER LINE,
              t_mailhead   TYPE solisti1   OCCURS 0 WITH HEADER LINE,
              t_mailbin    TYPE solisti1   OCCURS 0 WITH HEADER LINE,
              t_mailtxt    TYPE solisti1   OCCURS 0 WITH HEADER LINE,
              t_mailrec    TYPE somlreci1  OCCURS 0 WITH HEADER LINE.
      DATA: wa_maildata    TYPE sodocchgi1,
            l_filename(50) TYPE c,
            l_fldname(30)  TYPE c,
            l_fldval(100)  TYPE c,
            l_lines        TYPE i,
            l_text         TYPE text128 .
      DATA: w_email_subrc  TYPE i.
      DATA: w_ship like vbfa-vbeln.
      CLEAR: wa_maildata,
             t_mailtxt,
             t_mailbin,
             t_mailpack,
             t_mailhead,
             t_mailrec.
      REFRESH: t_mailtxt,
               t_mailbin,
               t_mailpack,
               t_mailhead,
               t_mailrec.
    *-- Fill output file
    *- Fill header
      CLEAR: t_mailbin.
    *  t_mailbin[] = pdf_tab[].
      t_mailbin[] = it_att[].     "Uthaman
    *This line is added to get the shipment no in Subject Line
    SELECT SINGLE * FROM vbfa WHERE vbelv EQ nast-objky
                                AND vbtyp_v EQ c_vbtyp_v_j
                                AND vbtyp_n EQ c_vbtyp_n_8.
    w_ship = vbfa-vbeln.
    shift w_ship left deleting leading '0'.
    *-- File name
    if nast-kschl EQ 'ZFPL'.
      CLEAR l_filename.
      CONCATENATE 'Packing List -'
                  sy-datum+4(2) sy-datum+6(2) sy-datum(4) '.PDF' INTO l_filename.
    *-- Creation of the document to be sent File Name
      wa_maildata-obj_name = 'Packing List'.
    *-- Mail Subject
      CONCATENATE l_filename '-' 'Shipment No -' w_ship INTO wa_maildata-obj_descr SEPARATED BY space.
    *-- Mail Contents
      t_mailtxt-line = 'Packing List'.
      APPEND t_mailtxt.
    ENDIF.
    if nast-kschl EQ 'ZFBA'.
      CLEAR l_filename.
      CONCATENATE 'Booking Advice -'
                  sy-datum+4(2) sy-datum+6(2) sy-datum(4) '.PDF'
                  INTO l_filename.
    *-- Creation of the document to be sent File Name
      wa_maildata-obj_name = 'Booking Advice'.
    *-- Mail Subject
      CONCATENATE l_filename '-' 'Shipment No -' w_ship INTO wa_maildata-obj_descr SEPARATED BY space.
    *-- Mail Contents
      t_mailtxt-line = 'Packing List'.
      APPEND t_mailtxt.
    ENDIF.
    *-- Prepare Packing List
    *-- Write Packing List (Main Subject)
      CLEAR: l_lines, t_mailpack.
      DESCRIBE TABLE t_mailtxt LINES l_lines.
    *  READ TABLE t_mailtxt INDEX l_lines.
      t_mailpack-doc_size = ( l_lines - 1 ) * 255 + STRLEN( t_mailtxt ).
    *  CLEAR t_mailpack-transf_bin.
      t_mailpack-transf_bin = ' '.
      t_mailpack-head_start = 1.
      t_mailpack-head_num = 0.
      t_mailpack-body_start = 1.
      t_mailpack-body_num = l_lines.
      t_mailpack-doc_type = 'RAW'.
      APPEND t_mailpack.
      t_mailhead = l_filename.
      APPEND t_mailhead.
    *-- Write Packing List (Attachment)
      CLEAR: l_lines, t_mailpack.
      DESCRIBE TABLE pdf_tab[] LINES l_lines.
    *  READ TABLE pdf_tab INDEX l_lines.
      t_mailpack-doc_size = ( l_lines - 1 ) * 255 + STRLEN( t_mailbin ).
      t_mailpack-transf_bin = 'X'.
      t_mailpack-head_start = 1.
      t_mailpack-head_num = 1.
      t_mailpack-body_start = 1.
      t_mailpack-body_num = l_lines.
      t_mailpack-doc_type = 'PDF'.
      t_mailpack-obj_name = l_filename.
      t_mailpack-obj_descr = l_filename.
      t_mailpack-obj_langu = 'E'.
      APPEND t_mailpack.
    *-- Set recipients
    tables :  ztotcemail.
    SELECT SINGLE * FROM vbfa WHERE vbelv EQ nast-objky
                                AND vbtyp_v EQ c_vbtyp_v_j
                                AND vbtyp_n EQ c_vbtyp_n_8.
    CLEAR vttk.
    SELECT SINGLE * FROM vttk WHERE tknum EQ vbfa-vbeln.
    SELECT SINGLE * FROM ztotcemail WHERE tplst = vttk-tplst
                                      AND lifnr = vttk-tdlnr.
    IF SY-SUBRC EQ 0.
      t_mailrec-receiver = ztotcemail-smtp_addr. "'Here you will give the email address'.
      t_mailrec-rec_type  = 'U'.
      APPEND t_mailrec.
    ENDIF.
    **-- Sending the document
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          document_data              = wa_maildata
          put_in_outbox              = 'X'
    *      commit_work                = 'X'  " N-16
        TABLES
          packing_list               = t_mailpack
          object_header              = t_mailhead
          contents_bin               = t_mailbin[]
          contents_txt               = t_mailtxt[]
          receivers                  = t_mailrec
        EXCEPTIONS
          too_many_receivers         = 1
          document_not_sent          = 2
          operation_no_authorization = 4
          OTHERS                     = 99.
      w_email_subrc = sy-subrc.
      IF sy-subrc EQ 0.
        MESSAGE s000(zotc) WITH 'Email output sent successfully'.
      ELSE.
        MESSAGE s000(zotc) WITH 'Can not send email output'.
      ENDIF.
    endform.                    " SEND_EMAIL
    Hope the above information will be helpful.
    Regards,
    Kittu

  • Download a classical Report output to excel

    Hi All,
    We have a requirement to download the output of a classical report into a Excel sheet and it should be in the same format as the report output.We don't  just want to dump the internal table data into excel but need to display the classical report outputas it is in the excel sheet.
    Regards,
    Ashish

    Hi there,
    I am not sure on your requirement, but if you want to write a program that manipulates Excel, you can choose to use OLE objects. Below is some sample code.
    REPORT  ZTEST_EXCEL.
    INCLUDE ole2incl.
    DATA: application TYPE ole2_object,
    workbook TYPE ole2_object,
    sheet TYPE ole2_object,
    cells TYPE ole2_object.
    CONSTANTS: row_max TYPE i VALUE 256.
    DATA index TYPE i.
    DATA: BEGIN OF itab1 OCCURS 0, first_name(10), END OF itab1.
    DATA: BEGIN OF itab2 OCCURS 0, last_name(10), END OF itab2.
    DATA: BEGIN OF itab3 OCCURS 0, formula(50), END OF itab3.
    *START-OF-SELECTION
    START-OF-SELECTION.
    APPEND: 'Peter' TO itab1, 'Ivanov' TO itab2,
    '=Sheet1!A1 & " " & Sheet2!A1' TO itab3,
    'John' TO itab1, 'Smith' TO itab2,
    '=Sheet1!A2 & " " & Sheet2!A2' TO itab3.
    CREATE OBJECT application 'excel.application'.
    SET PROPERTY OF application 'visible' = 1.
    CALL METHOD OF application 'Workbooks' = workbook.
    CALL METHOD OF workbook 'Add'.
    * Create first Excel Sheet
    CALL METHOD OF application 'Worksheets' = sheet
    EXPORTING #1 = 1.
    CALL METHOD OF sheet 'Activate'.
    SET PROPERTY OF sheet 'Name' = 'Sheet1'.
    LOOP AT itab1.
    index = row_max * ( sy-tabix - 1 ) + 1. " 1 - column name
    CALL METHOD OF sheet 'Cells' = cells EXPORTING #1 = index.
    SET PROPERTY OF cells 'Value' = itab1-first_name.
    ENDLOOP.
    * Create second Excel sheet
    CALL METHOD OF application 'Worksheets' = sheet
    EXPORTING #1 = 2.
    SET PROPERTY OF sheet 'Name' = 'Sheet2'.
    CALL METHOD OF sheet 'Activate'.
    LOOP AT itab2.
    index = row_max * ( sy-tabix - 1 ) + 1. " 1 - column name
    CALL METHOD OF sheet 'Cells' = cells EXPORTING #1 = index.
    SET PROPERTY OF cells 'Value' = itab2-last_name.
    ENDLOOP.
    * Create third Excel sheet
    CALL METHOD OF application 'Worksheets' = sheet
    EXPORTING #1 = 3.
    SET PROPERTY OF sheet 'Name' = 'Sheet3'.
    CALL METHOD OF sheet 'Activate'.
    LOOP AT itab3.
    index = row_max * ( sy-tabix - 1 ) + 1. " 1 - column name
    CALL METHOD OF sheet 'Cells' = cells EXPORTING #1 = index.
    SET PROPERTY OF cells 'Formula' = itab3-formula.
    SET PROPERTY OF cells 'Value' = itab3-formula.
    ENDLOOP.
    * Save excel speadsheet to particular filename
    CALL METHOD OF sheet 'SaveAs'
    EXPORTING #1 = 'c:\temp\exceldoc1.xls' "filename
    #2 = 1. "fileFormat
    * Closes excel window, data is lost if not saved
    * SET PROPERTY OF application 'visible' = 0.
    Edited by: Thung Yuen Yap on Aug 10, 2010 1:52 PM

Maybe you are looking for

  • Performance tuning for ECC5

    Hi, Can any one guide me how to do the performance tuning in an ECC5, MSSQL2000,Windows 2003 system Here the RAM size is 3.5 gb. Page file size was 9 gb(i increased that to 11.5 gb (3*RAM+ 1 gb) Also increased the abap/buffer size to 400000. Regards,

  • Rollback Segs error

    Hi all, I am getting the following error while running a job from batch mode ORA-01562: failed to extend rollback segment number 6 ORA-01650: unable to extend rollback segment RB0 by 1280 in tablespace RBS The above rollback seg is quite big and ther

  • ESS - No entry for period  Parameters

    Hi All, One of my user getting error message in ESS - Benefits & pay part of Benefits Enrollment. **Error message : No entry for period parameter 00:** com.sap.pcuigp.xssfpm.java.FPMRuntimeException: No entry for period parameter 00      at com.sap.p

  • Check shelf life date by customer when goods issue

    Hi Since each customers will required to have different remaining shelf life of the product when deliver to their store such as 7-11 may required 100 days, Tesco Lotus 150 days so the manufacturing and trading companies of foods & beverage needs to c

  • How to restrict reversal of Goods issue against production order.

    Dear All, How to restrict reversal of Goods issue against production order if production order status is CNF or DLV. i want that user can not reverse the goods issued against production order, if they want to do so, then user has to reverse the GRN a