我尝试将内部表下载到我的 PC,下载应该使用转换出口。
示例:表T002
包含一个具有一个字符的语言键 (T0002-SPRAS)。
当我WRITE T0002-SPRAS.
使用转换例程ISOLA
并获得两个字符的语言键(E变为EN ...)时,此转换例程应该用于我的导出。
我的测试报告:
REPORT Y_MY_DOWNLOAD_TEST.
CONSTANTS: c_filename type string VALUE 'C:\temp\test.txt'.
data: it_table type table of t002.
start-of-selection.
SELECT * from t002 into table it_table.
* Start file download
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = c_filename
filetype = 'ASC' "or DAT
WRITE_FIELD_SEPARATOR = 'X'
WRITE_LF = 'X'
* DAT_MODE = SPACE
codepage = '4110' "UNICODE
SHOW_TRANSFER_STATUS = 'X'
WRITE_LF_AFTER_LAST_LINE = 'X'
CHANGING
data_tab = it_table
EXCEPTIONS
OTHERS = 99.
write: 'end'.
结果是一个没有使用转换出口的文件(英语保持E)。
SAP 文档提到了参数dat_mode
:
如果设置了此标志,则 .... 不执行转换出口。
我没有设置标志,所以我希望转换完成。我尝试了不同的组合(dat_mode
开/关、filetype
ASC 和 DAT),但我从未发现任何转换。
评论:
- 我使用 SAP 7.01 版,支持包 SAPKB70107。这是一个unicode系统。
- T002只是一个例子,我的真实数据是其他数据,包含语言键。
我正在寻找带有gui_download
(或其他标准方法/功能模块)的解决方案。
我不想像这样构建自己的导出文件:
data:
tmp type string,
targetline type string,
targettable type table of string.
loop at it_table into sourceline.
"This could be done dynamic with field symbols and ASSIGN COMPONENT
write sourceline-field1 to tmp.
CONCATENATE targetline ';' tmp into targetline.
"...
APPEND targetline to targettable.
endloop.
这将是一个可能的解决方案,但在这种情况下,我更容易适应导出文件的使用者。