微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据 SAP ABAP 中的复选框选择显示数据字段

如何解决根据 SAP ABAP 中的复选框选择显示数据字段

下面是我想根据复选框选择显示位置的简单代码

例如:在选择屏幕上选择了 id p_pune,然后在 WRITE 命令之后我的输出应该如下

EMPID  NAME  LOCATION
 1       A     PUNE

代码

TYPES: BEGIN OF ty_emp,empid TYPE i,name TYPE char5,location TYPE char6,END OF ty_emp.

  DATA: wa_emp TYPE ty_emp,it_emp TYPE TABLE OF ty_emp.

  DATA: gd_ucomm TYPE sy-ucomm.

  wa_emp-empid = 1.
  wa_emp-name = 'A'.
  wa_emp-location = 'Pune'.
  append wa_emp to  it_emp.

CLEAR wa_emp.
   wa_emp-empid = 2.
  wa_emp-name = 'B'.
  wa_emp-location = 'Mumbai'.
append wa_emp to  it_emp.

CLEAR wa_emp.
  wa_emp-empid = 3.
  wa_emp-name = 'C'.
  wa_emp-location = 'Delhi'.
append wa_emp to  it_emp.

CLEAR wa_emp.
  wa_emp-empid = 4.
  wa_emp-name = 'D'.
  wa_emp-location = 'Noida'.
  append wa_emp to  it_emp.

CLEAR wa_emp.

ParaMETERS: p_pune AS CHECKBox USER-COMMAND c1,p_mumbai AS CHECKBox USER-COMMAND c2,p_delhi AS CHECKBox USER-COMMAND c3,p_noida AS CHECKBox USER-COMMAND c4.

解决方法

你可以试试这个:

IF p_pune = abap_true.

  READ TABLE it_emp INTO wa_emp INDEX '1'.

  WRITE:/ wa_emp-empid,wa_emp-name,wa_emp-location.

ENDIF.

IF p_mumbai = abap_true.

  READ TABLE it_emp INTO wa_emp INDEX '2'.

  WRITE:/ wa_emp-empid,wa_emp-location.

ENDIF.

IF p_delhi = abap_true.

  READ TABLE it_emp INTO wa_emp INDEX '3'.

  WRITE:/ wa_emp-empid,wa_emp-location.

ENDIF.

IF p_noida = abap_true.

  READ TABLE it_emp INTO wa_emp INDEX '4'.

  WRITE:/ wa_emp-empid,wa_emp-location.

ENDIF.

当您选中多个复选框时,它将显示多个位置。

如果您只想显示一个位置,我建议您使用 RADIO BUTTON 而不是 CHECKBOX。

,

您可以使用 COND 语句将参数的布尔值转换为位置。然后,您可以使用 LOOP AT 遍历内部表并使用它的 WHERE 条件过滤出您需要的位置。

TYPES:
  BEGIN OF employee,empid    TYPE i,name     TYPE char5,location TYPE char6,END OF employee,employees TYPE STANDARD TABLE OF employee WITH EMPTY KEY.

DATA(employees) = VALUE employees(
  ( empid = 1 name = 'A' location = 'Pune'   )
  ( empid = 2 name = 'B' location = 'Mumbai' )
  ( empid = 3 name = 'C' location = 'Dehli'  )
  ( empid = 4 name = 'D' location = 'Noida'  )
).

PARAMETERS: pune   AS CHECKBOX,mumbai AS CHECKBOX,dehli  AS CHECKBOX,noida  AS CHECKBOX.

START-OF-SELECTION.

DATA(wanted_location) = COND char6(
  WHEN pune   = abap_true THEN 'Pune'
  WHEN mumbai = abap_true THEN 'Mumbai'
  WHEN dehli  = abap_true THEN 'Dehli'
  WHEN noida  = abap_true THEN 'Noida'
).

LOOP AT employees INTO DATA(employee)
  WHERE location = wanted_location.

  WRITE:
    employee-empid,employee-location,employee-name.

  NEW-LINE.
ENDLOOP.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。