zoukankan      html  css  js  c++  java
  • OOALV 不同ALV调用相同屏幕

    一、一次创建,多次调用

    当使用OOALV开发平台,存在点击不同位置,跳转到一个ALV,除ALV内容不一致以外,其他都一样。

    常规方法,即跳转到多少个ALV,就创建多少个SCREEN。而屏幕对应的输入输出流,事件,fieldcat,ALV等等出现大量相似代码。

    那么是否可以创建一个SCREEN,多次调用,修改调用时的fieldcat和展示ALV的GT_ALV内表。

    二、解决方法

    DATA:g_grid_9001      TYPE REF TO cl_gui_alv_grid, "ALV容器的实例
         g_container_9001 TYPE REF TO cl_gui_docking_container, "ALV容器 不用画屏幕容器 cl_gui_custom_container, "ALV container容器 需要画屏幕容器
         gt_exclude_9001  TYPE ui_functions, "     用于去掉不要的菜单栏
         gs_layout_9001   TYPE lvc_s_layo,  "ALV 控制: 布局结构
         gt_fieldcat_9001 TYPE lvc_t_fcat.

    每次离开上一个ALV时,调用析构函数,清理两个对象

    MODULE user_command_9000 INPUT.
      DATA: lt_row  TYPE lvc_t_row,
            lt_roid TYPE lvc_t_roid,
            ls_row  TYPE lvc_s_row.
    
      save_code = ok_code.
      CLEAR ok_code.
      CASE save_code.
        WHEN '&BACK'."设置功能键返回按钮单击事件
          "将9001屏幕释放
          IF g_container_9001 IS BOUND.
            CALL METHOD g_container_9001->free
              EXCEPTIONS
                cntl_error        = 1
                cntl_system_error = 2
                OTHERS            = 3.
            IF sy-subrc <> 0.
    *     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
          ENDIF.
          "将9001屏幕释放
          IF g_grid_9001 IS BOUND.
            CALL METHOD g_grid_9001->free
              EXCEPTIONS
                cntl_error        = 1
                cntl_system_error = 2
                OTHERS            = 3.
            IF sy-subrc <> 0.
    *     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
          ENDIF.
    
          PERFORM frm_refresh_alv USING g_grid_9000.
          LEAVE TO SCREEN 0.
        WHEN '&EXIT'.
          LEAVE PROGRAM.
      ENDCASE.
    ENDMODULE.

    调用9001SCREEN时,重新调用方法,再清理并实例化这两个对象

    MODULE display_alv_9001 OUTPUT.
      FREE:g_container_9001,g_grid_9001.
      PERFORM frm_create_container_9000. 
      PERFORM frm_alv_sort_9000.
      PERFORM frm_alv_fieldcat_9001.
      PERFORM frm_alv_layout_9000.
      PERFORM frm_alv_btn_exclude_9000.
      CASE gv_9001name.
        WHEN 'ZCGPS'."采购计划评审
          display_alv g_grid_9001 gs_layout_9000 gt_exclude_9000 gt_fieldcat_9001 gt_cgpsalv.
        WHEN 'ZSCPS'."生产计划评审
          display_alv g_grid_9001 gs_layout_9000 gt_exclude_9000 gt_fieldcat_9001 gt_scpsalv.
        WHEN OTHERS.
      ENDCASE.
    
    ENDMODULE.
  • 相关阅读:
    2、变量
    1、基本的数据类型
    jenkins入门
    我的Python基础笔记
    jmeter测试手机app
    Python:字典
    Python:元组
    Python:列表
    Python:函数
    H3C-L2TP
  • 原文地址:https://www.cnblogs.com/BinGeneral/p/15470672.html
Copyright © 2011-2022 走看看