0

这是 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 字符数?

4

1 回答 1

2

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

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

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

于 2019-10-02T15:27:27.720 回答