"404 - Resource not found" when query OData v2 with empty key field - odata

I have an SAP CDS View exposed via Gateway and hosted on APIM.
This CDS has CRUD operations enabled using #ObjectModel annotations.
One of the key fields from the CDS (SAP table) can be empty as per business process, but when I try to query for this full key via APIM service (with the empty property) I receive 404 - Resource not found:
The same query works fine inside SAP Gateway:
What should I do in order to APIM understand that this key field can receive empty (or null?) values?

It is interesting to see this from the APIM service and gateway query, the result is different given the same query parameter, the only explanation to me is that there is a conversion at ABAP side and this cause no result can be loaded. Can you enable gateway trace at ABAP side to check the exact request when ABAP tries to query data when you use APIM client? Use transaction /IWNFD/TRACES to see the traces for your user at ABAP side.
Regards,
Derek

Thanks for the answers!
We have found out that it might be an APIM mapping issue because when we set an empty key on the path (charg='') we receive a 404 without even reaching SAP Gateway:
But when we set this same parameter with a blank / space (charg=' '), it works fine and it finds the entry on S4 table:
How do I know it didn't reach S4?
First, because the trace doesn't catch anything and second because the 404 message is differente when it comes from S4:
Thank you all!

Related

MS Graph API response not returning all the data items it supposed to

My intention is to build a Machine Learning program that will give a recommendation for archiving email item by reading all previous email history.
For that, I am trying to read all the email item from:
https://graph.microsoft.com/beta/me/messages
First I am getting the total number of email items in my account using /messages?$count=true which returns 1881 as the result.
Then I am trying to get all the 1881 item using:
https://graph.microsoft.com/beta/me/messages?$top=1881
But the problem is that returns 976 email items. Where are the rest of the email item? How I can find them?
Are you getting a #odata:nextLink property in your response?
If that's the case, you might need to send another request with a skiptoken parameter. It should contain a value from the #odata:nextLink response property.
On the "paging" documentation page - https://developer.microsoft.com/en-us/graph/docs/concepts/paging - it is specified that different APIs have different max page size. It's possible that the endpoint for fetching emails does not support a page size of 1881. In that case, you might need to access a second page of the results.
Another suggestion is to replace beta endpoint with the V1 API call because me/messages is available there also - https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list_messages

Provide the 'allowthrottleablequeries' preference to allow this

I have developed an API using Microsoft Graph API. I am encountering below issue.
URL that I am calling :
/v1.0/sites/root/lists/cb32cc85-5351-423d-b2ec-bb418c1d9c64/items?
$filter=fields/Created gt '2018-1-1T00:00:00'
&expand=fields
&$orderby=createdDateTime
&$top=10
Error returned from the API :
Field 'Created' cannot be referenced in filter or orderby as it is not indexed. Provide the 'allowthrottleablequeries' preference to allow this, but be warned that such queries may fail on large lists.
How to enable allowthrottleablequeries as it says and how should I achieve this?
I'm afraid this isn't a very clear or useful error message. As far as I know, there isn't actually a way to enable allowthrottleablequeries.
This happens when a SharePoint list grows too large to handle filtering or sorting non-indexed columns. The fix is to add an index to the created column in your List Settings. You can find instructions on how to accomplish this in Add an index to a SharePoint column.
Try to send your request with following Request Header
Prefer: allowthrottleablequeries
If it does not work then try the following Request Header
Prefer: HonorNonIndexedQueriesWarningMayFailRandomly

Not able to filter messages based on header properties in Azure Stream analytics

I have created an Azure Stream Analytics (ASA) job to filter data based on a custom header property i send from a client app.
How would i read/filter message header properties in Azure stream analytics?
The portal return no results when i try to test out my query. Below is my query in azure portal.
So far this is my query as simple as this:
SELECT
*
INTO
[mystorage]
FROM
[iothubin]
WHERE Properties.type = "type1"
I also tried to call out the key without its parent (such as: where type = "") with no results as well.
I am sure that i am sending messages with this custom property in the header since i can view it using device explorer tool.
any idea how to get this working?
I haven't tried this yet myself, but supposedly you can access custom properties via GetMetadataPropertyValue(). Give this a try:
https://msdn.microsoft.com/en-us/library/azure/mt793845.aspx
You can use the query described here as an example to query complex schemas.
If you share your schema, we can look at the query for you.
Let me know if it works for you.
Thanks,
JS

SAP Gateway Client throws PAGE NOT FOUND! while creating OData service

I have been working on S/4 Hana. I was creating a odata service using existing BAPI BAPI_SALESORDER_GETLIST.
I selected the required data while importing the RFC and set Customer number as the key.
I have taken Customer, Sales Organization and Doc Date as input
Then while Mapping for the key there was no output so i put a dummy output as shown in the
Otherwise it was showing error that there is no output for the input key Customer Number.
After registering and activating it , then i went to SAP GATEWAY CLIENT to execute the URI /sap/opu/odata/SAP/ZINFORMED_ENTRY_SRV/metadata but after executing it shows
I have also checked the transaction /IWFND/ERROR_LOG there it is showing in ERROR INFO: The URI or metadata definition is incorrect.
I'll be very thankful to you if you can help me out. Thanks
try loading this one:
/sap/opu/odata/SAP/ZINFORMED_ENTRY_SRV/$metadata
Since the current implementation supports ODatav2 the $ has to be there. See also:
http://www.odata.org/documentation/odata-version-2-0/overview/#ServiceMetadataDocument

How do I know which IBM iLog.NET rules are getting hit during execution?

I'm using the IBM iLog.NET business rule engine (v7r1 or thereabouts) and I can't find why my rules are failing. How do I trace down what's failing, where, and why?
I've got a local object model that's calling out to my rules hosted in an IBM rules service on IIS 6.0.
About half of my rules are configured to modify one of the input objects with a new status code. The code isn't getting set when I think it should but I cannot tell conclusively which rules are getting hit.
I found that the IBM iLog.NET documentation had the answer buried deep, deep within. Persistent Google searching revealed that I can set ILOG.Rules.ExecutionServer.Trace.EventFilterCategories on my ExecutionRequest object before I send it to the server.
ExecutionRequest request = new ExecutionRequest(rulePath);
request.TraceFilter.EventFilters
= ILOG.Rules.ExecutionServer.Trace.EventFilterCategories.All;
...
ExecutionResponse response = session.Execute(request);
ILOG.Rules.ExecutionServer.Trace.Trace trace = response.Trace;
Debug.WriteLine(trace.SerializedExecutionTrace);
The serialized trace contains all the inputs and outputs for the call as well as all rules that were triggered during execution and the rules that weren't hit at all.

Resources