Formatting a msg ..

Hi
CREATE OR REPLACE PROCEDURE send_email AS
   BEGIN 
     UTL_MAIL.SEND(sender => '[email protected]',
                   recipients => '[email protected]',
                   cc => NULL,
                   bcc => NULL,
                   subject => 'Testmail',
                   message =>  'my message' );
   EXCEPTION
   WHEN OTHERS THEN
     raise_application_error(-20001,'The following error has occured: ' || sqlerrm);  
END;In the message parameter i want it to contain customer's executions in the stock market at the end of the day to be sent to them by mail in a nice format , like for example :
stock name ---  invoice value
xxxx                  100,000
yyyy                   2,300of course each customer can have many invoices each day , so ...
1- what concept can i use to do that ? like create a string that has the data separated by commas ? , or a cursor or what?
2- Is there any formatting options in this parameter like putting each invoice in a new line , of course i can use commas , but i was just asking if this can be done in a neat way...
Thanks....

One way you can LPAD with spaces.
number formatting by to_char(num1, '999,999,999')

Similar Messages

  • .msg file format of outlook

    Hello,
    I'm looking for a solution to convert an e-mail from .eml format, to .msg file format. This format belong to outlook, and that's why it's very difficult to find informations.
    So, does anabody could give me information about .msg file format ?
    thank you so much
    Tizzy

    Actually, the outlook msg file format has nothing to do with RFC822. I wrote a library in pure java that will allow you to read/write this file format via the POI framework from the Apache Foundation.
    travis (at) overwrittenstack.com

  • Format XML doc based on values in another xml doc

    Database version : Oracle 10g
    I have an XML "data" file and an associated error file that is also XML. I want to take the XML data file and highlight visually in a html file only those fields and contents that are there in the "error" file.
    There are many fields in the data file so the error could be just about anywhere. Can someone please tell me what I should read or give me some direction on how I should proceed?
    I built a style sheet for the "data" file - but obviously that is static. Do i need 2 stylesheets and apply them both somehow? I was also thinking that I would use the "error" xml doc and just rewrite the error nodes in the "data" file and then use the style sheet to mark up the data file based on what i rewrite.
    eg
    if the data is say
    <field1>content of field 1</field1>
    and the error file has field1 in it, I would rewrite the data file to have say <error>content of field 1</error> and just mark up the <error> using the stylesheet. Is that a sensible solution? Even then I need help on the actual xml/sql functions i need to rewrite the xml data.
    I am a rank beginner in this and I apologize - This seems such a newbie question that must have been asked before - I just wish I could find it in the forum.
    Thank you!
    Edited by: user13112667 on Oct 15, 2010 12:38 PM

    Thanks for the samples.
    A couple of options I can think of :
    - XSL transformation (as you first thought of too)
    - XQuery
    Below is a test script that implements both solutions :
    DECLARE
    datadoc xmltype := xmltype(
    '<HII>
    <HII_SEQ_NUM>6084997</HII_SEQ_NUM>
    <HII_RECORD_ID>HII</HII_RECORD_ID>
    <HII_DOC_TYPE>INV</HII_DOC_TYPE>
    <HII_WSLR_ID>XXXXX</HII_WSLR_ID>
    <HII_WSLR_ABBR>COM</HII_WSLR_ABBR>
    <HII_CUST_NBR>096636</HII_CUST_NBR>
    <HII_INV_DATE>100203</HII_INV_DATE>
    <HII_INV_NUMB>829608-1102</HII_INV_NUMB>
    <HII_ORD_NUMB>830412</HII_ORD_NUMB>
    <HII_TP_ID>007839602</HII_TP_ID>
    <HII_WSLR_DUNS>000073669</HII_WSLR_DUNS>
    <HII_TRANS_TYPE>DI</HII_TRANS_TYPE>
    <HII_CAVN_ID>77873</HII_CAVN_ID>
    <HII_VER_NUM>22</HII_VER_NUM>
    </HII>'
    errordoc xmltype := xmltype(
    '<document>
    <error>
    <segment>HII</segment>
    <element>HII_INV_DATE(Inv Date)</element>
    <msg>Invoice date must be in the format yyyymmdd</msg>
    <data>100203</data>
    </error>
    <error>
    <segment>HII</segment>
    <element>HII_TP_ID(TP ID)</element>
    <msg>Data must be 12 digits long</msg>
    <data>007839602</data>
    </error>
    </document>'
    xsldoc xmltype := xmltype(
    '<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" version="4.0"/>
    <xsl:template match="/">
    <HTML>
      <BODY>
       <STYLE type="text/css">
        <![CDATA[
        TR.err { background-color: red }
        TD { border: 1px solid }
        TABLE { border-collapse: collapse }
        ]]>
       </STYLE>
       <TABLE>
       <xsl:apply-templates select="root/datafile/HII/*"/>
       </TABLE>
      </BODY>
    </HTML>
    </xsl:template>
    <xsl:template match="HII/*">
    <xsl:variable name="msg" select="/root/errorfile/document/error[segment=name(current()/..) and substring-before(element,''('')=name(current())]/msg"/>
    <TR>
      <xsl:if test="$msg"><xsl:attribute name="class">err</xsl:attribute></xsl:if>
      <TD><xsl:value-of select="name(.)"/></TD>
      <TD><xsl:value-of select="."/></TD>
      <TD><xsl:value-of select="$msg"/></TD>
    </TR>
    </xsl:template>
    </xsl:stylesheet>'
    html_res1 clob;
    html_res2 clob;
    BEGIN
    -- XSL Transformation
    SELECT XMLTransform(
      xmlelement("root",
       xmlconcat( xmlelement("datafile",datadoc),
                  xmlelement("errorfile",errordoc) )
      xsldoc
    ).getClobVal()
    INTO html_res1
    FROM dual;
    -- XQuery
    SELECT XMLQuery(
      '<HTML>
        <BODY>
         <STYLE type="text/css">
          TR.err {{ background-color: red }}
          TD {{ border: 1px solid }}
          TABLE {{ border-collapse: collapse }}
         </STYLE>
         <TABLE>
          for $i in $d/HII/*
          let $n := name($i)
          let $v := $i/text()
          let $msg := xs:string($e/document/error[segment=name($i/..) and substring-before(element,"(")=$n]/msg)
          return
            element TR {
              if ($msg) then
                attribute class {"err"}
              else (),
              <TD>{$n}</TD>,
              <TD>{$v}</TD>,
              <TD>{ $msg }</TD>
         </TABLE>
        </BODY>
       </HTML>'
      passing datadoc as "d",
              errordoc as "e"
      returning content
    ).getClobVal()
    INTO html_res2
    FROM dual;
    END;
    /Same principle for the two methods : looping through the data document and searching for a matching occurrence in the error document using XPath.
    It produces an HTML document (html_res1 and html_res2) like this :
    <HTML>
    <BODY>
      <STYLE type="text/css">
        TR.err { background-color: red }
        TD { border: 1px solid }
        TABLE { border-collapse: collapse }
        </STYLE>
      <TABLE>
       <TR>
        <TD>HII_SEQ_NUM</TD>
        <TD>6084997</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_RECORD_ID</TD>
        <TD>HII</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_DOC_TYPE</TD>
        <TD>INV</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_WSLR_ID</TD>
        <TD>XXXXX</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_WSLR_ABBR</TD>
        <TD>COM</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_CUST_NBR</TD>
        <TD>096636</TD>
        <TD></TD>
       </TR>
       <TR class="err">
        <TD>HII_INV_DATE</TD>
        <TD>100203</TD>
        <TD>Invoice date must be in the format yyyymmdd</TD>
       </TR>
       <TR>
        <TD>HII_INV_NUMB</TD>
        <TD>829608-1102</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_ORD_NUMB</TD>
        <TD>830412</TD>
        <TD></TD>
       </TR>
       <TR class="err">
        <TD>HII_TP_ID</TD>
        <TD>007839602</TD>
        <TD>Data must be 12 digits long</TD>
       </TR>
       <TR>
        <TD>HII_WSLR_DUNS</TD>
        <TD>000073669</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_TRANS_TYPE</TD>
        <TD>DI</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_CAVN_ID</TD>
        <TD>77873</TD>
        <TD></TD>
       </TR>
       <TR>
        <TD>HII_VER_NUM</TD>
        <TD>22</TD>
        <TD></TD>
       </TR>
      </TABLE>
    </BODY>
    </HTML>Performance-wise, you'll have to test on real documents, but I think XSLT is better.

  • The hybrid format email is considered as a junk email (or spam)in Apple Mail 4.4

    In Mac OSX 10.6.6, When I use Apple Mail 4.4 to receive the hybrid format email( include HTML and Text format in one email), the Apple Mail 4.4 will be think this email is a junk email.
    Is this a bug for the Mail 4.4? Anybody can help to resolve this issue?
    FYI, The following is my JAVA code for how to send a hybrid format email:
    msg.setSubject("test");//set subject
    MimeBodyPart mbp1 = new MimeBodyPart();
    mbp1.setContent("test", "text/plain; charset=utf-8");//set text format content
    MimeBodyPart mbp2 = new MimeBodyPart();
    mbp2.setContent("test", "text/html; charset=utf-8");//set HTML format content
    Multipart mp = new MimeMultipart("alternative");
    mp.addBodyPart(mbp1);//add text content
    mp.addBodyPart(mbp2);//add HTML content
    msg.setContent(mp);
    Transport.send(msg);//send email

    Sorry to be slow to respond -- had a doctor appointment, and also had to hunt up a boot volume with 10.6.6 and Mail 4.4 on it, just to be sure.
    Your test message was not perceived as SPAM/Junk at all.  Not when received in Mail 4.5, Mail 4.4, nor Mail 2.1.3 in Tiger.
    Nothing about the Long Headers indicated anything suspicious.  The headers I was looking primarily at are pasted below, and do reveal anything private.  These the result of the filters on my incoming server:
    X_Cmae_Category:   0,0 Undefined,Undefined
              X-Cnfs-Analysis:   v=1.1 cv=JQNK39t9F4kLyjfJz/k8C0DfBhSrK9xA1Y4SBRwEmYU= c=1 sm=0 a=BLceEmwcHowA:10 a=1FzqG5ILVBdwvA7Y_sMA:9 a=QEXdDO2ut3YA:10 a=qIwwZl7lo8ZhrKw95CmXbg==:117
      X-Cm-Score:           0
              X-Scanned-By:   Cloudmark Authority Engine
              Authentication-Results:   mx01.insight.synacor.com header.from=[email protected]; sender-id=neutral
              Authentication-Results:   mx01.insight.synacor.com smtp.mail=[email protected]; spf=neutral; sender-id=neutral
              Received-Spf:   neutral (mx01.insight.synacor.com: 74.128.0.95 is neither permitted nor denied by domain of zone1.dev.hf.webex.com)
      X-Ironport-Anti-Spam-Filtered:           true
              X-Ironport-Anti-Spam-Result:   As0IAEyBx009vxsiTmdsb2JhbACEUqE6AQEiSYhqqnGPfoUKgQIEhj6NTx2KJQ
              X-Ironport-Av:   E=Sophos;i="4.64,338,1301889600";  d="scan'208";a="381038056"
      X-Connecting-Ip:           61.191.27.34
              Message-Id:   <27817788.01304920419178.JavaMail.Ma.Jin@majin-work>
      Mime-Version:           1.0
              Content-Type:   multipart/alternative;  boundary="----=_Part_0_24435002.1304920419147"

  • CVI 2009 vs. 2010: compatibil​ity to Excel

    Hello all,
    I have created an application in CVI2009SP1 that exports its data to an Excel file using Excel2000 instrument driver shipped with CVI. All works well if the application is compiled and run on a WinXP machine but when run on a Win7 machine the customer complains to receive a strange error while opening the generated files:
    The message basically means "The format of the file you want to open does not correspond to the type declared in its extension"
    Pressing Ok will open the file regularly but I wonder what this error means and how to put it away.
    I tested this situation in Excel 2007 and 2010, both starter and full edition: despite the error the files open regularly. On the other hand, the generated file cannot be opened in Word2000 due to a more severe "format not recognized" error.
    I tried compiling the executable in CVI 2010 and I receive no error even if the Excel instrument is still declared as "Microsoft Excel 9.0 object library" the same as it is in 2009; nevertheless the object file associated to the instrument is newer than the 2009 version (June 30, 2010 for the library shipped with CVI2009; June 22, 2011 for the 2010 one).
    I would prefer not to distribute a release compiled in 2010 as the application drives a high power equipment for research on prototypes and I cannot test it in real environment, so I tried simply to substitute CVI2009 version of the Excel interface library with the CVI2010 one and the program compiles and executes without errors.
    So questions are:
    Q1. Any clue as to what that error means?
    Q2. Is it safe to upgrade the Excel library in CVI2009?
    Q3. Any possibility to maintain compatibility to older versions of Excel?
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

    Hi,
    I diffed the source codes and they are effectively identical, while the libraries are slightly different in size (some 10 bytes) and creation date. I don't know if checking the object for differences makes sense. I haven't modified that instrument in any way.
    I'll try to send to the customer a program release compiled in CVI2009 with 2010 library and see what happens: unfortunately I don't have in my office the exact copy of the target machine (Win7Pro + Office2010) to check it on.
    To write the file I use the following:
    errChk (CA_VariantSetCString(&MyVariant, <file pathname>));
    errChk (Excel_WorkbookSaveAs (ExcelWorkbookHandle, NULL, MyVariant,
    CA_DEFAULT_VAL, CA_DEFAULT_VAL,
    CA_DEFAULT_VAL, CA_DEFAULT_VAL,
    CA_DEFAULT_VAL, ExcelConst_xlNoChange,
    CA_DEFAULT_VAL, CA_DEFAULT_VAL,
    CA_DEFAULT_VAL, CA_DEFAULT_VAL));
    While examining my code now I noted something I didn't remember: when moving data to Excel I try to get the decimal point formatting code used in the system and apply it to the data in Excel worksheet, using this code:
    // Read decimal separator from the registry
    strcpy (msg, "Control Panel");
    MakePathname (msg, "International", msg);
    RegReadString (REGKEY_HKCU, msg, "sDecimal", a, 512, &i);
    // Select some columns to format
    sprintf (msg, "D2:H%d", cnt + 1);
    errChk (CA_VariantSetCString (&MyVariant, msg));
    if (ExcelRangeHandle) errChk (ClearObjHandle (&ExcelRangeHandle));
    errChk (Excel_WorksheetRange (ExcelWorksheetHandle, NULL, MyVariant, CA_DEFAULT_VAL, &ExcelRangeHandle));
    errChk (Excel_RangeActivate (ExcelRangeHandle, &ErrorInfo, NULL));
    // Apply the proper format
    sprintf (msg, "#0%s0", a);
    errChk (CA_VariantSetCString (&MyVariant, msg));
    errChk (Excel_SetProperty (ExcelRangeHandle, &ErrorInfo, Excel_RangeNumberFormat, CAVT_VARIANT, MyVariant));
    I wonder if this code can cause any problem when executed on a Win7 machine?
    Coming to your last question, I am using excel2000 instrument driver with the code above. Situation is as follows:
    - When execute on a WinXPPro machine with Excel2000 I can create files without problems. Files created can be viewed in Excel2007 full and Excel 2010 starter without errors nor warnings
    - Files created by the application running in a Win7 box can be opened in Excel 2010 with the warning I posted. They can't be opened in Excel2000: I receive the error "This file is not in a recognizable format" and if I follow on I see binary code in the worksheet
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • BAPI for fb65

    Hi ,
    I want to call transaction FB65 for the company code , vendor , amount and GL_account.
    Is there any BAPI which i can use for this purpose.
    Thanks in advance.

    sample code using RFBIBL00
    TABLES : BGR00,    " Batch Input Structure for Session Data
             BBKPF,    " Doc Hdr for Accntng Doc (Batch Input Structure)
             BBSEG,    " Accounting Document Segment (Batch Input Structure)
             USR01.
    Internal Table and structure Declarations                           *
    Internal table to hold input file data
    DATA:BEGIN OF IT_INFILE OCCURS 0.
            INCLUDE STRUCTURE Z0FI_AP_FADS_TO_SAP. "Input file format
    DATA:ERROR(1) TYPE C,                          "error indicator
    END OF IT_INFILE.
    Internal table to hold input file data
    DATA:BEGIN OF IT_ERRORS OCCURS 0.
            INCLUDE STRUCTURE Z0FI_AP_FADS_TO_SAP. "Input file format
    DATA: MSG(200) TYPE C,                         "message
    END OF IT_ERRORS.
    Internal table to hold GL data
    DATA:BEGIN OF IT_GL OCCURS 0,
    SAP_GL_ACCOUNT  LIKE ZFGLT_GL_PRI_SUB-SAP_GL_ACCOUNT, "G/L Account
    LGCY_SYSTEM     LIKE ZFGLT_GL_PRI_SUB-LGCY_SYSTEM,    "Legacy System
    LGCY_PRIME_ACCT LIKE ZFGLT_GL_PRI_SUB-LGCY_PRIME_ACCT,"Legacy Account
    LGCY_SUB_ACCT   LIKE ZFGLT_GL_PRI_SUB-LGCY_SUB_ACCT,  "Legacy Sub Acct
    END OF IT_GL.
    Internal table to hold cost center data
    DATA:BEGIN OF IT_COSTCTR OCCURS 0,
    COST_OBJECT    LIKE ZFCFT_CTR_DPT_LG-COST_OBJECT,     "Cost center
    LGCY_LDGR      LIKE ZFCFT_CTR_DPT_LG-LGCY_LDGR,       "Legacy ledger
    LGCY_DEPT      LIKE ZFCFT_CTR_DPT_LG-LGCY_DEPT,       "Legacy Department
    END OF IT_COSTCTR.
    Internal table to hold vendor data
    DATA:BEGIN OF IT_LFA1 OCCURS 0,
    LIFNR TYPE LIFNR,                                     "Vendor no
    BUKRS TYPE BUKRS,                                     "Company code
    STCD1 TYPE STCD1,                                           "Tax ID1
    STCD2 TYPE STCD2,                                           "Tax ID2
    END OF IT_LFA1.
    Internal table to hold Primary Sub Acct data
    DATA:BEGIN OF IT_SUBACCT OCCURS 0,
    PRYACT1(10) TYPE C,                                    "Pry sub Acct1
    PRYACT2(10) TYPE C,                                    "Pry sub Acct2
    END OF IT_SUBACCT.
    Internal table to hold ledger data
    DATA:BEGIN OF IT_LEDGER OCCURS 0,
    LGR_ID(4) TYPE C,                                      "Ledger ID
    DEPT(4) TYPE C,                                        "Department
    END OF IT_LEDGER.
    Internal table to hold tax id
    DATA:BEGIN OF IT_TAXID OCCURS 0,
    TAXID1(16) TYPE C,                                          "Tax ID1
    TAXID2(11) TYPE C,                                          "Tax ID2
    END OF  IT_TAXID.
    Internal table to hold line amounts sum data
    DATA:BEGIN OF IT_SUM OCCURS 0,
    TAX_ID_NO(10) TYPE C,                                  "Tax Id No
    INVOICE_NO(12) TYPE C,                                 "Invoice No
    SUM2(11) TYPE P DECIMALS 2,                            "Sum
    END OF IT_SUM.
    Internal table to hold Error records
    DATA:BEGIN OF IT_ERROR OCCURS 0,
    TAX_ID_NO(10) TYPE C,                                  "Tax Id No
    INVOICE_NO(12) TYPE C,                                 "Invoice No
    MSG(200) TYPE C,                                       "Message
    END OF IT_ERROR .
    Internal table to hold success records
    DATA : BEGIN OF IT_SUCCESS OCCURS 0,
            DOCNUM(10) TYPE C,                           "Document No
            BUKRS(4) TYPE C,                             "Company code
            FISYR(4) TYPE C,                             "Fiscal year
            MSG(100) TYPE C,                             "Message
           END OF IT_SUCCESS.
    Internal table to hold invoice no
    DATA:BEGIN OF IT_INVNO OCCURS 0,
          XBLNR(16) TYPE C,                              "Ref Doc No
          END OF IT_INVNO.
    Internal table to hold Invoice Document no's
    DATA:BEGIN OF IT_BKPF OCCURS 0,
          BUKRS LIKE BKPF-BUKRS,
          BELNR LIKE BKPF-BELNR,
          XBLNR LIKE BKPF-XBLNR,
          END OF IT_BKPF.
    Internal table to initialise structures
    DATA:    BEGIN OF IT_NAMETAB OCCURS 120.
            INCLUDE STRUCTURE DNTAB.
    DATA:    END OF IT_NAMETAB.
    Internal table to hold sessions data
    DATA:BEGIN OF IT_LIST OCCURS 0.
            INCLUDE STRUCTURE ABAPLIST.
    DATA:END OF IT_LIST.
    Structure to hold input file
    DATA:X_INFILE LIKE IT_INFILE.
    Structure to hold company code & currency data
    DATA:BEGIN OF X_T001,
    BUKRS LIKE T001-BUKRS,                                "Company code
    WAERS LIKE T001-WAERS,                                "Currency
    END OF X_T001.
    Global Variables                                                     *
    DATA: V_PGM_ID         LIKE SY-REPID,                "Program id
          V_COUNT_INFILE   TYPE I,                       "Counter
          V_TEXT(100)      TYPE C,                       "Text
          V_CHAR(61)       TYPE C,                       "Field name
          V_FILE           LIKE RLGRAP-FILENAME.         "File name
    DATA:
          V_ERR            TYPE I,                       "Counter
          V_OBJKEY         LIKE  BAPIACHE09-OBJ_KEY,     "object key
          V_ERR_REC        TYPE I,                       "Error Records
          V_SUC_REC        TYPE I,                       "Success Records
          V_SESS           LIKE APQI-GROUPID.            "Session name
    Field symbols
    FIELD-SYMBOLS: <F1> .
    Constants.                                                           *
    DATA:
         C_ITEMNO(6)   TYPE C VALUE '000001',            "Item no
         C_DOCTYPE(2)  TYPE C VALUE 'KU',                "Doc type
         C_BUSACT(4)   TYPE C VALUE 'RMRP',              "Business Account
         C_FADS(7)     TYPE C VALUE 'FADS',              "Legacy system
         C_COMMA(1)    TYPE C VALUE ',' ,                "Comma
         C_NODATA(1)   TYPE C VALUE '/',                 "NODATA
         C_SESS        LIKE APQI-GROUPID VALUE 'FADS2SAP'."Session
    Selection Screen
    SELECTION-SCREEN: BEGIN OF BLOCK NO1 WITH FRAME TITLE TEXT-001.
    *Input file name
    PARAMETERS:P_BUKRS  LIKE T001-BUKRS OBLIGATORY,
               P_INFILE LIKE RLGRAP-FILENAME LOWER CASE DEFAULT
                                               'C:\FB60.txt' OBLIGATORY,
    *Filename for Error records
                P_ERR LIKE RLGRAP-FILENAME LOWER CASE DEFAULT
      '/int/D01/030/in/REQ853err.txt' OBLIGATORY.
    *For selecting either a sequential file or local file.
    PARAMETERS:
               R_PSERV RADIOBUTTON GROUP GR1 DEFAULT 'X',
               R_ASERV RADIOBUTTON GROUP GR1.
    SELECTION-SCREEN: END OF BLOCK NO1.
    INITIALIZATION
    INITIALIZATION.
      V_PGM_ID = SY-REPID.
    AT SELECTION-SCREEN                                                 *
    AT SELECTION-SCREEN.
    Validating company code
      SELECT SINGLE BUKRS
             WAERS INTO (X_T001-BUKRS, X_T001-WAERS)
             FROM T001 WHERE BUKRS = P_BUKRS.
      IF SY-SUBRC <> 0.
        MESSAGE E014 WITH 'Invalid Company code'(E01).
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFILE.
    Getting help for presentation server files
      IF R_PSERV = 'X'.
        CALL FUNCTION 'F4_FILENAME'
             EXPORTING
                  PROGRAM_NAME  = V_PGM_ID
                  DYNPRO_NUMBER = SY-DYNNR
                  FIELD_NAME    = ' '
             IMPORTING
                  FILE_NAME     = P_INFILE.
      ENDIF.
    START-OF-SELECTION                                                  *
    START-OF-SELECTION.
    If sequential file is selected
      IF R_ASERV = 'X'.
    Form to get  data for apllication server
        PERFORM F_GET_INPUT_DATA.
    if local file
      ELSE.
    If sequential file is selected
        PERFORM F_GET_LOCAL_DATA.
      ENDIF.
    Selecting GL, Costcenter, vendor data
      PERFORM F_SELECT_DATA.
    Validate the the input file data
      PERFORM F_VALIDATE_DATA.
    Populate data to fill structures
      PERFORM F_POPULATE_DATA.
    Populate the error data
      PERFORM F_ERROR_DATA.
    END-OF-SELECTION
    END-OF-SELECTION.
      IF NOT IT_INFILE[] IS INITIAL.
    For submitting the program to rfbibloo
        PERFORM F_SUBMIT_RFBIBLOO.
      ENDIF.
    WRITE : / 'Number of success records '(003),
               v_suc_rec LEFT-JUSTIFIED.
    WRITE : / 'Number of error records '(004),
                v_err_rec LEFT-JUSTIFIED.
      IF NOT IT_ERRORS[] IS INITIAL.
    Form to display the error report
        PERFORM F_DISPLAY_REPORT.
      ENDIF.
      IF NOT IT_SUCCESS[] IS INITIAL.
    Form to display the success report
        PERFORM F_DISPLAY_SUC_REPORT.
      ENDIF.
    *--Standard footer
      PERFORM STD_END_OF_REPORT.
    TOP OF PAGE                                                         *
    TOP-OF-PAGE.
    *---Standard header
      PERFORM STD_TOP_OF_PAGE CHANGING SY-TITLE.
    *&      Form  f_get_local_data
          Getting the data from presentation server
    FORM F_GET_LOCAL_DATA.
      DATA:LV_FILNAM TYPE STRING.     "File name
      LV_FILNAM = P_INFILE.
      CALL FUNCTION 'GUI_UPLOAD'
           EXPORTING
                FILENAME                = LV_FILNAM
                FILETYPE                = 'ASC'
               has_field_separator     = ' '
           TABLES
                DATA_TAB                = IT_INFILE
           EXCEPTIONS
                FILE_OPEN_ERROR         = 1
                FILE_READ_ERROR         = 2
                NO_BATCH                = 3
                GUI_REFUSE_FILETRANSFER = 4
                INVALID_TYPE            = 5
                NO_AUTHORITY            = 6
                UNKNOWN_ERROR           = 7
                BAD_DATA_FORMAT         = 8
                HEADER_NOT_ALLOWED      = 9
                SEPARATOR_NOT_ALLOWED   = 10
                HEADER_TOO_LONG         = 11
                UNKNOWN_DP_ERROR        = 12
                ACCESS_DENIED           = 13
                DP_OUT_OF_MEMORY        = 14
                DISK_FULL               = 15
                DP_TIMEOUT              = 16
                OTHERS                  = 17.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CLEAR V_COUNT_INFILE.
      DESCRIBE TABLE IT_INFILE LINES V_COUNT_INFILE.
    Determine if input file has data
      IF V_COUNT_INFILE EQ 0.
        MESSAGE A001(ZFI).
        EXIT.
      ELSE.
        CONCATENATE 'Number of records read from input file  '(002)
                    P_INFILE
                    ': ' INTO V_TEXT.
        WRITE: / V_TEXT, V_COUNT_INFILE LEFT-JUSTIFIED.
      ENDIF.
    ENDFORM.                    " f_get_local_data
    *&      Form  F_GET_INPUT_DATA
          Getting the data from apllication server
    FORM F_GET_INPUT_DATA.
      DATA: LV_FILNAM LIKE FILENAME-FILEEXTERN."File name
      LV_FILNAM = P_INFILE.
    Opening Dataset
      OPEN DATASET LV_FILNAM FOR INPUT IN TEXT MODE.
    Read legacy input file into internal table for furthing processing
      DO.
        CLEAR IT_INFILE.
        READ DATASET P_INFILE INTO IT_INFILE.
        IF SY-SUBRC NE 0.
          EXIT.
        ENDIF.
        ADD 1 TO V_COUNT_INFILE.
      ENDDO.
    Determine if input file has data
      IF V_COUNT_INFILE EQ 0.
        MESSAGE A001(ZFI).
        EXIT.
      ELSE.
        CONCATENATE 'Number of records read from input file  '(002)
                    P_INFILE
                    ': ' INTO V_TEXT.
        WRITE: / V_TEXT, V_COUNT_INFILE LEFT-JUSTIFIED.
        EXIT.
      ENDIF.
    closing dataset
      CLOSE DATASET LV_FILNAM.
    ENDFORM.
    *&      Form  f_populate_data
          Populate data
    FORM F_POPULATE_DATA.
      CLEAR: X_INFILE,IT_SUCCESS,V_SUC_REC.
      REFRESH IT_SUCCESS.
      SORT IT_INFILE BY TAX_ID_NO INVOICE_NO.
      CONCATENATE '/int/' SY-SYSID '/' SY-MANDT '/in/IR853_FB01.dat'
                                                         INTO V_FILE.
      CONDENSE V_FILE NO-GAPS.
    Open the dataset
      OPEN DATASET V_FILE FOR OUTPUT IN TEXT MODE.
      IF SY-SUBRC EQ 0.
        LOOP AT IT_INFILE.
          X_INFILE = IT_INFILE.
          AT FIRST.
    To populate BGR00 structure
            PERFORM F_POPULATE_BGR00.
            TRANSFER BGR00 TO V_FILE.
          ENDAT.
          AT NEW INVOICE_NO.
    To populate BBKPF structure
            PERFORM F_POPULATE_BBKPF.
            TRANSFER BBKPF TO V_FILE.
    To populate BBSEG structure Credit
            PERFORM POPULATE_BBSEG_C.
            TRANSFER BBSEG TO V_FILE.
          ENDAT.
    To populate BBKPF structure Debit
          PERFORM POPULATE_BBSEG_D.
          TRANSFER BBSEG TO V_FILE.
          CLEAR:X_INFILE.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " f_populate_data
    *&      Form  f_display_report
          Display error report
    FORM F_DISPLAY_REPORT.
    Open the dataset
      OPEN DATASET P_ERR FOR OUTPUT IN TEXT MODE.
      IF SY-SUBRC EQ 0.
        LOOP AT IT_ERRORS.
    Transfer the error records to error file on application server
          TRANSFER IT_ERRORS TO P_ERR.
        ENDLOOP.
      ENDIF.
    Closing the dataset
      CLOSE DATASET  P_ERR.
      IF NOT IT_ERRORS[] IS INITIAL.
        FORMAT COLOR 1 INTENSIFIED OFF.
        SKIP 2.
        WRITE:/1(673) 'ERROR REPORT'(H01) CENTERED.
        ULINE /1(673).
        WRITE:/(4)'S.No'(005),
                SY-VLINE,
               (10) 'Tax Id No'(006),
               SY-VLINE,
               (12) 'Invoice No'(007),
               SY-VLINE,
               (8) 'Rec Type'(008),
               SY-VLINE,
               (6) 'Seq No'(009),
               SY-VLINE,
               (8) 'Batch No'(010),
               SY-VLINE,
               (8) 'UserID'(011),
               SY-VLINE,
               (8) 'NU1'(012),
               SY-VLINE,
               (11) 'Inv Amt'(013),
               SY-VLINE,
               (8) 'Inv Date'(014),
               SY-VLINE,
               (10) 'G/L Org ID'(015),
               SY-VLINE,
               (4) 'NU4'(012),
               SY-VLINE,
               (4) 'NU5'(012),
               SY-VLINE,
               (4) 'NU6'(012),
               SY-VLINE,
               (4) 'NU7'(012),
               SY-VLINE,
               (11) 'NU8'(012),
               SY-VLINE,
               (4) 'NU9'(012),
               SY-VLINE,
               (10) 'PO No'(016),
               SY-VLINE,
               (30) 'Inv Desc'(017),
               SY-VLINE,
               (10) 'Voucher No'(018),
               SY-VLINE,
               (10) 'Inv LinNo'(019),
               SY-VLINE,
               (11) 'Inv Lin Amt'(020),
               SY-VLINE,
               (9) 'Led ID-1'(021),
               SY-VLINE,
               (9) 'Led ID-2'(022),
               SY-VLINE,
               (15) 'Pri Sub Acc-1'(023),
               SY-VLINE,
               (15) 'Pri Sub Acc-2'(024),
               SY-VLINE,
               (15) 'Dept Win Lgr'(025),
               SY-VLINE,
               (5) 'NU2'(012),
               SY-VLINE,
               (6) 'NU3'(012),
               SY-VLINE,
               (11) 'Dist Amt'(026),
               SY-VLINE,
               (8) 'Inv Type'(027),
                SY-VLINE,
               (12) 'PO Line No'(028),
               SY-VLINE,
               (15) 'Inv Line Amt'(029),
               SY-VLINE,
               (5) 'NU10'(012),
               SY-VLINE,
               (13) 'NU11'(012),
               SY-VLINE,
               (5) 'NU12'(012),
               SY-VLINE,
               (6) 'NU13'(012),
               SY-VLINE,
               (5) 'NU14'(012),
               SY-VLINE,
               (5) 'NU15'(012),
               SY-VLINE,
               (200) 'Message'(030),
               SY-VLINE.
        FORMAT COLOR 6 INTENSIFIED OFF.
        LOOP AT IT_ERRORS.
          WRITE:/(4) SY-TABIX,
                SY-VLINE,
               (10) IT_ERRORS-TAX_ID_NO,
               SY-VLINE,
               (12) IT_ERRORS-INVOICE_NO,
               SY-VLINE,
               (8) IT_ERRORS-RECORD_TYPE,
               SY-VLINE,
               (6) IT_ERRORS-SEQ_NO,
               SY-VLINE,
               (8) IT_ERRORS-BATCH_NO,
               SY-VLINE,
               (8) IT_ERRORS-USERID,
               SY-VLINE,
               (8) IT_ERRORS-NU1,
               SY-VLINE,
               (11) IT_ERRORS-INV_HEADER_AMT,
               SY-VLINE,
               (8) IT_ERRORS-INVOICE_DATE,
               SY-VLINE,
               (10) IT_ERRORS-GL_ORG_ID,
               SY-VLINE,
               (4) IT_ERRORS-NU4,
               SY-VLINE,
               (4) IT_ERRORS-NU5,
               SY-VLINE,
               (4) IT_ERRORS-NU6,
               SY-VLINE,
               (4) IT_ERRORS-NU7,
               SY-VLINE,
               (11) IT_ERRORS-NU8,
               SY-VLINE,
               (4) IT_ERRORS-NU9,
               SY-VLINE,
               (10) IT_ERRORS-PONUMBER,
               SY-VLINE,
               (30) IT_ERRORS-INV_DESC,
               SY-VLINE,
               (10) IT_ERRORS-VOUCHER_NO,
               SY-VLINE,
               (10) IT_ERRORS-INV_LINE_NO,
               SY-VLINE,
               (11) IT_ERRORS-INV_LINE_AMT,
               SY-VLINE,
               (9) IT_ERRORS-LEDGER_ID1,
               SY-VLINE,
               (9) IT_ERRORS-LEDGER_ID2,
               SY-VLINE,
               (15) IT_ERRORS-PRI_SUBACCT1,
               SY-VLINE,
               (15) IT_ERRORS-PRI_SUBACCT2,
               SY-VLINE,
               (15) IT_ERRORS-DEPT_WIN_LDGR,
               SY-VLINE,
               (5) IT_ERRORS-NU2,
               SY-VLINE,
               (6) IT_ERRORS-NU3,
               SY-VLINE,
               (11) IT_ERRORS-DIST_AMT,
               SY-VLINE,
               (8) IT_ERRORS-INV_TYPE,
               SY-VLINE,
               (12) IT_ERRORS-PO_LINE_NO,
               SY-VLINE,
               (15) IT_ERRORS-INV_LINE_AMT_D,
               SY-VLINE,
               (5) IT_ERRORS-NU10,
               SY-VLINE,
               (13) IT_ERRORS-NU11,
               SY-VLINE,
               (5) IT_ERRORS-NU12,
               SY-VLINE,
               (6) IT_ERRORS-NU13,
               SY-VLINE,
               (5) IT_ERRORS-NU14,
               SY-VLINE,
               (5) IT_ERRORS-NU15,
               SY-VLINE,
               (200) IT_ERRORS-MSG,
               SY-VLINE.
        ENDLOOP.
        ULINE /1(673).
      ENDIF.
    ENDFORM.                    " f_display_report
    *&      Form  f_select_data
    Selection of GL, Costcenter, vendor data
    FORM F_SELECT_DATA.
      DATA:L_DEPT(4) TYPE N. "Legacy department
      CLEAR:IT_GL, IT_COSTCTR, IT_LFA1, IT_SUBACCT, IT_TAXID , IT_SUM.
      REFRESH:IT_GL, IT_COSTCTR, IT_LFA1, IT_SUBACCT, IT_TAXID,IT_SUM.
      SORT IT_INFILE BY TAX_ID_NO INVOICE_NO.
    *Looping at input file
      LOOP AT IT_INFILE.
        X_INFILE = IT_INFILE.
    *Summing the invoice line items amount and moving the sum to it_sum
        IT_SUM-TAX_ID_NO = IT_INFILE-TAX_ID_NO.
        IT_SUM-INVOICE_NO  = IT_INFILE-INVOICE_NO.
        IT_SUM-SUM2 = IT_INFILE-INV_LINE_AMT.
        COLLECT IT_SUM.
        CLEAR IT_SUM.
    *Storing Primary Sub Account data
        IT_SUBACCT-PRYACT1 = IT_INFILE-PRI_SUBACCT1.
        IT_SUBACCT-PRYACT2 = IT_INFILE-PRI_SUBACCT2.
        APPEND IT_SUBACCT.
        CLEAR IT_SUBACCT.
    *Storing Ledger ID data
        CONCATENATE IT_INFILE-LEDGER_ID1 IT_INFILE-LEDGER_ID2 INTO
        IT_LEDGER-LGR_ID.
        L_DEPT = IT_INFILE-DEPT_WIN_LDGR.
        IT_LEDGER-DEPT = L_DEPT.
        APPEND IT_LEDGER.
        CLEAR IT_LEDGER.
    *Storing Tax ID data
        IT_TAXID-TAXID1 = IT_INFILE-TAX_ID_NO.
        IT_TAXID-TAXID2 = IT_INFILE-TAX_ID_NO.
        APPEND IT_TAXID.
        CLEAR IT_TAXID.
        CONDENSE IT_INFILE-INVOICE_NO.
        IT_INVNO-XBLNR = IT_INFILE-INVOICE_NO.
        APPEND IT_INVNO.
        CLEAR IT_INVNO.
      ENDLOOP.
      SORT IT_SUBACCT BY PRYACT1  PRYACT2.
      SORT IT_LEDGER BY LGR_ID DEPT.
      SORT IT_TAXID BY TAXID1 TAXID2.
      SORT IT_SUM  BY TAX_ID_NO INVOICE_NO.
      SORT IT_INVNO BY XBLNR.
      DELETE ADJACENT DUPLICATES FROM IT_SUBACCT COMPARING PRYACT1  PRYACT2.
      DELETE ADJACENT DUPLICATES FROM IT_LEDGER COMPARING LGR_ID DEPT.
      DELETE ADJACENT DUPLICATES FROM IT_TAXID COMPARING TAXID1 TAXID2.
      IF NOT IT_INVNO[] IS INITIAL.
        SELECT BUKRS
               BELNR
               XBLNR
               INTO TABLE IT_BKPF
               FROM BKPF
               FOR ALL ENTRIES IN IT_INVNO
               WHERE BUKRS = P_BUKRS AND
                     GJAHR = SY-DATUM+0(4) AND
                     BLART = C_DOCTYPE AND
                     XBLNR = IT_INVNO-XBLNR.
      ENDIF.
      IF NOT IT_SUBACCT[] IS INITIAL.
    *Selecting G/L Account from General Ledger Z Table
        SELECT SAP_GL_ACCOUNT
        LGCY_SYSTEM
        LGCY_PRIME_ACCT
        LGCY_SUB_ACCT FROM ZFGLT_GL_PRI_SUB
        INTO TABLE IT_GL
        FOR ALL ENTRIES IN IT_SUBACCT
        WHERE LGCY_SYSTEM = C_FADS AND
               LGCY_PRIME_ACCT = IT_SUBACCT-PRYACT1 AND
               LGCY_SUB_ACCT = IT_SUBACCT-PRYACT2.
        IF SY-SUBRC  = 0.
          SORT IT_GL BY SAP_GL_ACCOUNT
          LGCY_SYSTEM
          LGCY_PRIME_ACCT
          LGCY_SUB_ACCT.
        ENDIF.
        IF NOT IT_LEDGER[] IS INITIAL.
    *Selecting cost center from Cost Center Z Table
          SELECT COST_OBJECT
          LGCY_LDGR
          LGCY_DEPT FROM ZFCFT_CTR_DPT_LG
          INTO TABLE IT_COSTCTR
          FOR ALL ENTRIES IN IT_LEDGER
          WHERE LGCY_LDGR = IT_LEDGER-LGR_ID AND
                LGCY_DEPT = IT_LEDGER-DEPT.
          IF SY-SUBRC = 0.
            SORT IT_COSTCTR BY COST_OBJECT
            LGCY_LDGR
            LGCY_DEPT.
          ENDIF.
        ENDIF.
        IF NOT IT_TAXID[] IS INITIAL.
    *Selecting vendor no from vendor master data
          SELECT A~LIFNR
                 B~BUKRS
                 A~STCD1
                 A~STCD2
                 FROM LFA1 AS A JOIN LFB1 AS B
                 ON ALIFNR = BLIFNR
                 INTO TABLE IT_LFA1
                 FOR ALL ENTRIES IN IT_TAXID
                 WHERE BUKRS = P_BUKRS AND
                (  STCD1 = IT_TAXID-TAXID1 OR
                  STCD2 = IT_TAXID-TAXID2 ).
        ENDIF.
      ENDIF.
    ENDFORM.                    " f_select_data
    *&      Form  f_validate_data
             Validation of input file data
    FORM F_VALIDATE_DATA.
      DATA:L_ERRFLAG TYPE C,              "Error flag
           L_DEPT(4) TYPE N,              "Department
           L_LGR_ID(4) TYPE C,            "Ledger ID
           LV_NO_OF_VENDORS TYPE I,       "No of vendors
           L_SUM(11) TYPE P DECIMALS 2,   "Sum
           LV_MSG1(30) TYPE C,            "Message
           LV_MSG2(25) TYPE C,            "Message
           LV_MSG3(6) TYPE C,             "Message
           LV_MSG4(31) TYPE C,            "Message
           LV_MSG5(53) TYPE C,            "Message
           LV_MSG6(30) TYPE C,            "Message
           LV_MSG7(50) TYPE C.            "Message
      LOOP AT IT_INFILE.
        CLEAR:LV_MSG1,LV_MSG2, LV_MSG3,LV_MSG4,LV_MSG5, LV_MSG6, LV_MSG7.
        CLEAR L_ERRFLAG.
        SORT IT_SUM BY TAX_ID_NO
                       INVOICE_NO.
        CLEAR IT_SUBACCT.
    Validating Primary Sub Acct1 and Acct2.
        READ TABLE IT_GL WITH KEY LGCY_SYSTEM = C_FADS
                   LGCY_PRIME_ACCT = IT_INFILE-PRI_SUBACCT1
                   LGCY_SUB_ACCT  = IT_INFILE-PRI_SUBACCT2 .
        IF SY-SUBRC <> 0.
          LV_MSG1 = 'Primary Sub Acct1 and Acct2'(035).
          L_ERRFLAG = 'X'.
        ENDIF.
        MOVE IT_INFILE-DEPT_WIN_LDGR TO L_DEPT.
        MOVE L_DEPT TO IT_INFILE-DEPT_WIN_LDGR.
        CONCATENATE IT_INFILE-LEDGER_ID1 IT_INFILE-LEDGER_ID2 INTO
    L_LGR_ID.
        CLEAR: IT_COSTCTR.
    Validating Ledger id & department
        READ TABLE IT_COSTCTR WITH KEY LGCY_LDGR = L_LGR_ID
                                 LGCY_DEPT = IT_INFILE-DEPT_WIN_LDGR.
        IF SY-SUBRC <> 0.
          LV_MSG2 = 'Ledger id & department'(036).
          L_ERRFLAG = 'X'.
        ENDIF.
    Validating Tax ID
        CLEAR:IT_LFA1.
        READ TABLE IT_LFA1 WITH KEY STCD2 = IT_INFILE-TAX_ID_NO..
        IF SY-SUBRC <> 0.
          READ TABLE IT_LFA1 WITH KEY STCD1 = IT_INFILE-TAX_ID_NO..
          IF SY-SUBRC <> 0.
            LV_MSG3 = 'Tax ID'(041).
            L_ERRFLAG = 'X'.
          ENDIF.
        ENDIF.
    Checking for no of vendors selected based on tax id. If no of vendors
    selected are more than 1 or 0 then error out the record
        LV_NO_OF_VENDORS = 0.
        LOOP AT IT_LFA1 WHERE STCD1 = IT_INFILE-TAX_ID_NO OR
                              STCD2 = IT_INFILE-TAX_ID_NO.
          LV_NO_OF_VENDORS = LV_NO_OF_VENDORS + 1.
        ENDLOOP.
        IF LV_NO_OF_VENDORS = 0.
          LV_MSG6 = 'No vendor found for TAXID'(037).
          L_ERRFLAG = 'X'.
        ELSEIF LV_NO_OF_VENDORS > 1.
          LV_MSG4 = 'More than one vendor for Tax id'(038).
          L_ERRFLAG = 'X'.
        ENDIF.
    Checking whether KU Document already exists for this Invoice No
        CLEAR IT_INVNO.
        READ TABLE IT_BKPF WITH KEY XBLNR = IT_INFILE-INVOICE_NO.
        IF SY-SUBRC = 0.
          LV_MSG7 = 'KU Document already exists for this Invoice No '(042).
          L_ERRFLAG = 'X'.
        ENDIF.
    Checking whether the invoice header amt is equal to the line items amt
        CLEAR IT_SUM.
        READ TABLE IT_SUM WITH KEY TAX_ID_NO = IT_INFILE-TAX_ID_NO
                       INVOICE_NO = IT_INFILE-INVOICE_NO BINARY SEARCH.
        CLEAR L_SUM.
        L_SUM = IT_INFILE-INV_HEADER_AMT.
        IF L_SUM <> IT_SUM-SUM2.
      LV_MSG5 = 'Header amt is not equal to the sum of all line items'(039).
          L_ERRFLAG = 'X'.
        ENDIF.
    Moving error records to error internal table
        IF L_ERRFLAG = 'X'.
          MOVE IT_INFILE TO IT_ERRORS.
        CONCATENATE 'Invalid:'(040) LV_MSG1 LV_MSG2 LV_MSG3 LV_MSG4 LV_MSG5
                 LV_MSG6 LV_MSG7 INTO IT_ERRORS-MSG SEPARATED BY SPACE.
          APPEND IT_ERRORS.
          CLEAR : IT_ERRORS.
    Deleting all the errors records from the processing internal table
    and moving them to error table
          V_ERR = V_ERR + 1.
          IT_INFILE-ERROR = 'X'.
          MODIFY IT_INFILE TRANSPORTING ERROR.
          CLEAR IT_INFILE.
        ENDIF.
      ENDLOOP.
      DELETE IT_INFILE WHERE ERROR = 'X'.
    Deleting all the line items from the processing internal table where
    atleast one line item is error one
      SORT IT_ERRORS BY TAX_ID_NO
                        INVOICE_NO.
      CLEAR V_ERR_REC.
      LOOP AT IT_ERRORS.
        DELETE IT_INFILE WHERE TAX_ID_NO = IT_ERRORS-TAX_ID_NO AND
                               INVOICE_NO = IT_ERRORS-INVOICE_NO.
        AT NEW INVOICE_NO.
          V_ERR_REC = V_ERR_REC + 1.
        ENDAT.
      ENDLOOP.
    ENDFORM.                    " f_validate_data
    *&      Form  f_error_data
          Processing error data
    FORM F_ERROR_DATA.
      DELETE IT_ERROR WHERE MSG = 'Error in document: BKPFF $ D01030'(E02).
      SORT IT_ERROR BY TAX_ID_NO INVOICE_NO.
      LOOP AT IT_INFILE.
        X_INFILE = IT_INFILE.
        READ TABLE IT_ERROR WITH KEY TAX_ID_NO = IT_INFILE-TAX_ID_NO
                          INVOICE_NO = IT_INFILE-INVOICE_NO BINARY SEARCH.
        IF SY-SUBRC = 0.
          AT NEW INVOICE_NO.
            V_ERR_REC = V_ERR_REC + 1.
          ENDAT.
          MOVE X_INFILE TO IT_ERRORS.
          IT_ERRORS-MSG = IT_ERROR-MSG.
          APPEND IT_ERRORS.
          CLEAR IT_ERRORS.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " f_error_data
    *&      Form  f_display_suc_report
          Display success report
    FORM F_DISPLAY_SUC_REPORT.
      FORMAT COLOR OFF.
      FORMAT COLOR 1 INTENSIFIED OFF.
      SKIP 2.
      WRITE:/1(150) 'SUCCESS REPORT'(S01) CENTERED.
      ULINE /1(150).
      WRITE:/1 SY-VLINE,
             2 'Doc No'(031),
            13 SY-VLINE,
            14 'Company code'(032),
            26 SY-VLINE,
            27 'Fiscal Year'(033),
            40 SY-VLINE,
            41 'Message'(034),
           150 SY-VLINE.
      FORMAT COLOR OFF.
      FORMAT COLOR 5 INTENSIFIED OFF.
      LOOP AT IT_SUCCESS.
        WRITE:/1 SY-VLINE,
                 2 IT_SUCCESS-DOCNUM,
                13 SY-VLINE,
                14 IT_SUCCESS-BUKRS,
                26 SY-VLINE,
                27 IT_SUCCESS-FISYR,
                40 SY-VLINE,
                41 IT_SUCCESS-MSG,
               150 SY-VLINE.
      ENDLOOP.
      ULINE /1(150).
    ENDFORM.                    " f_display_suc_report
    *&      Form  F_populate_bgr00
    To populate BGR00 structure
    FORM F_POPULATE_BGR00.
      PERFORM F_INIT_STRUCTURES USING 'BGR00' C_NODATA.
      CLEAR V_SESS.
      CONCATENATE C_SESS SY-DATUM+4(4) INTO V_SESS SEPARATED BY '-'.
      BGR00-STYPE  = '0'.
      BGR00-GROUP  = V_SESS.
      BGR00-MANDT  = SY-MANDT.
      BGR00-USNAM  = SY-UNAME.
      BGR00-START  = SPACE.
      BGR00-XKEEP  = 'X'.
    ENDFORM.                    " F_populate_bgr00
    *&      Form  F_init_structures
       Form to initialise structures
    FORM F_INIT_STRUCTURES USING TABNAME  LIKE DNTAB-TABNAME
                               I_NODATA LIKE C_NODATA.
      REFRESH IT_NAMETAB.
      CLEAR IT_NAMETAB.
      CALL FUNCTION 'NAMETAB_GET'
           EXPORTING
                LANGU          = SY-LANGU
                TABNAME        = TABNAME
           TABLES
                NAMETAB        = IT_NAMETAB
           EXCEPTIONS
                NO_TEXTS_FOUND = 1.
      IF SY-SUBRC = 0.
        LOOP AT IT_NAMETAB.
          CLEAR V_CHAR.
       CONCATENATE  IT_NAMETAB-TABNAME '-' IT_NAMETAB-FIELDNAME INTO V_CHAR.
          ASSIGN (V_CHAR) TO <F1>.
          <F1> = I_NODATA.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " INIT_STRUCTURES
    *&      Form  f_populate_bbkpf
    To populate BBKPF structure
    FORM F_POPULATE_BBKPF.
      DATA:LV_DAT LIKE BKPF-BUDAT.
      PERFORM F_INIT_STRUCTURES USING 'BBKPF' C_NODATA.
    To post Header record.
      BBKPF-STYPE = '1'.
      BBKPF-TCODE = 'FB01'.
      CLEAR LV_DAT.
      LV_DAT = SY-DATUM.
      WRITE LV_DAT TO BBKPF-BUDAT.
      CLEAR LV_DAT.
      LV_DAT = X_INFILE-INVOICE_DATE.
      WRITE LV_DAT TO BBKPF-BLDAT.
      BBKPF-BLART = C_DOCTYPE.
      BBKPF-BUKRS = P_BUKRS..
      BBKPF-WAERS = X_T001-WAERS.
      BBKPF-XBLNR = X_INFILE-INVOICE_NO.
    ENDFORM.                    " f_populate_bbkpf
    *&      Form  populate_bbseg_c
    To populate BBSEG structure Credit
    FORM POPULATE_BBSEG_C.
      PERFORM F_INIT_STRUCTURES USING 'BBSEG' C_NODATA.
      BBSEG-STYPE = '2'.
      BBSEG-TBNAM = 'BBSEG'.
      BBSEG-NEWBS = '31'.
      READ TABLE IT_LFA1 WITH KEY STCD2 = X_INFILE-TAX_ID_NO .
      IF SY-SUBRC  = 0.
        BBSEG-NEWKO = IT_LFA1-LIFNR.
      ELSE.
        READ TABLE IT_LFA1 WITH KEY STCD1 = X_INFILE-TAX_ID_NO .
        IF SY-SUBRC  = 0.
          BBSEG-NEWKO = IT_LFA1-LIFNR.
        ENDIF.
      ENDIF.
      BBSEG-WRBTR = X_INFILE-INV_HEADER_AMT.
      BBSEG-SGTXT = X_INFILE-INV_DESC.
    ENDFORM.                    " populate_bbseg_c
    *&      Form  POPULATE_BBSEG_D
    To populate BBSEG structure Debit
    FORM POPULATE_BBSEG_D.
      DATA:L_LGR_ID(4) TYPE C. "ledger id
      CLEAR L_LGR_ID.
      PERFORM F_INIT_STRUCTURES USING 'BBSEG' C_NODATA.
      BBSEG-STYPE = '2'.
      BBSEG-TBNAM = 'BBSEG'.
      BBSEG-NEWBS = '40'.
    *Fetching G/L account
      READ TABLE IT_GL WITH KEY LGCY_SYSTEM = C_FADS
                     LGCY_PRIME_ACCT = X_INFILE-PRI_SUBACCT1
                     LGCY_SUB_ACCT  = X_INFILE-PRI_SUBACCT2.
      IF SY-SUBRC = 0.
        BBSEG-NEWKO  = IT_GL-SAP_GL_ACCOUNT.
      ENDIF.
      BBSEG-WRBTR = X_INFILE-INV_LINE_AMT.
      CONCATENATE X_INFILE-LEDGER_ID1 X_INFILE-LEDGER_ID2 INTO
    L_LGR_ID.
    *Fetching  costcenter
      READ TABLE IT_COSTCTR WITH KEY LGCY_LDGR = L_LGR_ID
                               LGCY_DEPT = X_INFILE-DEPT_WIN_LDGR.
      IF SY-SUBRC = 0.
        BBSEG-KOSTL = IT_COSTCTR-COST_OBJECT.
      ENDIF.
      BBSEG-SGTXT = X_INFILE-INV_DESC.
    ENDFORM.                    " POPULATE_BBSEG_D
    *&      Form  f_submit_rfbibloo
         Submit the program to rfbibloo
    FORM F_SUBMIT_RFBIBLOO.
    Submitting the file for RFBIBL00
      SUBMIT RFBIBL00 WITH DS_NAME = V_FILE
                      WITH CALLMODE = 'B'
                      WITH MAX_COMM = '9999'
                      WITH XINF = 'X'
                      AND RETURN.
    Process the session if created successfully
      IF SY-SUBRC = 0.
        SUBMIT RSBDCSUB  WITH MAPPE    = V_SESS
                         WITH Z_VERARB = 'X'
                         WITH FEHLER = ''
                         EXPORTING LIST TO MEMORY
                         AND RETURN.
        IF SY-SUBRC  = 0.
    Displaying the sessions data
          PERFORM F_SESSION_LIST.
        ENDIF.
      ENDIF.
    ENDFORM.                    " f_submit_rfbibloo
    *&      Form  f_session_list
          Displaying the sessions data
    FORM F_SESSION_LIST.
      DATA:LV_UCOMM LIKE SY-UCOMM. "usercommand
      CALL FUNCTION 'LIST_FROM_MEMORY'
           TABLES
                LISTOBJECT = IT_LIST
           EXCEPTIONS
                NOT_FOUND  = 1
                OTHERS     = 2.
      IF NOT IT_LIST[] IS INITIAL.
        CALL FUNCTION 'DISPLAY_LIST'
    EXPORTING
      FULLSCREEN                  = 'X'
      CALLER_HANDLES_EVENTS       =
         IMPORTING
           USER_COMMAND                =  LV_UCOMM
          TABLES
            LISTOBJECT                  = IT_LIST
       EXCEPTIONS
         EMPTY_LIST                  = 1
         OTHERS                      = 2
      ENDIF.
    ENDFORM.                    " f_session_list

  • WebUtil Help:WUC-015

    Hi,all.
    I have installed WebUtil and modified formsweb.cfg,default.env and orion-web.xml etc.
    But when I run WebUtil Demo I got error:
    WUC-015:You Form must contain the following Bean for this function to be available:oracle.forms.webutil.browser.BrowserFunctions.
    Please help

    here is my orion-web.xml:
    <?xml version="1.0"?>
    <!DOCTYPE orion-web-app PUBLIC "-//Evermind//DTD Orion Web Application 2.3//EN" "http://xmlns.oracle.com/ias/dtds/orion-web.dtd">
    <orion-web-app
         deployment-version="9.0.2.0.0"
         jsp-cache-directory="./persistence"
         temporary-directory="./temp"
         servlet-webdir="/servlet/"
    >
         <context-param-mapping name="configFileName">D:\Oracle9iDS/forms90/server/formsweb.cfg</context-param-mapping>
         <virtual-directory virtual-path="/html" real-path="D:\Oracle9iDS/tools/web90/html" />
         <virtual-directory virtual-path="/java" real-path="D:\Oracle9iDS/forms90/java" />
         <virtual-directory virtual-path="/jinitiator" real-path="D:\Oracle9iDS/jinit" />
         <virtual-directory virtual-path="/webutil" real-path="D:\Oracle9iDS/forms90/webutil/lib" />
         <session-tracking cookies="disabled" />
    </orion-web-app>
    ##############################3
    forms90web.cfg:
    # $Id: formsweb.cfg,v 1.23 2002/01/25 06:51:41 oraforms Exp $
    # formsweb.cfg - Forms Servlet default configuration file
    # This file defines parameter values used by the FormsServlet (f90servlet)
    # DEFAULT CONFIGURATIONS
    # These are the default settings. Any of them may be overridden in the
    # Named Configurations section. If they are not overridden, then the
    # values here will be used.
    # System Paremeters cannot be overridden in the URL. User Parameters can.
    # SYSTEM PARAMETERS
    # These have fixed names and give information required by the Forms
    # Servlet in order to function. They cannot be specified in the URL query
    # string. But they can be overriden in a named configuration (see below).
    # Some parameters specify file names: if the full path is not given,
    # they are assumed to be in the same directory as this file. If a path
    # is given, then it should be a physical path, not a URL.
    baseHTML=base.htm
    baseHTMLjinitiator=D:\Oracle9iDS\forms90\webutil\server\webutiljini.htm
    #baseHTMLjinitiator=basejini.htm
    baseHTMLjpi=basejpi.htm
    baseHTMLie=baseie.htm
    HTMLdelimiter=%
    # WorkingDirectory defaults to <oracle_home>/forms90 if unset.
    workingDirectory=
    envFile=default.env
    # The next parameter specifies how to execute the Forms applet under
    # Microsoft Internet Explorer 5.x. Put IE=native if you want the
    # Forms applet to run in the browser's native JVM.
    IE=JInitiator
    # USER PARAMETERS
    # These match variables (e.g. %form%) in the baseHTML file. Their values
    # may be overridden by specifying them in the URL query string
    # (e.g. "http://myhost.mydomain.com/servlet/f90servlet?form=myform&width=700")
    # or by overriding them in a specific, named configuration (see below)
    # 1) Runform arguments:
    form=test.fmx
    userid=
    # These settings support running and debugging a form from the Builder:
    otherparams=debug=%debug% buffer_records=%buffer% debug_messages=%debug_messages% array=%array% query_only=%query_only% quiet=%quiet% render=%render% host=%host% port=%port% record=%record% tracegroup=%tracegroup% log=%log% term=%term%
    debug=no
    buffer=no
    debug_messages=no
    array=no
    query_only=no
    quiet=yes
    render=no
    host=
    port=
    record=
    tracegroup=
    log=
    term=
    # 2) HTML page title, attributes for the BODY tag, and HTML to add before and
    # after the form:
    pageTitle=Oracle9iAS Forms Services
    HTMLbodyAttrs=
    HTMLbeforeForm=
    HTMLafterForm=
    # 3) Values for the Forms applet parameters:
    serverURL=/forms90/l90servlet
    codebase=/forms90/java
    imageBase=DocumentBase
    ##<michael wang>
    width =100%
    height =100%
    separateFrame=false
    splashScreen=
    background=
    lookAndFeel=Oracle
    colorScheme=teal
    logo=
    formsMessageListener=
    recordFileName=
    serverApp=default
    # The following archive settings are for
    # archive_jini - settings for JInitiator
    # archive_ie - settings for IE native JVM
    # archive - settings for all other cases (Java Plugin, Appletviewer, etc)
    archive_jini=f90all_jinit.jar
    archive_ie=f90all.cab
    archive=f90all.jar
    ##<michael wang> for WebUtil
    webUtilArchive=/forms90/webutil/webutil.jar,/forms90/webutil/jacob.jar
    # Number of times client should retry if a network failure occurs. Only
    # change after having read the documentation.
    networkRetries=0
    # 4) Parameters for JInitiator (used with Windows clients)
    # Page displayed to Netscape users to allow them to download JInitiator.
    # If you create your own page, you should set this parameter to point to it.
    jinit_download_page=/forms90/jinitiator/us/jinit_download.htm
    # Parameters related to the version of JInitiator.
    jinit_classid=clsid:CAFECAFE-0013-0001-0009-ABCDEFABCDEF
    jinit_exename=jinit.exe#Version=1,3,1,9
    jinit_mimetype=application/x-jinit-applet;version=1.3.1.9
    # 5) Parameters for the Java Plugin (used with non-Windows clients)
    # Page displayed to users to allow them to download the JPI
    # (NOTE: you should check this page and possibly change the settings)
    jpi_download_page=http://java.sun.com/products/plugin/1.3/plugin-install.html
    # Parameters related to the version of the Java Plugin
    jpi_classid=clsid:8AD9C840-044E-11D1-B3E9-00805F499D93
    jpi_codebase=http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0
    jpi_mimetype=application/x-java-applet;version=1.3
    # 6) EM config parameter
    # Set this to "1" to enable Enterprise Manager to track Forms processes
    em_mode=0
    # 6) OID Config parameters (for Single Sign-On)
    oid_formsid=%OID_FORMSID%
    oracle_home=D:\Oracle9iDS
    # NAMED CONFIGURATIONS
    # You may define your own specific, named configurations (sets of parameters)
    # by adding special sections as illustrated in the following examples.
    # Note that you need only specify the parameters you want to change. The
    # default values (defined above) will be used for all other parameters.
    # Use of a specific configuration can be requested by including the text
    # "config=<your_config_name>" in the query string of the URL used to run
    # a form. For example, to use the sepwin configuration, your could issue
    # a URL like "http://myhost.mydomain.com/servlet/f90servlet?config=sepwin".
    # Example 1: configuration to run forms in a separate browser window with
    # "generic" look and feel (include "config=sepwin" in the URL)
    [sepwin]
    separateFrame=True
    lookandfeel=Generic
    # Example 2: configuration affecting users of MicroSoft Internet Explorer 5.x.
    # Forms applet will run under the browser's native JVM rather than
    # using Oracle JInitiator.
    [ienative]
    IE=native
    # Example 3: configuration forcing use of the Java Plugin in all cases
    # (even if the client browser is on Windows)
    [jpi]
    baseHTMLJInitiator=basejpi.htm
    baseHTMLie=basejpi.htm
    # Example 4: configuration running the Forms ListenerServlet in debug mode
    # (debug messages will be written to the servlet engine's log file)
    [debug]
    serverURL=/servlet/l90servlet/debug
    [webutil]
    pageTitle=Oracle9iAS Forms Services - WebUtil
    webUtilArchive=webutil.jar
    WebUtilLogging=off
    WebUtilLoggingDetail=normal
    WebUtilErrorMode=Alert
    #baseHTMLjinitiator=D:\Oracle9iDS\forms90\webutil\server\webutiljini.htm
    archive_jini=f90all_jinit.jar
    archive=f90all.jar
    lookAndFeel=oracle
    envFile=webutil.env
    forms90.conf
    # $Id: forms90.conf,v 1.8 2002/03/01 01:11:53 pkuhn Exp $
    # Name
    # forms90.conf
    # Purpose
    # Apache mod_oc4j and mod_jserv configuration file for Forms 9i Services.
    # This file should be included into the Oracle Apache HTTP Listener
    # configuration file (typically by adding an include statement to the
    # oracle_apache.conf file)
    # Remarks
    # If Forms is to be used with JServ, the jserv.properties file needs editing
    # to add the "forms90" servlet zone with properties file forms90.properties
    # Notes
    # Virtual paths: We use AliasMatch when defining virtual paths for
    # security reasons (prevents directory browsing).
    # Virtual path mapping for Forms Java jar and class files (codebase)
    AliasMatch ^/forms90/java/(..*) "D:\Oracle9iDS/forms90/java/$1"
    # Virtual path for JInitiator downloadable executable and download page
    AliasMatch ^/forms90/jinitiator/(..*) "D:\Oracle9iDS/jinit/$1"
    # Virtual path for runform.htm (used to run a form for testing purposes)
    AliasMatch ^/forms90/html/(..*) "D:\Oracle9iDS/tools/web90/html/$1"
    #<michael wang>
    AliasMatch ^/forms90/webutil/(..*) "D:\Oracle9iDS/forms90/webutil/lib/$1"
    #<michael wang>
    # Configuration for JServ (if mod_jserv.c is available and not mod_oc4j.c)
    <IfModule mod_jserv.c>
    # Only configure for JServ if mod_oc4j is NOT available:
    <IfModule !mod_oc4j.c>
    # Virtual path mapping for FormsServlet and ListenerServlet.
    # Purpose: paths to invoke the servlets should be /forms90/f90servlet
    # and /forms90/l90servlet respectively.
    # We map f90servlet to servlet.if90, and l90servlet to servlet.ifl90.
    # The apJServAction directives (below) will then remap those.
    AliasMatch ^/forms90/f90servlet(.*) "/servlet.if90"
    AliasMatch ^/forms90/l90servlet(.*) "/servlet.ifl90"
    ApJServMount /forms90/servlet /forms90
    # Let the servlets be called by file extension (e.g /servlet.if90)
    ApJServAction .if90 /forms90/servlet/f90servlet
    ApJServAction .ifl90 /forms90/servlet/l90servlet
    # Prevent access to the Forms Servlets by paths other than
    # /forms90/f90servlet and /forms90/l90servlet.
    # 1. Prevent access via the .if90 and .ifl90 file extensions:
    <LocationMatch ^.*\.if.*90>
    order deny,allow
    deny from all
    </LocationMatch>
    # 2. Stop access by class (by paths like
    # /forms90/servlet/oracle.forms.servlet.FormsServlet)
    <LocationMatch ^/forms90/servlet/oracle\.forms.*>
    order deny,allow
    deny from all
    </LocationMatch>
    </IfModule>
    </IfModule>
    # Config. for OC4J
    <IfModule mod_oc4j.c>
    Oc4jMount /forms90 OC4J_BI_Forms
    Oc4jMount /forms90/f90servlet OC4J_BI_Forms
    Oc4jMount /forms90/f90servlet/* OC4J_BI_Forms
    Oc4jMount /forms90/l90servlet OC4J_BI_Forms
    Oc4jMount /forms90/l90servlet/* OC4J_BI_Forms
    </IfModule>
    ########################3
    webutil.cfg
    # webutil.cfg - WebUtil default configuration file
    # This file provides all of the configuration settings
    # for webutil. These are divided into the following
    # sections:
    # 1. Logging Options
    # 2. Installation Options
    # 3. FileUpload and Download Options
    # 4. Untranslatable Strings
    # 5. Translatable Strings
    # 1. Server Side Logging Options for logging errors and log messages
    # You must set Enabled to true to allow mid tier logging without this
    # mid tier logging will not take place no matter what PL/SQL or URL
    # options are supplied to switch it on
    # Once logging is enabled the other settings come into play
    # Details
    # file : Defines the file name and location of the log file.
    # Note that WebUtil does no log file management you may
    # need to manually clean this file up from time to time
    # enabled : Can be TRUE or FALSE
    # errorsonly : Can be TRUE or FALSE setting to true will ensure that
    # only errors and not normal informational log messages
    # are written to the log file
    # For product use this would normally be set to TRUE
    # connections: Can be TRUE or FALSE setting to true will cause each connection
    # from a form using WebUtil to write into the log as it sets up.
    logging.file=
    logging.enabled=FALSE
    logging.errorsonly=FALSE
    logging.connections=FALSE
    # 2. Installation Options
    # WebUtil needs to download some files to the client in order to perform
    # certain integration operations such as OLE or Registry Access
    # These files are downloaded the first time that you access one of the
    # functions than needs them
    # You have to define the location of these files on the server
    # Details
    # syslib.location: The vitual path to the directory holding the
    # the webutil library files on the server side
    # this must either be an absolute URL or a url
    # URL that is relative to the documentbase
    # syslib.<os>.<package>.<n>: The name(s) of the libraries required for particular
    # webutil beans
    # The format of this is name|size|version|showDownloadDialog
    # multiple libraries can be downloaded per package but
    # ensure that the <n> values are consecutive and start at 1
    install.syslib.location=/webutil
    ## Do not change the following lines unless instructed to do so
    install.syslib.0.7.1=jacob.dll|94208|1.0|true
    install.syslib.0.9.1=JNIsharedstubs.dll|65582|1.0|true
    install.syslib.0.9.2=d2kwut60.dll|192512|1.0|true
    ## But you can add your own libraries in here
    #install.syslib.0.user.1=testwebutil.dll|204872|1.0|true
    # 3. Upload / Download options
    # For the file upload and download options you can define the default
    # locations on the server that webutil can use as a work area
    # Optionally you can switch upload and download off
    # Details
    # transfer.database.enabled: Can be TRUE or FALSE - allows you to disable
    # upload and download direct from the database
    # server.
    # transfer.appsrv.enabled: Can be TRUE or FALSE - allows you to disable
    # upload and download direct from the application
    # server.
    # transfer.appsrv.workAreaRoot: The root of the location in which WebUtil can
    # store temporary files uploaded from the client.
    # This location is always readable and writable
    # no matter what the settings in appsrv.read and
    # appsrv.write are.
    # This setting is required if you need the
    # Client side READ /WRITE_IMAGE_FILE procs
    # transfer.appsrv.accessControl:Can be TRUE or FALSE - allows you to indicate
    # that uploads and downloads can only occur from
    # the directories named in the
    # transfer.appsrv.read.n and transfer.appsrv.write.n
    # entries and their subdirecories. If this setting
    # is FALSE transfers can happen anywhere.
    # transfer.appsrv.read.<n>: List of directory names that downloads can read
    # from.
    # transfer.appsrv.write.<n>: List of directory names that uploads can write
    # to.
    #NOTE: By default the file transfer is disabled as a security measure
    transfer.database.enabled=FALSE
    transfer.appsrv.enabled=FALSE
    transfer.appsrv.workAreaRoot=c:\temp
    transfer.appsrv.accessControl=TRUE
    #List transfer.appsrv.read.<n> directories
    transfer.appsrv.read.1=c:\temp
    #List transfer.appsrv.write.<n> directories
    transfer.appsrv.write.1=c:\temp
    # 4. Untranslatable Strings
    # These errors can happen early in the initialisation process before we
    # have the client locale information to use to detect the correct
    # language version for the error
    EN.msg.error.error008=WUC-008: Server side logging was requested but no log file was specified - logging is disabled
    # 5. Translatable Strings
    # The following properties represent Strings displayed in various server
    # side error messages
    # They are available here to allow customisation
    # Messages are in the Format "<countrycode>.msg.key
    # The message reading code picks up the country code automatically from the
    # client. If the required country code cannot be found then the english (EN)
    # message is displayed as a default.
    # You may alter the EN versions of each key, but do not remove them!
    # General Dialog titles
    EN.msg.install.progress.title=WebUtil Install
    EN.msg.install.progress.subtitle=Downloading required libraries; Please wait...
    EN.msg.errordialog.title=WebUtil Error
    # App Server side errors
    EN.msg.error.error007=WUC-007: Unable to write to WebUtil logging file
    EN.msg.error.error015=WUC-015: Your Form must contain the following Bean for this function to be available:
    EN.msg.error.error408=WUH-408: The WebUtil Client code sent back a bad Process ID - Please report this error
    EN.msg.error.error110=WUT-110: Database LOB is of zero length
    EN.msg.error.error111=WUT-111: Database LOB is un-initialised
    EN.msg.error.error112=WUT-112: Invalid open mode for Blob. Value should be W or R
    EN.msg.error.error113=WUT-113: Too many rows match the supplied where clause
    EN.msg.error.error114=WUT-114: SQL Error
    EN.msg.error.error115=WUT-115: Checksum Failed
    EN.msg.error.error116=WUT-116: Transfer already in progress
    EN.msg.error.error117=WUT-117: Application Server file name cannot be null
    EN.msg.error.error118=WUT-118: Application Server file does not exist or is of zero length
    EN.msg.error.error119=WUT-119: Error reading data from Application Server file
    EN.msg.error.error120=WUT-120: Zero bytes read from Application Server file
    EN.msg.error.error121=WUT-121: This file transfer has been forbidden by the Adminstrator
    EN.msg.error.error122=WUT-122: Java Functions are not available on the Appliciation Server
    EN.msg.error.error123=WUT-123: The webutil.jar file cannot be found on the Appliciation Server Classpath - Some file transfer functions will not work.
    EN.msg.error.error124=WUT-124: Unable write data on the application server
    EN.msg.error.error125=WUT-125: Checksum error closing file on application server
    EN.msg.error.error126=WUT-126: Error closing application server file
    EN.msg.error.error127=WUT-127: Unable to create workarea
    EN.msg.error.error128=WUT-128: Exception creating workarea
    #German versions of the Dialog Titles
    DE.msg.install.progress.title=WebUtil Installation
    DE.msg.install.progress.subtitle=Ben�tigte Bibliotheken werden geladen; Bitte warten ...
    DE.msg.errordialog.title=WebUtil Fehler
    #German versions of the Errors
    DE.msg.error.error007=WUC-007: Kann nicht auf die WebUtil Log Datei zugreifen
    DE.msg.error.error015=WUC-015: Folgende Bean muss in der Form enthalten sein um diese Funktion zu nutzen:
    DE.msg.error.error408=WUH-408: Der WebUtil Client Code hat eine ung�ltige Prozess ID zur�ckgegeben - Bitte melden Sie diesen Fehler
    DE.msg.error.error110=WUT-110: Datenbank LOB hat eine L�nge von Null
    DE.msg.error.error111=WUT-111: Datenbank LOB ist nicht initialisiert
    DE.msg.error.error112=WUT-112: Ung�ltiger Modus zum �ffnen eines Blobs. Wert muss W oder R sein
    DE.msg.error.error113=WUT-113: Zu viele Reihen entsprechen der angegebenen Bedingung
    DE.msg.error.error114=WUT-114: SQL Fehler
    DE.msg.error.error115=WUT-115: Checksummen Fehler
    DE.msg.error.error116=WUT-116: �bertragung erfolgt bereits
    DE.msg.error.error117=WUT-117: Ein g�ltiger Dateiname auf dem Applikation Server ist erforderlich
    DE.msg.error.error118=WUT-118: Datei auf dem Applikation Server fehlt oder hat eine L�nge von Null
    DE.msg.error.error119=WUT-119: Fehler beim Lesen der Datei auf dem Applikations Server
    DE.msg.error.error120=WUT-120: Es konnte kein Byte vom Applikation Server gelesen werden
    DE.msg.error.error121=WUT-121: Die �bertragung dieser Datei wurde vom Administrator unterbunden
    DE.msg.error.error122=WUT-122: Java Funktionen sind auf dem Applikations Server nicht verf�gbar
    DE.msg.error.error123=WUT-123: Die Datei webutil.jar befindet sich nicht im CLASSPATH des Applikations Servers - Einige Datei�bertragungsfunktionen stehen somit nicht zur Verf�gung
    DE.msg.error.error124=WUT-124: Es konnte nicht schreibend auf den Applikations Server zugegriffen werden
    DE.msg.error.error125=WUT-125: Checksummen Fehler beim Schlie�en der Datei auf dem Applikations Server
    DE.msg.error.error126=WUT-126: Fehler beim Schlie�en der Datei auf dem Applikations Server
    DE.msg.error.error127=WUT-127: Der Arbeitsbereich konnte nicht erstellt werden
    DE.msg.error.error128=WUT-128: Ausnahmefehler beim Erstellen des Arbeitsbereiches
    #French versions of the Dialog Titles
    FR.msg.install.progress.title=WebUtil Installation
    FR.msg.install.progress.subtitle=Ben�tigte Bibliotheken werden geladen; Bitte warten ...
    FR.msg.errordialog.title=WebUtil Fehler
    #French versions of the Errors
    FR.msg.error.error007=WUC-007: Ecriture impossible dans le fichier de log WebUtil
    FR.msg.error.error015=WUC-015: Votre forme doit contenir le Bean suivant pour que cette fonction soit disponible:
    FR.msg.error.error408=WUH-408: Le client Webutil a renvoy?un numero de process erron?- Contactez votre administrateur
    FR.msg.error.error110=WUT-110: LOB dans la base de donn�es a une longueur de zero
    FR.msg.error.error111=WUT-111: LOB dans la base de donn�es n'est pas initialis?
    FR.msg.error.error112=WUT-112: Mode d'ouverture invalide pour un BLOB. La valeur doit �tre W ou R
    FR.msg.error.error113=WUT-113: Trop de lignes renvoy�es pour cette clause where
    FR.msg.error.error114=WUT-114: Erreur SQL
    FR.msg.error.error115=WUT-115: Echec du Checksum
    FR.msg.error.error116=WUT-116: Transfer d�j?en progr�s
    FR.msg.error.error117=WUT-117: Le nom du fichier sur le serveur d'application ne peut �tre null
    FR.msg.error.error118=WUT-118: Le nom du fichier sur le serveur d'application n'existe pas ou a une taille de zero
    FR.msg.error.error119=WUT-119: Erreur en lecture des donn�es provenant du fichier sur le serveur d'application
    FR.msg.error.error120=WUT-120: Zero bytes lu ?partir du fichier sur le serveur d'application
    FR.msg.error.error121=WUT-121: Ce transfert de fichier est interdit par l'administrateur
    FR.msg.error.error122=WUT-122: Java Fonctions non disponibles sur le serveur d'application
    FR.msg.error.error123=WUT-123: Le fichier webutil.jar n'est pas present dans le Classpath du serveur d'application - Certaines fonctions de transfert de fichiers ne fonctioneront pas
    FR.msg.error.error124=WUT-124: Impossible d'�crire sur le serveur d'application
    FR.msg.error.error125=WUT-125: Erreur de Checksum en fermant le fichier sur le serveur d'application
    FR.msg.error.error126=WUT-126: Erreur pendant la fermeture du fichier sur le serveur d'application
    FR.msg.error.error127=WUT-127: Creation de la Workarea impossible
    FR.msg.error.error128=WUT-128: Exception pendant la creation de la workarea
    webutil.env
    #A sample .ENV file for use with WebUtil note the following important Points:
    # 1. The webutil.jar file is in the classpath so that the upload to app server will work
    # 2. The FORMS90_PATH includes the directory which holds the webutil.pll
    # 3. The WEBUTIL_CONFIG parameter is defined to point at the webutil.cfg file
    # !! If you re-use this env file then rememeber to change the paths !!
    ORACLE_HOME=D:\Oracle9iDS
    FORMS90_PATH=D:\Oracle9iDS\forms90\webutil\forms
    CLASSPATH=D:\Oracle9i\jlib\debugger.jar;D:\Oracle9i\jlib\ewt3.jar:D:\Oracle9i\jlib\share.jar;D:\Oracle9i\jlib\utj90.jar;D:\Oracle9i\jdk\jre\lib\rt.jar;D:\Oracle9iDS\forms90\webutil\lib\webutil.jar
    WEBUTIL_CONFIG=D:\Oracle9iDS\forms90\webutil\server\webutil.cfg
    I've double checked my configuration many times.
    but the error WUC-015 still exist, and the webutil-demo
    failed to run.

  • Anyone can explain this program to me?

    import java.util.List;
    import java.util.LinkedList;
    import java.util.Iterator;
    public class Lab_02
         public static List getLinesOfText(int m)
    {      List lines = new LinkedList();     
              StringBuffer line = new StringBuffer();
              for( int i = 0; i < m; i++ )
    {         for( int j = 0; j < m; j++ )           
                   line.append( j < i ? " ": Integer.toString(i%10) );
         lines.add(line.toString());
                   line.setLength(0);
                   return lines;
         public static void main(String args[])
         int n = 15;
                   if( args.length > 0 )
                   try
         {            n = Integer.parseInt(args[0]);
         catch( NumberFormatException nfe )
         {        String msg = nfe.getMessage();
              System.out.println(msg);
         Iterator lineIterator = getLinesOfText(n).iterator();
         while(lineIterator.hasNext())
              System.out.println(lineIterator.next());

      public static void main(String[] args) {
        int n = 15;
        if( args.length > 0 ) {                     // if an argument was entered
          try { n = Integer.parseInt(args[0]); }    // change it to an int
          catch( NumberFormatException nfe ) {      // if bad format
         String msg = nfe.getMessage();          // print a message
         System.out.println(msg);
    //  call getLinesOfText(with the above number, it returns a List),
    //  get an iterator for that list, and
    //  assign that iterator to lineIterator
          Iterator lineIterator = getLinesOfText(n).iterator();
    //  loop through the iterator printing each value
          while(lineIterator.hasNext()) System.out.println(lineIterator.next());
      public static List getLinesOfText(int m) {   // m = count from call above
        List lines = new LinkedList();             // make a LinkedList, assign to lines
        StringBuffer line = new StringBuffer();    // make a StringBuffer, assign to line
        for( int i = 0; i < m; i++ ) {             // loop m times
          for( int j = 0; j < m; j++ ) {           // for each value of i, loop m times
    // append either a space or the string representation of i modulo 10
    // to the StringBuffer depending on whether j is less that i
    // (modulo = remainder after division by 10)
         line.append( j < i ? " ": Integer.toString(i%10) );
    // Add the string representation of line (a StringBuffer) to the linkedlist lines
          lines.add(line.toString());
    // Clear the StringBuffer
          line.setLength(0);
    // return the linked list
        return lines;
      }

  • Webutil images

    Hi All,
    I have a problem in using the webutil hope can get some help here
    I have provided an option to attach scanned documents and images on the form where in the path of it will be stored on the form but the image will be loaded from the physical drive when ever a user click on the view button.
    It is working fine when im on the server itself .
    When i try to attach one file from the client machine then it is giving me the error.
    The source for attaching the image and for viewing is followed here
    ***** when button pressed trigger for attaching
    Declare     
    v_type      varchar2(4);
    v_path     varchar2(100);
    begin
         v_path := Client_Get_file_name(file_filter=>'All Files (*.*) |*.*|Bmp Files (*.Bmp)|*.Bmp|Gif Files(*.gif)|*.gif|Tiff Files (*.Tif)|*.Tif|JPEG Files (*.jpg)|*.jpg|');
         :block2.rdocpath:=v_path ;
         if ltrim(v_path) is not null then
              v_type := substr(v_path,-3);
              Client_Image.Read_image_file(v_path, v_type, 'img.img');
              if form_success then
                   go_item('img.img');
              end if;
         end if;
    end;
    and for viewing the source image
    :parameter.helpitem := :system.cursor_item;
    Declare     
    v_type      varchar2(4);
    v_path     varchar2(100);
    AL NUMBER;
    begin
    IF :block2.rdocpath IS NOT NULL THEN
         V_PATH:=:block2.rdocpath;
         GO_BLOCK('img');
         CLEAR_BLOCK(NO_VALIDATE);
         Client_Image.Read_image_file(v_path, v_type, 'img.img');
         GO_BLOCK('img');
    ELSE
         SET_ALERT_PROPERTY('STOP',ALERT_MESSAGE_TEXT,'Image file not specified');
         al:=show_alert('STOP');
         GO_BLOCK('img');
         CLEAR_BLOCK(NO_VALIDATE);
              GO_BLOCK('RETSHAREPURCH2');
         end if;
    end
    Please help

    This is My Existing Webutil.cfg file .lease have a look at it and advise the need ful
    Thanks & Regards
    # webutil.cfg - WebUtil default configuration file
    # This file provides all of the configuration settings
    # for webutil. These are divided into the following
    # sections:
    # 1. Logging Options
    # 2. Installation Options
    # 3. FileUpload and Download Options
    # 4. Untranslatable Strings
    # 5. Translatable Strings
    # 1. Server Side Logging Options for logging errors and log messages
    # You must set Enabled to true to allow mid tier logging without this
    # mid tier logging will not take place no matter what PL/SQL or URL
    # options are supplied to switch it on
    # Once logging is enabled the other settings come into play
    # Details
    # file : Defines the file name and location of the log file.
    # Note that WebUtil does no log file management you may
    # need to manually clean this file up from time to time
    # enabled : Can be TRUE or FALSE
    # errorsonly : Can be TRUE or FALSE setting to true will ensure that
    # only errors and not normal informational log messages
    # are written to the log file
    # For product use this would normally be set to TRUE
    # connections: Can be TRUE or FALSE setting to true will cause each connection
    # from a form using WebUtil to write into the log as it sets up.
    logging.file=
    logging.enabled=FALSE
    logging.errorsonly=FALSE
    logging.connections=FALSE
    # 2. Installation Options
    # WebUtil needs to download some files to the client in order to perform
    # certain integration operations such as OLE or Registry Access
    # These files are downloaded the first time that you access one of the
    # functions than needs them
    # You have to define the location of these files on the server
    # Details
    # syslib.location: The vitual path to the directory holding the
    # the webutil library files on the server side
    # this must either be an absolute URL or a url
    # URL that is relative to the documentbase
    # syslib.<os>.<package>.<n>: The name(s) of the libraries required for particular
    # webutil beans
    # The format of this is name|size|version|showDownloadDialog
    # multiple libraries can be downloaded per package but
    # ensure that the <n> values are consecutive and start at 1
    install.syslib.location=/webutil
    ## Do not change the following lines unless instructed to do so
    install.syslib.0.7.1=jacob.dll|94208|1.0|true
    install.syslib.0.9.1=JNIsharedstubs.dll|65582|1.0|true
    install.syslib.0.9.2=d2kwut60.dll|192512|1.0|true
    ## But you can add your own libraries in here
    #install.syslib.0.user.1=testwebutil.dll|204872|1.0|true
    # 3. Upload / Download options
    # For the file upload and download options you can define the default
    # locations on the server that webutil can use as a work area
    # Optionally you can switch upload and download off
    # Details
    # transfer.database.enabled: Can be TRUE or FALSE - allows you to disable
    # upload and download direct from the database
    # server.
    # transfer.appsrv.enabled: Can be TRUE or FALSE - allows you to disable
    # upload and download direct from the application
    # server.
    # transfer.appsrv.workAreaRoot: The root of the location in which WebUtil can
    # store temporary files uploaded from the client.
    # This location is always readable and writable
    # no matter what the settings in appsrv.read and
    # appsrv.write are.
    # This setting is required if you need the
    # Client side READ /WRITE_IMAGE_FILE procs
    # transfer.appsrv.accessControl:Can be TRUE or FALSE - allows you to indicate
    # that uploads and downloads can only occur from
    # the directories named in the
    # transfer.appsrv.read.n and transfer.appsrv.write.n
    # entries and their subdirecories. If this setting
    # is FALSE transfers can happen anywhere.
    # transfer.appsrv.read.<n>: List of directory names that downloads can read
    # from.
    # transfer.appsrv.write.<n>: List of directory names that uploads can write
    # to.
    #NOTE: By default the file transfer is disabled as a security measure
    transfer.database.enabled=TRUE
    transfer.appsrv.enabled=TRUE
    transfer.appsrv.workAreaRoot=c:\temp
    transfer.appsrv.accessControl=TRUE
    #List transfer.appsrv.read.<n> directories
    transfer.appsrv.read.1=c:\temp
    #List transfer.appsrv.write.<n> directories
    transfer.appsrv.write.1=c:\temp
    # 4. Untranslatable Strings
    # These errors can happen early in the initialisation process before we
    # have the client locale information to use to detect the correct
    # language version for the error
    EN.msg.error.error008=WUC-008: Server side logging was requested but no log file was specified - logging is disabled
    # 5. Translatable Strings
    # The following properties represent Strings displayed in various server
    # side error messages
    # They are available here to allow customisation
    # Messages are in the Format "<countrycode>.msg.key
    # The message reading code picks up the country code automatically from the
    # client. If the required country code cannot be found then the english (EN)
    # message is displayed as a default.
    # You may alter the EN versions of each key, but do not remove them!
    # General Dialog titles
    EN.msg.install.progress.title=WebUtil Install
    EN.msg.install.progress.subtitle=Downloading required libraries; Please wait...
    EN.msg.errordialog.title=WebUtil Error
    # App Server side errors
    EN.msg.error.error007=WUC-007: Unable to write to WebUtil logging file
    EN.msg.error.error015=WUC-015: Your Form must contain the following Bean for this function to be available:
    EN.msg.error.error408=WUH-408: The WebUtil Client code sent back a bad Process ID - Please report this error
    EN.msg.error.error110=WUT-110: Database LOB is of zero length
    EN.msg.error.error111=WUT-111: Database LOB is un-initialised
    EN.msg.error.error112=WUT-112: Invalid open mode for Blob. Value should be W or R
    EN.msg.error.error113=WUT-113: Too many rows match the supplied where clause
    EN.msg.error.error114=WUT-114: SQL Error
    EN.msg.error.error115=WUT-115: Checksum Failed
    EN.msg.error.error116=WUT-116: Transfer already in progress
    EN.msg.error.error117=WUT-117: Application Server file name cannot be null
    EN.msg.error.error118=WUT-118: Application Server file does not exist or is of zero length
    EN.msg.error.error119=WUT-119: Error reading data from Application Server file
    EN.msg.error.error120=WUT-120: Zero bytes read from Application Server file
    EN.msg.error.error121=WUT-121: This file transfer has been forbidden by the Adminstrator
    EN.msg.error.error122=WUT-122: Java Functions are not available on the Appliciation Server
    EN.msg.error.error123=WUT-123: The webutil.jar file cannot be found on the Appliciation Server Classpath - Some file transfer functions will not work.
    EN.msg.error.error124=WUT-124: Unable write data on the application server
    EN.msg.error.error125=WUT-125: Checksum error closing file on application server
    EN.msg.error.error126=WUT-126: Error closing application server file
    EN.msg.error.error127=WUT-127: Unable to create workarea
    EN.msg.error.error128=WUT-128: Exception creating workarea
    #German versions of the Dialog Titles
    DE.msg.install.progress.title=WebUtil Installation
    DE.msg.install.progress.subtitle=Benötigte Bibliotheken werden geladen; Bitte warten ...
    DE.msg.errordialog.title=WebUtil Fehler
    #German versions of the Errors
    DE.msg.error.error007=WUC-007: Kann nicht auf die WebUtil Log Datei zugreifen
    DE.msg.error.error015=WUC-015: Folgende Bean muss in der Form enthalten sein um diese Funktion zu nutzen:
    DE.msg.error.error408=WUH-408: Der WebUtil Client Code hat eine ungültige Prozess ID zurückgegeben - Bitte melden Sie diesen Fehler
    DE.msg.error.error110=WUT-110: Datenbank LOB hat eine Länge von Null
    DE.msg.error.error111=WUT-111: Datenbank LOB ist nicht initialisiert
    DE.msg.error.error112=WUT-112: Ungültiger Modus zum Öffnen eines Blobs. Wert muss W oder R sein
    DE.msg.error.error113=WUT-113: Zu viele Reihen entsprechen der angegebenen Bedingung
    DE.msg.error.error114=WUT-114: SQL Fehler
    DE.msg.error.error115=WUT-115: Checksummen Fehler
    DE.msg.error.error116=WUT-116: Übertragung erfolgt bereits
    DE.msg.error.error117=WUT-117: Ein gültiger Dateiname auf dem Applikation Server ist erforderlich
    DE.msg.error.error118=WUT-118: Datei auf dem Applikation Server fehlt oder hat eine Länge von Null
    DE.msg.error.error119=WUT-119: Fehler beim Lesen der Datei auf dem Applikations Server
    DE.msg.error.error120=WUT-120: Es konnte kein Byte vom Applikation Server gelesen werden
    DE.msg.error.error121=WUT-121: Die Übertragung dieser Datei wurde vom Administrator unterbunden
    DE.msg.error.error122=WUT-122: Java Funktionen sind auf dem Applikations Server nicht verfügbar
    DE.msg.error.error123=WUT-123: Die Datei webutil.jar befindet sich nicht im CLASSPATH des Applikations Servers - Einige Dateiübertragungsfunktionen stehen somit nicht zur Verfügung
    DE.msg.error.error124=WUT-124: Es konnte nicht schreibend auf den Applikations Server zugegriffen werden
    DE.msg.error.error125=WUT-125: Checksummen Fehler beim Schließen der Datei auf dem Applikations Server
    DE.msg.error.error126=WUT-126: Fehler beim Schließen der Datei auf dem Applikations Server
    DE.msg.error.error127=WUT-127: Der Arbeitsbereich konnte nicht erstellt werden
    DE.msg.error.error128=WUT-128: Ausnahmefehler beim Erstellen des Arbeitsbereiches
    #French versions of the Dialog Titles
    FR.msg.install.progress.title=WebUtil Installation
    FR.msg.install.progress.subtitle=Benötigte Bibliotheken werden geladen; Bitte warten ...
    FR.msg.errordialog.title=WebUtil Fehler
    #French versions of the Errors
    FR.msg.error.error007=WUC-007: Ecriture impossible dans le fichier de log WebUtil
    FR.msg.error.error015=WUC-015: Votre forme doit contenir le Bean suivant pour que cette fonction soit disponible:
    FR.msg.error.error408=WUH-408: Le client Webutil a renvoyé un numero de process erroné - Contactez votre administrateur
    FR.msg.error.error110=WUT-110: LOB dans la base de données a une longueur de zero
    FR.msg.error.error111=WUT-111: LOB dans la base de données n'est pas initialisé
    FR.msg.error.error112=WUT-112: Mode d'ouverture invalide pour un BLOB. La valeur doit être W ou R
    FR.msg.error.error113=WUT-113: Trop de lignes renvoyées pour cette clause where
    FR.msg.error.error114=WUT-114: Erreur SQL
    FR.msg.error.error115=WUT-115: Echec du Checksum
    FR.msg.error.error116=WUT-116: Transfer déjà en progrès
    FR.msg.error.error117=WUT-117: Le nom du fichier sur le serveur d'application ne peut être null
    FR.msg.error.error118=WUT-118: Le nom du fichier sur le serveur d'application n'existe pas ou a une taille de zero
    FR.msg.error.error119=WUT-119: Erreur en lecture des données provenant du fichier sur le serveur d'application
    FR.msg.error.error120=WUT-120: Zero bytes lu à partir du fichier sur le serveur d'application
    FR.msg.error.error121=WUT-121: Ce transfert de fichier est interdit par l'administrateur
    FR.msg.error.error122=WUT-122: Java Fonctions non disponibles sur le serveur d'application
    FR.msg.error.error123=WUT-123: Le fichier webutil.jar n'est pas present dans le Classpath du serveur d'application - Certaines fonctions de transfert de fichiers ne fonctioneront pas
    FR.msg.error.error124=WUT-124: Impossible d'écrire sur le serveur d'application
    FR.msg.error.error125=WUT-125: Erreur de Checksum en fermant le fichier sur le serveur d'application
    FR.msg.error.error126=WUT-126: Erreur pendant la fermeture du fichier sur le serveur d'application
    FR.msg.error.error127=WUT-127: Creation de la Workarea impossible
    FR.msg.error.error128=WUT-128: Exception pendant la creation de la workarea

  • Create a Task, for use in "Deferred Task"

    I am in the processing of creating Deferred Tasks for my Update-User workflow.
    I know how to create these easily. My problem is : the actual "Task" itself, which will be called upon from the Workflow.
    I don't know the proper syntax for it.
    For instance, below is the code I am using for my "Send Email Task". This task is supposed to send an automatic email notification.
    *<?xml version='1.0' encoding='UTF-8'?>*
    *<!DOCTYPE TaskDefinition PUBLIC 'waveset.dtd' 'waveset.dtd'>*
    *<!-- MemberObjectGroups="#ID#Top" authType="UserAdminTask" createDate="Thu Jul 16 15:22:08 EEST 2009" extensionClass="WFProcess" name="Send Email Task" visibility="invisible"-->*
    *<TaskDefinition name='Send Email Task' creator='%STARTUP%Configurator' createDate='1247746928617' lastModifier='%STARTUP%Configurator' lastModDate='1247746928617' repoMod='1247746928170' primaryObjectClass='TaskDefinition' wstype='ProvisioningTask' taskType='Workflow' executor='com.waveset.workflow.WorkflowExecutor' syncControlAllowed='true' execMode='sync' execLimit='0' resultLimit='3600' resultOption='delete' visibility='invisible' progressInterval='0'>*
    *<Extension>*
    *<WFProcess maxSteps='0' audit='true'>*
    *<Variable name='user' input='true'>*
    *<Comments>&#xA; A user view. This is required.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='backgroundProvisioning' input='true'>*
    *</Variable>*
    *<Variable name='provisioningRetryButton' value='true' input='true'>*
    *<Comments>&#xA; Set to "true" to enable the inclusion of a Retry link&#xA; in the task result if the provisioning fails.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='approvals'>*
    *<Comments>&#xA; Returned from the Lighthouse Approval process. Contains the&#xA; approval structure. The approvals.approved variable set if&#xA; all approvals were successful. This is passed into the Notify&#xA; process later for post-provisioning notifications.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='userCreated'>*
    *<Comments>&#xA; Set to "true" from the Provision workflow when the&#xA; Lighthouse account has been created.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='sunset'>*
    *<Comments>&#xA; Object containing information for registering a sunset date/time.&#xA; </Comments>*
    *</Variable>*
    *<Variable name='error'>*
    *<Comments>Set in the event of unusual processing errors.</Comments>*
    *</Variable>*
    *<Variable name='options'>*
    *<Comments>Options to pass to the provisioning task regarding resource&#xA; provisioning.&#xA; </Comments>*
    *</Variable>*
    *<Transition to='end'>*
    *<Comments>&#xA; Terminate if we encounter unusual errors (not provisioning errors).&#xA; </Comments>*
    *<ref>error</ref>*
    *</Transition>*
    *<Activity id='0' name='start'>*
    *<Transition to='Notify'/>*
    *</Activity>*
    *<Activity id='1' name='Notify'>*
    *<Action id='0' name='Email' application='com.waveset.provision.WorkflowServices'>*
    *<Argument name='op' value='notify'/>*
    *<Argument name='template' value='Send Email Now'/>*
    *</Action>*
    *<Transition to='End'/>*
    *</Activity>*
    *<Activity id='2' name='end'>*
    *<WorkflowEditor x='428' y='275'/>*
    *</Activity>*
    *</WFProcess>*
    *</Extension>*
    *<MemberObjectGroups>*
    *<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>*
    *</MemberObjectGroups>*
    *</TaskDefinition>*
    I am not sure if my syntax is correct?
    Any tips?

    Thanks again, sbalu.
    I may have found the error (although, I don't understand what it means).
    Something about *"Missing View"*
    Catalog#format() Entry locale=null, key=SES_WORKITEM_MISSING_VIEW, defVal=SES_WORKITEM_MISSING_VIEW
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info parameters=null
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info tmp=null
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info pattern=Missing view id.
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Info msg=Missing view id.
    20091126 08:28:22.701 TaskThread(0x0052fecf) Catalog#format() Exit returned= Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#addTaskResult() Entry name=Send Email Task, ti=TaskInstance:Send Email Task tdalton
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Entry locale=null, key=SES_WORKITEM_MISSING_VIEW, defVal=SES_WORKITEM_MISSING_VIEW
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info parameters=null
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info tmp=null
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info pattern=Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Info msg=Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) Catalog#format() Exit returned= Missing view id.
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#addTaskResult() Exit void
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data executeOnce= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#launchTask() Exit returned= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Exit returned= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#endObject() Entry no args
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#endObject() Exit void
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processObject() Exit returned= false
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processDeferredTasks() Data idOrName== #ID#6BF7-:B3702F65421:491FD113-:D0E4376B71977D1D
    20091126 08:28:23.092 TaskThread(0x0052fecf) DeferredScanner#processDeferredTasks() Data nameOrId== ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processDeferredTasks() Data object lastMod= 24
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processObject() Entry obj=User:ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processObject() Data tasks= [ { accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 } ]
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processObject() Data task list object= { accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 }
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Entry obj=User:ukaila, trig={ accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 }
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data start= 11/25/09 11:15 AM
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data _now= 11/26/09 8:28 AM
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task definition= CSC Send Email Task
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Entry obj=User:ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Entry type=User, nameOrId=ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Exit void
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#startObject() Exit void
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task template= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task definition= TaskDefinition:Send Email Task
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#processTrigger() Data task template= TaskTemplate:null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Entry obj=User:ukaila, trig={ accountId=ukaila, task=Send Email Task, name=Send Email Task, date=11/25/2009 11:15:00 }, tt=TaskTemplate:null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data taskName= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data generated taskName= Send Email Task ukaila
    20091126 08:28:23.123 TaskThread(0x0052fecf) TaskTemplate#setTaskName(String) Entry no args
    20091126 08:28:23.123 TaskThread(0x0052fecf) TaskTemplate#setTaskName(String) Exit void
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data orgName= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data owner= null
    20091126 08:28:23.123 TaskThread(0x0052fecf) DeferredScanner#launchTask() Data subjectLength= 29,650
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Entry element=[Map: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Entry element=[Map: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info elname=Map
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info regName=Map
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Exit returned= com.waveset.util.XmlObjectFactory$Registration@1edf84f
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Info handler=com.waveset.util.XmlHashMap@493dca
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Entry element=[Locale: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Entry element=[Locale: null]
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info elname=Locale
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info classAtt=null
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Info regName=Locale
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#getConstructor() Exit returned= com.waveset.util.XmlObjectFactory$Registration@77a748
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Info handler=com.waveset.util.XmlLocale@1876e5d
    20091126 08:28:23.123 TaskThread(0x0052fecf) XmlObjectFactory#create(Element) Exit returned= en_US

  • How to view Tidal Job output in a query?

    I am using a query to extract the standard output of a job:
    select jobrun_id, dbms_lob.substr( jobrun_output, 4000, 1 ) 
    from tidal.joboutput
    where  jobrun_id = 686361;
    The query returns output in an XML format:
    <TESXOUTPUT><MSG>Job output data is in XML format. To view job output upgrade your Client to latest version.</MSG><OUTPUT COMP="Y" RUN="1">eJzFVltv2zYUftevOBhQpB1CxXZuDQMXkC9...
    How can I translate this output into readable text?
    Thanks.

    I was running the REST api command to get the job output and received the same result as you. I found a method in the documentation that allows you to get the output in readable form.
    Here it is:
    JobOutput.getOutputContent/id
    where id is the job run id
    Hope that helps :)

  • Unable to open picture cd

    I can not open a picture cd with photos in jpg format, error msg is that the photos are in an unrecognised format

    Drag a couple of images from the CD to the Desktop. Can you import them from there?

  • Who is the caller and who is the callee in this callback pattern?

    Hi,
    Could someone tell me which method is the caller and which is the callee in the following code? Please be as detailed as possible in your explanation.
    Thank you in advance!
    public class TimePrinter implements ActionListener {
         public void actionPerformed(ActionEvent evt) {
              Date now = new Date();
              System.out.println("At the tone, the time is " + now);
              Toolkit.getDefaultToolkit().beep();
    public class TimerTest {
         public static void main(String[] args) {
              ActionListener listener = new TimePrinter();
              int delay = 10000; //Delays 10 seconds
              //Constructs a timer that calls the listener once every 10 seconds.
              Timer t = new Timer(delay, listener);
              t.start();
              JOptionPane.showMessageDialog(null, "Quit program?");
              System.exit(0);
    }

    jverd,
    Thank you again for responding to this thread!
    Here is the code:
    //TimePrinter.java
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    public class TimePrinter implements ActionListener {
          public void actionPerformed(ActionEvent evt) {
                 Date now = new Date();
                 System.out.println("At the tone, the time is " + now);
                 Toolkit.getDefaultToolkit().beep();
    //TimerTest.java
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.Timer;
    import java.util.*;
    import java.awt.*;
    public class TimerTest {
            public static void main(String[] args) {
                    ActionListener listener = new TimePrinter();
                    int delay = 10000; //Delays 10 seconds
                   //Constructs a timer that calls the listener once every 10 seconds.
                   Timer t = new Timer(delay, listener);
                   t.start();
                  JOptionPane.showMessageDialog(null, "Quit program?");
                  System.exit(0);
    }Prior to posting to this forum, I actually have done some research and learned the following:
    "A callback in programming is executable code that is passed as an argument to other code. "
    With this definition, in the above example "actionPerformed" in the TimePrinter class is the executable code, it's being passed to Timer(delay, listener). So the caller here is Timer(delay, listener), callee is the actionPerformed() method, as it is the method that is being called. This is how I interpret it. Am I correct? My question is still which is the caller and callee in this example.
    Note, I don't come here often and didn't even know that you could format the text. I formated my msg as you requested, don't know how the text will turn out.
    Regards,
    Eric
    One more question: I tried formatting by placing my code like this my source, what it did is to place the text in a blue area but didn't indent like the source did (I manually indented it). How do I keep the format as the original code?
    Edited by: ericdunn on Jul 29, 2009 12:40 PM
    Edited by: ericdunn on Jul 29, 2009 12:45 PM

  • Microsoft Office Problems

    Hi
    I bought new Macbook Air. Following problems i have with Microsoft Office 2011 (probably they related to Lion)
    1) Microsoft Word. Try to open a word file. But no russian font was shown on screen. It is shown only some symbols.
    Huge problem for me
    Where i should use encoding or font drivers for Lion and Word
    Finally, i managed to open file by text edit, but text edit is not suitable for me
    2) Microsoft Excel
    My macbook air has been freezed due to some reason. After i restarted i didnt found excel workbook that i was working on.
    I know it should be autosave but i din't find it. And it didn't save it
    3) Microsoft Outlook
    First i received message. It has blue page color and has attachement.
    But when i open message i can not find attachments. So on usual message (without specific format) i can find attachments but when sender has some user format (coloured msg or etc) attachments are not available
    4) Microsoft outlook
    I want to put task. But when i press ok, message closed and i can not see this task in my task list. So tasks are not working at all
    Please help me in resolving this issues, as they are quite important.

    The best place to search/ask about those apps is often in the forums run by the people who make them:
    http://answers.microsoft.com/en-us/mac/forum

  • Dissecting network packets

    Hi,
    I would like to dissect some packets in Java, specifically SIP and RTP packets.
    I have used jpcap to sniff the packets off the network and the contents of the packet are placed in a byte array.
    Does anyone have an idea of how to split this packet up so for example I can see what codecs have been specified, ip source and destination address etc.
    I tried looking at the C source code of Wireshark to give me an idea but it seemed pretty complicated.
    Any suggestions welcome.

    I have read the specs thanks! I am a java n00b though
    so i repeat the "How can i search through a byte
    array looking for when to start and stop?" part of
    question!
    And again this has nothing to do with java. I have done this is C, C++, java, SQL and perl.
    A simple protocol definition would be as follows
            4 byte msg type
            <data>
           Format for Msg type = 'abcd'
           2 byte int
           2 byte data length
           <data>
           1 byte checksum
           Format for Msg type = 'XXXX'
           4 byte data length
           <data>
           1 byte checksum
    The above defines the contents of messge which are significantly different depending on the needs of the messge. Both have variable data and both completely define how one needs to extract that information (excluding various misc things like endianess and character sets.)
    The protocol defines how you extract the data and what it means.
    Generally code based on that can be constructed (and ony constructed) using ifs and for loops. If you are unfamilar with those constructs then you might wish to choose another project. Other than that you start at the beginning of the message (as defined by the protocol) and work you way to the end.

Maybe you are looking for

  • How to  restore ITunes Library from Backup hard drive?

    My computer crashed. I restored it -- but ITunes was wiped clean. I have all my music files and ITunes Library backed up on an external hard drive. How do I get the library from the external drive back to the computer with playlists, artwork and all

  • Cannot view cr2 files in Bridge cs4 & Windows 7

    I can not convert the cr2 files in cs4      nor read them with new Windows 7      Home Edition 64 bit computer Upon      downloading from my camera I am unable to view the images. After      downloading the file, when clicking on the file in Bridge t

  • Oracle client 10.1.0.3.0 connection troubles

    Hello, I have succesfully installed an Oracle client on a linux machine, but I can not connect to a server. I keep getting the well-known ORA-12154 error (TNS could not resolve the connect identifier specified). First i thought it would be a problem

  • Photoshop CS6 3D menu grey out

    Hi everyone. I am now trying to use photoshop CS6 3D features. And I found out that no matter what I select, the 3D menu is still grey out. What should I do to solve this? I see some of you said that your 3D menu is missing because of the graphic car

  • Dvd burning from idvd with strange results

    I have made a short 5 minute movie in FCP and exported it to QuickTime as I have done numerous times before. I created a menu in IDVD and then dragged QT file in. Everything looks great and plays on screen great. Then I burn the DVD. Once done I put