RFC for remote Open SQL statement
I'm looking for the SAP delivered RFC that will allow me to perform an SQL statement (select) onto another server.
I've used this before (years ago) but can't remember the FM name.
Please help!
Thanks,
Andre
Did you try [RemoteOpenSQL|http://remoteopensql.codeplex.com/] ?
Filippo
Similar Messages
-
Transaction or standard program for testing Open SQL statements
Hi experts,
Is there a standard program or transaction that can be used to test Open SQL statements?, I was thinking in something similar to a SQL client like sqlcli, but for Open SQL and within SAP GUI.
I know i can write a test ABAP program for this matter but I rather a standard testing facily in this case
Thank you for any help
regardsHi Ozcan
I tried DB02 -> Diagnosis -> SQL Command editor , but I couldn't made it work. It is for Open SQL or for Native SQL?
I tried the following simple Open SQL statements inside the SQL Code tab there were erros
SELECT *
FROM /BI0/PCOMP_CODE
error was: Incorrect syntax near '/'.
SELECT * FROM DD03L
error was: Invalid object name 'DD03L'.
Where is the mistake?
regards -
TestStand Open SQL Statement does not support SQL's ORDER BY clause???
TestStand 1.0.3
Windows 2000 SP1
SQL Server 2000 Personal
You've got to be kidding me...
It appears that the built-in TestStand Open SQL Step does NOT support the
"ORDER BY" clause in the SELECT statement, even though the documentation
says it does. Is this true?
I have an Open SQL Statement query:
"SELECT * FROM [MyTable] WHERE ([Batch ID]=1234)"
it works fine, returning a correct record count 120 records. If I change
the Open SQL Statement query simply by adding an ORDER BY clause, such as:
"SELECT * FROM [MyTable] WHERE ([Batch ID]=1234) ORDER BY [MyField] ASC"
it returns a record count of zero. I know that "MyField" exists in the
MyTable table and contains valid data. The
second query works fine in SQL
Server Enterprise Manager.
Am I missing something? Is it true that the TestStand Open SQL Step does
NOT support the "ORDER BY" clause? If not, what &#$!ing good is it and why
does the manual state it is supported? Is there any other way using just
the TestStand steps to order a database recordset on one or more fields?
Any help would be appreciated.
Grrrrr....
Bob Rafuse
Etec Inc.> Bob -
> The database step types do not do anything special to the SQL command
> that you give it. The step just passes the command to the ADO
> provider. I tried a simple query using the step types with the
> following command,
>
> "SELECT UUT_RESULT.* FROM UUT_RESULT WHERE ([UUT_SERIAL_NUMBER] =
> 12345) ORDER BY [EXECUTION_TIME] ASC"
>
> and this return the expected results and the record count parameter
> was as expected. I tried this on TS 1.0.2 and TS 2.0 with MS Access
> 2000 and MS SQL Server 7.0. I do not have MS SQL Server 2000 at this
> time.
>
> It would be surprised if the step types are messing something up.
I've been doing some experimenting over the past couple of days. Simple,
one-table queries seem to handle the ORDER BY clause fine. Th
ings seem to
get messed up when I try multi-table queries with ORDER BY clause with the
TestStand database steps. I get no errors but the returned record counts
are always 0 with the ORDER BY and positive without the ORDER BY. The exact
same queries work fine in Visual Basic/ADO and the SQL Server Query
Analyzer.
> Questions:
> 1. Have you verified whether the data is actually returned even though
> the record count is zero?
Hmmm... yes data IS getting returned (at least on the two instances I just
checked), but the record count is always zero. I was not proceeding with
processing if the record count was 0.
Still... I don't know how to loop through the recordset without knowing how
many records there are an not eventually generate an error by passing EOF.
Is there another way using the TestStand database steps to determine a) the
number of records in the recordset or b) when I'm at EOF?
> 2. Are you using any advanced options on the Opend SQL Statement step
> type, specifically
the cursor type set to forward only? Forward only
> cursors do not allow for record counts.
Everything on the Advanced tab of the Open SQL Statement step is set to "Use
Default".
Bob. -
Multiple Executions Plans for the same SQL statement
Dear experts,
awrsqrpt.sql is showing multiple executions plans for a single SQL statement. How is it possible that one SQL statement will have multiple Executions Plans within the same AWR report.
Below is the awrsqrpt's output for your reference.
WORKLOAD REPOSITORY SQL Report
Snapshot Period Summary
DB Name DB Id Instance Inst Num Release RAC Host
TESTDB 2157605839 TESTDB1 1 10.2.0.3.0 YES testhost1
Snap Id Snap Time Sessions Curs/Sess
Begin Snap: 32541 11-Oct-08 21:00:13 248 141.1
End Snap: 32542 11-Oct-08 21:15:06 245 143.4
Elapsed: 14.88 (mins)
DB Time: 12.18 (mins)
SQL Summary DB/Inst: TESTDB/TESTDB1 Snaps: 32541-32542
Elapsed
SQL Id Time (ms)
51szt7b736bmg 25,131
Module: SQL*Plus
UPDATE TEST SET TEST_TRN_DAY_CL = (SELECT (NVL(ACCT_CR_BAL,0) + NVL(ACCT_DR_BAL,
0)) FROM ACCT WHERE ACCT_TRN_DT = (:B1 ) AND TEST_ACC_NB = ACCT_ACC_NB(+)) WHERE
TEST_BATCH_DT = (:B1 )
SQL ID: 51szt7b736bmg DB/Inst: TESTDB/TESTDB1 Snaps: 32541-32542
-> 1st Capture and Last Capture Snap IDs
refer to Snapshot IDs witin the snapshot range
-> UPDATE TEST SET TEST_TRN_DAY_CL = (SELECT (NVL(ACCT_CR_BAL,0) + NVL(AC...
Plan Hash Total Elapsed 1st Capture Last Capture
# Value Time(ms) Executions Snap ID Snap ID
1 2960830398 25,131 1 32542 32542
2 3834848140 0 0 32542 32542
Plan 1(PHV: 2960830398)
Plan Statistics DB/Inst: TESTDB/TESTDB1 Snaps: 32541-32542
-> % Total DB Time is the Elapsed Time of the SQL statement divided
into the Total Database Time multiplied by 100
Stat Name Statement Per Execution % Snap
Elapsed Time (ms) 25,131 25,130.7 3.4
CPU Time (ms) 23,270 23,270.2 3.9
Executions 1 N/A N/A
Buffer Gets 2,626,166 2,626,166.0 14.6
Disk Reads 305 305.0 0.3
Parse Calls 1 1.0 0.0
Rows 371,735 371,735.0 N/A
User I/O Wait Time (ms) 564 N/A N/A
Cluster Wait Time (ms) 0 N/A N/A
Application Wait Time (ms) 0 N/A N/A
Concurrency Wait Time (ms) 0 N/A N/A
Invalidations 0 N/A N/A
Version Count 2 N/A N/A
Sharable Mem(KB) 26 N/A N/A
Execution Plan
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | UPDATE STATEMENT | | | | 1110 (100)| |
| 1 | UPDATE | TEST | | | | |
| 2 | TABLE ACCESS FULL | TEST | 116K| 2740K| 1110 (2)| 00:00:14 |
| 3 | TABLE ACCESS BY INDEX ROWID| ACCT | 1 | 26 | 5 (0)| 00:00:01 |
| 4 | INDEX RANGE SCAN | ACCT_DT_ACC_IDX | 1 | | 4 (0)| 00:00:01 |
Plan 2(PHV: 3834848140)
Plan Statistics DB/Inst: TESTDB/TESTDB1 Snaps: 32541-32542
-> % Total DB Time is the Elapsed Time of the SQL statement divided
into the Total Database Time multiplied by 100
Stat Name Statement Per Execution % Snap
Elapsed Time (ms) 0 N/A 0.0
CPU Time (ms) 0 N/A 0.0
Executions 0 N/A N/A
Buffer Gets 0 N/A 0.0
Disk Reads 0 N/A 0.0
Parse Calls 0 N/A 0.0
Rows 0 N/A N/A
User I/O Wait Time (ms) 0 N/A N/A
Cluster Wait Time (ms) 0 N/A N/A
Application Wait Time (ms) 0 N/A N/A
Concurrency Wait Time (ms) 0 N/A N/A
Invalidations 0 N/A N/A
Version Count 2 N/A N/A
Sharable Mem(KB) 26 N/A N/A
Execution Plan
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | UPDATE STATEMENT | | | | 2 (100)| |
| 1 | UPDATE | TEST | | | | |
| 2 | TABLE ACCESS BY INDEX ROWID| TEST | 1 | 28 | 2 (0)| 00:00:01 |
| 3 | INDEX RANGE SCAN | TEST_DT_IND | 1 | | 1 (0)| 00:00:01 |
| 4 | TABLE ACCESS BY INDEX ROWID| ACCT | 1 | 26 | 4 (0)| 00:00:01 |
| 5 | INDEX RANGE SCAN | INDX_ACCT_DT | 1 | | 3 (0)| 00:00:01 |
Full SQL Text
SQL ID SQL Text
51szt7b736bm UPDATE TEST SET TEST_TRN_DAY_CL = (SELECT (NVL(ACCT_CR_BAL, 0) +
NVL(ACCT_DR_BAL, 0)) FROM ACCT WHERE ACCT_TRN_DT = (:B1 ) AND PB
RN_ACC_NB = ACCT_ACC_NB(+)) WHERE TEST_BATCH_DT = (:B1 )Your input is highly appreciated.
Thanks for taking your time in answering my question.
RegardsOracle Lover3 wrote:
Dear experts,
awrsqrpt.sql is showing multiple executions plans for a single SQL statement. How is it possible that one SQL statement will have multiple Executions Plans within the same AWR report.If you're using bind variables and you've histograms on your columns which can be created by default in 10g due to the "SIZE AUTO" default "method_opt" parameter of DBMS_STATS.GATHER__STATS it is quite normal that you get different execution plans for the same SQL statement. Depending on the values passed when the statement is hard parsed (this feature is called "bind variable peeking" and enabled by default since 9i) an execution plan is determined and re-used for all further executions of the same "shared" SQL statement.
If now your statement ages out of the shared pool or is invalidated due to some DDL or statistics gathering activity it will be re-parsed and again the values passed in that particular moment will determine the execution plan. If you have skewed data distribution and a histogram in place that reflects that skewness you might get different execution plans depending on the actual values used.
Since this "flip-flop" behaviour can sometimes be counter-productive if you're unlucky and the values used to hard parse the statement leading to a plan that is unsuitable for the majority of values used afterwards, 11g introduced the "adaptive" cursor sharing that attempts to detect such a situation and can automatically re-evaluate the execution plan of the statement.
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/ -
The column name "PERNR" has two meanings. ABAP/4 Open SQL statement.
Hi All,
Could anyone advise on what are the error I encountered at below code.
I get the error in " The column name "PERNR" has two meanings. ABAP/4 Open SQL statement." . This errors happen to all the key fields I have selected in below code (eg: pernr, subty, objps, sprps, begda, endda, seqnr).
The field zeih also encountered error in "Unknown column name "ZEIH". not determined until runtime, you cannot specify a field list."
SELECT pernr
subty
objps
sprps
begda
endda
seqnr
zlsch
ZEIH
SELECT * INTO CORRESPONDING FIELDS
OF TABLE i_pa0009
FROM pa0001 INNER JOIN pa0009
ON pa0001pernr = pa0009pernr
WHERE bukrs IN s_code AND
banks NE space.Hi,
In this query
SELECT pernr
subty
objps
sprps
begda
endda
seqnr
zlsch
ZEIH
if you have used joins and if both the database pa0001, pa0009 has the above mentioned fields you will get the error message as the control gets confused as to which table of the field you are referring to..., instead use them in this way
SELECT pa0001~pernr
for each field mention to which table it belongs and ~ before the field name in the above fashion, this will remove the error
Regards,
Siddarth -
ABAP/4 Open SQL statement with WHERE ... LIKE and pattern too long
Dear All,
I am getting an error "ABAP/4 Open SQL statement with WHERE ... LIKE and pattern too long" while executing the following statement:
CLEAR LS_RANGE.
LS_RANGE-SIGN = 'I'
+LS_RANGE-OPTION = 'CP' +
LS_RANGE-LOW = 'S_ADMI_FCD'
LS_RANGE-HIGH = 'S_ADMI_FCD'
COLLECT LS_RANGE INTO LT_RANGE.
SELECT *
FROM UST12
INTO CORRESPONDING FIELDS OF TABLE LT_OBJECT_VALUES
WHERE FIELD IN LT_RANGE
AND AKTPS = 'A'.
For options like BT(Between), EQ(Equal) in range table, this above query is executing without dump. But for option CP, it simply dumps & in dump what i found is, it is concatenating the value in low & high.
Does anyone have any idea regarding open sql using range tables.
Thanks,
BhupinderHi,
I commented as follows:
If LS_RANGE-HIGH is empty, you can use EQ, NE, GT, LE, LT,CP, and NP. These operators are the same as those that are used for logical expressions. Yet operators CP and NP do not have the full functional scope they have in normal logical expressions. They are only allowed if wildcards ( '*' or '+' ) are used in the input fields. If wildcards are entered on the selection screen, the system automatically uses the operator CP.
If LS_RANGE-HIGH is filled, you can use BT (BeTween) and NB (Not Between). These operators correspond to BETWEEN and NOT BETWEEN that you use when you check if a field belongs to a range. You cannot use wildcard characters.
You can try:
CLEAR LS_RANGE.
LS_RANGE-SIGN = 'I'.
+LS_RANGE-OPTION = 'CP' +
LS_RANGE-LOW = 'S_ADMI_FCD'.
LS_RANGE-HIGH = 'S_ADMI_FCD'.
FIND '*' IN LS_RANGE.
IF sy-subrc = 0.
LS_RANGE-OPTION = 'CP'.
ELSE.
LS_RANGE-OPTION = 'EQ'.
ENDIF.
COLLECT LS_RANGE INTO LT_RANGE.
SELECT *
FROM UST12
INTO CORRESPONDING FIELDS OF TABLE LT_OBJECT_VALUES
WHERE FIELD IN LT_RANGE
AND AKTPS = 'A'.
If you use wildcards the LS_RANGE length should not exceed 10 characters.
Hope this information is help to you.
Regards,
José -
Log for all the sql statement executed
Hi,
I would like to know how to see the log for all the sql statement executed starting from connection to all the database related actions.
Is it something that i need to set it up in the driver?
I'm using Tomcat and JDBC driver.
Please reply.
Thanks,
AnjanaMake your own.
Calendar cal = new GregorianCalendar();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
//use calendar object to get other infos such as time of query
//append your query string
File f =new File ("c:\\jakarta-tomcat-3.2.4\\webapps\\ASD\\LOGS\\log" + df.format(day) + df.format(month) + year + ".txt");
if (! f.exists())
f.createNewFile();
FileWriter fw = new FileWriter (f, true);
// append new log to end of file
fw.write(buf.toString());
fw.write("\n");
fw.flush();
fw.close();
catch (IOException ioe)
System.out.println(ioe.toString()); -
How to get the time for executing an SQL statement?
hi all...
How can I get the total execution time for a given SQL statement to a ViewObject which is created dynamically for this SQL so that the end user knows it before hand and try to stop it or go further..?
Please post any ideas if you have got..!!!
thanx in advance..
grüss
K°viThis is not really a question for the JDeveloper forum, but rather for the DB forum.
Since Oracle9i there is a way to estimate how long a query will take, before executing it.
Check it out in the Oracle DB documentation or ask on the DB forum.
There is no built-in functionality for this in JDeveloper, but you should be able to call out to the DB from your Java code to get the estimate. -
Integration Kit for SAP - Open SQL access to tables. List incomplete.
After we install the BO integration kit for SAP and CR 2008 we were able to connect to SAP and open SAP Data Dictionnary tables (Open SQL access).
I have a problem however:
when I display the list of available tables, the is not showing all the tables in the SAP system. I believe it stops at some point.
I see all tables with low letters or starting with /BIC...
I have custom tables with names ranging from ZR1 to ZR5.
Of these I only see tables up to ZR2*.
My guess is :
either that the table list displayed is limited to a certain mumber of tables
or that there are some authorisations issues to be solved to view all tables (but the same SAP User sees all tables in SE11)
or there is a table related setting in the Data dictionnary that makes some tables visible by CR and other not
Thanks in advance for any answer.
Claudio Ciardellicorrect - it stops at one point because showing you more than 30.000 tables doesn't really help. Right click on your connection (server entry), select the menu options, there is an entry called Table name like. in your case enter Z% and hit F5 for a refresh and you will only get tables shown starting with Z
Ingo -
Look for histroy of sql statement executed in database
is there a way to look for histroy or list of sql statement executed in database.?
similar to history command in linux or bash shell.The newer <a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2131.htm">v$sqlstats</a> (10g) is recommended over v$sql as (according to the documentation) it's "faster, more scalable, and has a greater data retention (the statistics may still appear in this view, even after the cursor has been aged out of the shared pool)", although it's missing a couple of the columns v$sql has.
The history version (if you are licenced for AWR, which is part of the extra-cost Diagnostics Pack - you may not be licenced to use it even if the dictionary views are installed) is DBA_HIST_SQLSTAT. -
Connecting strings for execution as SQL-Statement
Hello to all.
I've the problem, that I want to write a package which handels occuring erros as far as possible automatically.
One part is to recompile invalid objects.
I can find all these objects by useing the following cursor:
CURSOR curInvalidObjects
IS SELECT OBJECT_TYPE, OWNER, OBJECT_NAME
from dba_objects a
where STATUS = 'INVALID' and
OWNER = 'BESECKE' AND
OBJECT_TYPE in ( 'PACKAGE BODY',
'PACKAGE', 'FUNCTION', 'PROCEDURE',
'TRIGGER', 'VIEW' )
order by OWNER, OBJECT_TYPE, OBJECT_NAME;
After opening the cursor I can go trough the records and recompile the objects with something like this:
alter || recInvalidObjects.OBJECT_TYPE || ' '
|| recInvalidObjects.OWNER || '.' ||
recInvalidObjects.OBJECT_NAME || compile;
But that does not work. In this way I can't get any executable SQL-Statement. It just becomes a string, but it's not executable.
I think it's a simple problem, but I tried to find anything about executable stings in the documentation I have, and I could not find anything. So can anybody give me a short hint, how to create an executable statement?
Thanks a lot.
Susanne SaalmannIf you just recompile without taking the correct order of compilation into account, you will have to run your statement a couple of times. This script solves that:
SET HEADING OFF
SET FEEDBACK OFF
SET PAGES 9999
SET TIMING OFF
SET TERMOUT ON
COLUMN noprn NOPRINT
SPOOL comp.sql
SELECT 'ALTER '||
DECODE( o.object_type, 'PACKAGE BODY', 'PACKAGE', o.object_type)||
' '||decode(o.object_type,'JAVA CLASS','"',null)||
o.object_name || decode(o.object_type,'JAVA CLASS','"',null)||
' COMPILE '||
DECODE( o.object_type, 'PACKAGE BODY', 'BODY;', ';'),
COUNT( d.name ) noprn
FROM user_objects o,
user_dependencies d
WHERE o.object_name = d.referenced_name(+)
AND o.object_type = d.referenced_type(+)
AND o.status = 'INVALID'
GROUP BY o.object_name, o.object_type
ORDER BY noprn DESC
SPOOL OFF
SET HEADING ON
SET FEEDBACK ON
SET PAGES 14
START comp.sql
SHOW USER
SELECT object_type, status, count(*)
FROM user_objects
GROUP BY object_type, status -
Procedure creation for 2 different sql statement
Hi all,
When I run a procedure with the below line:
cursor c1 is select object_name from user_objects where object_type='VIEW' and status='VALID';
procedure gets created successfully
But for the below line , oracle throws error
cursor c1 is select object_name from dba_objects where object_type='VIEW' and status='VALID';
Error Message:
Warning: Procedure created with compilation errors.
3/14 PL/SQL: SQL Statement ignored
3/38 PL/SQL: ORA-00942: table or view does not exist
Thanks for all your help.The below procedure gets created successfully:
CREATE OR REPLACE PROCEDURE P_TEST (schema_name in varchar2,new_usr in varchar2)
is
str varchar2(1000);
str_syn varchar2(1000);
v_obj_name varchar2(200);
begin
for z in ( select object_name from user_objects where object_type in ('VIEW') and status='VALID')
loop
v_obj_name:=schema_name||'.'|| z.object_name;
str :='grant select on '||v_obj_name||' to '|| new_usr ;
EXECUTE IMMEDIATE str;
end loop;
end;
where as below one throws error difference being "user_objects" replaced with
"dba_objects"
CREATE OR REPLACE PROCEDURE P_TEST (schema_name in varchar2,new_usr in varchar2)
is
str varchar2(1000);
str_syn varchar2(1000);
v_obj_name varchar2(200);
begin
for z in ( select object_name from dba_objects where object_type in ('VIEW') and status='VALID')
loop
v_obj_name:=schema_name||'.'|| z.object_name;
str :='grant select on '||v_obj_name||' to '|| new_usr ;
EXECUTE IMMEDIATE str;
end loop;
end; -
Report for a dynamic SQL Statement
Hi,
I have a dynamic generated SQL query and I want to report the result in a report region like a regular (standard) report.
Is there a PL/SQL package function where I can put the parameters in (like SQL query etc) and outputs me the the HTML Code which I can put with htp.p?
regards
voidy
PS: hope you understand what I meanHi Denes (and all the others ;),
well, I was too busy on my Apex projects lately ;). Actually quite an interesting application. Currently I build a high availability solution for 4.500 users, maybe 2.000 using it at the same time.
And I have just recently become a father of a beautiful daughter:
http://www.flickr.com/photos/13993868@N00/sets/72157594266133338/detail/
http://www.flickr.com/photos/13993868@N00/sets/72157594266133338/show/
These things have kept me quite busy lately ...
Greetinx,
~Dietmar. -
Help for identifing top sql statements
Hi all,
We are doing load testing on oracle 9i with 500 concurent users. At some point of
time the database was hang. I would like to know which query is taking more time/
which resource occuping more. Can any body help in this regard.
Thanks in advanceSome useful information can be found in V$SQLAREA, for example :
SQL> select SQL_TEXT, EXECUTIONS, DISK_READS, BUFFER_GETS, ROWS_PROCESSED, CPU_TIME, ELAPSED_TIME
2 from v$sqlarea
3* order by CPU_TIME desc; -
SSIS execute single SQL Task for running multiple SQL statements on TeraData DB connection
Hi,
I need to run multiple statements in TeraData connection ("Go" command between the statements is not recognized). how can I execute 1 SQL task referring to those multi statements? I'm using file connection as well. all the statements located in a single
file.
I'm working with SSIS 2008, TERADATA 12.0.
Thankssure.
create winbatch file (*.bat).
in batch file set that command:
bteq < scriptfilePath.txt (or .bteq)> LogsFolderPathOutputfile.out
scriptfile should contain:
.logon
Server/user, pswd
your script.
if you want to set error handeling points, set the followings between yor command statements:
.IF ERRORCODE <> 0 THEN .GOTO SqlError;
at the end of script, set:
-- Log successful completion
.LOGOFF;.QUIT 0;
.LABEL SqlError.QUIT ERRORLEVEL;
you can view logs at the outputfile you stated above.
enjoy.
Maybe you are looking for
-
How can I put a video in my Ipad from my pc? (I made this video with another Ipad, but if send it with Imessage, the quality is worse, if i try to put this video in Itunes it don't read it, if I try to put the video in Ipad like it is a normal pendr
-
Dell Inspiron 7000 series dual monitor issue
Today tried to connect Dell Inspiron 7437 to external monitor using HDMI cord; it did not work. I changed setting to external monitor only and now cannot get an image on laptop screen or external monitor when HDMI cord is connected. Tried to restart
-
How can i Redeem A card that has been un-valid for some reson
I have not been able to redeem my Itunes gift card do to the login prosses.
-
Sample MM Functional Specifications
Hi friends, Can anybody provide sample MM Functional Specifications. I am not able to get samples, only formats are available. Please help me frnds. Thank You Prabhu
-
Adding Tables/Ztables to XD99/XK99
HI All, Can we add tables or ztables to standard transaction code XD99/XK99. Or is there any way of amending it ?!