zoukankan      html  css  js  c++  java
  • WDA学习(12):Using an ALV Table with Dynamic Context Nodes

    2.4 Using an ALV Table with Dynamic Context Nodes

       本实例展示如何使用ALV TABLE展示动态的上下文节点。

    1.创建Web Dynpro Component,Z_TEST_WDA7

     

     2.设置MAIN视图组件

    Context页签

    创建INPUT节点,创建Attribute:TABNAME,保存用户输入的表名。

     

     Layout页签:

    创建视图控件Group,ID:GP1,设置CAPTION的属性text:”input table name”;

    创建视图控件INPUT,ID:INPUT1;

    创建视图控件LABEL,ID:LABEL1,设置labelFor属性:INPUT1;设置text属性:”Name of DDIC Table”;

    创建视图控件BUTTON,ID:BTN1;

    创建视图控件ViewContainerUIElement,ID:VIEW1;

     

     设置INPUT视图控件绑定Context上下文的TABNAME

     

     设置BUTTON视图控件,设置onAction;

     

     我们在用户输入TableName之前,不知道表的结构,在设计时间不能创建固定的Context节点,需要使用代码动态创建Context节点。

    Methods页签

    实现ONACTIONSHOW方法;

    代码实例:

    method ONACTIONSHOW .
      "node info对象
      DATA:root_node_info TYPE REF TO if_wd_context_node_info.
      "node对象
      DATA:lo_node TYPE REF TO if_wd_context_node.
      "table name
      DATA:lr_tabname TYPE string.
    
      "动态表结构对象
      DATA:struc_tab TYPE REF TO data.
      FIELD-SYMBOLS:<tab> TYPE table.
    
      "获取node info
      root_node_info = wd_context->get_node_info( ).
      "获取INPUT节点
      lo_node = wd_context->get_child_node( name = 'INPUT' ).
      "获取TABNAME值
      lo_node->get_attribute(
        EXPORTING name = 'TABNAME'
        IMPORTING value = lr_tabname ).
      "转换为大写
      TRANSLATE lr_tabname TO UPPER CASE.
    
      "创建动态节点
      cl_wd_dynamic_tool=>create_nodeinfo_from_struct(
        parent_info = root_node_info
        node_name = lr_tabname
        structure_name = lr_tabname
        is_multiple = abap_true
      ).
    
      "创建数据表结构
      CREATE DATA struc_tab TYPE TABLE OF (lr_tabname).
      ASSIGN struc_tab->* TO <tab>.
    
      "查询数据
      SELECT * INTO CORRESPONDING FIELDS OF TABLE <tab> FROM (lr_tabname).
    
      "获取节点
      lo_node = wd_context->get_child_node( name = lr_tabname ).
      lo_node->bind_table( <tab> ).
    endmethod.

    3.选择Z_TEST_WDA7,Component组件,声明Component Use,使用ALV组件

     

    在MAIN视图组件的Properties页签,

    在Used Controllers/Components中声明使用ALV组件

     在MAIN视图组件的Methods页签,

    点击魔术棒,初始化Used Component

     

     代码实例:

    "获取ALV组件,设置数据
      DATA:lo_cmp_usage type ref to if_wd_component_usage.
      lo_cmp_usage =   wd_this->wd_cpuse_alv( ).
      if lo_cmp_usage->has_active_component( ) is initial.
        lo_cmp_usage->create_component( ).
      endif.

    点击魔术棒,生成代码调用Used Controller:ALV的SET_DATA方法。

     

    代码实例:

    "通过ALV,Controller的接口,调用set_data方法设置alv显示节点数据
      DATA:lo_INTERFACECONTROLLER TYPE REF TO IWCI_SALV_WD_TABLE .
      lo_INTERFACECONTROLLER = wd_this->wd_cpifc_alv( ).
      lo_interfacecontroller->set_data(
    *     only_if_new_descr =                 " wdy_boolean
        r_node_data = lo_node    " ref to if_wd_context_node
      ).

    4.设置Window显示ALV

     

     5.创建Web Dynpro Application,测试;

     

  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/tangToms/p/12898924.html
Copyright © 2011-2022 走看看