将ls_struc从代码页" 1110"转换为代码页" 0100"(在UNICODE环境中)

2020-09-06 18:26发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我目前正在使用以下结构翻译结构:...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我目前正在使用以下结构翻译结构:将ls_struc从代码页" 1110"转换为代码页" 0100"。

当然,在Unicode中,这不再允许,因此我已使用cl_abap_conv_out_ce将其替换为新逻辑。

这一直有效,除非结构中的一个字段包含哈希。 例如,字段ls_struc-desc =" MANDA xyz ### 123"。

在执行unicode之前,即使用TRANSLATE命令,输出如下:

使用新的Unicode类,输出字符串现在有所不同:

这些字符串应该相同,即我在Unicode环境中应具有相同的结果。 非常感谢所有帮助,我已经花了3天的时间来解决此问题。 :(

我的代码如下:

PERFORM create_linefeed更改lv_linefeed。使用ls_struc更改视图长度
更改lv_view_offlen。
使用ls_struc更改PERFORM new_record

lv_view_offlenCHANGING lv_xstring。
传输lv_xstring TO文件。 > *&----------------------------------------------- ---------------------- *
*&表格CREATE_LINEFEED" Unicode
* &------------------------------------------------- -------------------- *
*换行0100 konvertieren
* ---- -------------------------------------------------- ---------------- *
FORM create_linefeed更改p_linefeed。
尝试。
调用方法cl_abap_conv_out_ce => create
导出
编码='0100'
* endian ='L'
*替换='。'
* ignore_cerr = ABAP_FALSE
接收
转换= p_linefeed。
CATCH cx_parameter_invalid_range。
CATCH cx_sy_codepage_converter_init。
ENDTRY。
ENDFORM。 > *&------------- -------------------------------------------------- ------ *
*&表格LENGTH_OF_VIEW" Unicode
*&--------------- -------------------------------------------------- ---- *
*自助餐厅
* ------------------- -------------------------------------------------- -*
使用p_recordCHANGING p_view_offlen形成视图长度。
TRY。
呼叫方法cl_abap_view_offlen => create_legacy_viewEXPORTING
data = p_record RECEIVINGref = p_view_offlen。
CATCH cx_parameter_invalid_type。
ENDFORM。 " LENGTH_OF_VIEW" Unicode
*&------------------------------- -------------------------------------- *
* &Form NEW_RECORD" Unicode
*&--------------------------------- ------------------------------------ *
* Datensatz + den Buffer schreiben中的换行
* ---------------------------------- ------------------------------------ *
使用p_record p_view_offlenCHANGING p_xstring_buffer形成新记录
TRY。
呼叫方法lv_linefeed-> convert_strucEXPORTING data = p_record视图= p_view_offlenIMPORTING
buffer = p_xstring_buffer。
CATCH cx_sy_codepage_converter_init。
CATCH cx_sy_conversion_codepage。
br> CATCH cx_parameter_invalid_range。
ENDTRY。
ENDFORM。" NEW_RECORD" Unicode

(829乙)
4条回答
骆驼绵羊
2020-09-06 18:40

嗨,桑德拉

感谢您的回答。 抱歉,我的代码未格式化!

我的结构如下所示:

BEGIN OF ds_out,

firma TYPE numc4,
begda TYPE C LENGTH 10,

endda TYPE C LENGTH 10,
fitec TYPE C LENGTH 2,
ktext TYPE C LENGTH 3,
ltext TYPE C长度100,
fityp TYPE C LENGTH 2,
kzkonz TYPE C LENGTH 1,
kzkost TYPE C长度1,
kzjob TYPE C长度1,
结束于ds_out。

是导致问题的字段" ltext",即在SE11中它似乎具有哈希值。 当然,在SAP GUI中,它显示为"#",但显然是某种特殊字符。

数据来自SAP表。

我试图将其输出到 :

在二进制模式下为输出打开数据集文件。

一周热门 更多>