单击按钮显示 table
Show table by button click
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.
如何做到这一点 happen:I 希望在单击按钮时显示 table.Please 代码尽可能简单易懂 possible.if用按钮制作它,用单选按钮或其他东西制作它。
提前致谢!
像这样显示内部表的最常见方法是使用 ALV,可以在此处找到有关如何构建 ALV 的简单示例:
https://archive.sap.com/discussions/thread/873601
如果您希望它执行 WRITE: 在一种情况下进行屏幕显示,并在另一种情况下显示 ALV 网格,您应该使用 Select 选项和参数。
您的代码需要添加 EVENTS,请在此处查看它们是什么以及如何使用它们:
http://www.erpworkbench.com/abap/abap-events.htm
如果您想保持简单,可以使用 "sy-ucomm" 来存储您最后触发的操作。使用您的按钮,它看起来像这样:
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'PRESS'.
*code for displaying your table via ALV or WRITE goes here*
ENDCASE.
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.
如何做到这一点 happen:I 希望在单击按钮时显示 table.Please 代码尽可能简单易懂 possible.if用按钮制作它,用单选按钮或其他东西制作它。 提前致谢!
像这样显示内部表的最常见方法是使用 ALV,可以在此处找到有关如何构建 ALV 的简单示例: https://archive.sap.com/discussions/thread/873601
如果您希望它执行 WRITE: 在一种情况下进行屏幕显示,并在另一种情况下显示 ALV 网格,您应该使用 Select 选项和参数。
您的代码需要添加 EVENTS,请在此处查看它们是什么以及如何使用它们: http://www.erpworkbench.com/abap/abap-events.htm
如果您想保持简单,可以使用 "sy-ucomm" 来存储您最后触发的操作。使用您的按钮,它看起来像这样:
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'PRESS'.
*code for displaying your table via ALV or WRITE goes here*
ENDCASE.