2017-06-09 325 views
0

所以我通过Screen Painter(SE51)添加了一个下拉类型为Listbox的字段。下拉式SAP ABAP

我已经使用PBO和VRM_SET_VALUES函数将数据绑定到下拉列表中。

enter image description here

我有2个问题,这一点;

  1. 如何将选定值设置为绑定数据?
  2. 如何获取用户选择的值。

使用以下代码将数据绑定到下拉列表中;

LOOP AT it_zzdelay_text INTO wa_zzdelay_text. 
 
    wa_listbox-key = wa_zzdelay_text-zz_delay_reason. 
 
    wa_listbox-text = wa_zzdelay_text-zz_delay_reason_text. 
 
    APPEND wa_listbox TO it_listbox. 
 
    ENDLOOP. 
 

 
    CALL FUNCTION 'VRM_SET_VALUES' 
 
    EXPORTING 
 
     id  = 'ZZ_DELAY_REASON' 
 
     values = it_listbox.

zz_delay_reason是唯一的关键和zz_delay_reason_text是附带的文本。

+0

只需使用用于定义屏幕字段变量...?没有一些代码,我们将无法提供更多建议...... – vwegert

+0

@vwegert ay的想法?我不得不求助于创建搜索帮助来解决这个问题。希望通过正确实施下拉控制器来正确实现 – Isuru

+0

现在的主要想法是:“提供一个完整的示例,而不仅仅是一些随机代码片段。”我既没有时间也没有精力来进行精细的猜测。 – vwegert

回答

0

更新:

根据你的代码,屏幕上的字段应为ZZ_DELAY_REASON 而且你还需要与名称的全局变量。

然后您可以在PBO/PAI中设置/获取密钥值: 设置值: ZZ_DELAY_REASON ='KEY'。

获取选定值(键): lv_key = ZZ_DELAY_REASON

=============================== =======================

当选择列表由VRM_SET_VALUES设置时,您可能会注意到它是“Key-Value”对。当用户选择投递箱时,字段“KEY”填充到屏幕字段值中。

如果您在此问题中附上您的代码,我可以提供详细信息。

+0

hi @ terence4444,我已经添加了用于将数据绑定到下拉控制器的代码。 – Isuru

+0

@Isuru答复已更新。 – terence4444

0

首先,有几个先决条件得到满足,使功能下拉:

  1. 你项目表应该有在列表中显示,应在现场textvrm_values
  2. 值项目行。密钥应在key的字段中。
  3. 参数应该有型号LISTBOX

毕竟做到这一点,你的问题的答案将是:键值的

  1. 关系是通过vrm_values类型来完成。这种类型的每一行都是一个下拉菜单项,其中text是可见文本,而key是关键。
  2. 在用户选择列表框中的项目后,参数自动获取键值。

下面是示例代码:

REPORT drop-down. 

TYPE-POOLS: vrm. 

PARAMETERS p_werks LIKE t001w-werks VISIBLE LENGTH 20 AS LISTBOX OBLIGATORY. 

DATA: t_werks TYPE vrm_values, 
w_line LIKE LINE OF t_werks. 

INITIALIZATION. 

SELECT werks name1 
    FROM t001w INTO (w_line-key, w_line-text). 
APPEND w_line TO t_werks. 
ENDSELECT. 

AT SELECTION-SCREEN OUTPUT. 

CALL FUNCTION 'VRM_SET_VALUES' 
EXPORTING 
id = 'P_WERKS' 
values = t_werks. 

END-OF-SELECTION. 

WRITE:/'Selected factory:', p_werks.