之前发表了一篇博客,用简单代码实现了声音的播放,这里再来分享一个有趣的东西,可以让你的ABAP程序读出任何文本(应该是只支持英文,中文我没有测试)(经过测试也支持中文),没错,是读出来,其原理是基于SAP与windows的OLE互操作,利用windows里面的speak功能来实现ABAP文本的阅读功能。
代码如下:
REPORT ZTESTVOICE.
include ole2incl.
data: ole type ole2_object,
voice type ole2_object,
text type string.
*text = 'abcde'.
data: it_tline type standard table of tline with header line.
create object voice 'SAPI.SpVoice'.
*这里我是用事务代码SO10创建文本对象做的测试,你也可以直接给text变量给一个英文单词字符串
call function ‘READ_TEXT’
exporting
id = ‘ST’
language = ‘E’
name = ‘文本名字’
object = ‘TEXT’
tables
lines = it_tline.
loop at it_tline.
concatenate text it_tline into text separated by space.
endloop.
call method of voice 'Speak' = ole
exporting #1 = text.
执行这个程序,你就可以听到你的ABAP程序正在读出你的文本,没错,你将会听到而不是看到。
这个SAPI.SpVoice的各种参数和用法可以参考下面MSDN上的链接,有兴趣的同学可以深入研究一下:
http://msdn.microsoft.com/en-us/library/ms723602(v=vs.85).aspx
转自http://scnblogs.techweb.com.cn/dario/archives/date/2012/09