Executing a Arithmatic formula stored in Variable
Hi all,
I need solution to execute a arithmatic operation which is stored in a variable.
For Example:
data : var type string.
var = ABS('-3').
Now by means of the variable var i need to get the absolute value of -3
ie my output should be 3 if i print the variable "var".
Please help.
Regards,
Vijayakumar
Hello,
Do like this.
REPORT ZV_SDN_3 .
DATA: STR TYPE STRING.
DATA: STR1 LIKE STR,
INT TYPE I,
LEN TYPE I.
STR = ABS('-3')..
LEN = STRLEN( STR ).
DO LEN TIMES.
IF NOT STR+INT(1) IS INITIAL.
IF STR+INT(1) CA '0123456789'.
CONCATENATE STR1 STR+INT(1) INTO STR1.
ENDIF.
ENDIF.
ADD 1 TO INT.
ENDDO.
WRITE: STR1.
Hope this will solve ur issue.
Cheers,
Vasanth
Similar Messages
-
Executing an Arithmatic Formula stored as String
Hi All,
Please help,
I have similar problem with Mr. Vijayakumar V.
I need to get result value of an arithmatic formula which stored as string.
ex:
zform = '( A / 2 ) + ( B * 1.25 + 2 )'.
if I have A = 10, and B = 4.
I do expect the final result to be : 12
for ( 5 + 7 ) = 12
Is there any simple way to do this or
Is there built in function in ABAP to deal with something like this?
Thank you,Hi Oki,
You can solve your problem by generating subroutine at runtime.
Please look at sample code below:
REPORT z_jr05.
DATA: code(72) OCCURS 10,
prog(8),
msg(120),
lin(3),
wrd(10),
off(3),
var_string(50),
p_result TYPE i.
var_string = 'temp_result = ( A * B ) + 199.'.
REPLACE ALL OCCURRENCES OF'A' IN var_string WITH '10'.
REPLACE ALL OCCURRENCES OF'B' IN var_string WITH '11'.
APPEND 'PROGRAM SUBPOOL.' TO code.
APPEND 'FORM HITUNG changing p_result.' TO code.
APPEND 'data: temp_result type i.' TO code.
APPEND var_string TO code.
APPEND 'p_result = temp_result.' TO code.
APPEND 'ENDFORM.' TO code.
GENERATE SUBROUTINE POOL code NAME prog
MESSAGE msg LINE lin
WORD wrd OFFSET off.
IF sy-subrc <> 0.
WRITE: / 'Error during generation in line', lin,
/ msg,
/ 'Word:', wrd, 'at offset', off.
ELSE.
WRITE: / 'The name of the subroutine pool is', prog.
SKIP 2.
PERFORM hitung IN PROGRAM (prog) CHANGING p_result.
WRITE p_result.
ENDIF.
Regards, -
How to execute a select query stored in variable
Hello helpers ,
I have some "select queries" stored in the database . Now I can derive this query in some variable . How do I execute this query from the variable .
example :
Data Query type char50 .
QueryVar = 'Select MATNR from MBEW where BWKEY = '0001' . '
How do I execute this Query stoored in variable QueryVar in ABAP program ?
Thanks a lot for helping .
Regards
ShashankShashank,
It is also possible to use (column_syntax) and (dbtab_syntax) together with (cond_syntax) when using SELECT statements in ABAP. For more info on (column_syntax) and (dbtab_syntax) just have a quick look at ABAP Keyword documention on SELECT statement (hit F1 on SELECT then scroll down to Select->Select result->Select Columns....)
So in your case, you need to separate out (split) the value in 'wa_itab-query' into other variables or append into separate internal tables using common keys etc. - then looping at those tables with the common key (READ TABLE WITH KEY....) use the following syntax at the time of triggering the SELECT query:
SELECT (column_syntax)
FROM (dbtab_syntax)
WHERE (cond_syntax).
Also worth a look at this example below:
PARAMETERS: p_cityfr TYPE spfli-cityfrom,
p_cityto TYPE spfli-cityto.
DATA: BEGIN OF wa,
fldate TYPE sflight-fldate,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
END OF wa.
DATA itab LIKE SORTED TABLE OF wa
WITH UNIQUE KEY fldate carrname connid.
DATA: column_syntax TYPE string,
dbtab_syntax TYPE string.
column_syntax = `c~carrname p~connid f~fldate`.
dbtab_syntax = `( ( scarr AS c `
& ` INNER JOIN spfli AS p ON p~carrid = c~carrid`
& ` AND p~cityfrom = p_cityfr`
& ` AND p~cityto = p_cityto )`
& ` INNER JOIN sflight AS f ON f~carrid = p~carrid `
& ` AND f~connid = p~connid )`.
SELECT (column_syntax)
FROM (dbtab_syntax)
INTO CORRESPONDING FIELDS OF TABLE itab.
LOOP AT itab INTO wa.
WRITE: / wa-fldate, wa-carrname, wa-connid.
ENDLOOP.
Hope this helps.
Cheers,
Sougata. -
Storing a conditional formatting formula in a variable
I have a conditional formatting formula that exceeds the 393 character limit for Word fields. I've placed the formula directly into the template table, and it works correctly. But now, of course, there are several hundred characters of formatting information in that cell, along with the data field. Not pretty.
Is there a way to store that long formula into a variable, and then refer to that variable as the conditional format? I'm getting stuck on the right-arrow tags (>). I can't figure out how to include those in the string and store them in the variable.
Here's a simplified example of what I'm trying to do:
<?xdoxslt:set_variable($_XDOCTX,'myvar',"<?if:number(Sales) gt 1000000?><?attribute@incontext:color;'red'?><?end if?>")?>
The inclusion of the right-arrow tags (>) in the string causes a failure when attempting to Preview. If I replace all of the right-arrow tags with something else, like the number 8 ...
<?xdoxslt:set_variable($_XDOCTX,'myvar',"<?if:number(Sales) gt 1000000?8<?attribute@incontext:color;'red'?8<?end if?8")?>
... the string is stored in the variable, and I can refer to it in the template table by using <?xdoxslt:get_variable($_XDOCTX,'myvar')?>. It's useless, of course, but it works correctly. The string is stored in the variable, and the contents of the variable appear in the template.
So how can I imbed the right-arrow tags in this text string? Use an escape character? Imbed the ASCII code? I'd do either of those in a heartbeat if I could figure out the right syntax.Related information is available at:
Where to put xsl:variable definition -
What is the best way to execute immediate particular sql stored in a table
I have a string variable containing row_ids eg "12,24,35,23"
and a table
row_id, sql
1 , "insert into some_table values(23,'Happy');"
6 , "insert into some_other_table values(24,'Sad');"
12 , "insert into some_table values(23,'Crazzzy');"
15 , "insert into some_other_table values(23,'Old');"
23 , "insert into another_table values(23,'Left');"
24 , "insert into stuff_table values(23,'Gold');"
30 , "insert into old_table values(23,'Even');"
35 , "insert into archive_table values(23,"True");"
And I need to write a plsql function that takes the list of row_ids as an argument and executes the sql statements stored in the table that matches.
I am trying a combination of cursor and execute immediate statements to do it at the moment but suspect I am being very inefficient. So any suggestions or examples of similar code anyone knows about would be hugely appreciated.
Cheers
ReubenNot sure why anyone would be doing such a thing as storing their SQL in a table and wanting to dynamically execute it (generally this is bad practice), but if you must...
SQL> select * from testdata;
SQL_ID SQL_TEXT
1 insert into some_table values(23,'Happy');
6 insert into some_other_table values(24,'Sad');
12 insert into some_table values(23,'Crazzzy');
15 insert into some_other_table values(23,'Old');
23 insert into another_table values(23,'Left');
24 insert into stuff_table values(23,'Gold');
30 insert into old_table values(23,'Even');
35 insert into archive_table values(23,'True');
8 rows selected.
SQL> set serverout on
SQL> ed
Wrote file afiedt.buf
1 DECLARE
2 v_ids VARCHAR2(4000) := '12,24,35,23';
3 CURSOR cur_fetch IS
4 SELECT sql_text
5 FROM testdata
6 WHERE sql_id IN (SELECT TO_NUMBER(REGEXP_SUBSTR (v_ids, '[^,]+', 1, rownum))
7 FROM DUAL
8 CONNECT BY ROWNUM <= length(regexp_replace(v_ids,'[^,]*'))+1);
9 BEGIN
10 FOR s IN cur_fetch
11 LOOP
12 DBMS_OUTPUT.PUT_LINE(s.sql_text); -- For demo purposes show the sql text
13 -- EXECUTE IMMEDIATE s.sql_text; -- In reality, uncomment this to execute the sql text
14 END LOOP;
15* END;
16 /
insert into some_table values(23,'Crazzzy');
insert into another_table values(23,'Left');
insert into stuff_table values(23,'Gold');
insert into archive_table values(23,'True');
PL/SQL procedure successfully completed.
SQL> -
How to execute a string formula and assign the result to a number field
How to execute a string formula and assign the result to a number field
Hi,
we have a function that returns a string like this:
'(45+22)*78/23'
After we should calculate this string and assign the value to a numeric block field
Example:
k number(16,3);
k:=fun1('(45+22)*78/23'); where fun1 execute and translate to number the string.
Does exist a function like fun1 ??
How can we do ?
RegardsHello,
this is the code that does the job:
SQL> set serveroutput on
SQL> DECLARE
2 ch VARCHAR2(20) :='22+10' ;
3 i NUMBER ;
4 BEGIN
5 EXECUTE IMMEDIATE 'select ' || ch || ' from dual' INTO i;
6 dbms_output.put_line ('i = ' || TO_CHAR(i));
7 END ;
8 /
i = 32
Procédure PL/SQL terminée avec succès.
SQL>
just you have to do is to create a small stored function that take the string to calculate and return the number result
Francois -
How to get values from a stored package variable of type record ?
Sir,
In my JClient form, I need to get values from a database stored package variable of type record. And the values are retained in the JClient form for the whole session. The values are copied only once when the form is started.
What is the best way to do that ?
Thanks
StephenStephen,
not sure what your model is, but if it is Business Components, I think I would expose the properties as a client method on the application module. This way all JClient panels and frames will have access to it. You could use a HashMap to store the data in teh app module.
If JDBC supports the record type, then you should be able to call it via a prepared SQL statement. If not, you may consider writing a PLSQL accessor to your stored procedure that returns something that can be handled.
Steve Muench provides the following examples on his blog page
http://otn.oracle.com/products/jdev/tips/muench/stprocnondbblock/PassUserEnteredValuesToStoredProc.zip
http://otn.oracle.com/products/jdev/tips/muench/multilevelstproc/MultilevelStoredProcExample.zip
Frank -
How to interpret a formula stored in a transparent table
Dear all,
I have filled in a specific transparent table with some formula. I would like to read the table, find the formula and take the result of this formula in a variable
In my table :
Country, formula 1, formula 2
FR, P + 1 ( 1 / 80 ), R * 1 ( 1 - 30 )
In my program,
I read the table with the country as key, and I would like, first to replace the P and R by a value in the program, and I would like to interpret the formula and put the result of this in a variable
if Country = FR
replace P by w_price in formula1
replace R by w_tva in formula2
w_result1 = formula1
w_result2 = formula2
I don't know how to do interpret these 2 statement like :
w_result1 = w_price + 11 ( 1 / 80 )
w_result2 = w_tva * 1 ( 1 - 30 )
I tought to use the field symbol and assign but w/o success for the moment
Can anybody help me ? it is very important.
Thanks
Kind regards
VéroniqueHello,
I think my questions was not so clear.
In fact, the formula is in a field in a transparent table
for example : my_table has a field my_formula. In this field I have written: P + 1 ( 1 / 80 )
I need to interpret the content of the field my_formula to solve the formula and put the result in a variable.
I don't want to write the formula directly in the program
thanks
Véronique -
Error when executing statement for table/stored proc
Hi All,
I am getting this error when executing IDOC to JDBC (Stored Procedure) Scenario.
In my stored procedure I have three insert statements to insert rows in to 3 tables.
This stored procedure is working fine for two insert statements i.e,
For this I have created data type for stored procedure with 10 elements and executed the scenario and was successfully running.
when I added 3rd insert statement to stored procedure ie., when i added 5 more elements to the datatype (totally 15 elements) it starts giving the bellow error in Message Monitoring.
<i><b>Exception caught by adapter framework: Error processing request in sax parser: Error when executing statement for table/stored proc. 'COGRP_TMP_PROC_1' (structure 'Statements'): java.sql.SQLException: General error</b></i>
<i><b>Delivery of the message to the application using connection JDBC_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'COGRP_TMP_PROC_1' (structure 'Statements'): java.sql.SQLException: General error</b></i>
Note:- I have run the stored procedure with three insert statements in Sql Server, and also by calling an external program also, and was working fine.
<i><b> Note : Is there any structure needs to be follow when working with IDOC to Stored procedure.</b></i>
I am struck up with the error, can any body resolve this issue.
Thanks in Advance,
MurthyHi narasimha,
This seems to be any error due to incorrect query formation.In your receiver jdbc channel set the parameter logSQLstatement = true.you can find this parameter in the advanced mode. Using this parameter you will be able to see the sql query which is generated at runtime in the audit log in RWB.
Regards,
Pragati -
How to execute .sql file in Stored Procedure?
Hi,
I have an urgent requirement, where i have to execute .sql file form Stored Procedure.
This .sql file will have set of update statement. I need to pass value to this update statement.
Kindly please help me.
Regards,
IrfanThis is required as part of Data Migration where i have to do 100 of table's update. Each time update table will defer, so its better to have in separate script file (.sql). Can u paste some sample/syntax to exceute .sql file from stored procedure. I am new to this PL/SQL.
How have you determined that it's "better" to have seperate scripts? I assume you mean the table name will "differ" (and not "defer" - I assume that's just because English isn't your first language? no problem - I think I understand what you're asking).
So what I think you're asking is that you have dynamic table names but each table needs to be updated in the same way?
Question: Why do you have tables with different names that all need the same process doing to them?
Assuming it's a valid requirement (and 99% of the time doing dynamic coding implies it's not).... you could use dynamic code, rather than 'scripts'...
e.g.
create procedure update_table(tbl_name varchar2) is
begin
execute immediate 'update '||tbl_name||' set lastupdate = null';
end;
As you haven't bothered to provide a database version, any example code/data or explanation of what you're actually doing, you're not going to get any detailed answer. Please do take the time to read the FAQ and post appropriate details so people can help you. -
File to JDBC :Error when executing statement for table/stored proc.
Hi,
I am getting following error when i am trying to insert data into z-table using JDBC recr adapter.
Error while parsing or executing XML-SQL document: Error processing request in sax parser: Error when executing statement for table/stored proc. 'ZTEST' (structure 'STATEMENT'): java.sql.SQLException: <u>[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Invalid object name '<b>ZTEST</b>'.</u>
But the database table name 'ZTEST' exists in the system.
XML structure:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_RECR xmlns:ns0="http://urn:srini/FileToJDBC">
<STATEMENT>
<TEST action="INSERT">
<table>ZTEST</table>
<access>
<ROLLNO>123</ROLLNO>
<FIRSTNAME>ABC</FIRSTNAME>
<LASTNAME>XYZ</LASTNAME>
</access>
</TEST>
</STATEMENT>
</ns0:MT_RECR>
Regards,
SrinivasHi,
I have changed my MT str but still getting the same error.Is it possible to insert/ update a z-table using JDBC adapter.
XML str:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_RECR xmlns:ns0="http://urn:srini/FileToJDBC">
<STATEMENT>
<ZTEST action="INSERT">
<access>
<ROLLNO>123</ROLLNO>
<FIRSTNAME>abc</FIRSTNAME>
<LASTNAME>XYZ</LASTNAME>
</access>
</ZTEST>
</STATEMENT>
</ns0:MT_RECR>
Regards,
Srinivas -
Problem with execute SSIS package from stored procedure
Hi,
I would like to execute SSIS package from stored procedure. Therefore, I implemented sp which exec SSISDB.CATALOG.CREATE_EXECUTION method. When I try to test it from SSMS on remote server, I got error that
I was able to solve by adding “WITH EXECUTE AS …”. Then I got another error: The server principal "Domain\user" is not able to access the database "SSISDB" under the current security context. On Internet, I found a couple post that describe
how to access SSIS catalog (one of them by Ke Yang -
http://blogs.msdn.com/b/mattm/archive/2012/03/20/ssis-catalog-access-control-tips.aspx). It didn’t help. I’m still getting the error message.
How to debug this issue?
Any suggestion?
Thanks
SQL Server 2014 BISSMS does not propagate user credentials thus the error
Arthur
MyBlog
Twitter -
Sorting numbers stored in variables
I'm completely new at java and would like some help with a certain problem.
I have 5 numbers, num1, num2, num3, num4, and num5.
I have them stored in variables as listed. I'd like to know, is there a way to sort them using array.sort or would I have to use another method?I have 5 numbers, num1, num2, num3, num4, and num5.
I have them stored in variables as listed. Are you saying you have 5 different ints declared like
int num1, num2, etc.or an int[] with length 5?
I'd like
to know, is there a way to sort them using array.sort
or would I have to use another method?If they are stored in an array you can use http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html#sort(int[])
to sort them. -
Error when executing statement for table/stored proc DB2 - Data Truncation
Hi,
I have one call sp in XI with n parameters int and two parameters out.
well, to implement the interface gives the following error
com.sap.aii.af.ra.ms.api.DeliveryException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'SPSAPAR9' (structure 'Statement'): java.sql.SQLException: The number of parameter values set or registered does not match the number of parameters
Thanks for your help
Ximena
Edited by: Ximena Gonzalez on Feb 19, 2008 11:50 AM
Edited by: Ximena Gonzalez on Feb 20, 2008 12:17 PMMy Error is change
Error while parsing or executing XML-SQL document: Error processing request in sax parser: Error when executing statement for table/stored proc. 'SAPPRG.SPSAPAR9' (structure 'Statement'): java.sql.DataTruncation: Data truncation
but de change DT SP
<?xml version="1.0" encoding="UTF-8" ?>
<ns1:AlistReqDet2_MT xmlns:ns1="urn:proxl:tmuc:proxl01:AlistReqItems">
<Statement>
<SPSAPAR9 action="EXECUTE">
<table>SAPPRG.SPSAPAR9</table>
<ISAPNU1 isInput="TRUE" type="STRING">0080000353</ISAPNU1>
<ISAPEM1 isInput="TRUE" type="STRING">'LU'</ISAPEM1>
<ISAPC05 isInput="TRUE" type="STRING">15353</ISAPC05>
<ISAPSEC isInput="TRUE" type="STRING">10</ISAPSEC>
<ISAPLOT isInput="TRUE" type="STRING">'lats'</ISAPLOT>
<ISAPCA1 isInput="TRUE" type="STRING">10</ISAPCA1>
<ISAPCA2 isInput="TRUE" type="STRING">10</ISAPCA2>
<ISAPKIL isInput="TRUE" type="STRING">10</ISAPKIL>
<ISAPES1 isInput="TRUE" type="STRING">'T'</ISAPES1>
<ISAPSW isOutput="TRUE" type="STRING" />
</SPSAPAR9>
</Statement>
</ns1:AlistReqDet2_MT> -
Error when executing statement for table/stored proc. : ORA-00911
Hi All,
I am posting IDOC->XI->JDBC, approx 5000 Idocs.
But few messages are giving following error in XI-_SXMB_MONI
Can any one guide me what is the cause of error? I check whole Idoc data I am not able to see bad character? can any once guide me what are the bad character in XML to post data in oracle? so that i can search in XML and how to avoide this error.
"com.sap.aii.af.ra.ms.api.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'HRP1001' (structure 'INSERT_PAD34'): java.sql.SQLException: ORA-00911: invalid character"> I am talking about following IDOC.<ZRMD_A06> ->
> <E1PLOGI SEGMENT="1">-> <E1PITYP SEGMENT="1"> ->
> <E1PAD34 SEGMENT="1"> -><PROZT>0.00 #</PROZT>.
> Can we remove this # during message mapping in XI??
sure you can remove it using Replace function or by writing UDF.
as I am seing # is last character..<b>so remove # with " " (single space) and then use the TRIM fucntion.</b>
Thanks
Farooq.
*<b>Rewards points if you find it useful*</b>
Maybe you are looking for
-
Is FIREFOX 3.6.13 is faster than 3.6.8?
Is FIREFOX 3.6.13 is faster than 3.6.8?
-
Export and Import Simultaneously
Hi All, we daily get requests to sync a schemas. ex: copy data from user a to user b (both users are in the same database) as usual we take export of user A schema and import into user B. This process takes somewhere around 80 to 100 mins ( after tun
-
Is there any reason why my computer has a small burst of network activity every 10 seconds or so? (a couple of KB received and sent) And that is accompanied by disk activity. It happens even when I have no applications open (no dropbox etc...) and it
-
Multiple T and F records in 1099 Misc.
We have a scenario where for various company codes there is one 1099 electronic file (magnetic media) to be generated. These company codes have a different TIN hence "Multiple company code" flag can not be used in the country specific section. We hav
-
My iPhone keeps telling me I don't have enough space to update my software. But I just bought 15GB of storage, of which 11.7GB is free! So I don't understand. Can anybody please help me? I'm really bad with technology so I don't have a clue.