Auslesen der ersten bzw. letzten Zeile einer Sortierung

Die zu verwendende Java-Klasse com.idsscheer.ppm.xmlextractortools.
extractor.sap2ppm.ZSortWithInteger_sap2ppm liest Datensätze aus Tabellen aus, sortiert diese mithilfe der angegebenen Sortierkriterien und schreibt entweder den ersten oder letzten Datensatz in die zu erzeugenden System-Events. Die Klasse ist im Attribut classtouse des XML-Elements table anzugeben.

Beispiel

Statushistorienbelege stellen eine besondere Belegart im SAP R/3-System dar. Diese Belege sind in der Tabelle JCDS gespeichert. Mit der Klasse soll die letzte Änderung hinsichtlich eines bestimmten Statustyps ermittelt und in die entsprechenden System-Events geschrieben werden. Dazu sollen aus der Tabelle AUFK alle Auftragsnummern gelesen werden. Zusätzlich sollen zu jeder Auftragsnummer, zu der es Statusinformationen gibt, aus der Tabelle JCDS alle Einträge zu dieser Auftragsnummer mit dem Prefix OR und dem Status I0043 (Feld STAT) gelesen werden. Diese sollen nach dem Erfassungszeitpunkt (UDATE, UTIME) sortiert werden und es soll derjenige Datensatz ausgelesen werden, der zuletzt erfasst wurde. Von diesem Datensatz sollen alle Feldwerte in das jeweilige System-Event geschrieben werden.

Der folgende Dateiauszug veranschaulicht die Konfiguration zum Auslesen von Statusinformationen aus der Tabelle JCDS unter den o. g. Bedingungen:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE xmlextractor_tableconfiguration SYSTEM

'xmlextractor_tableconfiguration.dtd'>

<xmlextractor_tableconfiguration>

<configuration name="AUFK_JCDS">

<docspec>

<doctable name="AUFK">

<pkfield name="AUFNR"/>

</doctable>

</docspec>

<table name="JCDS_I0043" tablename="JCDS"

classtouse="com.idsscheer.ppm.

xmlextractortools.extractor.

sap2ppm.ZSortWithInteger_sap2ppm">

<parameter name="SORTCRITERION">

<value>UDATE</value>

<value>UTIME</value>

</parameter>

<parameter name="USE">

<value>MAX</value>

</parameter>

<condition fieldname="STAT"

logicaloperator="eq">

<value>I0043</value>

</condition>

<pkfield name="OBJNR" fktablename="AUFK"

fkfieldname="AUFNR">

<prefix>

<value>OR</value>

</prefix>

</pkfield>

<fieldtoread name="CDTCODE"/>

<fieldtoread name="CHGNR"/>

<fieldtoread name="CHIND"/>

<fieldtoread name="INACT"/>

<fieldtoread name="OBJNR"/>

<fieldtoread name="STAT"/>

<fieldtoread name="TCODE"/>

<fieldtoread name="USNAM"/>

</table>

</configuration>

</xmlextractor_tableconfiguration>

Ein System-Event, das mit dieser Konfiguration ausgelesen wird, sieht bspw. folgendermaßen aus:

<event>

<attribute type="AUFK-AUFNR">000000800002</attribute>

<attribute type="JCDS_I0043-CDTCODE"></attribute>

<attribute type="JCDS_I0043-CHGNR">002</attribute>

<attribute type="JCDS_I0043-CHIND">U</attribute>

<attribute type="JCDS_I0043-INACT">X</attribute>

<attribute type="JCDS_I0043-OBJNR">

OR000000800002

</attribute>

<attribute type="JCDS_I0043-STAT">I0043</attribute>

<attribute type="JCDS_I0043-TCODE">KOK2</attribute>

<attribute type="JCDS_I0043-UDATE">19961217</attribute>

<attribute type="JCDS_I0043-USNAM">MUELLERJ</attribute>

<attribute type="JCDS_I0043-UTIME">192122</attribute>

</event>

Die Sortierkriterien (hier UDATE und UTIME) sind automatisch Bestandteil der System-Event-Spezifikation.

Die Vorlage für die Erstellung der gezeigten Konfiguration sieht folgendermaßen aus (welche XML-Elemente bzw. -Attribute optional sind, können Sie der nachfolgenden Tabelle entnehmen):

<table name="..." tablename="..." classtouse=

"com.idsscheer.ppm.

xmlextractortools.extractor.

sap2ppm.ZSortWithInteger_sap2ppm">

<parameter name="SORTCRITERION">

<value>...</value>

<value>...</value>

...

</parameter>

<parameter name="USE">

<value>...</value>

</parameter>

...

Siehe Kap.

R/3-Tabellenkonfiguration (System-Event-Spezifikation)

...

</table>

Folgende Tabelle zeigt noch einmal die wichtigsten Konfigurationseinträge der obigen table-Definition:

XML-Element /-Attribut

Wert: Bezeichnung

name

Angegebener Name wird den gelesenen Quellsystemattributen als Präfix vorangestellt

tablename
(optional)

Tabelle, aus der Informationen gelesen werden sollen. Standardwert: Wert aus XML-Attribut name

classtouse

com.idsscheer.ppm.xmlextractortools.
extractor.sap2ppm.ZSortWithInteger_sap2ppm:

Zu verwendende Java-Klasse

parameter name

SORTCRITERION

Erster anzugebender Parameter.

Mindestens ein XML-Element value muss angegeben werden (Feldname des Sortierkriteriums). Die angegebenen Felder dürfen nur Integer-Werte enthalten. Sind mehrere Sortierkriterien angegeben, erfolgt eine Priorisierung von oben nach unten, d. h. die Datensätze werden zunächst anhand des ersten (obersten) Kriteriums verglichen, konnte keine vollständige Sortierung erstellt werden, dann anhand des zweiten Kriteriums usw.

USE

Zweiter anzugebender Parameter.

Genau ein XML-Element value muss angegeben werden. Zulässige Werte:
MIN (es wird der Datensatz mit dem kleinsten Integer-Wert des Sortierkriteriums gewählt)
MAX (es wird der Datensatz mit dem größten Integer-Wert des Sortierkriteriums gewählt)

Aus der auf Basis der angegebenen Sortierkriterien ermittelten Liste von Datensätzen wird entweder der erste oder letzte Datensatz zum Auslesen gewählt.

Setzen Sie die Klasse zum Auslesen der ersten bzw. letzten Zeile aus einer Sortierung nur begrenzt ein, da es aufgrund der Sortier- und Selektionsvorgänge zu Leistungs- und Speichereinbußen kommt.