关于GUI_DOWNLOAD中下载excel等文档的乱码问题

在使用GUI_DOWNLOAD时,可能出现文件在不同电脑上显示乱码的问题。解决方法是在调用函数时指定codepage,例如设置为'8404'。SAP codepage是一个4位数字,可以通过SCP_CODEPAGE_BY_EXTERNAL_NAME或NLS_GET_FRONTEND_CP函数获取。对于中文环境,如语言zh,NLS_GET_FRONTEND_CP返回的codepage是8404。

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

 

1   GUI_DOWNLOAD

1.1      问题表现

GUI_DOWNLOAD在应用当中有时会导致输出的文件在某些电脑正常显示,在某些电脑乱码显示。这个固然是由于各个电脑系统配置有差异,但是我们可以在应用该函数时就排除该差异来保证任意台电脑正常显示输出的文件。

如下属代码:

该代码把一个内表it_printab[]直接放到一个文件sfile(代码示例来自于ZHRR0028)

  call function 'GUI_DOWNLOAD'
      
exporting
*       BIN_FILESIZE                    =
        filename                        = sfile 
"sfile " "p_file
        filetype                        = 
'DAT'
        codepage                        = 
'8404'
      
tables
        data_tab                        = it_printab[] .

1.2      问题排除方法

在函数中指定codepage就可以了,如该代码示例中指定codepage’8404’

2   关于codepage

2.1      gui_download中对codepage的解释

gui_download

       通过上述解释可以知道,SAP codepage是一个4位的number函数SCP_CODEPAGE_BY_EXTERNAL_NAME可以通过iso,gbk等输入参数确定返回的是the SAP codepage number for an external character set name;函数NLS_GET_FRONTEND_CP通过输入语言参数返回的是the appropriate non-Unicode frontend codepage for a language。比如本例用的函数是NLS_GET_FRONTEND_CP,输入是语言zh,返回的是8404

2.2     

实际上有两个表存储codepage,其对应的函数关系如下:

函数:SCP_CODEPAGE_BY_EXTERNAL_NAME

表:TCP00A- Code Page Attributes

函数:NLS_GET_FRONTEND_CP

表:TCP0F-Relationship Between System Codepage and Frontend Codepage

 

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值