Capture PO errors to log table

Please let me know if there is a way to capture SAP standard errors raised during PO creation into a Z log table.
EX: SAP raises Message 06, message number 882, is there a way to capture this error into a log table.
Thanks for your help.

In PO processing using ME21N/ME22N a lot messages are not issued individually, but are presented in a list in a pop-up window.  Not sure if this is true of the messages you want to capture.
If you look at the following code implemented in the CHECK method of "ME_PROCESS_PO_CUST" BADI, you will see it adds a customer message to this list using the macro MMPUR_MESSAGE from the MM_MESSAGES_MAC include.
Perhaps there is also a macro for reading the messages. 
Even if not, the macro code should show how you could read them and then you could place code in this user exit to get the messages and log the relevent ones to a Z table
[code]
METHOD if_ex_me_process_po_cust~check.
NB: Add Type Group MMMFD to implementing class properties tab
DATA: lt_items TYPE purchase_order_items,
l_item_wa TYPE purchase_order_item,
l_item TYPE mepoitem,
l_total TYPE brtwr,
l_matkl TYPE matkl,
l_flag TYPE c.
INCLUDE mm_messages_mac. "useful macros for message handling
CLEAR: l_total, l_flag.
CALL METHOD im_header->get_items
RECEIVING
re_items = lt_items.
Loop through items and calculate total
LOOP AT lt_items INTO l_item_wa.
CALL METHOD l_item_wa-item->get_data
RECEIVING
re_data = l_item.
l_matkl = l_item-matkl.
l_total = l_total + l_item-brtwr.
Check if any lines missing contract number
IF l_item-konnr IS INITIAL.
l_flag = 'X'.
ENDIF.
ENDLOOP.
IF l_flag = 'X'.
IF l_total > 5000.
mmpur_metafield mmmfd_agreement.
mmpur_message 'E' '06' '999'
'Purchase order over $5000.00 requires a contract' '' '' ''.
invalidate the object
CALL METHOD im_header->invalidate( ).
LOOP AT lt_items INTO l_item_wa.
CALL METHOD l_item_wa-item->invalidate( ).
ENDLOOP.
ENDIF.
ENDIF.
ENDMETHOD.
[/code]
Hope this is of some use.
Andrew

Similar Messages

  • Capture Error Message Log

    How do we capture the Error Message Log generated by the OWB Process Flow (Execution Results window)? I would like to email this message in the process flow when there is an error.

    For this release you cannot capture this. The best thing you can do is email a link to the Runtime Audit Browser.
    We are implementing this in the new release.
    Jean-Pierre

  • Regarding capturing VF01 ERROR logs in a background job

    Hi ,
    We are running a background job that calls transaction VF01 via BDC .
    CALL TRANSACTION 'VF01' USING   bdcdata
                              MODE    S
                              UPDATE  N
                              MESSAGES INTO gt_messtab.
    In some cases billing documents will not be generated. In such cases systems will throw message "Check the log "
    After which we can check the error messages via Menu Edit>logs.
    This error messages (stored in XVBFS internal table) need to captured in the job log  i.e custom programme.
    Unfortunately i could not found any user exits/BADIs that can help me in capturing message.
    Can you please help me how can i solve this issue?
    Thanks in advance
    Manoj
    Edited by: Manoj J on Nov 16, 2011 9:42 AM
    Moderator message : Duplicate post locked, continue with original thread [How to capture error logs of VF01 in a background job log   |Re: How to capture error logs of VF01 in a background job log].
    Edited by: Vinod Kumar on Nov 16, 2011 3:34 PM

    Hi Manoj,
    I had a similar problem.
    I solved it selecting from VBSK the last record of the user regarding elaboration of invoices, and then calling f.m. 'VBSK_ALV_DISPLAY'.
    Otherwise you could call directly transaction "V.21"
    Hope this could help you
    Andrea

  • Error log table and output type

    Hi All,
    While creating an invoice(while saving billing document) is it poosible to capture the error in a log in table?
    And how is this error log table related to the output type?
    Thanks

    You seem to be confusing saving of the billing document with creation of the output. These are two independent updates (LUWs). A document may be saved without any output.
    If there are any errors in the billing document creation, the document just won't be created. Such errors should be captured in the log of the Blling Due list, if it's been run properly.
    To update the processing log for the output, use FM NAST_PROTOCOL_UPDATE.

  • LOG ERRORS failing to capture 2291 errors on UPDATE statement

    We are running Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
    We have often successfully used the error logging clause when performing batch inserts to the database. However, we now have a situation where an UPDATE statement is failing and rolling back upon encountering a foreign-key referential constraint [ORA-02291]. It is successfully recording Check constraint errors [ORA-02290]. The foreign keys are not deferred, and they have nothing to do with any unique constraints or indices on the table that is the target of the UPDATE statement. The Error-logging table was created by using the DBMS_ERRLOG package. We recreated it to make sure that we had not introduced column format errors. The same problem occurs. The UPDATE statement is attempting to update approximately 12000 rows. Any help in understanding this problem would be appreciated.
    Here is the error statement
    ORA-02291: integrity constraint (OIFS.FRAME_FK07) violated - parent key not found
    Here is the problem statement and its surrounding PLSQL block:
    BEGIN <<update_records>>
    UPDATE frame f
    SET (company_name,
    address1_line,
    address2_line,
    address1_city,
    address1_state,
    address1_zip,
    contact1_name,
    contact1_phone_number,
    update_date,
    update_user,
    -- comments,
    facility_name,
    facility_type,
    doing_business_as,
    contact1_phone_ext,
    contact1_fax,
    contact1_email,
    contact2_name,
    contact2_phone_number,
    contact2_phone_ext,
    contact2_fax,
    contact2_email,
    source_survey,
    source_status,
    address2_city,
    address2_state,
    address2_zip,
    facility_location_number,
    attention_line,
    company_official,
    facility_irs_code
    ) =
    (SELECT company_name,
    address1_line,
    address2_line,
    address1_city,
    address1_state,
    address1_zip,
    contact1_name,
    contact1_phone_number,
    SYSDATE,
    user_in,
    facility_name,
    facility_type,
    doing_business_as,
    contact1_phone_ext,
    contact1_fax,
    contact1_email,
    contact2_name,
    contact2_phone_number,
    contact2_phone_ext,
    contact2_fax,
    contact2_email,
    source_survey,
    source_status,
    address2_city,
    address2_state,
    address2_zip,
    facility_location_number,
    attention_line,
    company_official,
    facility_irs_code
    FROM oifs.respondent r
    WHERE r.cin = f.cin
    WHERE f.cin IN
    (SELECT cin
    FROM
    (SELECT cin,
    company_name,
    address1_line,
    address2_line,
    address1_city,
    address1_state,
    address1_zip,
    contact1_name,
    contact1_phone_number,
    facility_name,
    facility_type,
    doing_business_as,
    contact1_phone_ext,
    contact1_fax,
    contact1_email,
    contact2_name,
    contact2_phone_number,
    contact2_phone_ext,
    contact2_fax,
    contact2_email,
    source_survey,
    source_status,
    address2_city,
    address2_state,
    address2_zip,
    facility_location_number,
    attention_line,
    company_official,
    facility_irs_code
    FROM oifs.respondent
    MINUS
    SELECT cin,
    company_name,
    address1_line,
    address2_line,
    address1_city,
    address1_state,
    address1_zip,
    contact1_name,
    contact1_phone_number,
    facility_name,
    facility_type,
    doing_business_as,
    contact1_phone_ext,
    contact1_fax,
    contact1_email,
    contact2_name,
    contact2_phone_number,
    contact2_phone_ext,
    contact2_fax,
    contact2_email,
    source_survey,
    source_status,
    address2_city,
    address2_state,
    address2_zip,
    facility_location_number,
    attention_line,
    company_official,
    facility_irs_code
    FROM oifs.frame
    LOG ERRORS INTO oifs.frame_load_errors
    (job_num || ' ' || TO_CHAR(SYSDATE, 'YYYYMMDD HH24:MI:SS') || ' update')
    REJECT LIMIT UNLIMITED;
    EXCEPTION
    WHEN OTHERS THEN
    ohub.err_pkg.record_and_continue(msg_in => 'problem in updating FRAME rows');
    RAISE;
    END update_records;

    Thank you for your help. It pointed me in the right direction, which was to temporarily disable the triggers. The ORA-02291 errors were then properly captured in the error-logging-table.
    The problem did not appear to be related to the trigger. The problem that was captured in my PLSQL error-handler but not the error-logging-table was an ORA-02291, which was specific to the original table. The trigger-driven processing did not seem to generate any errors (I have PLSQL error-handling logic in there as well).
    I was aware of Tom Kyte's statement, and I knew triggers were dicey when I decided to use them. It seemed the best way to try to ensure database integrity when regular Foreign-Key and Check constraints did not suffice. I am now paying the price for that decision.

  • HI All Capturing the error records in an internal table

    Hi All,
             I am retrieving the data from application server .
            My requirement is to :
         Check if the Measurement Point Id provided in the file is a valid one or not. Query the table EUITRANS by passing the Measurement point Id in the EXT_UI field. If the query is successful, then proceed to next step. If not, log it in the error log with error message DM-001 and proceed with the next Measurement point id.
    so i nee the code for capturing the error log with error message.
    pls provide me ASAP.
    Thanks&Regards,
    Bharat

    Hi,
    if you like do display all messages online have a look at FM:
    'MESSAGES_INITIALIZE'
    'MESSAGE_STORE'
    'MESSAGES_SHOW'
    If you want to write application log look at function group SBAL modules BAL_LOG*. There is also a good documentation in SAPDOCU..
    Kind regards,
    HP

  • How to capture error message log for Tcode MIR7

    Hi ,
    I have a problem to capture the error message outside the tcode which are created by MIR7/MIR0 .
    Are they stored in any database table?
    Is there any other way to access them?
    Anybody knows how to solve this that will be very helpful.
    Thanks,
    Anu

    call transaction 'XK01' using i_bdcdata
                     mode 'N'
                     update 'S'
                     messages into i_bdcmsgcoll.
    if sy-subrc <> 0.
        perform get_error.
            write:/ itab , v_text.
    endif.
    *Form
    form get_error.
    loop at i_bdcmsgcoll.
    CALL FUNCTION 'FORMAT_MESSAGE'
    EXPORTING
       ID              = i_bdcmsgcoll-MSGID
       LANG            = sy-langu
       NO              = i_bdcmsgcoll-MSGNr
       V1              = i_bdcmsgcoll-MSGV1
      V2              = SY-MSGV2
      V3              = SY-MSGV3
      V4              = SY-MSGV4
    IMPORTING
       MSG             = v_text
    EXCEPTIONS
      NOT_FOUND       = 1
      OTHERS          = 2
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    endloop.
    endform.                    " get_error
    Edited by: Bala Krishna on Sep 9, 2008 7:50 PM

  • DML Error logging table in Set base mode

    Hi all,
    In ETL data errors can be handled thru error logging table. Like this example given in the document-
    INSERT /*+ APPEND PARALLEL */
    INTO sales SELECT product_id, customer_id, TRUNC(sales_date), 3,
    promotion_id, quantity, amount
    FROM sales_activity_direct
    LOG ERRORS INTO sales_activity_errors('load_20040802')
    REJECT LIMIT UNLIMITED
    In this example bulk loading is possible even in the presence of errors. The data errors will go in table 'Sales_activity_errors'.
    I want to generate this kind of coding in OWB in set base mode. For that i have to create a error logging table in target schema. How can I reference this table in a mapping? can it be done by shadow table? It's a very important feature in ETL for bulk loading. Is it available in OWB in set based mode?
    Guyzz please check this out and help me..
    Regards,
    Sumanta

    Hi,
    I am not sure if the DML error logging method is avaliable to be used in OWB 10g R2. You can use the data rule method. Create the data rules on the target table. Deploy it from OWB. Create your mappings and then execute them. Two insert statements will be generated. One for loading the target table for loading records where no rules are violated. The other for loading the <target table>_ERR for loading records where one or more error rules are violated.
    Both these statements do a bulk loading. So your purpose will be solved.
    Again you can use the splitter method that has already been mentioned.
    Regards
    -AP

  • DML Error Logging Tables?

    How can I use DML Error Logging Tables with OWB10gR2 (in tab-definition and mappings)?
    btw: what really is a shadow-table?

    Hi,
    What you can do to solve this is to add a Pre-mapping to your mapping which calls a procedure that alters the constraint on the target table in which you use the "EXCEPTIONS INTO <error_table> " clause.
    like:
    PROCEDURE "ENABLE_CONSTR_WITH_EXCEPTIONS"("P_TABLE" IN VARCHAR2,  "P_CONSTRAINT" IN VARCHAR2) IS
    v_table            varchar2(30) := p_table;
    v_constraint          varchar2(30) := p_constraint;
    v_command           varchar2(200);
    e_CannotValidate      exception;
    PRAGMA EXCEPTION_INIT(e_CannotValidate, -2437);
    -- main body
    BEGIN
    /* Enable Constraint and write error into exception table */
      BEGIN
        v_command := 'ALTER TABLE ' || v_table || ' ENABLE CONSTRAINT '|| v_constraint ||' EXCEPTIONS INTO exceptions';
        execute immediate (v_command);
        commit;
      END;
        EXCEPTION
            WHEN e_CannotValidate THEN
               -- In my case when Unique Constraints are violated I will delete the duplicates.
               DELETE_DUPLICATES(v_table, v_constraint);
            WHEN OTHERS THEN
                NULL;  -- enter any exception code here
    END;
    -- End of ENABLE_CONSTR_WITH_EXCEPTIONS;Greetz,
    Ilona Tielke

  • Error log table how to track the run details

    Hi ,
    I am using the log errors concept in oracle and recording the errors.
    My table is employees and I used the
    be low script to create the error log tables.
    BEGIN
      DBMS_ERRLOG.create_error_log (dml_table_name => 'employees');
    END;
    It has created a table called err$_employees;
    I have run the procedure and the procedure has inserted some records into the  table for unique constraint error .
    but when i rerun the same job , again it has inserted the same records whcih has created a proble now .
    How will i figure out that which records are from the first runa dn which are from the second run?
    Also i want to fail my job based on entried in the error log table i created.
    Is it possible to track whats records belong to what instance in error log table.
    hope i am clear abt the requirement i'm looking for ?
    thanks
    sri

    If you look at the documentation you will see you can tag records that are inserted in the error log table e.g.
    insert into employees
    select ...
    from ...
    where ...
    log errors into err$_employees('My Run Identifier')
    You need to construct the string used as a tag so you can identify your individual runs.

  • Capturing Application Error log from SXMB_Moni

    Hi,
    I wanted to capture the error information from Application error log from ECC sxmb_moni and forward that as email alert.
    We have already alert configuration in place with alert category using standard variables. Was wondering if I have to capture application error log from sxmb_moni what would be steps involved. Please let me know if anybody has worked on this and appreciate your help on this.
    Sample Error message from sxmb_moni of ECC system
    MT_Fault
    Error in Application System
    Detailed Information
    Process Order invalid
    Thanks
    Selvam
    Edited by: Selvam_muthu on Jun 23, 2011 5:40 PM

    Hi Selvam,
    As the exception is raised in ECC system, alert cannot be trigger, alert will get trigger when there is a error in PI system. To raise a email, write additional code in ECC to trigger the e-mail with proper error content

  • How to find if an error log table is related to a table....???

    Hi,
    In Oracle 10g , maybe in older version too, there is the capability to create an error log table using the dbms_errlog package and create_error_log procedure...
    For exaample:
    exec dbms_errlog.create_error_log('EMP','EMP_ERROR')
    How to find afterwards that the table EMP has a related table EMP_ERROR where errors during the inserts/updates on table EMP are registered...?????
    Of course the column names in EMP_ERROR table are the same as in EMP .... but it's time consuming method to search like this way...!!!!!
    SQL> exec dbms_errlog.create_error_log('EMP','EMP_ERROR');
    PL/SQL procedure successfully completed
    SQL> DESC EMP_ERROR;
    Name            Type           Nullable Default Comments
    ORA_ERR_NUMBER$ NUMBER         Y                        
    ORA_ERR_MESG$   VARCHAR2(2000) Y                        
    ORA_ERR_ROWID$  UROWID(4000)   Y                        
    ORA_ERR_OPTYP$  VARCHAR2(2)    Y                        
    ORA_ERR_TAG$    VARCHAR2(2000) Y                        
    EMPNO VARCHAR2(4000) Y
    ENAME VARCHAR2(4000) Y
    JOB VARCHAR2(4000) Y
    MGR VARCHAR2(4000) Y
    HIREDATE VARCHAR2(4000) Y
    SAL VARCHAR2(4000) Y
    COMM VARCHAR2(4000) Y
    DEPTNO VARCHAR2(4000) Y                        
    SQL> DESC EMP;
    Name     Type         Nullable Default Comments
    EMPNO    NUMBER(4)                             
    ENAME    VARCHAR2(10) Y                        
    JOB      VARCHAR2(9)  Y                        
    MGR      NUMBER(4)    Y                        
    HIREDATE DATE         Y                        
    SAL      NUMBER(7,2)  Y                        
    COMM     NUMBER(7,2)  Y                        
    DEPTNO   NUMBER(2)    Y          Thanks...
    Sim

    exec dbms_errlog.create_error_log('EMP','EMP_ERROR')
    How to find afterwards that the table EMP has a related table EMP_ERROR
    System@Elic10> create table bla_bla (i int);
    Table created.
    System@Elic10> exec dbms_errlog.create_error_log('BLA_BLA', 'BLA_BLA_ERRS')
    PL/SQL procedure successfully completed.
    System@Elic10> select * from user_tab_comments where table_name = 'BLA_BLA_ERRS';
    TABLE_NAME                     TABLE_TYPE  COMMENTS
    BLA_BLA_ERRS                   TABLE       DML Error Logging table for "BLA_BLA"

  • In which tables are batch input error messages logged?

    does anybody know in which table are the batch input error messages logged?
    I have to display the error messages which have occured during the transaction
    I tried to find out, but i could see only the table BDCMSGCOLL, this table has only the Batch input message number and not the message itself?
    does anybody know about the batch input error messages?

    hi,
    check the sample code below.
    messtab is of type BDCMSGCOLL.
    Call the transaction and then use T100 to get the message.
    DATA: l_mstring(480).
    call transaction using
      REFRESH messtab.
      CALL TRANSACTION tcode USING bdcdata
                       MODE   ctumode
                       UPDATE cupdate
                       MESSAGES INTO messtab.
      l_subrc = sy-subrc.
      SKIP.
      LOOP AT messtab.
        SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
                                  AND   arbgb = messtab-msgid
                                  AND   msgnr = messtab-msgnr.
        IF sy-subrc = 0.
          l_mstring = t100-text.
          IF l_mstring CS '&1'.
            REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
            REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
            REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
            REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
          ELSE.
            REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
            REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
            REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
            REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
          ENDIF.
          CONDENSE l_mstring.
          WRITE: /4 messtab-msgtyp, l_mstring(250).
        ELSE.
          WRITE: /4 messtab.
        ENDIF.
      ENDLOOP.

  • Create Error log table

    I am supposed to insert the records that are not uploaded to the main table into a error log table and email the users about the error records that was not inserted into the table. How am is supposed to do it ?
    I have few more questions.
    What is the best way to upload the data from a file .
    1, I got to either do the batch processing or
    2, I got to browse and uplaod the file thru the APEX application and
    and insert the records.
    I want to know about which tutorial could be the best to read to do the
    about 2 methods and how do i create and insert records into the error log
    table and send the user with the CSv or txt file that contains the error records in both the methods ?
    Will following the below method be the right way for 2nd method ?
    http://oraexplorer.blogspot.com/2007/11/apex-to-upload-text-file-and-write-into.html

    Ok,
    I am trying to insert the records to an existing table from CSV file.
    I am using the below post to do so..
    Re: File Browse, File Upload
    I get some errors executing the htmldb tools package.
    Error at line 27: PLS-00103: Encountered the symbol "/"
    create or replace PACKAGE htmldb_tools
    AS
    -- Utility functions --{{{
    PROCEDURE parse_textarea ( --{{{
    -- Parse a HTML textarea element into the specified HTML DB collection
    -- The c001 element from the collection is used
    -- The parser splits the text into tokens delimited by newlines, spaces
    -- and commas
    p_textarea IN VARCHAR2,
    p_collection_name IN VARCHAR2
    PROCEDURE parse_file( --{{{
    -- Generic procedure to parse an uploaded CSV file into the
    -- specified collection. The first line in the file is expected
    -- to contain the column headings, these are set in session state
    -- for the specified headings item.
    p_file_name IN VARCHAR2,
    p_collection_name IN VARCHAR2,
    p_headings_item IN VARCHAR2,
    p_columns_item IN VARCHAR2,
    p_ddl_item IN VARCHAR2,
    p_table_name IN VARCHAR2 DEFAULT NULL
    END htmldb_tools;
    create or replace PACKAGE BODY htmldb_tools
    AS
    TYPE varchar2_t IS TABLE OF VARCHAR2(32767) INDEX BY binary_integer;
    -- Private functions --{{{
    PROCEDURE delete_collection ( --{{{
    -- Delete the collection if it exists
    p_collection_name IN VARCHAR2
    IS
    BEGIN
    IF (htmldb_collection.collection_exists(p_collection_name))
    THEN
    htmldb_collection.delete_collection(p_collection_name);
    END IF;
    END delete_collection; --}}}
    PROCEDURE csv_to_array ( --{{{
    -- Utility to take a CSV string, parse it into a PL/SQL table
    -- Note that it takes care of some elements optionally enclosed
    -- by double-quotes.
    p_csv_string IN VARCHAR2,
    p_array OUT wwv_flow_global.vc_arr2,
    p_separator IN VARCHAR2 := ','
    IS
    l_start_separator PLS_INTEGER := 0;
    l_stop_separator PLS_INTEGER := 0;
    l_length PLS_INTEGER := 0;
    l_idx BINARY_INTEGER := 0;
    l_quote_enclosed BOOLEAN := FALSE;
    l_offset PLS_INTEGER := 1;
    BEGIN
    l_length := NVL(LENGTH(p_csv_string),0);
    IF (l_length <= 0)
    THEN
    RETURN;
    END IF;
    LOOP
    l_idx := l_idx + 1;
    l_quote_enclosed := FALSE;
    IF SUBSTR(p_csv_string, l_start_separator + 1, 1) = '"'
    THEN
    l_quote_enclosed := TRUE;
    l_offset := 2;
    l_stop_separator := INSTR(p_csv_string, '"', l_start_separator + l_offset, 1);
    ELSE
    l_offset := 1;
    l_stop_separator := INSTR(p_csv_string, p_separator, l_start_separator + l_offset, 1);
    END IF;
    IF l_stop_separator = 0
    THEN
    l_stop_separator := l_length + 1;
    END IF;
    p_array(l_idx) := (SUBSTR(p_csv_string, l_start_separator + l_offset,(l_stop_separator - l_start_separator - l_offset)));
    EXIT WHEN l_stop_separator >= l_length;
    IF l_quote_enclosed
    THEN
    l_stop_separator := l_stop_separator + 1;
    END IF;
    l_start_separator := l_stop_separator;
    END LOOP;
    END csv_to_array; --}}}
    PROCEDURE get_records(p_blob IN blob,p_records OUT varchar2_t) --{{{
    IS
    l_record_separator VARCHAR2(2) := chr(13)||chr(10);
    l_last INTEGER;
    l_current INTEGER;
    BEGIN
    -- Sigh, stupid DOS/Unix newline stuff. If HTMLDB has generated the file,
    -- it will be a Unix text file. If user has manually created the file, it
    -- will have DOS newlines.
    -- If the file has a DOS newline (cr+lf), use that
    -- If the file does not have a DOS newline, use a Unix newline (lf)
    IF (NVL(dbms_lob.instr(p_blob,utl_raw.cast_to_raw(l_record_separator),1,1),0)=0)
    THEN
    l_record_separator := chr(10);
    END IF;
    l_last := 1;
    LOOP
    l_current := dbms_lob.instr( p_blob, utl_raw.cast_to_raw(l_record_separator), l_last, 1 );
    EXIT WHEN (nvl(l_current,0) = 0);
    p_records(p_records.count+1) := utl_raw.cast_to_varchar2(dbms_lob.substr(p_blob,l_current-l_last,l_last));
    l_last := l_current+length(l_record_separator);
    END LOOP;
    END get_records; --}}}
    -- Utility functions --{{{
    PROCEDURE parse_textarea ( --{{{
    p_textarea IN VARCHAR2,
    p_collection_name IN VARCHAR2
    IS
    l_index INTEGER;
    l_string VARCHAR2(32767) := TRANSLATE(p_textarea,chr(10)||chr(13)||' ,','@@@@');
    l_element VARCHAR2(100);
    BEGIN
    l_string := l_string||'@';
    htmldb_collection.create_or_truncate_collection(p_collection_name);
    LOOP
    l_index := instr(l_string,'@');
    EXIT WHEN NVL(l_index,0)=0;
    l_element := substr(l_string,1,l_index-1);
    IF (trim(l_element) IS NOT NULL)
    THEN
    htmldb_collection.add_member(p_collection_name,l_element);
    END IF;
    l_string := substr(l_string,l_index+1);
    END LOOP;
    END parse_textarea; --}}}
    PROCEDURE parse_file( --{{{
    p_file_name IN VARCHAR2,
    p_collection_name IN VARCHAR2,
    p_headings_item IN VARCHAR2,
    p_columns_item IN VARCHAR2,
    p_ddl_item IN VARCHAR2,
    p_table_name IN VARCHAR2 DEFAULT NULL
    IS
    l_blob blob;
    l_records varchar2_t;
    l_record wwv_flow_global.vc_arr2;
    l_datatypes wwv_flow_global.vc_arr2;
    l_headings VARCHAR2(4000);
    l_columns VARCHAR2(4000);
    l_seq_id NUMBER;
    l_num_columns INTEGER;
    l_ddl VARCHAR2(4000);
    BEGIN
    IF (p_table_name is not null)
    THEN
    BEGIN
    execute immediate 'drop table '||p_table_name;
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END;
    l_ddl := 'create table '||p_table_name||' '||v(p_ddl_item);
    htmldb_util.set_session_state('P149_DEBUG',l_ddl);
    execute immediate l_ddl;
    l_ddl := 'insert into '||p_table_name||' '||
    'select '||v(p_columns_item)||' '||
    'from htmldb_collections '||
    'where seq_id > 1 and collection_name='''||p_collection_name||'''';
    htmldb_util.set_session_state('P149_DEBUG',v('P149_DEBUG')||'/'||l_ddl);
    execute immediate l_ddl;
    RETURN;
    END IF;
    BEGIN
    select blob_content into l_blob from wwv_flow_files
    where name=p_file_name;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    raise_application_error(-20000,'File not found, id='||p_file_name);
    END;
    get_records(l_blob,l_records);
    IF (l_records.count < 3)
    THEN
    raise_application_error(-20000,'File must have at least 3 ROWS, id='||p_file_name);
    END IF;
    -- Initialize collection
    htmldb_collection.create_or_truncate_collection(p_collection_name);
    -- Get column headings and datatypes
    csv_to_array(l_records(1),l_record);
    csv_to_array(l_records(2),l_datatypes);
    l_num_columns := l_record.count;
    if (l_num_columns > 50) then
    raise_application_error(-20000,'Max. of 50 columns allowed, id='||p_file_name);
    end if;
    -- Get column headings and names
    FOR i IN 1..l_record.count
    LOOP
    l_headings := l_headings||':'||l_record(i);
    l_columns := l_columns||',c'||lpad(i,3,'0');
    END LOOP;
    l_headings := ltrim(l_headings,':');
    l_columns := ltrim(l_columns,',');
    htmldb_util.set_session_state(p_headings_item,l_headings);
    htmldb_util.set_session_state(p_columns_item,l_columns);
    -- Get datatypes
    FOR i IN 1..l_record.count
    LOOP
    l_ddl := l_ddl||','||l_record(i)||' '||l_datatypes(i);
    END LOOP;
    l_ddl := '('||ltrim(l_ddl,',')||')';
    htmldb_util.set_session_state(p_ddl_item,l_ddl);
    -- Save data into specified collection
    FOR i IN 2..l_records.count
    LOOP
    csv_to_array(l_records(i),l_record);
    l_seq_id := htmldb_collection.add_member(p_collection_name,'dummy');
    FOR i IN 1..l_record.count
    LOOP
    htmldb_collection.update_member_attribute(
    p_collection_name=> p_collection_name,
    p_seq => l_seq_id,
    p_attr_number => i,
    p_attr_value => l_record(i)
    END LOOP;
    END LOOP;
    DELETE FROM wwv_flow_files WHERE name=p_file_name;
    END;
    BEGIN
    NULL;
    END;
    /

  • Unable to capture in Async Hot Log

    Hi,
    I am unable to get the changes captured in async hot log mode of operation. Have verified that DB is in archivelog mode and am able to create change tables, but changes in the source table are not getting propagated. Is it due to logs not getting picked up from the proper place.
    my change_sources view has empty values in all the fields except source_type, source_description and created.
    would appreciate any pointers for what may be missing..or how to go about identifying the problem.
    Thanks,
    RK

    Thank you Patrick. You have helped me before, so thanks again.
    I do not have anything else connected to the firewire ports. I have an external hard drive, but I have tried to capture with and without the hard drive attached. I did recently back up using Carbon Copy Cloner to another hard drive, if anyone thinks this may be the issue.
    I can't recall the exact error message in FCP (I have deleted the program trying to fix the issue, and focus on the capture problem in Quicktime thinking that if Quicktime and iMovie both don't capture, that the problem is not with FCP, but either with the OS or the back end of QT) I can re-install FCP to give you the exact FCP error message if you would like me too. Ie, if the exact error message is necessary.
    Thanks again for your response.

Maybe you are looking for

  • Downloading iTunes 7.02 Problems

    For some reason I keep getting the same error everytime I try to download the newest version of iTunes (7.02) The error message reads: "itunesSetup.exe is not a valid Win32 application" Has this happened to anyone else. How do I fix this?

  • Displaying multiple content_type on one page

    Hello all, I have an application that is getting all of its content from a database, both text and binary and was trying to figure out how to display both the text and the binary data on one page using a SINGLE servlet (it might not be possible). I h

  • Better Photoshop integration for exported jpegs

    Hi Jpegs exported by LR have to be saved with new compression parameters if opened & then worked on in Photoshop. This can be very annoying & time consuming when working with numerous files which need a minor correction (such as dodging & burning whi

  • Problem with Write To Measurement File Express VI not writing to file if file was deleted after the first call (7.1)

    I'm using the Express Write to LabVIEW Measurement File in LV7.1. I have it set to "Save to one file"  and have tried both "Overwrite file" and "Using next available file name" for the "If a file already exists" conditions. The path/filename is passe

  • AP 1522 on pole

    Hi All, I will installed two APs 1522 for mesh network on poles, is it necessary to buy the hand strap tool AIR-BAND-INST-TL and how many ? In the doc, there's a ref too for a Band Hand tool AIR-BAND-IT-TOOL, what's the difference ? Thks for your res