SAP web 开发 (第二篇 bsp 开发 mvc模式 Part2 )

单击第一个图标,第一个图标突出显示,单击第二个图标,第一个变灰,第二个突出显示,反之一样。单击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

转载于:https://www.cnblogs.com/goodsmith/p/4482527.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cuda内存总结

&#xff11;&#xff0e;shared memory __shared__ 声明为共享内存&#xff0c;将会保存在共享内存中 &#xff12;&#xff0e;constant memory __constant__ 声明为常量内存&#xff0c;将会保存在常量内存中&#xff0c;常量内存是只读内存&#xff0c;声明时要静态的分配…

平衡二叉查找树插入节点操作( AVLTree ):旋转、调整平衡

AVL树的插入 在向一棵本来高度平衡的AVL树中插入一个新节点时&#xff0c;如果树中某个结点的平衡因子的绝对值 > 1&#xff0c;则出现了不平衡。设新插入结点为P&#xff0c;从结点P到根节点的路径上&#xff0c;每个结点为根的子树的高度都可能增加1&#xff0c;因此在每…

Fork/Join框架介绍

转http://www.infoq.com/cn/articles/fork-join-introduction/ 1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架&#xff0c; 是一个把大任务分割成若干个小任务&#xff0c;最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和…

为什么析构函数可以能声明为虚函数,构造函数不可以

转自&#xff1a;http://blog.csdn.NET/chen825919148/article/details/8020550 构造函数不能声明为虚函数&#xff0c;析构函数可以声明为虚函数&#xff0c;而且有时是必须声明为虚函数。 不建议在构造函数和析构函数里面调用虚函数。 构造函数不能声明为虚函数的原因是: 1 …

【DFS】NYOJ-325-zb的生日

【题目链接&#xff1a;NYOJ-325】 一道以我名字命名的题目&#xff0c;难道要我生日的时候再A&#xff1f; 思路&#xff1a;依旧深搜&#xff0c;但这个问题应该有一个专有名词吧&#xff0c;看别的博客说是 “容量为 sum/2 的背包问题”&#xff0c;不懂。。。 1 // abs() …

Ubuntu Sudo 无法解析的主机

如果对ubuntu在安装时候的主机名称不满意&#xff0c;可以使用如下的方法进行修改 需要注意的是如果只修改其中一个&#xff0c;使用sudo的时候会报“无法解析主机名称的”错误 1、进入etc目录&#xff0c;使用cat查看hosts文件 alloyubuntu:/etc$ cat hosts -n 1 127.0.0.1 …

信号集操作函数,信号未决、阻塞、递达

转载&#xff1a;信号集操作函数&#xff0c;信号阻塞与未决 一&#xff0c;信号集及相关操作函数 信号集被定义为一种数据类型&#xff1a; typedef struct { unsigned long sig[_NSIG_WORDS]&#xff1b; } sigset_t 信号集用来描述信号的集合&#xff0c;每个信号占用一位&a…

管道(Pipe)/createPipe

BOOL CreatePipe(PHANDLE hReadPipe, // 指向读句柄的指针 PHANDLE hWritePipe, // 指向写句柄的指针 LPSECURITY_ATTRIBUTES lpPipeAttributes, // 指向安全属性的指针 DWORD nSize // 管道大小); 管道&#xff08;Pipe&#xff09;实际是用于进程间通信的一段共享内存&…

linux输出文字的颜色特效

有关文字颜色及背景色可以参考&#xff1a;man console_codes-e 用来开启echo中的转义\e 或 \033 来输出Esc符号设置颜色的格式&#xff1a; \e[背景色;前景色;高亮m \033[背景色;前景色;高亮m恢复默认为 \e[0m其中背景色可以被以下数字替换第一个参数&#xff1…

互斥锁和自旋锁分别适用于什么样的业务场景

在多线程并发环境中&#xff0c;当某段代码被多个线程并发执行会导致数据不一致的情况出现时&#xff0c;我们就需要对这段代码加锁以保证线程安全了&#xff0c;我们可以对它施加互斥锁或者自旋锁&#xff0c;具体根据这段代码的执行耗时来定。 互斥锁的特点是&#xff1a;一把…

线程安全和可重入函数的联系与区别

1、 线程安全&#xff1a; 线程安全是多线程访问时&#xff0c;采用了加锁机制&#xff0c;当一个线程访问该类的某个数据时&#xff0c;进行保护&#xff0c;其他线程不能进行访问直到该线程访问完&#xff0c;其他线程才可以使用。不会出现数据不一致或数据污染。 线程不…

C++11 多线程 基础

C11开始支持多线程编程&#xff0c;之前多线程编程都需要系统的支持&#xff0c;在不同的系统下创建线程需要不同的API如pthread_create()&#xff0c;Createthread()&#xff0c;beginthread()等&#xff0c;使用起来都比较复杂&#xff0c;C11提供了新头文件<thread>、…

LB负载均衡集群--LVS

LB集群&#xff1a;LB集群是load balance 集群的简写&#xff0c;翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、keepalived &#xff0c;商业的硬件负载设备F5、Netscale。LB集群架构&#xff1a;当用户的请求过来时&#xff0c;会直接发到分发器&#xf…

linux 信号处理函数详解

转自&#xff1a;http://blog.csdn.NET/sddzycnqjn/article/details/7285760 1. 信号概念 信号是进程在运行过程中&#xff0c;由自身产生或由进程外部发过来的消息&#xff08;事件&#xff09;。信号是硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示&#xff0…

2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索

邱老师降临小行星 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61Description 人赢邱老师和任何男生比&#xff0c;都是不虚的。有一天&#xff0c;邱老师带妹子(们)来到了一个N行M列平面的小行星。对于每一个着陆地点&#xf…

优化表的数据类型

我们可以使用PROCEDURE ANALYSE()对当前已有应用的表类型的判断&#xff0c;该函数可以对数据表中的列的数据类型提出优化建议&#xff0c;可以根据应用的实际情况酌情考虑是否实施优化。语法&#xff1a; SELECT * FROM tbl_name PROCEDURE ANALYSE(); SELECT * FROM tb…

Linux 信号之mysleep

一、 用alarm和pause实现sleep(3)函数,称为mysleep。 1. main函数调用mysleep函数,后者调用sigaction注册了SIGALRM信号的处理函数sig_alrm。 2. 调用alarm(seconds)设定闹钟。 3. 调用pause等待,内核切换到别的进程运行。 4. seconds秒之后,闹钟超时,内核发SIGALRM给这个…

JAVA 操作系统已经来到第五个版本了 现陆续放出三个版本 这是第二个版本

1 package System2;2 3 import javax.swing.*;4 5 import java.awt.*;6 import java.awt.event.ActionEvent;7 import java.awt.event.ActionListener;8 import java.awt.event.KeyListener;9 import java.util.*;10 /**11 * 作者:范铭祥12 * 内容及功能&#xff1a; 显示框…

标准Web系统的架构分层

1、架构体系分层图 在上图中我们描述了Web系统架构中的组成部分。并且给出了每一层常用的技术组件/服务实现。需要注意以下几点&#xff1a; 系统架构是灵活的&#xff0c;根据需求的不同&#xff0c;不一定每一层的技术都需要使用。例如&#xff1a;一些简单的CRM系统可能在产…

数据链路层差错检测:CRC(循环冗余检验)

1、循环冗余检验&#xff08;CRC&#xff09;&#xff1a; 在发送端&#xff0c;先把数据划分为祖&#xff0c;假定每组K个比特。现假定待传送的数据M 101001&#xff08;k6&#xff09;。CRC运算就是在数据M后面添加提供差错检测的n位冗余码&#xff0c;然后构成一个帧发送出…