soapui 应用广泛
先提供soapui 软件的 的地址
链接:https://pan.baidu.com/s/1kWhXqg3 密码:vl6n
打开后,下一步下一步到结束。然后打开。
创建一个新的应用请参考链接
https://jingyan.baidu.com/article/0eb457e5360aa503f1a905ce.html
这里,点击 左侧 ‘request1’,然后在Body 中输入参数。
蓝色部分为自动生成,不要动。
这个接口主要是两个参数,一个是 system,一个是output。
注意:当前我这个接口是需要传递一个xml格式的字符串,注意语法为<![CDATA[ 这里是xml ]]>,这里需要注意:<exp:arg0>和<![CDATA... 之间不可有任何的其他字符,包括空格以及换行,否则解析xml会抛出异常,解析失败。当然如果是字符串或者数字类型比较简单,直接写参数就可以
在接口中,我传输一个xml报文,到RFC接口,然后再去解析xml ,输出到内表。
所以划线的地方的是xml 报文,注意xml报文不要有空行,以免报错:
举例:
<INPUT><HEADER><COMP_CODE>2050</COMP_CODE><DOC_TYPE>SA</DOC_TYPE><DOC_DATE>20171230</DOC_DATE><PSTNG_DATE>20171230</PSTNG_DATE><HEADER_TXT>ceshi</HEADER_TXT><REF_DOC_NO>AA</REF_DOC_NO><WAERS>RMB</WAERS><KURSF></KURSF><XREF1_HD>cankao1</XREF1_HD><XREF2_HD>cankao2</XREF2_HD><NUMPG></NUMPG><CCNUM></CCNUM></HEADER><LINES><LINE><SHKZG>S</SHKZG><HKONT>1001010000</HKONT><ZWLDW></ZWLDW><NAME1></NAME1><MWSKZ></MWSKZ><WRBTR>1000</WRBTR><DMBTR></DMBTR><SGTXT>zheshi2</SGTXT><XNEGP></XNEGP><ZUONR></ZUONR><KOSTL></KOSTL><AUFNR></AUFNR><POSID></POSID><BUDG_CODE>Z99</BUDG_CODE><FZHSID></FZHSID></LINE><LINE><SHKZG>H</SHKZG><HKONT>1001010000</HKONT><ZWLDW></ZWLDW><NAME1></NAME1><MWSKZ></MWSKZ><WRBTR>1000</WRBTR><DMBTR></DMBTR><SGTXT>zheshi2</SGTXT><XNEGP></XNEGP><ZUONR></ZUONR><KOSTL></KOSTL><AUFNR></AUFNR><POSID></POSID><BUDG_CODE>Z99</BUDG_CODE><FZHSID></FZHSID></LINE></LINES></INPUT>
在rfc 接口中 获取到的就是 <INPUT> 到</INPUT>之间的内容。
可以通过call transformation 获取参数
示例代码:
* try.
* call transformation ztysfi_xml2stru_kjpz_receive
* source xml i_xmldata
* result root1 = gs_header
* root2 = gt_lines[].
* catch cx_transformation_error into gv_oref.
* gv_message = gv_oref->get_text( ).
* gv_success = 'N'.
* endtry.
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT1"/>
<tt:root name="ROOT2"/>
<tt:template>
<INPUT>
<HEADER>
<COMP_CODE>
<tt:value ref="ROOT1.COMP_CODE"/>
</COMP_CODE>
<DOC_TYPE>
<tt:value ref="ROOT1.DOC_TYPE"/>
</DOC_TYPE>
<DOC_DATE>
<tt:value ref="ROOT1.DOC_DATE"/>
</DOC_DATE>
<PSTNG_DATE>
<tt:value ref="ROOT1.PSTNG_DATE"/>
</PSTNG_DATE>
<HEADER_TXT>
<tt:value ref="ROOT1.HEADER_TXT"/>
</HEADER_TXT>
<REF_DOC_NO>
<tt:value ref="ROOT1.REF_DOC_NO"/>
</REF_DOC_NO>
<WAERS>
<tt:value ref="ROOT1.WAERS"/>
</WAERS>
<KURSF>
<tt:value ref="ROOT1.KURSF"/>
</KURSF>
<XREF1_HD>
<tt:value ref="ROOT1.XREF1_HD"/>
</XREF1_HD>
<XREF2_HD>
<tt:value ref="ROOT1.XREF2_HD"/>
</XREF2_HD>
<NUMPG>
<tt:value ref="ROOT1.NUMPG"/>
</NUMPG>
<CCNUM>
<tt:value ref="ROOT1.CCNUM"/>
</CCNUM>
</HEADER>
<LINES>
<tt:loop name="LINE" ref="ROOT2">
<LINE>
<SHKZG>
<tt:value ref="$LINE.SHKZG"/>
</SHKZG>
<HKONT>
<tt:value ref="$LINE.HKONT"/>
</HKONT>
<ZWLDW>
<tt:value ref="$LINE.ZWLDW"/>
</ZWLDW>
<NAME1>
<tt:value ref="$LINE.NAME1"/>
</NAME1>
<!-- <ORT01>
<tt:value ref="$LINE.ORT01"/>
</ORT01>-->
<MWSKZ>
<tt:value ref="$LINE.MWSKZ"/>
</MWSKZ>
<WRBTR>
<tt:value ref="$LINE.WRBTR"/>
</WRBTR>
<DMBTR>
<tt:value ref="$LINE.DMBTR"/>
</DMBTR>
<SGTXT>
<tt:value ref="$LINE.SGTXT"/>
</SGTXT>
<XNEGP>
<tt:value ref="$LINE.XNEGP"/>
</XNEGP>
<ZUONR>
<tt:value ref="$LINE.ZUONR"/>
</ZUONR>
<KOSTL>
<tt:value ref="$LINE.KOSTL"/>
</KOSTL>
<AUFNR>
<tt:value ref="$LINE.AUFNR"/>
</AUFNR>
<POSID>
<tt:value ref="$LINE.POSID"/>
</POSID>
<BUDG_CODE>
<tt:value ref="$LINE.BUDG_CODE"/>
</BUDG_CODE>
<FZHSID>
<tt:value ref="$LINE.FZHSID"/> </FZHSID> </LINE> </tt:loop> </LINES> </INPUT> </tt:template> </tt:transform>