ABAP OOALV 强制触发PBO(刷新GUI标题信息)


前言

今天遇见一个问题,需求目的是OOALV刷新的同时进而刷新我们的GUI标题信息,因此用到了强制触发PBO,才能触发SAP GUI更新,看到刷新的结果。

一、调用方法

类:CL_GUI_CFW=>SET_NEW_OK_CODE

       CL_GUI_CFW=>FLUSH

二、使用步骤

1.效果如下

2.相关代码如下

*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.

  DATA:lv_title TYPE string.
  CLEAR lv_title.
  IF gv_flg = ''.
    lv_title = '汇总数据'.
  ELSE.
    lv_title = '明细数据'.
  ENDIF.
  SET PF-STATUS 'ZSTATUS'.              " 定义gui状态
  SET TITLEBAR 'ZTITLE'  WITH lv_title. " 定义gui标题

ENDMODULE.
*&---------------------------------------------------------------------*
*& Form FRM_HANDLE_TOOLBAR
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> E_OBJECT
*&      --> E_INTERACTIVE
*&---------------------------------------------------------------------*
FORM frm_handle_toolbar
  USING p_object TYPE REF TO cl_alv_event_toolbar_set
        p_interactive.
* 增加按钮
  APPEND VALUE #( function  = 'ZBUT01'
                  quickinfo = '汇总数据'
                  butn_type = 1
                  icon = icon_list
                  text = '汇总数据' ) TO p_object->mt_toolbar.
  APPEND VALUE #( function  = 'ZBUT02'
                  quickinfo = '明细数据'
                  butn_type = 1
                  icon = icon_list
                  text = '明细数据' ) TO p_object->mt_toolbar.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> E_UCOMM
*&---------------------------------------------------------------------*
FORM frm_handle_user_command
  USING p_ucomm.

  DATA:lv_title TYPE lvc_title.

  CASE p_ucomm.
*   汇总数据
    WHEN 'ZBUT01'.
      CLEAR:gt_out.
      MOVE-CORRESPONDING gt_sum TO gt_out.
      gv_flg = ''.
*   明细数据
    WHEN 'ZBUT02'.
      CLEAR:gt_out.
      MOVE-CORRESPONDING gt_del TO gt_out.
      gv_flg = 'X'.
    WHEN OTHERS.
  ENDCASE.

* FEILDCATE
  PERFORM prepare_field_catalog_9000.

* 更新FEILDCAT
  CALL METHOD go_grid_01->set_frontend_fieldcatalog
    EXPORTING
      it_fieldcatalog = gt_fieldcat_01.

* 刷新layout
  PERFORM frm_refresh_layout.

* ALV刷新
  DATA:ls_stable TYPE lvc_s_stbl.
* 刷新ALV
  ls_stable-row = 'X'.
  ls_stable-col = 'X'.
  CALL METHOD go_grid_01->refresh_table_display
    EXPORTING
      is_stable = ls_stable.

* 强制触发PBO
  CALL METHOD cl_gui_cfw=>set_new_ok_code
    EXPORTING
      new_code = 'PBO'.
  CALL METHOD cl_gui_cfw=>flush.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_REFRESH_LAYOUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_refresh_layout .

  CALL METHOD go_grid_01->get_frontend_layout
    IMPORTING
      es_layout = gs_layout.

  PERFORM prepare_layout CHANGING gs_layout.

  CALL METHOD go_grid_01->set_frontend_layout
    EXPORTING
      is_layout = gs_layout.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PS_LAYOUT  text
*----------------------------------------------------------------------*
FORM prepare_layout
  CHANGING ps_layout TYPE lvc_s_layo.

  ps_layout-cwidth_opt      = 'X'.    "优化行宽度
  ps_layout-zebra           = 'X'.    "斑马纹!
  ps_layout-sel_mode        = 'D'.    "选择方式

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PT_FIELDCAT  text
*----------------------------------------------------------------------*
FORM prepare_field_catalog_9000.

  DATA:ls_fieldcat TYPE lvc_s_fcat.
  DEFINE mac_hong1.
    ls_fieldcat-fieldname = &1."字段名
    ls_fieldcat-coltext   = &2."文本描述
    ls_fieldcat-scrtext_l = &2."文本描述
    ls_fieldcat-scrtext_m = &2."文本描述
    ls_fieldcat-scrtext_s = &2."文本描述
    ls_fieldcat-ref_table = &3."参考表
    ls_fieldcat-ref_field = &4."参考表的字段
    ls_fieldcat-convexit  = &5."转换历程
    APPEND ls_fieldcat TO gt_fieldcat_01.
    CLEAR  ls_fieldcat.
  END-OF-DEFINITION.
  CLEAR gt_fieldcat_01.
  IF gv_flg IS INITIAL.
    mac_hong1 'MATKL ' '字段1' '' '' ''.
    mac_hong1 'WGBEZ ' '字段2' '' '' ''.
    mac_hong1 'PRICE1' '字段3' '' '' ''.
    mac_hong1 'PRICE2' '字段4' '' '' ''.
    mac_hong1 'PRICE3' '字段5' '' '' ''.
    mac_hong1 'PRICE4' '字段6' '' '' ''.
  ENDIF.
  IF gv_flg = 'X'.
    mac_hong1 'MATNR ' '字段1' '' '' ''.
    mac_hong1 'TXZ01 ' '字段2' '' '' ''.
    mac_hong1 'ZCLPH ' '字段3' '' '' ''.
    mac_hong1 'MATKL ' '字段4' '' '' ''.
    mac_hong1 'WGBEZ ' '字段5' '' '' ''.
    mac_hong1 'PRICE1' '字段6' '' '' ''.
    mac_hong1 'PRICE2' '字段7  ' '' '' ''.
    mac_hong1 'PRICE3' '字段8  ' '' '' ''.
    mac_hong1 'PRICE4' '字段9  ' '' '' ''.
    mac_hong1 'PRICE5' '字段10  ' '' '' ''.
  ENDIF.

ENDFORM.

3. 主干代码

强制触发PBO

* 强制触发PBO
  CALL METHOD cl_gui_cfw=>set_new_ok_code
    EXPORTING
      new_code = 'PBO'.
  CALL METHOD cl_gui_cfw=>flush.

强制触发PAI

* 强制触发PAI
  CALL METHOD cl_gui_cfw=>set_new_ok_code
    EXPORTING
      new_code = 'PAI'.
  CALL METHOD cl_gui_cfw=>flush.

或者触发其他按钮类 


总结

纯个人爱好记载!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值