确定字段中允许的字符数?

时间:2019-10-02 14:07:44

标签: sap saprfc pyrfc

这是SAP RFC: nuc_length vs uc_length的后续问题

使用PyRFC,我可以得到如下func_description:

get_function_description(rfc_name)

每个字段我都可以读取uc_lengthnuc_length

如果nuc_length = 40和uc_length = 80,如何确定可放入该字段的unicode字符数?

1 个答案:

答案 0 :(得分:1)

不幸的是,我认为这是不可能的。 从给定的字节长度中,您只能计算出适合该字段的最大字符数。

对于Unicode ABAP系统,我们知道SAP将字符数据存储在代码页4102/4103中,该页为UTF-16(大小端格式)。这意味着一个字符至少需要2个字节,即在您的示例中,最大长度可以计算为uc_length / 2 = 40个字符。我认为SAP尚未使用任何4字节字符。但是,这对于代码页4102/4103是可能的。因此,这取决于您将在字段中放入哪个Unicode字符,在uc_length = 80的字段中可以存储的字符少于40个。

对于非Unicode ABAP系统,这甚至更加困难。只要您只使用英语登录语言的代码页1100,一个字符通常只需要1个字节。但是,例如,如果使用日语和代码页8000,则文本数据可以包含混合的US-ASCII字符和日语字符。这意味着文本字段可能同时包含:1个字节的字符和2个字节的字符。并且更加困难的是,对于所有非Unicode代码页(包括代码页1100),甚至存在3个字节的字符。例如,某些SAP特定的字符图标/符号具有此长度。 因此,nuc_length = 40字段最多可以包含40个Unicode字符,最坏的情况下只能包含13个字符。这取决于正在使用的代码页以及要在字段中填充的Unicode字符。