函数组:SCMS_CONV

SCMS_BINARY_TO_FTEXT
SCMS_BINARY_TO_STRING
SCMS_BINARY_TO_TEXT
SCMS_BINARY_TO_XSTRING
SCMS_FTEXT_TO_BINARY
SCMS_FTEXT_TO_STRING
SCMS_FTEXT_TO_TEXT
SCMS_FTEXT_TO_XSTRING
SCMS_STRING_TO_FTEXT
SCMS_STRING_TO_XSTRING
SCMS_TEXT_TO_BINARY
SCMS_TEXT_TO_FTEXT
SCMS_TEXT_TO_XSTRING
SCMS_XSTRING_TO_BINARY

http://sapcity.itpub.net/category/40118/62599
 
 
sap提供对字符串加密的:'AB_RFC_X_SCRAMBLE_STRING'
 
http://scnblogs.techweb.com.cn/xuchunbo/archives/1207.html
http://www.360doc.com/content/11/1009/16/7678957_154649711.shtml
  http://book.51cto.com/art/201206/344695.htm --《工程师突击:SAP ABAP实用程序开发攻略》
 

DATA WK_CHAR  TYPE C LENGTH 15 VALUE '0'.
DATA WK_POINT TYPE X LENGTH 4.
WK_POINT = CL_ABAP_CONV_OUT_CE=>UCCP( WK_CHAR ).

WRITE WK_CHAR.
SKIP.
WRITE WK_POINT.

<think>我们正在讨论ABAP类`cl_abap_conv_codepage`的来源和可用性。根据用户的问题,用户可能在开发环境中遇到了这个类不存在的情况,因此想知道它属于哪个SAP版本或库,以及为什么不可用。 ### 分析问题 1. **类`cl_abap_conv_codepage`的作用**:这个类在ABAP中用于处理字符编码转换,例如在Unicode和非Unicode系统之间转换字符串的编码。它提供了一些方法,如`convert`,用于执行编码转换。 2. **类的来源**:这个类是SAP标准类,属于SAP基础平台的一部分。它是在ABAP语言支持Unicode后引入的,主要用于处理不同编码之间的转换。 3. **版本依赖性**:根据SAP的版本历史,`cl_abap_conv_codepage`是在较新的SAP NetWeaver版本中引入的。具体来说: - 这个类在SAP NetWeaver 7.0及以上版本中可用(更准确地说,是在支持Unicode的系统中)。 - 在较早的版本(如4.6C或更早)中,可能不存在这个类,而是使用其他方式处理编码转换(例如使用函数模块)。 4. **为什么不存在**: - **系统版本过低**:如果用户使用的SAP系统版本低于7.0,则可能没有这个类。 - **未启用Unicode**:即使系统版本足够,如果系统是非Unicode系统,可能也不需要这个类(但通常非Unicode系统也可能有该类,因为SAP从NetWeaver 7.0开始推荐使用Unicode系统)。 - **安装问题**:可能是系统缺少必要的补丁或支持包。 ### 解决方案 1. **检查SAP系统版本**: - 运行事务码`SM51`,然后点击“Release Notes”查看系统版本。 - 或者运行报表`RSABAPVERSION`查看详细版本信息。 2. **替代方案(如果版本过低)**: - 使用函数模块进行编码转换: - `SCP_REPLACE_STRANGE_CHARS`:替换非法字符。 - `SCMS_STRING_TO_XSTRING`:将字符串转换为XString(指定编码)。 - `SCMS_XSTRING_TO_STRING`:将XString转换为字符串(指定编码)。 - 示例代码: ```abap DATA: lv_string TYPE string, lv_xstring TYPE xstring. " 将字符串转换为UTF-8编码的XString CALL FUNCTION 'SCMS_STRING_TO_XSTRING' EXPORTING text = lv_string encoding = 'UTF-8' IMPORTING buffer = lv_xstring EXCEPTIONS failed = 1 OTHERS = 2. " 将XString转换为字符串 CALL FUNCTION 'SCMS_XSTRING_TO_STRING' EXPORTING buffer = lv_xstring encoding = 'UTF-8' IMPORTING text = lv_string EXCEPTIONS failed = 1 OTHERS = 2. ``` 3. **升级系统**:如果确实需要`cl_abap_conv_codepage`的功能,并且系统版本过低,建议升级到较新的SAP NetWeaver版本(7.0以上)。 ### 引用参考 在引用[3]中提到了使用`cl_abap_codepage=>convert_to`方法进行类型转换,这实际上就是`cl_abap_conv_codepage`类的一个方法。注意,`cl_abap_codepage`是`cl_abap_conv_codepage`的别名,两者指向同一个类[^3]。 ### 完整示例 如果系统支持`cl_abap_conv_codepage`,可以这样使用: ```abap DATA: lv_utf8_string TYPE string, lv_xstring TYPE xstring. " 创建转换对象(指定源编码为UTF-8) DATA(lo_conv) = cl_abap_conv_codepage=>create_in( encoding = 'UTF-8' ). " 将字符串转换为UTF-8编码的XString lv_utf8_string = '你好,世界!'. lv_xstring = lo_conv->convert( source = lv_utf8_string ). " 将XString转换回字符串(使用输出转换器) DATA(lo_conv_out) = cl_abap_conv_codepage=>create_out( encoding = 'UTF-8' ). lo_conv_out->write( data = lv_xstring ). lv_utf8_string = lo_conv_out->get_buffer( ). ``` ### 总结 - **类来源**:`cl_abap_conv_codepage`是SAP NetWeaver 7.0及以上版本的标准类,用于字符编码转换。 - **不存在的原因**:可能是系统版本过低(低于7.0)或非Unicode系统(但通常7.0以上都是Unicode系统)。 - **替代方案**:使用函数模块`SCMS_STRING_TO_XSTRING`和`SCMS_XSTRING_TO_STRING`。 §§相关问题§§ 1. 如何检查SAP系统的Unicode属性? 2. 在ABAP中处理非UTF-8编码的数据有哪些方法? 3. SAP NetWeaver 7.0引入了哪些重要的ABAP新特性?</think>### ABAP 类 `cl_abap_conv_codepage` 的来源与可用性分析 #### 1. **类的来源与所属版本** `cl_abap_conv_codepage` 是 **SAP NetWeaver 7.0** 及以上版本引入的标准 ABAP 类,属于 SAP 基础平台的核心编码转换工具。关键信息: - **首次出现**:SAP NetWeaver 7.0(对应 ABAP 版本 7.0+)[^2] - **所属包**:`SAPBASIS`(包名 `SAP_ABA`) - **功能定位**:替代旧版函数模块(如 `SCP_CONVERT_STRING`),提供面向对象的字符编码转换接口 #### 2. **不可用的常见原因** 若您的系统中不存在该类,可能由于以下原因: 1. **系统版本过低**: - 仅 **NetWeaver 7.0 以下版本**(如 4.6C, 6.20)不支持 - 验证方法:执行事务码 `SM51` → 查看 "Release Notes" 中的版本号 2. **未启用 Unicode**: - 该类仅在 **Unicode 系统**中可用 - 检查方法:事务码 `SCC4` → 查看客户端的 "Unicode" 列标识 3. **缺少基础补丁**: - 需应用 SAP Basis 支持包(SP级别 ≥ SP12 for NW 7.0) - 检查方法:事务码 `SPAM` → "Package Consistencies" #### 3. **替代解决方案** 若系统版本过低,可使用以下兼容方案: ##### (1) 函数模块方案(兼容所有版本) ```abap DATA: lv_string TYPE string, lv_xstring TYPE xstring, lv_codepage TYPE cpcodepage. lv_codepage = '4110'. " UTF-8 编码号 " 字符串转二进制 CALL FUNCTION 'SCP_STRING_TO_XSTRING' EXPORTING text = lv_string encoding = lv_codepage IMPORTING buffer = lv_xstring. " 二进制转字符串 CALL FUNCTION 'SCP_XSTRING_TO_STRING' EXPORTING buffer = lv_xstring encoding = lv_codepage IMPORTING text = lv_string. ``` ##### (2) 类 `CL_ABAP_CODEPAGE`(NW 7.02+ 替代方案) ```abap " 字符串转 UTF-8 二进制 lv_xstring = cl_abap_codepage=>convert_to( source = lv_string codepage = 'UTF-8' ). " 二进制转字符串 lv_string = cl_abap_codepage=>convert_from( source = lv_xstring codepage = 'UTF-8' ). ``` #### 4. **版本升级建议** 若需使用 `cl_abap_conv_codepage`,建议: 1. 升级至 **SAP NetWeaver 7.0 SP12+** 或更高版本 2. 启用 Unicode 模式(事务码 `SCC8` 转换客户端) 3. 应用最新 Basis 支持包(事务码 `SPAM`) > ⚠️ **注意**:在非 Unicode 系统中,字符编码处理需使用函数模块 `SCP_*` 系列,直接使用此类会导致语法错误。 #### 验证示例 ```abap REPORT z_check_codepage_class. TRY. DATA(lo_conv) = cl_abap_conv_codepage=>create_in( encoding = 'UTF-8' ). WRITE: / 'cl_abap_conv_codepage 可用'. CATCH cx_sy_create_object_error. WRITE: / '错误: 当前系统不支持 cl_abap_conv_codepage'. ENDTRY. ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值