ALV 求合 精典例子

*&---------------------------------------------------------------------* 
*&     Function: REUSE_ALV_FIELDCATALOG_MERGE            *&  ALV 求合
*&  和 function: REUSE_ALV_GRID_DISPLAY 一起使用         *&  精典例子
*&  做为一个方法使用,设置ALV的Fieldcatlog.
*&  和delphi 里的dxdbgrid 的功能一样。对小类相加计算,
*&  对所有的数量求和.
*&  对ALV中的某一列进行分类的完成测试程序。
*&---------------------------------------------------------------------* 
DATA:BEGIN OF it1 OCCURS 5,
        matnr LIKE mara-matnr,
        psmng LIKE afpo-psmng,
END OF it1 .

TYPE-POOLS: slis.
DATA:      l_events TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader,
          gs_layout TYPE slis_layout_alv,
           fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
           eventcat TYPE slis_t_event WITH HEADER LINE,
            it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
                prg LIKE sy-repid.

DATA: l_variant TYPE TABLE OF disvariant WITH HEADER LINE,

START-OF-SELECTION.
  CLEAR it1.
  it1-matnr = 'AA'.
  it1-psmng = 10.
  APPEND it1.
  CLEAR it1.

  it1-matnr = 'AA'.
  it1-psmng = 20.
  APPEND it1.
  CLEAR it1.

  it1-matnr = 'BB'.
  it1-psmng = 30.
  APPEND it1.
  CLEAR it1.

  it1-matnr = 'BB'.
  it1-psmng = 40.
  APPEND it1.
  CLEAR it1.

  it1-matnr = 'BB'.
  it1-psmng = 50.
  APPEND it1.
  CLEAR it1.

  it1-matnr = 'CC'.
  it1-psmng = 80.
  APPEND it1.

END-OF-SELECTION.
  PERFORM prepare_list_val.
  PERFORM display_val.
*&---------------------------------------------------------------------*
*& Form PREPARE_LIST_VAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM prepare_list_val.
  prg = sy-repid.
  l_variant-report = sy-repid.
  PERFORM eventtab_build CHANGING l_events.
  PERFORM comment_build CHANGING gt_list_top_of_page.
  PERFORM set_layout.
ENDFORM. " PREPARE_LIST_VAL
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM eventtab_build CHANGING p_events TYPE slis_t_event.

ENDFORM. " EVENTTAB_BUILD
*---------------------------------------------------------------------*
* FORM COMMENT_BUILD *
*---------------------------------------------------------------------*
* --> GT_TOP_OF_PAGE *
*---------------------------------------------------------------------*
FORM comment_build CHANGING gt_top_of_page TYPE slis_t_listheader.

ENDFORM. " COMMENT_BUILD
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM set_layout.
  gs_layout-zebra = 'X'.
  gs_layout-f2code = '&ETA'.
  gs_layout-detail_popup = 'X'.
  gs_layout-get_selinfos = 'X'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_VAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_val.
  PERFORM get_fieldcat.
  PERFORM get_eventcat.
  PERFORM get_it_sort.
  PERFORM start_list_val.
ENDFORM. " DISPLAY_VAL
*&---------------------------------------------------------------------*
*& Form GET_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_fieldcat.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         = prg
      i_internal_tabname     = 'IT1'
      i_inclname             = prg
    CHANGING
      ct_fieldcat            = fieldcat[]
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_FIELDCATALOG_MERGE'.
  ENDIF.

  LOOP AT fieldcat.
    CASE fieldcat-fieldname.
      WHEN 'MATNR'.
        fieldcat-tabname = 'IT1'.
        fieldcat-key = 'X'. " Key Column
        fieldcat-col_pos = 1. " Position on screen
        fieldcat-hotspot = ''. " Hotspot column
        fieldcat-seltext_s = 'Name'.
        fieldcat-ddictxt = 'S'.
        fieldcat-outputlen = 18.
      WHEN 'PSMNG'.
        fieldcat-tabname = 'IT1'.
        fieldcat-key = ' '. " Key Column
        fieldcat-col_pos = 2. " Position on screen
        fieldcat-hotspot = ' '. " Hotspot column
        fieldcat-seltext_s = 'Money'.
        fieldcat-ddictxt = 'S'.
        fieldcat-outputlen = 15.
        fieldcat-no_zero = 'X'.
        fieldcat-do_sum = 'X'. "SUM UPON DISPLAY
    ENDCASE.
    MODIFY fieldcat.
  ENDLOOP.
ENDFORM. " GET_FIELDCAT
*&---------------------------------------------------------------------*
*& Form GET_EVENTCAT
*&---------------------------------------------------------------------*
*   text
*----------------------------------------------------------------------*
FORM get_eventcat.

ENDFORM. " GET_EVENTCAT
*&---------------------------------------------------------------------*
*& Form GET_IT_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_it_sort.

  CLEAR it_sort.
  it_sort-fieldname = 'MATNR'.
  it_sort-spos = 1.
  it_sort-up = 'X'.
  it_sort-subtot = 'X'.
  APPEND it_sort.

* CLEAR IT_SORT.
* IT_SORT-FIELDNAME = 'AUFNR'.
* IT_SORT-SPOS = 2.
* IT_SORT-UP = 'X'.
* IT_SORT-SUBTOT = ''.
* APPEND IT_SORT.

ENDFORM. " GET_IT_SORT
*&---------------------------------------------------------------------*
*& Form START_LIST_VAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM start_list_val.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = prg
      is_layout          = gs_layout
      is_variant         = l_variant
      it_fieldcat        = fieldcat[]
      it_sort            = it_sort[]
      i_save             = 'A'
      it_events          = eventcat[]
    TABLES
      t_outtab           = it1
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.

ENDFORM. " START_LIST_VAL 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值