• 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,测试;

     

  • 相关阅读:
    是什么阻止你达成人生的目标?
    安装cocoa pods
    Mac安装mysql
    Mac安装jee开发环境,webservice环境搭建
    Mac使用Github
    从一个app开始学iOS
    Macbook Pro开机黑屏了。
    U盘安装OSX
    数据分析有时候的结果并不令人满意
    vmvare fusion 8
  • 原文地址:https://www.cnblogs.com/tangToms/p/12898924.html
Copyright © 2020-2023  润新知