SAP ABAP 特殊字符处理

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

### 图书馆座位管理系统的微信小程序示例代码 为了展示如何创建一个简单的图书馆座位管理系统的小程序,下面提供了一个简化版的代码结构和部分核心逻辑。 #### 小程序目录结构 ```plaintext ├── app.js ├── app.json ├── app.wxss ├── pages/ │ ├── index/ │ │ ├── index.js │ │ ├── index.wxml │ │ └── index.wxss │ ├── seatReservation/ │ ├── seatReservation.js │ ├── seatReservation.wxml │ └── seatReservation.wxss └── utils/ └── util.js ``` #### `app.js` 文件配置全局变量和服务初始化 ```javascript App({ onLaunch() { console.log('Library Seat Management System Launched'); }, globalData: { baseUrl: 'https://example.com/api', } }) ``` #### 页面:主页 (`index/index.js`) 负责显示欢迎界面并导航到其他页面。 ```javascript Page({ data: {}, onLoad() { wx.setNavigationBarTitle({ title: "图书馆座位管理系统" }); }, goToSeatReservation() { wx.navigateTo({ url: '../seatReservation/seatReservation' }) } }); ``` #### 主页视图 (`index/index.wxml`) 定义了基本布局,并设置按钮用于跳转至预约页面。 ```html <view class="container"> <button bindtap="goToSeatReservation">进入座位预约</button> </view> ``` #### 座位预约页面 (`seatReservation/seatReservation.js`) 此文件处理具体的座位查询与预订操作。 ```javascript const app = getApp(); Page({ data: { seats: [] }, onLoad() { this.fetchSeats(); }, fetchSeats() { const that = this; wx.request({ url: `${app.globalData.baseUrl}/seats`, method: 'GET', success(res) { if (res.statusCode === 200) { that.setData({ seats: res.data.seats }); } else { console.error("Failed to load seats"); } } }); }, reserveSeat(e) { let id = e.currentTarget.dataset.id; wx.showModal({ content: '确认要预定该位置吗?', confirmText: '确定', cancelText: '取消', success(modalRes) { if (modalRes.confirm) { // 发送请求完成预约... console.log(`User reserved seat with ID ${id}`); } } }); } }); ``` #### 预约页面视图 (`seatReservation/seatReservation.wxml`) 展示了可用座位列表,并允许用户点击来选择特定座位进行预约。 ```html <view class="container"> <block wx:for="{{seats}}" wx:key="uniqueId"> <view class="seat-item" data-id="{{item.id}}" catchtap="reserveSeat">{{ item.name }} - {{ item.status }}</view> </block> </view> ``` 上述代码片段仅作为概念验证用途[^1]。实际开发过程中还需要考虑安全性、用户体验优化等方面因素。此外,在真实环境中应当遵循最佳实践指南来进行API调用和其他交互设计[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值