LesezeichenAbonnierenRSS-Feed abonnieren
basefan
Obsidian | Level 7

Hallo,

wir wollen von unseren SAP per Webservice auf unser SAS-DWH zugreifen.

Zum Beispiel sollen zur Kundennummer X die Kaufdaten aus einer festgelegten SAS-Tabelle an SAP geliefert werden.

So eine ähnliche Anfrage hatte ich im Februar schon gestellt, siehe SAS über Web-Service aufrufen. Mittlerweile bin ich einiges weitergekommen, aber es haben sich auch neue Fragen aufgetan.

Per URL können wir Stored Processes aufrufen, es können Parameter, Kundennummer X, mitgegeben werden und es wird ein Ergebnis zurückgeliefert. Das sieht aus als ob es HTML sei.

Jetzt wollen wir, dass der ganze Daten-Austausch über XML läuft. Speziell sollen die Ergebnis-Daten als XML bei SAP ankommen.

Ich habe schon rumgesucht und schon einiges gelesen.

z.B. KSFE Vorträge von 2012 und 2011

Webservices und SAS - PROC SOAP, PROC HTTP und der ganze REST

XML mit SAS leicht gemacht

oder

The SAS® Programmer's Guide to XML and Web Services

Bloß gefunden habe ich nicht, was ich suche. Nämlich eine etwas konkreteres, am besten eine Anleitung oder ein Beispiel, wie das auf der SAS-Seite aussieht.

Was man alles an Vorbereitung braucht, damit so ein Webservice als Angebot bereit steht. Wie die Übergabe-Parameter in dem Stored Process ankommen, was man im SAS-Code angeben muss, damit die Daten zur Gegenseite auf die Reise gehen. Und so weiter und so fort .... ?!?!?

Was ich als nächstes durcharbeiten werde ist

SAS 9.3 BI Web Services Developer's Guide

Aber ich befürchte, nachdem ich das Inhaltsverzeichnis durchgesehen habe und im Developer's Guide etwas gestöbert habe, dass er mir auf meine konkreten Fragen keine oder nur sehr diffuse Antworten gibt. Z.B. habe ich darin kein aussagekräftiges Code-Beispiel gesehen.

Aber vielleicht täusche ich mich ... durcharbeiten werde ich es.

Mein Problem ist, dass ich weder weiß, wo ich mich einlesen kann noch wo ich anfangen soll zu suchen.

Gibt es in den unendlichen Weiten irgendwo ein paar Beispiele?

Wie sieht ein kleines Beispiel aus? Am besten mit Code.

Wir arbeiten mit SAS 9.3, es läuft auf einem Linux-Server mit Suse  SLES 11 (64 Bit). Die nötigen Module, z.B. SAS Integration Technologies, müssten in unserer Lizenz enthalten sein.

Viele Grüße,

Hans

2 ANTWORTEN 2
BrunoMueller
SAS Super FREQ

Hallo basefan

Ein Stored Process kann als ein RESTful WebService aufgerufen werden. Im Folgenden werden die einzelnen Schritte erläutert. Dabei sollte man auch noch die Docu ( SAS(R) 9.3 BI Web Services: Developer's Guide) beiziehen.

Der STP akkzeptiert einen SAS Data Set Namen als Input und kann eines der geforderten XML Files zurückgeben.

Code für den STP:

libname outxml xml;
libname mvarinfo xml ;

data outxml.outputTable;
  set &tableName;
run;

proc sql;
 
create table mvarinfo.mvarinfo as
   
select
      scope
      , name
      , resolve(value)
as value
   
from
      dictionary.macros
   
order by
      name
  ;
quit;

Der STP hat folgende Parameter Definition:

Folgende Data Targets werden definiert:

Dieser STP kann mit folgendem SAS Program (siehe unten) als RESTful WebService aufgerufen werden.

Der Name des STP (voller Pfadname) lautet: /stp_samples/myWS/ws_returnTable

Der Name des STP muss im XML welches die Input Parameter enthält mitgegeben werden.

Mit hilfe des Zusatzes streams/... kann gewählt werden welches XML file zurückgegeben werden soll. Im Beispiel unten entweder .../streams/outxml oder  .../streams/mvarinfo verwenden

filename restin temp;

data _null_;
 
infile cards;
 
input;
 
file restin;
  put _infile_;
 
cards4;
<ws_returnTable>
   <parameters>  
      <tableName>sashelp.class(obs=1)</tableName>
   </parameters>
</ws_returnTable>
;;;;

filename restout temp;
filename resthead temp;

proc http
 
ct="application/xml"
 
method="post"
 
url="http://chcent94:7980/SASBIWS/rest/storedProcesses/stp_samples/myWS/ws_returnTable/streams/outxml"
 
in=restin
 
headerout=resthead
 
out=restout
  verbose
  ;
run;

data _null_;
 
infile resthead ;
  input;
 
putlog _infile_;
run;

data _null_;
 
infile restout ;
  input;
 
putlog _infile_;
run;

filename restin clear;
filename restout clear;
filename resthead clear;

Viel Spass mit SAS

Bruno
basefan
Obsidian | Level 7

Hallo Bruno,

danke für die vielen Infos. Es wird noch etwas dauern, aber ich werde alles durcharbeiten und testen.

Viele Grüße,

Hans

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Diskussionsstatistiken
  • 2 Antworten
  • 1114 Aufrufe
  • 0 Kudos
  • 2 in Unterhaltung