Sqlplus script output

I understand I can re-direct the query result to an output file using the SPOOL command in sqlplus. However, is there any way in sqlplus such that I can manipulate the data return from the query before spooling to the output file? Thanks in advance for your great help.

hi,
there are two possible options you can choose from to do that. First option is to use PL/SQL. Second option is to use the MODEL clause. You can visit the website of SnippetJoe to learn the MODEL clause. This is the link: http://www.sqlsnippets.com/en/topic-11663.html
Brett

Similar Messages

  • Call unix command in sqlplus script

    Hello, I wanna to know how to call a unix command in the sqlplus script.
    For exemple,
    I've a sqlplus script to lauch a oracle report, after the report is generated, I wanne to replace the output file in an other directory.
    So that, I have to call the unix command mv here in the sqlplus script
    How can I do it?**
    I completed my situation:
    I don't have dbms_scheduler untility in my database.
    Thanks a lot for your help
    Edited by: user11930885 on 17 janv. 2010 14:53

    Yes, at the begining, I'll tried the unix shell by calling SQL.
    I've the problem of passing the parameters through.
    It seems to me
    we can use
    Host in the SQLPLUS to run the unix command.
    but I've written it in my sqlplus script, it doesn't work. so I wanna to find an exemple how to use HOST in sqlplus script?
    I would have loved to give you an example..but its not unix on my laptop.
    But what i can tell you is...u should be doing otherway round.
    Not calling Unix commands from SQL but calling SQL's form unix.
    You got shell scripts for that.
    Write a shell script. Login to SQL execute your code.
    exit from sql and then move your file with MV. That's it.
    Do post how far you get after trying this.

  • Script output headers

    Is it possible to remove the header from query results in the the script output window?
    select 1 AS dont, 2 AS need, 3 AS a, 4 AS header, 5 AS thanks from dual;
    DONT NEED A HEADER THANKS
    1 2 3 4 5
    I only want the row of "1 2 3 4 5".
    In SQL Plus, I arrange like so:
    SQL> select 1 AS dont, 2 AS need, 3 AS a, 4 AS header, 5 AS thanks from dual;
    DONT NEED A HEADER THANKS
    1 2 3 4 5
    SQL> set heading off;
    SQL> select 1 AS dont, 2 AS need, 3 AS a, 4 AS header, 5 AS thanks from dual;
    1 2 3 4 5
    SQL>
    However, 'set heading off' in SQL Developer gives "line 1: SQLPLUS Command Skipped: set heading off;"
    Is this possible? If not, can it be put in the request pile for a future release?

    Can't be done currently...
    Requests should go to the announced SQL Developer Exchange, so others can vote on them.
    Regards,
    K.

  • Script output missing rows affected

    Hi,
    I'm not sure when it happened, but I notice that the script output no longer tells you how many rows have been affected by DML.
    eg,
    in sqlplus, if I do
    "> delete from xx;"
    it tells me.
    "3 rows deleted."
    but in sql developer all I get is
    "delete from xx succeeded."
    Is there any way to get sqldeveloper to tell me how many rows have been affected if I "Run Script"? Haven't it output the number of rows affected is a great "double check" that my query did what I expected, having it just say "succeeded" just tells me that it did something..

    Hi,
    I can now fix and reproduce this.
    This morning I downloaded the latest MacOS version which reports as "MAIN-32.13" (same as the old one I was running). And what do you know, it correctly says the number of rows inserted/deleted/updated (I did not trash my prefs folders)
    So, I diffed the two application directories, with the following differences.
    laguna:Downloads $ diff -r SQLDeveloper.app/ /Applications/SQLDeveloper.app/
    Only in /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/ide/lib/patches: timesten_support.jar
    Binary files SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/doc/sqldeveloper_help.jar and /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/doc/sqldeveloper_help.jar differ
    Only in /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/doc: sqldeveloper_help.jar.backup
    Only in /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/extensions: oracle.sqldeveloper.timesten.jar
    Only in /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper: timesten_readme.html
    laguna:Downloads $
    I then tried check for updates, and it picked up timesten extension, which I installed.
    On the first restart after updates, I get the following error.
    java.lang.IllegalAccessError: tried to access class oracle.ide.net.IdeURLStreamHandler from class oracle.ide.net.URLFileSystem$1
         at oracle.ide.net.URLFileSystem$1.createURLStreamHandler(URLFileSystem.java:87)
         at oracle.ide.boot.URLStreamHandlerFactoryQueue.createURLStreamHandler(URLStreamHandlerFactoryQueue.java:119)
         at java.net.URL.getURLStreamHandler(URL.java:1104)
         at java.net.URL.<init>(URL.java:393)
         at java.net.URL.<init>(URL.java:283)
         at oracle.ide.net.URLFactory.newURL(URLFactory.java:636)
         at oracle.ide.layout.URL2String.toURL(URL2String.java:104)
         at oracle.ideimpl.editor.EditorUtil.getURL(EditorUtil.java:150)
         at oracle.ideimpl.editor.EditorUtil.getNode(EditorUtil.java:122)
         at oracle.ideimpl.editor.EditorUtil.loadContext(EditorUtil.java:91)
         at oracle.ideimpl.editor.TabGroupState.loadStateInfo(TabGroupState.java:950)
         at oracle.ideimpl.editor.TabGroup.loadLayout(TabGroup.java:1751)
         at oracle.ideimpl.editor.TabGroupXMLLayoutPersistence.loadComponent(TabGroupXMLLayoutPersistence.java:31)
         at oracle.ideimpl.controls.dockLayout.DockLayoutInfoLeaf.loadLayout(DockLayoutInfoLeaf.java:123)
         at oracle.ideimpl.controls.dockLayout.AbstractDockLayoutInfoNode.loadLayout(AbstractDockLayoutInfoNode.java:631)
         at oracle.ideimpl.controls.dockLayout.AbstractDockLayoutInfoNode.loadLayout(AbstractDockLayoutInfoNode.java:628)
         at oracle.ideimpl.controls.dockLayout.AbstractDockLayoutInfoNode.loadLayout(AbstractDockLayoutInfoNode.java:614)
         at oracle.ideimpl.controls.dockLayout.DockLayout.loadLayout(DockLayout.java:302)
         at oracle.ideimpl.controls.dockLayout.DockLayoutPanel.loadLayout(DockLayoutPanel.java:128)
         at oracle.ideimpl.editor.Desktop.loadLayout(Desktop.java:356)
         at oracle.ideimpl.editor.EditorManagerImpl.init(EditorManagerImpl.java:1879)
         at oracle.ide.layout.Layouts.activate(Layouts.java:784)
         at oracle.ide.layout.Layouts.activateLayout(Layouts.java:186)
         at oracle.ideimpl.MainWindowImpl$6.runImpl(MainWindowImpl.java:734)
         at oracle.javatools.util.SwingClosure$1Closure.run(SwingClosure.java:50)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    and my worksheets wont open (just stays with the blue background). Restarting fixes this, but... Back to the original problem.
    If I then go and delete
    /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/
    oracle.sqldeveloper.timesten.jar
    and
    /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/ide/lib/timesten_support.jar
    The problem is fixed again.. So its something with those Jars.

  • Passing variables from shell script to separate sqlplus script

    Hi, I am having issues passing variables to a separate sqlplus script invoked by the shell script, e.g.
    #!/bin/sh
    DB_NAME=TEST
    PWD1=PA55W0rd
    echo exit | sqlplus / as sysdba @${DB_NAME}.sql ${DB_NAME} $PWD1 >> ${DB_NAME}.sql
    exit 0
    The script picks up the $DB_NAME variable fine, and therefore invokes the required sql script.
    However, when I pass the variable $PWD1 to the sql script I get an error.
    The script creates a database link:
    create or replace procedure new.link
    is
    begin
    execute immediate 'create database link TEST
    connect to TESTSCH identified by '$PWD1'
    using ''TEST''';
    end;
    exec new.link;
    output is:
    ERROR at line 1:
    ORA-00911: invalid character
    ORA-06512: at "NEW.LINK", line 4
    ORA-06512: at line 1
    any help appreciated!
    Edited by: 969765 on Apr 5, 2013 4:24 AM

    969765 wrote:
    that is a pretty unhelpful comment, this is actually my LAST resort I have looked up all the documentation etc.This is what I did...
    I went to the documentation:
    http://www.oracle.com/pls/db112/homepage
    I searched for "sqlplus" which gave me this documentation (under "SQL*plus program syntax")...
    http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_three.htm#i1169374
    I read the syntax:
    SQLPLUS [ [Options] [Logon|/NOLOG] [Start] ]and the subsequent information:
    >
    where Start has the following syntax:
      @{url|file_name[.ext]} [arg ...]and "Start" was hyperlinked, so I clicked on it, which took me to the section...
    >
    Start
    @} [arg ...]
    Specifies the name of a script and arguments to run. The script can be called from the local file system or from a web server.
    SQL*Plus passes the arguments to the script as if executing the file using the SQL*Plus START command. If no file suffix (file extension) is specified, the suffix defined by the SET SUFFIX command is used. The default suffix is .sql.
    See the START command for more information.
    >
    and here the "START" was hyperlinked, so I clicked on that...
    and hey presto, I ended up here:
    http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve044.htm#BACJJHDA
    ... where the arguments are described...
    >
    arg ...
    Data items you wish to pass to parameters in the script. If you enter one or more arguments, SQL*Plus substitutes the values into the parameters (&1, &2, and so forth) in the script. The first argument replaces each occurrence of &1, the second replaces each occurrence of &2, and so on.
    >
    ... clearly explaining that SQL*Plus substitutes the substitution variables &1, &2 etc. in the script with the passed in arguments.
    Your script was including a Unix style substitution, not an SQL*Plus script substitution, so that's seems to be the most likely cause of your problem.
    And still you haven't come back to say whether it's worked for you or not... leaving others guessing as to whether you still need help.

  • How to Schedule Job using Database Control for SQLPLUS script?

    Hi All,
    I am using Database version 10.2. I would like to schedule a SQLPLUS script job using Database control (Not using Grid Control!). The following is the script.
    ========================================================
    define OEM_FRIENDLY=1
    define OWB_BACKGROUND=0
    set serveroutput on
    set verify off
    whenever sqlerror exit failure;
    define REPOS_OWNER='&1.'
    define LOCATION_NAME='&2.'
    define TASK_TYPE='&3.'
    define TASK_NAME='&4.'
    define SYSTEM_PARAMS='&5.'
    define CUSTOM_PARAMS='&6.'
    alter session set current_schema = &REPOS_OWNER.;
    set role owb_d_&REPOS_OWNER., owb_o_&REPOS_OWNER.;
    variable exec_return_code number;
    begin
    -- Initialize Return Code
    :exec_return_code := wb_rt_api_exec.RESULT_FAILURE;
    -- Run Task
    :exec_return_code := wb_rt_api_exec.run_task('&LOCATION_NAME.',
    '&TASK_TYPE.',
    '&TASK_NAME.',
    '&CUSTOM_PARAMS.',
    '&SYSTEM_PARAMS.',
    &OEM_FRIENDLY.,
    &OWB_BACKGROUND.);
    end;
    exit :exec_return_code;
    ===========================================================
    Is it possible to schedule SQLPLUS script with 6 different parameters? If yes then how can I schedule for monday to friday or only for Saturday and sundays.
    Please provide brief steps.
    Thanks for your help in advance.
    - Mehul

    Let me explain to you about scheduler.
    You can schedule a pl/sql stored procedure TEST_S as follows...
    Begin
    dbms_scheduler.create_job(
    job_name=>'MY_JOB',
    Job_Type=>'STORED_PROCEDURE',
    job_action=>'TEST_S',
    start_date=>sysdate,
    repeat_interval=>'freq=monthly;BYDAY=MON,TUE,WED,THU,FRI',
    end_date=>null');
    END;
    You can also also execute o/s script like .bat or .sh. For this job type should be EXECUTABLE.
    Example of converting a .sql script in .bat script...
    insert.sql
    insert into dept values(50,'IT','LONDON');
    exit
    insert.bat
    sqlplus scott/tiger @insert.sql
    Executing now...
    C:\Documents and Settings>insert.bat
    C:\Documents and Settings>sqlplus scott/tiger @insert.sql
    SQL*Plus: Release 10.2.0.1.0 - Production on Thu Mar 1 08:01:00 2007
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    1 row created.
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - P
    oduction
    With the Partitioning, OLAP and Data Mining options
    C:\Documents and Settings>
    So first read about DBMS_SCHEDULER and do the work in prompt. Then you can go and schedule it even by database control.
    Scheduling by database control...
    http://www.oracle.com/technology/oramag/oracle/04-jul/o44tech_dba.html
    Scheduler
    http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_sched.htm#CIHEHDHA
    PS: By default each job you created is disable state. Please enable it by enable procedure of DBMS_SCHEDULER package.

  • How to write errors in sqlplus script into logging table?

    Hi,
    I am having sqlplus script which do some DDL and DML statements.
    Now is there any way to logg errors which pop up when the script is esxecuting?
    For example something like:
    WHENEVER SQLERROR EXIT SQL.SQLCODE
    BEGIN
    /* SOME DDL OR DDL */
    CREATE TABLE A
    COL_1 NUMBER,
    COL_2 NUMBER
    /* Wrong sql statement */
    INSERT INTO TABLE_DOWS_NOT_EXISTS(....);
    EXCEPTION WHEN OTHERS THEN
    INSERT INTO logging_tbl (error_description) VALUES(SQL.SQLCODE);
    END;
    I know, this one will tell sqlplus to exit with sql error code without trapping into exception section, but is there any way to handle it?
    Thanks

    An approach would be to enable spooling in the beginning of your script. Wrap dbms_output into an error_log procedure. The error_log should simple write an errorcode + message to the prompt.<br>Afterwards - a search batchjob or manual search for errorcode occurances in the script spool file(s) should reveal the outcome.

  • Passing a FILENAME from a LINUX SHELL Script to an SQLPLUS Script

    I written a LINUX Shell Script to receive a FILENAME. This FILENAME is the name of the file that I want to SPOOL into.
    So, below are two items.
    The first item is the LINUX Shell Script that has the FILENAME
    The last item is the SQLPLUS Script that is suppose to receive the name
    The LINUX Shell Script:
    #! /bin/sh
    LOGFILE="$(date +"%Y-%m-%d %H:%M") Oracle REPORT LOG.TXT"
    FILENAME="$(date +"%Y-%m-%d") PROD Unfinished Spot Bids.CSV"
    echo "File Name for the spool is:" "$FILENAME"
    #spool "$FILENAME"
    #sqlplus /nolog @run_test_query.sql
    #sqlplus -S @Unfinished_Spot_Bids_Run_V1.sql >$LOGFILE
    sqlplus -S /nolog <<EOF >$LOGFILE
    /* I want to pass to the SQL file below */
    /* The value that is contained in the the variable $FILENAME */
    /* How do you do that? */
    @@Unfinished_Spot_Bids_V1.sql
    spool
    set echo on
    EOF
    RV=$?
    #if {$RV -ne 0}
    #exit $RV
    #else
    echo "The return code fronm the sqlplus was:" "$RV"
    #fi
    Here is the SQLPLUS Script
    CONNECT glog_read/parker@OTMPROD
    set linesize 32000 trimspool on pagesize 3000
    set echo off
    SET TERMOUT OFF
    set heading off
    /* I want to parameterize the name of the file below */
    /* This file is executed from inside a LINUX Shell Script */
    /* That LINUX SHELL script is passed a file name */
    /* I want that filename used in the "SPOOL" statement below */
    /* So, how do I do that? */
    spool PROD_Unfinished.CSV
    prompt Shipment Update Date|Shipment Number|No of Shipments|Auctions per Shipment|No. of Carriers Notified|No of Bidders|Duration of Auction|Elapse time for first bid|Elapse time for last bid|Elapse time of bidding|Lead Time of Auction to P/U|High Bid- Low Bid Diff|
    set feedback off
    SELECT
    to_char(c.update_date, 'FMMonth, YYYY')||'|'|| b.SHIPMENT_GID
    ||'|'|| count (distinct (b.SHIPMENT_GID))
    ||'|'|| count(distinct(a.i_transaction_no))
    ||'|'|| count(*)
    ||'|'|| sum (case when a.responding_gl_user_gid is null then 0 else 1 end)
    ||'|'|| min (numtodsinterval((b.expected_response - b.insert_date),'day'))
    ||'|'|| min (numtodsinterval((a.update_date - a.transaction_time),'day'))
    ||'|'|| max (numtodsinterval((a.update_date - a.transaction_time),'day'))
    ||'|'|| numtodsinterval((max(a.update_date) - min(a.update_date)),'day')
    ||'|'|| numtodsinterval((max(b.shipment_time) - max(c.insert_date)),'day')
    ||'|'|| (max(a.bid_amount) - min(a.bid_amount))
    from tender_collab_servprov a, tender_collaboration b, shipment c
    where a.i_transaction_no = b.i_transaction_no
    and b.shipment_gid not in (select sqa.shipment_gid from tender_collaboration sqa, tender_collab_servprov sqb where sqa.i_transaction_no = sqb.i_transaction_no and sqb.acceptance_code = 'A')
    and a.i_transaction_no in (select i_transaction_no from tender_collaboration where tender_type = 'Spot Bid')
    and b.shipment_gid = c.shipment_gid
    AND c.update_date >= trunc(last_day(to_date((to_char(add_months(SYSDATE,-2), 'MM-DD-YYYY')),'MM-DD-YYYY')) + 1)
    group by c.update_date, b.SHIPMENT_GID
    order by c.update_date, b.shipment_GID;
    spool off

    ParadicePGMR wrote:
    First, I was getting an error on the SPOOL ${FILENAME}. Also, my file did have spaces and I did replace it with "_". It still did not work on the SPOOL Command. So, with or without the _, I never got the SPOOL command to work!
    It seems that the FILENAME value from the LINUX script was not being passed into the SQLPLUS procedure.
    How do you pass LINUX variables into the SQLPLUS procedure>
    Not sure if I had the right usage => ${FILENAME}above is correct syntax

  • Changes are not reflected in Script output

    Hi All,
    i am facing a problem in SAPscript.
    I have made a Zscript by copying standard script F110_FR_CHEQUE. I have made the changes in the script as per requirement in development client and transported it to testing client to test (As i dont have any data in development client). But, surprisingly, when i run the program and check the output, the changes are not reflected in the script output.
    First i thought that my script was not triggered thats whay i m not getting any change, but later i changed the dimension of one of the window, in which some hard coded text is written, the differece i found was that, window size is changed, but the text written in that window is still same (what was in standard script.) .
    I am using standard texts for hard coding in script. Standard texts have been transported in testing client also.
    please help me in this regard.

    Hi,
    Could you plese Check NACE whether your script is confiugring or not.
    If it is configured well then Check Standard Text is available or not in Test client by open it in SO10.
    Check all the paragrah formats applied to Standard text are transferred to Test client which are in SE72.
    IF it is available in SO10 then debug the print program for that windows any standard conditions are calling to print the text.

  • Convert Script output data to Text(.txt) file & send mail with attachment.

    Hi All,
    Requirement: I shulb be able to conver th Script output data to Text(.text) file & send a maill with attachment with this text file. Formant of text file should be like output of Print priview.
    Plese sugget with Function modules to cover as Text file.
    I am able to converting the Script output data to PDF and sending mail with attachment. So I don't want PDF file now.
    Thanks in advance.

    Hi, Thanks for responst.
    We can convert the Scirpt output to PDF file by using OTF function module and the PDF file looks like Print Privew output.
    Same like this I want Script out in NOTEPAD (.txt). Is that possible, Plz sugget with relavent Function Modules.
    Thanks.

  • 4.0EA1 - Copy/Paste in Script Output window on Mac is not working

    I'm running 4.0.0.12 on MacOS X 10.8.4, and I can't Copy from the "Script Output" window.  What I regularly do is generate some SQL using an SQL query, so I want to copy the output and paste it back into the Worksheet so I can run it.  For example:
    select 'alter tablespace ' || TABLESPACE_NAME || ' begin backup;' from DBA_TABLESPACES;

    This is a known issue and will be addressed for the next EA release.

  • Problem in script output sending mail

    hi ,
    I have a problem sending a mail with script output as attachment . I have searched in the forum for the answers but none is solved my question.
    I am sending the data to the otf and it is getting the otfdata. but it is not showing  the data on the script when it is sent as an attachment to the email , but it is showing only script with null values filled.( means i am getting the mail with attachment but in that attachment there is no data filled in the script send).
    the code is like this ..
    here i am filling the otfdata and i am exporting the otfdata
    CALL FUNCTION 'ZMM_ARRANG_ENTRY_ABR_NATRAB'
        EXPORTING
          i_nast       = nast
          i_fonam      = tnapr-fonam
          i_xscreen    = pi_xscreen
          i_arc_params = arc_params
          i_toa_dara   = toa_dara
        IMPORTING
          e_retcode    = px_retcode
        EXCEPTIONS
          OTHERS       = 1.
      IF ( sy-subrc <> 0 ).                "Fehler
        MOVE sy-subrc TO px_retcode.
        IF ( pi_xscreen = 'X' ).           "Ausgabe auf Bildschirm
          MESSAGE ID     sy-msgid
                  TYPE   sy-msgty
                  NUMBER sy-msgno
                  WITH   sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ELSE.
    *---Import OTFDATA from the memory
        IMPORT  it_otfdata FROM MEMORY ID 'OTF'.
      ENDIF.
      wa_maildata-obj_name = 'EMAIL'.
      wa_maildata-obj_descr = 'Settlement Details'.
    *-----mail contents
      it_mailtext-line = 'Sub-sequent settlement Details'.
      APPEND it_mailtext.
      DESCRIBE TABLE it_mailtext LINES v_lines.
      READ TABLE it_mailtext INDEX v_lines.
      wa_maildata-doc_size = ( v_lines - 1 ) * 255 + STRLEN( it_mailtext ).
    *Creation of the entry for the compressed document
      CLEAR it_mailpack-transf_bin.
      it_mailpack-head_start = 1.
      it_mailpack-head_num   = 0.
      it_mailpack-body_start = 1.
      it_mailpack-body_num   = v_lines.
      it_mailpack-doc_type   = 'RAW'.
      APPEND it_mailpack.
    *-----Get OTF data
      LOOP AT it_otfdata.
        it_mailcont-line = it_otfdata.
        APPEND it_mailcont.
      ENDLOOP.
    *---Move  OTF data into binary table
      LOOP AT it_mailcont.
        MOVE-CORRESPONDING it_mailcont TO it_mailbin.
        APPEND it_mailbin.
      ENDLOOP.
    *---Get no of lines in Binary data table
      DESCRIBE TABLE it_mailbin LINES v_lines.
    *---Fill name of the header of email
      it_mailhead = 'Subsequent Settlement Details.OTF'.
      APPEND it_mailhead.
    *---Creation of the entry for the compressed attachment
      it_mailpack-transf_bin   = 'X'.
      it_mailpack-head_start   = 1.
      it_mailpack-head_num     = 1.
      it_mailpack-body_start   = 1.
      it_mailpack-body_num     = v_lines.
      it_mailpack-doc_type     = 'OTF'.
      it_mailpack-obj_name     = 'EMAIL'.
      it_mailpack-obj_descr    = 'Settlement Details'.
      it_mailpack-doc_size     = v_lines * 255.
      APPEND it_mailpack.
    *----Get email address from the address number of vendor
      CALL FUNCTION 'ADDR_GET_REMOTE'
        EXPORTING
          addrnumber = l_adrnum
        TABLES
          adsmtp     = it_adsmtp.
    *----Get mail address
      READ TABLE it_adsmtp WITH KEY remark = 'AP_SUB_SETT'.
      IF sy-subrc = 0.
        it_mailrec-receiver   = it_adsmtp-smtp_addr.
        it_mailrec-rec_type   = 'U'.
        it_mailrec-com_type   = 'EXT'.
        APPEND it_mailrec.
    *---Send email with PDF attachment
        CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
          EXPORTING
            document_data = wa_maildata
            put_in_outbox = 'X'
            COMMIT_WORK   = 'X'
          TABLES
            packing_list  = it_mailpack
            object_header = it_mailhead
            contents_bin  = it_mailbin
            contents_txt  = it_mailtext
            receivers     = it_mailrec.
      ELSE.
        MESSAGE 'No email id Exist for the vendor' TYPE 'E'.
      ENDIF.
    please suggest me with your valuable answers .
    Regards,
    Venkat Appikonda.

    Hi venkat
    Just check if this helps you.
    The following part of the code does exactly that.
    Selecting details from the spool request table.
      SELECT * FROM tsp01 INTO TABLE tb_spool
               WHERE rqowner = sy-uname.
      IF sy-subrc EQ 0.
        SORT tb_spool DESCENDING BY rqcretime.
        CLEAR : tb_spool.
        READ TABLE tb_spool INDEX 1.
    convert spool into PDF format.
        CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
             EXPORTING
                  src_spoolid = tb_spool-rqident
             TABLES
                  PDF         = tb_lines.
      ENDIF.
    After this, on execution we get the below mentioned message.
    This indicates that a PDF of the SAP Script has been created which is in the format u201C132-long stringsu201D.
    In order to send the mail across, the mailing format of the PDF supports u201C255-long stringsu201D. So, the present u201C132-long stringsu201D needs to be converted into u201C255-long stringsu201D. This along with the mail code is mentioned below.
      DATA: lv_receiver(50) TYPE c.
      REFRESH: tb_obj_txt,
               tb_obj_bin,
               tb_obj_head,
               tb_paklist,
               tb_receiver.
      CLEAR: tb_obj_txt,
             tb_obj_bin,
             tb_paklist,
             tb_obj_head,
             tb_receiver.
      CLEAR: tb_adrc.
    IF NOT tb_adrc[] IS INITIAL.
    Reading the address table with the key as address number.
        READ TABLE tb_adrc WITH KEY addrnumber = tb_kna2-adrnr.
        IF sy-subrc EQ 0.
    Vendor Email ID.
          SELECT SINGLE smtp_addr
             FROM adr6
             INTO wf_mailaddr
             WHERE addrnumber = tb_adrc-addrnumber.
          IF sy-subrc EQ 0.
    Moving the mail address to the receiver itab
            MOVE wf_mailaddr TO tb_receiver-receiver.
            tb_receiver-rec_type = text-011.
            APPEND tb_receiver.
          ELSE.
            CONCATENATE text-004 tb_kna2-kunnr text-005 INTO lv_receiver
                                       SEPARATED BY space.
    If pa_call is initial, the receiver ID is printed; else an INVALID E-mail ID    message gets flashed.
            IF pa_call IS INITIAL.
              WRITE :/ lv_receiver.
            ENDIF.
            CLEAR: itab.
            itab-kunnr = tb_kna2-kunnr.
            itab-message = lv_receiver.
            APPEND itab.
            EXIT.   u201CNo mailing for invalid Email id
          ENDIF.
        ENDIF.
      ENDIF.
      wf_name = sy-uname.
      wf_year = tb_main-bldat(4).
      wf_mon = tb_main-bldat+4(2).
    *This FM gives the name of the months. 
    CALL FUNCTION 'MONTH_NAMES_GET'
           EXPORTING
                language    = sy-langu
           TABLES
                month_names = tb_months.
      IF sy-subrc EQ 0.
        READ TABLE tb_months WITH KEY mnr = wf_mon.
        IF sy-subrc EQ 0.
          wf_name = tb_months-ktx.
        ENDIF.
      ENDIF.
      CLEAR: tb_contp.
    IF NOT tb_contp[] IS INITIAL.
    *Reading the contp itab as per the customer entered on the selection screen.
        READ TABLE tb_contp WITH KEY bukrs = pa_bukrs
                                     kunnr =  tb_kna2-kunnr.
        IF sy-subrc EQ 0.
        CONCATENATE text-006 text-008 tb_contp-contp text-008 tb_kna2-kunnr
                              text-008 wf_name text-008 wf_year INTO wf_sub.
        ENDIF.
      ELSE.
        CONCATENATE text-006 text-008 tb_kna2-kunnr text-008 wf_name
                                        text-008 wf_year INTO wf_sub.
      ENDIF.
    Subject and Description
      CLEAR wa_docdata.
      wa_docdata-obj_name  = text-007.
      wa_docdata-obj_descr = wf_sub.
      wa_docdata-obj_langu = sy-langu.
    Write main body
      tb_obj_txt = text-009.
      APPEND tb_obj_txt.
      CLEAR tb_obj_txt.
      CLEAR  tb_paklist.
      tb_paklist-head_start = 1.
      tb_paklist-head_num   = 3.
      tb_paklist-body_start = 1.
      tb_paklist-body_num   = 60.
      tb_paklist-doc_type   = text-012.
      APPEND tb_paklist.
      CLEAR  tb_paklist.
    create PDF file
    Transfer the 132-long strings to 255-long strings
      LOOP AT tb_lines.
        TRANSLATE tb_lines USING ' ~'.
        CONCATENATE wf_buffer tb_lines INTO wf_buffer.
      ENDLOOP.
      TRANSLATE wf_buffer USING '~ '.
      DO.
        tb_obj_bin = wf_buffer.
        APPEND tb_obj_bin.
        SHIFT wf_buffer LEFT BY 255 PLACES.
        IF wf_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
      DESCRIBE TABLE tb_obj_bin LINES lv_lines.
      READ TABLE tb_obj_bin INDEX lv_lines.
      lv_size = ( lv_lines - 1 ) * 255 + STRLEN( tb_obj_bin ).
    Create attachment notification
      tb_paklist-transf_bin = co_x.
      tb_paklist-head_start = 1.
      tb_paklist-head_num   = 0.
      tb_paklist-body_start = 1.
      tb_paklist-body_num   = lv_lines.
      tb_paklist-doc_type   = text-013.
      tb_paklist-obj_descr  = text-010.
      tb_paklist-obj_name   = text-010.
      tb_paklist-doc_size   = lv_size.
      APPEND tb_paklist.
    *mail the PDF to the receiver.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = wa_docdata
                sender_address             = wf_name
                sender_address_type        = text-014
           TABLES
                packing_list               = tb_paklist
                object_header              = tb_obj_head
                contents_bin               = tb_obj_bin
                contents_txt               = tb_obj_txt
                receivers                  = tb_receiver
           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.
      IF sy-subrc <> 0.
        CONCATENATE text-003 tb_kna2-kunnr text-005 INTO lv_receiver
                                SEPARATED BY space.
        CLEAR: itab.
        itab-kunnr = tb_kna2-kunnr.
        itab-message = lv_receiver.
        APPEND itab.
        IF pa_call IS INITIAL.
          WRITE :/ lv_receiver.
        ENDIF.
      ELSE.
        CONCATENATE text-002 tb_kna2-kunnr text-005 INTO lv_receiver
                                SEPARATED BY space.
        CLEAR: itab.
        itab-kunnr = tb_kna2-kunnr.
        itab-message = lv_receiver.
        APPEND itab.
        IF pa_call IS INITIAL.
          WRITE :/ lv_receiver.
        ENDIF.
      ENDIF.
    Hope this helps.
    Harsh

  • How to print a standard text of 3 pages in the script output?

    Hi all,
    I want to print a standard text as an include in the script output.
    But the standrad text is of 3 pages conataining continuous (some terms and condtitions) text.
    But while executing driver program, I am getting a STOP messgae pop-up saying 'Output is continuous or contains too many pages (>4)'.
    How to get the standard text of 3 pages in the output. The standard text is to be printed at the bottom of the output.
    Thanks,
    Sachin

    Hi ,
    To display standard texts you have to create a include in your script below is the syntax for that:
    INCLUDE name OBJECT name ID name PARAGRAPH name LANGUAGE   name
    Include command is used to include standard text in a form.the text 
    should be already defined by using transaction SO10.
    Here name is the name of text
    ID is used to classify text e.g. SDVD (SD related text) , ST (Standard text)
    OBJECT is used to specify type of object it an be TEXT , DOKU
    LANGUAGE is used to specify language like EN ,if ommited than logon
      language is used
    PARAGRAPH is used to specify the paragraph like C
    e.g. /:INCLUDE mytext OBJECT TEXT ID ST LANGUAGE EN
             Here the standard text created in SO10 with name mytext is
             included in the form in language EN (English)
    Please let me know if you have still any confusion.
    Thanks
    Narendra Vikram Vishwakarma

  • Reg: Script Output in PDF form

    Hai..
    Can anybody tell me how we will get script output
    (P.order output) in PDF format and we need to downlaod this PDF to our local drives. plz tell me the function modules to be used for this requirement and paste the code if any of you worked on this earlier..
    Regards

    Check this link for sample program.
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/49e15474-0e01-0010-9cba-e62df8244556
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/downloadSAPScriptoutputtoPDF+file.&
    Function Module: CONVERT_OTF
    Regards,
    Maha

  • To convert Sap Script output to PDF format and send it via email.

    Hi Friends,
    Could any one please tell me, how to convert the Sap Script output to PDF format and send it via email. If any one have the code, kindly mail me to [email protected]
    Thanks & Regards,
    John

    Plese check this sample code from other thread.
    REPORT zzz_jaytest .
    Types Declaration
    TYPES : BEGIN OF ty_pa0001,
    pernr TYPE pa0001-pernr,
    bukrs TYPE pa0001-bukrs,
    werks TYPE pa0001-werks,
    END OF ty_pa0001.
    Internal Table Declaration
    DATA : i_pa0001 TYPE STANDARD TABLE OF ty_pa0001, "For pa0001 Details
    i_otf TYPE STANDARD TABLE OF itcoo, "For OTF data
    i_content_txt TYPE soli_tab, "Content
    i_content_bin TYPE solix_tab, "Content
    i_objhead TYPE soli_tab,
    Work Area Declaration
    w_pa0001 TYPE ty_pa0001, "For pa0001 Details
    w_res TYPE itcpp, "SAPscript output
    "parameters
    w_otf TYPE itcoo, "For OTF
    w_pdf TYPE solisti1, "For PDF
    w_transfer_bin TYPE sx_boolean, "Content
    w_options TYPE itcpo, "SAPscript output
    "interface
    Variable Declaration
    v_len_in TYPE so_obj_len,
    v_size TYPE i.
    Constants Declaration
    CONSTANTS : c_x TYPE c VALUE 'X', "X
    c_locl(4) TYPE c VALUE 'LOCL', "Local Printer
    c_otf TYPE sx_format VALUE 'OTF', "OTF
    c_pdf TYPE sx_format VALUE 'PDF', "PDF
    c_printer TYPE sx_devtype VALUE 'PRINTER', "PRINTER
    c_bin TYPE char10 VALUE 'BIN', "BIN
    c_name TYPE string VALUE 'C:\ZZZ_JAYTEST.PDF',"Downloading
    "File Name
    c_form(11) TYPE c VALUE 'ZZZ_JAYTEST'. "Form Name
    START-OF-SELECTION.
    Selecting the records from pa0001
    SELECT pernr bukrs werks FROM pa0001
    INTO TABLE i_pa0001 UP TO 10 ROWS.
    Setting the options
    w_options-tdcopies = 1 ."Number of copies
    w_options-tdnoprev = c_x."No print preview
    w_options-tdgetotf = c_x."Return of OTF table
    w_options-tddest = c_locl."Spool: Output device
    Opening the form
    CALL FUNCTION 'OPEN_FORM'
    EXPORTING
    form = c_form
    device = c_printer
    language = sy-langu
    OPTIONS = w_options
    IMPORTING
    RESULT = w_res.
    LOOP AT i_pa0001 INTO w_pa0001.
    Writting into the form
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    element = 'MAIN'
    window = 'MAIN'.
    ENDLOOP.
    Closing the form
    CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
    RESULT = w_res
    TABLES
    otfdata = i_otf
    EXCEPTIONS
    unopened = 1
    bad_pageformat_for_print = 2
    send_error = 3
    spool_error = 4
    codepage = 5
    OTHERS = 6.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    Converting OTF data to single line
    LOOP AT i_otf INTO w_otf.
    CONCATENATE w_otf-tdprintcom w_otf-tdprintpar
    INTO w_pdf.
    APPEND w_pdf TO i_content_txt.
    ENDLOOP.
    Converting to PDF Format
    CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
    EXPORTING
    format_src = c_otf
    format_dst = c_pdf
    devtype = c_printer
    CHANGING
    transfer_bin = w_transfer_bin
    content_txt = i_content_txt
    content_bin = i_content_bin
    objhead = i_objhead
    len = v_len_in
    EXCEPTIONS
    err_conv_failed = 1
    OTHERS = 2.
    v_size = v_len_in.
    Downloading the PDF File
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    bin_filesize = v_size
    filename = c_name
    filetype = c_bin
    TABLES
    data_tab = i_content_bin.
    The extension is put the it_mailpack-obj_name parameter of 'SO_NEW_DOCUMENT_ATT_SEND_API1'.

Maybe you are looking for

  • Match Credit memo from Payables Open interface import.

    We have a requirement wherein we have to load Standard invoices as well as their corresponding credit memo match. The user guide only mentions about matching to a PO or reciept but not to a standard invoice As per metalink note 422659.1 "So the Enter

  • Windows 7 64bit install error code 2605

    Tried repeatedly to install itunes 10.7 on a Windows & 64 bit PC without any success. During install, I get a repeated message saying that the PC is running in safe mode or displays error code 2605. Any help would be great!

  • Best way to add and remove JPanels?

    I have a question on the best practice in removing and then adding JPanels. I know a few ways about doing it but it never seems to work just how I want it to. Any help would be great. Also if anyone wants to give tips on better ways of writing this c

  • I need a little help help with the Spreadsheet 9 ActiveX control

    Here's the situation: I want to import data from an Excel file to the MS Office Spreadsheet 9.0 ActiveX control on the LV front page. I can retrieve the data just fine but I can't get it to display in the control on the front page. I can select a ran

  • Error in Quotations

    Error in Quotations. When a Quotation Id(Hyperlink) is clicked in the result list, the overview page is not displayed. That is, The Quotation details are not displayed. This issue is reported when Webui is logged-in with a different login user id. If