Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57037
  • 博文数量: 29
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-09 13:33
文章分类

全部博文(29)

文章存档

2014年(2)

2011年(1)

2010年(9)

2009年(17)

我的朋友

分类:

2009-07-10 16:07:00

REPORT  z_alv.

*-----------------------------------------------------------------------
* T Y P E S
*-----------------------------------------------------------------------
*-> TYPES
TYPES:
*-> ALV data
  BEGIN OF typ_h_tbl_data,
    matnr        TYPE marc-matnr,           "Material Number
    werks        TYPE marc-werks,           "Plant
    pstat        TYPE marc-pstat,           "Maintenance status
    lvorm        TYPE marc-lvorm,           "Flag Material
    bwtty        TYPE marc-bwtty,           "Valuation Category
    xchar        TYPE marc-xchar,           "Batch management
    mmsta        TYPE marc-mmsta,           "Plant-Specific
    mmstd        TYPE marc-mmstd,           "Date from which the
    maabc        TYPE marc-maabc,           "ABC Indicator
    kzkri        TYPE marc-kzkri,           "Indicator: Critical
    ekgrp        TYPE marc-ekgrp,           "Purchasing Group
    ausme        TYPE marc-ausme,           "Unit of issue
    dispr        TYPE marc-dispr,           "Material: MRP profile
    dismm        TYPE marc-dismm,           "MRP Type
    dispo        TYPE marc-dispo,           "MRP Controller
    kzdie        TYPE marc-kzdie,           "Indicator: MRP
    plifz        TYPE marc-plifz,           "Planned Delivery Time
    webaz        TYPE marc-webaz,           "Goods Receipt
    perkz        TYPE marc-perkz,           "Period Indicator
    ausss        TYPE marc-ausss,           "Assembly scrap in
    disls        TYPE marc-disls,           "Lot size (materials
    beskz        TYPE marc-beskz,           "Procurement Type
    sobsl        TYPE marc-sobsl,           "Special procurement
    minbe        TYPE marc-minbe,           "Reorder Point
    eisbe        TYPE marc-eisbe,           "Safety Stock
  END   OF typ_h_tbl_data.

*-> Table type
TYPES typ_tbl_alv TYPE STANDARD TABLE OF typ_h_tbl_data.

*-> Range type: location
TYPES typ_rng_matnr  TYPE RANGE OF marc-matnr.

*-> Range type: plant
TYPES typ_rng_werks  TYPE RANGE OF marc-werks.


*-----------------------------------------------------------------------
* D A T A
*-----------------------------------------------------------------------
*-> Internal table
DATA tbl_alv  TYPE typ_tbl_alv.

*-> Global Data
DATA: wk_matnr  TYPE marc-matnr,  "Material Number
      wk_plant  TYPE marc-werks.  "Plant

*-> Class
DATA wcl_alv    TYPE REF TO cl_salv_table.    "ALV table

*-----------------------------------------------------------------------
* C O N S T A N T S
*-----------------------------------------------------------------------
CONSTANTS:
  cns_on         TYPE c       VALUE 'X',               "Flag On
  cns_sep        TYPE c       VALUE '-',               "Seperator
  cns_matnr(16)  TYPE c       VALUE 'Material Number:',"Metrial No.
  cns_plant(6)   TYPE c       VALUE 'Plant:',          "Plant
  cns_pm(14)     TYPE c       VALUE 'Plant Material',  "Plant Material
  cns_gui_status TYPE sypfkey VALUE 'Y001'.            "ALV list menu

*-----------------------------------------------------------------------
* P A R A M E T E R S   &   S E L E C T - O P T I O N S
*-----------------------------------------------------------------------
*-> Material Number
SELECT-OPTIONS s_matnr FOR wk_matnr.
*-> Plant
SELECT-OPTIONS s_plant FOR wk_plant.

*-----------------------------------------------------------------------
* S T A R T - O F - S E L E C T I O N
*-----------------------------------------------------------------------
START-OF-SELECTION.
*-> Get data
  PERFORM get_data
            USING    s_matnr[]
                     s_plant[]
            CHANGING tbl_alv.

*-----------------------------------------------------------------------
* E N D - O F - S E L E C T I O N
*-----------------------------------------------------------------------
END-OF-SELECTION.
*-> Output ALV data
  PERFORM output_alv_data
            USING    tbl_alv.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       Get data
*----------------------------------------------------------------------*
*  -->  fu_rng_matnr     Material Number
*  -->  fu_rng_sdate     Plant
*  <--  fc_tbl_data      ALV data
*----------------------------------------------------------------------*
FORM get_data
       USING    fu_rng_matnr     TYPE typ_rng_matnr
                fu_rng_werks     TYPE typ_rng_werks
       CHANGING fc_tbl_alv       TYPE typ_tbl_alv.

*-> Get data
  SELECT matnr
         werks
         pstat
         lvorm
         bwtty
         xchar
         mmsta
         mmstd
         maabc
         kzkri
         ekgrp
         ausme
         dispr
         dismm
         dispo
         kzdie
         plifz
         webaz
         perkz
         ausss
         disls
         beskz
         sobsl
         minbe
         eisbe
    INTO TABLE tbl_alv
    FROM marc
   WHERE matnr IN fu_rng_matnr
     AND werks IN fu_rng_werks.
  IF sy-subrc = 0.
    SORT tbl_alv BY matnr ASCENDING
                    werks ASCENDING.
  ENDIF.

ENDFORM.                    " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  OUTPUT_ALV_DATA
*&---------------------------------------------------------------------*
*       Output ALV data
*----------------------------------------------------------------------*
* -->  fu_tbl_data      ALV data
*----------------------------------------------------------------------*
FORM output_alv_data
       USING fu_tbl_data    TYPE typ_tbl_alv.

*-> Local data
  DATA: l_wcl_columns TYPE REF TO cl_salv_columns_table,"ALV columns
        l_wcl_column  TYPE REF TO cl_salv_column_table, "ALV column
        l_wcl_display TYPE REF TO cl_salv_display_settings,"Display
        l_wcl_grid    TYPE REF TO cl_salv_form_layout_grid,"Grid table
        l_wcl_selections TYPE REF TO cl_salv_selections,"Selection
        l_wk_text        TYPE char255.

  CREATE OBJECT l_wcl_grid.

*-> Set ALV commission list data
  TRY .
      CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = wcl_alv
        CHANGING
          t_table      = fu_tbl_data.
    CATCH cx_salv_msg.
  ENDTRY.

*-> Set Title Information
  l_wcl_grid->create_header_information(
    row     = 1
    column  = 1
    text    = cns_pm ).

*-> Set Header Data(Top of page)
*-> Line 1(Material Number)
  l_wcl_grid->create_text(
    row     = 2
    column  = 1
    text    = cns_matnr ).

  CONCATENATE s_matnr-low cns_sep s_matnr-high
         INTO l_wk_text SEPARATED BY space.
  l_wcl_grid->create_text(
    row     = 2
    column  = 2
    text    = l_wk_text ).

*-> Line 2(Plant)
  l_wcl_grid->create_text(
    row     = 3
    column  = 1
    text    = cns_plant ).

  CONCATENATE s_plant-low cns_sep s_plant-high
         INTO l_wk_text SEPARATED BY space.
  l_wcl_grid->create_text(
    row     = 3
    column  = 2
    text    = l_wk_text ).

  wcl_alv->set_top_of_list( l_wcl_grid ).

*-> Set optimize columns width
  l_wcl_columns = wcl_alv->get_columns( ).
  l_wcl_columns->set_optimize( ).

*-> Set ALV striped pattern
  l_wcl_display = wcl_alv->get_display_settings( ).
  l_wcl_display->set_striped_pattern( value = abap_true ).

*-> Set Selection Mode
  l_wcl_selections = wcl_alv->get_selections( ).
  l_wcl_selections->set_selection_mode(
    value = if_salv_c_selection_mode=>cell ).

*-> Set GUI status
  wcl_alv->set_screen_status(
    pfstatus      = cns_gui_status
    report        = sy-repid
    set_functions = wcl_alv->c_functions_all ).

* display ALV list
  wcl_alv->display( ).

ENDFORM.                    " OUTPUT_ALV_DATA

阅读(488) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~