DataStage SAP BAPI_ALM_ORDER_MAINTAIN - sap

I'm trying to load some data with the BAPI : BAPI_ALM_ORDER_MAINTAIN.
I need the parameters : IT_METHODS,IT_HEADER.
But I have a problem with the fields :
T_IT_HEADER_BAPI_ALM_ORDER_HEADERS_I_BASICSTART and
T_IT_HEADER_BAPI_ALM_ORDER_HEADERS_I_BASIC_FIN (numeric (6)).
I try to map 000000 or 100000 or '100000'... but i always have this error :
BAPI_ALM_ORDER_MAINTAIN,0: Error: RFC Error: RFC_CONVERSION_FAILURE
DSTAGE-BAPI-F-00096:RFC Error: Cannot convert string value 100000
Do you have some idea?
Thanks,
David

Those values don't make any sense, as 'BASICSTART' and 'BASIC_FIN' reference Basic OrderHeader Dates. The SAP-convension uses dates like 'YYYYMMDD', so you would / should have something like '20170310'.
Check the following :
Documentation on the BAPI : link
Some sample code : link
Kind regards
Nic T.

Related

Error : Field "S_MARA-MATNR" is unkown during FOR statement

DATA: t_mara type STANDARD TABLE OF mara WITH EMPTY KEY.
DATA(t_data1) = VALUE ty_data( FOR s_mara IN t_mara ( s_mara–matnr ) ).
I am trying to implement a similar code using FOR statement but I am getting an error that the field is unknown in the work area even though it would be declared inline.
Can you please let me know what went wrong? This is my first time I am facing this error on FOR loop.
Not sure because you are not providing too much detail but try this:
DATA t_mara type STANDARD TABLE OF mara WITH EMPTY KEY.
DATA(t_data1) = VALUE ty_data( FOR s_mara IN t_mara ( matnr = s_mara-matnr ) ).

PropertyType search problems with RESO API

I am using connect-mls RESO API and I am having a problem forming the query to search for via PropertyType.
http://odata.reso.org/RESO/OData/Property?$filter=/PropertyType/Name eq "Residential"
The above query keeps coming up with malformed URI.
I also run into a problem is if try to filter on the PropertyType field directly via $filter=(PropertyType eq 'Residental') or $filter=(PropertyType eq 'DE').
I get the following error message:
"message": "StatusCodeError: 400 - {\"error\":{\"code\":null,\"message\":\"The types 'ODataService.PropertyType' and 'Edm.String' are not compatible.\"}}"
Also looked at values in the data dictionary because it seems property type is a enum but have not had any success in any of the formats.
http://ddwiki.reso.org/display/DDW16/Property+Type+Summary
Appreciate any guidance on this.
I was able to find the answer from another source. For the enums they are in a format of ODataService.PropertyType'DE'. A proper API call example is listed below.
https://connectmls-api.mredllc.com/reso/odata/Property?$filter=PropertyType eq ODataService.PropertyType'DE'
For more detailed information on how to properly construct these types of queries, you can look at http://www.odata.org/documentation/

Why this simple query is failing in a mule flow?

I have to make some changes in a existing mule flow with little knowledge and although I've spent some days reading online documentation and possible solutions to this, I cannot figure out why this query is failing, as I also have more dynamic queries in my flow with #[xxx] parameters. The query is as follows:
select times from user_request where
ip_address=SUBSTR(#message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS],2,INSTR(#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS], ':')-2)
and request_date=CAST(CURRENT_DATE as varchar2(8))
And the error I got is:
Message : Index: 0
(java.lang.IndexOutOfBoundsException). Payload :
{fecha_solicitud=2016-06-22, moneda=USD, client_id=RIVERA,
user_ip=127.0.0.1, request_times=0} Payload Type :
java.util.LinkedHashMap Element :
/OANDAFlow/processors/3 # oanda:oanda.xml:126 Element XML :
select times from user_requestwhere
ip_address=SUBSTR(#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS],2,INSTR(#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS],
':')-2)and request_date=CAST(CURRENT_DATE as
varchar2(8))>
Note: The transformation to varchar of the date is because the column request_date is varchar.
I've tried this query directly in the Oracle SQL developer replacing #[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS]
with and example like /127.0.0.1:55406 and it worked fine so why through mule is failing???
In the first: #message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS] you are missing a [
One of the fields in your query expects a string value try to put a single quote..it would work ,
Try this
select times from user_request where
ip_address=SUBSTR('#message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS]',2,'INSTR(#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS]', ':')-2)
and request_date=CAST(CURRENT_DATE as varchar2(8))

Issue while checking data before loading in sql data loader

I am using the following code excerpt while loading data in Oracle DB using sql loader:
"tran_code POSITION(238:239)," +
"frm_acct POSITION(247:265) \"TO_NUMBER(:frm_acct)\" NULLIF :frm_acct='*******************'," +
"to_acct POSITION(269:287)," +
It is giving an error on NULL IF i guess the issue is clear that i want to insert null when the data contains only asterisk otherwise convert to number and insert.
thanx in advance.
You can try something like this -
"decode(:YOUR_COL,'***************',NULL,TO_NUMBER(:YOUR_COL))"
However, I suggest better option in this scenarios is the "external table".
Here's link for your reference :-
http://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm

Entity Framework ExecuteStoreCommand gives {"ORA-00936: missing expression"}

I'm trying to run the following in a VB.NET application using Entity Framework 6 on an Oracle database:
mrstage.ExecuteStoreCommand("DELETE FROM CB_LISTINGS WHERE ELIGIBLE={0}", eligible)
When it executes, I get the error: {"ORA-00936: missing expression"}
On my table, ELIGIBLE is of type VARCHAR2, and the eligible variable is a string.
If I hardcode the parameter, for example:
mrstage.ExecuteStoreCommand("DELETE FROM CB_LISTINGS WHERE ELIGIBLE='ECB'")
It works fine.
I'd be very grateful if someone can offer any suggestions.
Thanks!
James
In Oracle parameters are named differently, use a column parameter like :0 instead of {0}.
So your code is now:
mrstage.ExecuteStoreCommand(
"DELETE FROM CB_LISTINGS WHERE ELIGIBLE=:0",
eligible)