Abap 单击按钮显示表格

Abap 单击按钮显示表格,abap,Abap,如何做到这一点:我希望在点击按钮时显示表格。请将代码尽可能简单且易于理解。如果您不能使用按钮,请使用radiobutton或smth其他工具。 提前谢谢 像这样显示内部表格的最常见方法是使用ALV,下面是一个如何建立ALV的简单示例: 如果您希望它在一种情况下执行WRITE:to屏幕显示,并在另一种情况下显示ALV网格,则应使用Select选项和参数 您的代码需要添加事件,请在此处查看它们是什么以及如何使用它们: 如果您想保持简单,可以使用“sy-ucomm”存储上次触发的动作。用你的按钮,它

如何做到这一点:我希望在点击按钮时显示表格。请将代码尽可能简单且易于理解。如果您不能使用按钮,请使用radiobutton或smth其他工具。
提前谢谢

像这样显示内部表格的最常见方法是使用ALV,下面是一个如何建立ALV的简单示例:

如果您希望它在一种情况下执行WRITE:to屏幕显示,并在另一种情况下显示ALV网格,则应使用Select选项和参数

您的代码需要添加事件,请在此处查看它们是什么以及如何使用它们:

如果您想保持简单,可以使用“sy-ucomm”存储上次触发的动作。用你的按钮,它看起来像这样:

TABLES: mara, marc.
"marc is N
"mara is 1 
SELECTION-SCREEN PUSHBUTTON 15(10) text-001 USER-COMMAND press.
DATA: lt_mara TYPE TABLE OF mara WITH HEADER LINE,
      ls_mara TYPE mara.
DATA: lt_marc TYPE TABLE OF marc WITH HEADER LINE,
      ls_marc TYPE marc,
      Sum  type P length 8 DECIMALS 2.
PARAMETERS: p_mtart TYPE mara-mtart.
SELECT-OPTIONS: so_werks FOR marc-werks.
SELECT * FROM mara INTO TABLE lt_mara
  WHERE mtart = p_mtart.
IF sy-subrc = 0.
  SELECT * FROM marc INTO TABLE lt_marc
  FOR ALL ENTRIES IN lt_mara
  WHERE  matnr = lt_mara-matnr
  AND werks IN so_werks.
  LOOP AT lt_marc INTO ls_marc.
    READ TABLE lt_mara INTO ls_mara
   WITH KEY matnr = ls_marc-matnr.
    sum = ls_mara-brgew + ls_mara-ntgew .
  WRITE:/ ls_mara-mtart, ls_marc-matnr , ls_marc-werks , ls_mara-brgew, ls_mara-ntgew,sum.
  ENDLOOP.
ELSE.
  MESSAGE TEXT-e02 TYPE 'E' .
ENDIF.

在下面建议的选择屏幕上使用
事件,并检查
sscrfields ucomm
系统字段。是否有任何非面向对象的方法?@user3026665在什么情况下合适?何时检查参数是否为空?我有两个参数和三个单选按钮。“code”如果供应商0和alv='X'和材料0。消息文本-e04类型“E”。恩迪夫。”对于参数,使用“IS(NOT)INITIAL”构造。类似于:
如果pa_参数不是首字母*做点什么。ENDIF.
好的,我想我知道交易是什么。当“按下”时,您需要完全大写
。糟糕的是,我忘了这是一件事。我的意思是,在原始代码中,我在“按”时键入了
。因为sy-ucomm会自动将用户命令大写,所以它不会工作。它应该是
CASE sy ucomm。当“按”时。如果供应商不是初始供应商,且alv='X'且物料不是初始供应商。消息文本-e04类型“E”。恩迪夫。ENDCASE.
(假设您使用的是按钮)不,这是一个参数,这就是为什么我在挣扎。供应商和材料是婴儿车,alv是radiobutton抱歉
AT SELECTION-SCREEN.
  CASE sy-ucomm.
    WHEN 'PRESS'.
      *code for displaying your table via ALV or WRITE goes here*
  ENDCASE.