Code: Alles auswählen.
TYPES:
BEGIN OF ty_partner,
title TYPE string,
name TYPE string,
phone TYPE string,
END OF ty_partner,
BEGIN OF ty_partner_result,
anzahl TYPE i,
partner TYPE STANDARD TABLE OF ty_partner WITH DEFAULT KEY,
END OF ty_partner_result,
BEGIN OF ty_result,
result TYPE ty_partner_result,
END OF ty_result.
DATA ls_xml TYPE string.
DATA ls_partner TYPE ty_partner.
DATA ls_output TYPE ty_result.
DATA ls_xstring TYPE xstring.
PARAMETERS p DEFAULT 1.
START-OF-SELECTION.
CONCATENATE '<?xml version="1.0" encoding="iso-8859-1"?>#<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">'
'<asx:values>'
'<PartnerResult><Result><Anzahl>2</Anzahl><Partner>'
'<item><title>Dr.</title><name>Meyer</name><phone>0049 172 12345678</phone></item>'
'<item><title></title><name>Mueller</name><phone>0049 172 55544433</phone></item>'
'</Partner></Result></PartnerResult>'
'</asx:values>'
'</asx:abap>'
INTO ls_xml.
CASE p.
WHEN 'D'.
CALL FUNCTION 'CRM_IC_XML_STRING2XSTRING'
EXPORTING
instring = ls_xml
IMPORTING
outxstring = ls_xstring.
CALL FUNCTION 'BIZC_UI_XML_DISPLAY'
EXPORTING
ip_xml = ls_xstring.
WHEN '1'.
*** Daten => XML
ls_output-result-anzahl = 2.
ls_partner-title = 'Dr.'.
ls_partner-name = 'Meyer'.
ls_partner-phone = '0049 030 12345678'.
APPEND ls_partner TO ls_output-result-partner.
ls_partner-title = ''.
ls_partner-name = 'Moeller'.
ls_partner-phone = '0049 040 22334455'.
APPEND ls_partner TO ls_output-result-partner.
CALL TRANSFORMATION id SOURCE Partnerresult = ls_output RESULT XML ls_xml.
CALL FUNCTION 'CRM_IC_XML_STRING2XSTRING'
EXPORTING
instring = ls_xml
IMPORTING
outxstring = ls_xstring.
CALL FUNCTION 'BIZC_UI_XML_DISPLAY'
EXPORTING
ip_xml = ls_xstring.
CLEAR ls_output.
CALL TRANSFORMATION id SOURCE XML ls_xml
* RESULT result = ls_output.
RESULT partnerresult = ls_output.
IF ls_output-result-anzahl > 0.
BREAK-POINT.
ELSE.
MESSAGE s000(oo) WITH 'WAR NIX...'.
ENDIF.
WHEN '2'.
*** XML => Struktur
CALL TRANSFORMATION id SOURCE XML ls_xml
RESULT partnerresult = ls_output.
IF ls_output-result-anzahl > 0.
BREAK-POINT.
ELSE.
MESSAGE s000(oo) WITH 'WAR NIX...'.
ENDIF.
ENDCASE.
Dass die Tags nicht in Großbuchstaben waren, war eigentlich das erste, was mir auffiel.ewx hat geschrieben:...also... die beiden Streams waren doch nicht gleich...
Der vom System erzeugte Stream bestand nur aus GROßBUCHSTABEN während meine Tags nur einen großen Anfangsbuchstaben hatten...
Das war für mich völlig undenkbar, dass hier die Groß-Kleinschreibung relevant wäre...Frank Dittrich hat geschrieben:Dass die Tags nicht in Großbuchstaben waren, war eigentlich das erste, was mir auffiel.
Du hast aber so überzeugend behauptet, dass Du die XML-Streams verglichen und keine Unterschiede festgestellt hast, dass ich dachte, DEN Unterschied kannst Du ja wohl nicht übersehen haben, also wird es wohl nicht daran liegen.
Das ist ja schon wieder eine Wissenschaft für sich...Frank Dittrich hat geschrieben:Wenn Du keinen Einfluss auf den angelieferten XML-Stream hast, muss eben eine eigene XSLT-Transformation statt id genutzt werden, in der dann z.B. die Tags in Großbuchstaben konvertiert (und auf 30 Zeichen gekürzt) werden.
Lass mich raten: TABZEILE ist ein DDIC-Typ.ewx hat geschrieben:Allerdings werde ich mich da wohl drum kümmern müssen, denn interne Tabellen werden im XML codiert mit <TABNAME> und die einzelnen Zeilen mit <ITEM>.
Wenn allerdings der Stream der Meinung ist, er müsste mit <TABNAME><TABZEILE> kommen...