当我从数据库表中选择一个单元时,我通过事务SE16N注意到同一字段有两个不同的值。未转换值和转换值。使用我的SELECT语句,我将收到未转换的语句。我需要转换这个值才能继续使用它吗?

发布于 2019-09-25 16:38:38
首先,它可能值得解释什么是“转换价值”和“未转换价值”(什么是更被称为“外部价值”和“内部价值”)。
内部值是程序使用并存储在数据库中的实际值,外部值仅在显示时、屏幕上、打印输出等时计算。
正如Legxis所解释的那样,对于度量单位"ST“的内部值来说,看到有意义的代码是非常实用的(一种度量单位,它表示数字是若干件,英国用户更愿意看到PCS (英文单词”片段“),而德国用户更喜欢看到ST (德语单词"Stücks") )。
转换算法是在DDIC域级(事务代码SE11)通过"转换例程“字段定义的,这是一个5字符的代码,定义了在显示时自动调用的转换功能模块。例如,度量单元与域MEINS相关,它具有与CONVERSION_EXIT_CUNIT_INPUT和CONVERSION_EXIT_CUNIT_OUTPUT功能模块相对应的常规CUNIT。
CONVERSION_EXIT_CUNIT_INPUT将从外部值(显示)转换为内部值(程序和数据库)。CONVERSION_EXIT_CUNIT_OUTPUT执行从内部值(程序和数据库)到外部值的转换(显示)这些功能模块在SAP、SAPscript、Smart、statement、BSP、Web等SAP渲染技术中自动调用。如果调用ABAP语句WRITE,也会调用"OUTPUT“功能模块。
请注意,为DDIC域定义的“输出长度”可能具有一定的重要性,因为可以定义大于内部长度的输出长度(显示)。例如,语言代码在内部存储在一个字符上,但显示在两个字符上。例如,在英语中,语言代码"V“(瑞典)显示"SW”(瑞典),语言代码"S“(西班牙)显示"SP”(西班牙)。
最后,如果你很好地理解这个概念,你应该得出结论,你通常不需要自己转换任何东西。只有当您想要定义一个不是上面提到的SAP支持的技术之一的接口时,它才可能有用。
发布于 2019-09-25 13:51:51
SELECT中的表行只包含未转换的值。使用这些方法,例如,JOIN与其他表或调用方法/函数模块。只有在显示数据时,转换才有意义。
顺便说一句:尽管如此,这些带有“善意”的转换可能会引发问题。例如,具有NUMC类型(数字字符)的值通常在转换过程中被修剪/剥离,当它们有前导零时。但是当这些前导零丢失时,一些功能模块就不能工作了。
https://stackoverflow.com/questions/58097610
复制相似问题