单击第一个图标,第一个图标突出显示,单击第二个图标,第一个变灰,第二个突出显示,反之一样。单击history读取历史记录。

Controller ZCL_SUS_C_ORDER_CHANGE

  1. 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.

  1. 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.

  1. 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.

  1. 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>

  1. 5.    Page attributes

zmodel TYPE REF TO    ZCL_SUS_C_ORDER_CHANGE_MODEL

  1. 6.    Controller attributes

ZORDERCHANGEMODEL     Instance Attribute  Public   Type Ref ToZCL_SUS_C_ORDER_CHANGE_MODEL

HISTORY_SHOW     Instance Attribute  Public   Type     CHAR1

  1. 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

  1. 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 )的更多相关文章

  1. SAP web 开发 (第二篇 bsp 开发 mvc模式 Part1 )

    Model-View-Controller 简称MVC. 简单的说就是把数据处理,显示,页面事件及处理过程分离开来,企业应用多数都采用这种方式,多层架构的优缺点不再多言,google一下啥都知道. 在 ...

  2. 第二篇 界面开发 (Android学习笔记)

    第二篇 界面开发 第5章 探索界面UI元素 ●The Android View Class     ●△Widget设计步骤 需要修改三个XML,以及一个class: 1)第一个xml是布局XML文件 ...

  3. iOS开发——高级技术精选&底层开发之越狱开发第二篇

    底层开发之越狱开发第二篇 今天项目中要用到检查iPhone是否越狱的方法. Umeng统计的Mobclick.h里面已经包含了越狱检测的代码,可以直接使用 /*方法名: * isJailbroken ...

  4. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  5. iOS开发UI篇—IOS开发中Xcode的一些使用技巧

    iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文 ...

  6. iOS开发UI篇—iPad开发中得modal介绍

    iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...

  7. android 串口开发第二篇:利用jni实现android和串口通信

    一:串口通信简介 由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以 ...

  8. Web开发的分层结构与MVC模式

    1.分层结构 所谓分层结构.把不同的功能代码封装成类,把相同功能的类封装在一个个的包中,也叫层.功能归类如下: 实体类: 封装数据,是数据的载体,在层与层之间进行传递,数据也就传递了.比如说要传递学生 ...

  9. 微信支付之JSAPI开发-第二篇:业务流程详解与方案设计

    微信支付流程 流程: 上图的网址为:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4 如上图所示,微信网页支付的具体流程大致分为 ...

随机推荐

  1. python基本数据类型之集合set

    一.集合的定义 set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数 ...

  2. [ASM C/C++] C makefile:2: *** missing separator. Stop. 问题

    在利用make编译代码时,makefile文件的目标代码前面要用tab而不能用空格来代替. 要不然就会提示: makefile:2: *** missing separator.  Stop. 要注意 ...

  3. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  4. 【C++/Qt】Qt中的parent形参

    在 派生类的构造函数初始化列表中 调用 父类的带有参数的构造函数,是为了初始化从父类继承来的成员变量.因为这些变量无法直接初始化,只能采用这种方式初始化. 而在qt中,MainWindow中的某成员变 ...

  5. [问题2014S09] 解答

    [问题2014S09]  解答 充分性:  先证明对 Jordan 块 \(J_r(1)\) 以及任意的正整数 \(m\), 均有 \(J_r(1)^m\) 相似于 \(J_r(1)\). 设 \(N ...

  6. 从零开始学iPhone开发(3)——视图及控制器的使用

    上一节我们分别使用IB和代码建立了两个视图并且熟悉了一些控件.这一节我们需要了解视图和视图的切换. 在iOS编程中,框架提供了很多视图,比如UIView,UIImageView, UIWebView等 ...

  7. Java中byte与16进制字符串的互相转换

    * Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串. * @param s ...

  8. GC overhead limit exceeded填坑心得

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

  9. Bootstrap3.0学习教程十七:JavaScript插件模态框

    这篇文章中我们主要来学习一下JavaScipt插件模态框.在学习模态框之前,我们先来了解一下JavaScript插件吧. JavaScript插件概览 插件可以单个引入(使用Bootstrap提供的单 ...

  10. ROS实际问题解决方法

    1.建立软链接 在路径cd /etc/udev/rules.d中,建立例如50-rfid.rules的文件,它会根据文件名之前的50 51等判断优先级,50的优先级就大于51 如:  KERNEL== ...