SAP ABAP 特殊字符处理-乱码,换行,回车等特殊字符处理
解决从第三方传到SAP的数据有回车符的办法。
外围系统或网站数据到达SAP表后,经常发现内容里有井号等特殊字符存在,其实这个井号就是回车符。这个井号很不友好,会造成使用字段时的乱码等情况。
EXCEL或TXT文件内容下载后有的系统会存在乱码问题,
解决办法:所以可以在函数SCMS_BINARY_TO_STRING前加入函数NLS_GET_FRONTEND_CP获取当前系统语言的编码,并将编码传到函数SCMS_BINARY_TO_STRING中
DATA CODEPAGE TYPE CPCODEPAGE.
call function 'NLS_GET_FRONTEND_CP'
exporting
langu = SY-LANGU
* FETYPE = 'MS'
IMPORTING
FRONTEND_CODEPAGE = CODEPAGE "取当前语言的字符码
EXCEPTIONS
ILLEGAL_SYST_CODEPAGE = 1
NO_FRONTEND_CP_FOUND = 2
INTERNAL_OR_DB_ERROR = 3
OTHERS = 4
.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.if WA1-ZZ_ZWPJ1 <> ''.
"将自我评价中的回车符 替换成 空格
call function 'SCP_REPLACE_STRANGE_CHARS'
exporting
intext = WA1-ZZ_ZWPJ1
INTER_CP = CODEPAGE
REPLACEMENT = 32 "相当于字符 SPACE
IMPORTING
OUTTEXT = WA1-ZZ_ZWPJ1
EXCEPTIONS
INVALID_CODEPAGE = 1
CODEPAGE_MISMATCH = 2
INTERNAL_ERROR = 3
CANNOT_CONVERT = 4
FIELDS_NOT_TYPE_C = 5
OTHERS = 6
.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.endif. CONDENSE WA1-ZZ_ZWPJ1 NO-GAPS. "取消掉空格
REPLACEMENT = 32 "相当于字符 SPACE
这个32是ASCII码,详见下面的对照表:
键盘常用ASCII码
ESC键 VK_ESCAPE (27)
回车键: VK_RETURN (13)
TAB键: VK_TAB (9)
Caps Lock键: VK_CAPITAL (20)
Shift键: VK_SHIFT ($10)
Ctrl键: VK_CONTROL (17)
Alt键: VK_MENU (18)
空格键: VK_SPACE ($20/32)
退格键: VK_BACK (8)
左徽标键: VK_LWIN (91)
右徽标键: VK_LWIN (92)
鼠标右键快捷键:VK_APPS (93)
Insert键: VK_INSERT (45)
Home键: VK_HOME (36)
Page Up: VK_PRIOR (33)
PageDown: VK_NEXT (34)
End键: VK_END (35)
Delete键: VK_DELETE (46)方向键(←): VK_LEFT (37)
方向键(↑): VK_UP (38)
方向键(→): VK_RIGHT (39)
方向键(↓): VK_DOWN (40)F1键: VK_F1 (112)
F2键: VK_F2 (113)
F3键: VK_F3 (114)
F4键: VK_F4 (115)
F5键: VK_F5 (116)
F6键: VK_F6 (117)
F7键: VK_F7 (118)
F8键: VK_F8 (119)
F9键: VK_F9 (120)
F10键: VK_F10 (121)
F11键: VK_F11 (122)
F12键: VK_F12 (123)Num Lock键: VK_NUMLOCK (144)
小键盘0: VK_NUMPAD0 (96)
小键盘1: VK_NUMPAD0 (97)
小键盘2: VK_NUMPAD0 (98)
小键盘3: VK_NUMPAD0 (99)
小键盘4: VK_NUMPAD0 (100)
小键盘5: VK_NUMPAD0 (101)
小键盘6: VK_NUMPAD0 (102)
小键盘7: VK_NUMPAD0 (103)
小键盘8: VK_NUMPAD0 (104)
小键盘9: VK_NUMPAD0 (105)
小键盘.: VK_DECIMAL (110)
小键盘*: VK_MULTIPLY (106)
小键盘+: VK_MULTIPLY (107)
小键盘-: VK_SUBTRACT (109)
小键盘/: VK_DIVIDE (111)Pause Break键: VK_PAUSE (19)
Scroll Lock键: VK_SCROLL (145)
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.youkuaiyun.com/szlaptop/article/details/8848595