注册 登录
赛跑网 返回首页

SAPOK_ABAP的个人空间 https://www.91sap.com/?9408 [收藏] [复制] [分享] [RSS]

日志

OO ALV

已有 1201 次阅读2012-11-15 10:42 |个人分类:ALV| ALV

**OO ALV源代码,只需创建一个101的屏幕即可。
TABLES: marav,mara.
*---------------------------------------------------------------------*
DATA:
BEGIN OF gt_out OCCURS 100 ,
matnr LIKE marav-matnr, "Material number
maktx LIKE marav-maktx, "Material short text
matkl LIKE marav-matkl, "Material group (so you can test to make
ntgew LIKE marav-ntgew, "Net weight, numeric field (so you can test to
gewei LIKE marav-gewei, "weight unit (just to be complete)
END OF gt_out.
**定义事件操作 变更
DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.
***ALV相关
DATA: gr_alvgrid    TYPE REF TO cl_gui_alv_grid ,"ALV对象
      gt_fieldcat   TYPE lvc_t_fcat ,            "FILEDCAT属性
      gs_layout     TYPE lvc_s_layo ,            "LAYOUT属性
      gs_variant    TYPE disvariant,
      gt_exclude    TYPE ui_functions.           "存放排除按钮的内表
DATA  alv_custom_container TYPE REF TO cl_gui_custom_container.
SELECT-OPTIONS: s_matnr FOR marav-matnr  .

*---------------------------------------------------------------------*
START-OF-SELECTION.


  gs_variant-report = sy-repid.
  PERFORM prepare_layout CHANGING gs_layout .         "设置LAYOUT
  REFRESH gt_fieldcat.                                "清空FIELDCAT内表
  PERFORM prepare_field_catalog CHANGING gt_fieldcat ."设置FIELD CATALOG

***抓取数据
  SELECT * FROM marav
  INTO CORRESPONDING FIELDS OF TABLE gt_out
  WHERE
  matnr IN s_matnr.

***只需创建屏幕
  CALL SCREEN 101.

*&---------------------------------------------------------------------*
*&      Form  PREPARE_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PS_LAYOUT  text
*----------------------------------------------------------------------*
FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.
***设置LAYOUT属性
  ps_layout-zebra = 'X' .
  ps_layout-smalltitle = 'X' .
  ps_layout-cwidth_opt = 'X'. "设置自动列宽
  ps_layout-no_toolbar = ' '.
  ps_layout-no_rowmark = 'X'.
ENDFORM.                    "PREPARE_LAYOUT

*&---------------------------------------------------------------------*
*&      FORM  PREPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
*       根据维护表的结构初始化ALV的FIELD CATALOG
*----------------------------------------------------------------------*
*      -->PT_FIELDCAT  TEXT
*----------------------------------------------------------------------*
FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat .
  DATA: ls_fieldcat TYPE lvc_s_fcat,
        l_rows TYPE i VALUE 1.
***填充FIELDCAT内表<得到展示的字段>
  CLEAR:ls_fieldcat.
  ls_fieldcat-fieldname = 'MATNR'.
  ls_fieldcat-coltext = '物料'.
  ls_fieldcat-no_zero = 'X'.
  ls_fieldcat-col_pos = l_rows.
  APPEND ls_fieldcat TO pt_fieldcat.
  l_rows = l_rows + 1.

  CLEAR:ls_fieldcat.
  ls_fieldcat-fieldname = 'MAKTX'.
  ls_fieldcat-coltext = '描述'.
  ls_fieldcat-col_pos = l_rows.
  APPEND ls_fieldcat TO pt_fieldcat.
  l_rows = l_rows + 1.

  CLEAR:ls_fieldcat.
  ls_fieldcat-fieldname = 'NTGEW'.
  ls_fieldcat-coltext = '重量'.
  ls_fieldcat-col_pos = l_rows.
  APPEND ls_fieldcat TO pt_fieldcat.
  l_rows = l_rows + 1.

  CLEAR:ls_fieldcat.
  ls_fieldcat-fieldname = 'GEWEI'.
  ls_fieldcat-coltext = '单位'.
  ls_fieldcat-col_pos = l_rows.
  APPEND ls_fieldcat TO pt_fieldcat.
  l_rows = l_rows + 1.

ENDFORM .                    "PREPARE_FIELD_CATALOG

*&---------------------------------------------------------------------*
*&      FORM  EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
*       去除不要的ALV工具栏按钮
*----------------------------------------------------------------------*
*      <--P_LT_EXCLUDE  TEXT
*----------------------------------------------------------------------*
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
***排除不必要的按钮,将不需要的按钮APPEND内表中即不显示
  DATA ls_exclude TYPE ui_func.
ENDFORM.                    "EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0101 OUTPUT.

***设置界面可以操作的按钮
  SET PF-STATUS 'MAIN100'.
***设置标题
  SET TITLEBAR '100'.

  gs_variant-report = sy-repid..
  IF gr_alvgrid IS INITIAL .
****建立对象
    CREATE OBJECT gr_alvgrid "ALV_GRID
      EXPORTING
        i_parent = alv_custom_container. "将数据装载到控制屏幕中

***排除不要的按钮
    PERFORM exclude_tb_functions USING gt_exclude.
***展示数据

    CALL METHOD gr_alvgrid->set_table_for_first_display
      EXPORTING
        is_variant                    = gs_variant
        i_save                        = 'A'
        is_layout                     = gs_layout
        it_toolbar_excluding          = gt_exclude
      CHANGING
        it_outtab                     = gt_out[]
        it_fieldcatalog               = gt_fieldcat
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4.
  ENDIF.


ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0101 INPUT.
  save_ok = sy-ucomm.
  CLEAR: ok_code.
***响应工具栏事件
  CASE save_ok.
    WHEN 'BACK'.
      SET SCREEN 0 . "按返回 按钮,返回选择屏幕
    WHEN 'EXIT'.
      LEAVE PROGRAM. "退出程序
    WHEN 'CANCEL'.
      LEAVE PROGRAM. "退出程序
    WHEN OTHERS.
      IF save_ok = 'PRINT'.
*        MESSAGE '你单击了打印' TYPE 'S'.
      ENDIF.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|联系我们|赛跑网 ( QQ:108519493QQfsq

GMT+8, 2024-6-9 10:39 , Processed in 0.378930 second(s), 19 queries .

Powered by 91SAP X3.4

© 2001-2023 91sap Team.

返回顶部