点击此处---> 群内免费提供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。
更改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乙)
您的代码将仅包含字符的结构转换为代码页0100( EBCDIC 273 )。 我认为它没有问题。
所以,问题可能出在输入上。 旧版代码是从代码页1110(" HP-Unix"-与拉丁文1 ),但现在您不再从1110转换,而是假设以前已经将字符(正确地)从1110转换为Unicode。
您是否在Legacy系统中运行新代码,只需替换一下 如果要在Unicode系统中运行它,而LS_STRUC是从数据库表中获取的,则表转换中可能存在问题。
这样,在您的Legacy系统中通过事务代码SCP更改了代码页的可能性很小,而在Unicode系统中却没有。
这是我在Unicode系统中用于测试的代码 (格式正确,并且可以编译):
嗨,桑德拉
感谢您的回答。 抱歉,我的代码未格式化!
我的结构如下所示:
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表。
我试图将其输出到 :
在二进制模式下为输出打开数据集文件。
代码仍未格式化! ;-)(您看到CODE按钮了吗?)
顺便说一句,您能否显示十六进制值而不是字符,以确保转换正常。
一周热门 更多>