首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按dynpro顺序返回两个屏幕

按dynpro顺序返回两个屏幕
EN

Stack Overflow用户
提问于 2017-11-15 13:09:07
回答 2查看 6.4K关注 0票数 0

我想发展以下逻辑:

框"DISPLAY ALV“对应于功能模块REUSE_ALV_GRID_DISPLAY

使用LEAVE TO SCREEN 0,我不能直接传递给DISPLAY ALV。有可能吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-05 16:42:35

不,您不能像您打算的那样返回到FM,因为FM是一个特殊的可调用单元,而LEAVE TO SCREEN语句只对屏幕工作,但是您可以返回屏幕100,这表明了ALV。

请考虑下面的代码,对于这些代码,您应该在屏幕100和300个屏幕上安装自定义容器100_CONT300_CONT

屏幕100 PBO

代码语言:javascript
复制
MODULE pbo_100 OUTPUT.
  SET PF-STATUS 'YOUR_PF_STATUS'.
  IF custom_container1 IS INITIAL.

    SELECT *
      FROM mara AS m
      INTO TABLE gt_mara
      WHERE EXISTS ( SELECT * FROM vbrp WHERE matnr = m~matnr ).

    CREATE OBJECT custom_container1
      EXPORTING
        container_name = cont_on_main.

    CREATE OBJECT grid1
      EXPORTING
        i_parent = custom_container1.

    CALL METHOD grid1->set_table_for_first_display
      EXPORTING
        i_structure_name = 'mara'
        is_layout        = gs_layout
      CHANGING
        it_outtab        = gt_mara.

    CREATE OBJECT event_receiver.
    SET HANDLER event_receiver->handle_double_click FOR grid1.

  ENDIF.
ENDMODULE.                             " PBO_100  OUTPUT

屏300 PBO

代码语言:javascript
复制
MODULE pbo_0300 OUTPUT.
  IF custom_container2 IS INITIAL.
    CREATE OBJECT custom_container2
      EXPORTING
        container_name = cont_on_dialog.

    CREATE OBJECT grid2
      EXPORTING
        i_parent = custom_container2.

    gs_layout-grid_title = 'Orders'.

    CALL METHOD grid2->set_table_for_first_display
      EXPORTING
        i_structure_name = 'VBRP'
        is_layout        = gs_layout
      CHANGING
        it_outtab        = gt_vbrp.

  ELSE.
    CALL METHOD grid2->refresh_table_display.
  ENDIF.

ENDMODULE.                             " PBO_0300  OUTPUT

屏幕300

代码语言:javascript
复制
MODULE pai_0300 INPUT.
  CASE ok_code.
    WHEN 'RETURN'.
      DATA: ans.
      CALL FUNCTION 'POPUP_TO_CONFIRM'
        EXPORTING
          titlebar              = 'SO sample'
          text_question         = 'Select next action'
          text_button_1         = 'Yes'
          icon_button_1         = 'ICON_CHECKED'
          text_button_2         = 'No'
          icon_button_2         = 'ICON_CANCEL'
          display_cancel_button = ' '
        IMPORTING
          answer                = ans.

      CASE ans.
        WHEN 1.
          LEAVE TO SCREEN 0.
        WHEN 2.
          LEAVE PROGRAM.
        WHEN OTHERS.
      ENDCASE.

  ENDCASE.
  CLEAR ok_code.
ENDMODULE.

主程序

代码语言:javascript
复制
CLASS lcl_event_receiver DEFINITION DEFERRED.

DATA: ok_code           LIKE sy-ucomm,
      gt_mara           TYPE TABLE OF mara,
      gt_vbrp           TYPE TABLE OF vbrp,
      grid1             TYPE REF TO cl_gui_alv_grid,
      grid2             TYPE REF TO cl_gui_alv_grid,
      cont_on_main      TYPE scrfname VALUE '100_CONT',
      cont_on_dialog    TYPE scrfname VALUE '300_CONT',
      custom_container1 TYPE REF TO cl_gui_custom_container,
      custom_container2 TYPE REF TO cl_gui_custom_container,
      event_receiver    TYPE REF TO lcl_event_receiver.

START-OF-SELECTION.

  CALL SCREEN 100.

CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    METHODS: handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
      IMPORTING e_row e_column.
ENDCLASS.

CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD handle_double_click.
    READ TABLE gt_mara INDEX e_row-index ASSIGNING FIELD-SYMBOL(<fs_mara>).

    SELECT *
      INTO TABLE gt_vbrp
      FROM vbrp
      WHERE matnr = <fs_mara>-matnr.

    CALL SCREEN 300 STARTING AT 10 5.
  ENDMETHOD.

ENDCLASS.

在程序开始时,我们在系统中获取带有销售订单的材料列表,然后双击屏幕100,这些订单显示在屏幕300中。

通过带有函数代码RETURN的特殊按钮(您应该将它放在屏幕300上),我们调用弹出窗口与用户进行交互。通过按Yes,它返回到初始屏幕100,通过按No,程序被完全中断。

在这里,您应该注意语句LEAVE TO SCREEN 0,它终止当前的dynpro序列(即300),从而返回到100。

票数 1
EN

Stack Overflow用户

发布于 2017-11-16 19:55:52

我不能确定这是否有效,但您应该尝试“设置屏幕0”。最近,在我的ALV报告中编写了一个“刷新”按钮之后,我不得不这样做,因为在刷新和重新显示数据之后,需要多次单击“绿色箭头”才能退出报告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47308259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档