Oracle 8i SQL - Dealing with no records matching a value

Warning: before you read this, please understand I'm no expert on SQL, so it's quite likely I screwed something obvious up...
I'm trying to do a query kind of like the following:
SELECT
BOM.COMPONENT, BOM.QTY_PER, BOM.PARENT, BOM2.PARENT_QTY_PER
FROM
BOM BOM, BOM BOM2
WHERE
BOM2.COMPONENT=BOM.PARENT AND
BOM.TOP_ASSY='ABC-123'
(Don't worry about my punctuation, my company only allows me to do [read-only] queries through Excel, so I don't need the semi-colons)
What I'm doing is pulling information from the bill of materials (BOM) for a particular assembly (BOM.TOP_ASSY). Each assembly has components (BOM.COMPONENT), and each component has a parent part (BOM.PARENT), which it goes into. Each parent part will also have its own parent part, unless the parent part is the assembly for which I'm querying (BOM.TOP_ASSY) - in the example above, the assembly I'm looking for is 'ABC-123'.
This leads me to my problem. Since I'm looking for the QTY_PER for both the component and the parent, I have to refer to two separate copies of the BOM table. And, since BOM.PARENT could equal BOM.TOP_ASSY, and BOM.TOP_ASSY has no parent, so it can't be a component, so it would never be in the column BOM.COMPONENT. Thus, when I run this query, all components that go directly into the top assembly ('ABC-123') are left off the query.
Is there any way to retrieve the records for the components that go directly into the top assembly, and just make BOM2.PARENT_QTY_PER equal to 0? Basically, I only want BOM2.PARENT_QTY_PER to equal something if the parent is also a component, but 0 if it's the top assembly.
Using NVL doesn't help, and since I'm stuck with an Oracle 8i database to query, I can't use CASE...WHEN either (though, I don't even know if this is possible with a case statement or not)...
I don't even know if this is possible, but could someone let me know one way or the other?
Thanks so much!

Hi,
user11033437 wrote:
The whole example with the BOM and BOM2 tables were just an example of what I'm actually doing. What I'm actually doing is much more complex, and since it's all in VBA code, it was much easier for me to make up a simple example then to actually get my SQL out of VBA That's an excellent approach! I suggest you continue with it. Make sure the tiny test situation works as posted, and then, when it does work perfectly, make it a little more like your real case (say, add just one more condition in the WHERE clause), and test again.
(which looks like this:
strSQL = "SELECT "
strSQL = strSQL & "C_BOM.BILL_LEVEL, "
strSQL = strSQL & "C_BOM.COMP_PART_NBR, "
strSQL = strSQL & "C_PART.PART_DESC, " )
But, in the interest of getting my query to work, and hopefully learning a few things in the process, I've extracted my actual SQL, and pasted it below:
SELECT
     C_BOM.BILL_LEVEL,
     C_BOM.COMP_PART_NBR,
     C_PART.PART_DESC,
     C_PART.PART_TYPE,
     C_BOM.QTY_PER,
     C_BOM.BOM_UM,
     C_BOM.BOM_DOC_NBR,
     C_BOM.OPER_NBR,
     C_BILL.COMP_OFF_ADJ,
     C_PART.QTY_ON_HAND,
     P_PART.QTY_ON_HAND,
     NVL(P_BOM.QTY_PER,0)
FROM
     PART C_PART,
     PART P_PART,
     BILL C_BILL,
     V087_BOM C_BOM,
     V087_BOM P_BOM
WHERE
     C_PART.PART_NBR=C_BOM.COMP_PART_NBR AND
     P_PART.PART_NBR=C_BOM.BOM_DOC_NBR AND  --fixed a typo here from extracting from vba
     P_BOM.COMP_PART_NBR (+) = C_BOM.BOM_DOC_NBR AND
     C_BILL.COMP_PART_NBR=C_BOM.COMP_PART_NBR AND 
     C_BILL.BOM_DOC_NBR = C_BOM.BOM_DOC_NBR AND
     ((C_BOM.STATUS = 'RL') AND
     (C_BOM.PART_NBR= 'ABC-123') AND
     (C_BOM.END_EFF_DT>sysdate) AND
     (C_BOM.BEGN_EFF_DT<=sysdate) AND
     (C_BOM.VIEW_CODE<>'E') AND
     (P_BOM.STATUS = 'RL') AND
     (P_BOM.PART_NBR= 'ABC-123') AND
     (P_BOM.END_EFF_DT>sysdate) AND
     (P_BOM.BEGN_EFF_DT<=sysdate) AND
     (P_BOM.VIEW_CODE <> 'E') AND
     (C_BILL.VIEW_CODE <> 'E') AND     <--for some reason my <> is being parsed out here
     (C_BILL.QTY_PER_TYPE <> 0) AND  <--for some reason my <> is being parsed out here
     (C_BILL.END_EFF_DT>sysdate) AND
     (C_BILL.BEGN_EFF_DT<=sysdate))
ORDER BY
     C_BOM.BILL_LEVEL, C_BOM.BOM_DOC_NBRPART is the table with the information associated with each part in the system
BILL is the table with the bill of materials for each assembly in the system
V087_BOM is a view that I didn't create, but seems to compile the full bill of materials (from the BILL table) for a top-level assembly (so, the BOM for that part, and for all of it's sub-assemblies, and all of their sub-assemblies, etc.)
Does that give a clearer picture of what I'm trying to accomplish?
Edited by: user11033437 on Apr 15, 2009 10:07 AM
Fixed a typo where indicated (P_PART_NBR changed to P_PART.PART_NBR)I see where you made the join condition between p_bom and c_bom an outer join:
P_BOM.COMP_PART_NBR (+) = C_BOM.BOM_DOC_NBRThat says: "join the tables like this if possible, but if there's no match, then pretend there was a match in the table marked with the + sign". The resuolting joined row will have bom_doc_nbr (and all the other columns from c_bom), but comp_part_nbr (and all the other columns from p_bom) will be NULL.
One of those columns is status. Your WHERE clause includes the condition:
(P_BOM.STATUS = 'RL')Since all columns from p_bom are NULL in this case, the condition above will fail, even though the first condition succeeded.
You have to add a + to all the conditions in this query that refer to p_bom, including
...     (P_BOM.STATUS (+)      = 'RL')      AND
     (P_BOM.PART_NBR (+)    = 'ABC-123') AND
     (P_BOM.END_EFF_DT (+)  > sysdate)   AND If you want to include rows that have no match in the p_part table, you'll have to make all of its conditions outer-joins, too:
     P_PART.PART_NBR (+) = C_BOM.BOM_DOC_NBRIsn't that annoying about the &lt;&gt; operator? This site treats it as some kind of markup, even inside &#123;code&#125; tags. I'm surprised any of them showed up. Thanks for flagging them with comments.
There's no problem with the other inequality operator, !=. You can use that when you post to this site.

Similar Messages

  • How to deal with delete record in generic delta of generic datasource

    Hi,
       Anyone can give me suggestion about the delete record in generic delta  of generic data. I need extract data with a generic datasource and hope deleted record in datasource also can be "delete" in next delta extraction. I do a test with generic delta. It seem that the delete record can not be updated in ODS. but updated record can be updated in next delta extraction.
    How dose BW generic delta deal with the deleted record with generic delta mechanisim? Or how can I use generic delta mechanisim to realize that BW "delete" the deleted record of source system in ODS with delta extraction?
    Thanks in advance!
    Billy

    Delete is not supported in delta mechanism of generic delta extractor. You will need to add a workaround for that.
    - Capture the deleted records somewhere (maybe enhance the txn deleting the record so the key is written to a Z table). Take these records to BW and manipulate the recordmode to affect deletion of corresponding record from ODS.
    - If your generic delta is based on FM, and if the 'delete' is captured in change document tables, add the logic to check change document tables whether any records are deleted, and if yes, send those to BW with appropriate recordmode to achieve deletion.

  • Update Rules to deal with Asymmetrical Records

    Hello,
    Is there a way with standard update rules one can handle the following scenario:
    Incoming Datapackage:
    Char  Char1   Char2
    XYZ    A      -
    XYZ    -      B
    Desired result in an ODS (Char is the key of the ODS)
    Char  Char1   Char2
    XYZ   A         B
    It is not known ahead of time whether char 1 or char 2 will be filled in so 2 URs is not an option.
    An intermediate ODS or recursive look-ups are option but I am wondering if there is an option like:
    "update only if non-blank" or is that too much to expect?

    Why would the active table be empty? All active records will be saved to the active ODS Table...
    I would code the following:
    Select CHAR2 FROM ODS_TABLE WHERE CHAR = XYZ INTO TABLE
    ODS_VALUE.
    IF sy-subrc = 0.
    DATA_PACKAGE-CHAR2 = ODS_VALUE-CHAR2.
    MODIFY DATA_PACKAGE.
    ENDIF.

  • SQL Dealing with multiple choice answers in a DB with no unique identifier

    I am working with a Database that has forms set up with multiple select fields.  As seen below, (Question_ID 2533) the Patient_ID, Visit_ID, and Question_ID are the same and there are 3 different answers that were chosen.  I am trying to figure
    out how to seperate these Multiple answers so I can use SSRS to pull them into seperate fields. I believe I know how to use SSRS to pull the data after I have differentiated each answer. I need help with the SQL code...
    Patient_ID   Visit_ID   Form_ID   Question_ID   Answer_ID     Answer
    124            1685        164          2533             1490             
    Muscle pain
    124            1685        164          2533             1492             
    Weight loss
    124            1685        164          2533             1494            
     Shoulder joint pain
    124            1685        164          2534            
    678                Good
    124            1685        164          2535            
    678                Good

    I was able to get the unique identifier by creating a new table using the ROW_NUMBER()OVER and PARTITION BY Functions.  Then I was able to identify each answer of the multiple choice fields.  Here is the full code.
    CREATE TABLE Multiple_Answer(
     Patient_ID INT,
     Visit_ID INT,
     Visit_Date DateTime,
     Form_ID INT,
     Form_Name nvarchar(255),
     Question_ID INT,
     Question_Name nvarchar(1000),
     Answer_ID INT,
        Answer  nvarchar(1000),
        Multiple_Answer INT)
        INSERT INTO Medred_Reporting.dbo.Multiple_Answer
               ([Patient_ID]
               ,[Visit_ID]
               ,[Visit_Date]
               ,[Form_ID]
               ,[Form_Name]
               ,[Question_ID]
               ,[Question_Name]
               ,[Answer_ID]
               ,[Answer]
               ,[Multiple_Answer])
    SELECT        Patients.Patient_ID, Patient_Visits.Visit_ID, Patient_Visits.Visit_Date, Forms.Form_ID, Forms.Form_Name, Questions.Question_ID, Questions.Question_Name, Answers.Answer_ID,
                             Answers.Answer,
                             ROW_NUMBER()OVER
                             (PARTITION BY Patients.Patient_ID, Patient_Visits.Visit_ID,Forms.Form_ID,Questions.Question_ID
                             ORDER BY Questions.Question_ID)
                             AS Multiple_Answer
    FROM            Patient_Visits INNER JOIN
                             Patients ON Patient_Visits.Patient_ID = Patients.Patient_ID INNER JOIN
                             User_Visit_REL ON Patient_Visits.Visit_ID = User_Visit_REL.Visit_ID INNER JOIN
                             Users ON User_Visit_REL.User_ID = Users.User_ID INNER JOIN
                             Visit_Question_Answer_REL ON User_Visit_REL.User_Visit_ID = Visit_Question_Answer_REL.User_Visit_ID INNER JOIN
                             Symptom ON Visit_Question_Answer_REL.Symptom_ID = Symptom.Symptom_ID INNER JOIN
                             Question_Answer_REL ON Symptom.Question_Answer_ID = Question_Answer_REL.Question_Answer_ID INNER JOIN
                             Answers ON Question_Answer_REL.Answer_ID = Answers.Answer_ID INNER JOIN
                             Form_Question_REL ON Question_Answer_REL.Form_Question_ID = Form_Question_REL.Form_Question_ID INNER JOIN
                             Questions ON Form_Question_REL.Question_ID = Questions.Question_ID INNER JOIN
                             Protocol_Form_REL ON Form_Question_REL.Protocol_Form_ID = Protocol_Form_REL.Protocol_Form_ID INNER JOIN
                             Forms ON Protocol_Form_REL.Form_ID = Forms.Form_ID

  • Need To Create a table in Sql Server and do some culculation into the table from Oracle and Sql

    Hello All,
    I'm moving a data from Oracle to Sql Server with ETL (80 tables with data) and i want to track the number of records that i moving on the daily basis , so i need to create a table in SQL Server, wilth 4 columns , Table name, OracleRowsCount, SqlRowCount,
    and Diff(OracleRowsCount - SqlRowCount) that will tell me the each table how many rows i have in Oracle, how many rows i have in SQL after ETL load, and different between them, something like that:
    Table Name  OracleRowsCount   SqlRowCount  Diff
    Customer                150                 150            
    0
    Sales                      2000                1998          
    2
    Devisions                 5                       5             
    0
    (I can add alot of SQL Tasks and variables per each table but it not seems logicly to do that, i tryid to find a way to deal with that in vb but i didn't find)
    What the simplest way to do it ?
    Thank you
    Best Regards
    Daniel

    Hi Daniel,
    According to your description, what you want is an indicator to show whether all the rows are inserted to the destination table. To achieve your goal, you can add a Row Count Transformation following the OLE DB Destination, and redirect bad rows to the Row
    Count Transformation. This way, we can get the count of the bad rows without redirecting these rows. Since the row count value is stored in a variable, we can create another string type variable to retrieve the row count value from the variable used by the
    Row Count Transformation, and then use a Send Mail Task to send the row count value in an email message body. You can also insert the row count value to the SQL Server table through Execute SQL Task. Then, you can check whether bad rows were generated in the
    package by querying this table.  
    Regards,
    Mike Yin
    TechNet Community Support

  • Need Oracle Payroll SQL Query

    Hello,
    I need Oracle Payroll SQL Query with result:
    First_name, Last_name, Payment_amount, Pay_date, Payroll_Frequency, Employement_status
    Any Help would be greatful appreciated

    You will need the following tales.
    per_all_people_f, per_all_assignments_f,pay_run_results,pay_run_result_values
    Query would e something like :
    select papf.first_name,
             papf.last_name,
             prrv.*
    From  apps.per_all_people_f papf
             apps.per_all_assignments_f paaf
             apps.pay_run_results prr,
             apps.pay_run_result_values prrv
    Where papf.person_id = paaf.person_id
    and papf.business_group_id = paaf.business_group_id
    and papf.current_employee_flag = 'Y'
    and paaf.primary_flag ='Y'
    and paaf.assignment_type = 'E'
    and trunc(sysdate) between papf.effective_start_date and papf.effective_end_date
    and trunc(sysdate) between paaf.effective_start_date and paaf.effective_end_date 
    and prr.assignment_id = paaf.assignment_id

  • Migrating data from oracle to sql server

    I have two databases(Oracle and Sql Server) in my company.
    I want to migrate some data on daily basis from Oracle to Sql Server.
    what are the best methodologies used to perform this task?
    Can we schedule this task on daily basis?
    please help me guys

    Salma,
    First and foremost, you need to understand that there are architectural difference between Oracle and SQL Server (with the major one being the difference between Oracle's PL/SQL and Microsoft's Transact-SQL) thus, it will not be an easy task to migrate data from Oracle Database to SQL Server. As far as the use of tools is concerned, you can utilize the following tools (third party tools not recommended) to achieve this:
    Microsoft SQL Server Migration Assistant (Oracle to SQL)
    http://www.microsoft.com/sqlserver/2005/en/us/migration-oracle.aspx
    Oracle SQL Developer Migration Workbench (SQL to Oracle)
    http://www.oracle.com/technology/tech/migration//workbench/index_sqldev_omwb.html
    But before proceeding with anything, I would recommend you to read through the following post as it lists down the primary compatibility resources and migration guidelines:
    Migrating from Oracle to SQL Server
    http://vyaskn.tripod.com/oracle_sql_server_differences_equivalents.htm
    Hope this helps.
    Regards,
    Naveed.

  • Connecting Oracle using SQL Plus in command window through LDAP settings?

    Hi
    Just like to know if it is possible to connect Oracle using SQL Plus with connection type as LDAP.
    Generally we connect to Oracle in cmd window as
    username/password@DBServiceName
    Similarly is it possible to connect Oracle using SQL plus cmd window using LDAP configuration settings.
    Eg:-
    If my LDAP server is oid:123:456
    Context is: cn=OracleContext,dc=abcdefgh,dc=com
    DBService is: xyz
    Regards
    jc

    Specify the -L command line option to SQL*Plus, i.e.:
    sqlplus -L username/password@db @blah.sql
    (this will prevent the second prompt for username/password if the initial login is unsuccessful for any reason, like an invalid password).

  • Help with Oracle PL/SQL and Objects...

    Hi,
    I wonder if you can help me, I am having some trouble dealing with Oracle objects in PL/SQL. I can declare them, populate them and read from them without any issues.
    But I am having some problems with trying to copy records in to other records of the same type, and also with updating existing records. I've made a mock up piece of code below to explain what I mean, it may have a few mistakes as I've written it in notepad but should be reasonably clear.
    First I have created a record type, which contains attributes relating to a person.....
    CREATE OR REPLACE
    TYPE PERSON_RECORD_TYPE AS object (
                        Person_ID          NUMBER(3),
                        Person_Name     VARCHAR(20),
                        Person_Age          NUMBER(2),
                        static function new return PERSON_RECORD_TYPE );
    CREATE OR REPLACE
    TYPE BODY PERSON_RECORD_TYPE as
    static function new return PERSON_RECORD_TYPE is
    BEGIN
    return PERSON_RECORD_TYPE (
         NULL,
                             NULL,
                             NULL,
                             NULL,
                             NULL
    END;
    END;
    Then I have created a table type, which is a table of the person record type......
    CREATE OR REPLACE
    type PERSON_TABLE_TYPE as table of PERSON_RECORD_TYPE;
    Finally I have created a procedure which recieves an instance of the person table type and reads through it using a cursor.....
    PROCEDURE ADMIN_PERSON (incoming_person     IN     PERSON_TABLE_TYPE)
    IS
    -- This is a local record declared as the same type as the incoming object
    local_person PERSON_TABLE_TYPE;
    -- Cursor to select all from the incoming object
    CURSOR select_person
    IS
    SELECT      *
    FROM      TABLE ( cast (incoming_person AS PERSON_TABLE_TYPE));
    BEGIN
    -- Loop to process cursor results
    FOR select_person_rec IN select_person
         LOOP
              /* Up to this point works fine...*/
              -- If I want to store the current cursor record in a local record of the same type, I can do this....
              local_person.person_id          := select_person_rec.person_id;
              local_person.person_name      := select_person_rec.person_name;
              local_person.person_age          := select_person_rec.person_age;
    -- QUESTION 1
              -- The above works fine, but in my real example there are a lot more fields          
              -- Why cant I set the local record to the value of the cursor record like this below..     
              local_person := select_person_rec;
    -- The above line gives a pl/sql error - expression is of wrong type, (as far as I can see the records are of the same type?)
    -- QUESTION 2
              --Also how do you update an existing record within the original object, I have tried the following but it does not work
              UPDATE incoming_person
              SET          age = (age + 1)
              WHERE     incoming_person.person_id = '123';
    -- The error here is that the table does not exist
         END LOOP;
    END;
    So I hope that you can see from this, I have two problems. The first is that I can store the current cursor record in a local record if I assign each attribute one at a time, but my real example has a large number of attributes. So why can't I just assign the entire cursor record to the local cursor record?
    I get a PL/SQL error "Expression is of wrong type" when I try to do this.
    The second question is with regards to the update statement, obviously this doesn't work, it expects a table name here instead. So can anyone show me how I should update existing person records in the incoming table type to the procedure?
    I hope this makes sense, but I don't think I have explained it very well!!
    Any help will be gratefully recieved!!
    Thanks

    I understand why you are having trouble - my own brain started to hurt looking at your questions :)
    First off, database types are not records. They can act like records but are "objects" with different characterstics.
    You can create a record in PL/SQL but the "type" is of RECORD. You created an OBJECT as BODY_PERSON_RECORD_TYPE.
    I don't use database types unless I really need them, such as for working with pipelined functions.
    -- QUESTION 1
    -- The above works fine, but in my real example there are a lot more fields
    -- Why cant I set the local record to the value of the cursor record like this below..
    local_person := select_person_rec; local_person is set to the (misnamed) BODY_PERSON_RECORD_TYPE, while SELECT_PERSON_REC is anchored to the cursor and is a RECORD of SELECT_PERSON%ROWTYPE with a field for each column selected in the query. Different types, not compatible.
    You should be able to manually assign the object items one by one as object.attribute := record.field one field at a time.
    -- QUESTION 2
    --Also how do you update an existing record within the original object, I have tried the following but it does not workCheck the on-line documentation for the syntax. You'll probably have to reference the actual value through the table; this is one reason why I don't work with nested tables - the syntax to do things like updates is much more complex.

  • How can I deal with long sql by the oo4o?

    I am using VB and oo4o to develop a sql executor which is a extention of an old system.
    For some reason, I have to use oo4o v8.1.7 to deal with Oracle Database 8i to 11g.
    But when I send a very long sql(11KB) to it I got a error in the VB enviroment.
    The Err.Description is "automention error. Started object is disconnected by the client.".
    The Err.Number is "-2147417848 ".
    The sql that I send it to the program is a simple select sql that like select a, b, c, substrb(d, 1, 2), substrb(e, 2, 3) .... from A_TBL where A=aa;
    This sql is normally executed by the sqlplus but I got an error by the oo4o.
    When I insert a '' between the 30Xth items, it got exectuted normally.
    ex. select a, b, c, substrb(d, 1, 2), substrb(e, 1, 2) ..... substrb(303th, 3, 4), '', substrb(304th, 1, 2) ... from A_TBL where A = aa;
    How can I deal with this problem? Thanks.

    So how can use this function correctly?By learning what exceptions are, how they're used, and what you can do to deal with them. There's a tutorial here: http://java.sun.com/docs/books/tutorial/essential/exceptions/index.htmlAnd here's a quick overview:
    The base class for all exceptions is Throwable. Java provides Exception and Error that extend Throwable. RuntimeException (and many others) extend Exception.
    RuntimeException and its descendants, and Error and its descendants, are called unchecked exceptions. Everything else is a checked exception.
    If your method, or any method it calls, can throw a checked exception, then your method must either catch that exception, or declare that your method throws that exception. This way, when I call your method, I know at compile time what can possibly go wrong and I can decide whether to handle it or just bubble it up to my caller. Catching a given exception also catches all that exception's descendants. Declaring that you throw a given exception means that you might throw that exception or any of its descendants.
    Unchecked exceptions (RuntimeException, Error, and their descendants) are not subject to those restrictions. Any method can throw any unchecked exception at any time without declaring it. This is because unchecked exceptions are either the sign of a coding error (RuntimeException), which is totally preventable and should be fixed rather than handled by the code that encounters it, or a problem in the VM, which in general can not be predicted or handled.

  • How to deal with often ask doc questions in Oracle forums?

    All,
    Lately the number of doc questions in the Database General forum and the SQL and PL/SQL forum seems to increase exponentially.
    Also almost all posters never look up error messages in the on-line documentation, nor do they anything to resolve their own problem.
    Need I to mention ORA-12154? Probably not.
    While the Forums Etiquette post is clear you should be looking up, no one is actually doing that.
    Also apparently no one reads the Forum Etiquette post.
    The result of this is the Search Forum button has become fully useless and almost always turns up 1000s of non-relevant posts.
    Which results in .... people asking that question again
    I am quite aware the situation on http://asktom.oracle.com and many other sites is hardly better.
    I am also aware Jives might be incapable of addressing this properly.
    But can't something be done?
    Eg: Jives automatically consults the on-line documentation or automatically consults Google or even Wikipedia?
    I try to avoid answering doc questions as much as possible, but that doesn't work.
    If I could, I would kick the poster, as this kind of laziness really annoys me.
    When I started my career the Internet didn't exist. The only things available were manuals and the phone to call support, and it wasn't outsourced to Asia.
    Regards
    Sybrand Bakker
    Senior Oracle DBA

    sybrand_b wrote:
    All,
    Lately the number of doc questions in the Database General forum and the SQL and PL/SQL forum seems to increase exponentially.
    Also almost all posters never look up error messages in the on-line documentation, nor do they anything to resolve their own problem.
    Need I to mention ORA-12154? Probably not.
    While the Forums Etiquette post is clear you should be looking up, no one is actually doing that.
    Also apparently no one reads the Forum Etiquette post.gang-faq 'em!
    >
    The result of this is the Search Forum button has become fully useless and almost always turns up 1000s of non-relevant posts.
    Which results in .... people asking that question again
    I am quite aware the situation on http://asktom.oracle.com and many other sites is hardly better.
    I am also aware Jives might be incapable of addressing this properly.
    But can't something be done?
    Eg: Jives automatically consults the on-line documentation or automatically consults Google or even Wikipedia?When I've seen this (as in metalink), it has been more a waste of time than random guessing answers by newbies. Even the best neural network software would be stumped by the range of experience it would have to deal with.
    >
    I try to avoid answering doc questions as much as possible, but that doesn't work.
    If I could, I would kick the poster, as this kind of laziness really annoys me.
    When I started my career the Internet didn't exist. The only things available were manuals and the phone to call support, and it wasn't outsourced to Asia.You are making the same mistake so many newbie user interface designers make: You have to deal with the wide range of experience and expectations of the user population, not a small homogenous group of Dutch programmers who will follow arbitrary rules.
    http://imgs.xkcd.com/comics/duty_calls.png

  • How to deal with multiple language SQL script?

    Hi All,
    We now want to create a SQL script that contains multiple languages(English, Chinese, Japanese), this script need to be run at there different database installed on different OS, for example, Oracle9i on Windows 2000 English Edition/Chinese Edition/Japanese Edition.
    If I save the file as ANSI format, this file will only be recognized at local OS(e.g. the Chinese and Japanese character will not be normally displayed on other OS, if I run the script, the CH/JP characters will not be stored normally in DB).
    If I save the file as Unicode format, this file can be recognized by all three OS, but Oracle SQL Plus will not recognize it, thus we can't run the script.
    Who can tell me how to deal with this issue? Is it possible to save only one script that can run on different language OS?
    Thanks,
    Spark

    Hi,
    The ISQLplus supports multiple languages, but there will be following problems for my case:
    1.ISQLplus don't support Unicode format script too, so I must save the file as ANSI format.
    2.To display the characters normally depends on the database server's platform. I create a script contain three languages with ANSI format in Chinese OS, but if I want to load this script to database server installed on English OS via ISQLplus, the Chinese characters will not be displayed normally too.
    PS:
    So, I think this is not only related with Oracle but also the Windows OS, it is hard to create one file with ANSI format that can be displayed normally in different platforms.
    Thank you all the same,
    Spark

  • How to deal with generated programs in eCATT SAPGUI recording?

    Hi experts and professionals,
    I am trying to automate testing of our solutions by eCATTs and so far i have not been able to find solution for following problem.
    Whole test scenario is very simple:
    Check InfoProvider data (query, lookup, listcube,...)
    Create DAP on InfoProvider
    Archive InfoProvider
    Check InfoProvider data (query, lookup, listcube,...)  again
    Compare results from step 1. and 4. (must match)
    Reload archived data
    Check InfoProvider data (query, lookup, listcube,...)  again
    Compare results from step 1. and 7. (must match)
    As you can see, one of the required test steps is to check InfoProvider's data in transaction LISTCUBE.
    But transaction LISTCUBE generates its program "name" every time it is executed and
    I am struggling to find a way how to deal with these generated programs in eCATT SAPGUI recording.
    Key is that solution must be generic and work for all SAP BW releases from 7.0 upwards
    (having in mind that LISTCUBE can read NLS data from SAP BW 7.3 release).
    Error description from eCATT log:
    Screen Check Error: Expected Transaction: LISTCUBE, Actual Transaction: LISTCUBE.
    Expected Program: GP0KOZE7EFIUBN10MZUFWX90W80, Actual Program: GPBP24INA6VV77SL0XKU5NA642O.
    Expected Screen Number: 1000, Actual Screen Number: 1000.
    There Is Probably an Error in SAPGUI recording.
    ExceptionClass:CX_ECATT_APL_CAPTURE  ExceptionId:SCREEN_CHECK_ERROR
    RaisingClass:CL_APL_ECATT_LINE_INTERPRETER  Include:CL_APL_ECATT_LINE_INTERPRETER=CM00J  Line:443
    Is there any way how to avoid program check in eCATT script?
    Anything that would help me to find solution will be greatly appreciated.
    Best Regards,
    Igor

    Dear Igor,
    Your issue is caused by the "screen check" which eCATT processes here.
    In General this screen check is a very usefull activity, since is ensures that only those screens are processed by automation, which initially where recorded. This should ensure as much as possible to invoke only intended activities.
    Remember, that the driver of the screen flow is still the automated transaction program ( but not the test tool). So application logic decides which screen is send next.
    Using screen check the test tool tries to ensure that menu items and buttons and other activities are only automated when the tool "believes" to work on the intended screen.
    For generic test scripts and often in context of generated programs the screen check might hurt a bit.
    To overcome this, one might try to make the check dynamic (as Sheetal suggests correctly).
    If here the name of program cannot be determined for any reason, one can use another method and do following:
    - Change the value of ProcessedScreen-Active to 'R'
    This will disable/skip the screen-check for this ProcessedScreen.
    Sure the solution includes a certain risk, since not checking the correct screen to appear might lead to automation of actions with not desired impact.
    Maybe this can improve your solution.
    Kind Regards
    Jens

  • Convert Informix "with resume" feature in stored procedures to Oracle PL/SQL

    I am trying to convert an Informix stored procedure with the "return value with resume"
    feature into Oracle PL/SQL.
    So far, all I have gathered is that I need to use packages and reference cursors.
    What is hazy is that how and when does this value get returned? Is it on the execution of the FETCH statement or do I need to specify a RETURN statement.
    If anybody has any ideas or better yet any
    concrete examples, please email me.
    Thank you.

    This is a small example of the use of ref cursor , for further details see the Oracle documentation
    PL/SQL User's Guide and Reference
    Release 8.1.6
    A77069-01 . The stored procedure converter for informix (downloadable from Oracle Technology Network) does not unfortunately cover this situation.
    Turloch
    create or replace PACKAGE BYROYALTYPkg AS
    TYPE RT1 IS RECORD (
    val MTG_VERSION.VERSION%TYPE
    TYPE RCT1 IS REF CURSOR RETURN RT1;
    PROCEDURE byroyalty(
    RC1 IN OUT BYROYALTYPkg.RCT1);
    END;
    create or replace PACKAGE BODY BYROYALTYPkg AS
    PROCEDURE byroyalty(
    RC1 IN OUT BYROYALTYPkg.RCT1)
    AS
    BEGIN
    OPEN RC1 FOR
    SELECT VERSION FROM MTG_VERSION;
    END byroyalty;
    END;

  • No.of transferred records do not match with delta records in RSA7

    Hi,
    The full update was failing since a number of days in 0vendor because of error in the source system. So I did an initialize with data transfer and corrected the PSA data and updated it using scheduler in the infoobject. In this case the number of transferred records was 24300 and added records was 0.Next I executed the delta infopackage and was expecting 0 records,since there were 0 records in rsa7. But I got 16000 records.Can you explain me why this happened?
    Regards,
    Shalaka

    Hi Shalaka,
    In which version of SAP you are working?
    You might want to have a look at the table BDCP2 which is a different table that handles the delta mechanism for the change pointers.
    You can reset the processing status using the program RSA1BDCP ex with following entries.
    Now, coming to your issue - to verify the initial loads I am listing some basic checks(step by step).
    You can give it a try in Dev/QAS if you have any restrictions in Prod.
    1. Check and verify if the RSA7 delta queue is present.
    2. In BW system, delete the INITIALIZATION request from infopackage - This should delete the delta queue from RSA7 in ECC system. (I am not 100% sure about this so try this once)
    3. Re-initialize the datasource from BW system and note the no. of incoming records in BW. This should match with LFA1 entries.
    4. Check the delta queue in RSA7 - There should be a new delta queue created
    5. Start the Delta load - The should not be any records coming in to BW
    6. Check the entries in table BDCP2 and its process indicator.
    7. Create a new vendor from XK01 and check the entry again in BDCP2 table.
    8. Run the delta again in BW and this time delta should have the newly created vendor.
    Also be aware that since its a master data datasource and deals with change pointers you will not see any entries in RSA7.
    A possible reason I could think of you getting 16000 records in delta is because you might have initialize the datasource is past and then started the FULL loads. So the deltas actually started accumulated in BDCP2 with processing status as BLANK and then when you triggered delta again back now all the historical deltas are processed.
    This apply with BDCPV too if you are on older version of SAP.
    Did you tried running delta's multiple times - you should not face any delta records when the processing status of change pointers is set to 'Processed' i.e. 'X'.
    PS: You can find the message type for 0VENDOR_ATTR in ROOSGEN table. This will be useful in looking at table BDCP2.
    Please let me know if there are any questions.
    Thanks
    Amit

Maybe you are looking for

  • Office intergration - run as background job

    Hi,   I have a word template merged with data using "Desktop Office Integration".   Currently word template will be opened before data merging is done.   Is it possible to run as background job, which word template can merge with data in backend? If

  • Get long text of a message

    I have created message class in tran. se91 and i want to get the long text of a particular message in these message class. how can i get the long text of the message dynamiclly in the program code? thanks in advance, Noa

  • [solved]Erro while opening emacs and playing mplayer

    i install thunderbird and after that i got this error  and wallpaper disapper and its now opeing the emacs mplayer: error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory whts wrong with it.....

  • How to stop the floating AirPlay icon

    I want to get rid of the Airplay icon that floats over my photos while I play music? I am using my photos as the screen saver and has this icon all the time. What setting do I need to change?

  • Opening up raw files in photshop from aperture

    Hi all, really sorry if this is an old question, couldn't find anything in other threads. I've noticed that when I open up a nef image in photoshop from aperture, the actual print size is much smaller than when opening the file directly from finder.