封装使用ALV

  FORM display .
  DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
        it_events   TYPE slis_t_event,
        is_layout   TYPE slis_layout_alv,
        title       TYPE lvc_title,
        it_sort     TYPE slis_t_sortinfo_alv WITH HEADER LINE .
  DATA: g_repid TYPE sy-repid.

  PERFORM layout_init CHANGING is_layout.
  PERFORM fieldcat_init CHANGING it_fieldcat.

  g_repid  = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program          = g_repid
      i_callback_html_top_of_page = 'HTML_HEADER'  " HTML Header
      i_html_height_top           = 12             "Header area height
      is_layout                   = is_layout
      it_fieldcat                 = it_fieldcat
*      it_events                   = it_events
    TABLES
      t_outtab                    = it_result
    EXCEPTIONS
      program_error               = 1
      OTHERS                      = 2.
  IF sy-subrc <> 0.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " display

*&---------------------------------------------------------------------*
*&      Form  layout_init
*&---------------------------------------------------------------------*
*       Layout initialization for ALV
*----------------------------------------------------------------------*
FORM layout_init  CHANGING  is_layout  TYPE slis_layout_alv.
  is_layout-colwidth_optimize = 'X'" ALV各列自适应列宽
ENDFORM.                    " layout_init

*&---------------------------------------------------------------------*
*&      Form  fieldcat_init
*&---------------------------------------------------------------------*
*       ALV Colum header Text Set
*----------------------------------------------------------------------*
FORM fieldcat_init USING   it_fieldcat TYPE slis_t_fieldcat_alv.
  DATA: ls_fieldcat TYPE slis_fieldcat_alv.

  DEFINE gen_fieldcatalog. " Fill data to  fieldcat
    ls_fieldcat-col_pos   = &1.    " Column No.
    ls_fieldcat-fieldname = &2.    "Field Name
    ls_fieldcat-seltext_m = &3.    "Column Title
    ls_fieldcat-no_out    = &4.    "Display? X-No display
    ls_fieldcat-hotspot   = &5.    "event?.
    ls_fieldcat-do_sum    = &6.    " Total
    ls_fieldcat-no_zero   = &7.    "No Dispplay front Zero.
    append ls_fieldcat to it_fieldcat.
  END-OF-DEFINITION.
  "设用宏,为每列指定列头
  " Changed by garywang 2008-11-18 增加三列 客户号/客户名称/货币
  gen_fieldcatalog  '1'  'KUNRG'  'Customer No.'  space  space  space  'X'.
  gen_fieldcatalog  '2'  'NAME1'  'Customer Name'  space  space  space  space.
  gen_fieldcatalog  '3'  'PSPID'  'Project Code'  space  space  space  space.
  gen_fieldcatalog  '4'  'FKDAT'  'Sales Date'  space  space  space  space.
  gen_fieldcatalog  '5'  'VTEXT'  'Due Date'  space  space  space  space.
  gen_fieldcatalog  '6'  'BUDAT'  'Received Date'  space  space  space  space.
  gen_fieldcatalog  '7'  'VBELN'  'Invice No.'  space  space  space  'X'.
  gen_fieldcatalog  '8'  'POSNR'  'Item No.'  space  space  space  space.
  gen_fieldcatalog  '9'  'INVO_NO'  'Custom No.'  space  space  space  space.
  gen_fieldcatalog  '10'  'POST1'  'Project Name'  space  space  space  space.
  gen_fieldcatalog  '11'  'SERNR'  'Remark'  space  space  space  space.
  gen_fieldcatalog  '12'  'LANDX'  'Country'  space  space  space  space.
  gen_fieldcatalog  '13'  'KTEXT'  'Region'  space  space  space  space.
  gen_fieldcatalog  '14'  'FKIMG'  'Quantity'  space  space  space  space.
  gen_fieldcatalog  '15'  'MATNR'  'Material'  space  space  space  'X'.
  gen_fieldcatalog  '16'  'WAERK'  'Currency'  space  space  space  space.
  gen_fieldcatalog  '17'  'NETWR'  'Sales Price'  space  space  space  space.
  gen_fieldcatalog  '18'  'AMOUNT'  'Amount(RMB)'  space  space  space  space.
  gen_fieldcatalog  '19'  'MWSBP'  'VAT'  space  space  space  space.
  gen_fieldcatalog  '20'  'CMSN'  'Commission'  space  space  space  space.
ENDFORM.                    " fieldcat_init

*&---------------------------------------------------------------------*
*&      Form  header
*&---------------------------------------------------------------------*
*       HTML Header
*----------------------------------------------------------------------*
FORM html_header USING document TYPE REF TO cl_dd_document.
  DATAtext TYPE sdydo_text_element.
  DATA: v_date1 TYPE string,
        v_date2 TYPE string.

  v_date1 = fkdat-low.
  v_date2 = fkdat-high.
  text = 'Invoice List of Sales'.

  IF v_date1 <> space AND v_date2 <> space.
    CONCATENATE v_date1 '-' v_date2 text INTO text SEPARATED BY space.
  ELSEIF v_date1 <> space.
    CONCATENATE v_date1 text INTO text SEPARATED BY space.
  ELSEIF v_date2 <> space.
    CONCATENATE v_date2 text INTO text SEPARATED BY space.
  ENDIF.

  CALL METHOD document->add_text
    EXPORTING
      text      = text
      sap_style = 'HEADING'.
  CALL METHOD document->new_line.
ENDFORM.                    " header

你可能感兴趣的:(封装使用ALV)