我需要一些帮助来解决以下问题 . 我目前有一个对话框屏幕,其中有一个字段,用户可以在其中输入数字 . 这个数字对应于我所做的数据库表中的ID字段(使用se / 11) . 我想在第二个屏幕上显示所有字段的内容(因此只有表格的一行)和相应的ID . 用户还应该能够编辑字段中的信息,并在保存后,这些更改应该在表本身中可见 . 它归结为我想通过对话框屏幕动态更改返回行的内容 . 我知道我必须使用表控件,但除此之外我不知所措(我对ABAP很新) .
当在屏幕1上按F8时,我想转到第二个屏幕,其中包含Seqnr = 1的人的信息,换句话说,只应出现此行:link . 用户应该能够编辑此行中的信息 . 单击"Save"时,应在表格中更新已编辑的信息 .
到目前为止,我只制作了一个标准的第二个屏幕,其中我在Screen Painter中为上表添加了一个表格控件 . 我将此控件添加到我的DIALOG_TOP:
PROGRAM TAAK1.
DATA: OK_CODE TYPE sy-ucomm,
ls_table TYPE TABEL1,
SEQNR_TEXTFIELD TYPE i,
TXT_STATUS(25) TYPE c,
it_table LIKE TABEL1 OCCURS 0 WITH HEADER LINE.
TABLES: TABEL1.
CONTROLS: TABLE_CONTROL TYPE TABLEVIEW USING SCREEN 200.
除了标准的PBO和PAI模块之外,我没有屏幕2的代码 . 屏幕1的代码如下所示 .
MODULE USER_COMMAND_0100 INPUT.
CASE OK_CODE.
WHEN 'CHECKID'.
SELECT SINGLE * FROM TABEL1 WHERE SEQNR EQ SEQNR_TEXTFIELD.
IF sy-subrc EQ 0.
TXT_STATUS = 'ID BESTAAT'.
ELSE.
TXT_STATUS = 'ID BESTAAT NIET'.
ENDIF.
IF TXT_STATUS = 'ID BESTAAT'.
SELECT * FROM TABEL1 INTO ls_table WHERE SEQNR EQ SEQNR_TEXTFIELD.
ENDSELECT.
ENDIF.
WHEN 'EXEC'.
CLEAR OK_CODE.
SET SCREEN 200.
LEAVE SCREEN.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
我基本上检查表中是否存在Seqnr . 如果是,我将相应的行存储在我在DIALOG_TOP中定义的本地结构中 .
1 回答
使用SM30视图可能更容易,也更省时 . 您可以创建自定义事务以维护正确的授权 . 此外,您可以根据自己的喜好调整屏幕(请参阅生成的功能组的代码) .
更多信息:
https://help.sap.com/saphelp_nw73ehp1/helpdata/en/cf/21ed2d446011d189700000e8322d00/content.htm
https://archive.sap.com/discussions/thread/851998
http://saptechnical.com/Tutorials/ABAP/TableMaintenance/demo.htm