告别SAP GUI限制:手把手教你用BSP技术开发移动友好型网页应用

SAP 基于VUE的BSP单页移动端Web App开发 背景介绍 WinCE设备价格过高,公司决定采购搭载安卓系统的扫码枪来达到降本目的。 原先采用SAP ITS Mobile技术来实现扫码枪调用SAP功能。好处是ABAP只要开发好Dialog界面,将其发布为ITS Mobile应用,就可以直接通过扫码枪上的浏览器直接访问。 但ITS这个框架,设计初衷是为了适配性能孱弱,屏幕较小的移动设备。在性能更为强大,屏幕也更大的安卓扫码枪上,已经很难提供良好的... 阅读详情

告别SAP GUI限制:手把手教你用BSP技术开发移动友好型网页应用

还在为SAP GUI那套只能在PC上运行的厚重客户端而头疼吗?每次业务员跑来问“这个报表能在手机上查吗?”,你只能无奈地摇头。在移动办公成为标配的今天,让SAP应用“动起来”不再是锦上添花,而是关乎效率的硬需求。今天,我们不谈空泛的概念,直接进入实战,聊聊如何用SAP自家的BSP技术,亲手打造一个既能在电脑上完美运行,又能在手机浏览器里流畅访问的现代网页应用。整个过程,我们会绕过那些复杂的商业套件,从最基础的URL配置开始,一步步构建控制器、设计视图,并重点分享那些让移动端体验丝滑的关键技巧。无论你是刚接触SAP Web开发的ABAPer,还是正在寻找轻量级移动化方案的技术负责人,这篇文章都将提供一条清晰的路径。

1. 为什么是BSP?重新审视SAP的Web开发利器

提到SAP的Web开发,很多人会立刻想到Fiori、UI5这些时髦的框架。它们固然强大,但学习曲线和部署复杂度也相对较高。而BSP,作为SAP NetWeaver平台内嵌的Web应用服务器技术,常常被低估。它就像一个被遗忘在工具箱里的瑞士军刀,功能齐全,且与ABAP环境无缝集成。

BSP的核心优势在于其直接性。它允许开发者用熟悉的ABAP语言,结合HTML、CSS和JavaScript,快速构建出运行在SAP应用服务器上的Web应用。这意味着你无需引入额外的中间件或复杂的网关配置,所有的业务逻辑、数据访问和权限检查,都可以在你已经了如指掌的ABAP层完成。对于需要快速将某个复杂事务或报表移动化的场景,BSP提供了一个“短平快”的解决方案。

从架构上看,BSP严格遵循MVC模式,这对于构建结构清晰、易于维护的应用至关重要。这种模式将数据模型、用户界面和控制逻辑分离,让开发工作变得井井有条。更重要的是,BSP应用天生就是“网页”,这意味着它们可以通过任何现代浏览器访问,无论是桌面端的Chrome、Edge,还是移动端的Safari、微信内置浏览器,都能获得一致的入口体验,彻底打破了SAP GUI对客户端和操作系统的绑定。

注意:选择BSP并不意味着排斥UI5。对于需要高度交互、复杂UI组件和标准化设计语言的大型应用,SAP UI5依然是首选。BSP更适合于定制化强、开发周期短、或作为现有GUI事务补充的轻量级Web应用。

2. 从零开始:在SE80中搭建你的第一个BSP应用

理论说再多,不如动手敲一行代码。让我们打开熟悉的SE80事务码,开始创建第一个BSP应用。这个过程是后续所有开发的基础,每一步都值得仔细推敲。

2.1 创建BSP应用程序与理解目录结构

在SE80的对象导航器中,右键点击你想要存放应用的包(或直接在本地对象下操作),选择“创建” -> “BSP应用程序”。在弹出的对话框中,你需要为应用起一个名字,例如 Z_MOBILE_DEMO。这个名字将作为应用标识和URL的一部分,建议遵循公司的命名规范。

创建成功后,SE80会自动生成一个标准的BSP应用目录结构。理解这个结构是高效开发的关键:

  • CONTROLLER:这是应用的大脑所在。你创建的控制器类(通常继承自 CL_BSP_CONTROLLER2)就存放在这里。它负责处理所有来自浏览器的请求,调用业务逻辑,并决定将哪个视图呈现给用户。
  • VIEWS:存放所有用户界面文件的地方,主要是.htm文件。你可以把它理解为MVC中的“V”。这里是你编写HTML、嵌入BSP扩展标签(如<bsp:data>)的舞台。
  • MIME:静态资源库。所有不经常变动的文件都应放在这里,例如:
    • .css 样式表文件,用于定义应用的外观。
    • .js JavaScript文件,用于实现前端交互逻辑。
    • 图片(.png, .jpg)、字体文件等。 将静态资源放在MIME目录下,SAP服务器会高效地管理它们的缓存和传输,对移动端性能提升尤为明显。

一个清晰的项目结构,就像整理好的工具箱,能让你在后续开发中事半功倍。

2.2 配置初始URL与访问权限

应用创建好了,怎么访问它?这需要配置一个入口URL。这个配置通常在控制器类的属性中完成。在SE80中打开你的控制器类(例如 ZCL_MOBILE_DEMO_CONTROLLER),在“属性”页签下,你会找到“默认URL”或类似的设置项。

这里配置的路径,将附加在你的SAP系统Web访问基础地址之后。例如,如果你的SAP服务器Web地址是 https://your-sap-server:port,你设置的默认URL是 /demo/index,那么完整的访问地址就是 https://your-sap-server:port/sap/bc/bsp/sap/z_mobile_demo/demo/index。

仅仅能访问还不够,安全永远是第一位的。你需要为这个BSP应用分配适当的授权对象。最常见的是 S_ICF 授权。在事务码 SICF 中,找到你刚创建的BSP应用对应的服务节点,为其分配一个授权组,并确保最终用户拥有执行该服务的权限。对于面向移动端的内网应用,你可能还需要考虑与企业的单点登录方案集成。

3. 核心开发:控制器、视图与移动端适配实战

骨架搭好了,现在开始填充血肉。BSP开发的精髓在于控制器与视图的交互,而移动端适配则是让这具躯体灵活起来的关键。

3.1 控制器开发:处理请求与调度视图

控制器是应用的交通枢纽。它的核心方法是 DO_REQUEST。当用户通过浏览器发起一个请求时(比如输入URL或点击链接),这个方法就会被自动调用。

在 DO_REQUEST 方法中,你需要解析请求参数,根据不同的条件决定执行什么业务逻辑,并最终指定渲染哪个视图。这个过程非常灵活,你可以通过 REQUEST 对象的属性来获取所有信息。

METHOD if_http_extension~handle_request.
  DATA: lv_action TYPE string.

  " 从请求参数中获取动作指令,例如 ?action=display_report
  lv_action = request->get_form_field( 'action' ).

  CASE lv_action.
    WHEN 'display_report'.
      " 调用业务函数获取报表数据
      me->get_report_data( ).
      " 指定渲染报表视图
      response->set_cdata( me->render_view( 'report_view.htm' ) ).
    WHEN OTHERS.
      " 默认情况,渲染首页
      response->set_cdata( me->render_view( 'index.htm' ) ).
  ENDCASE.
ENDMETHOD.

控制器也是连接ABAP后端世界的桥梁。你可以在这里安全地调用任何RFC函数模块、执行数据库查询、或访问业务对象,然后将处理好的数据“传递”给视图。

3.2 视图创建:HTML、BSP标签与数据绑定

视图文件(.htm)定义了用户看到的内容。它本质上是HTML,但被SAP的BSP处理器增强过,允许你嵌入特殊的BSP标签来动态显示ABAP数据。

最基本的,你可以使用 <% %> 脚本块来执行ABAP代码,用 <%= %> 来输出表达式的结果。但更优雅的方式是使用数据绑定。在控制器中,你可以将ABAP内表、结构体等数据对象“发布”到页面上下文。

<!-- 在index.htm中 -->
<h1>欢迎使用移动报表中心</h1>
<table class="table table-striped">
  <thead>
    <tr>
      <th>订单号</th>
      <th>客户</th>
      <th>金额</th>
    </tr>
  </thead>
  <tbody>
    <% DATA: lt_orders TYPE TABLE OF zbp_order.
       " 假设控制器已将lt_orders数据绑定到页面
       LOOP AT lt_orders INTO DATA(ls_order). %>
      <tr>
        <td><%= ls_order-order_id %></td>
        <td><%= ls_order-customer_name %></td>
        <td class="text-right"><%= ls_order-amount CURRENCY ls_order-currency %></td>
      </tr>
    <% ENDLOOP. %>
  </tbody>
</table>

为了获得更好的开发体验和代码可维护性,建议将主要的显示逻辑和循环仍然放在控制器中,准备好结构清晰的数据模型,再传递给视图进行相对简单的渲染。

3.3 移动端适配的黄金法则

这是决定你的应用在手机上是否好用的关键。传统的桌面网页直接搬到手机上,往往会出现字体太小、按钮难以点击、布局错乱等问题。遵循以下法则,可以极大提升移动体验:

1. 响应式布局是基石 务必在HTML的 <head> 部分添加视口元标签,这是所有响应式设计的起点:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

2. 拥抱CSS框架 不要从零开始编写CSS。引入一个轻量级的响应式CSS框架,如 Bootstrap 或 Bulma,能事半功倍。将它们编译后的.css和.js文件放入MIME目录,并在页面中引用。这些框架提供了成熟的栅格系统、组件和工具类,让你能快速构建出适配各种屏幕尺寸的界面。

例如,使用Bootstrap的栅格系统来排列内容:

<div class="container-fluid"> <!-- 使用流式容器,宽度占满视口 -->
  <div class="row">
    <div class="col-12 col-md-8"> <!-- 在手机上占满12列,在中等屏幕以上设备占8列 -->
      主要内容区
    </div>
    <div class="col-12 col-md-4">
      侧边栏
    </div>
  </div>
</div>

3. 为触控而设计

  • 按钮和链接:确保可点击区域足够大(建议至少44x44像素),并增加内边距。
  • 交互方式:避免依赖鼠标悬停事件,因为移动设备上没有“悬停”。改用点击事件。
  • 输入优化:为电话号码、邮箱、日期等输入框设置正确的 type 属性(如 type="tel", type="email"),这会调出更合适的移动端虚拟键盘。

4. 简化导航 移动屏幕空间有限,导航必须简洁明了。考虑使用:

  • 底部标签栏,用于切换核心功能模块。
  • 汉堡菜单,收纳次要导航项。
  • 清晰的返回按钮和面包屑导航,让用户始终知道自己身在何处。

4. 性能优化与调试:让移动体验更丝滑

一个加载缓慢、交互卡顿的网页,在移动网络环境下会被用户立刻抛弃。优化BSP应用的性能,尤其是针对移动端,需要从多个层面着手。

4.1 前端资源优化

这是见效最快的手段。

  • 合并与压缩:将多个CSS或JS文件合并成一个,并使用工具(如UglifyJS、CSSNano)进行压缩,减少HTTP请求次数和文件体积。
  • 利用浏览器缓存:确保从MIME目录引用的静态资源(如图标、框架库)设置了正确的缓存头(如Cache-Control: max-age=31536000),让用户无需重复下载。在SAP中,这通常可以通过BSP应用的配置或ICF服务节点的参数来管理。
  • 图片优化:
    • 使用现代格式,如WebP,它在保持质量的同时体积更小。
    • 根据设备屏幕尺寸提供不同分辨率的图片(响应式图片,使用srcset属性)。
    • 对图标优先使用SVG格式,它是矢量图,无限缩放不失真,且文件小。

4.2 ABAP后端优化

前端再快,后端响应慢也是白搭。

  • 减少数据库交互:在ABAP层,确保你的数据读取逻辑高效。使用正确的索引,避免在循环中执行SELECT语句,尽量一次获取所有需要的数据。
  • 分页与懒加载:对于可能很长的列表,永远不要一次性加载所有数据。在控制器中实现分页逻辑,每次只请求和传输一页数据。对于图片或列表项,可以采用滚动到底部自动加载更多(懒加载)的方式。
  • 最小化数据传输:只将视图渲染所必需的数据从控制器传递到页面。避免将庞大的、包含敏感或不必要字段的内部表直接丢给前端。

4.3 调试与测试技巧

开发过程中,有效的调试能节省大量时间。

  • 浏览器开发者工具:这是你最好的朋友。在Chrome或Safari的移动设备模拟模式下测试你的应用,检查元素样式、网络请求、控制台错误。
  • ABAP调试器:在控制器类的 DO_REQUEST 方法或你自定义的业务方法中设置断点,跟踪数据流和逻辑判断。
  • 真机测试:模拟器再好,也替代不了真机。务必在几种主流的手机和平板(iOS和Android)上进行实际测试,检查触摸交互、不同浏览器的兼容性等。

下表总结了一些常见的性能瓶颈及应对策略:

瓶颈现象可能原因优化策略
页面首次加载极慢资源文件(CSS/JS)过大或过多合并、压缩、使用CDN或长期缓存
列表滚动卡顿一次性渲染过多DOM元素实施分页或虚拟滚动(只渲染可视区域元素)
操作后响应迟缓ABAP后端逻辑复杂或数据库查询慢优化ABAP代码,添加数据库索引,考虑异步请求
移动端图片模糊或加载慢图片未适配高分辨率屏幕或体积过大使用srcset提供多分辨率图片,转换为WebP格式

在项目后期,我习惯将Bootstrap的定制版本、业务相关的JS函数库打包成一个单独的、版本化的资源文件(如 app-v1.2.min.css),这样既便于管理,也充分利用了缓存。同时,对于复杂的列表展示,从“一次性全量加载”改为“滚动加载更多”后,用户感知的流畅度提升是立竿见影的。

告别SAP GUI限制:手把手教你用BSP技术开发响应式网页应用 本文详细介绍了如何利用SAP BSP技术开发响应式网页应用,摆脱传统SAP GUI的限制。通过SE80开发环境配置、MVC架构搭建、控制器开发、响应式视图设计等实战步骤,帮助企业实现现代化SAP界面,提升移动办公效率。重点讲解了BSP技术在网页端开发中的应用与优化策略。 阅读详情

相关推荐

SAP BSP网页开发入门:从SE80创建到MVC实战(附成品展示)

本文详细介绍了SAP BSP网页开发的入门与实战,从SE80环境搭建到MVC架构实现的全流程。通过具体案例和代码示例,帮助开发者掌握业务服务器页面(BSP)技术,提升SAP Web化转型中的开发效率,适用于需要扩展SAP功能的企业场景。

x1y2z的博客 1万+

SAP BSP网页端开发

基于SAP GUI框架的限制,为了支持SAP移动端可用,运用SAP BSP技术学习开发网页端功能。3、控制器CONTROL,需要开发一个控制器类,最下面的URL是当前BSP的进入网址。2、BSP也是基于MVC框架下的,moudle + view + control。mine里面存储source文件,比如JS代码文件,图片等。1、SE80创建新的业务服务器页面应用程序。5、在view里建立这个index.htm。这里的index.htm相当于初始界面。重构DO_REQUEST方法。

YSY19911230的博客 1240

SAP 基于VUE的BSP OO单页移动端Web App开发

前言 之前的一篇文章,通过传统的Page with Flow Logic形式去实现了基于Vue的One Page Application。这种做法其实存在一些设计上的问题,前端页面交互层还好说,但后端服务层明显不符合RESTful设计风格,一个API居然还有View的代码?(二当家:帮主哇,我们不用OO,光去看人家的Page with Flow Logic,被同行知道了会笑我们变态的)咳咳,有鉴...

一个不务正业的ABAP 1770

SAP操作手册之 通过BSP应用程序调用JS代码

点击蓝字关注我们一前言之前写过一篇文章,介绍了ABAP调用JS的方法.非常简单,只是无法传递参数.详见链接无峰,公众号:ABAP 技巧与实战ABAP基础知识 ABAP执行JAVASCRI...

ABAP 技巧与实战 1474

SAP FIORI移动产品架构优化衍进之路

前言作为一名SAP Fiori 移动顾问已有些年月,在linkin 上也有很多同志咨询过相关的技术问题,但是关于这方面的文章本人却很少起笔,闲来无事,想想还是记录一些在SAP产品上的项目实施经验,以便更多的同志参考!(视频教程参考链接: http://edu.youkuaiyun.com/course/detail/5046)SAP Fiori 简介提到Sap Fiori, 我们要先从SAPUI5讲起。SAPU

天外野草技术专栏 6550

SAP BSP网页端开发实战:从SE80到MVC架构的完整流程

本文详细介绍了SAP BSP网页端开发的完整流程,从SE80工具的使用到MVC架构的实现。通过实战案例,展示了如何利用BSP框架开发订单查询功能,包括数据准备、控制器开发、页面实现和前端交互。文章还提供了调试与优化技巧,帮助开发者提升BSP应用的性能和用户体验。

weixin_29297127的博客 7488

SAP BSP 入门1

Components of a BSP program lists:     1.    Business Server Pages: Define the Web pages that are displayed to the user. Each BSP contain two parts: static part which can use HTML or XML, dynamic p

wengyupeng 蜗牛一步一步向前。。。 7809

走进 STAD 的底层世界,ABAP Statistical Records 如何帮我们定位性能瓶颈

SAP系统性能问题常表现为事务缓慢、页面加载延迟或服务响应不稳定。通过STAD工具可深入分析ABAP统计记录,将模糊问题转化为具体数据。这些记录由SAP内核自动生成,包含CPU时间、数据库访问等关键指标,不依赖应用日志。统计记录在Dialog Step完成后生成,并按小时分文件存储,需注意时间窗口设置。STAD通过过滤条件快速定位问题根源,为性能优化提供可靠依据。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1047

BSP VS Web Dynpro ABAP

      新加了一个文章分类, SAP BSP, 用来记述一下自己学习BSP的经历吧.       SAP WEB 开发的两种技术, BSP 和 WEB Dynpro, 还是先学下BSP吧, 大概了解了一下, 好像和ASP之类的差不多, 相信以我的WEB开发经验应该是很容易上手的啦, 这里引用一段《Advance BSP Programming》中的话, 算是凑一篇网文吧,该书成书较早,

Welcome to Garywang's IT BLOG. 2667

打造灵活 Web 界面的 SAP ABAP BSP Application 全景解析

Business Server Pages(以下简称 BSP)是 SAP NetWeaver Application Server ABAP 上极富特色的 Web 编程模型。本文从诞生背景、核心结构、开发步骤、完整示例、性能与安全到技术比较,全面解析 BSP Application 的方方面面,并在每个知识点后给出权威参考,帮助读者在最短时间内掌握这一经典技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 604

SAP BSP必要配置

SAP BSP使用前的必要配置 内有截图 详细步骤

关于使用SAP的BSP在后台导出excel(xml格式),并在web上弹出的方法

首先你的机器必须装了excel2003或以上 否则xml格式的数据读不出来 2000是肯定不行的步骤如下:先把你的excel模板准备好.然后选择另存为xml表格格式.用写字板打开这个xml  仔细观察这段xml前面描述部分不用管 注意数据部分 这就是你loop内表的时候要操作的部分一行数据从开始 到结束接下来 在bsp的ini事件里创一个string变量

SAP冲击波的专栏 2540

SAP web 开发技术 BSP2 处理网页的

BSP Extensions How to master Web reporting with HTMLB

SAP BSP vs Web Dynpro ABAP

SAP BSP vs Web Dynpro ABAP

wengyupeng 蜗牛一步一步向前。。。 4346

BSP报表开发实例(HTML)

BSP报表开发实例(HTML)<br>图文并茂。。。。傻瓜式操作。。。、

状态估计【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)

内容概要:本文围绕状态估计与神经网络融合技术展开研究,重点介绍了扩展卡尔曼滤波(EKF)与BP神经网络的联合算法(EKF+BP)以及粒子滤波(PF)在轨迹估计中的应用。资源基于Matlab/Simulink平台,提供了BP神经网络、EKF+BP融合算法和PF的完整代码实现,旨在通过仿真手段提升非线性系统的状态估计精度。文中不仅涵盖了卡尔曼滤波系列(如UKF、EKF、PF)的基本原理与实现方法,还展示了其在风电预测、电池寿命预测、无人机状态估计、雷达跟踪等领域的广泛应用,突出其在复杂动态系统建模与轨迹预测中的实用价值。; 适合人群:具备一定Matlab编程基础,从事自动化、控制工程、电气工程、人工智能及相关领域的研究生、科研人员和工程技术人员。; 使用场景及目标:①深入理解并掌握扩展卡尔曼滤波与BP神经网络融合的建模机制与实现流程;②开展非线性系统的状态估计与动态轨迹跟踪仿真研究;③应用于无人机导航、机器人定位、电力系统状态监测、信号处理等领域的算法开发与系统优化。; 阅读建议:本资源以Matlab代码为核心,建议读者结合提供的仿真模型与参考文献动手实践,重点关注EKF与BP网络的参数配置、融合策略设计及滤波性能对比,通过比较UKF、EKF与PF等不同滤波算法的估计效果,深化对状态估计算法优劣与适用场景的理解。

SAP CRM项目手记(15) - 完结篇:革命尚未成功

我们这次CRM项目,其实只是CRM里面很小的部分:售后服务。本来准备在5.1上线的,但考虑到一些未确定的业务因素,还有就是5.1黄金周对销售的影响,所以调整到了5月25日上线,上线的范围是四川省。 我们本来其实就做了CRM里面很小的一块,但上线的业务范围更为狭窄,即与用户服务订单相关的流程。到目前,已经上线快一个月了,等月底把结算流程跑通,就可以继续向外推进了。上线之前,领导寄予后望的备件

冯强优快云博客 4719

SAE J1939协议详解

SAE J1939协议是由美国汽车工程师协会(SAE)制定的主要针对商用车的CAN总线通讯协议,其基础是CAN2.0B协议,面向对象为客车和载重货车;船舶、农业机械等非路面设备。1.SAE J1939协议文档结构如下图:2.CAN的发展概况20世纪80年代,Bosch的工程人员开始研究用于汽车的串行总线系统,1986年, Bosch在SAE(汽车工程师协会)大会上提出了 CAN,1987年,INTEL就推出了第一片CAN控制芯片—82526;随后Philips半导体推出了82C200。

weixin_46184756的博客 8447

SAP VS Code 部署 BSP 测试 ComponentSupport.js 404 Error

SAP VS Code 部署 BSP 测试 ComponentSupport.js 404 Error

Wriprin 的技术博客 235

OpenBCI脑电数据处理实战:用MNE库从Raw对象到可视化分析全流程

本文提供了使用MNE-Python库处理OpenBCI脑电数据的完整实战指南。从通过BrainFlow库获取原始数据流、创建核心的Raw对象,到进行工频滤波、带通滤波等关键预处理步骤,最后实现时域信号、功率谱密度及地形图等多种专业可视化分析,手把手教你完成脑机接口数据处理的全流程。

gin88的博客 370
上一篇: CAN通信过滤器设置避坑指南:为什么你只能收到固定ID的数据?
下一篇: Excel办公自动化:用VBA一键批量检测上千个URL链接是否失效(附完整代码)
github5actions
博客等级 码龄1天 0粉丝 1824原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值