这是一个后续问题 PyRFC 中nuc_length和uc_length参数的含义?
使用 PyRFC,我可以得到这样的函数描述:
get_function_description(rfc_name)
每个字段我可以读取uc_length
和nuc_length
.
如果 nuc_length=40 和 uc_length=80,如何确定我可以放入字段中的 unicode 字符数?
不幸的是,我认为这是不可能的。 从给定的字节长度来看,您只能计算适合此字段的最大字符数。
对于 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 字符。