分类:
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