Creating the Value Set for a DropDownByKey Element

Overview

When using a DropDownByKey or DropDownByIndex element, the set of possible values is available automatically only for context attributes having a data type with fixed values defined in the underlying domain. Here we show how to manually create the set of possible values when fixed values are not available in the data type’s domain.

Scenario

You want to create a DropDownByKey UI element for data element VSBED (Shipping Conditions) which has its possible values defined in check table TVSB.

Procedure

1.0 Create a Context Node

In the COMPONENTCONTROLLER, create a context node with cardinality 1..1 and selection 0..1. Then create the attribute VSBED, defined as follows.

vsbed_context.PNG

2.0 Populate the Attribute Value Set

In method WDDOINIT of the COMPONENTCONTROLLER, enter the following code to define the set of possible values for context attribute VSBED.

method WDDOINIT.
  DATA lo_nd_node TYPE REF TO if_wd_context_node.
  DATA lo_node_info TYPE REF TO if_wd_context_node_info.
  DATA lt_value_set TYPE wdr_context_attr_value_list.
* -- Bind value set for the DropDownByKey element
  lo_nd_node = wd_context->get_child_node( name = wd_this->wdctx_node ).
  lo_node_info = lo_nd_node->get_node_info( ).
  SELECT tvsb~vsbed  AS value
         tvsbt~vtext AS text
         FROM tvsb
         JOIN tvsbt ON tvsbt~vsbed = tvsb~vsbed
         INTO TABLE lt_value_set
         WHERE tvsbt~spras = sy-langu
         ORDER BY text.
  lo_node_info->set_attribute_value_set(
    EXPORTING
      name      = 'VSBED'
      value_set = lt_value_set
  ).
endmethod.

3.0 Create the DropDownByKey UI Element

Copy the context node from the COMPONENTCONTROLLER to the desired view. Now create a DropyDownByKey UI element and bind its selectedKey property to context attribute NODE.VSBED.

vsbed_dropdownbykey.PNG

Result

The value set for context attribute VSBED is populated upon initialization of the COMPONENTCONTROLLER and is displayed in the view’s DropDownByKey UI element.

vsbed_result.PNG

### 回答1: 在ROOT中创建直方图的代码如下: ``` #include <TH1D.h> #include <TCanvas.h> #include <TRandom.h> void histogram() { TH1D *h = new TH1D("h", "Example Histogram", 100, -4, 4); TRandom r; for (int i = 0; i < 10000; i++) { h->Fill(r.Gaus(0, 1)); } TCanvas *c = new TCanvas("c", "Example Histogram", 800, 600); h->Draw(); c->SaveAs("histogram.pdf"); } ``` 这段代码创建了一个名为"h"的1维直方图,包含了100个柱子,数据范围在-4到4之间。然后使用TRandom生成了10000个高斯分布的随机数,并将它们填入直方图。最后,创建了一个TCanvas,将直方图绘制到画布上,并将画布保存为PDF文件。 ### 回答2: 在ROOT中创建直方图的代码可以通过以下步骤实现: 首先,我们需要在程序中导入必要的文件以使用ROOT的相关功能。代码如下所示: ```cpp #include <TH1.h> #include <TCanvas.h> #include <TROOT.h> #include <TRandom.h> ``` 接下来,我们需要创建一个TCanvas对象,它将用于显示直方图。代码如下所示: ```cpp TCanvas *c1 = new TCanvas("c1", "Histogram", 800, 600); c1->SetFillColor(kWhite); ``` 然后,我们可以定义并填充直方图。在本例中,我们将使用随机数生成器来填充一个100个数的直方图。代码如下所示: ```cpp TH1F *histogram = new TH1F("histogram", "Example Histogram", 100, 0, 100); TRandom random; for (int i = 0; i < 100; i++) { double value = random.Gaus(50, 10); // 使用高斯分布生成随机数 histogram->Fill(value); } ``` 接下来,我们可以设置直方图的各种属性,例如标题、坐标轴名称和线条颜色等。代码如下所示: ```cpp histogram->SetTitle("Example Histogram"); histogram->GetXaxis()->SetTitle("x"); histogram->GetYaxis()->SetTitle("Counts"); histogram->SetLineColor(kBlue); ``` 最后,我们可以使用c1对象来在屏幕上绘制直方图。代码如下所示: ```cpp histogram->Draw(); c1->Update(); ``` 以上就是在ROOT中创建直方图的代码示例。你可以根据需要进一步修改和扩展此代码,以满足你的具体需求。 ### 回答3: 在ROOT中创建直方图的代码如下: ```cpp #include <TH1F.h> #include <TCanvas.h> void createHistogram() { // 创建一个直方图对象 TH1F *histogram = new TH1F("histogram", "Histogram", 100, 0, 10); // 向直方图中添加数据点 histogram->Fill(2); histogram->Fill(4); histogram->Fill(5); histogram->Fill(7); // 创建一个画布对象 TCanvas *canvas = new TCanvas("canvas", "Histogram Canvas", 800, 600); // 将直方图绘制在画布上 histogram->Draw(); // 显示画布 canvas->Draw(); } ``` 首先,我们使用`TH1F`类创建了一个名为`histogram`的直方图对象,它有100个bin,范围从0到10。然后,通过`Fill()`函数向直方图添加了数据点,这里添加了4个数据点:2、4、5和7。 接下来,我们创建了一个名为`canvas`的画布对象,它的尺寸为800x600像素。我们使用`Draw()`函数将直方图绘制在画布上,然后使用`Draw()`函数将画布显示出来。 这段代码实现了在ROOT中创建直方图的基本操作,你可以根据实际需求调整直方图的参数和数据点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值