首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dynpro开始时选择特定的列表框值?

在Dynpro开始时选择特定的列表框值?
EN

Stack Overflow用户
提问于 2022-04-27 00:45:40
回答 1查看 382关注 0票数 1

我有一个自定义对话框dynpro,其中包括一个名为DYN_MATNR的输入字段作为列表框,我已经为其列出了一个特定材料列表作为选择。

当对话框dynpro打开时,我如何设置(列表中的)特定材料?

对话框的PBO:

代码语言:javascript
复制
  data lt_values type vrm_values.

  select  matnr,
          maktx
    into  table @data(lt_materials)
    from  makt
    where matnr in @so_matnr
      and spras = 'D'
    order by matnr.

  loop at lt_materials assigning field-symbol(<material>).
    append initial line to lt_values assigning field-symbol(<value>).
    <value>-key  = <material>-matnr.
    <value>-text = <material>-maktx.
  endloop.

  call function 'VRM_SET_VALUES'
    exporting
      id              = 'DYN_MATNR'
      values          = lt_values
    exceptions
      id_illegal_name = 1
      others          = 2.
  if sy-subrc <> 0.
    " ...
  endif.

这是可行的,它将材料列表显示为列表框值。为了选择一种特定的材料,我已经包括了FM DYNP_VALUES_UPDATE之后,也在PBO中,但这是行不通的:

代码语言:javascript
复制
  data lv_stepl type syst-stepl.

  call function 'DYNP_GET_STEPL'
    importing
      povstepl        = lv_stepl
    exceptions
      stepl_not_found = 1
      others          = 2.
  if sy-subrc <> 0.
    " ...
  endif.

  data(lt_dynpfields) = value dynpread_tabtype(
   ( fieldname  = 'DYN_MATNR'
     stepl      = lv_stepl
     fieldvalue = gcl_helper->get_matnr( ) " matnr which should be selected is stored here
     fieldinp   = space )
  ).

  call function 'DYNP_VALUES_UPDATE'
    exporting
      dyname               = sy-repid
      dynumb               = sy-dynnr
    tables
      dynpfields           = lt_dynpfields
    exceptions
      invalid_abapworkarea = 1
      invalid_dynprofield  = 2
      invalid_dynproname   = 3
      invalid_dynpronummer = 4
      invalid_request      = 5
      no_fielddescription  = 6
      undefind_error       = 7
      others               = 8.
  if sy-subrc <> 0.
    " ...
  endif.

我也不能直接设置DYN_MATNR,因为它在PBO中是不可用的。

有什么暗示吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-27 02:07:18

明白了:

您需要另外定义一个全局(!)变量,具有输入字段的名称和(愿望)类型(例如,在报告的顶部或动态逻辑的单独包含中):

代码语言:javascript
复制
data dyn_matnr type matnr.

然后可以在PBO中直接设置dynpro字段的初始值:

代码语言:javascript
复制
dyn_matnr = gcl_helper->get_matnr( ).

由于在使用各种对话框动态时,这会变得相当烦人,所以我建议在这些变量和输入字段中包括dynpro数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72022068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档