WebDynpro开发-03 创建一个WebDynpro物料代码查询页面

=>标准示例包:SWDP_TEST

  • WD UML
    UML
  • Runtime Interface/Class
    运行时   Class/Interface描述
    IF_WD_ACTION此接口用于获取视图控制器中的Action
    IF_WD_APPLICATION此接口功能用于获取设备的配置信息当前正在执行的WDA应用程序及其周围环境客户端环境
         我们可以用这个界面来调整应用程序主窗口的标题,确定用户代理等等
    IF_WD_COMPONENT此接口为我们提供了访问WDA所有对象的可能
         运行时的视角
         可通过 WD_GET_API() 获取对象引用
    IF_WD_CONTROLLER此接口提供了一个控制器,可以访问各种element包含在其中的元素(Action   Context)
         还可以用于访问外部资源,消息管理器 控制器和组件(通过接口I F_WD_COMPONENT)
    IF_WD_MESSAGE_MANAGER此接口提供了各种允许我们编写的方法,发送消息显示到UI中消息区域
    IF_WD_VIEW此接口提供了所有与视图交互的功能
    IF_WD_WINDOW此接口提供了所有与窗口交互的功能,OPEN() CLOSE()
    IF_WD_WINDOW_MANAGER此接口用于窗口的管理
  • Service Interface/Class
    服务   Class/Interface描述
    CL_WD_CONTEXT_SERVICES此类用于监视上下文节点的变化
    CL_WD_DYNAMIC_TOOL此类提供了各种帮助方法来简化Web Dynpro   中的动态编程任务,比如:检查UI 元素输入值
    CL_WD_COMPONENT_ASSISTANCE此抽象类定义了辅助类的核心功能
    CL_WD_RUNTIME_SERVICES此类提供了一些实用方法,可与 Web Dynpro   运行时环境交互
    CL_WD_UTILITIES此类提供了一些通用的 Web Dynpro实用的方法
    CL_WD_TRACE_TOOL
    IF_WD_TRACE_TOOL
    CL_WD_TRACE_TOOL 类用于将数据添加到Web Dynpro Trace Tool生成的跟踪文件
    访问此功能,我们必须引用该类的静态实例属性,类型为IF_WD_TRACE_TOOL
    CL_WEB_DYNPRO使用此类的静态 IS_ACTIVE   属性可以确定我们正在运行的代码是否在启动Web Dynpro 运行时环境中

第一步:创建一个Webdynpro组件

  • 运行Tcode:SE80,新建Web Dynpro组件(接口)
    1

第二步:新建一个视图用于显示数据

  • 新建一个视图VIEW_INFORMATION
    2

第三步:Component Controller上创建全局Context

  • 创建Node:Context页签右键单击 Create->Node
    3
    4
  • 节点MATNR_SELECTION创建选择屏幕字段:右键单击节点 Create->Attribute
    5
  • 节点MATNR_INFORMATION创建显示屏幕结构:使用向导添加结构Attribute到Node
    6
    7
    8

第四步:Mapping Controller Context到View Context

  • 视图:VIEW_SELECTION
    9
  • 视图:VIEW_INFORMATION
    10

第五步:配置视图VIEW_SELECTION的Layout

  • 设置UI Container属性
    11
    12
  • UI Container中插入Element
    13
    • ID: MATNR_TEXT TYPE: Label
      14

    • ID: MATNR TYPE: INPUT FIELD
      15
      16

    • ID: BTN_SEARCH TYPE: Button
      17

  • MATNR_TEXT设置Labelfor
    18

第六步:配置视图VIEW_INFORMATION的Layout

  • 设置UI Container属性
    19
    20

  • UI Container中插入Element、

    • ID: BTN_BACK TYPE: Button
      21
  • 使用向导UI Container中插入Element
    22

    • Mapping to View Context
      23

    • Banding Property
      24

第七步:配置视图Inbound Plugs Outbound Plugs

  • 创建视图的Inbound Plugs Outbound Plugs
    • VIEW_SELECTION->Inbound Plugs
      25
    • VIEW_SELECTION->Outbound Plugs
      26
    • VIEW_INFORMATION->Inbound Plugs
      27
    • VIEW_INFORMATION->Outbound Plugs
      28
  • Mapping Plugs
    • 嵌入视图
      29
      30
    • Mapping Plugs
      31
      32

第八步:在Component Controller上创建实现全局取数方法

  • 新建Method:GET_MATNR_INFO
    33
  • 实现方法(注意SAP禁止在Controller上使用Select语法;虽然这不是强制性的,但是十分影响性能;所以应该专门写一个Class或者FM来进行取数
    34
      DATA: lo_node    TYPE REF TO if_wd_context_node,
            lo_element TYPE REF TO if_wd_context_element,
            lv_matnr   TYPE matnr.
    
      DATA: ls_mara TYPE mara.
    
      "read matnr_selection Context
      lo_node = wd_context->get_child_node( name = wd_this->wdctx_matnr_selection ).
    
      "read attribute
      lo_element = lo_node->get_element( ).
      lo_element->get_attribute( EXPORTING name = `MATNR` IMPORTING value = lv_matnr ).
    
      "query data
      SELECT * FROM mara INTO ls_mara
        WHERE matnr = lv_matnr.
      ENDSELECT.
    
      "read matnr_information Context
      lo_node = wd_context->get_child_node( name = wd_this->wdctx_matnr_information ).
    
      "read attribute
      lo_element = lo_node->get_element( ).
    
      lo_element->set_static_attributes( ls_mara ).
    

第九步:设置Button Action

  • BTN_SEARCH
    35
    35

    • BTN_SEARCH中实现检查UI元素元数据检查
      36
      37
        DATA lo_api_controller TYPE REF TO if_wd_view_controller.
        DATA lo_action         TYPE REF TO if_wd_action.
      
        lo_api_controller = wd_this->wd_get_api( ).
        lo_action = lo_api_controller->get_current_action( ).
      
        IF lo_action IS BOUND.
          CASE lo_action->name.
            WHEN 'SEARCH'.
              "动态值检查 PAI
              cl_wd_dynamic_tool=>check_mandatory_attr_on_view(
                EXPORTING
                  view_controller = lo_api_controller ).
          ENDCASE.
        ENDIF.
      
  • BTN_BACK
    36
    37

    • VIEW_INFORMATION中Inbound Plugs Handle实现取数逻辑
      38
      39

      wd_comp_controller->get_matnr_info( ).
      

第十步:测试

  • 创建WebDynpro application Program
    40
  • 查询
    41
    42
  • 返回再次查询
    43
  • WD Context属性
    44
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值