为什么`cl_gui_textedit->get_textstream`的结果是空的?

kon*_*tin 2 abap

我正在使用 ABAP 标准类cl_gui_textedit从选择屏幕上的文本区域读取文本。get_textstream但是在实例上调用该方法后的结果是空的。

最小工作示例:


REPORT z_mwe_textarea_bug.

DATA lr_edit TYPE REF TO cl_gui_textedit.
DATA lr_docker TYPE REF TO cl_gui_docking_container.

PARAMETERS p_dummy TYPE string DEFAULT 'just for testing'. ""// <--- need this to show selection screen.

INITIALIZATION.
  CREATE OBJECT lr_docker
    EXPORTING
      ratio = 60.
  CREATE OBJECT lr_edit
    EXPORTING
      parent = lr_docker.

  lr_docker->dock_at( EXPORTING side = cl_gui_docking_container=>dock_at_left ).

START-OF-SELECTION.

  DATA lv_text_from_textarea TYPE string.
  lr_edit->get_textstream( IMPORTING text = lv_text_from_textarea ).   ""// <-- why is lv_text_from_textarea empty??

Run Code Online (Sandbox Code Playgroud)

kon*_*tin 5

您(或我,回答我自己的问题)必须cl_gui_cfw=>flush( )事后打电话。像这样:

lr_edit->get_textstream( IMPORTING text = lv_text_from_textarea ). ""// <-- lv_text_from_textarea still empty
cl_gui_cfw=>flush( ). ""//<-- now it's not empty anymore.
Run Code Online (Sandbox Code Playgroud)

免责声明:在 abapforum.de上找到了答案,但删除了所有无用(和德语)的讨论,并为我的问题添加了一个最小的工作示例。