我需要转换一个值吗?

时间:2019-09-25 11:44:38

标签: sap abap

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

Converted and unconverted values via SE16N

2 个答案:

答案 0 :(得分:5)

首先,可能有必要解释“转换价值”和“未转换价值”(更好的是“外部价值”和“内部价值”)的概念。

内部值是程序使用并存储在数据库中的实际值,并且仅在显示,屏幕显示,打印输出等时计算外部值。

如Legxis所解释的那样,对于有意义的代码,对于度量单位“ ST”的内部值(表示该数字是个数,一个英文用户更喜欢看到PCS(英语单词“ pieces”),而德国用户更喜欢看到ST(德语单词“Stücks”)。

通过“ conversion routine”字段在DDIC域级别(事务代码SE11)定义转换算法,这是一个5个字符的代码,它定义了转换功能模块,这些功能模块在显示时会自动调用时间。例如,度量单位与域MEINS相关,域CUNIT具有例程CONVERSION_EXIT_CUNIT_INPUT,该例程对应于功能模块CONVERSION_EXIT_CUNIT_OUTPUTCONVERSION_EXIT_CUNIT_INPUT

  • CONVERSION_EXIT_CUNIT_OUTPUT进行从外部值(显示的)到内部值(程序和数据库)的转换
  • {{1}}将内部值(程序和数据库)转换为外部值(显示)

这些功能模块在SAP呈现技术(例如SAP GUI,SAPscript,智能表单,SAP Adob​​e表单,BSP,Web Dynpro等)中自动调用。如果调用ABAP语句{{ 3}}。

请注意,为DDIC域定义的“输出长度”可能具有某些重要性,因为可能会定义(显示的)大于内部长度的输出长度。例如,语言代码在内部存储在一个字符上,但在两个字符上显示。例如,在英语中,语言代码“ V”(瑞典)显示为“ SW”(瑞典),而语言代码“ S”(西班牙)显示为“ SP”(西班牙)。

最后,如果您对概念非常了解,则应该得出结论,通常您不需要自己进行任何转换。仅当您要定义不是上述SAP支持的技术之一的接口时,此功能才有用。

答案 1 :(得分:2)

您在ABAP中SELECT的表行仅包含未转换的值。使用这些来例如JOIN与其他表或调用方法/功能模块。转换仅在显示数据时相关。

顺便说一句:尽管如此,这些带有“良好意图”的转换仍可能引起问题。例如,类型NUMC(数字字符)的值具有前导零时,通常会在转换过程中进行修整/剥离。但是当缺少这些前导零时,某些功能模块将不起作用。