看了一段时间的微信小程序,感觉对一些企业来说,也是可以用起来的。哪怕只是简单的使用。

先发布REST:参照这里:https://www.cnblogs.com/sapSB/p/9968054.html

  METHOD IF_HTTP_EXTENSION~HANDLE_REQUEST.
DATA: LO_JSON_SER TYPE REF TO ZCL_TREX_JSON_SERIALIZER,
LO_JSON_DES TYPE REF TO CL_TREX_JSON_DESERIALIZER,
LV_DATA TYPE STRING.
DATA: JSON_STRING TYPE STRING.
DATA:GT_T005U TYPE TABLE OF T005U.
DATA:GW_T005U TYPE T005U.
DATA:LV_METHOD TYPE STRING. LV_METHOD = SERVER->REQUEST->GET_HEADER_FIELD( NAME = '~request_method' ).
LV_DATA = SERVER->REQUEST->IF_HTTP_ENTITY~GET_CDATA( ). CALL METHOD SERVER->RESPONSE->IF_HTTP_ENTITY~SET_CONTENT_TYPE
EXPORTING
CONTENT_TYPE = 'application/json'. CASE LV_METHOD.
WHEN 'GET'.
SELECT * INTO TABLE GT_T005U FROM T005U WHERE SPRAS = '1' AND LAND1 = 'CN'. CREATE OBJECT LO_JSON_SER
EXPORTING
DATA = GT_T005U[]. CALL METHOD LO_JSON_SER->SERIALIZE. CALL METHOD LO_JSON_SER->GET_DATA
RECEIVING
RVAL = JSON_STRING. CALL METHOD SERVER->RESPONSE->SET_CDATA(
EXPORTING
DATA = JSON_STRING ).
* REPLACE ALL OCCURRENCES OF ' '
SERVER->RESPONSE->SET_STATUS( CODE = 200 REASON = 'OK' ).
WHEN 'POST' OR 'PUT'.
JSON_STRING = SERVER->REQUEST->IF_HTTP_ENTITY~GET_CDATA( ).
CREATE OBJECT LO_JSON_DES.
CALL METHOD LO_JSON_DES->DESERIALIZE(
EXPORTING
JSON = JSON_STRING
IMPORTING
ABAP = GW_T005U ).
SERVER->RESPONSE->SET_STATUS( CODE = 200 REASON = 'OK' ). * MODIFY GT_T005U FROM GW_T005U. WHEN 'DELETE'.
WHEN OTHERS.
ENDCASE. ENDMETHOD.

然后就是微信小程序注册了,这里就不说了,自己百度"微信小程序"然后注册。

下面就简单说说微信小程序里的代码了:

整体结构:

用了生成的默认代码当作主页:所以这里app.js就不用加代码了。

因为我们这里加了几个页签块,所以需要在app.json里定义全局页面:pages是所有的页面,window是窗口属性设置,tabBar是窗口下面的页签。

{
"pages": [
"pages/index/index",
"pages/order/order",
"pages/regin/regin",
"pages/logs/logs",
"pages/process/process"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#000000",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "white"
},
"tabBar": {
"list": [
{
"pagePath": "pages/index/index",
"iconPtah": "image/tabBar.jpg",
"text": "首页"
},
{
"pagePath": "pages/order/order",
"iconPtah": "image/tabBar.jpg",
"text": "主页面"
},
{
"pagePath": "pages/regin/regin",
"iconPtah": "image/tabBar.jpg",
"text": "国家地区"
},
{
"pagePath": "pages/logs/logs",
"iconPtah": "image/tabBar.jpg",
"text": "LOGS"
}
],
"backgroundColor": "#32cd32"
},
"style": "v2",
"sitemapLocation": "sitemap.json",
"networkTimeout": {
"request": 10000,
"downloadFile": 10000
},
"debug": false
}

这里定义了5个页签块,但是下面的list中只用了4个,所以也就只会显示4个。

这时候全局的配置完成了。下面再看对应的每个小页签块:

工单页面:order.js

Page({
data: {
orderlist: [{
object_id: "0210001233",
process_type: "ZSV1",
posting_date: "2019-12-30",
status: "E0003",
zzgroup: "TV1"
},
{
object_id: "0210001234",
process_type: "ZSV2",
posting_date: "2019-12-30",
status: "E0003",
zzgroup: "TV1"
},
{
object_id: "0210001235",
process_type: "ZSV1",
posting_date: "2019-12-30",
status: "E0003",
zzgroup: "TV1"
},
{
object_id: "0210001236",
process_type: "ZSV2",
posting_date: "2019-12-30",
status: "E0002",
zzgroup: "AC1"
}
]
},
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: '../regin/regin'
})
}
})

定义了一个orderlist数组,写死了默认的几条数据,下面有个切换窗口设置,

页面控制:order.json   (随便加就行,默认是需要有一个json类型的数据才不会报错)

{
"style": "v2",
"sitemapLocation": "sitemap.json"
}

页面XML配置:order.wxml 设置5列,循环,每列都引用前面定义的orderlist

<!--index.wxml-->
<view class="table">
<!-- <view class="scrollview">
<scroll-view class="scrollx" scroll-x="true" style="width:100%">-->
<view id="title" class="tr">
<text class="DH">单号</text>
<text class="LX">类型</text>
<text class="RQ">创建日期</text>
<text class="ZT">状态</text>
<text class="PL">品类</text>
</view>
<view wx:for="{{orderlist}}" wx:for-index="idx" wx:for-item="item" id="list" class="tr">
<text class="DH">{{item.object_id}}</text>
<text class="LX">{{item.process_type}}</text>
<text class="RQ">{{item.posting_date}}</text>
<text class="ZT">{{item.status}}</text>
<text class="PL">{{item.zzgroup}}</text>
</view>
<!-- </scroll-view>
</view>-->
</view>

设置CSS:order.wxss

.table {
border: 1rpx solid #ccc;
} .tr {
display: flex;
justify-content: space-between;
background: #ce9595;
} .th, .th {
border-right: 1rpx solid #000;
} .DH {
width: 200rpx;
font-weight: 900;
font-size: 30rpx;
}
.LX {
width: 100rpx;
font-weight: 900;
font-size: 30rpx;
}
.RQ {
width: 200rpx;
font-weight: 900;
font-size: 30rpx;
}
.ZT {
width: 100rpx;
font-weight: 900;
font-size: 30rpx;
}
.XH {
width: 200rpx;
font-weight: 900;
font-size: 30rpx;
}
.PL {
width: 100rpx;
font-weight: 900;
font-size: 30rpx;
}

注*上面的orderlist是固定的值,下面的region是动态取rest的:

regin.js:

var call = require("../util/request.js")

Page({
data: {
orderlist: []
},
//事件处理函数
bindViewTap: function () {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad:function(){
var that = this;
//调用封装的方法,为了方便我直接在页面加载的时候执行这个方法
// call.getData('posts/1/comments', this.shuffleSuc, this.fail);
call.getData('zrest?sap-client=300', this.shuffleSuc, this.fail);
},
shuffleSuc: function (data) {
var that = this;
that.setData({
orderlist: data
})
//我后面测试了一下,直接this.setData也可以,但是因为我在没有使用封装方法的时候
//this.setData报过错,不能直接用this,所以我在赋值的时候一般都会加上var that = this;
//这句话算是一个不是习惯的习惯
},
fail: function () {
console.log("失败")
},
})

regin.json

{
"style": "v2",
"sitemapLocation": "sitemap.json"
}

regin.wxml

<!--index.wxml-->
<view class="table">
<!-- <view class="scrollview">
<scroll-view class="scrollx" scroll-x="true" style="width:100%">-->
<view id="title" class="tr">
<text class="DH">客户端</text>
<text class="LX">语言</text>
<text class="RQ">国家</text>
<text class="ZT">省市</text>
<text class="PL">省市描述</text>
</view>
<view wx:for="{{orderlist}}" wx:for-index="idx" wx:for-item="item" id="list" class="tr">
<text class="DH">{{item.mandt}}</text>
<text class="LX">{{item.spras}}</text>
<text class="RQ">{{item.land1}}</text>
<text class="ZT">{{item.bland}}</text>
<text class="PL">{{item.bezei}}</text>
</view>
<!-- </scroll-view>
</view>-->
</view>

regin.wxss

.table {
border: 1rpx solid #ccc;
} .tr {
display: flex;
justify-content: space-between;
background: #ce9595;
} .th, .th {
border-right: 1rpx solid #000;
} .DH {
width: 200rpx;
font-weight: 800;
font-size: 25rpx;
}
.LX {
width: 200rpx;
font-weight: 800;
font-size: 25rpx;
}
.RQ {
width: 200rpx;
font-weight: 800;
font-size: 25rpx;
text-overflow:ellipsis;
}
.ZT {
width: 200rpx;
font-weight: 800;
font-size: 25rpx;
text-overflow:ellipsis;
}
.PL {
width: 200rpx;
font-weight: 800;
font-size: 25rpx;
text-overflow:ellipsis;
}

这个省市的页面是调用的接口,所以上面request了。这个是在util里新建的request.js中:

var app = getApp();
//项目URL相同部分,减轻代码量,同时方便项目迁移
//这里因为我是本地调试,所以host不规范,实际上应该是你备案的域名信息
var host = 'https://gjyxxxxxxx.crm.hisense.com:1443/sap/'; /**
* POST请求,
* URL:接口
* postData:参数,json类型
* doSuccess:成功的回调函数
* doFail:失败的回调函数
*/
function request(url, postData, doSuccess, doFail) {
wx.request({
//项目的真正接口,通过字符串拼接方式实现
url: host + url,
header: {
"content-type": "application/json;charset=GBK"
},
data: postData,
method: 'POST',
success: function (res) {
//参数值为res.data,直接将返回的数据传入
doSuccess(res.data);
},
fail: function () {
doFail();
},
})
} //GET请求,不需传参,直接URL调用,
function getData(url, doSuccess, doFail) {
wx.showLoading({
title: 'Data Loding...',
})
wx.request({
url: host + url,
header: {
"content-type": "application/json;charset=GBK"
},
method: 'GET',
success: function (res) {
doSuccess(res.data);
wx.hideLoading()
},
fail: function () {
doFail();
wx.hideLoading()
},
})
} /**
* module.exports用来导出代码
* js文件中通过var call = require("../util/request.js") 加载
* 在引入引入文件的时候" "里面的内容通过../../../这种类型,小程序的编译器会自动提示,因为你可能
* 项目目录不止一级,不同的js文件对应的工具类的位置不一样
*/
module.exports.request = request;
module.exports.getData = getData;

好了,下面看看效果吧:

微信小程序调用SAP发布的REST显示数据列表的更多相关文章

  1. 图解微信小程序---调用API操作步骤

    图解微信小程序---调用API操作步骤 什么是API API(Application Programming Interface,应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基 ...

  2. 微信小程序之下拉刷新,上拉更多列表实现

    代码地址如下:http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具 官方下载地址: https://mp.weixin.qq.co ...

  3. 微信小程序开发:学习笔记[9]——本地数据缓存

    微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...

  4. 微信小程序点击控制元素的显示与隐藏

    微信小程序点击控制元素的显示与隐藏 首先我们先来看一下单个点击效果 我们来看一下wxml中的代码: <view class="conten"> <view cla ...

  5. 解决微信小程序登录与发布的一些问题

    解决微信小程序的问题 图片在电脑上显示但在手机上却无法显示的问题 要使用的是本地图片,不想把图片上传到网络再通过https的方式解决,解决方法如下: 1.image src中的图片地址对英文字母大小写 ...

  6. 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布

    很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现 ...

  7. 微信小程序调用蓝牙功能控制车位锁

    第一次学用微信小程序,项目需要,被逼着研究了一下,功能是调用微信小程序的蓝牙功能,连接上智能车位锁,控制升降,大概步骤及调用的小程序接口API如下: 1.打开蓝牙模块 wx.openBluetooth ...

  8. PHP:微信小程序调用【统一下单】【微信支付】【支付回调】API;XML转Array,Array转XML方法(通用)

    1.微信公众号.微信小程序开发过程中,第三方服务器与微信服务器数据交互,需要进行数据转换,必须用到这两个函数: 分别是xml_to_array.array_to_xml ; /** * 输出xml字符 ...

  9. 微信小程序---协同工作和发布

    (1)协同开发和发布 在中大型的公司里,人员的分工非常仔细,一般会有不同岗位角色的员工同时参与同一个小程序项目.为此,小程序平台设计了不同的权限管理使得项目管理者可以更加高效管理整个团队的协同工作. ...

  10. 微信小程序之商品发布+编辑功能(多图片上传功能)

    小程序的商品发布页面:功能有多图片上传 遇到的问题记录一下:1.uploadFile成功之后返回的参数是json字符串,一定要用JSON.parse转换为object格式 2.因为商品发布和编辑都是在 ...

随机推荐

  1. 高德地图api标记点和线段重合点击响应问题

    问题现象: 现在地图上放置了line和marker,marker在line的上层显示 这时line和marker同时存在,当line和marker有重合部分并点击重合点时,只响应line对应的clic ...

  2. 数据质量框架QUalitis浅尝使用

    数据质量管理平台(微众银行)Qualitis+Linkis (一)Qualitis是一个数据质量管理系统,用于监控数据质量. 其功能包括: 数据质量模型定义 数据质量结果可视化 可监控 数据质量管理服 ...

  3. Python 生成器说明

    生成器 python 生成器 常规形态 # list def square_numbers(nums: list): squared_nums = [] for i in nums: squared_ ...

  4. 【Linux】3.10 进程管理(重点)

    进程管理 1. 进程管理基础 在Linux中,每个执行的程序(代码)都称为一个进程.每个进程都分配一个ID号 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程.例如www服务器. 每个进 ...

  5. 【Spring】事务操作

    事务概念 1.什么事务 事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败 典型场景:银行转账 lucy 转账 100 元 给 mary lucy 少 100,mar ...

  6. 《数组》--DAY2--快慢指针法

    1.什么是双指针? 双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的. 2.快慢指针 2.1 ...

  7. Spring的三级缓存详解

    目录 1.什么是三级缓存 2.三级缓存详解 Bean实例化前 属性赋值/注入前 初始化后 总结 3.怎么解决的循环依赖 4.不用三级缓存不行吗 5.总结 一.什么是三级缓存 就是在Bean生成流程中保 ...

  8. addAll(Collection<? extends E> c)的方法源码

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...

  9. web自动化:Javascript操作页面元素

    某些特殊情况下,使用selenium的api无法操作页面元素,可以通过js来完成 一.Js定位 js操作中的webelement通过console控制台来进行js定位: WebElement webe ...

  10. CS及免杀

    Strategic Cyber 责任有限公司发行了适用于 Windows.Linux 和 MacOS X 的 Cobalt Strike 软件包. 要安装 Cobalt Strike,只需将其存档解压 ...