SAP中单位转换

在SAP中遇到单位转换问题,特别是在调用BDC时,如果输入英文单位会出现提示单位在中文中未创建。但通过使用CONVERSION_EXIT_CUNIT_OUTPUT和CONVERSION_EXIT_CUNIT_INPUT两个函数,可以解决单位在中文环境下的定义问题以及单位显示为英文的问题。相关表T006和T006A在单位转换中也起到关键作用。

SAP中的单位转换有时候弄的有点不顺手。在调用BDC的时候,发现了这个问题。如果输入英文单位,会提示单位在中文中没有创建。但是在表T006和T006A中均能找到此单位。可能是后台配置的问题。至今未找到在哪里可以解决这个问题。经过同事帮助,用这两个函数,解决了在调用BDC的时候出现的单位在中文中没有定义的问题,也可以解决单位显示为英文的问题。在此贴出来,希望对后来者有所帮助。 
可以通过SE37来测试。 
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = “输入的英文单位
IMPORTING
output = “输出的中文单位
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = “输入的中文单位
IMPORTING
output = “输出的英文单位

附:
SAP中和计量单位有关的表
T006 计量单位
T006_OIB 计量单位,附加定义
T006A 分配内部到语言相关单位
(内部单位转换到外部贸易、技术单位用T006A表,比如要显示CAR则把数据库中的KAR在次表中转换)
T006B 贸易分配到内部测量单位 
( 外部贸易单位和转换到内部单位就是用T006B表,比如 PC转到ST,CAR转到KAR等)
T006C 外部技术到内部测量单位的分配
T006D 尺寸
T006D_OIB 附加维数
T006E 计量单位系统(组件,映射)
T006EE 计量单位系统(实用程序)
T006ET 计量单位系统(使用程序 -> 文
T006I 计量单位的 ISO 代码
T006J ISO 测量文本单位码
T006M 计量单位组
T006T 维数文本...

<think>我们正在处理用户的问题:将SAP系统中的单位代码转换为中文描述。 根据引用[1]和[2]:SAP系统允许使用汉字作为单位的文本描述,并且提供了单位转换函数(如CONV_UNIT)用于不同度量单位间的转换。但是,用户的需求是单位代码到中文描述的转换,而不是数值的转换。 步骤: 1. 在SAP系统中,单位(计量单位)通常存储在T006表中。该表包含了单位的代码(MSEHI)和对应的描述(MSEHL,MSEHT等)。 2. 对于中文描述,我们需要查看语言相关的文本。通常,描述存储在T006表的MSEHT字段(但注意,T006表本身的语言是依赖于登录语言的,或者有语言相关的文本表)。 3. 实际上,单位的描述存储在表T006A(计量单位文本)中,该表包含语言代码(SPRAS)和对应的描述(MSEH3,MSEH6,MSEHT等)。其中,MSEH3是3字符的短描述,MSEH6是6字符的描述,MSEHT是长文本。 因此,我们可以通过读取表T006A来获取单位代码对应的中文描述(语言代码为'1',代表中文)。 具体步骤: - 使用ABAP代码查询表T006A,指定单位代码和语言代码(SPRAS='1')来获取中文描述。 示例代码: ```abap DATA: lv_msehi TYPE t006a-msehi, " 单位代码 lv_mseht TYPE t006a-mseht. " 中文描述 lv_msehi = 'EA'. " 例如,单位代码EA(英文为Each) SELECT SINGLE mseht INTO lv_mseht FROM t006a WHERE msehi = lv_msehi AND spras = '1'. " 1代表中文 IF sy-subrc = 0. WRITE: / '单位描述:', lv_mseht. ELSE. WRITE: / '未找到单位描述'. ENDIF. ``` 注意: - 如果系统中没有维护中文描述,那么可能返回空或者需要从其他语言描述中获取。因此,确保在T006A表中维护了中文的描述。 - 单位代码是区分大小写的,通常为大写,所以传入的单位代码需要是大写。 另外,引用[2]中提到,在SAP系统中可以用汉字作为文本,但定制时需要注意规范。因此,确保在系统中已经维护了单位代码对应的中文文本。 如果用户需要批量转换,可以使用内表来存储多个单位代码,然后使用循环读取T006A表。 相关问题: 1. 如何在SAP中维护单位的中文描述? 2. 如果单位没有中文描述,如何设置默认值? 3. 如何批量转换多个单位代码为中文描述? 4. 在ALV报表中如何显示单位的中文描述?</think>### SAP系统中单位代码转换为中文描述的方法 在SAP系统中将单位代码转换为中文描述,主要通过以下步骤实现: 1. **使用计量单位表查询** SAP的计量单位主数据存储在表`T006`(基础表)和`T006A`(语言相关文本表)中。通过关联这两个表可获取中文描述: ```abap SELECT t006~msehi AS unit_code, t006a~mseh6 AS chinese_desc FROM t006 INNER JOIN t006a ON t006~msehi = t006a~msehi WHERE t006a~spras = '1' " 1代表中文语言代码 AND t006~msehi = @lv_unit_code " 替换具体单位代码 INTO TABLE @DATA(lt_result). ``` - `T006A`表的`SPRAS='1'`过滤中文文本 - `MSEH6`字段存储中文描述(如"件"、"千克")[^2] 2. **通过函数模块转换** 使用标准函数`UNIT_OF_MEASUREMENT_GET`获取单位描述: ```abap CALL FUNCTION 'UNIT_OF_MEASUREMENT_GET' EXPORTING msehi = lv_unit_code " 单位代码如'PC' spras = '1' " 中文标识 IMPORTING mseh6 = lv_chinese_desc. " 返回中文描述 ``` 3. **在报表中的实现** 在ALV报表中显示中文单位描述时: ```abap DATA: lt_fieldcat TYPE slis_t_fieldcat_alv. FIELD-SYMBOLS: <fs_fieldcat> LIKE LINE OF lt_fieldcat. APPEND INITIAL LINE TO lt_fieldcat ASSIGNING <fs_fieldcat>. <fs_fieldcat>-fieldname = 'MEINS'. " 单位字段 <fs_fieldcat>-seltext_l = '单位(中文)'. " 列标题 <fs_fieldcat>-datatype = 'CHAR'. ``` 在数据输出前调用单位转换函数填充中文描述字段[^5]。 **注意事项**: - 确保中文语言包已安装(事务码`SMLT`) - 若单位无中文描述,需在表`T006A`中维护(事务码`CUNI`) - 单位代码区分大小写,建议统一转换为大写`TRANSLATE lv_unit_code TO UPPER CASE` > 示例:单位代码`PC` → 中文描述"个";`KG` → "千克";`M` → "米"[^2][^4] --- ### 相关问题 1. **如何批量维护SAP单位的中文描述?** 2. **在ABAP报表中如何实现多语言单位自动切换?** 3. **单位转换时出现小数位差异该如何处理?** 4. **如何通过用户出口增强标准单位转换逻辑?** [^1]: SAP单位转换函数和汇率计算方法 [^2]: SAP系统允许使用汉字作为单位文本描述 [^3]: ABAP开发环境指南 [^4]: 报表数据汇总逻辑 [^5]: ALV报表功能修改方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值