当我从数据库表中选择一个单位时,我通过transaction注意到,SE16N
同一字段有两个不同的值。未转换和转换后的值。通过我的SELECT
声明,我收到了未转换的声明。我需要转换此值才能继续使用它吗?
首先,可能有必要解释“转换价值”和“未转换价值”(更好的是“外部价值”和“内部价值”)的概念。
内部值是程序使用并存储在数据库中的实际值,而外部值仅在显示,屏幕显示,打印输出等时计算。
正如Legxis所解释的那样,对于有意义的代码来说,对于度量单位“ ST
”(度量单位表示数字是件数的内部值)的内部值是非常实用的,英语用户更愿意看到PCS
(英文单词“件”),而德国用户则更愿意看到ST
(德语单词“Stücks”)。
转换算法是SE11
通过“ 转换例程 ”字段在DDIC域级别定义的(事务代码),该字段是5个字符的代码,用于定义在显示时自动调用的转换功能模块。例如,度量单位与域相关,域MEINS
具有CUNIT
与功能模块CONVERSION_EXIT_CUNIT_INPUT
和相对应的例程CONVERSION_EXIT_CUNIT_OUTPUT
。
CONVERSION_EXIT_CUNIT_INPUT
从外部值(显示的)到内部值(程序和数据库)的转换
CONVERSION_EXIT_CUNIT_OUTPUT
将内部值(程序和数据库)转换为外部值(显示)
这些功能模块会在SAP呈现技术(如SAP GUI,SAPscript,智能表单,SAP Adobe表单,BSP,Web Dynpro等)中自动调用。如果调用ABAP语句,也会调用“ OUTPUT”功能模块WRITE
。
注意,为DDIC域定义的“输出长度”可能具有某些重要性,因为可以定义(显示的)大于内部长度的输出长度。例如,语言代码在内部存储在一个字符上,但在两个字符上显示。例如,在英语中,语言代码“ V”(瑞典)显示为“ SW”(瑞典),语言代码“ S”(西班牙)显示为“ SP”(西班牙)。
最后,如果您对概念非常了解,那么您应该得出结论,您通常不需要自己进行任何转换。仅当您要定义不是上述SAP支持的技术之一的接口时,此功能才有用。