1

我在 SAP 中有一个功能模块 (FM),我使用 startRFC 在外部调用它。FM 的唯一输出是一个内部表。该表只有 1 列 char(100) 类型,我需要将其保存到文本文件中。StartRFC 运行良好,但如果有变音符号(例如捷克语:ěščřžýáíé)而不是这些字符,则只会出现 # 号。

有没有人解决过类似的问题?

如果我手动调用相同的算法并在 SAP 的屏幕上写入字符串,一切正常。但是 startRFC 以某种方式破坏了它。问题可能出在 SAP 和 startRFC 之间的数据传输中。但我不知道这种转移是如何运作的。

我找到了解决方案,但速度非常慢。它使用“gcl_conv_to_x->write”和“gcl_conv_to_x->get_buffer”将字符串转换为十六进制字符串,而不是调用“SCMS_XSTRING_TO_BINARY”,并且您需要一个二进制表。但完成所有这些工作需要 5 分钟。如果没有这种转换,我的算法需要 15 秒。

4

1 回答 1

1

所以终于有办法了...

您需要创建 XSTRING 变量并用您的文本填充它。要将 STRING 转换为 XSTRING,请使用 FM:SCMS_STRING_TO_XSTRING。

然后,您将需要一个行类型为 BAPICONTEN 的内部表。它已经包含 SDOK_SDATX (RAW 1022) 类型的组件(列)。您只需在此表中添加一个新行,如下所示:

data: my_table_row LIKE LINE OF my_table.
my_table_row-line = my_xstring.
APPEND my_table_row INTO my_table.

此表 (my_table) 可以通过 RFC 返回,其中包含西里尔文、德文字符等。

我只是一个初学者,所以请不要问我如何创建表格:)

于 2013-12-06T07:34:44.707 回答