SAP web 开发 (第二篇 bsp 开发 mvc模式 Part2 )
单击第一个图标,第一个图标突出显示,单击第二个图标,第一个变灰,第二个突出显示,反之一样。单击history读取历史记录。
Controller ZCL_SUS_C_ORDER_CHANGE
- 1. DO_INIT
method DO_INIT.
*CALL METHOD SUPER->DO_INIT
* .
if ZORDERCHANGEMODEL is initial.
create object ZORDERCHANGEMODEL.
select * from usr02 into corresponding fields of table ZORDERCHANGEMODEL->ORDERCHANGE up to 5 rows.
field-symbols <usr_tab> like line of ZORDERCHANGEMODEL->ORDERCHANGE.
loop at ZORDERCHANGEMODEL->ORDERCHANGE assigning <usr_tab>.
<usr_tab>-icons = '/sap/bc/bsp/sap/srmsus/images/order/ok-grau.gif'.
<usr_tab>-cancel = '/sap/bc/bsp/sap/srmsus/images/order/cancel-grau.gif'.
endloop.
append initial line to ZORDERCHANGEMODEL->ORDERCHANGE_history.
append initial line to ZORDERCHANGEMODEL->ORDERCHANGE_history.
append initial line to ZORDERCHANGEMODEL->ORDERCHANGE_history.
append initial line to ZORDERCHANGEMODEL->ORDERCHANGE_history.
append initial line to ZORDERCHANGEMODEL->ORDERCHANGE_history.
loop at ZORDERCHANGEMODEL->ORDERCHANGE_history assigning <usr_tab>.
<usr_tab>-icons = '/sap/bc/bsp/sap/srmsus/images/order/ok-grau.gif'.
<usr_tab>-cancel = '/sap/bc/bsp/sap/srmsus/images/order/cancel-grau.gif'.
<usr_tab>-bname = 'history'.
endloop.
create object ZORDERCHANGEMODEL->io_iterator.
ZORDERCHANGEMODEL->io_iterator->request = request.
endif.
endmethod.
- 2. DO_REQUEST
method DO_REQUEST.
*CALL METHOD SUPER->DO_REQUEST
* .
me->DISPATCH_INPUT( ).
data: lo_view type ref to if_bsp_page.
lo_view = create_view( view_name = '../order/order_change_response.inc' ).
lo_view->set_attribute( name = 'zmodel' value = ZORDERCHANGEMODEL ).
call_view( lo_view ).
endmethod.
- 3. DO_HANDLE_EVENT
method DO_HANDLE_EVENT.
*CALL METHOD SUPER->DO_HANDLE_EVENT
* EXPORTING
* EVENT =
* HTMLB_EVENT =
** HTMLB_EVENT_EX =
* GLOBAL_MESSAGES =
* RECEIVING
* GLOBAL_EVENT =
* .
data lr_tableview type ref to CL_HTMLB_TABLEVIEW.
lr_tableview ?= cl_htmlb_manager=>get_data(
request = me->request
id = 'zorder.cuschanged_t2'
name = 'tableView' ).
IF NOT LR_TABLEVIEW IS INITIAL.
IF LR_TABLEVIEW->DATA->SERVER_EVENT = 'onCellClick'
AND LR_TABLEVIEW->DATA->ID = 'zorder.cuschanged_t2'
AND LR_TABLEVIEW->DATA->NAME = 'tableView'
AND LR_TABLEVIEW->DATA->COLUMN_KEY = 'ICONS'
AND LR_TABLEVIEW->DATA->COLUMN_INDEX > 0
AND LR_TABLEVIEW->DATA->ROW_INDEX > 0.
field-symbols: <usr_tab> type zusr02,
<usr_cancel> type zusr02.
data usr_tab type zusr02.
IF ZORDERCHANGEMODEL->HISTORY_SHOW = ''.
read table ZORDERCHANGEMODEL->ORDERCHANGE index LR_TABLEVIEW->DATA->ROW_INDEX assigning <usr_tab>.
ELSE.
read table ZORDERCHANGEMODEL->ORDERCHANGE_history index LR_TABLEVIEW->DATA->ROW_INDEX assigning <usr_tab>.
endif.
if <usr_tab>-icons = '/sap/bc/bsp/sap/srmsus/images/order/ok.gif'.
<usr_tab>-icons = '/sap/bc/bsp/sap/srmsus/images/order/ok-grau.gif'.
else.
<usr_tab>-icons = '/sap/bc/bsp/sap/srmsus/images/order/ok.gif'.
<usr_tab>-cancel = '/sap/bc/bsp/sap/srmsus/images/order/cancel-grau.gif'.
endif.
ENDIF.
IF LR_TABLEVIEW->DATA->SERVER_EVENT = 'onCellClick'
AND LR_TABLEVIEW->DATA->ID = 'zorder.cuschanged_t2'
AND LR_TABLEVIEW->DATA->NAME = 'tableView'
AND LR_TABLEVIEW->DATA->COLUMN_KEY = 'CANCEL'
AND LR_TABLEVIEW->DATA->COLUMN_INDEX > 0
AND LR_TABLEVIEW->DATA->ROW_INDEX > 0.
IF ZORDERCHANGEMODEL->HISTORY_SHOW = ''.
read table ZORDERCHANGEMODEL->ORDERCHANGE index LR_TABLEVIEW->DATA->ROW_INDEX assigning <usr_tab>.
ELSE.
read table ZORDERCHANGEMODEL->ORDERCHANGE_history index LR_TABLEVIEW->DATA->ROW_INDEX assigning <usr_tab>.
endif.
if <usr_tab>-cancel = '/sap/bc/bsp/sap/srmsus/images/order/cancel.gif'.
<usr_tab>-cancel = '/sap/bc/bsp/sap/srmsus/images/order/cancel-grau.gif'.
else.
<usr_tab>-cancel = '/sap/bc/bsp/sap/srmsus/images/order/cancel.gif'.
<usr_tab>-icons = '/sap/bc/bsp/sap/srmsus/images/order/ok-grau.gif'.
endif.
endif.
ENDIF.
if not htmlb_event is initial.
if HTMLB_EVENT->SERVER_EVENT = 'onhistoryclick'.
ZORDERCHANGEMODEL->HISTORY_SHOW = 'X'.
elseif HTMLB_EVENT->SERVER_EVENT = 'onprocessclick'.
ZORDERCHANGEMODEL->HISTORY_SHOW = ''.
endif.
endif.
endmethod.
- 4. View
<%@page language="abap" otrTrim="true" %>
<%@extension name="htmlb" prefix="htmlb" %>
<%@extension name="SRMSUS" prefix="sus" %>
<%@extension name="xhtmlb" prefix="xhtmlb" %>
<%
INCLUDE bbp_sus_ui_const.
%>
<!-- messages controller -->
<%@include file="framework/carrier_view_message.inc" %>
<htmlb:tray id = "orderchange"
title = "Order Change Response"
width = "100%">
<htmlb:gridLayout id = "GR_RPT_Query"
rowSize = "3"
columnSize = "1"
cellSpacing = "10"
width = "100%">
<htmlb:gridLayoutCell rowIndex = "1"
columnIndex = "1"
width = "100%" >
<% if zmodel->history_show <> 'X'. %>
<td align = "right">
<htmlb:link id="history"
text="history"
onClick="onhistoryclick"
></htmlb:link>
</td>
<% else. %>
<td align = "right">
<htmlb:link id="inprocess"
text="inprocess"
onClick="onprocessclick"
></htmlb:link>
</td>
<% endif.%>.
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCell rowIndex = "2"
columnIndex = "1"
width = "100%" >
<% if zmodel->history_show <> 'X'. %>
<htmlb:tableView id="t2"
emptyTableText = "<%= otr(BBP_SUS_UI/LIST_ORDER_NO_ENTRIES_FOUND) %>"
sort = "SERVER"
onHeaderClick = "onmyHeaderClick"
onNavigate = "onMyNavigate"
onRowSelection = "onMyRowSelection"
visibleRowCount = "10"
visibleFirstRow = "1"
iterator = "<%=zmodel->io_iterator%>"
table="//zmodel/ORDERCHANGE">
<htmlb:tableViewColumn columnName="ICONS"
onCellClick="onCellClick"
width="5"
></htmlb:tableViewColumn>
<htmlb:tableViewColumn columnName="CANCEL"
onCellClick="onCellClick"
width="5"
></htmlb:tableViewColumn>
<htmlb:tableViewColumn columnName="BNAME"
onCellClick="onCellClick"
title="BNAME"
></htmlb:tableViewColumn>
</htmlb:tableView>
<% else. %>
<htmlb:tableView id="t2"
emptyTableText = "<%= otr(BBP_SUS_UI/LIST_ORDER_NO_ENTRIES_FOUND) %>"
sort = "SERVER"
onHeaderClick = "onmyHeaderClick"
onNavigate = "onMyNavigate"
onRowSelection = "onMyRowSelection"
visibleRowCount = "10"
visibleFirstRow = "1"
iterator = "<%=zmodel->io_iterator%>"
table="//zmodel/ORDERCHANGE_HISTORY">
<htmlb:tableViewColumn columnName="ICONS"
onCellClick="onCellClick"
width="5"
></htmlb:tableViewColumn>
<htmlb:tableViewColumn columnName="CANCEL"
onCellClick="onCellClick"
width="5"
></htmlb:tableViewColumn>
<htmlb:tableViewColumn columnName="BNAME"
onCellClick="onCellClick"
title="BNAME"
></htmlb:tableViewColumn>
</htmlb:tableView>
<% endif.%>.
</htmlb:gridLayoutCell>
<htmlb:gridLayoutCell rowIndex = "3"
columnIndex = "1"
width = "100%" >
<htmlb:button id="update"
text = "Update"
onClick = "onupdateclick"
/>
</htmlb:gridLayoutCell>
</htmlb:gridLayout>
</htmlb:tray>
- 5. Page attributes
zmodel TYPE REF TO ZCL_SUS_C_ORDER_CHANGE_MODEL
- 6. Controller attributes
ZORDERCHANGEMODEL Instance Attribute Public Type Ref ToZCL_SUS_C_ORDER_CHANGE_MODEL
HISTORY_SHOW Instance Attribute Public Type CHAR1
- 7. Model ZCL_SUS_C_ORDER_CHANGE_MODEL
Attributes:
ORDERCHANGE Instance Attribute Public Type ZTESTUSR01
IO_ITERATOR Instance Attribute Public Type Ref To ZCL_SUS_C_ORD_C_ITERATOR
ORDERCHANGE_HISTORY Instance Attribute Public Type ZTESTUSR01
HISTORY_SHOW Instance Attribute Public Type CHAR1
- 8. ITERATOR ZCL_SUS_C_ORD_C_ITERATOR
Interface IF_HTMLB_TABLEVIEW_ITERATOR
Attributes:
M_ROW_REF Instance Attribute Public Type Ref To ZUSR02
REQUEST Instance Attribute Public Type Ref To IF_HTTP_REQUEST
method IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_ROW_START.
m_row_ref ?= p_row_data_ref.
endmethod.
method IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START.
data lr_tableview type ref to CL_HTMLB_TABLEVIEW.
* lr_tableview ?= cl_htmlb_manager=>get_data(
* request = request
* id = 't2'
* name = 'tableView' ).
field-symbols <icons_name> type char50.
field-symbols:
<ls_data> type any,
<ls_icons> type any,
<ls_kyfs> type any.
DATA: icon_plane TYPE STRING.
CASE p_column_key.
WHEN 'CANCEL'.
ASSIGN P_ROW_DATA_REF->* to <ls_data>.
assign component 'CANCEL' of structure <ls_data> TO <ls_icons>.
icon_plane = <ls_icons>.
p_replacement_bee = CL_HTMLB_IMAGE=>FACTORY( id = p_cell_id src = icon_plane ).
WHEN 'ICONS'.
ASSIGN P_ROW_DATA_REF->* to <ls_data>.
assign component 'ICONS' of structure <ls_data> TO <ls_icons>.
icon_plane = <ls_icons>.
p_replacement_bee = CL_HTMLB_IMAGE=>FACTORY( id = p_cell_id src = icon_plane ).
WHEN 'BNAME'.
ASSIGN P_ROW_DATA_REF->* to <ls_data>.
assign component 'BNAME' of structure <ls_data> TO <ls_icons>.
icon_plane = <ls_icons>.
p_replacement_bee = CL_HTMLB_TEXTVIEW=>FACTORY( id = p_cell_id text = icon_plane ).
ENDCASE.
endmethod.
转:http://blog.chinaunix.net/uid-465882-id-2115966.html
SAP web 开发 (第二篇 bsp 开发 mvc模式 Part2 )的更多相关文章
- SAP web 开发 (第二篇 bsp 开发 mvc模式 Part1 )
Model-View-Controller 简称MVC. 简单的说就是把数据处理,显示,页面事件及处理过程分离开来,企业应用多数都采用这种方式,多层架构的优缺点不再多言,google一下啥都知道. 在 ...
- 第二篇 界面开发 (Android学习笔记)
第二篇 界面开发 第5章 探索界面UI元素 ●The Android View Class ●△Widget设计步骤 需要修改三个XML,以及一个class: 1)第一个xml是布局XML文件 ...
- iOS开发——高级技术精选&底层开发之越狱开发第二篇
底层开发之越狱开发第二篇 今天项目中要用到检查iPhone是否越狱的方法. Umeng统计的Mobclick.h里面已经包含了越狱检测的代码,可以直接使用 /*方法名: * isJailbroken ...
- iOS开发UI篇—iOS开发中三种简单的动画设置
iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n 新建项目 cmd + n 新建文 ...
- iOS开发UI篇—iPad开发中得modal介绍
iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...
- android 串口开发第二篇:利用jni实现android和串口通信
一:串口通信简介 由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以 ...
- Web开发的分层结构与MVC模式
1.分层结构 所谓分层结构.把不同的功能代码封装成类,把相同功能的类封装在一个个的包中,也叫层.功能归类如下: 实体类: 封装数据,是数据的载体,在层与层之间进行传递,数据也就传递了.比如说要传递学生 ...
- 微信支付之JSAPI开发-第二篇:业务流程详解与方案设计
微信支付流程 流程: 上图的网址为:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4 如上图所示,微信网页支付的具体流程大致分为 ...
随机推荐
- MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用
摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识. 第二阶段11-20篇将会侧重于专题的讲解,一篇文章解决一个实际问题. 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解. 文 ...
- CentOS7安装memcached
三台linux服务器系统CentOS7 一台memcached IP:192.168.155.134 一台Apache IP:192.168.155.130 一台nginx IP:192.168.15 ...
- CentOS install GCC-4.8.5
1. 下载源码:http://ftp.gnu.org/gnu/gcc 2. cd gcc-4.8.5 ./contrib/download_prerequisites //下载资源包 3. ...
- crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
crawler4j是用Java实现的开源网络爬虫.提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫.下面实例结合jsoup解析网页,javacsv存储采集数据:采集自如ziroom租房网(h ...
- [问题2014A06] 复旦高等代数 I(14级)每周一题(第八教学周)
[问题2014A06] 若 \(n\) 阶实方阵 \(A\) 满足 \(AA'=I_n\), 则称为正交矩阵. 证明: 不存在 \(n\) 阶正交矩阵 \(A,B\) 满足 \(A^2=cAB+B^ ...
- Android 坐标系统
屏幕的左上角是坐标系统原点(0,0),原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向. 一.View的坐标 需要注意view的坐标是相对父容器而言的,包括:getTop().getBott ...
- pycharm上运行django服务器端、ip地址访问
安装Django 下载Django包,解压缩. CMD 进入解压路径下. 执行:python setup.py install 增加环境变量: C:\Python27\Scripts 测试djang ...
- REST 架构风格
目前基于网络应用的架构风格主要有三种: RPC架构风格 将服务器看作是由一些过程组成,客户端调用这些过程来执行特定的任务.SOAP就是RPC风格的一种架构.过程是动词性的(做某件事),因此RPC建 ...
- 翻译:打造基于Sublime Text 3的全能python开发环境
原文地址:https://realpython.com/blog/python/setting-up-sublime-text-3-for-full-stack-python-development/ ...
- 转:C++中的单例模式
C++中的单例模式 单例模式也称为单件模式.单子模式,可能是使用最广泛的设计模式.其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享.有很多地方需要这样的功能模块, ...