Lookups über DataBaseAccessor
implementieren
Beim Zugriff über die spezielle Lookup-API brauchen Entwickler den Aufbau der Payload nicht zu kennen, sondern übergeben der API String-Kommandos, die im gerufenen Anwendungssystem ausgeführt werden sollen.
Bisher gibt es eine spezielle Lookup-API für den JDBC-Adapter. Um diese API einzusetzen, verwenden Entwickler die Klasse DataBaseAccessor.
Die spezielle Lookup-API ist Teil der Mapping-API (siehe Methode getDataBaseAccessor der 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).
import java.util.Iterator;
import java.util.Map;
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 {
DataBaseAccessor accessor = null;
try {
// 1. Read Import
Parameter to get the channel ID for Lookup
Channel channel =
in.getInputParameters().getChannel("MYCHANNEL");
// 2. Get a database
accessor for the channel.
accessor =
LookupService.getDataBaseAccessor(channel);
// 3. Prepare a sql
statement "sqlStatement".
String sqlStatement =
"SELECT a, b, c FROM TABLE2";
// 4. Execute
lookup.
DataBaseResult result =
accessor.execute(sqlStatement);
// 5. Iterate over the
result rows.
for (Iterator rows =
result.getRows(); rows.hasNext();) {
Map
columnMap = (Map) rows.next();
Object
valueA = columnMap.get("a");
Object
valueB = columnMap.get("b");
}
// Steps 4. and 5. can be executed several times.
} catch (Exception e) {
// Exception Handling
} finally {
// 6. Close the accessor
in order to free resources.
if (accessor !=
null)
accessor.close();
}
}
}