Sie sind auf Seite 1von 35

XML Verarbeitung in ABAP

Betriebliche Anwendungssysteme II
Sommersemester 2006 - University of Applied Sciences Cologne
Dipl. Math. Tobias Trapp
AOK Systems: Das Unternehmen

Gründung 1999
Rechtsform GmbH
Gesellschafter AOK-Beteiligungsgesellschaft

Geschäftssitz Troisdorf
Niederlassungen Frankfurt/M., Hamburg, München,
Stuttgart
Umsatz (2005) 73 Mio. €

Mitarbeiter (2003) 321


Mitarbeiter (2004) 370
Mitarbeiter (2005) 404

© AOK Systems GmbH 2006 2


SAP Kompetenz

Special Expertise Partner der SAP im Bereich Versicherungen (SEP)


 Außerordentliche SAP-Lösungs- und Beratungskompetenz für die GKV
 Entwicklung und Implementierung der GKV-Branchenlösung oscare®

Einführung von SAP R/3-Komponenten


 FI
 CO
 MM
 HR

SAP Customer Competence Center (CCC)


(3. und 4. Support-Level)

© AOK Systems GmbH 2006 3


Inhalt

XML im Datenaustausch

XML Technologie bei SAP

XML Library

XSLT

Simple Transformations

Ausblick: Java Integration

© AOK Systems GmbH 2006 4


Einleitung

Was ist XML? Was ist die „XML-Familie“ ?

 Generische Syntax für baumartige Datenstrukturen:


<Element Attribut="Wert">
Inhaltstext
<Kindelement/>
</Element>

 Eine syntaktische Katastrofe

 „XML Middleware“:
Familie von (XML basierenden) Standards
- für Transformationen von XML-Dokumenten,
- für Datenmodellierung durch Schemasprachen

© AOK Systems GmbH 2006 5


XML Datenaustausch im Gesundheitswesen

Wo wird XML verwendet?

 Kodierung medizinischer Informationen


 Datenaustausch mit externen Partnern (Stammdaten,
Rechnungsprozesse, geplant: Begutachtungen, Meldeverfahren)

Große Chance:
 Vereinheitlichung der verschiedenen Datenaustauschstandards im
Gesundheitswesen: xDT-Formate, HL7, VDDS, EDIFACT,
satzbasierte Verfahren…
 Für Meldeverfahren XÖV-Framework (z.B. XMeld)

© AOK Systems GmbH 2006 6


Warum verwenden wir XML ?

Einige Gründe:

 Gute Unterstützung durch APIs – insbesondere Open Source


 XML ist strikt
 Möglichkeit der formalen Spezifikation und Verifikation: Validierung
gegen XML Schemata
 Wiederverwendung von Software: XSLT wird für jede Plattform
unterstützt – wir übernehmen die Programme auf die SAP Plattform

Wo ist der Einsatz (fast) alternativlos?


 Anwendungsintegration
 Webservices, Webservices, Webservices

© AOK Systems GmbH 2006 7


Semantische Integration durch XML?

ACORD - XML for the Insurance Industry eCo Framework Project and Working Group Newspaper Association of America (NAA) - Standard for Translation Memory eXchange (TMX)
aecXML Working Group - Architecture, Engineering eCo Interoperability Framework Specification NuDoc Technology Tutorial Markup Language (TML)
and Construction EDGARspace Portal OMG Common Warehouse Metadata Interchange UML eXchange Format (UXF)
ANSI ASC X12/XML and DISA EEMA EDI/EC Work Group - XML/EDI (CWMI) Specification User Interface Markup Language (UIML)
ATLA Serials Project (ATLAS) Educom Instructional Management Systems Project (IMS) Object Management Group XML/Value RFP vCard Electronic Business Card
Alexandria Digital Library Project Electronic Business XML Initiative (ebXML) Ontology and Conceptual Knowledge Markup Languages Vector Markup Language (VML)
Apache XML Project Electronic Component Information Exchange (ECIX) Open Applications Group - OAGIS Virtual Hyperglossary (VHG)
Australia New Zealand Land Information Council (ANZLIC) ElectronicHealthData (ehd) Open Catalog Protocol (OCP) VoiceXML Forum (Voice Extensible Markup
Bank Internet Payment System (BIPS) Encoded Archival Description (EAD) Open Content Syndication (OCS) Language Forum)
Bean Markup Language (BML) European XML/EDI Pilot Project Open Financial Exchange (OFX/OFE) VoxML Markup Language
BizTalk Framework Extensible Financial Reporting Markup Language (XFRML) Open Settlement Protocol (OSP) - ETSI/TIPHON WAP Wireless Markup Language Specification
BMEcat Extensible Forms Description Language (XFDL) Open Software Description Format (OSD) Weather Observation Definition Format (OMF)
Broadcast Hypertext Markup Language (BHTML) Extensible User Interface Language (XUL) Open Trading Protocol (OTP) Web Collections using XML
Business Rules Markup Language (BRML) FIXML - A Markup Language for the OpenMLS - Real Estate DTD Design WEBDAV (IETF 'Extensions for Distributed Authoring and
Business Process Execution Language FIX Application Message Layer OpenMath Standard Versioning on the Web')
for Webservices (BPEL4WS) Formal Language for Business Communication) (FJBC) OpenTag Markup Web Distributed Data Exchange (WDDX)
Business Travel Management in XML ( FinXML - 'The Digital Language for Capital Markets' P3P Syntax Specification Web Interface Definition Language (WIDL)
CDIF XML-Based Transfer Format Financial Products Markup Language (FpML) Pinnacles Component Information Standard (PCIS) Web Service Description Language (WDSL)
Call Policy Markup Language (CPML) Georgia State University Electronic Court Filing Project Portal Markup Language (PML) Web Standards Project (WSP)
Call Processing Language (CPL) Graphic Communications Association - GCA 'Paper' DTD Precision Graphics Markup Language (PGML) WebBroker: Distributed Object Communication on the Web
Capability Card: An Attribute Certificate in XML Guideline XML (gXML) Predictive Model Markup Language (PMML) X-ACT - XML Active Content Technologies Council
Channel Definition Format, CDF (Based on XML) Health Level 7 Messages Procedural Markup Language (PML) XLF (Extensible Log Format) Initiative
Chemical Markup Language HR-XML Consortium Process Interchange Format XML (PIF-XML) XBau
Chinese XML Now! HTML Threading - Use of HTML in Email Process Specification Language (PSL) and XML XJustiz
Classified Advertising Data 5.5 HTTP Distribution and Replication Protocol (DRP) Product Data Markup Language (PDML) XMeld
Clinical Trial Data Model Human Resource Management Markup Language (HRMML) Product Definition Exchange (PDX) XML Belief Network File Format (Bayesian Networks)
Clinical Document Architecture (CDA) iCalendar XML DTD QAML - The Q&A Markup Language XML Court Interface (XCI)
Cold Fusion Markup Language (CFML) IEEE LTSC XML Ad Hoc Group Real Estate Transaction Markup Language (RETML) XML DTD for Phone Books
Commerce XML (cXML) IEEE Standard DTD Resource Description Framework (RDF) XML Data Binding Specification
CommerceNet Industry Initiative ISO 12083 XML DTDs RosettaNet XML Digital Signature (Signed XML - IETF/W3C)
Common Business Library (CBL) Information and Content Exchange (ICE) SABLE: A Standard for Text-to-Speech Synthesis Markup XML Forms Architecture (XFA)
Customer Profile Exchange (CPEX) Working Group InterX.org Initiative Simple Object Access Protocol (SOAP) XML Metadata Interchange Format (XMI) -
Customer Support Consortium Interactive Financial Exchange (IFX) SWAP - Simple Workflow Access Protocol Object Management Group (OMG)
DAV Searching and Locating (DASL) International Development Markup Language (IDML) Schema for Object-oriented XML (SOX) XML and Corba
DII Common Operating Environment (COE) XML Registry Java Speech Markup Language (JSML) Scripting News in XML XML and Music
DMTF Common Information Model (CIM) Jigsaw XML Format (JXML) Signed Document Markup Language (SDML) XML and VRML (Virtual Reality Modeling Language) - X3D
Digest Values for DOM (DOMHASH) LACITO Projet Archivage de données linguistiques Simple Object Definition Language (SODL) XML for Workflow Management [NIST]
Digital Property Rights Language (DPRL) LASG BTM-Rechnungssatz and XMOP Service XML for the Automotive Industry - SAE J2008
Digital Receipt Infrastructure Initiative Legal XML Working Group and UELP SpeechML XML-Based Process Management Standard (Wf-XML)
Directory Services Markup Language (DSML) MDC Open Information Model (OIM) Structured Graph Format (SGF) XML-F ('XML for FAX')
Document Content Description for XML (DCD) MIX - Mediation of Information Using XML Synchronized Multimedia Integration Language (SMIL) XML-HR Initiative - Human Resources
Document Definition Markup Language (DDML) Media Object Server - XML (MOS-X) TalkML XML.ORG - The XML Industry Portal
ECIX Component Information Dictionary Standard (CIDS) Mathematical Markup Language Telecommunications Interchange Markup (TIM, TCIF/IPI) XML/EDI - Electronic Data Interchange
ECIX QuickData Specifications Meta Content Framework Using XML (MCF) Telephony Markup Language (TML) XML/EDI Repository Working Group
ECIX Timing Diagram Markup Language (TDML) Metadata - PICS Text Encoding Initiative (TEI) XMLNews: XMLNews-Story and XMLNews-Meta
eCl@ss Mortgage Bankers Association of America XML Workgroup The Data Documentation Initiative (DDI) XMLTP.Org - XML Transfer Protocol
ECMData - Electronic Component Manufacturer News Industry Text Format (NITF) The Koala Bean Markup Language (KBML) XOL - XML-Based Ontology Exchange Language
Data Sheet Inventory Specification NewsML and IPTC2000 The XML Bookmark Exchange Language (XBEL) XSchema

© AOK Systems GmbH 2006 8


Schwächen von XML und der XML-Familie

Mit welchen Problemen haben wir zu kämpfen?

 Datenvolumen
 Performance

Schlechte Spezifikationen:

 unausgegoren (teilweise semantischer Nonsens in XSLT 1.0)


 zu umständlich (z.B. XML Namespaces)
 sehr komplex (z.B. W3C XML Schema)
 XML Infoset nicht einheitlich (XML 1.0, SAX, DOM, W3C XML Schema…)
 zu viel Spielraum für Implementierungen (XSLT 2.0)

© AOK Systems GmbH 2006 9


Inhalt

XML im Datenaustausch

XML Technologie bei SAP

XML Library

XSLT

Simple Transformations

Ausblick: Java Integration

© AOK Systems GmbH 2006 10


XML Technologie bei SAP

Wo verwendet SAP XML-Technologie?

 Middleware (RFC-Aufrufe, IDoc-Repräsentation, Webservices)


 Datenströme zu Drittsystemen (XSF-Daten für Druckausgaben)
 Serialisierungen (eCATT, Archivierungsobjekte)
 GUI (BSP Programmierung, Web Dynpro Protokoll)
 Codegenerierung (Web Dynpro)
 Konfigurationsdateien (EJB Deployment Deskriptoren)
 In vielen weiteren Produkten (SAP Knowledge Warehouse, Business Information
Warehouse…)
 Zentraler Bestandteil der Integrationstechnologie (SAP Business Connector,
SAP Exchange Infrastrucure)

© AOK Systems GmbH 2006 11


Inhalt

XML im Datenaustausch

XML Technologie bei SAP

XML Library

XSLT

Simple Transformations

Ausblick: Java Integration

© AOK Systems GmbH 2006 12


XML Library

Die XML Library

 ist die älteste Technologie zur XML-Verarbeitung (Release 4.6D)


 besitzt eine Vielzahl von Interfaces (DOM Level 1 inkl. Namensräume,
~SAX 1.1, XML-Renderer, DTD Validierung …)
 kann auf non-Unicode-Systemen UTF-8 Dokumente verarbeiten
 iXML Nodesets können auch auch in den XSLT Prozessor übergeben werden

Achtung: Die Programmierung ist aufwändiger als bei Transformationssprachen.

© AOK Systems GmbH 2006 13


Wichtige Interfaces

Die XML Library stellt ihre Funktionen durch Interfaces im Sinne von
ABAP OO zur Verfügung. Wichtig sind:

 if_ixml
 if_ixml_document
 if_ixml_node
 if_ixml_stream
 if_ixml_parser

Gute Doku in der XML-Library: iXML ABAP Objects Jumpstart

© AOK Systems GmbH 2006 14


Eventbasiertes Parsen – Teil 1
  DATA: l_rif_factory    TYPE REF TO if_ixml_stream_factory,
        l_rif_parser     TYPE REF TO if_ixml_parser,
        l_rif_istream    TYPE REF TO if_ixml_istream,
        l_rif_document   TYPE REF TO if_ixml_document,
        l_rif_ixml       TYPE REF TO if_ixml,
        l_var_xmldata    TYPE string,
        l_rif_event_sink TYPE REF TO if_ixml_event,
        l_var_rval       TYPE boolean,
        l_var_events     TYPE i,
        l_rif_node       TYPE REF TO if_ixml_node,
        l_rif_iterator   TYPE REF TO if_ixml_node_iterator.

  OPEN DATASET '/xch/cxml.xml' FOR INPUT IN BINARY MODE.
  READ DATASET '/xch/cxml.xml' INTO l_var_xmldata.
  CLOSE DATASET '/xch/cxml.xml'.

* Ermittele das zentrale Factory Objekt
  l_rif_ixml = cl_ixml=>create( ).

* Erzeuge ein Factory­Objekt für den Eingabestrom
  l_rif_factory = l_rif_ixml­>create_stream_factory( ).

* Erzeuge den Eingabestrom
  l_rif_istream = l_rif_factory­>create_istream_string( 
     string = l_var_xmldata ).

* Erzeuge ein temporäres Dokument
  l_rif_document = l_rif_ixml­>create_document( ).

© AOK Systems GmbH 2006 15


Eventbasiertes Parsen – Teil 2
* Erzeuge den XML Parser
  l_rif_parser  =
    l_rif_ixml­>create_parser( document       = l_rif_document
                               stream_factory = l_rif_factory
                               istream        = l_rif_istream ).
  l_rif_factory = l_rif_ixml­>create_stream_factory( ).

* Schalte DOM­Generierung aus
  CALL METHOD l_rif_parser­>set_dom_generating
       EXPORTING
           is_generating = space
       RECEIVING
           rval          = l_var_rval.

* Bei diesem Ereignis sind der Elementname und alle Attribute
* bekannt.
  l_var_events = if_ixml_event=>co_event_element_pre2.

* Melde die Events beim Parser an.
  l_rif_parser­>set_event_subscription( events = l_var_events ).

* Ermittele das erste Event
  l_rif_event_sink = l_rif_parser­>parse_event( ).

  WHILE NOT l_rif_event_sink IS INITIAL.
*   Ermittele den aktuellen Knoten
    l_rif_node = l_rif_event_sink­>get_node( ).
*   Frage das nächste Ereignis ab.
    l_rif_event_sink = l_rif_parser­>parse_event( ).
  ENDWHILE.

© AOK Systems GmbH 2006 16


Inhalt

XML im Datenaustausch

XML Technologie bei SAP

XML Library

XSLT

Simple Transformations

Ausblick: Java Integration

© AOK Systems GmbH 2006 17


XSLT

XSLT ist eine regelbasierte, funktionale Transformationsprache.

Der SAP XSLT-Prozessor:


 seit Release 6.10 in ABAP integriert
 Aufruf von ABAP aus XSLT heraus: nur noch objektorientiert!
 angelehnt an XSLT 2.0 Working Draft vom 30.4.2002:
- Gruppierungen xsl:for­each­group
- mehrere Ausgabedokumente xsl:result­document
- XPath Funktionen xsl:function
- Ausgabeformatierung durch xsl:output
- kein Result Fragment Tree (eine der dämlichsten Sachen in XSLT 1.0)

© AOK Systems GmbH 2006 18


Integration in die ABAP Workbench

© AOK Systems GmbH 2006 19


XSLT Debugger

© AOK Systems GmbH 2006 20


Aufruf von XSLT aus ABAP

Ausführen einer Transformation

CALL TRANSFORMATION transformation
     [PARAMETERS parameters]
     SOURCE source
     RESULT result.

Einsatzmöglichkeiten:
 XML → XML,
 ABAP → XML,
 XML → ABAP,
 ABAP → ABAP

Zugriff auf ABAP-Daten durch XML-Repräsentation im sog. asXML-Format

© AOK Systems GmbH 2006 21


asXML - Beispiel

TYPES: BEGIN OF l_typ_test,
Transformationsergebnis:
          chars   TYPE c LENGTH 10,
          string  TYPE string,
          numc    TYPE n LENGTH 5, <?xml version="1.0" encoding="iso­8859­1"?>
          packed  TYPE p LENGTH 4 DECIMALS 2, <asx:abap xmlns:asx="http://www.sap.com/abapxml"
          float   TYPE f,   version=″1.0″>
          date    TYPE d,
  <asx:values>
          time    TYPE t,
          xstring TYPE xstring, <ROOT>
       END OF l_typ_test.   <CHARS>ABC</CHARS>
DATA:  l_str_test TYPE l_test_typ,   <STRING> ABC </STRING>
       l_var_output TYPE string.   <NUMC>01234</NUMC>
       l_str_test­chars   = ' ABC '.    <PACKED>123.45</PACKED>
       l_str_test­string  = ` ABC `.
   <FLOAT>1.2345E2</FLOAT>
       l_str_test­numc    = '01234'.
       l_str_test­packed  = '123.45'.    <DATE>2006­06­14</DATE>
       l_str_test­float   = '123.45'.    <TIME>12:01:00</TIME>
       l_str_test­date    = '20060614'.    <XSTRING>q83v</XSTRING>
       l_str_test­time    = '1201'. </ROOT>
       l_str_test­xstring = 'ABCDEFG'.   </asx:values>
CALL TRANSFORMATION id
</asx:abap>
     SOURCE root = l_str_test
     RESULT XML    l_var_output.

© AOK Systems GmbH 2006 22


Suchen & Ersetzen mit XPath
<xsl:transform version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:sap="http://www.sap.com/sapxsl"
  xmlns:util="urn:utilities">
  <xsl:function name="util:replace">
    <xsl:param name="eingabe"/>
    <xsl:param name="suche"/>
    <xsl:param name="ersetzung"/>
    <xsl:result select=
      "sap:if($suche and contains($eingabe,$suche),
      concat(substring­before($eingabe,$suche),$ersetzung,
      util:replace(substring­after($eingabe,$suche),$suche, $ersetzung)),
      $eingabe) " />
  </xsl:function>
  <xsl:template match="*">
    <xsl:value­of select="util:replace(text(),'a', 'o') "/>
    <xsl:apply­templates select="*"/>
  </xsl:template>
</xsl:transform>

© AOK Systems GmbH 2006 23


Inhalt

XML im Datenaustausch

XML Technologie bei SAP

XML-Libary

XSLT

Simple Transformations

Ausblick: Java Integration

© AOK Systems GmbH 2006 24


Simple Transformations

Serielle Transformationssprachen skalieren linear mit der Größe des


Eingabedokumentes. Da kein DOM-Baum aufgebaut wird, sind ST-Programme
erfahrungsgemäß um den Faktor 10 bis 20 schneller als XSLT.
ST ist
 ab Release 6.40 in den SAP Kernel integriert
 prozedural
 symmetrisch (XML ↔ ABAP)
 Komfortabel beim Zugriff auf ABAP-Daten (kein asXML)
 nicht so ausdrucksstark wie XSLT:
- keine ABAP Integration
- keine Berechnungen

Gute Beispielprogramme: Paket SST_DEMO

© AOK Systems GmbH 2006 25


Erstellung und Aufruf eines ST-
Programms

ST-Programme werden wie XSLT-Programme aufgerufen:

DATA l_var_input TYPE STRING VALUE '<A>Test</A>‘,
     l_var_string TYPE STRING.

CALL TRANSFORMATION z_st_first
SOURCE XML l_var_input
RESULT root = l_var_string.

© AOK Systems GmbH 2006 26


Grundstruktur eines ST Programms

<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation­
  templates" template="MAIN">

  <tt:root name="ROOT"/>
  <tt:template name="MAIN">
    <A>
      <tt:value ref="ROOT"/>
    </A>
  </tt:template>
</tt:transform>

© AOK Systems GmbH 2006 27


Einführung in Fallunterscheidungen

<DATA>
  <A>optional</A> <!­­  kann wegfallen ­­>
  <B>Wert</B>
</DATA>

<tt:transform template="temp1" 
  xmlns:tt="http://www.sap.com/transformation­templates">
  <tt:root name="ROOT1"/>
  <tt:root name="ROOT2"/>
        
  <tt:template name="temp1">
    <DATA>
      <tt:cond>
        <A tt:value­ref=".ROOT1"/>
      </tt:cond>
      <B tt:value­ref=".ROOT2"/> 
    </DATA>
  </tt:template>
</tt:transform>

© AOK Systems GmbH 2006 28


Inhalt

XML im Datenaustausch

XML Technologie bei SAP

XML Library

XSLT

Simple Transformations

Ausblick: Java Integration

© AOK Systems GmbH 2006 29


Ausblick

Wofür Java-Technologie im Web Application Server?

 J2EE Infrastruktur
 Portal Technologie

Was bringt das im Datenaustausch?

 Validierung gegen W3C XML Schema (JAXP!)


 XML Signature, XML Encryption
 Serielle Transformationen: STX (http://stx.sourceforge.net)
 XSLT 2.0 (z.B. SAXON)
 JAXB

Validierung durch JAXP im Rahmen einer EJB-Anwendung


und Zugriff durch einen Webservice!

© AOK Systems GmbH 2006 30


Session Bean für Validierung

© AOK Systems GmbH 2006 31


Bereitstellung als Web Service

© AOK Systems GmbH 2006 32


Definition eines Client Proxy in ABAP

© AOK Systems GmbH 2006 33


Weiterführende Literatur

SAP Press

 ABAP Fortgeschrittene Techniken


und Tools
 XML-Datenaustausch in ABAP

© AOK Systems GmbH 2006 34


Geschafft!

Vielen Dank für Ihre Aufmerksamkeit!

Fragen? Kritik? Kommentare?

© AOK Systems GmbH 2006 35