Case statement performance
Hello,
This is relating to one of the previous posts.
CASE STATEMENT PERFORMANCE
As it has been a discussion of case statement performance. I tried to compare both the filter function and case statement.
they both actually generate the same physical query.
So I just am trying to understand the difference.
thanks,
Deep
Hi Deep,
There would be some performance using CASE where as filter function would generate straight SQL that is WHERE clause is added into the SQL statement for better performance.
Have a look at this http://www.biconsultinggroup.com/obiee-tips-and-tricks/using-a-filter-function-instead-of-case-statements.html
http://prolynxuk.com/blog/?p=462
UPDATED POST
Can you paste both SQL's generated here.
hope answered
Cheers,
KK
Edited by: Kranthi.K on Apr 22, 2011 7:33 PM
Similar Messages
-
Performance in a case statement
Hi
I have a query like this -
SELECT
MAX(CASE WHEN field1 = 'xyz' THEN field2 END) AS alias1,
MAX(CASE WHEN field2 = 'abc' THEN field2 END) AS alias2
FROM table1
WHERE
field1 = 'xyz' and
field2 = 'abc' and
some fixed condition
Please note that the conditions in where clauses are same as corresponding case statements apart from one fixed condition.
In the actual query there are ~15 such conditions and 15 case statements for each selected field.
I have put the where clause to reduce the number of rows getting returned from the table.
My question is - what happens in terms of performance if I remove the where clause here. In other words will above query perform better or same as this
SELECT
MAX(CASE WHEN field1 = 'xyz' THEN field2 END) AS alias1,
MAX(CASE WHEN field2 = 'abc' THEN field2 END) AS alias2
FROM table1
WHERE
some fixed condition
Thanks
KumarIt really depends on what you query is trying to accomplish. The two queries are not the same. Your first will select rows where both field1 = 'xyz' and field2 = 'abc', while the second would also return rows where, for example, field1 = 'xyz' and field2 = 'def'. In which case, your alias2 would be null.
John -
CASE not found while executing CASE statement on Submit Form
Hi to all APEX users and developers.
I have several APEX applications and they are all working well, but recently I got one strange exception when I try to submit page:
Session: Fetch session header information
...metadata, fetch page info
...Validate item page affinity.
...Validate hidden_protected items.
Add error onto error stack
...Error data:
......message: Error processing request.
......additional_info: ORA-06592: CASE not found while executing CASE statement
......display_location: ON_ERROR_PAGE
......is_internal_error: true
......apex_error_code: APEX.UNHANDLED_ERROR
......ora_sqlcode: -6592
......ora_sqlerrm: ORA-06592: CASE not found while executing CASE statement
.....error_backtrace: ORA-06512: at "APEX_040100.WWV_FLOW", line 9273
......component.type: APEX_APPLICATION_AUTH
......component.id: 41350431648668800
......component.name: MNRFR
...Show Error on Error Page
......Performing rollback
Processes - point: AFTER_ERROR_HEADER
Processes - point: BEFORE_ERROR_FOOTER
End Page Processinga
Page has more than 120 items (most of them are hidden), so my first thought is that page has problem with posting so many items, but APEX error message doesn't hel me at all. Any help would be very appreciated :)
AlmirHi Almir,
actually it is the 100 page item limit. See (http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/limits.htm)
I also had a look into the source code and the code at the position where the error gets raised only supports 100 page items.
Can you have a look into the generated HTML code and look if you have a page items which is mapped to p_t101 or a higher number ?
I will file a bug to show a better error message.
Regards
Patrick
My Blog: http://www.inside-oracle-apex.com
APEX Plug-Ins: http://apex.oracle.com/plugins
Twitter: http://www.twitter.com/patrickwolf -
RE: Case 59063: performance issues w/ C TLIB and Forte3M
Hi James,
Could you give me a call, I am at my desk.
I had meetings all day and couldn't respond to your calls earlier.
-----Original Message-----
From: James Min [mailto:jminbrio.forte.com]
Sent: Thursday, March 30, 2000 2:50 PM
To: Sharma, Sandeep; Pyatetskiy, Alexander
Cc: sophiaforte.com; kenlforte.com; Tenerelli, Mike
Subject: Re: Case 59063: performance issues w/ C TLIB and Forte 3M
Hello,
I just want to reiterate that we are very committed to working on
this issue, and that our goal is to find out the root of the problem. But
first I'd like to narrow down the avenues by process of elimination.
Open Cursor is something that is commonly used in today's RDBMS. I
know that you must test your query in ISQL using some kind of execute
immediate, but Sybase should be able to handle an open cursor. I was
wondering if your Sybase expert commented on the fact that the server is
not responding to commonly used command like 'open cursor'. According to
our developer, we are merely following the API from Sybase, and open cursor
is not something that particularly slows down a query for several minutes
(except maybe the very first time). The logs show that Forte is waiting for
a status from the DB server. Actually, using prepared statements and open
cursor ends up being more efficient in the long run.
Some questions:
1) Have you tried to do a prepared statement with open cursor in your ISQL
session? If so, did it have the same slowness?
2) How big is the table you are querying? How many rows are there? How many
are returned?
3) When there is a hang in Forte, is there disk-spinning or CPU usage in
the database server side? On the Forte side? Absolutely no activity at all?
We actually have a Sybase set-up here, and if you wish, we could test out
your database and Forte PEX here. Since your queries seems to be running
off of only one table, this might be the best option, as we could look at
everything here, in house. To do this:
a) BCP out the data into a flat file. (character format to make it portable)
b) we need a script to create the table and indexes.
c) the Forte PEX file of the app to test this out.
d) the SQL staement that you issue in ISQL for comparison.
If the situation warrants, we can give a concrete example of
possible errors/bugs to a developer. Dial-in is still an option, but to be
able to look at the TOOL code, database setup, etc. without the limitations
of dial-up may be faster and more efficient. Please let me know if you can
provide this, as well as the answers to the above questions, or if you have
any questions.
Regards,
At 08:05 AM 3/30/00 -0500, Sharma, Sandeep wrote:
James, Ken:
FYI, see attached response from our Sybase expert, Dani Sasmita. She has
already tried what you suggested and results are enclosed.
++
Sandeep
-----Original Message-----
From: SASMITA, DANIAR
Sent: Wednesday, March 29, 2000 6:43 PM
To: Pyatetskiy, Alexander
Cc: Sharma, Sandeep; Tenerelli, Mike
Subject: Re: FW: Case 59063: Select using LIKE has performance
issues
w/ CTLIB and Forte 3M
We did that trick already.
When it is hanging, I can see what is doing.
It is doing OPEN CURSOR. But not clear the exact statement of the cursor
it is trying to open.
When we run the query directly to Sybase, not using Forte, it is clearly
not opening any cursor.
And running it directly to Sybase many times, the response is always
consistently fast.
It is just when the query runs from Forte to Sybase, it opens a cursor.
But again, in the Forte code, Alex is not using any cursor.
In trying to capture the query,we even tried to audit any statementcoming
to Sybase. Same thing, just open cursor. No cursor declaration anywhere.==============================================
James Min
Technical Support Engineer - Forte Tools
Sun Microsystems, Inc.
1800 Harrison St., 17th Fl.
Oakland, CA 94612
james.minsun.com
510.869.2056
==============================================
Support Hotline: 510-451-5400
CUSTOMERS open a NEW CASE with Technical Support:
http://www.forte.com/support/case_entry.html
CUSTOMERS view your cases and enter follow-up transactions:
http://www.forte.com/support/view_calls.htmlEarthlink wrote:
Contrary to my understanding, the <font face="courier">with_pipeline</font> procedure runs 6 time slower than the legacy <font face="courier">no_pipeline</font> procedure. Am I missing something? Well, we're missing a lot here.
Like:
- a database version
- how did you test
- what data do you have, how is it distributed, indexed
and so on.
If you want to find out what's going on then use a TRACE with wait events.
All nessecary steps are explained in these threads:
HOW TO: Post a SQL statement tuning request - template posting
http://oracle-randolf.blogspot.com/2009/02/basic-sql-statement-performance.html
Another nice one is RUNSTATS:
http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551378329289980701 -
Please Help!!!
How to write a case statement for the totals column of two different years (2013 and 2014) of the same month so that I can get a +/- column.
January 2014 January
2013 +/-
Region Entry Exit Total Entry Exit Total (Total of Jan2014-Total of Jan2013)
A 2 3
40 5 7 30 40-30= 10What is a table structure? Sorry cannot test it right now..
SELECT <columns>,(SELECT Total FROM tbl WHERE Y=2014)-(SELECT Total FROM tbl WHERE Y=2013)
FROM tbl
Best Regards,Uri Dimant SQL Server MVP,
http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting:
Large scale of database and data cleansing
Remote DBA Services:
Improves MS SQL Database Performance
SQL Server Integration Services:
Business Intelligence -
Query Tuning - using CASE statement in the WHERE clause
Hi All,
My query has been modified to use a CASE statement in the WHERE clause to consider data from certain columns based on a parameter value. This modified query is doing a full table scan and running endlessly. Please suggest what may be done to improve its performance:
Query:
SELECT LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))) AS summary_date,
os.acctnum,
os.avieworigin_refid,
COUNT(1) cnt_articleview,
SUM(NVL(autocompletedterm,0)) cnt_autocompletedterm
FROM TABLE1 os
WHERE os.acctnum IS NOT NULL
AND os.avieworigin_refid IS NOT NULL
AND os.requestdatetime IS NOT NULL
AND UPPER(os.success_ind) = 'S'
AND CASE WHEN
Param_ValueToCheck = 'FULL' AND get_date_timestamp(os.requestdatetime) BETWEEN
TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND
TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
THEN 1
WHEN
Param_ValueToCheck = 'INCR' AND os.entry_createddate BETWEEN
TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND
TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
THEN 1
END = 1
AND CASE WHEN
Param_ValueToCheck = 'FULL' AND os.entry_CreatedDate BETWEEN
TO_DATE('01-APR-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') AND
TO_DATE('07-JUN-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
THEN 1
WHEN
Param_ValueToCheck = 'INCR' THEN 1
END = 1
GROUP BY LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))), os.acctnum,os.avieworigin_refid;Table Description:
(Number of rows : approx > 600,000,000)
Name Null Type
ARTICLEID NOT NULL NUMBER(20)
USERKEY NUMBER(10)
AVIEWORIGIN_REFID VARCHAR2(10)
SUCCESS_IND VARCHAR2(2)
ENTRY_CREATEDDATE DATE
CREATED_BY VARCHAR2(10)
FILENUMBER NUMBER(10)
LINENUMBER NUMBER(10)
ACCTNUM VARCHAR2(10)
AUTOCOMPLETEDTERM NUMBER(2)
REQUESTDATETIME VARCHAR2(19)Explain Plan
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 2224314832
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
| 0 | SELECT STATEMENT | | 590 | 33040 | 2501K (1)| 08:20:15 | | |
| 1 | HASH GROUP BY | | 590 | 33040 | 2501K (1)| 08:20:15 | | |
| 2 | PARTITION RANGE ALL| | 590 | 33040 | 2501K (1)| 08:20:15 | 1 |1048575|
|* 3 | TABLE ACCESS FULL | TABLE1 | 590 | 33040 | 2501K (1)| 08:20:15 | 1 |1048575|
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
3 - filter(UPPER("OS"."SUCCESS_IND")='S' AND CASE WHEN ('FULL'='FULL' AND
"OS"."ENTRY_CREATEDDATE">=TO_DATE(' 2011-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"OS"."ENTRY_CREATEDDATE"<=TO_DATE(' 2011-06-07 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) THEN 1 WHEN
'FULL'='INCR' THEN 1 END =1 AND "OS"."REQUESTDATETIME" IS NOT NULL AND CASE WHEN ('FULL'='FULL'
AND "ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")>=TO_DATE(' 2011-05-01 00:00:00', 'syyyy-mm-dd
hh24:mi:ss') AND "ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")<=TO_DATE(' 2011-05-31 00:00:00',
'syyyy-mm-dd hh24:mi:ss')) THEN 1 WHEN ('FULL'='INCR' AND "OS"."ENTRY_CREATEDDATE">=TO_DATE('
2011-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "OS"."ENTRY_CREATEDDATE"<=TO_DATE('
PLAN_TABLE_OUTPUT
2011-05-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss')) THEN 1 END =1 AND "OS"."ACCTNUM" IS NOT NULL AND
"OS"."AVIEWORIGIN_REFID" IS NOT NULL)Edited by: Chaitanya on Jun 9, 2011 2:44 AM
Edited by: Chaitanya on Jun 9, 2011 2:47 AMHi Dom,
Modified Query:
SELECT LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))) AS summary_date,
os.acctnum,
os.avieworigin_refid,
COUNT(1) cnt_articleview,
SUM(NVL(autocompletedterm,0)) cnt_autocompletedterm
FROM TABLE1 os
WHERE os.acctnum IS NOT NULL
AND os.avieworigin_refid IS NOT NULL
AND os.requestdatetime IS NOT NULL
AND UPPER(os.success_ind) = 'S'
AND (('FULL' = 'FULL'
AND (get_date_timestamp(os.requestdatetime) BETWEEN TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND os.entry_CreatedDate BETWEEN TO_DATE('01-APR-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('07-JUN-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
OR ('FULL' = 'INCR'
AND os.entry_createddate BETWEEN TO_DATE('01-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS')
AND TO_DATE('31-MAY-2011 00:00:00','DD-MON-YYYY HH24:MI:SS') ))
GROUP BY LAST_DAY(TRUNC(TO_TIMESTAMP(os.requestdatetime, 'yyyymmddhh24:mi:ss.ff4'))), os.acctnum,os.avieworigin_refid;Execute Plan:
PLAN_TABLE_OUTPUT
Plan hash value: 3615447714
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
| 0 | SELECT STATEMENT | | 25125 | 1374K| | 407K (1)| 01:21:36 | | |
| 1 | HASH GROUP BY | | 25125 | 1374K| 3768K| 407K (1)| 01:21:36 | | |
| 2 | PARTITION RANGE ITERATOR| | 25125 | 1374K| | 407K (1)| 01:21:32 | 29 | 31 |
|* 3 | TABLE ACCESS FULL | TABLE1 | 25125 | 1374K| | 407K (1)| 01:21:32 | 29 | 31 |
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
3 - filter("OS"."ENTRY_CREATEDDATE">=TO_DATE(' 2011-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
UPPER("OS"."SUCCESS_IND")='S' AND "OS"."REQUESTDATETIME" IS NOT NULL AND
"ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")>=TO_DATE(' 2011-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"ODS"."GET_DATE_TIMESTAMP"("REQUESTDATETIME")<=TO_DATE(' 2011-05-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"OS"."ACCTNUM" IS NOT NULL AND "OS"."AVIEWORIGIN_REFID" IS NOT NULL AND "OS"."ENTRY_CREATEDDATE"<=TO_DATE('
2011-06-07 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))Edited by: Chaitanya on Jun 9, 2011 4:51 AM -
Case Statement in Oracle Query.
Hello Oracle Gurus,
I need suggestion on whether I should use Case statement in Oracle queries.
I have a sql statement which inserts the data by selecting data from other table. While selecting the data I have put a logic in the select statement for one column which is something like this and there are some more similar statements in the same query.
CASE
WHEN (b.ACCOUNT = 'FIN' or b.ACCOUNT ='FIN ACC' or b.ACCOUNT like '%Global Eq%' or b.ACCOUNT like '%Flexible Bond%')
THEN
'MTM'
WHEN (substr(a.CTC,-3)='MTM')
THEN
'MTM'
WHEN (substr(a.CTC,-3)='AFS' or substr(a.CTC,-3)='HTM' OR substr(a.CTC,-3)='ACC' OR substr(a.CTC,-3)='HFI' )
THEN
'ACC'
ELSE
'OTH'
END,
I wanted to get an suggestion about how much performance issue can I have due to this in my insert statement.
Let me know if you need any other information.All comments are really appreciated.Hi,
It's depends on the joins how you have performed with source table, stats and existing of indexes. If the volume of data is high - in case of any performance issue - why can't you perform the required things of logical conditions of data and popualte in one cluster so - that you can fetch out the chunks of required information with better way and in support with indexes.
Let us know the ful query your working on
Oracle version
Explain plans - get it from dbms_xplan.
- Pavan Kumar N
- ORACLE - 9i/10g - OCP
RHCE - Enterprize Linux 5.4 -
CASE statement in Oracle 8i PL/SQL
I'm in the process of doing an upgrade from 8i to 10g and have the necessary instructions in performing it. however, after running the pre upgrade tasks (run utlu102i.sql) to show the preupgrade information, i found out that there are some INVALID objects.
Miscellaneous Warnings
WARNING: --> Database contains INVALID objects prior to upgrade.
.... USER INGITRN has 1 INVALID objects.
.... USER INGIUAT has 3 INVALID objects.
.... USER OEMMON has 7 INVALID objects.
.... USER RE_ITF_USER has 11 INVALID objects.
.... USER SYS has 1 INVALID objects.
Would it be ok to proceed with the upgrade and ignore the warnings?
Also, as i checked the invalid object for SYS, it shows:
OWNER OBJECT_NAME OBJECT_TYPE STATUS
SYS UTL_RECOMP PACKAGE VALID
SYS UTL_RECOMP PACKAGE BODY INVALID
Further more, i tried to do a fix by invoking utlirp.sql and the same objects are showing up. Same thing shows when invoking utlrp.sql or even doing a manual compile for the affected objects. I later found out that CASE statements are not accepted in PL/SQL for Oracle 8i.
Can you help me fixed the issue on the invalid object?
ThanksHi,
Try first to (re)compile ll invalid objects. then
you can run:
select owner,type,count(*) from all_errors
group by owner,typeif you still have uncompiled objects, then report the different errors:
select * from all_errors... -
Regarding case statement and decode function
Hi Experts,
I have question.....regarding case statement and decode statement....
Can you please explain me that which one will be efficient,to place in insert statement...
insert statement(
(case when ........then
case when ....then
else
end)
else
end)
or
insert statement(
case when.....then
decode(....)
else
end)
Can you people explain me which one is more efficient method?
Thanks in advance.......The are major differences to talk about in case of CASE vs DECODE, but performance wise both are pretty much the same.
Have a look at Tom's thread
Ask Tom &quot;better performance - case or decode&quot;
I would suggest to use CASE whenever possible. Don't worry about the performance part. -
Using case statement in merge when matched
Hi,
I want to use case statement in the when matched clause of merge statement to ensure that I update only those fields that are undated.
create table TEST1
NAME1 VARCHAR2(25),
NAME2 VARCHAR2(25),
ID NUMBER not null
create table TEST2
ID NUMBER not null,
ID2 NUMBER not null,
NAME1 VARCHAR2(25),
NAME2 VARCHAR2(25)
merge into test1 t1
using
test2 t2
ON (t1.id = t2.id)
when matched
then
case
when t1.name1 != t2.name1
then
update set t1.name1 != t2.name1
when t1.name2 != t2.name2
then
update set t1.name2 != t2.name2
else
null;
end
it does not work and raises invalid sql command. Any idea how can I do that?
Thanks.
Sajid
Edited by: 808255 on Nov 12, 2010 4:22 AMHi
In that case you would have to use multiple statements and you may as well just use UPDATE instead of MERGE. Also, are you sure that you aren't trying to to fix a problem that doesn't actually exist.
Think about where the execution time is going to come from...
I would be tempted to do 1 UPDATE like this...
UPDATE test1 t1
SET (t1.name1,
t1.name2) = (SELECT t2.name1,
t2.name2
FROM test2 t2
WHERE t1.id = t2.id
AND (t1.name1 != t2.name1
OR t1.name2 != t2.name2))If you get specific performance issue with this, then post an explain plan and trace and I'll have a look.
I don't this the cost of the update is going to be as great as you think.
Cheers
Ben -
Diff b/w IF/ENDIF and CASE statement?
Hi all,
Plz let me know the difference between IF and CASE statements.Which one is better to be used in general...and are there any specific situations where we have to go for CASE insted of IF.
Rgds,
Reddy.Hi,
Case statement is good for performance wise because here we declare cases
and according to these cases program will be executed.
When we use if statement then the cursur goes to in the loop, when ever
the loop is not complete till then the programme will not execute.
Thats by in performance basis the case statement is good.
Let me try and explain using an example...
1) For IF statement...
Suppost you have a variable color..and you are checking it against color names.
then your code will be
IF COLOR == 'BLUE'.
statements
ELSEIF COLOR == 'BLACK'.
statements.
...and so on....
ENDIF.
But if you use CASE Statement
CASE COLOR.
when 'BLUE'.
statements.
when 'BLACK'.
statements.
so follows that CASE is easy to use and performance wise is also better.
Regards,
Priyanka. -
Hi,
I have a scenario where my stored procedure takes 5 parameters and the users can pass NULL or some value to these parameters and based on the parameters, I need to pull data from various tables.
Is it possible to use a case statement in the join, similar the one in the below example. I'm getting error when I use the below type of statement.
select a.*
from a
case
when parameter1=1 then
inner join a on a.id = b.id
when parameter1=2 then
inner join a on a.id = c.id
end;
Please let me know, if this type of statement works, and if it works will it create any performance issues?. If the above doesn't work, could you please give me some alternate solutions?
Thanks.Here's a technique for joining A to B or C depending on the input parameters. In theory, you are joining to both tables but the execution plan includes filters to skip whichever join is not appropriate. The drawback is that you have to do outer joins, not inner ones.
CREATE TABLE A AS SELECT LEVEL ak FROM dual CONNECT BY LEVEL <= 100;
CREATE TABLE b AS SELECT ak, bk
FROM A, (SELECT LEVEL bk FROM dual CONNECT BY LEVEL <= 10);
CREATE TABLE c(ak, ck) AS SELECT ak, bk*10 FROM b;
variable p1 NUMBER;
variable p2 NUMBER;
exec :p1 := 1;
exec :p2 := 20;
SELECT /*+ gather_plan_statistics */ A.ak, nvl(b.bk, c.ck) otherk FROM A
LEFT JOIN b ON A.ak = b.ak AND :p1 IS NOT NULL AND b.bk = :p1
LEFT JOIN c ON A.ak = c.ak AND :p1 is null and :p2 IS NOT NULL and c.ck = :p2
WHERE A.ak <= 9;
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'IOSTATS LAST'));
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
| 0 | SELECT STATEMENT | | 1 | | 9 |00:00:00.01 | 7 |
|* 1 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.01 | 7 |
|* 2 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.01 | 7 |
|* 3 | TABLE ACCESS FULL | A | 1 | 9 | 9 |00:00:00.01 | 3 |
| 4 | VIEW | VW_DCL_5532A50F | 1 | 9 | 9 |00:00:00.01 | 4 |
|* 5 | FILTER | | 1 | | 9 |00:00:00.01 | 4 |
|* 6 | TABLE ACCESS FULL| B | 1 | 9 | 9 |00:00:00.01 | 4 |
| 7 | VIEW | VW_DCL_5532A50F | 1 | 9 | 0 |00:00:00.01 | 0 |
|* 8 | FILTER | | 1 | | 0 |00:00:00.01 | 0 |
|* 9 | TABLE ACCESS FULL | C | 0 | 9 | 0 |00:00:00.01 | 0 |
Predicate Information (identified by operation id):
1 - access("A"."AK"="ITEM_0")
2 - access("A"."AK"="ITEM_1")
3 - filter("A"."AK"<=9)
5 - filter(:P1 IS NOT NULL)
6 - filter(("B"."AK"<=9 AND "B"."BK"=:P1))
8 - filter((:P2 IS NOT NULL AND :P1 IS NULL))
9 - filter(("C"."AK"<=9 AND "C"."CK"=:P2))
You can see that table C was not really accessed: the buffer count is 0.
exec :p1 := NULL;
SELECT /*+ gather_plan_statistics */ A.ak, nvl(b.bk, c.ck) otherk FROM A
LEFT JOIN b ON A.ak = b.ak AND :p1 IS NOT NULL AND b.bk = :p1
LEFT JOIN c ON A.ak = c.ak AND :p1 is null and :p2 IS NOT NULL and c.ck = :p2
WHERE A.ak <= 9;
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'IOSTATS LAST'));
Now table B is not accessed.
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
| 0 | SELECT STATEMENT | | 1 | | 9 |00:00:00.02 | 7 | 2 |
|* 1 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.02 | 7 | 2 |
|* 2 | HASH JOIN OUTER | | 1 | 9 | 9 |00:00:00.01 | 3 | 0 |
|* 3 | TABLE ACCESS FULL | A | 1 | 9 | 9 |00:00:00.01 | 3 | 0 |
| 4 | VIEW | VW_DCL_5532A50F | 1 | 9 | 0 |00:00:00.01 | 0 | 0 |
|* 5 | FILTER | | 1 | | 0 |00:00:00.01 | 0 | 0 |
|* 6 | TABLE ACCESS FULL| B | 0 | 9 | 0 |00:00:00.01 | 0 | 0 |
| 7 | VIEW | VW_DCL_5532A50F | 1 | 9 | 9 |00:00:00.01 | 4 | 2 |
|* 8 | FILTER | | 1 | | 9 |00:00:00.01 | 4 | 2 |
|* 9 | TABLE ACCESS FULL | C | 1 | 9 | 9 |00:00:00.01 | 4 | 2 | -
Hello,
I am used to using case within my select statements, I need to use decode if possible for this one. Its for a record group within in forms, and the case statement is not working. Could someone please help me write this with decode instead of case?
SELECT CASE
WHEN months_between(sysdate , c.birth_dt) BETWEEN 168 AND 216 THEN 1 --14 to 18
WHEN months_between(sysdate , c.birth_dt) BETWEEN 217 AND 252 THEN 2 --18 to 21
WHEN months_between(sysdate , c.birth_dt) BETWEEN 253 AND 780 THEN 3 --21 to 65
WHEN months_between(sysdate , c.birth_dt) > 780 then 4 --older than 65
ELSE NULL END
FROM mw_clients cThanks in advance!
Jim P.Below solution is very easy to write.
But I think that performance will be bad.Not really as dual is internal to the SQL engine so there's little difference between the two...
SQL> ed
Wrote file afiedt.buf
1 with mw_clients as (select add_months(sysdate,-200) as birth_dt from dual union
2 select add_months(sysdate,-220) from dual union
3 select add_months(sysdate,-400) from dual)
4 -- END OF TEST DATA
5 select 4+
6 decode(Least(months_between(sysdate , c.birth_dt),168),
7 168,decode(greatest(months_between(sysdate , c.birth_dt),216),
8 216,-3,0)
9 ,0)+
10 decode(Least(months_between(sysdate , c.birth_dt),217),
11 217,decode(greatest(months_between(sysdate , c.birth_dt),252),
12 252,-2,0)
13 ,0)+
14 decode(Least(months_between(sysdate , c.birth_dt),253),
15 253,decode(greatest(months_between(sysdate , c.birth_dt),780),
16 780,-1,0)
17 ,0) as result
18* from mw_clients c
SQL> /
RESULT
3
2
1
Elapsed: 00:00:00.01
Execution Plan
Plan hash value: 1277652150
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 3 | 27 | 9 (34)| 00:00:01 |
| 1 | VIEW | | 3 | 27 | 9 (34)| 00:00:01 |
| 2 | SORT UNIQUE | | 3 | | 9 (78)| 00:00:01 |
| 3 | UNION-ALL | | | | | |
| 4 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 5 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 6 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
Statistics
1 recursive calls
0 db block gets
0 consistent gets
0 physical reads
0 redo size
456 bytes sent via SQL*Net to client
396 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
3 rows processed
SQL>
SQL> ed
Wrote file afiedt.buf
1 with mw_clients as (select add_months(sysdate,-200) as birth_dt from dual union
2 select add_months(sysdate,-220) from dual union
3 select add_months(sysdate,-400) from dual)
4 -- END OF TEST DATA
5 select c.birth_dt,
6 (select 1 from dual where months_between(sysdate , c.birth_dt) BETWEEN 168 AND 216 union
7 select 2 from dual where months_between(sysdate , c.birth_dt) BETWEEN 217 AND 252 union
8 select 3 from dual where months_between(sysdate , c.birth_dt) BETWEEN 253 AND 780 union
9 select 4 from dual where months_between(sysdate , c.birth_dt) > 780
10 ) as result
11* from mw_clients c
SQL> /
BIRTH_DT RESULT
06/08/1974 10:15:39 3
06/08/1989 10:15:39 2
06/04/1991 10:15:39 1
Elapsed: 00:00:00.01
Execution Plan
Plan hash value: 706016619
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 3 | 27 | 9 (34)| 00:00:01 |
| 1 | SORT UNIQUE | | 4 | | 12 (84)| 00:00:01 |
| 2 | UNION-ALL | | | | | |
|* 3 | FILTER | | | | | |
| 4 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
|* 5 | FILTER | | | | | |
| 6 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
|* 7 | FILTER | | | | | |
| 8 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
|* 9 | FILTER | | | | | |
| 10 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 11 | VIEW | | 3 | 27 | 9 (34)| 00:00:01 |
| 12 | SORT UNIQUE | | 3 | | 9 (78)| 00:00:01 |
| 13 | UNION-ALL | | | | | |
| 14 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 15 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 16 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
3 - filter(MONTHS_BETWEEN(SYSDATE@!,:B1)<=216 AND
MONTHS_BETWEEN(SYSDATE@!,:B2)>=168)
5 - filter(MONTHS_BETWEEN(SYSDATE@!,:B1)<=252 AND
MONTHS_BETWEEN(SYSDATE@!,:B2)>=217)
7 - filter(MONTHS_BETWEEN(SYSDATE@!,:B1)<=780 AND
MONTHS_BETWEEN(SYSDATE@!,:B2)>=253)
9 - filter(MONTHS_BETWEEN(SYSDATE@!,:B1)>780)
Statistics
1 recursive calls
0 db block gets
0 consistent gets
0 physical reads
0 redo size
538 bytes sent via SQL*Net to client
396 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
3 rows processed
SQL> ed -
Hi all,
I have to compare the value of a varchar variable using a CASE statement and display the corresponding output.
But when the following code is being executed, and i gave the value of dayrange as anything other than number, i am getting the error;
The daysrange variable can be a number or a string (Hence i declared it as a varcahr2)
Error report:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 5
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause:
*Action:
declare
daysrange varchar2(10):='abc';
x varchar2(100);
begin
CASE WHEN DAYSRANGE = 1 THEN x := 'LD';
WHEN DAYSRANGE BETWEEN 2 AND 7 THEN x := 'LW';
WHEN DAYSRANGE BETWEEN 8 AND 30 THEN x:= 'LM';
WHEN DAYSRANGE BETWEEN 31 AND 90 THEN x:= 'L3M';
WHEN DAYSRANGE BETWEEN 91 AND 180 THEN x:= 'L6M';
WHEN DAYSRANGE BETWEEN 181 AND 365 THEN x:= 'LY';
WHEN DAYSRANGE BETWEEN 366 AND 730 THEN x:= 'L2Y';
WHEN DAYSRANGE > 730 THEN x:= 'O2Y';
ELSE x:='x:= x';
END case;--DATERANGE
exception
when case_not_found then
x:='something';
dbms_output.put_line(x);
end;
Edited by: Chaitanya on Nov 25, 2010 1:25 AMHi,
Chaitanya wrote:
... The daysrange variable can be a number or a string (Hence i declared it as a varcahr2)That's usually not a good design. It would be better to have two variables (or columns) if necessary, a VARCHAR2 and a NUMBER.
If you can't change the design, then test daysrange, and then do different things depending on whether it is a number or not.
For example:
declare
daysrange varchar2(10) := '17';
daysrange_n NUMBER;
x varchar2(100);
begin
IF REGEXP_LIKE (daysrange, '^\d+$')
THEN
daysrange_n := TO_NUMBER (daysrange);
x := CASE
WHEN daysrange_n > 730 THEN 'O2Y'
WHEN daysrange_n > 365 THEN 'L2Y'
WHEN daysrange_n > 180 THEN 'L1Y'
WHEN daysrange_n > 90 THEN 'L6M'
WHEN daysrange_n > 30 THEN 'L3M'
WHEN daysrange_n > 7 THEN 'LM'
WHEN daysrange_n > 1 THEN 'LW'
WHEN daysrange_n = 1 THEN 'LD'
ELSE x -- If necessary
END;
END IF;
...The tests in a CASE expression are done in order. The n-th WHEN condition is tried only after conditions 1 through n have failed. That's why we can saY, for example,
"daysrange_n > 365" instead of
"daysrange_n BETWEEN 366 AND 730". If the 2nd test is even being performed, we know that the 1st test failed, and that daysrnage_n is not > 730.
I'm not saying that you have to write CASE expressions like this, or that it's necessarily better. You should know that it's possible, then choose whichever way makes the most sense in this situation. -
I have 6 radio buttons.i want to use a case statement to read them.
i have 6 radio buttons.i grouped them.i want to read them in a subroutine using a case statement.how can i read them
Hi Leela,
You cannot use the Case statement to read the radio buttons.
nstead you will have to use Loop at Screen under At Selection Screen Output.
Please refer to the below code or the reference:
*& Report ZHYPERION *
*& Project : SubSea7
Created on : 07/02/2007
Created by : Puneet Jhari.
*& Purpose : For SAP Interface download Hyperion.
REPORT zhyperion NO STANDARD PAGE HEADING MESSAGE-ID zhyper.
Start of Data Declaration
TYPE-POOLS : truxs,vrm.
TABLES : glpct,cepc.
DATA : var TYPE i,
total TYPE f.
DATA : BEGIN OF wa2,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa2.
DATA : BEGIN OF wa3,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa3.
DATA : BEGIN OF wa4,
racct LIKE glpct-racct,
END OF wa4.
DATA : BEGIN OF wa5,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
total1(8) TYPE p DECIMALS 2,
END OF wa5.
DATA : BEGIN OF wa9,
khinr LIKE cepc-khinr,
racct LIKE glpct-racct,
total1(8) TYPE p DECIMALS 2,
END OF wa9.
DATA : BEGIN OF wa6,
khinr LIKE cepc-khinr,
prctr LIKE cepc-prctr,
rprctr LIKE glpct-rprctr,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa6.
DATA : BEGIN OF wa7,
khinr LIKE cepc-khinr,
prctr LIKE cepc-prctr,
rprctr LIKE glpct-rprctr,
ryear LIKE glpct-ryear,
rbukrs LIKE glpct-rbukrs,
racct LIKE glpct-racct,
ksl01 LIKE glpct-ksl01,
END OF wa7.
DATA : itab3 LIKE TABLE OF wa2,
itab4 LIKE TABLE OF wa3,
itab5 LIKE TABLE OF wa4 WITH HEADER LINE,
itab6 LIKE TABLE OF wa5 WITH HEADER LINE,
itab7 LIKE TABLE OF wa6,
itab8 LIKE TABLE OF wa7,
itab10 LIKE TABLE OF wa9.
DATA : flag(1) TYPE c,
temp(6) TYPE c.
DATA : itab2 TYPE truxs_t_text_data,
itab9 TYPE truxs_t_text_data WITH HEADER LINE.
DATA : name TYPE vrm_id,
list TYPE vrm_values,
value LIKE LINE OF list,
FILNAM11 TYPE STRING,
FILNAM21 TYPE STRING.
End of Data Declaration
Begin of Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: r1 DEFAULT 'X' RADIOBUTTON GROUP g1 USER-COMMAND rad1,
r2 RADIOBUTTON GROUP g1 .
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-005.
PARAMETERS: rbukrs1 TYPE glpct-rbukrs MODIF ID ful,
khinr1 TYPE cepc-khinr AS LISTBOX VISIBLE LENGTH 20
MODIF ID sam ,
ryear1 TYPE glpct-ryear MODIF ID ful,
ryear2 TYPE glpct-ryear MODIF ID sam,
rpmax1 TYPE i MODIF ID ful,
rpmax2 TYPE i MODIF ID sam,
filnam1 TYPE rlgrap-filename MODIF ID ful,
filnam2 TYPE RLGRAP-FILENAME MODIF ID sam.
SELECTION-SCREEN END OF BLOCK b3.
End of Selection Screen
AT SELECTION-SCREEN OUTPUT
AT SELECTION-SCREEN OUTPUT.
PERFORM populate. "For populating the drop-down list.
CLEAR VALUE.
REFRESH LIST.
NAME = 'KHINR1'.
VALUE-KEY = '1S7_NOCASV'.
VALUE-TEXT = '1S7_NOCASV'.
APPEND VALUE TO LIST.
VALUE-KEY = '1S7_NOCJOT'.
VALUE-TEXT = '1S7_NOCJOT'.
APPEND VALUE TO LIST.
LOOP AT SCREEN. "For toggling between the selection screens.
IF r1 EQ 'X'.
IF screen-group1 = 'SAM'.
screen-active = 0.
ENDIF.
ELSEIF r2 EQ 'X'.
IF screen-group1 = 'FUL'.
screen-active = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
For the Drop-Down Listbox
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = list
EXCEPTIONS
ID_ILLEGAL_NAME = 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.
Begin of Data Selection
START-OF-SELECTION.
When Company Code radio button is selected.
IF r1 EQ 'X'. "If Company Code radio button is selected.
IF rbukrs1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF rpmax1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF ryear1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF filnam1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
MOVE FILNAM1 TO FILNAM11.
CASE rpmax1.
WHEN '01'.
SELECT ryear rbukrs racct ksl01
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '02'.
SELECT ryear rbukrs racct ksl02
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '03'.
SELECT ryear rbukrs racct ksl03
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '04'.
SELECT ryear rbukrs racct ksl04
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '05'.
SELECT ryear rbukrs racct ksl05
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '06'.
SELECT ryear rbukrs racct ksl06
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '07'.
SELECT ryear rbukrs racct ksl07
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '08'.
SELECT ryear rbukrs racct ksl08
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '09'.
SELECT ryear rbukrs racct ksl09
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '10'.
SELECT ryear rbukrs racct ksl10
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '11'.
SELECT ryear rbukrs racct ksl11
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '12'.
SELECT ryear rbukrs racct ksl12
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '13'.
SELECT ryear rbukrs racct ksl13
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '14'.
SELECT ryear rbukrs racct ksl14
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '15'.
SELECT ryear rbukrs racct ksl15
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
WHEN '16'.
SELECT ryear rbukrs racct ksl16
FROM glpct INTO TABLE itab3 WHERE rbukrs EQ rbukrs1 AND ryear EQ ryear1.
ENDCASE.
MOVE itab3 TO itab4.
LOOP AT itab3 INTO wa2.
flag = 0.
LOOP AT itab5 INTO wa4.
IF wa2-racct EQ wa4-racct.
flag = 1.
EXIT.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM itab5.
IF flag = 1.
CONTINUE.
ENDIF.
LOOP AT itab4 INTO wa3.
IF wa2-rbukrs EQ wa3-rbukrs AND wa2-racct EQ wa3-racct AND
wa2-ryear EQ wa3-ryear.
total = total + wa3-ksl01.
ENDIF.
ENDLOOP.
wa5-rbukrs = wa2-rbukrs.
wa5-racct = wa2-racct+4(6).
wa5-total1 = total.
APPEND wa5 TO itab6.
CLEAR total.
APPEND wa2-racct TO itab5.
ENDLOOP.
If no data is available corresponding to the values entered.
IF itab6[] IS INITIAL.
MESSAGE i003.
ENDIF.
For making the file Comma separated
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
i_field_seperator = ','
I_LINE_HEADER =
I_FILENAME =
I_APPL_KEEP = ' '
TABLES
i_tab_sap_data = itab6
CHANGING
i_tab_converted_data = itab2
EXCEPTIONS
CONVERSION_FAILED = 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.
For downloading it to the Presentation Server
MOVE itab2[] TO itab9[].
OPEN DATASET filnam1 FOR OUTPUT IN LEGACY TEXT MODE.
LOOP AT itab9.
TRANSFER itab9 TO filnam1.
ENDLOOP.
CLOSE DATASET filnam1.
IF sy-subrc EQ 0.
MESSAGE s004.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = FILNAM11
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
IMPORTING
FILELENGTH =
tables
data_tab = itab2
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF sy-subrc eq 0.
message s004.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
When Region radio button is selected.
ELSEIF r2 EQ 'X'.
IF khinr1 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF rpmax2 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF ryear2 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
IF filnam2 IS INITIAL.
MESSAGE i002.
LEAVE TO SCREEN 1000.
ENDIF.
MOVE FILNAM2 TO FILNAM21.
CASE rpmax2.
WHEN '01'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl01
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '02'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl02
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '03'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl03
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '04'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl04
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '05'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl05
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '06'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl06
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '07'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl07
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '08'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl08
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '09'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl09
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '10'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl10
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '11'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl11
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '12'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl12
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '13'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl13
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '14'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl14
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '15'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl15
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
WHEN '16'.
SELECT ckhinr cprctr grprctr gryear grbukrs gracct g~ksl16
INTO CORRESPONDING FIELDS OF TABLE itab7
FROM ( glpct AS g
INNER JOIN cepc AS c ON grprctr = cprctr )
WHERE c~khinr = khinr1 AND
g~ryear = ryear2.
ENDCASE.
MOVE itab7 TO itab8.
LOOP AT itab7 INTO wa6.
flag = 0.
LOOP AT itab5 INTO wa4.
IF wa6-racct EQ wa4-racct.
flag = 1.
EXIT.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM itab5.
IF flag = 1.
CONTINUE.
ENDIF.
LOOP AT itab8 INTO wa7.
IF wa6-rbukrs EQ wa7-rbukrs AND wa6-racct EQ wa7-racct AND
wa6-ryear EQ wa7-ryear.
total = total + wa7-ksl01.
ENDIF.
ENDLOOP.
wa9-khinr = khinr1.
wa9-racct = wa6-racct+4(6).
wa9-total1 = total.
APPEND wa9 TO itab10.
CLEAR total.
APPEND wa6-racct TO itab5.
ENDLOOP.
*If no data is available corresponding to the values entered.
IF itab10 IS INITIAL.
MESSAGE i003.
ENDIF.
For making the file Comma separated
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
i_field_seperator = ','
I_LINE_HEADER =
I_FILENAME =
I_APPL_KEEP = ' '
TABLES
i_tab_sap_data = itab10
CHANGING
i_tab_converted_data = itab2
EXCEPTIONS
CONVERSION_FAILED = 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.
For downloading it to the Presentation Server
MOVE itab2[] TO itab9[].
OPEN DATASET filnam2 FOR OUTPUT IN LEGACY TEXT MODE.
LOOP AT itab9.
TRANSFER itab9 TO filnam2.
ENDLOOP.
CLOSE DATASET filnam2.
IF sy-subrc EQ 0.
MESSAGE s004.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = FILNAM21
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
IMPORTING
FILELENGTH =
tables
data_tab = itab2
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF sy-subrc eq 0.
message s004.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
*& Form POPULATE
text
FORM populate.
CLEAR value.
REFRESH list.
name = 'KHINR1'.
value-key = '1S7_SUBSEA'.
value-text = '1S7_SUBSEA'.
APPEND value TO list.
value-key = '1S7_GEN'.
value-text = '1S7_GEN'.
APPEND value TO list.
value-key = '1S7'.
value-text = '1S7'.
APPEND value TO list.
value-key = '1S7_CORPTP'.
value-text = '1S7_CORPTP'.
APPEND value TO list.
value-key = '1S7_BRRE'.
value-text = '1S7_BRRE'.
APPEND value TO list.
value-key = '1S7_BRCON'.
value-text = '1S7_BRCON'.
APPEND value TO list.
value-key = '1S7_BRCJOB'.
value-text = '1S7_BRCJOB'.
APPEND value TO list.
value-key = '1S7_BRCJBU'.
value-text = '1S7_BRCJBU'.
APPEND value TO list.
value-key = '1S7_BRCJCO'.
value-text = '1S7_BRCJCO'.
APPEND value TO list.
value-key = '1S7_BRCJIR'.
value-text = '1S7_BRCJIR'.
APPEND value TO list.
value-key = '1S7_BRCJEN'.
value-text = '1S7_BRCJEN'.
APPEND value TO list.
value-key = '1S7_BRCJPI'.
value-text = '1S7_BRCJPI'.
APPEND value TO list.
value-key = '1S7_BRCJSU'.
value-text = '1S7_BRCJSU'.
APPEND value TO list.
value-key = '1S7_BRCJFL'.
value-text = '1S7_BRCJFL'.
APPEND value TO list.
value-key = '1S7_BRCJOT'.
value-text = '1S7_BRCJOT'.
APPEND value TO list.
value-key = '1S7_BRCASV'.
value-text = '1S7_BRCASV'.
APPEND value TO list.
value-key = '1S7_BRCASE'.
value-text = '1S7_BRCASE'.
APPEND value TO list.
value-key = '1S7_BRCOOC'.
value-text = '1S7_BRCOOC'.
APPEND value TO list.
value-key = '1S7_BRCOHD'.
value-text = '1S7_BRCOHD'.
APPEND value TO list.
value-key = '1S7_BRCGEN'.
value-text = '1S7_BRCGEN'.
APPEND value TO list.
value-key = '1S7_BRDRI'.
value-text = '1S7_BRDRI'.
APPEND value TO list.
value-key = '1S7_BRDJOB'.
value-text = '1S7_BRDJOB'.
APPEND value TO list.
value-key = '1S7_BRDASV'.
value-text = '1S7_BRDASV'.
APPEND value TO list.
value-key = '1S7_BRDASE'.
value-text = '1S7_BRDASE'.
APPEND value TO list.
value-key = '1S7_BRDAEW'.
value-text = '1S7_BRDAEW'.
APPEND value TO list.
value-key = '1S7_BRDAEO'.
value-text = '1S7_BRDAEO'.
APPEND value TO list.
value-key = '1S7_BRDAET'.
value-text = '1S7_BRDAET'.
APPEND value TO list.
value-key = '1S7_BRDOOC'.
value-text = '1S7_BRDOOC'.
APPEND value TO list.
value-key = '1S7_BRDOHD'.
value-text = '1S7_BRDOHD'.
APPEND value TO list.
value-key = '1S7_BRVER'.
value-text = '1S7_BRVER'.
APPEND value TO list.
value-key = '1S7_BRVJOB'.
value-text = '1S7_BRVJOB'.
APPEND value TO list.
value-key = '1S7_BRVASV'.
value-text = '1S7_BRVASV'.
APPEND value TO list.
value-key = '1S7_BRVASE'.
value-text = '1S7_BRVASE'.
APPEND value TO list.
value-key = '1S7_BRVOOC'.
value-text = '1S7_BRVOOC'.
APPEND value TO list.
value-key = '1S7_BRVOHD'.
value-text = '1S7_BRVOHD'.
APPEND value TO list.
value-key = '1S7_UKRE'.
value-text = '1S7_UKRE'.
APPEND value TO list.
value-key = '1S7_UKCON'.
value-text = '1S7_UKCON'.
APPEND value TO list.
value-key = '1S7_UKCJOB'.
value-text = '1S7_UKCJOB'.
APPEND value TO list.
value-key = '1S7_UKCJBU'.
value-text = '1S7_UKCJBU'.
APPEND value TO list.
value-key = '1S7_UKCJCO'.
value-text = '1S7_UKCJCO'.
APPEND value TO list.
value-key = '1S7_UKCJIR'.
value-text = '1S7_UKCJIR'.
APPEND value TO list.
value-key = '1S7_UKCJEN'.
value-text = '1S7_UKCJEN'.
APPEND value TO list.
value-key = '1S7_UKCJPI'.
value-text = '1S7_UKCJPI'.
APPEND value TO list.
value-key = '1S7_UKCJSU'.
value-text = '1S7_UKCJSU'.
APPEND value TO list.
value-key = '1S7_UKCJFL'.
value-text = '1S7_UKCJFL'.
APPEND value TO list.
value-key = '1S7_UKCJOT'.
value-text = '1S7_UKCJOT'.
APPEND value TO list.
value-key = '1S7_UKCASV'.
value-text = '1S7_UKCASV'.
APPEND value TO list.
value-key = '1S7_UKCASE'.
value-text = '1S7_UKCASE'.
APPEND value TO list.
value-key = '1S7_UKCOOC'.
value-text = '1S7_UKCOOC'.
APPEND value TO list.
value-key = '1S7_UKBA'.
value-text = '1S7_UKBA'.
APPEND value TO list.
value-key = '1S7_UKBATE'.
value-text = '1S7_UKBATE'.
APPEND value TO list.
value-key = '1S7_UKCOHD'.
value-text = '1S7_UKCOHD'.
APPEND value TO list.
value-key = '1S7_UKCGEN'.
value-text = '1S7_UKCGEN'.
APPEND value TO list.
value-key = '1S7_UKDRI'.
value-text = '1S7_UKDRI'.
APPEND value TO list.
value-key = '1S7_UKDJOB'.
value-text = '1S7_UKDJOB'.
APPEND value TO list.
value-key = '1S7_UKDASV'.
value-text = '1S7_UKDASV'.
APPEND value TO list.
value-key = '1S7_UKDASE'.
value-text = '1S7_UKDASE'.
APPEND value TO list.
value-key = '1S7_UKDAEW'.
value-text = '1S7_UKDAEW'.
APPEND value TO list.
value-key = '1S7_UKDAEO'.
value-text = '1S7_UKDAEO'.
APPEND value TO list.
value-key = '1S7_UKDAET'.
value-text = '1S7_UKDAET'.
APPEND value TO list.
value-key = '1S7_UKDOOC'.
value-text = '1S7_UKDOOC'.
APPEND value TO list.
value-key = '1S7_UKDOHD'.
value-text = '1S7_UKDOHD'.
APPEND value TO list.
value-key = '1S7_UKVER'.
value-text = '1S7_UKVER'.
APPEND value TO list.
value-key = '1S7_UKVJOB'.
value-text = '1S7_UKVJOB'.
APPEND value TO list.
value-key = '1S7_UKVASV'.
value-text = '1S7_UKVASV'.
APPEND value TO list.
value-key = '1S7_UKVASE'.
value-text = '1S7_UKVASE'.
APPEND value TO list.
value-key = '1S7_UKVOOC'.
value-text = '1S7_UKVOOC'.
APPEND value TO list.
value-key = '1S7_UKVOHD'.
value-text = '1S7_UKVOHD'.
APPEND value TO list.
value-key = '1S7_NORE'.
value-text = '1S7_NORE'.
APPEND value TO list.
value-key = '1S7_NOCON'.
value-text = '1S7_NOCON'.
APPEND value TO list.
value-key = '1S7_NOCJOB'.
value-text = '1S7_NOCJOB'.
APPEND value TO list.
value-key = '1S7_NOCJBU'.
value-text = '1S7_NOCJBU'.
APPEND value TO list.
value-key = '1S7_NOCJCO'.
value-text = '1S7_NOCJCO'.
APPEND value TO list.
value-key = '1S7_NOCJIR'.
value-text = '1S7_NOCJIR'.
APPEND value TO list.
value-key = '1S7_NOCJEN'.
value-text = '1S7_NOCJEN'.
APPEND value TO list.
value-key = '1S7_NOCJPI'.
value-text = '1S7_NOCJPI'.
APPEND value TO list.
value-key = '1S7_NOCJSU'.
value-text = '1S7_NOCJSU'.
APPEND value TO list.
value-key = '1S7_NOCJFL'.
value-text = '1S7_NOCJFL'.
APPEND value TO list.
value-key = '1S7_NOCJOT'.
value-text = '1S7_NOCJOT'.
APPEND value TO list.
value-key = '1S7_NOCASV'.
value-text = '1S7_NOCASV'.
APPEND value TO list.
value-key = '1S7_NOCASE'.
value-text = '1S7_NOCASE'.
APPEND value TO list.
value-key = '1S7_NOCOOC'.
value-text = '1S7_NOCOOC'.
APPEND value TO list.
value-key = '1S7_NOCOHD'.
value-text = '1S7_NOCOHD'.
APPEND value TO list.
value-key = '1S7_NOCGEN'.
value-text = '1S7_NOCGEN'.
APPEND value TO list.
value-key = '1S7_NODRI'.
value-text = '1S7_NODRI'.
APPEND value TO list.
value-key = '1S7_NODJOB'.
value-text = '1S7_NODJOB'.
APPEND value TO list.
value-key = '1S7_NODASV'.
value-text = '1S7_NODASV'.
APPEND value TO list.
value-key = '1S7_NODASE'.
value-text = '1S7_NODASE'.
APPEND value TO list.
value-key = '1S7_NODAEW'.
value-text = '1S7_NODAEW'.
APPEND value TO list.
value-key = '1S7_NODAEO'.
value-text = '1S7_NODAEO'.
APPEND value TO list.
value-key = '1S7_NODAET'.
value-text = '1S7_NODAET'.
APPEND value TO list.
value-key = '1S7_NODOOC'.
value-text = '1S7_NODOOC'.
APPEND value TO list.
value-key = '1S7_NODOHD'.
value-text = '1S7_NODOHD'.
APPEND value TO list.
value-key = '1S7_NOVER'.
value-text = '1S7_NOVER'.
APPEND value TO list.
value-key = '1S7_NOVJOB'.
value-text = '1S7_NOVJOB'.
APPEND value TO list.
value-key = '1S7_NOVASV'.
value-text = '1S7_NOVASV'.
APPEND value TO list.
value-key = '1S7_NOVASE'.
value-text = '1S7_NOVASE'.
APPEND value TO list.
value-key = '1S7_NOVOOC'.
value-text = '1S7_NOVOOC'.
APPEND value TO list.
value-key = '1S7_NOVOHD'.
value-text = '1S7_NOVOHD'.
APPEND value TO list.
value-key = '1S7_GORE'.
value-text = '1S7_GORE'.
APPEND value TO list.
value-key = '1S7_GOCON'.
value-text = '1S7_GOCON'.
APPEND value TO list.
value-key = '1S7_GOCJOB'.
value-text = '1S7_GOCJOB'.
APPEND value TO list.
value-key = '1S7_GOCJBU'.
value-text = '1S7_GOCJBU'.
APPEND value TO list.
value-key = '1S7_GOCJCO'.
value-text = '1S7_GOCJCO'.
APPEND value TO list.
value-key = '1S7_GOCJIR'.
value-text = '1S7_GOCJIR'.
APPEND value TO list.
value-key = '1S7_GOCJEN'.
value-text = '1S7_GOCJEN'.
APPEND value TO list.
value-key = '1S7_GOCJPI'.
value-text = '1S7_GOCJPI'.
APPEND value TO list.
value-key = '1S7_GOCJSU'.
value-text = '1S7_GOCJSU'.
APPEND value TO list.
value-key = '1S7_GOCJFL'.
value-text = '1S7_GOCJFL'.
APPEND value TO list.
value-key = '1S7_GOCJOT'.
value-text = '1S7_GOCJOT'.
APPEND value TO list.
value-key = '1S7_GOCASV'.
value-text = '1S7_GOCASV'.
APPEND value TO list.
value-key = '1S7_GOCASE'.
value-text = '1S7_GOCASE'.
APPEND value TO list.
value-key = '1S7_GOCOOC'.
value-text = '1S7_GOCOOC'.
APPEND value TO list.
value-key = '1S7_GOCOHD'.
value-text = '1S7_GOCOHD'.
APPEND value TO list.
value-key = '1S7_GOCGEN'.
value-text = '1S7_GOCGEN'.
APPEND value TO list.
value-key = '1S7_GODRI'.
value-text = '1S7_GODRI'.
APPEND value TO list.
value-key = '1S7_GODJOB'.
value-text = '1S7_GODJOB'.
APPEND value TO list.
value-key = '1S7_GODASV'.
value-text = '1S7_GODASV'.
APPEND value TO list.
value-key = '1S7_GODASE'.
value-text = '1S7_GODASE'.
APPEND value TO list.
value-key = '1S7_GODAEW'.
value-text = '1S7_GODAEW'.
APPEND value TO list.
value-key = '1S7_GODAEO'.
value-text = '1S7_GODAEO'.
APPEND value TO list.
value-key = '1S7_GODAET'.
value-text = '1S7_GODAET'.
APPEND value TO list.
value-key = '1S7_GODOOC'.
value-text = '1S7_GODOOC'.
APPEND value TO list.
value-key = '1S7_GODOHD'.
value-text = '1S7_GODOHD'.
APPEND value TO list.
value-key = '1S7_GOVER'.
value-text = '1S7_GOVER'.
APPEND value TO list.
value-key = '1S7_GOVJOB'.
value-text = '1S7_GOVJOB'.
APPEND value TO list.
value-key = '1S7_GOVASV'.
value-text = '1S7_GOVASV'.
APPEND value TO list.
value-key = '1S7_GOVASE'.
value-text = '1S7_GOVASE'.
APPEND value TO list.
value-key = '1S7_GOVOOC'.
value-text = '1S7_GOVOOC'.
APPEND value TO list.
value-key = '1S7_GOVOHD'.
value-text = '1S7_GOVOHD'.
APPEND value TO list.
value-key = '1S7_GVRE'.
value-text = '1S7_GVRE'.
APPEND value TO list.
value-key = '1S7_GVCON'.
value-text = '1S7_GVCON'.
APPEND value TO list.
value-key = '1S7_GVCJOB'.
value-text = '1S7_GVCJOB'.
APPEND value TO list.
value-key = '1S7_GVCJBU'.
value-text = '1S7_GVCJBU'.
APPEND value TO list.
value-key = '1S7_GVCJCO'.
value-text = '1S7_GVCJCO'.
APPEND value TO list.
value-key = '1S7_GVCJIR'.
value-text = '1S7_GVCJIR'.
APPEND value TO list.
value-key = '1S7_GVCJEN'.
value-text = '1S7_GVCJEN'.
APPEND value TO list.
value-key = '1S7_GVCJPI'.
value-text = '1S7_GVCJPI'.
APPEND value TO list.
value-key = '1S7_GVCJSU'.
value-text = '1S7_GVCJSU'.
APPEND value TO list.
value-key = '1S7_GVCJFL'.
value-text = '1S7_GVCJFL'.
APPEND value TO list.
value-key = '1S7_GVCJOT'.
value-text = '1S7_GVCJOT'.
APPEND value TO list.
value-key = '1S7_GVCASV'.
value-text = '1S7_GVCASV'.
APPEND value TO list.
value-key = '1S7_GVCASE'.
value-text = '1S7_GVCASE'.
APPEND value TO list.
value-key = '1S7_GVCOOC'.
value-text = '1S7_GVCOOC'.
APPEND value TO list.
value-key = '1S7_GVCOHD'.
value-text = '1S7_GVCOHD'.
APPEND value TO list.
value-key = '1S7_GVCGEN'.
value-text = '1S7_GVCGEN'.
APPEND value TO list.
value-key = '1S7_GVDRI'.
value-text = '1S7_GVDRI'.
APPEND value TO list.
value-key = '1S7_GVDJOB'.
value-text = '1S7_GVDJOB'.
APPEND value TO list.
value-key = '1S7_GVDASV'.
value-text = '1S7_GVDASV'.
APPEND value TO list.
value-key = '1S7_GVDASE'.
value-text = '1S7_GVDASE'.
APPEND value TO list.
value-key = '1S7_GVDOOC'.
value-text = '1S7_GVDOOC'.
APPEND value TO list.
value-key = '1S7_GVDOHD'.
value-text = '1S7_GVDOHD'.
APPEND value TO list.
value-key = '1S7_GVVER'.
value-text = '1S7_GVVER'.
APPEND value TO list.
value-key = '1S7_GVVJOB'.
value-text = '1S7_GVVJOB'.
APPEND value TO list.
value-key = '1S7_GVVASV'.
value-text = '1S7_GVVASV'.
APPEND value TO list.
value-key = '1S7_GVVASE'.
value-text = '1S7_GVVASE'.
APPEND value TO list.
value-key = '1S7_GVVOOC'.
value-text = '1S7_GVVOOC'.
APPEND value TO list.
value-key = '1S7_GVVOHD'.
value-text = '1S7_GVVOHD'.
APPEND value TO list.
value-key = '1S7_GCRE'.
value-text = '1S7_GCRE'.
APPEND value TO list.
value-key = '1S7_GCCON'.
value-text = '1S7_GCCON'.
APPEND value TO list.
value-key = '1S7_GCCJOB'.
value-text = '1S7_GCCJOB'.
APPEND value TO list.
value-key = '1S7_GCCJBU'.
value-text = '1S7_GCCJBU'.
APPEND value TO list.
value-key = '1S7_GCCJCO'.
value-text = '1S7_GCCJCO'.
APPEND value TO list.
value-key = '1S7_GCCJIR'.
value-text = '1S7_GCCJIR'.
APPEND value TO list.
value-key = '1S7_GCCJEN'.
value-text = '1S7_GCCJEN'.
APPEND value TO list.
value-key = '1S7_GCCJPI'.
value-text = '1S7_GCCJPI'.
APPEND value TO list.
value-key = '1S7_GCCJSU'.
value-text = '1S7_GCCJSU'.
APPEND value TO list.
value-key = '1S7_GCCJFL'.
value-text = '1S7_GCCJFL'.
APPEND value TO list.
value-key = '1S7_GCCJOT'.
value-text = '1S7_GCCJOT'.
APPEND value TO list.
value-key = '1S7_GCCASV'.
value-text = '1S7_GCCASV'.
APPEND value TO list.
value-key = '1S7_GCCASE'.
value-text = '1S7_GCCASE'.
APPEND value TO list.
value-key = '1S7_GCCOOC'.
value-text = '1S7_GCCOOC'.
APPEND value TO list.
value-key = '1S7_GCCOHD'.
value-text = '1S7_GCCOHD'.
APPEND value TO list.
value-key = '1S7_GCCRD'.
value-text = '1S7_GCCRD'.
APPEND value TO list.
value-key = '1S7_GCCGEN'.
value-text = '1S7_GCCGEN'.
APPEND value TO list.
value-key = '1S7_GCDRI'.
value-text = '1S7_GCDRI'.
APPEND value TO list.
value-key = '1S7_GCDJOB'.
value-text = '1S7_GCDJOB'.
APPEND value TO list.
value-key = '1S7_GCDASV'.
value-text = '1S7_GCDASV'.
APPEND value TO list.
value-key = '1S7_GCDASE'.
value-text = '1S7_GCDASE'.
APPEND value TO list.
value-key = '1S7_GCDOOC'.
value-text = '1S7_GCDOOC'.
APPEND value TO list.
value-key = '1S7_GCDOHD'.
value-text = '1S7_GCDOHD'.
APPEND value TO list.
value-key = '1S7_GCVER'.
value-text = '1S7_GCVER'.
APPEND value TO list.
value-key = '1S7_GCVJOB'.
value-text = '1S7_GCVJOB'.
APPEND value TO list.
value-key = '1S7_GCVASV'.
value-text = '1S7_GCVASV'.
APPEND value TO list.
value-key = '1S7_GCVASE'.
value-text = '1S7_GCVASE'.
APPEND value TO list.
value-key = '1S7_GCVOOC'.
value-text = '1S7_GCVOOC'.
APPEND value TO list.
value-key = '1S7_GCVOHD'.
Maybe you are looking for
-
PLEASE help me squeeze the price of this build!!
Hi everyone- I have been working on a new computer build with heavy CS5 usage in mind, particularly After Effects and Premiere. I have regular access to free cameras and gear, and I need an editing machine to facilitate a few personal projects This
-
Two problems with Snow Leopard
I have two problems since I upgraded to Snow Leopard that I can't figure out how to fix. I have a Mac Mini hooked up to my TV and I from time to time remote into it and since upgrading I am getting an additional icon in my shares. If I click on it th
-
Hello, I have a source structure like this: Source (1.. unbounded) Item ident structure (0..unbounded) Sub item And I need to convert onto a target structure like: Target (1.. unbounded) Item ident Sub item How
-
How to synch Project with a moved Event?
I realized after I put my project together that I did not Import my Event to my External drive. So now I have moved my event and deleted the old one, the Project is complaining that there isn't any source by displaying the YELLOW triangle. I know the
-
I bought the 2.0 Aluminum Macbook, where can i buy 4 gig of ram for it?
i bought the 2.0 Ghz processor macbook with 2 gigs of ram obviously, but i want 4 on it, is there a 3rd party (i believe thats what its called) company or webpage where i can buy "cheap" (by that i mean not so expensive, but not bad quality) ram for