众所周知,WEBDYNPRO是今天来SAP主推的一个面向WEB的MVC编程框架,接触过J2EE的朋友都不会对MVC这种设计模式陌生,WEBDYNPRO ABAP的基本设计思路和很多著名的面向互联网的MVC框架很相似(比如STRUCTS)

SAPNETWEAVER 平台上也有WEBDYNPRO的一些标准应用,譬如PI RWB上面的ALERT CONFIGRATION功能,理解WEBDYNPRO的工作原理,有助于技术顾问在实施项目的时候很好的处理一些相关的异常问题。

前提:在应用WEBDYNPRO之前,首先要将你的APPLICATION SERVER中的FQDN配置好,也就是说您的WS必须是Full Qualified Domain Name,如:hostname.companyname.com这种形式,任何以IP地址或者机器名称为命名的

URL地址都不能正常访问WEBDYNPRO,因此在开始开发WEBDYNPRO之前,首先我们要和BASIS确认服务器是Full Qualified Domain Name即FQDN。

下面就一个简单的例子解剖一下WEBDYNPRO的变成架构和思维模式:

WEBDYNPRO的主要组成部分在下图都已经标出:

1 Views: 相当于我们的一个个页面,传统意义上的V(MVC),每个VIEW里面有一个CONTROLLER,CONTROLLER里面有上下文(用来存储相当于我们认为的在每个VIEW范围内的局部变量),EVENT HANDLER,还有属于VIEW的一些HOOK MATHOD等。

2 Controller:传统意义上的C(MVC),存储上下文数据节点,METHOD,EVENT,有关页面跳转的OUTBOUND PLUG和INBOUND PLUG等等都存在其中,Component Controller是COMPONENT范围内一个全局的CONTROLLER,所有的VIEW中的Controller

可以和Component Controller进行数据映射,从而达到VIEW之间共享传递数据的功能。

3 Windows 相当于VIEWS以及VIEWS之间导航的预定义的集合(STRUCTS也有基本上同样的设计),VIEW之间依靠定义INBOUND PLUG和 OUTBOUND PLUG的NAVIGATION LINK的激发实现导航,我们可以通过OUT_BOUND plug传递参数或者通过VIEW

controller和Component Controller之间的上下文映射实现VIEW之间的数据共享。

4 Component Interface: WEBDYNPRO 实现组件复用的基础,WEBDYNPRO应用程序时可以实现组件嵌套的,比如我们开发了一个COMPONENT可以被另一个COMPOPENT使用,WEBDYNPRO的ALV就是个典型的例子。

而Component Interface(包括INTERFACE VIEWS和INTERFACECONTROLLER )是组件暴露出来供给其他组件使用调用。

WEBDYNPRO的开发步骤(简单描述):

1 首先在SE80创建WEBDYNPRO应用

2 创建VIEW

3 给VIEWS上面拖拽控件:

4 创建VIEW的CONTEXT,CONTEXT须和VIEWS上的某些控件的特定属性绑定,这样当我们改变了CONTEXT的某个节点的数据,那么相应控件的值也会跟着改变,比如这个我们创建了CONTEXT的一个节点下的NAME字段用于存放和绑定INPUT BOX里面的VALUE属性。

5 建立CONPONENT CONTROLLER中的CONTEXT节点并且和VIEW CONTEXT相应节点映射,这样就相当于把全局变量和局部变量相关联

6 建立VIEWS之间的导航,我们需要分别在不同的VIEWS里面插入相应的OUTBOUND 和INBOUND PLUG,并最终在WINDOWS里面建立他们的NAVIGATION LINK。

7 我们已经将SOURCE VIEW的CONTROLLER CONTEXT和COMPONENT CONTROLLER 的CONTEXT绑定,按照第五步的方法,将Target VIEW的CONTROLLER CONTEXT和COMPONENT CONTROLLER 的CONTEXT绑定

8 最后在某些事件如 CLICK BUTTON中激发PLUG方法实现页面导航:

9最后创建WEBDYNPROAPPLICATION,激活所有相关程序并测试运行:

运行结果简单地实现了页面导航和VIEWS之间传递值的功能:

Webdynpro ABAP 简单剖析的更多相关文章

  1. [转]C++智能指针简单剖析

    C++智能指针简单剖析  https://www.cnblogs.com/lanxuezaipiao/p/4132096.html 导读 最近在补看<C++ Primer Plus>第六版 ...

  2. SQLSERVER性能计数器的简单剖析

    SQLSERVER性能计数器的简单剖析 今晚看了这篇文章:SQL Server 2012新performance counter:非常实用的Batch Resp Statistics 文章里介绍到SQ ...

  3. 简单剖析Node中的事件监听机制(一)

    使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用 ...

  4. 对QT中QBitArray类进行简单剖析

    我们知道Qt中的QBitArray类支持在位(bit)的层次上进行数据操作.本文剖析该类在二进制文件读写时的一些要点.另外,在Qt中,QDataStream类对于二进制文件的读写提供了诸多便利,需要注 ...

  5. C++智能指针简单剖析

    导读 最近在补看<C++ Primer Plus>第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑.C++面试过程中,很多面试官都喜欢问智能指针相关的问题 ...

  6. (二十三)原型模式详解(clone方法源码的简单剖析)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 原型模式算是JAVA中最简单 ...

  7. ABAP简单表维护的制作

    为了知识的积累,特作了个简单的表维护. 因为自己之前做dynpro程序的时候建了一个Tree node的表,所以就不在此重复.(在表的交付和维护页签中标的属性要是‘允许标准表维护的’) 直接Alt+U ...

  8. ExecutorService与Executors例子的简单剖析

    对于多线程有了一点了解之后,那么来看看java.lang.concurrent包下面的一些东西.在此之前,我们运行一个线程都是显式调用了Thread的start()方法.我们用concurrent下面 ...

  9. ExecutorService与Executors例子的简单剖析(转)

    对于多线程有了一点了解之后,那么来看看java.lang.concurrent包下面的一些东西.在此之前,我们运行一个线程都是显式调用了 Thread的start()方法.我们用concurrent下 ...

随机推荐

  1. Juniper SRX 简单命令一

    Juniper为人所熟悉的一定是从netscreen开始的,作为一线防火墙品牌,还是有很高的地位.但是以前玩netscreen,都是用的网页版去配置,而且网页版做得很不错.但是现在netscreen要 ...

  2. 【bzoj2563】阿狸和桃子的游戏(贪心+构造)

    题目传送门:bzoj2563 先膜拜一波PoPoQQQ的题解:BZOJ 2563 阿狸和桃子的游戏 贪心 其实我们可以这样看:把一条边的权值均分到两个端点,那么取到两个端点就能得到这条边的边权,如果只 ...

  3. Matrix_QP(A_2SeqSum)

    hdu_4686 题目大意:给出an,bn的递推,求ai*bi(i=0,1,--n-1)的和(an=a(n-1)*Ax+Ay, bn=b(n-1)*Bx+By, a0=A0, b0=B0, Ax,Bx ...

  4. git pull 分支问题

    问题: 是因为本地分支与远程分支没有链接关系, 让他们建立链接关系

  5. 秒懂算法3——插入排序(C#实现)

    算法思路: 将n个元素分成[已排序]和[未排序]两部分.每次将[未排序]中的一个元素取出,插入到已排序中的相应位置.直至所有元素排序完毕. [已排序] [未排序] { { a[0] }         ...

  6. Docker 学习记录

    docker logs 查看日志 docker logs  容器id docker logs -f 容器id 这次命令后面添加了一个新的标识 -f. 和 tail -f 类似, docker logs ...

  7. js实现全选checkbox

    js代码 function selectAllCheckBox(parentid) { var PID = document.getElementById(parentid); var cb = PI ...

  8. Apache 2 移植到Arm开发板

    第一步,安装pcre: tar -xvzf pcre-8.31.tar.gz cd pcre-8.31 ./configure --prefix=$ARMROOTFS/usr/pcre 的错误,如下图 ...

  9. 《深入理解mybatis原理6》 MyBatis的一级缓存实现详解 及使用注意事项

    <深入理解mybatis原理> MyBatis的一级缓存实现详解 及使用注意事项 0.写在前面   MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓 ...

  10. POJ-3659-最小支配集裸题/树形dp

    Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7127   Accepted: 254 ...