GOOGLE ADS

Mittwoch, 27. April 2022

So senden Sie eine POST-Anfrage an OData v4 ActionImport mit SAPUI5

Ich möchte eine POST-Anfrage an einen OData v4 ActionImport senden. Wie kann ich dies in einer SAPUI5-Umgebung erreichen? Ich habe mir das v4 ODataModel und ODataContextBinding angesehen. Es gibt Methoden zum Ausführen eines ActionImports, aber ich weiß nicht, wie ich den Körper dann festlegen soll.

Allgemeine Frage: Wie soll ich OData-Anforderungen übermitteln, die nicht unbedingt an die Benutzeroberfläche gebunden sein sollten? Zum Beispiel, wenn ich nur einen Wert aus dem Backend abfragen oder eine Datei an das Backend schicken möchte. Im Moment erstelle ich ein ODataContextBinding und rufe die Methode execute/requestObject auf, aber ich denke, dass dies möglicherweise nicht der beste Ansatz ist (auch ich kann den Anforderungstext nicht auf diese Weise festlegen). Vielleicht ist es besser, eine direkte Ajax-Anfrage zu stellen?

Danke im Voraus!


Lösung des Problems

Ich bin über deine Frage gestolpert, weil ich genau das gleiche Problem hatte. Ich stelle meine Lösung zur Verfügung, falls sie jemand anderem hilft.

onValidate: function(oEvent) {
var oModel = this.getModel("reportService");
var oActivityCreateContext = this.getCreateContext();
var oActionODataContextBinding = oModel.bindContext("/validateActivity(...)");
oActionODataContextBinding.setParameter("activity", oActivityCreateContext.getObject())
oActionODataContextBinding.execute().then(
function() {
var oActionContext = oActionODataContextBinding.getBoundContext();
console.table(oActionContext.getObject().value);
}.bind(this)
);
}

Das Modell "reportService" ist ein sap.ui.model.odata.v4.ODataModel. Der Funktionsaufruf ist ungebunden und in meiner service.cds-Datei so deklariert:

action validateActivity(activity: Activities) returns many rm.ValidationMessage;

Der oActionContext.getObject().value enthält die Antwort auf meinen Funktionsaufruf.

Der Schlüssel hier ist der setParameter, der die Aktivität für die Nutzlast festlegt. So könnte die resultierende Anfrage aussehen:

POST http://localhost:8080/api/ReportService/validateActivity
Content-Type: application/json
{"activity": {
"activityNumber": 1,
"report_ID": "a3558fce-76bc-49a9-ae23-bd5566fb3bc6",
"job_code": "160",
"learningPeriod": 1,
"salaryAnnex": "D3",
"workingRegion_code": "08",
"unionName": "CSD",
"local": "Local 123",
"nbWeeksWorked": 8,
"nbHourSimple": 110,
"nbHourTimeAndHalf": 5,
"nbHourDouble": 0,
"sin": "111222333",
}}

Ich hoffe, dass dies anderen helfen wird, die damit kämpfen.

Grüße

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...