Invalid data type conversions
what are the invalid data type conversions in ABAP ???
Moderator message: please search for available information/documentation.
Edited by: Thomas Zloch on Mar 10, 2012 6:01 PM
No Amanda,
The values that I see in message monitor are also those that comes to XSLT programs as input.
I investigated our problem a little further myself:
1) XI always converts messages into XML format - this everybody knows.
2) In XI documentation it is declared that XI uses ISO 8601 for DATE type formatting. That's why you see dates in format YYYY-MM-DD in XML data in message monitoring.
3) The appearance of those decimal values are not that obvious for me. If XI uses ABAP transformation for message content then applies the rules for converting ABAP data types into XML. For this there is a SAP document 'ABAP - XML mapping' from TechEd2004. This document seems to describe how ABAP data types are handled by XML transformation.
Anyway, we currently need to play with decimal values in XSLT mapping programs inside XI:
a) add leading 0 integer if source value < 1
RFC returns 0.123 -> XI converts to XML '.123' -> XSLT mapper should return '0.123' ->SOAP response returns '0.123'
b) add decimal point and trailing zeros
RFC returns 0.000 -> XI converts to XML '0' -> XSLT mapper should return '0.000' ->SOAP response return '0.000'
With dates, the problem is actually on documenting mapping rules when writing interface specifications. If you would write an EAI-solution-independent conversion rule (RFC/date->SOAP/char) for date field it could sound like: YYYYMMDD -> dd.mm.yyyy. This works semantically between these systems but would not work for XI-developer, because he get YYYY-MM-DD from the RFC.
Additionally the decimal type conversion requirements in XSLT mapping programs probably only applies XI and are therefore not reusable in other EAI environments.
I would be glad if somebody would still have further comments for this data type conversion issue.
br: Kimmo
Similar Messages
-
The priority of different data type conversion
Hi All,
I want to know the priority of data type conversion rule. if in an expression, I have several kind of data type( I, P, F,N..).
Then finaly, all the data object will convert to which data type?
I don't know the priority of data conversion.
E.g. data a type i. data b type p. data c type f.
a = b + c.
or data d type p, data e type f.
if ( d > f ).
Then who will convert to who's type?
Thanks and Regards.
AaronFor expressions, the right term in SAP is "calculation type", it's explained here : [abap help - determining the calculation type|http://help.sap.com/abapdocu_70/en/ABENARITH_TYPE.htm]. SAP takes the "biggest" type of all variables in the expression. It can be I, P or F (smallest is I, biggest is F).
Conditions are handled differently, just using data type conversion (see link given above by Abhishek), SAP converts from smallest to biggest type (in your case, it converts P to F and compares the two F variables). -
Need Help with data type conversion
Hello People,
I am new to java, i need some help with data type conversion:
I have variable(string) storing IP Address
IPAddr="10.10.103.10"
I have to call a library function which passes IP Address and does something and returns me a value.
The problem I have is that external function call in this library excepts IP Address in form of a byte array.
Here is the syntax for the function I am calling through my program
int createDevice (byte[] ipAddress).
now my problem is I don't know how to convert the string IPAddr variable into a byte[] ipAddress to pass it through method.Class InetAddress has a method
byte[] getAddress() You can create an instance using the static method getByName() providing the IP address string as argument. -
ORDImageSignature Invalid data type in Oracle 8i
hi there,
i have just started working on Intermedia, i am using Oracle 8i. i have configured the intermedia and executed the ordwebutl.sql file. all othe media data types are working perfectly like, ORDAudio, ORDImage,ORDVideo, but the ORDIMageSIgnature is not working at all. when i use it as data type in any table it says Invalid data type. which means oracle 8i is not recognizing ORDImageSIgnature at all. plz help me as soon as possible. Thanks in advance.The ordimagesignature is not something you can see or hear. It is strictly binary metadata about the image, used only to compare images to each other.
What are you trying to do?
Larry -
I have the following code working perfectly fine:
CREATE TYPE mytype IS TABLE OF INT;
SELECT * FROM TABLE(mytype(1,2));
When I declare the type in a package, however, I get invalid data type. For example,
CREATE OR REPLACE mypackage AS
TYPE mytype IS TABLE OF INT;
END mypackage;
SELECT * FROM TABLE(mypackage.mytype(1,2));
I need to include the type in a package because I have a function in the same package that will take the nested table as in parameter.
YSWhen you need to select from a type, that type has to be created as a SQL type.
This is true in SQL
Re: how to use a collection in procedure
And in a stored procedure
Re: Passing an array to an Oracle stored procedure -
Data error (invalid data type 17) in a Remote Function Call
Hi,
I am passing 2 select-option tables to RFC.
Tables have structures -
Table1 SIGN(C1)
OPTION(C2)
HIGH(C6)
LOW(C6)
Table2 SIGN(C1)
OPTION(C2)
HIGH(C20)
LOW(C20)
At the destination side, I have created two table types which have same structure.
But when I call the RFC , program terminates with error - "Data error (invalid data type 17) in a Remote Function Call"
Not able to understand the reason for this error. Please help.
Thanks,
SujeetHi,
check out this example
[LINK|http://abap.googlar.eu/viewtopic.php?f=5&t=28]
You have several ranges that you can use like RANGE_AUF.
Function example:
FUNCTION zexemple.
*"*"Interface local:
*" IMPORTING
*" REFERENCE(R_HORA) TYPE FLAG
*" REFERENCE(R_DIA_1) TYPE FLAG
*" REFERENCE(P_IDOC) TYPE FLAG
*" EXPORTING
*" REFERENCE(MSG) TYPE CHAR255
*" TABLES
*" T_OIFSPBL STRUCTURE OIFSPBL
*" SL_PBLNR STRUCTURE RANGE_PBLNR
*" SL_MATNR STRUCTURE RANGE_MATNR
*" SL_HORA STRUCTURE RANGE_UZEIT
*" T_ERROS STRUCTURE ZARSTRING
ENDFUNCTION.
Report:
SELECT-OPTIONS: sl_pblnr FOR oirbpblb-pblnr,
sl_matnr FOR a361-matnr.
~
Final question:
You are passing the values using TABLES and not IMPORTING right? -
Data type conversion JCO To ABAP( Double to DEC)
Hi,
I want to update a field having data type as DEC with length 11 in APO system using JCO.Whatever i give as input is not getting reflected in APO system. Instead i get some different value.
It seems that there is some data type conversion for that field..
Thanks
Archanaif(tableName.equals("BAPI10001LOCPRDVERS2"))
table.appendRow();
//System.out.println("getting inside table "+tableName);
table.setValue("SOP112","PRODUCT");
table.setValue("SCMTEST111","LOCATION");
table.setValue("1001","LOCTYPE");
table.setValue("SCMTEST111","LOCATION_INT");
table.setValue("000","PLANNING_VERSION");
table.setValue("5000","SAFETY_DAYS_SUPPLY");//this is the field having problem
table.setValue("5","SAFETY_STOCK");
table.setValue(" ","SAFTY_STOCK_CALC_METHOD");
table.setValue("5.00","OPENING_PERIOD");
table.setValue("15","FORECAST_HORIZON");
table.setValue(("20000"),"VMI_PROM_LEAD_TIME");
table.setValue("0","MINIMUM_LOT_SIZE");
table.setValue(bd1,"TARGET_DAYS_SUPPLY"); -
Data type conversion from packed to numeric
Hi Experts,
i have a question on data type conversion. My requirement is:
i have fields of type packed decimal in my internal table itab. I need to convert the values of packed decimal fields in itab to numeric type.
Example:
Data: begin of itab occurs 0,
ebeln like ekko-ebeln,
ebelp like ekpo-ebelp,
menge(15) type p decimals 2,
netpr(15) type p decimals 2,
end of itab.
if itab-menge has a value of 2.00, i need to convert that value to ' 200'. Right justified.
if itab-netpr has a value of 1,234.56, i need to convert that to ' 123456'.
The above internal table itab is passed to the Function module GUI_DOWNLOAD and the itab data is downloaded to a text file.
Please let me know how to acheive this objective.Hi ,
You can use
SPLIT at '.' into v1 v2
concatenate v1 v2 into vv1.
REPORT ZDN_TEST_001 .
data: lv_var1(15) type p decimals 2 value '123.00'.
data: lv_var2(15) type p decimals 5 value '123.12121'.
data: lv_varc1(15) type c.
data: lv_varc2(15) type c.
data: lv_varc1d(2) type c.
data: lv_varc2d(5) type c.
data: lv_varc11(15) type c.
data: lv_varc21(15) type c.
write:/ lv_var1.
write:/ lv_var2.
*1)write & REPLACE.
write lv_var1 to lv_varc1.
write lv_var2 to lv_varc2.
REPLACE '.' WITH SPACE INTO lv_varc1.
CONDENSE lv_varc1 NO-GAPS.
REPLACE '.' WITH SPACE INTO lv_varc2.
CONDENSE lv_varc2 NO-GAPS.
write:/ lv_varc1.
write:/ lv_varc2.
*2)split & concatinate
write lv_var1 to lv_varc1.
write lv_var2 to lv_varc2.
split lv_varc1 at '.' into lv_varc1 lv_varc1d.
concatenate lv_varc1 lv_varc1d into lv_varc11.
split lv_varc2 at '.' into lv_varc2 lv_varc2d.
concatenate lv_varc2 lv_varc2d into lv_varc21.
write:/ lv_varc11.
write:/ lv_varc21. -
How to avoid oracle implicit data type conversion
Hello,
i have a query like below..
SELECT EMP_NUM
FROM EMPLOYEE
WHERE EMP_NUM=SOURCE_EMP_NUM;
1. My SOURCE_EMP_NUM data type is varchar2.
2. My table EMP_NUM data type is number.
3. In one case my SOURCE_EMP_NUM value '00000123'
4. I have an entry in table for EMP_NUM as 123.
5. In this case my query is success and giving me row for 123, which i don't want it should compare with leading zeros. But due to oracle implicit conversion the comparision getting passed.
6. I have an index for this column, so i can't use "like" operator...
Can somebody help me.....
Thanks in adv....HI,
Just see this :---
SQL> select * from emp where deptno=00020;---------deptno is number, 00020 is number and its true
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800 20
7566 JONES MANAGER 7839 02-APR-81 2975 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
SQL> select * from emp where to_char(deptno)=00020;=-------------deptno is character type and 00020 is number so still it is leaving 0000 from 20 as it number and has no impact,
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800 20
7566 JONES MANAGER 7839 02-APR-81 2975 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
SQL> select * from emp where to_char(deptno)='00020';---now both are character and no row is selected.
no rows selected
So you can avoid the implicit conversion according to the requirements and in this case we are usin to_char function to avoid this.
Regards,
Navneet -
Data type conversion issues between Oracle and SQL Server
Hi there, I am using Heterogeneous Services to insert into a SQL Server database. I am running into an issue between data types regarding Oracle's VARCHAR2 and trying to insert that into a SQL Server MONEY data type. I tried using the TO_NUMBER() function to convert my VARCHAR2 to a number, but that didn't seem to help.
Does anyone have any advice on how to work around this??
Thanks for any help,
ivalum21ORA-02047: cannot join the distributed transaction in progress
ORA-06512: at "MY_PACKAGE_NAME", line 263
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC]DRV_Execute: DB_ODBC_ENGINE (1645): ;
[Microsoft][ODBC SQL Server Driver][SQL Server]Disallowed implicit conversion
from data type varchar to data type money, table 'tableA',
column 'total_amount'. Use the CONVERT function to run this query. (SQL
State: 37000; SQL Code: 260)
ORA-02063: preceding 2 lines from SQLSERVER_LINK
ORA-06512: at "RCDTPUMP.CAMPUSCALL_DATAPUMP_UNI", line 875
ORA-06512: at "RCDTPUMP.CAMPUSCALL_DATAPUMP_UNI", line 791
ORA-06512: at "RCDTPUMP.CAMPUSCALL_DATAPUMP_UNI", line 1156
ORA-06512: at line 1
That is what I get when I take out the TO_NUMBER()
Message was edited by:
ivalum21 -
New user for java (Data type conversion)
Hi all, I'm the newer from JAVA, just start to learn it few weeks before, there have some problem about me.
I want to konw how to change the data type ??For example, if I have a string call year and store the char "1", how can I change that field to int type ?
Thanks very muchYou should have a link to, or download, the API docs. You can see them on line at:
http://java.sun.com/j2se/1.3/docs/api/index.html
Look up the class Integer. It has a static method, parseInt() which takes a String argument and returns an int.. Since it is static, you can do the following:
int value = Integer.parseInt(your_string);
Then, to make it robust, you can put try/catch around it and catch NumberFormatException if you need to do error checking. -
Moving Values to fields of different data types- Conversion
I'm having trouble figuring out how to move a value from a field of a <b>char type</b> to a field of <b>structure RSDSSELOPT</b> type in a different itab.
I'll show you what I have so far.
DATA: BEGIN OF ITABAPI OCCURS 0,
SEARCHFLD LIKE ZDOLTARC03-SEARCHFLD,
VALUE LIKE ZDOLTARC03-VALUE,
END OF ITABAPI.
DATA: BEGIN OF ITAB_GO occurs 0,
FIELDNAME LIKE RSDSTABS-PRIM_FNAME,
SELOPT_T TYPE RSDS_SELOPT_T,
END OF ITAB_GO.
LOOP AT ITABAPI.
MOVE: ITABAPI-SEARCHFLD TO ITAB_GO-FIELDNAME,
<b>ITABAPI-VALUE TO ITAB_GO-SELOPT_T.</b>
APPEND ITAB_GO.
ENDLOOP.
As an alternative I tried feeding the value into ITAB_GO-selopt_t-low, but breaking down the structure that far may be beyond the capabilities of the processor.
If anyone knows a way to feed a char value into the structure field please help.
N LHi Natasha,
my advice is: don't try to do it in just step. Instead,
DATA: LT_RANGE TYPE TABLE OF RSDSSELOPT WITH HEADER LINE.
LOOP AT ITABAPI.
MOVE: ITABAPI-SEARCHFLD TO ITAB_GO-FIELDNAME.
CLEAR: LT_RANGE.
REFRESH: LT_RANGE.
LT_RANGE-SIGN = 'I'.
LT_RANGE-OPTION = 'EQ'.
LT_RANGE-LOW = ITABAPI-VALUE.
APPEND LT_RANGE.
ITAB_GO-SELOPT_T[] = LT_RANGE[].
APPEND ITAB_GO.
ENDLOOP.
Pls let us know if it helped. BR,
Alvaro -
Data Type Conversion... Help...
Hi... As per my requirement , i need to fetch last three days partition records from the below listed tables i.e EMP and DEPT and purge it.
But i thought LAST_ANALYZED column will fetch correctly; but it isn't.
Moreover the requirement is to fetch using HIGH_VALUE column which has LONG datatype.
So please help, how can i do my conversion from LONG() datatype and compare with SYSDATE or anyother logic to calculate last 3 days?
Query:
SELECT dtp.partition_name,dtp.table_name
FROM dba_tab_partitions dtp
WHERE dtp.table_name IN ('EMP','DEPT')
AND TRUNC(dtp.high_value) ......
I tried with the below query...
SELECT partition_name,table_name
FROM dba_tab_partitions dtp
WHERE TRUNC(dtp.high_value) <= TRUNC(SYSDATE) - 3;
Got the error as "ORA-00932: Inconsistent datatype got NUMBER" :(
Please help...
Edited by: Sunil G on Sep 23, 2010 3:26 AM
Edited by: Sunil G on Sep 23, 2010 4:57 AMThanks for your reply.
But below was the actual requirement ; which i initially posted.
But the fetch was not happening properly if i do with last_analyzed.
So thats why i posted this question.
So how we can handle this case with respect to dynamic query?????
===========================================================================================
-- This Procedure is created to purge the 3-days records by dropping older partitions
PROCEDURE P_PUR_STG_REC(p_tab_name IN VARCHAR2)
IS
query_str VARCHAR2(4000);
TYPE t_rec_part IS RECORD
( l_part_name dba_tab_partitions.partition_name%TYPE,
l_part_tab dba_tab_partitions.partition_table%TYPE
TYPE r_rec_part IS TABLE OF t_rec_part;
BEGIN
query_str := 'SELECT dtp.partition_name,dtp.table_name
FROM dba_tab_partitions dtp
WHERE dtp.table_name IN ' || p_tab_name ||
' AND TRUNC(dtp.last_analyzed) <= TRUNC(SYSDATE) - 3' ;
OPEN c_fetch FOR query_str ;
EXECUTE IMMEDIATE query_str BULK COLLECT INTO r_rec_part;
FOR i IN r_rec_part.first..r_rec_part.last LOOP
DBMS_OUTPUT.PUT_LINE('r_rec_part(i).l_part_tab - '
||r_rec_part(i).l_part_tab
||' , '
||'r_rec_part(i).l_part_name - '
||r_rec_part(i).l_part_name
EXECUTE IMMEDIATE 'ALTER TABLE '|| r_rec_part(i).l_part_tab ||
' DROP PARTITION '|| r_rec_part(i).l_part_name ||'UPDATE INDEXES ';
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Exception occured at when-others -> SQLCODE-->'
|| SQLCODE
||' , '
|| 'SQLERRM-->'
|| SQLERRM);
RAISE;
END P_PUR_STG_REC;
=========================================================================================== -
Data Type Conversion - DUMP - Unable to interpret "ABC1234 " as a number.
Hi Experts,
Am getting dump, my code is,
data:
it_asset-anln1 type anla-anln1. (here its CHAR 12).
unpack it_asset-anln1 to it_asset-anln1.
here, when am getting the the values as ABC1234 into it_asset-anln1----
> am getting DUMP, so, let me know that, How to fix it?
thanqPretty sure that you can not unpack a value when it has non-numeric characters, so you will want to check it before doing the UNPACK.
if it_asset-anln1 CO '1234567890. '.
unpack it_asset-anln1 to it_asset-anln1.
endif.
Regards,
Rich Heilman -
Currency Data type conversion to send as file.
Hello, I have a requirement to pull the ID,total_amount field defined as currency from Salesforce and send it to file as fixed width 10 bytes. Source values: 1 15.02 11.06 Amount 15.0 has to be changed to 2 decimals while sending it to file. I have multiplied 15.0 * 1.0 to make it 15.00 , but for the 11.06 * 1.0 , I am getting result 11.060. I have to get 11.06 as it is.I have coded the logic this way.lpad(to_char(Total_Amount__c * 1.0) || '', 10, '0'). Any ideas.ThanksVara
Hi, we are trying to connect to a server from where we have to fetch a fax documet or multiple ones using web services wsdl connection and using a metod call and get the fax files and write it to salesforce. Below is the error I encounter:] [ERROR] Jul 14, 2015 7:44:47 AM org.ow2.easywsdl.schema.api.abstractElmt.AbstractIncludeImpl retrieveIncludeWARNING: This import is already include : http://ix1faxsvrtst.am.lilly.com:8000/OpenText/ImportingServiceBasic?xsd=xsd4. This probably mean there's a cyclic import Have attached the session log for reference. Connection DetailsConnection Name:CSP_RightFax to SFDC InboundDescription:
Type:Webservices V2 (Informatica Cloud Labs)Created On:Jul 13, 2015 08:45:57 AMUpdated On:Jul 14, 2015 07:08:10 AMCreated By:
Updated By:
Webservices V2 Connection PropertiesRuntime Environment:mohawkWSDL Url:http://ix1faxsvrtst.AM.LILLY.COM:8000/OpenText/ImportingServiceBasic?wsdlHeader CSV Path:C:\CatchallBody CSV Path:C:\CatchallEndpointUrl:http://ix1faxsvrtst.AM.LILLY.COM:9001/OpenText/ImportingServiceBasicAuthentication Type:NoneUser Name:
Pass Word:
CertificatePath:
Auto csv File Creation:Auto Creation of Body/Header csv filesDownload Path for Attachment:
Upload Path for Attachment:
Enable Logging:falseAllow Empty Tags:false
Maybe you are looking for
-
How to implement autotuning pid in labview in flow control process????
I tried the same way as Example available in LabVIEW..... that is general auto PID simulator... But that didn't worked out for me.....
-
How do i put a horizontal scroll bar in a data block inside a tabpage. Because my data block has too many columns so i don't want that the whole tabpage is scrolled-right. I tried to put a stacked canvas but Forms 6i does not allow me to put a stacke
-
Start/Stop Buttons and infinite loop exit
I am trying to make a GUI with a Start/Stop and an Exit button. Initially the button will have the label "Start". When i push it, its label should become "Stop" and an infinite loop function will begin. I want the loop to run until i press the Stop o
-
Urgent : How to clear data in Buffer ?
HI Experts, I have a problem in executing fox formula. After execution the formula reads some records but not changing / generating any. I think, The data it is reading is in buffer. How can i CLEAR the data in Buffer, if there is any data stored in
-
Mandatory field validation error occurs when user cancels out of blank "cre
Hi - I'm building an application using Oracle 10g 9.0.5.2, with ADF/UIX/Struts. I followed the technique described in the tutorial http://otn.oracle.com/obe/obe9051jdev/uixtutorial/lesson_uix.htm In that example they have a page called BrowseDeptEmp.