Web开发不仅现在比较流行,将来也会。我来谈一下最近bsp  application项目的体会吧,属初学者,请各位多多指教。

SAP 的web开发方法有很多种,bsp只是其中一种,而bsp开发有可以分为2种模式,一种是页面带有逻辑代码的开发,另外一种就是逻辑页面分离的就是所谓的MVC.

Bsp由以下几种元素组成:page 、controller、mime object

Page又分为view,page with Flow Logic ,page Fragment

第一种方式开发web应用,用不到controller. Controller是一些类,能够处理页面逻辑的类,

第一种方式可以用到pave with Flow Logic, page Fragment ,mime object(一些图片等等)。

第二种方式我们一般用controller,view,page Fragment ,mime oject.

下面我们用第一种方式创建一个应用。

进入系统,se80  选择bsp application

创建一个page with flow logic,默认代码如下:

<%@page language="abap"%>

<%@extension name="htmlb" prefix="htmlb"%>

<htmlb:content design="design2003">

<htmlb:page title = "main ">

<htmlb:form>

<htmlb:textView     text          = "Hello World!"

design        = "EMPHASIZED" />

<htmlb:button       text          = "Press Me"

onClick       = "myClickHandler" />

</htmlb:form>

</htmlb:page>

</htmlb:content>

大家注意到,这些代码的上方有<%@extension name="htmlb" prefix="htmlb"%>

,这意味着用到了 bsp extension,这个页面可以用到很多控件,而这些控件就存在于这个extension 中,在se80里,选择 Tag-Browser选择Bsp Extensions->transportable->htmlb

这个下面就是我们可以使用的控件,我们可以拖动每一个要使用的控件到右方工作区内,如果需要某个参数,都可以通过拖动的方式来实现。

我们修改后的代码如下:

<%@page language="abap"%>

<%@extension name="htmlb" prefix="htmlb"%>

<htmlb:content design="design2003">

<htmlb:page title = "main ">

<htmlb:form>

<htmlb:inputField  id="i01"  value="USR01"/>

<htmlb:textView     text          = "Hello World!"

design        = "EMPHASIZED" />

<htmlb:button       text          = "Press Me"

onClick       = "myClickHandler" />

<htmlb:tableView id="t01" table="<%=ZTABLE%>"></htmlb:tableView>

</htmlb:form>

</htmlb:page>

</htmlb:content>

在view中的Event Handler 下有oncreate,onrequest,oninitialization,……

大家可以自己一步步测试这些event是怎么走的,我们这里只介绍Oninputprocessing,

在我们的例子中描述最简单的按钮事件。

在oninputprocessing中,写入下列代码

* event handler for checking and processing user input and

* for defining navigation

CLASS CL_HTMLB_MANAGER DEFINITION LOAD.

IF event_id = CL_HTMLB_MANAGER=>EVENT_ID.

DATA: event TYPE REF TO CL_HTMLB_EVENT.

event = CL_HTMLB_MANAGER=>get_event( runtime->server->request ).

data: i01 type ref to CL_HTMLB_INPUTFIELD.

i01 ?= CL_HTMLB_MANAGER=>get_data(

request = runtime->server->request

name = 'inputfield'

id = 'i01'  ).

IF event->name = 'button' AND event->event_type = 'click'

and event->SERVER_EVENT = 'myClickHandler'.

select * from (i01->value) into table ztable up to 10 rows.

ENDIF.

ENDIF.

我们这里需要使用CL_HTMLB_MANAGER来获得系统事件,然后获取屏幕上inputfield的值,

最后根据这个值来取相应表中的数据,展示在ie上。具体的参数,大家一调试便尽知,这里只介绍这个过程,我在学习中知道这个过程非常重要,具体怎么用,通过调试就很容易知道了。如果这个例子真正实现完全动态的类型,用page attribute肯定是不行了,这里不多做介绍,根据我以往的程序,可以找到解决办法。

结果如下
 
 

这些htmlb空间里,每个控件都有很多属性,值得我们去调试、研究,尤其对于tableview这个控件,还可以采用iterator(介绍mvc例子的时候再做介绍)等

具体的内容,如果感兴趣,真是希望大家好好读下sap online help.这个帮助我是一个字都没有落下读完。自己也测试了很多东西,由于时间比较紧,大家在做的过程中,如有问题希望给予提问,然后我来回答,这是最好的方式了。东西太多一下子说不完,因此就有空补补了。

转自:http://blog.chinaunix.net/uid-465882-id-2115964.html

最新文章

  1. java 大数据处理类 BigDecimal 解析
  2. 【转】RadControls for Silverlight(学习1-GridView)
  3. C++的学习资源
  4. php添加数据到xml文件的例子
  5. BITED-Windows8应用开发学习札记之四:如何在Win8 应用中实现语义缩放
  6. 字符串(后缀数组):POJ 3294 Life Forms
  7. Java Tomcat Glassfish Weblogic远程debug(remote debug)
  8. 打开固定文件的pr_debug
  9. Javascript多线程引擎(八)
  10. ArrayList,LinkedListd等容器使用时注意点:
  11. C语言——第六周作业
  12. SpringBoot单元测试中的测试方法执行顺序
  13. Java生成名片式的二维码源码分享
  14. 多线程协作wait、notify、notifyAll方法简介理解使用 多线程中篇(十四)
  15. HDMI热插拔检测原理
  16. linux路由
  17. ubuntu默认壁纸位置
  18. 自旋锁(Spin Lock)
  19. 什么是DevOps?DevOps简明教程
  20. Beautifulsoap - request 网络爬虫 (转)

热门文章

  1. Linux C Programing - Arguments(2)
  2. php浏览历史记录
  3. NumberToChineseConverter.cs
  4. Flowplayer-Subtitle
  5. Windows server 2012 AD DS 搭建步骤
  6. JS常规的验证代码 - 手机号,邮箱,字符串查找
  7. 使用jquery中height()方法获取各种高度大全
  8. vi/vim基本使用方法
  9. 如何管理linux开机自启服务
  10. [分享] WIN7x64封装体积小于4G制作过程