0% found this document useful (0 votes)
111 views

An XML Format For Ajax Response Messages - SAP Blogs

The document proposes an XML format for Ajax response messages between a client and server. It discusses using XML despite its declining popularity for Ajax, and defines an <ajax> root element with optional <message> and other child elements to transfer response data and messages in a generic format.

Uploaded by

apoorvj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
111 views

An XML Format For Ajax Response Messages - SAP Blogs

The document proposes an XML format for Ajax response messages between a client and server. It discusses using XML despite its declining popularity for Ajax, and defines an <ajax> root element with optional <message> and other child elements to transfer response data and messages in a generic format.

Uploaded by

apoorvj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

GetStarted

Solutions Support Training Community Developer Partner

About

Community / Blogs

AnXMLFormatforAjax
ResponseMessages
December6,2012 | 40Views |
RdigerPlantiko
morebythisauthor

UIBusinessServerPages(BSP)
abap | ajax | schema | xml | xslt

Follow

TheXinAjax
SoWhyBotherWithXML?
TheAjaxResponseFormat
TheClassofAjaxResponses
TestingDocumentInstances
OntheABAPSide
Conclusion

Thisblogisapreludeforaplannedseriesofblogsonhowtodesign
webapplicationsservedbyRESTfulservicesonanABAPWebAS.This

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 1/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

firstpartisaboutasufficientlygenericXMLformatforcarrying
informationsbetweenclientandserver.

TheXinAjax
ItisalmostforgottenthattheXinAjaxstandsforXML.Intheearly
timesoftheAjaxeuphoria,XMLhasbeenthoughtasthegeneralcarrier
formatformessages.AjaxwasplannedasapairingofAsynchronous
JavaScriptwithXML.WhileasynchronousJavaScriptaddressedthe
XMLHTTPRequestobjectasthetoolfordatatransfer,XMLwasthought
tobethelanguagefortransmittingdatabetweenclientandserver.

Butinthosetimes,thebrowserswerentreallypreparedtoeasilyparse,
buildandtransformXML.XMLquicklylostitsterraininfavourofother
dataformats.Nowadays,theherdshavemovedon,favorizingJSON,
andIjoininthevoicespraisingtheadvantagesofthisdataformat.Even
adhocplaintextformatsareinfashion,builtandparsedontheflywith
basicstringmanipulationcommandsandregularexpressionsearch.

SoWhyBotherWithXML?

Firstofall,inthemeantimewehavematureXMLtoolsontheclientas
wellasontheserverside.WithaframeworklikeSarissa,wehaveallthe
XMLpowerontheclient:wecanbuildandtransformXMLdocuments
andconvertthemintoHTMLfragments.

Thisisthesecondadvantage:XMLbeingconceptionallyand
notationallyclosetoHTML,makesiteasytoimportXMLfragmentsinto
thecurrentHTMLDOM.Also,theAPIsformanipulatingortraversing
elementssharemanymethodsandpropertieslikee.g.
getElementsByTagName(),childNodes,firstChild,nodeType,andsoon.
ThisisparticularlyhelpfulwithXHTMLdocuments,butworksequally
wellwithproperHTML.

Ontheserverside,itiseasytointegrateanXSLTorSTtransformation
intoanABAPbasedwebservice:Afterhavinggatheredallthe
necessaryABAPdatafortheresponse,youmaythrowthemintoa
CALLTRANSFORMATIONanddirectlyreceiveanXMLdocumentinthe
desiredtargetformat.Seebelowforanexample.

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 2/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

TheAjaxResponseFormat

InanAjaxbasedwebapplication,thereshouldbenottoomuch
overheadforthedatatransferprotocol.EmployingaprotocollikeSOAP
wouldclearlybeoverdone.Ontheotherhand,itmakessensetodesign
somesimplecrossapplicationcontainerformatforalltheinvolvedweb
servicesofalargerwebapplicationproject.

IncontrasttoSOAP,theenevelopepartofsuchamessageshouldbe
reducedtoanabsoluteminimum.Basically,justarootnode,letscallit
<ajax></ajax>shouldberequiredwrappingitalltomeettheOne
RootElementcriterionofXMLwellformedness.

Ifoundthat,apartfromthecommonrootelement,say<ajax>,itmakes
sensetohaveoneparticulardefinedchildelement<message>,
containingamessageaccompanyingtheresponse.

Concerningtherestofthedocument,itisnotnecessarytoimposeany
restrictivecriteria.Virtuallyeverythingispossiblefromnothingtoa
complexnestedstructurewhichfitsbesttoaparticularrequest.

Thefollowingmayserveasanexample:

<ajax>
<messagetype="S"text="3countriesselected"/>
<countryvalue="ES">Spain</country>
<countryvalue="FR">France</country>
<countryvalue="IT">Italy</country>
</ajax>

Wehavea<message>elementwithamessagetypetheABAP
messagetypes(Success,Information,Warning,Error,Abort,andXfor
failedassertions)servingfortheallowedvaluesandanattributefor
themessagetextitself.Followingtothis<message>element,thereisa
seriesof<country>elements.

Dependingonthewebservicesdomain,weshouldbecompletelyfree
todesigntheresponseformatsothatitfitsbestfortransferringthe
relevantdatatotheclient.

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 3/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

Anotherexamplecouldbetheconfirmationresponseafteraneworder
hasbeencreated:

<ajax>
<messagetype="S"text="Ordersaved"/>
<ordernumber="4711"/>
</ajax>

Insuchanexample,theservicecouldmerelypassthenewnumberof
thecreatedsalesordertotheclient.Therestoftheorderdataareon
theclientanyway,sincetheuserhadrequestedtocreateanorderout
ofthesedata.Sothereisnoneedtotransmitallthesedatabackagain
fromtheservertotheclient.

Thereisonetypeofchildelementswhichmakessensefora
<message>:Theservicemayindicateoneormoreofthequery
parameters(fields)thatareconnectedtothemessage.Soalistof
<field>elementswithobligatorynameattribute(andanoptionalvalue
attribute)maybeincludedinthe<message>.Thewebclientcoulduse
thisinformationtohighlightaninputfieldwhichhaderroneousinput:

<ajax>
<messagetype="E"text="PACHOLKEisnotaknownuser">
<fieldname="user"/>
</message>
</ajax>

TheprecedingexamplealsoillustratesthatanAjaxResponsemaycarry
noapplicationdataatall.

Butlikewise,itmaybethemessagethatisomitted:

<ajax>
<requisitionCode>1002</requisitionCode>
</ajax>

TheClassofAjaxResponses

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 4/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

XMLschemaisalanguagefordescribingclassesofXMLdocuments.
WecanuseittogiveaformaldescriptionofallAjaxResponses,i.e.
XMLdocumentswiththedatastructureexposedabove:

<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
<!Nameoftherootelementis'ajax'>
<xs:elementname="ajax"type="ajaxResponse"/>
<!Content:[<message>?,anyElement*]>
<xs:complexTypename="ajaxResponse">
<xs:sequence>
<xs:elementname="message"
minOccurs="0"
maxOccurs="1"
type="message"/>
<xs:anyprocessContents="lax"
notQName="##definedSibling"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!A<message>hasatypeandatextattribute
Itmaycontain<field>childelements>
<xs:complexTypename="message">
<xs:sequence>
<xs:elementname="field"type="field"minOccurs="0"/>
</xs:sequence>
<xs:attributename="type"type="msgType"/>
<xs:attributename="text"type="xs:string"/>
</xs:complexType>
<!Afieldelementhasa'name'andanoptional'value'>
<xs:complexTypename="field">
<xs:attributename="name"use="required"/>
<xs:attributename="value"use="optional"/>
</xs:complexType>
<!msgTypecopiestheallowedvaluesaufABAP'sSYMSGTY>
<xs:simpleTypename="msgType">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="S"/>
<xs:enumerationvalue="I"/>
<xs:enumerationvalue="W"/>
<xs:enumerationvalue="E"/>
<xs:enumerationvalue="A"/>
<xs:enumerationvalue="X"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

ThisXMLSchemadescribesalltherulesmentionedabove:

1.Therootelementhasthenameajax,
2.Itcontains0or1<message>aschildren,andafterthatarbitrary
manyelementsofwhatevernameandtype,butnofurther

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 5/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

<message>element.
3.Themessagehasanattributetype,containingoneoftheallowed
valuesforanABAPmessagetype,andatextattributeforthe
messageitself.
4.Themessagemaycontainasequenceof<field>elements,
denotingthefieldsthatareconnectedtothemessage.

TheonlynonstraightforwardpartinthisXMLscemadocumentisthe
exclusionoffurthermessageelementsinthe<xs:any>elementset.
Actually,forimplyingthisrestriction,Iusetheattribute(thanksto
MichaelKayforpointingmetothissolution):

notQName="##definedSibling"

Thisattributeofthe<xs:any>elementispreciselywhatsnecessary
here.Itexcludesallthedefinedsiblings(here:just<message>)fromthe
allowedelementnames.Whiletherestoftheschemawouldbeavalid
XSD1.0document,thisattributenotQNamecamewithXSD1.1.Idont
seeawayofdescribingthedocumentstructurepurelywithXSD1.0
means.

TestingDocumentInstances

ThereisanonlinetoolforSchemabasedXMLvalidation.Thisisvery
helpfulforaquicktestwhetheracertainXMLdocumentisavalid
instanceofagivenschema.

However,whenusingtheonlinetoolwiththeaboveschema,youwould
bedisappointed:TheonlineserviceisstillonXSD1.0,itcantinterpret
theschema.AsfarasIknow,thereisnoonlinevalidatorforXSD1.1(as
ofthiswriting).

However,ifyouhaveJavaonyourcomputer,youcaninstalltheApache
Xercestools.OntheXercesdownloadpage,youcandownloadthe
binariesforthecurrentrelease(2.11).Becarefultochooseaversion
containingtheXSD1.1support(theyaremarked).CopytheeightJAR
filescontainedinthatpackagetothefolder<Java>/jre/lib/endorsed,

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 6/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

where<java>isthepathtoyourJavaSDK(ortoyourJavaRuntime).If
suchafolderendorseddoesnotexistyetin/jre/lib:createit.

OnceyouhavetheseJARfilesintheJREendorseddirectory,the
XercesXSD1.1Schemavalidatorcanbeused.Thereisatestclass
jaxp.SourceValidatorcomingwiththedistribution.Youcanuseitfrom
thecommandline.Seehereanexamplewithanintentionallywrong
XMLdocument(itcontainedtwomessageelements,wherethe
AjaxResponseformat,asexplained,onlyallowsone):

WedontneedtheXSDatruntime.Butinanycaseitsgoodtohavea
purelyformaldescriptionoftheexchangeddata.Forexample,sucha
descriptionprovesusefulforunittestsonthewebservices.Simpletests
assertingthattheoutputisanAjaxResponsehelpsavoidingbugswhen
theservicesareextendedorotherwisemodified.

OntheABAPSide

IhavedesignedsometestserviceswhichIwillfurtherdiscussinthe
followingblogs.

Oneoftheseservicesretrieves,onaGETrequest,allthevariantsofa
reportwiththegivenreportname.Hereisanexamplecall:

http://bsp.mits.ch/buch/job/variants?repid=RSNAST00

Whencallingit,youwillretrieveananswerlikethis:

<?xmlversion="1.0"encoding="iso88591"?>
<ajax>
<reportname="RSNAST00">
<variantname="I18730"text="WFMCsendexternaladdress"/>

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 7/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

<variantname="IMMNAST00"text="NASTsendfaximmediately"/>
<variantname="SAP_SDB"text="Securitydatasheetdispatch"/>
<variantname="UXPD_NAST_ZMVN"text="PurchaseOrderCopy,MVN"/>
<variantname="UXPD_NAST_ZTIN"text="PurchaseOrderCopy,ZTIN"/>
<variantname="UXPY_NAST_NAB1"text="Yearlyinvoice,NAB"/>
<variantname="VERA_001"text="TestscheduledRSNAST00"/>
<variantname="ZBA1_20110708"text="Orderconfirmation,resend"
</report>
</ajax>

ThisobviouslyconformswiththeabovedefinitionofanAjaxResponse.
Itcontainsnotmorethanthedemandeddata:ThevariantIDs,andtheir
texts.Theapplicationwillusepreciselythisresponseforfillingalistbox,
andthisAjaxcyclewillbetriggeredonanychangeofthefieldcontaining
thereportname.

Toservetherequest,astatelesswebserviceintheABAPWebASis
called.Forthegivenreportnamelv_repid,itgatherstherelevantdata
(VARID/VARIT)intoaninternaltablelt_vars.Ifnecessary,the
messagefieldslv_messageandlv_msgtyareprovided:

lv_repid=server>request>get_form_field('repid').
iflv_repideqspace.
*Pleaseenterareportname
messagee798(db)intolv_msg.
lv_msgty='E'.
else.
try.
callmethodcheck_for_variants
exporting
iv_repid=lv_repid
importing
et_vars=lt_vars.
iflt_varsisinitial.
*Novariantsfound
messagei260(db)intolv_msg.
lv_msgty='I'.
endif.
catchzcx_errorintolo_ex.
lv_msg=lo_ex>get_text().
lv_msgty='E'.
endtry.

endif.

WhenalltheABAPdataaredetermined,theyareconvertedintoXML
data.OntheABAPside,thisisaccomplishedbypreciselyone

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 8/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

statement:

*Transformvariantsand/ormessageintoAjaxResponseformat
calltransformationzvariants
source
variants=lt_vars
message=lv_msg
message_type=lv_msgty
repid=lv_repid
result
xmllv_result.

Ofcourse,theactualworkoftransformingisperformedinsidetheXSLT
transformationhere:zvariants.

Inthefollowingcodeoftransformationzvariants,observethatitis
possibletowritetherulesinastepdownmannerbeginningwiththe
overalldocumentstructure,andthengoingdowntothedetailsoneby
oneasacompositionofsmalltemplateswitheasyandsingle
functions.

Alsonotethatreadabilityincreaseswhenusingthecurlybracenotation
forevaluationinsideofattributevaluesofthetargetdocument:

<xsl:transformxmlns:xsl="http://www.w3.org/1999/XSL/Transform"

<!
Givesallthevariantsofareport,intheAjaxResponseformat
DataaretakenfrominternaltableVARIANTS
MESSAGEandMESSAGE_TYPEcontainamessage(optional)
>

<xsl:stripspaceelements="*"/>

<!Maintemplate:MessageandVariants>
<xsl:templatematch="asx:abap/asx:values">
<ajax>
<xsl:calltemplatename="message"/>
<xsl:applytemplatesselect="VARIANTS"/>
</ajax>
</xsl:template>

<!Message,ifgiven>
<xsl:templatename="message">
<xsl:iftest="not(MESSAGE_TYPE='')">
<messagetype="{MESSAGE_TYPE}"text="{MESSAGE}">
<fieldname="repid"/>
</message>
</xsl:if>

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 9/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

</xsl:template>

<!Variants>
<xsl:templatematch="VARIANTS">
<!Onlyiftherearevariants>
<xsl:iftest="*">
<reportname="{../REPID}">
<xsl:applytemplatesselect="*"/>
</report>
</xsl:if>
</xsl:template>

<!Asinglelineofthevarianttable>
<xsl:templatematch="RSVARTXT">
<variantname="{VARIANT}"text="{VTEXT}"/>
</xsl:template>

</xsl:transform>

Inthisform,sucharequestisservedonamodestlytunedSAPsystem
(actually,itisoneofourteamsdevelopmentsystems)withanaverage
ABAPresponsetimeofabout20milliseconds,asthefollowing
screenshotfromSTADshows:

Exploitingthebufferingforcommonlyuseddatabaseresources,the
grossshareoftheresponsetimeisCPUtimeastatelesswebservice
ofthistypewillscaleverywell.Incomparison,arequestresponsecycle
ofevenaminimalisticBusinessServerPagerequiresafactor510
higherABAPresponsetime.Also,aBSPnavigationusuallyresultsina
reloadofthecompletewebpage,whereasAjaxtechniquescanbe
usedtoexchangeonlysmallpartsofthepage,whichadditionally
increasesoverallperformancebyreducingtheclientsideresponse
time.

ThisisnottospeakagainstBusinessServerPagesactually,BSPand
Ajaxcomplementeachotherverywell.BSPcanbeusedtomanagethe
applicationsressources(HTML,CSS,JavaScript,XMLfragments,
clientsideXSLTs)andtogeneratethepagestobeloadedfromthe

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 10/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

server.Assoonastheyareloaded,furtherinteractioncanbehandled
byAjaxrequests.

Conclusion

FromthefirstspreadofAjax,XMLwasplannedasdatatransferformat
fortheclientservercommunication.AlthoughJSONisusuallyfavorized
today,therearegoodargumentsforusingXML:Therearereliabletools
onclientaswellasonserversidetoworkwithXMLdata.Also,the
similarityofXMLDOMtoHTMLDOMmakesXMLagoodchoice.

OncethedecisionismadetoworkwithXMLforAjaxenabledweb
applications,itisusefultobasealltheservicesinvolvedonasufficiently
generalcommonAjaxResponseformat.SinceAjaxisusedformany
smallrequests,suchaformatshouldbeaslooseandasminimalisticas
possible.Thisblogdetailedaproposal.

AlertModerator

5Comments
YoumustbeLoggedontocommentorreplytoapost.

UweKunath

February8,2013at2:02pm

Thankyou,Rdigerforthisblogpost!
Onequestionthatisstillopenforme,ishowthisissuecouldbesolved:
IfwedidntuseGETrequestsbutPOSTrequestsinstead,anddontpassthe
generatedbrackettermintheURL,e.g.
http://server:8080/sap/bc/bsp/leoym/bsp00/endpoint.htm
theBSPruntimeanswersthemwithagenericformlikethis
<html><head><styletype=text/css>.middle{verticalalign:middle}</style>
</head><bodyonload=document.forms[0].submit()><formmethod=post

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 11/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

action=/sap(bD1lbiZjPTA3MA==)/bc/bsp/leoym/bsp00/endpoint.htm></form>
<tableborder=0width=100%height=100%><tr><tdalign=center
class=middle>Yourrequestisbeingprocessed</td></tr></table></body>
</html>
Abrowserwouldbeexpectedtodisplaytheformandretriggertherequestwith
thebracketintheURL.IfitwasXMLHttpRequest,thiswouldntworkofcourse.
DoyouknowanypossibilitytopreventthisbehaviourinBSPruntime?Ofcourse
wecouldfollowthelinkinthegeneratedformandresendtherequestmanually
asabrowserwouldtypicallydoit.
Butpossiblethereisabetterapproach
Thankyou,
Uwe

RdigerPlantiko Postauthor

February8,2013at2:37pm

Uwe,thanksforyourfeedbackalthoughithasnothingtodowith
thecontentofthisblog
Actually,thisisafrequentlydiscussedquestion.Thebracketpart
thattheICFgeneratesintotheURLisnecessary,sinceotherwise
thesystemwouldntknowonwhatclientandwithwhichlanguageto
performtherequest.Sowhynotincludethebracketpartinthe
URL,itdoesntchangeanyway(itsnosessionidorsomethingit
shouldonlycontainthebase64encodingofatermlike
l=DE&c=565,thelanguageandclientparameter.
Thisthreadcontainssomefurtherinformationsonthissocalled
URLmangling.
Inpractice,youdontneedtoworryabouttheredirect:Performing
anXMLHttpRequest,willautomaticallyinterprettheHTTP30x
redirectionresponse,andwillautomaticallyforwardyoutothenew
URL.Usually,aframeworkwaitsuntilitfinallyreceivesanHTTP
200statuscode,beforetriggeringaneventlikesuccess,onwhich
youregisteredyourcustomcode.See
http://stackoverflow.com/questions/4168784/ajaxredirection
handling/4168800#4168800
Regards,
Rdiger

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 12/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

RdigerPlantiko Postauthor

February9,2013at9:14am

Uwe,Iwasnowabletoreproduceyourproblem.
Itonlyhappens
ifyouservetherequestwithaBSP(notwithanownrequest
handler,asIwasusingintheblogonimplementingaRESTAPIin
ABAP),
andwhenyousendaPOSTrequest,insteadofaGETrequest
(whichhastobepossibleforaRESTAPI,ofcourse).

Indeed,theBSPrequesthandler(CL_HTTP_EXT_BSP)hasa
specialhandlingforPOSTrequeststhatrequireanURLrewrite.
Theformyoumentionisproducedinmethod
ON_CHECK_REWRITEofclassCL_BSP_RUNTIME(line522ff.in
ourrelease):

*gothere!
ifc_request>get_header_field(~request_method)=
POST.#EC*.
data:htmltypestring.
loopatffsintoff.
*replacealloccurrencesof``inffvaluewith`&quot`.
ffvalue=cl_abap_dyn_prg=>escape_xss_xml_html(
ffvalue).
concatenatehtml<inputtype=hiddenname=
ffnamevalue=ffvalue>intohtml.
endloop.
concatenate<html><head><style
type=text/css>.middle{verticalalign:middle}</style>
</head>
<bodyonload=document.forms[0].submit()>
<formmethod=postaction=l_location>
html

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 13/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

InthissituationPOSTrequests,andusingaBSPasrequest
handler,Iwouldsuggesttousethecorrectmanglingterm
containingtheclientandlanguagetomakeitwork(asIalready
statedinthepreviousreply).
Actually,IdontseethebenefitinusingBSPforimplementinga
RESTAPI,asitisdesignedforcreatingpagestobelookedatinthe
browser.Whatistheadvantageinusingit?Whynotcreatingan
ownSICFhandlerclass,asdescribedinthementionedblog?
Regards,Rdiger
Remark:AsanotherexampleofnonBSPrequesthandler(instead
ofthosedescribedinthementionedblog),seeherethecodefor
thehandlerthatgetsthevariantsofareport(
http://bsp.mits.ch/buch/job/variants?repid=RSNAST00):
http://bsp.mits.ch/code/clas/zcl_job_repid_variants

UweKunath

February10,2013at1:00pm

Thankyou,Rdiger,andsorryforthe
misunderstanding.BecauseofthesectionBSPofthis
blogpost,andbecauseitwastaggedwithBSP,I
thoughtthatyouimplicitlydescribedBSPHandlers.
However,youstatedclearlythatyouaretalkingabout
statelesswebserviceintheABAPWebAS.
Thankyouverymuchfortheexplanationofthe
manglingtermifitdoesntchangeanyway,itcould
beincludedintheURL.Thatsreallygoodnews.
ThereasonwhyBSPhandlersmightbebetterthan
ICFbasedhandlers,issessionhandling.Ofcourse,
RESTServicesshouldbestateless,butthisisoftennot
possibleoratleastleadstoperformanceissuesfor
e.g.inhybridmobileapplications.
Now,intheblogpostyoumentioned,youalsoincluded
asectioncalledSession,IdentityandLocking,which
isgoodnews#2today
Thankyouverymuch!
PS:

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 14/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

TherearealsootherinterestingapproachestoREST
inSCNlikethepythonconnector,whichisoptimizedto
leverageexistingfunctionmodules
http://scn.sap.com/community/scripting
languages/blog/2013/01/29/restprototypingwith
python

RdigerPlantiko Postauthor

February10,2013at3:16pm

Uwe,thanksforyourreply.
WorkingwithstatemeansthattheREST
APIshouldrequireasessionID
parameter,tobeprovidedbytheclient
webapplication.Ifthatapplicationisa
BSP,thesessionIDcanbeextractedfrom
thesapappcontextcookie,asexplained
inmyblog.
Thanksforpointingmyattentiontothe
Pythonconnectorwhichopensyet
anotherwayforconnectinganarbitrary
webapplicationservertotheSAPsystem
internally.
WithanownwebserverlikeApachein
betweentheSAPsystemandtheclient,
onecouldalsomapsomeURLpaths
directlytotheURLofaRESTfulABAP
webservice(usingmod_rewriteor
directiveslikeProxyPass),andthe
accessescanthenbeprogrammedin
JavaScriptontheclient.Thisisneartothe
ideasIoutlinedhereforXMLandherefor
JSONasdatatransportlayer.
Regards,Rdiger

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 15/16
2/8/2017 AnXMLFormatforAjaxResponseMessages|SAPBlogs

Share & Follow


Privacy TermsofUse LegalDisclosure Copyright Trademark Sitemap Newsletter

https://blogs.sap.com/2012/12/06/anxmlformatforajaxresponsemessages/ 16/16

You might also like