Lookups über SystemAccessor
implementieren
Beim generischen Zugriff müssen Entwickler die Payload, der der Adapter erwartet, vor dem Lookup selbst aufbauen und die Ergebnis-Payload selbst parsen.
Um generisch auf ein Anwendungssystem zuzugreifen, verwenden Entwickler die Klasse SystemAccessor. Bei generischen Aufrufen müssen Entwickler einer Methode einen Stream mit der Payload übergeben, die an den Adapter geschickt werden soll. Als Ergebnis des Aufrufs erhalten Sie wiederum ein Payload-Objekt, über das Sie die Payload als Stream auslesen können, um die Payload zu parsen.
Die generische Lookup-API ist Teil der Mapping-API (siehe Klasse LookupService in der javadoc-Dokumentation). Weitere Informationen zu diesen APIs finden Sie im SAP Developer Network unter der Adresse https://www.sdn.sap.com/irj/sdn/javadocs (SDN-User nötig).

Das Schema für den Aufruf eines RFCs können Sie sich besorgen, indem Sie den RFC in das Enterprise Services Repository importieren (siehe: Import von IDocs und RFCs).
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
import com.sap.aii.mapping.lookup.*;
public class Parametraziation_Java extends AbstractTransformation {
public void transform(TransformationInput in,
TransformationOutput out)
throws
StreamTransformationException {
SystemAccessor accessor = null;
java.io.InputStream inputStream =
null;
try {
// 1. Read Import
Parameter to get the channel ID for Lookup
Channel channel =
in.getInputParameters().getChannel("MYCHANNEL");
// 2. Get a system
accessor for a channel.
accessor =
LookupService.getSystemAccessor(channel);
// 3. Create a payload
according to the data type.
// To get a payload
object, pass the payload
// as
java.io.InputStream to one of the following methods:
//
LookupService.getBinaryPayload() for binary payload,
// or
LookupService.getTextPayload() for text payloads.
Payload payload =
LookupService.getXmlPayload(inputStream);
// 4. Set the operation
name and namespace; optional step,
// only necessary if the
used adapter needs these parameters.
accessor.setOperationName("myInterfaceName");
accessor.setOperationNamespace("myInterfaceNS");
// 5. Execute
lookup.
Payload result =
accessor.call(payload);
// Steps 3. and 5. can be executed several times.
} catch (Exception e) {
// Exception
Handling
} finally {
// 5. close the accessor
in order to free resources.
if (accessor !=
null)
accessor.close();
}
}
}