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

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

Related

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

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!

How to verify a domain so a schema extension can be added to ms graph?

My root question is: How do I add a schema extension to ms graph?
This document describes how to add a schema extension but misdirects the user on how to verify a domain.
So when I tried this:
var schemaExtension = new SchemaExtension
{
Id = "domain_subscriberInfo",
The error message received is:
Your organization must own the namespace domain-name as a part of one of the verified domains.
This documentation says: "If you don’t have a verified vanity domain, you can just set the id to a schema name (without a domain name prefix), for example, mySchema. Microsoft Graph will assign a string ID for you based on the supplied name, in this format: ext{8-random-alphanumeric-chars}_{schema-name}. For example, extkvbmkofy_mySchema."
But this code:
var schemaExtension = new SchemaExtension
{
Id = "extkvbmkofy_subscriberInfo",
Results in this error message:
Your organization must own the namespace domain-name as a part of one of the verified domains.
This link describes how to check verification but does not describe how to put a domain in a verified state. I took a guess and tried adding a txt record with text specified in the output of VerificationDnsRecords but that is just me guessing and it doesn't work.
Documentation says "For an unverified domain, the isVerified property of the domain is false." I will have to assume isVerified is false because the call to Verify() crashes with
Domain verification failed with the following error: 'Error in DNS verification. code=MissingRecord'.
How do I get past these issues to add a schema extension to ms graph?
See this example to create a schema extension using just a name (rather than a domain namespaced name).
To add a custom domain, add the domain (which is unverified), then get the verificationDnsRecords for the domain you added and use that info to update your domain configuration with your domain registrar. You can then try to verify. Sometimes it can take an hour for the DNS to refresh, so verify could fail initially. You can follow some more visual steps here through the Azure Portal.
Calling verify should not get an internal server error. Can you repro for some fresh client request id and timestamp please? Our trace logs are only retained for 30 days I'm afraid.

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

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

Deleting a sub organization

I am running into an issue when I try to delete sub organizations.
I get the following error (customer ID was removed)
Execution of request failed: https://apps-apis.google.com/a/feeds/orgunit/2.0/CustId/QA%2ftesting%2fmoar%2bgroups"}
I am using the Google Apps C# Library and calling it like this
OrgService.DeleteOrganizationUnit(customerID, "QA/testing/moar+groups");
The response body is "1301: Entity Does not exist"
I am taking the path directly from the feed to get all the organizations and passing it into delete and it is still failing... any idea what is going on here?
Is the name of the OU "QA/testing/moar+groups" or is it "QA/testing/moar groups"? You should be passing the true name of the OU to the library, it should take care of URL encoding it.

Resources