这是SAP RFC: nuc_length vs uc_length的后续问题
使用PyRFC,我可以得到如下func_description:
get_function_description(rfc_name)
每个字段我都可以读取uc_length
和nuc_length
。
如果nuc_length = 40和uc_length = 80,如何确定可放入该字段的unicode字符数?
答案 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字符。