ABAP 列表报告中的 AT LINE SELECTION 后返回按钮的事件?

Event for back button after AT LINE SELECTION in ABAP list report?

我有一个使用事件块 AT LINE SELECTION(和 HIDE)的列表报告。

AT LINE-SELECTION.
    WRITE: 'Testline'.
* and some more things

当我双击主列表中的一行时,AT LINE SELECTION 被处理,主列表被替换为包含文本 'Testline'.

的列表

当我点击绿色后退按钮时,主列表再次显示。

一切正常。

现在回答我的问题:

当用户点击绿色后退按钮从详细列表转到主列表时,是否可以通过某种方式通知报表?

显而易见的解决方案AT USER-COMMAND没有被调用。
这是我想再次 SUBMIT 相同报告以更新列表的事件。

(我知道我可以用 ALV 报告来做到这一点,但是这可以用简单的列表报告来实现吗?)

当您检查 documentation 时,您会发现以下信息:

  • The function codes PICK and PF## ("##" stands for 01 to 24) do not cause the event AT USER-COMMAND, but the events AT LINE-SELECTION and AT PF##.
  • All function codes that start with the character "%" are interpreted as system functions and do not cause the event AT USER-COMMAND. The system functions for lists are listed in the following table 1.
  • The function codes in the following table 2, likewise, do not cause the event AT USER-COMMAND, but are handled by the list processor.

table 2 包括 BACK(这是绿色箭头的默认代码)。

您可以做什么:写下您自己的状态。

REPORT ytest.

DATA pf_exclude TYPE TABLE OF sy-ucomm WITH HEADER LINE.

START-OF-SELECTION.

  SET PF-STATUS 'LIST'.  "<--- here
  WRITE: / 'Hello World'.

AT LINE-SELECTION.
  WRITE: 'Testline'.
* and some more things

AT USER-COMMAND.
  BREAK-POINT.
  CASE sy-ucomm.
    WHEN 'MYBACK'.
  ENDCASE.

现在您可以定义自己的状态:

  • 不要忘记定义 PICK - 否则双击将不起作用。
  • 定义你自己的后退函数。