ABAP中接收.NET语言byte[]类型返回值问题
在公司自开发的一个项目中,使用了.NET编写的视频监控控件。控件提供了CutBytePicture接口函数用于截取视频图片,返回图片字节流。.NET函数原型如下:
public byte[] CutBytePicture();
按SAP官方文档(RFC To .NET Data Type Mapping),byte[]类型参数应该使用X,RAW类型来接收返回值.
所以,我在ABAP中,使用XSTRING类型的RESULT参数来获取数据,如下。
METHOD CUT_BYTE_PICTURE. CALL METHOD CALL_METHOD EXPORTING METHOD = 'CutBytePicture' IMPORTING RESULT = RESULT. CALL METHOD CL_GUI_CFW=>FLUSH * exceptions * cntl_system_error = 1 * cntl_error = 2 * others = 3 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. RAISE ERROR_CNTL_CALL. ENDIF. ENDMETHOD.
但是,虽然sy-subrc的值一直为0,但RESULT总接收不到数据,后来我将参数改成X、RAW、X类型内表类型都不行。时间紧,没办法再研究类型映射了,
最后,在.NET控件中,新增加了一个方法
public string CutHexPicture();
功能是将CutBytePicture()返回的byte[],转化成十六进制串返回,在ABAP中使用XSTRING接收,得到了正确的结果。
写在这里主要说明:
当ABAP接收byte[]类型值时,可以将byte[]先转换成十六进制串,再在ABAP中使用XSTRING来接收。
另外,有哪位朋友实现过ABAP接收byte[]类型数据,也请让我学习一下,谢谢!
博学之,审问之,慎思之,明辨之,笃行之。

浙公网安备 33010602011771号