我需要转换一个值吗?
Do I need to convert a value?
当我从数据库中选择一个单位时 table 我注意到,通过事务 SE16N
,同一字段有两个不同的值。一个未转换的和一个转换的值。通过我的 SELECT
语句,我收到了未转换的语句。我是否需要转换此值才能继续使用它?
您在 ABAP 中 SELECT
的 table 行仅包含未转换的值。使用这些例如JOIN
与其他 table 或调用 methods/function 模块。转换仅在显示数据时相关。
顺便说一句:尽管如此,这些使用 "good intentions" 的转换可能会导致问题。例如,类型为 NUMC
(数字字符)的值在转换期间通常是 trimmed/stripped,因为它们有前导零。但是当缺少这些前导零时,某些功能模块将无法工作。
首先,可能有必要解释一下 "converted value" 和 "unconverted value" 的概念(更广为人知的是 "external value" 和 "internal value")。
内部值是程序使用并存储在数据库中的实际值,外部值仅在显示、屏幕、打印输出等时计算。
看到一个有意义的代码是非常实用的,正如 Legxis 所解释的,对于度量单位“ST
”(表示数量是件数的度量单位,英语用户更愿意看到 PCS
(英语单词 "pieces"),而德语用户更愿意看到 ST
(德语单词 "Stücks")。
转换算法通过“conversion routine”字段在DDIC域级别(事务代码SE11
)定义,5个字符的代码定义自动调用的转换功能模块在显示时间。例如,度量单位与域 MEINS
相关,其中具有例程 CUNIT
对应于功能模块 CONVERSION_EXIT_CUNIT_INPUT
和 CONVERSION_EXIT_CUNIT_OUTPUT
.
CONVERSION_EXIT_CUNIT_INPUT
做外部值(显示)到内部值(程序和数据库)的转换
CONVERSION_EXIT_CUNIT_OUTPUT
做内部值(程序和数据库)到外部值(显示)的转换
这些功能模块在 SAP GUI、SAPscript、Smart Form、SAP Adobe form、BSP、Web Dynpro 等 SAP 渲染技术中自动调用。如果您调用 "OUTPUT" 功能模块,也会调用ABAP 语句 WRITE
.
请注意,为 DDIC 域定义的 "output length" 可能具有一定的重要性,因为可以定义输出长度(显示)大于内部长度。例如,语言代码内部存储在一个字符上,但显示在两个字符上。例如,在英语中,语言代码"V"(瑞典)显示为"SW"(瑞典),语言代码"S"(西班牙)显示为"SP"(西班牙) .
最后,如果你很好地理解了这个概念,你应该得出结论,你通常不需要自己转换任何东西。仅当您要定义的接口不是上述 SAP 支持的技术之一时,它才有用。
当我从数据库中选择一个单位时 table 我注意到,通过事务 SE16N
,同一字段有两个不同的值。一个未转换的和一个转换的值。通过我的 SELECT
语句,我收到了未转换的语句。我是否需要转换此值才能继续使用它?
您在 ABAP 中 SELECT
的 table 行仅包含未转换的值。使用这些例如JOIN
与其他 table 或调用 methods/function 模块。转换仅在显示数据时相关。
顺便说一句:尽管如此,这些使用 "good intentions" 的转换可能会导致问题。例如,类型为 NUMC
(数字字符)的值在转换期间通常是 trimmed/stripped,因为它们有前导零。但是当缺少这些前导零时,某些功能模块将无法工作。
首先,可能有必要解释一下 "converted value" 和 "unconverted value" 的概念(更广为人知的是 "external value" 和 "internal value")。
内部值是程序使用并存储在数据库中的实际值,外部值仅在显示、屏幕、打印输出等时计算。
看到一个有意义的代码是非常实用的,正如 Legxis 所解释的,对于度量单位“ST
”(表示数量是件数的度量单位,英语用户更愿意看到 PCS
(英语单词 "pieces"),而德语用户更愿意看到 ST
(德语单词 "Stücks")。
转换算法通过“conversion routine”字段在DDIC域级别(事务代码SE11
)定义,5个字符的代码定义自动调用的转换功能模块在显示时间。例如,度量单位与域 MEINS
相关,其中具有例程 CUNIT
对应于功能模块 CONVERSION_EXIT_CUNIT_INPUT
和 CONVERSION_EXIT_CUNIT_OUTPUT
.
CONVERSION_EXIT_CUNIT_INPUT
做外部值(显示)到内部值(程序和数据库)的转换CONVERSION_EXIT_CUNIT_OUTPUT
做内部值(程序和数据库)到外部值(显示)的转换
这些功能模块在 SAP GUI、SAPscript、Smart Form、SAP Adobe form、BSP、Web Dynpro 等 SAP 渲染技术中自动调用。如果您调用 "OUTPUT" 功能模块,也会调用ABAP 语句 WRITE
.
请注意,为 DDIC 域定义的 "output length" 可能具有一定的重要性,因为可以定义输出长度(显示)大于内部长度。例如,语言代码内部存储在一个字符上,但显示在两个字符上。例如,在英语中,语言代码"V"(瑞典)显示为"SW"(瑞典),语言代码"S"(西班牙)显示为"SP"(西班牙) .
最后,如果你很好地理解了这个概念,你应该得出结论,你通常不需要自己转换任何东西。仅当您要定义的接口不是上述 SAP 支持的技术之一时,它才有用。