列表框错误 "Entry is too long for the field"

Listbox error "Entry is too long for the field"

在下拉列表框字段中选择一个值后,出现此错误消息:

Entry is too long for the field

(是留言号00092)

我创建了一个文本字段 TXTOPENV 作为具有键值的列表框,在 PBO 部分使用 VRM_SET_VALUES 设置值。

这里是screen painter的截图:

屏幕流逻辑:

PROCESS BEFORE OUTPUT.
  MODULE status_0210.

ABAP 代码:

DATA txtopenv TYPE c LENGTH 1.

MODULE status_0210 OUTPUT.
  SET PF-STATUS 'ST210'.
  SET TITLEBAR 'T210'.
  PERFORM GetVacancy.
ENDMODULE.

FORM GetVacancy.
  TYPES: BEGIN OF ty_vacancy,
           plans TYPE t528t-plans,
           plstx TYPE t528t-plstx,
         END OF ty_vacancy.
  DATA: wa_vacancy TYPE ty_vacancy.
  LOOP AT it_vacancyid INTO wa_vacancyid.
    SELECT plans plstx
      FROM t528t
      INTO wa_vacancy
      WHERE plans = wa_vacancyid-ty_objid.
    ENDSELECT.
    field_id = wa_vacancy-ty_plans.
    value = wa_vacancy-ty_plstx.
    APPEND value TO values.
    CLEAR wa_vacancy.
  ENDLOOP.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'TXTOPENV'
      values          = values
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.
ENDFORM.

错误"Entry is too long for the field"与列表框字段没有具体关系,但可能会出现在所有类型的屏幕字段中,所以我先回答一般情况,然后再解释你错的原因。

当屏幕字段定义的 "definition length" 大于为 ABAP 程序中的 eponym 全局变量定义的长度(eponym:名称必须是同样,当输入值大于 ABAP 程序的长度时,允许在屏幕和程序之间来回传输值)、

在您的情况下,列表框中所选值的键可能大于 1 个字符,这是全局变量的长度。

您的解决方案是将变量设置为 8 个字符:

DATA txtopenv TYPE t528t-plstx.

注意:

  • 在包含可能值的列表框字段的屏幕截图中,仅显示文本,但您也可以通过 SAP GUI 设置显示键值 Interaction Design > Visualization 1 > Show keys within dropdown lists.