ABAP中接收.NET语言byte[]类型返回值问题
2010-06-13 09:57
447 查看
在公司自开发的一个项目中,使用了.NET编写的视频监控控件。控件提供了CutBytePicture接口函数用于截取视频图片,返回图片字节流。.NET函数原型如下:
所以,我在ABAP中,使用XSTRING类型的RESULT参数来获取数据,如下。
最后,在.NET控件中,新增加了一个方法
写在这里主要说明:
当ABAP接收byte[]类型值时,可以将byte[]先转换成十六进制串,再在ABAP中使用XSTRING来接收。
另外,有哪位朋友实现过ABAP接收byte[]类型数据,也请让我学习一下,谢谢!
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类型内表类型都不行。时间紧,没办法再研究类型映射了,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.
最后,在.NET控件中,新增加了一个方法
public string CutHexPicture();
功能是将CutBytePicture()返回的byte[],转化成十六进制串返回,在ABAP中使用XSTRING接收,得到了正确的结果。写在这里主要说明:
当ABAP接收byte[]类型值时,可以将byte[]先转换成十六进制串,再在ABAP中使用XSTRING来接收。
另外,有哪位朋友实现过ABAP接收byte[]类型数据,也请让我学习一下,谢谢!
相关文章推荐
- ABAP中接收.NET语言byte[]类型返回值问题
- python语言 buffer类型数据的使用 'ascii' codec can't decode byte 0xe5 问题的解决
- 关于ajax的dataType类型为text返回值乱码的问题
- C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte
- 函数返回值是否使用引用类型的问题:理解引用、返回值
- 在Java中byte类型数据在运算的问题
- 解密Java byte类型的一个小问题
- byte类型进行运算的问题。
- Android解决使用findViewById时需要对返回值进行类型转换问题的辅助类
- jQuery ajax return语句返回值无法接收问题解决方案
- shell 函数返回值接收问题
- AutoCompleteExtender需要注意的问题(参数类型,参数名称,返回值类型)
- .Net冷知识之动态查找类型时的程序集路径问题
- BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题
- .Net中引用类型按值参数引用的问题
- SQL Server类型与.NET类型的匹配问题
- 形式参数和返回值的类型问题
- Ironpython及其他托管语言中值类型最好使用构造函数赋值,否则无法赋值的问题
- 关于在xcode上写oc语言有id类型、出现ARC forbids explicit message sendof'dealloc'的问题
- java中byte[]转换成String类型的问题