<!-- BusinessMessage.dtd v1.02 -->
<!-- Created by Albert Bupp 
     17 February 2000
     Copyright Backsoft Corporation
	 
	  Change History:
	  07 March 2000 (AB) - Added new top-level element, 'BusinessMessage', which
	                       contains the new element 'BusinessProcess'. Moved 
                          several attributes formerly in the BusinessObject 
                          element to BusinessMessage. 
     17 March 2000 (AB) - Added Header and decendent elements.
     23 May   2000 (AB) - Added ResponseURL element, renamed Address to 
                          PostalAddress, fixed typo in Receiver element.
-->
<!--#USAGE: SAP Data Type Map 
ID    RFC type          Java type    C type
____________________________________________________
C     RFCTYPE_CHAR      char         char
D     RFCTYPE_DATE      Date         date (yyyymmdd)
T     RFCTYPE_TIME      Time         time
N     RFCTYPE_NUM       int          int
I     RFCTYPE_INT       int          int
b     RFCTYPE_INT1      char         unsigned char
s     RFCTYPE_INT2      int          int
F     RFCTYPE_FLOAT     float        float
P     RFCTYPE_BCD       double       double
B     RFCTYPE_CHAR      char         char
X     RFCTYPE_BYTE      char         char
-->
<!ENTITY % SAPTypes "C | D | T | N | I | b | s | F | P | B | X">

<!ENTITY % CallTypes "request | response">

<!ENTITY % ImpExContent "Parameter*
                         , Structure*
                         , Table*">

<!ENTITY % baseProps " Name        NMTOKEN   #REQUIRED
                     Length      CDATA     #IMPLIED
                     Description CDATA     #IMPLIED
                     a-dtype     NMTOKENS  'Length int'">

<!ENTITY % simpProps " %baseProps;
                     Type       (%SAPTypes; )  'C'">

<!ENTITY % compProps " %baseProps;
                     Type      NMTOKEN  #IMPLIED">

<!-- Top Level Element -->
<!--#USAGE: "Date" attribute format should be 'yyyymmdd' -->
<!--#USAGE: "Time" attribute format should be 'hh:mm:ss' -->
<!ELEMENT BusinessMessage  (Host? , BusinessObject* , BusinessProcess* , Header? )>
<!ATTLIST BusinessMessage  Date    CDATA     #REQUIRED
                           Time    CDATA     #IMPLIED
                           UserID  CDATA     #IMPLIED
                           Version CDATA     #FIXED '1.02'
                           a-dtype NMTOKENS  'Date date
                                              Time time' >

<!-- Host Element -->
<!--#USAGE: For SAP systems, the "Name" attribute should be
            in the form of SystemName:SystemNumber:Client -->
<!--#USAGE: Element intended to hold a URI -->
<!ELEMENT Host  (#PCDATA )>
<!ATTLIST Host  Name     CDATA    #IMPLIED
                Language NMTOKEN  'EN'
                ERP      CDATA    'SAP'
                System   CDATA    'R3'
                Version  NMTOKEN  #IMPLIED >

<!ELEMENT BusinessObject  (Import* , Export* )>
<!ATTLIST BusinessObject  Name      NMTOKEN  #REQUIRED
                          Method    NMTOKEN  #REQUIRED
                          CallState  (%CallTypes; )  #REQUIRED >

<!ELEMENT BusinessProcess  (Import* , Export* )>
<!ATTLIST BusinessProcess  Name      NMTOKEN  #REQUIRED
                           CallState  (%CallTypes; )  #REQUIRED >

<!ELEMENT Import  (%ImpExContent; )>
<!ELEMENT Export  (%ImpExContent; )>

<!ELEMENT Structure  (Parameter+ )>
<!ATTLIST Structure  %compProps; >

<!ELEMENT Table  (Record* )>
<!ATTLIST Table  %compProps; >

<!ELEMENT Record  (Parameter+ )>

<!ELEMENT Parameter  (#PCDATA )>
<!ATTLIST Parameter  %simpProps; >

<!-- Header Element -->
<!ELEMENT Header  (Sender? , Receiver? , StatusCode? , StatusMessage? )>

<!ELEMENT StatusCode  (#PCDATA )>
<!ELEMENT StatusMessage ANY>

<!ENTITY % SndRcvContent "Individual?
                          , Organization
                          , Department?
                          , Position?
                          , PhoneNumber
                          , Email
                          , Fax?
                          , PostalAddress?
                          , ResponseURL?">

<!ELEMENT Sender  (%SndRcvContent; )>
<!ELEMENT Receiver  (%SndRcvContent; )>

<!ELEMENT Individual  ( (Firstname? , Middlename? , Lastname ) | Fullname )>
<!ELEMENT Firstname  (#PCDATA )>
<!ELEMENT Lastname  (#PCDATA )>
<!ELEMENT Middlename  (#PCDATA )>
<!ELEMENT Fullname  (#PCDATA )>

<!ELEMENT Department  (#PCDATA )>

<!ELEMENT Position  (#PCDATA )>

<!ELEMENT PhoneNumber  (#PCDATA )>
<!ATTLIST PhoneNumber Type CDATA #IMPLIED>

<!ELEMENT Email  (#PCDATA )>
<!ELEMENT Fax  (#PCDATA )>

<!-- PostalAddress Element -->
<!ELEMENT PostalAddress  (Line1 , Line2? , Municipality , PoliticalDivision , Region? , Country? , PostalCode )>
<!ELEMENT Line1  (#PCDATA )>
<!ELEMENT Line2  (#PCDATA )>
<!ELEMENT Organization  (#PCDATA )>
<!ELEMENT Municipality  (#PCDATA )>
<!ELEMENT PoliticalDivision  (#PCDATA )>
<!ELEMENT Region  (#PCDATA )>
<!ELEMENT Country  (#PCDATA )>
<!ELEMENT PostalCode  (#PCDATA )>

<!ELEMENT ResponseURL (#PCDATA )>

