解决从第三方传到SAP的数据有回车符的办法

文章转自 http://blog.csdn.net/szlaptop/article/details/8848595

公司求职招聘网页有个“个人技能”填写的栏位。应聘者大多将之前简历内容复制过来。

数据到达SAP表后,会发现内容里有井号存在,其实这个井号就是回车符。这个井号很不友好,会造成使用字段时的乱码等情况。

我同事之前做过一个类似的,所以直接拷贝代码过来使用。

如下:

  1. DATA CODEPAGE TYPE CPCODEPAGE.  
  2.     call function 'NLS_GET_FRONTEND_CP'  
  3.      exporting  
  4.        langu                       = SY-LANGU  
  5. *      FETYPE                      = 'MS'  
  6.      IMPORTING  
  7.        FRONTEND_CODEPAGE           = CODEPAGE  "取当前语言的字符码  
  8.      EXCEPTIONS  
  9.        ILLEGAL_SYST_CODEPAGE       = 1  
  10.        NO_FRONTEND_CP_FOUND        = 2  
  11.        INTERNAL_OR_DB_ERROR        = 3  
  12.        OTHERS                      = 4  
  13.              .  
  14.    if sy-subrc <> 0.  
  15.       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO  
  16.       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  
  17.    endif.  
  18.   
  19.     if WA1-ZZ_ZWPJ1 <> ''.  
  20.       "将自我评价中的回车符 替换成 空格  
  21.       call function 'SCP_REPLACE_STRANGE_CHARS'  
  22.          exporting  
  23.            intext                  = WA1-ZZ_ZWPJ1  
  24.            INTER_CP                = CODEPAGE  
  25.            REPLACEMENT             = 32         "相当于字符 SPACE  
  26.          IMPORTING  
  27.            OUTTEXT                 = WA1-ZZ_ZWPJ1  
  28.         EXCEPTIONS  
  29.           INVALID_CODEPAGE        = 1  
  30.           CODEPAGE_MISMATCH       = 2  
  31.           INTERNAL_ERROR          = 3  
  32.           CANNOT_CONVERT          = 4  
  33.           FIELDS_NOT_TYPE_C       = 5  
  34.           OTHERS                  = 6  
  35.                  .  
  36.        if sy-subrc <> 0.  
  37.           MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO  
  38.           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  
  39.        endif.  
  40.     endif.  
  41.   CONDENSE WA1-ZZ_ZWPJ1 NO-GAPS. "取消掉空格  
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. "取消掉空格

  1. REPLACEMENT             = 32         "相当于字符 SPACE  
  REPLACEMENT             = 32         "相当于字符 SPACE
这个32是ASCII码,详见下面的对照表:

ASCII, American Standard Code for Information Interchange 念起来像是 "阿斯key",定义从 0 到 127 的一百二十八个数字所代表的英文字母或一样的结果与意义。由于只使用7个位元(bit)就可以表示从0到127的数字,大部分的电脑都使用8个位元来存取 字元集(character set),所以从128到255之间的数字可以用来代表另一组一百二十八个符号,称为 extended ASCII。
ASCII码 键盘 ASCII 码 键盘 ASCII码 键盘 ASCII 码 键盘
27 ESC 32 SPACE 33 ! 34 "
35 # 36 $ 37 % 38 &
39 ' 40 ( 41 ) 42 *
43 + 44 ' 45 - 46 .
47 / 48 0 49 1 50 2
51 3 52 4 53 5 54 6
55 7 56 8 57 9 58 :
59 ; 60 < 61 = 62 >
63 ? 64 @ 65 A 66 B
67 C 68 D 69 E 70 F
71 G 72 H 73 I 74 J
75 K 76 L 77 M 78 N
79 O 80 P 81 Q 82 R
83 S 84 T 85 U 86 V
87 W 88 X 89 Y 90 Z
91 [ 92 \ 93 ] 94 ^
95 _ 96 ` 97 a 98 b
99 c 100 d 101 e 102 f
103 g 104 h 105 i 106 j
107 k 108 l 109 m 110 n
111 o 112 p 113 q 114 r
115 s 116 t 117 u 118 v
119 w 120 x 121 y 122 z
123 { 124 | 125 } 126 ~

  目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。  

  因为1位二进制数可以表示(21=)2种状 态:0、1;而2位二进制数可以表示(22)=4种状态:00、01、10、11;依次类推,7位二进制数可以表示(27=)128种状态,每种状态都唯 一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7位ASCII码是用七位二进制数进行编码 的,可以表示128个字符。  

  第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等; 

  第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。  

   注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用 来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验 规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

附:

ASCII表

ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
0 NUT 32 (space) 64 @ 96
1 SOH 33 65 A 97 a
2 STX 34 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 X 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 \ 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 ~
31 US 63 ? 95 127 DEL
NUL VT 垂直制表 SYN 空转同步
SOH 标题开始 FF   走纸控制 ETB 信息组传送结束
STX 正文开始 CR   回车 CAN 作废
ETX 正文结束 SO   移位输出 EM   纸尽
EOY 传输结束 SI    移位输入 SUB 换置
ENQ 询问字符 DLE 空格 ESC 换码
ACK 承认 DC1 设备控制1 FS   文字分隔符
BEL 报警 DC2 设备控制2 GS   组分隔符
BS   退一格 DC3 设备控制3 RS   记录分隔符
HT   横向列表 DC4 设备控制4 US   单元分隔符
LF   换行 NAK 否定 DEL 删除
键盘常用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)




### 回答1: 从SAP系统中获取表数据可以使用SAP RFC(远程函数调用)技术、BAPI技术(业务应用程序接口)、IDoc技术(信息文档)、ODBC技术(开放数据库连接)、JDBC技术(Java数据库连接)等技术来实现。 ### 回答2: 要让第三方系统获取SAP的表数据,可以采用以下几种技术实现。 首先,可以使用SAP的标准接口进行数据的提取。SAP提供了多种标准接口,如RFC(远程函数调用)接口、IDoc(中间文件)接口、BAPI(业务应用程序接口)等。第三方系统可以通过调用这些接口来获取SAP系统中的表数据。这些接口具有良好的稳定性和兼容性,能够实现数据的实时或定时提取。 其次,可以使用SAP的报表功能。SAP系统提供了强大的报表功能,用户可以通过创建和配置报表来提取和展示需要的表数据第三方系统可以通过调用报表的API接口,将报表数据导出或者实时获取,从而实现对SAP数据的获取。 此外,还可以利用SAP提供的数据提取工具,如SAP数据仓库(Data Warehouse)和ECC(企业核心组件)等。这些工具可以将SAP系统中的表数据整合到一个统一的数据仓库中,第三方系统可以通过连接到数据仓库,获取所需的表数据。 最后,如果第三方系统与SAP系统在同一网络环境中,还可以使用基于网络协议的技术进行数据的传输。比如,可以使用SOAP或RESTful等网络服务协议,通过网络请求方式获取SAP数据。 综上所述,为了第三方系统能够获取SAP的表数据,可以利用SAP的标准接口、报表功能、数据提取工具以及网络协议等多种技术手段来实现。具体应该根据实际场景和需求进行选择。 ### 回答3: 要获取SAP的表数据第三方系统可以使用以下几种技术来实现。 1.使用SAP提供的标准接口:SAP提供了一系列的标准接口,例如RFC(远程函数调用)、BAPI(业务应用编程接口)等。第三方系统可以通过调用这些接口来获取SAP系统中的表数据。这些接口通常提供了很多功能,可以根据具体需求选择适合的接口进行数据提取。 2.使用SAP的开发工具:SAP提供了多种开发工具,例如ABAP(高级商务应用程序编程语言)、SAP PI(过程集成)、SAP HANA等。第三方系统可以利用这些开发工具编写定制的程序或脚本来连接到SAP系统并提取需要的表数据。 3.使用数据同步工具:有些第三方系统提供了自己的数据同步工具,可以与SAP系统进行连接并实现数据的同步。通过配置相关参数,可以将SAP数据导入到第三方系统中,实现数据的共享和维护。 4.使用ETL工具:ETL(抽取、转换、加载)工具可以连接多个不同的系统,并实现数据的抽取、转换和加载。第三方系统可以通过配置ETL工具中的连接参数,将SAP数据抽取到目标系统中。 需要注意的是,获取SAP数据时,应确保对SAP系统的连接和数据访问进行合法授权,并确保数据的安全性和完整性。同时,还应注意不同系统之间的数据格式和结构的兼容性,确保数据在不同系统中的正确传递和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值