首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SAP ABAP中根据复选框选择显示数据字段

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

Stack Overflow用户
提问于 2021-04-21 16:37:09
回答 2查看 683关注 0票数 2

下面是我想要基于复选框选择来显示位置的简单代码。

例如:在选择屏幕上选择id p_pune,然后在写入命令后,我的输出应该如下所示

代码语言:javascript
复制
EMPID  NAME  LOCATION
 1       A     PUNE

代码:

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

发布于 2021-04-21 17:05:13

您可以尝试这样做:

代码语言:javascript
复制
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-name, wa_emp-location.

ENDIF.

IF p_delhi = abap_true.

  READ TABLE it_emp INTO wa_emp INDEX '3'.

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

ENDIF.

IF p_noida = abap_true.

  READ TABLE it_emp INTO wa_emp INDEX '4'.

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

ENDIF.

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

如果您只想显示一个位置,我建议您使用单选按钮而不是复选框。

票数 2
EN

Stack Overflow用户

发布于 2021-04-21 23:40:47

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

代码语言:javascript
复制
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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67192181

复制
相关文章

相似问题

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