ABAP的OOSALV的最短代码报表

FORM FRM_CALL_VF05N  USING    PS_DATA TYPE J_3RMOBVEDH_TOTAL.

DATA: LO_SALV      TYPE REF TO CL_SALV_TABLE,
        LO_SALV_COLS TYPE REF TO CL_SALV_COLUMNS_TABLE,
        LO_FUNCTION  TYPE REF TO CL_SALV_FUNCTIONS_LIST,
        LO_DISPLAY   TYPE REF TO CL_SALV_DISPLAY_SETTINGS.
  DATA:LT_VBRP TYPE TABLE OF VBRP.

  LOOP AT GT_VBRP INTO GS_VBRP WHERE CHARG = PS_DATA-CHARG.
    APPEND GS_VBRP TO LT_VBRP.
  ENDLOOP.
*
  CL_SALV_TABLE=>FACTORYIMPORTING R_SALV_TABLE = LO_SALV CHANGING T_TABLE = LT_VBRP ).

  IF LO_SALV IS BOUND.
    LO_SALV_COLS = LO_SALV->GET_COLUMNS).
    LO_SALV_COLS->SET_OPTIMIZE(
    EXPORTING
      VALUE  = IF_SALV_C_BOOL_SAP=>TRUE ).

PERFORM FRM_CHANGE_TEXT USING LO_SALV_COLS 'LGOBE'       '库存地点'."修改列名称


    LO_FUNCTION = LO_SALV->GET_FUNCTIONS).
    LO_FUNCTION->SET_ALL'X' ).

    "设置工具条:只适用于全屏模式与全屏幕经典列表模式的SALV
    LO_SALV->SET_SCREEN_STATUS(
       PFSTATUS 'SALV_TABLE_STANDARD'"系统提示的标准Status为SAPLSALV_METADATA_STATUS程序中的SALV_TABLE_STANDARD
       REPORT = SY-REPID
       "注:此参数只对SALV标准的预设保留按钮起作用,也就是说,当 T001 GUI Status是从
       "系统中提供的标准Gui Staus拷贝时才起作用,即通用此参数来屏蔽或显示某些预置按钮
       "对自己完全新创建的GUI Status是的按钮(实质上是根据 FunCode来判断的)不起作用
       SET_FUNCTIONS = LO_SALV->C_FUNCTIONS_ALL )."显示所有通用的预设按钮
    "set_functions = gr_table->c_functions_default )."显示基本默认选择性的预设按钮
    "set_functions = gr_table->c_functions_none )."所有预设按钮都将不会显示

    LO_SALV->DISPLAY.
  ENDIF.

ENDFORM.

 

 

 


*&---------------------------------------------------------------------*
*& Form FRM_CHANGE_TEXT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*      -->P_LO_SALV_COLS  text
*      -->P_       text
*      -->P_       text
*&---------------------------------------------------------------------*
FORM FRM_CHANGE_TEXT USING LO_SALV_COLS TYPE REF TO CL_SALV_COLUMNS_TABLE
                             NAME1
                             NAME2.
  DATA: LO_SALV_COL1 TYPE REF TO CL_SALV_COLUMN_TABLE.

  TRY.
*       取得单个列的对象
      LO_SALV_COL1 ?= LO_SALV_COLS->GET_COLUMN( NAME1 ).
      LO_SALV_COL1->SET_LONG_TEXT( NAME2 ).
      LO_SALV_COL1->SET_MEDIUM_TEXT( NAME2 ).
      LO_SALV_COL1->SET_SHORT_TEXT( NAME2 ).

    CATCH CX_SALV_NOT_FOUND.                            "#EC NO_HANDLER
  ENDTRY.
ENDFORM.

 

 

*&---------------------------------------------------------------------*
*& Form FRM_HIDE_COLUM 隐藏列
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*      -->P_LO_SALV_COLS  text
*      -->P_       text
*      -->P_       text
*&---------------------------------------------------------------------*
FORM FRM_HIDE_COLUM USING LO_SALV_COLS TYPE REF TO CL_SALV_COLUMNS_TABLE
                             NAME1.
  DATA: LO_SALV_COL1 TYPE REF TO CL_SALV_COLUMN_TABLE.

  TRY.
*       取得单个列的对象
      LO_SALV_COL1 ?= LO_SALV_COLS->GET_COLUMN( NAME1 ).
      LO_SALV_COL1->SET_VISIBLE( CL_SALV_COLUMN_TABLE=>FALSE ).

    CATCH CX_SALV_NOT_FOUND.                            "#EC NO_HANDLER
  ENDTRY.
ENDFORM.

posted @ 2022-04-27 16:10  别忘了带红领巾  阅读(218)  评论(0)    收藏  举报