Вот наваял отчетик, для анализа движения материалов, может кому понадобиться! Делалась для модуля PP! Можно конечно расширить!
Code:
*&---------------------------------------------------------------------*
*& Report ZMB51 *
*&---------------------------------------------------------------------*
REPORT zmb51.
TABLES: mseg, mkpf, sscrfields, aufk.
DATA: BEGIN OF str_car,
matnr TYPE matnr, " номер материала
aufnr TYPE bstnr, " номер заказа на поставку
data TYPE datum, " Дата заказа на поставку
sklad_out TYPE lgort_d, " Склад погрузки
mtsnr_out TYPE mblnr, " номер документа материала ВДМ отгрузки
type_out TYPE bwart, " тип движения при отгрузке
measure_out TYPE erfme, " ед.измер. отгрузки отгрузки
menge_out TYPE ktmng, " объем перевозки отгрузки
sklad_in TYPE lgort_d, " Склад приема
mtsnr_in TYPE mblnr, " номер документа материала ВДМ приема
type_in TYPE bwart, " тип движения при приеме
measure_in TYPE erfme, " ед.измер. отгрузки приема
menge_in TYPE ktmng, " объем перевозки приема
type_car TYPE bezei20, " тип перевозки
orderid TYPE aufnr, " номер тех.заказа
verid TYPE verid, " вариант иготовления
ism01 TYPE ru_ismng, " Работы
mat_doc TYPE mblnr,
doc_year TYPE mjahr,
entry_time TYPE cputm, " Время ввода
matdoc_itm TYPE mblpo,
END OF str_car,
tbl_car LIKE str_car OCCURS 0 WITH HEADER LINE,
tbl_car1 LIKE str_car OCCURS 0 WITH HEADER LINE,
tbl_car2 LIKE str_car OCCURS 0 WITH HEADER LINE,
ok_code LIKE sy-ucomm,
par_trans TYPE num1.
DATA: is_variant LIKE disvariant.
INITIALIZATION.
**---------------------------------------------------------------------*
** Экран заполнения параметров отчета
**---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-003.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.
SELECT-OPTIONS matnr FOR mseg-matnr MEMORY ID zpp_matnr. " Материал
SELECT-OPTIONS werks FOR mseg-werks MEMORY ID zpp_werks. " завод
SELECT-OPTIONS period FOR mkpf-budat MEMORY ID zpp_dats. " период
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS trans_ RADIOBUTTON GROUP g1.
SELECTION-SCREEN COMMENT 4(22) text-004 FOR FIELD trans_.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS work_ RADIOBUTTON GROUP g1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 4(30) text-005 FOR FIELD work_.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-007.
PARAMETER variant LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK b4.
SELECTION-SCREEN END OF BLOCK b1.
IF NOT par_trans IS INITIAL.
CASE par_trans.
WHEN 1.
trans_ = 'X'.
work_ = ''.
WHEN 2.
trans_ = ''.
work_ = 'X'.
ENDCASE.
MODIFY SCREEN.
ENDIF.
LOAD-OF-PROGRAM.
GET PARAMETER ID 'PAR_TRANS' FIELD par_trans.
START-OF-SELECTION.
IF matnr IS INITIAL AND werks IS INITIAL AND period IS INITIAL.
MESSAGE 'Выбор не был ограничен!' TYPE 'S'.
EXIT.
ENDIF.
PERFORM data_select_trans.
PERFORM output_alv.
END-OF-SELECTION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR variant.
PERFORM alv_variant.
**********************************************************************
* Формирование данных по транспорту
**********************************************************************
FORM data_select_trans.
DATA: order_range LIKE bapi_pp_orderrange OCCURS 0 WITH HEADER LINE,
goodsmovements LIKE bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
goodsmov LIKE bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
confirmations LIKE bapi_pp_conf_key OCCURS 0 WITH HEADER LINE,
confirm LIKE bapi_pp_conf_key OCCURS 0 WITH HEADER LINE.
DATA: move_type_ra LIKE bapi2017_gm_move_type_ra OCCURS 0 WITH HEADER LINE,
goodsmvt_header LIKE bapi2017_gm_head_02 OCCURS 0 WITH HEADER LINE,
goodsmvt_items LIKE bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
goodsmvt_items1 LIKE bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
nomtk TYPE oij_nomtk,
shtype TYPE oig_tdstyp.
DATA: move_t(3) TYPE c.
DATA: mov(3) TYPE c,
line TYPE i,
* orderid TYPE aufnr,
mat_doc TYPE mblnr,
mat_doc1 TYPE mblnr,
bool TYPE i,
data TYPE sy-datum,
bednr TYPE bednr,
verid TYPE verid,
banfn TYPE banfn.
REFRESH : return, goodsmvt_items, goodsmvt_header,
move_type_ra, order_range, confirmations,tbl_car1, tbl_car, tbl_car2.
CLEAR : return, goodsmvt_items, goodsmvt_header,
move_type_ra, move_t, order_range, confirmations, tbl_car, tbl_car1, tbl_car2.
move_type_ra-sign = 'I'.
move_type_ra-option = 'BT'.
IF trans_ = 'X' .
move_type_ra-low = '351'.
move_type_ra-high = '352'.
APPEND move_type_ra.
ENDIF.
move_type_ra-low = '101'.
move_type_ra-high = '102'.
APPEND move_type_ra.
CALL FUNCTION 'BAPI_GOODSMVT_GETITEMS'
TABLES
material_ra = matnr
plant_ra = werks
move_type_ra = move_type_ra
pstng_date_ra = period
goodsmvt_header = goodsmvt_header
goodsmvt_items = goodsmvt_items
return = return.
IF trans_ = 'X' .
goodsmvt_items1[] = goodsmvt_items[].
LOOP AT goodsmvt_items WHERE orderid IS INITIAL AND stge_loc IS NOT INITIAL
AND ( move_type = '351' OR move_type = '352' ).
READ TABLE goodsmvt_header WITH KEY mat_doc = goodsmvt_items-mat_doc.
tbl_car-matnr = goodsmvt_items-material.
tbl_car-aufnr = goodsmvt_items-po_number.
tbl_car-data = goodsmvt_header-doc_date.
tbl_car-sklad_out = goodsmvt_items-stge_loc.
tbl_car-mtsnr_out = goodsmvt_items-mat_doc.
tbl_car-type_out = goodsmvt_items-move_type.
IF goodsmvt_items-move_type = '351'.
tbl_car-menge_out = goodsmvt_items-entry_qnt.
ELSE.
tbl_car-menge_out = -1 * goodsmvt_items-entry_qnt.
ENDIF.
CLEAR: banfn, verid, bednr.
SELECT SINGLE banfn FROM ekpo " номер заявки
INTO banfn
WHERE ebeln = goodsmvt_items-po_number.
SELECT SINGLE verid FROM eban " вариант изготовления
INTO verid
WHERE banfn = banfn.
SELECT SINGLE bednr FROM eban " вариант изготовления
INTO bednr
WHERE banfn = banfn.
CONDENSE verid NO-GAPS.
CONDENSE bednr NO-GAPS.
CONCATENATE verid bednr INTO tbl_car-verid.
WRITE goodsmvt_items-entry_uom TO tbl_car-measure_out .
IF goodsmvt_items-move_type = '351'.
move_t = '101'.
ELSEIF goodsmvt_items-move_type = '352'.
move_t = '102'.
ENDIF.
CLEAR tbl_car1. REFRESH tbl_car1.
tbl_car1[] = tbl_car[].
CLEAR: tbl_car-menge_in, tbl_car-measure_in, tbl_car-mtsnr_in, tbl_car-sklad_in, tbl_car-type_in.
LOOP AT goodsmvt_items1 WHERE orderid IS INITIAL AND stge_loc IS NOT INITIAL
AND move_type = move_t AND po_number = goodsmvt_items-po_number.
READ TABLE tbl_car1 WITH KEY mtsnr_in = goodsmvt_items1-mat_doc.
IF sy-subrc <> 0.
tbl_car-mtsnr_in = goodsmvt_items1-mat_doc.
tbl_car-sklad_in = goodsmvt_items1-stge_loc.
* tbl_car-measure_in = goodsmvt_items1-entry_uom.
tbl_car-orderid = goodsmvt_items1-orderid.
WRITE goodsmvt_items1-entry_uom TO tbl_car-measure_in.
IF goodsmvt_items1-move_type = '101'.
tbl_car-menge_in = goodsmvt_items1-entry_qnt.
tbl_car-type_in = goodsmvt_items1-move_type.
ELSE.
tbl_car-menge_in = -1 * goodsmvt_items1-entry_qnt.
tbl_car-type_in = goodsmvt_items1-move_type.
ENDIF.
EXIT.
ENDIF.
ENDLOOP.
SELECT SINGLE nomtk FROM oijnomi INTO nomtk
WHERE docnr = goodsmvt_items-po_number.
SELECT SINGLE shtype FROM oijnomh INTO shtype
WHERE nomtk = nomtk.
tbl_car-type_car = shtype.
APPEND tbl_car.
ENDLOOP.
*------------------------------------------------------------------------
ELSEIF work_ = 'X' .
LOOP AT goodsmvt_items.
READ TABLE goodsmvt_header WITH KEY mat_doc = goodsmvt_items-mat_doc.
tbl_car1-matnr = goodsmvt_items-material.
tbl_car1-aufnr = goodsmvt_items-po_number.
tbl_car1-data = goodsmvt_header-pstng_date.
tbl_car1-sklad_in = goodsmvt_items-stge_loc.
tbl_car1-mtsnr_in = goodsmvt_items-mat_doc.
tbl_car1-type_in = goodsmvt_items-move_type.
tbl_car1-orderid = goodsmvt_items-orderid.
WRITE goodsmvt_items-entry_uom TO tbl_car1-measure_in .
IF goodsmvt_items-move_type = '101'.
tbl_car1-menge_in = goodsmvt_items-entry_qnt.
ELSE.
tbl_car1-menge_in = -1 * goodsmvt_items-entry_qnt.
ENDIF.
tbl_car1-mat_doc = goodsmvt_items-mat_doc.
tbl_car1-doc_year = goodsmvt_items-doc_year.
tbl_car1-entry_time = goodsmvt_header-entry_time.
* Проверка тех.заказа
SELECT SINGLE * FROM aufk
WHERE aufnr EQ tbl_car1-orderid
AND
phas2 NE 'X'
AND
phas3 NE 'X'
AND
loekz NE 'X'.
IF sy-subrc = 0 AND aufk-autyp = 40.
APPEND tbl_car1.
ELSE.
CLEAR tbl_car1.
ENDIF.
ENDLOOP.
SORT tbl_car1 BY entry_time.
CLEAR: tbl_car, data.
*---------------------------------------------------------------------------
*---------------------------------------------------------------------------
*---------------------------------------------------------------------------
REFRESH : return, goodsmvt_items, goodsmvt_header, goodsmvt_items1.
CLEAR : return, goodsmvt_items, goodsmvt_header, goodsmvt_items1.
LOOP AT tbl_car1.
CALL FUNCTION 'BAPI_GOODSMVT_GETDETAIL'
EXPORTING
materialdocument = tbl_car1-mat_doc
matdocumentyear = tbl_car1-doc_year
IMPORTING
goodsmvt_header = goodsmvt_header
TABLES
goodsmvt_items = goodsmvt_items
return = return.
APPEND goodsmvt_items TO goodsmvt_items1.
REFRESH goodsmvt_items.
CLEAR goodsmvt_items.
ENDLOOP.
DATA: BEGIN OF order_str,
orderid TYPE aufnr,
mtsnr TYPE mblnr,
END OF order_str,
order_tbl LIKE order_str OCCURS 0 WITH HEADER LINE.
CLEAR: order_tbl.
REFRESH: order_tbl.
LOOP AT goodsmvt_items1.
READ TABLE order_tbl WITH KEY orderid = goodsmvt_items1-orderid.
IF sy-subrc = 0.
READ TABLE order_tbl WITH KEY mtsnr = goodsmvt_items1-mat_doc.
IF sy-subrc <> 0.
order_tbl-orderid = goodsmvt_items1-orderid.
order_tbl-mtsnr = goodsmvt_items1-mat_doc.
APPEND order_tbl.
ENDIF.
ELSE.
order_tbl-orderid = goodsmvt_items1-orderid.
order_tbl-mtsnr = goodsmvt_items1-mat_doc.
APPEND order_tbl.
ENDIF.
ENDLOOP.
LOOP AT order_tbl.
order_range-sign = 'I'.
order_range-option = 'EQ'.
order_range-low = order_tbl-orderid.
APPEND order_range.
CALL FUNCTION 'ZBAPI_PRODORDCONF_GETLIST'
TABLES
order_range = order_range
confirmations = confirmations.
APPEND LINES OF confirmations TO confirm.
REFRESH order_range.
CLEAR order_range.
ENDLOOP.
DATA: conf_detail LIKE bapi_pp_confirm OCCURS 0 WITH HEADER LINE,
my_conf_detail LIKE bapi_pp_confirm OCCURS 0 WITH HEADER LINE,
work_conf_detail LIKE bapi_pp_confirm OCCURS 0 WITH HEADER LINE,
myconf_no TYPE co_rueck,
n TYPE i, n_tools TYPE i.
CLEAR: conf_detail,my_conf_detail, work_conf_detail, mat_doc, myconf_no.
REFRESH: conf_detail, my_conf_detail, work_conf_detail.
LOOP AT confirm.
CALL FUNCTION 'ZBAPI_PRODORDCONF_GETDETAIL'
EXPORTING
confirmation = confirm-conf_no
confirmationcounter = confirm-conf_cnt
IMPORTING
conf_detail = conf_detail
TABLES
goodsmovements = goodsmovements.
APPEND LINES OF goodsmovements TO goodsmov.
APPEND conf_detail TO my_conf_detail.
ENDLOOP.
SORT my_conf_detail BY conf_no conf_cnt orderid operation.
READ TABLE my_conf_detail INDEX 1.
myconf_no = my_conf_detail-conf_no.
DELETE ADJACENT DUPLICATES FROM my_conf_detail COMPARING ALL FIELDS.
DESCRIBE TABLE my_conf_detail LINES n.
LOOP AT my_conf_detail.
n_tools = sy-tabix.
IF ( my_conf_detail-yield IS NOT INITIAL ) OR ( my_conf_detail-conf_activity1 < 0 ).
IF myconf_no = my_conf_detail-conf_no.
IF my_conf_detail-reversed = 'X'.
work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 - my_conf_detail-conf_activity1.
ELSE.
work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 + my_conf_detail-conf_activity1.
ENDIF.
work_conf_detail-orderid = my_conf_detail-orderid.
ELSE.
APPEND work_conf_detail.
CLEAR work_conf_detail.
myconf_no = my_conf_detail-conf_no.
IF my_conf_detail-reversed = 'X'.
work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 - my_conf_detail-conf_activity1.
ELSE.
work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 + my_conf_detail-conf_activity1.
ENDIF.
work_conf_detail-orderid = my_conf_detail-orderid.
ENDIF.
ENDIF.
IF n = n_tools.
APPEND work_conf_detail.
ENDIF.
ENDLOOP.
DATA: order_sel TYPE aufnr, my-subrc TYPE sy-subrc.
CLEAR: order_sel,tbl_car, my-subrc.
SORT confirm BY orderid.
DELETE ADJACENT DUPLICATES FROM confirm COMPARING orderid.
DESCRIBE TABLE confirm LINES n.
LOOP AT goodsmov.
IF order_sel <> goodsmov-orderid.
IF sy-tabix <> 1.
CLEAR: tbl_car2. REFRESH tbl_car2.
tbl_car2[] = tbl_car[].
LOOP AT tbl_car1 WHERE orderid = order_sel.
READ TABLE tbl_car2 WITH KEY mtsnr_in = tbl_car1-mtsnr_in.
IF sy-subrc <> 0.
tbl_car-orderid = tbl_car1-orderid.
tbl_car-menge_out = ''.
tbl_car-ism01 = ''.
tbl_car-sklad_in = tbl_car1-sklad_in.
tbl_car-mtsnr_in = tbl_car1-mtsnr_in.
tbl_car-type_in = tbl_car1-type_in.
tbl_car-menge_in = tbl_car1-menge_in.
tbl_car-measure_in = tbl_car1-measure_in.
APPEND tbl_car.
ENDIF.
ENDLOOP.
CLEAR tbl_car.
ENDIF.
READ TABLE work_conf_detail WITH KEY orderid = goodsmov-orderid .
IF sy-subrc = 0.
tbl_car-ism01 = work_conf_detail-conf_activity1.
order_sel = goodsmov-orderid.
ENDIF.
ELSE.
IF ( sy-tabix <> 1 ) AND ( n = 1 ).
CLEAR: tbl_car2. REFRESH tbl_car2.
tbl_car2[] = tbl_car[].
LOOP AT tbl_car1 WHERE orderid = order_sel.
READ TABLE tbl_car2 WITH KEY mtsnr_in = tbl_car1-mtsnr_in.
IF sy-subrc <> 0.
tbl_car-orderid = tbl_car1-orderid.
tbl_car-menge_out = ''.
IF my-subrc = 0.
tbl_car-ism01 = ''.
ENDIF.
* tbl_car-ism01 = ''.
tbl_car-sklad_in = tbl_car1-sklad_in.
tbl_car-mtsnr_in = tbl_car1-mtsnr_in.
tbl_car-type_in = tbl_car1-type_in.
tbl_car-menge_in = tbl_car1-menge_in.
tbl_car-measure_in = tbl_car1-measure_in.
APPEND tbl_car.
ENDIF.
ENDLOOP.
CLEAR tbl_car.
ENDIF.
IF my-subrc = 0.
CLEAR tbl_car-ism01.
ENDIF.
ENDIF.
CLEAR: matnr, move_type_ra.
REFRESH: matnr, move_type_ra.
move_type_ra-sign = 'I'.
move_type_ra-option = 'BT'.
move_type_ra-low = '261'.
move_type_ra-high = '262'.
APPEND move_type_ra.
matnr-sign = 'I'.
matnr-option = 'EQ'.
matnr-low = goodsmov-material.
APPEND matnr.
CALL FUNCTION 'BAPI_GOODSMVT_GETITEMS'
TABLES
material_ra = matnr
plant_ra = werks
move_type_ra = move_type_ra
pstng_date_ra = period
goodsmvt_header = goodsmvt_header
goodsmvt_items = goodsmvt_items
return = return.
READ TABLE goodsmvt_header WITH KEY mat_doc = goodsmov-mat_doc.
my-subrc = sy-subrc.
IF my-subrc = 0.
CLEAR bool. CLEAR mat_doc1.
IF goodsmov-move_type = '261' OR goodsmov-move_type = '531'.
mov = '101'.
tbl_car-menge_out = goodsmov-entry_qnt.
ELSEIF goodsmov-move_type = '262' OR goodsmov-move_type = '532'.
tbl_car-menge_out = -1 * goodsmov-entry_qnt.
mov = '102'.
ENDIF.
CLEAR: tbl_car2. REFRESH tbl_car2.
CLEAR: tbl_car-menge_in, tbl_car-measure_in, tbl_car-mtsnr_in, tbl_car-sklad_in, tbl_car-type_in.
tbl_car2[] = tbl_car[].
LOOP AT tbl_car1 WHERE orderid = goodsmov-orderid AND type_in = mov.
READ TABLE tbl_car2 WITH KEY mtsnr_in = tbl_car1-mtsnr_in.
IF sy-subrc <> 0.
tbl_car-sklad_in = tbl_car1-sklad_in.
tbl_car-mtsnr_in = tbl_car1-mtsnr_in.
tbl_car-type_in = tbl_car1-type_in.
tbl_car-menge_in = tbl_car1-menge_in.
tbl_car-measure_in = tbl_car1-measure_in.
ENDIF.
ENDLOOP.
READ TABLE tbl_car2 WITH KEY mtsnr_out = goodsmov-mat_doc matdoc_itm = goodsmov-matdoc_itm.
IF sy-subrc <> 0.
tbl_car-aufnr = tbl_car1-aufnr .
tbl_car-data = tbl_car1-data.
tbl_car-orderid = tbl_car1-orderid.
tbl_car-matnr = goodsmov-material.
tbl_car-sklad_out = goodsmov-stge_loc.
tbl_car-mtsnr_out = goodsmov-mat_doc.
tbl_car-type_out = goodsmov-move_type.
tbl_car-matdoc_itm = goodsmov-matdoc_itm.
SELECT SINGLE verid FROM afpo
INTO tbl_car-verid
WHERE aufnr = tbl_car1-orderid.
WRITE goodsmov-entry_uom TO tbl_car-measure_out .
APPEND tbl_car.
ELSE.
IF tbl_car-mtsnr_in <> ''.
tbl_car-data = tbl_car1-data.
tbl_car-orderid = tbl_car1-orderid.
tbl_car-matnr = goodsmov-material.
tbl_car-menge_out = ''.
tbl_car-ism01 = ''.
APPEND tbl_car.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. "data_select_trans
*&---------------------------------------------------------------------*
*& Вывод данных в ALV-GRID
*&---------------------------------------------------------------------*
FORM output_alv.
CLEAR is_variant.
is_variant-variant = variant.
TYPE-POOLS slis.
DATA: m_field_cat1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
m_field_cat TYPE slis_t_fieldcat_alv,
user_command TYPE slis_formname,
m_sortinfo_alv1 TYPE slis_t_sortinfo_alv WITH HEADER LINE,
m_sortinfo_alv TYPE slis_t_sortinfo_alv.
DATA: gt_events TYPE slis_t_event WITH HEADER LINE.
REFRESH: m_field_cat, m_field_cat1.
CLEAR: m_field_cat, m_field_cat1.
user_command = 'user_command_0100'.
m_field_cat1-col_pos = 1.
m_field_cat1-fieldname = 'MATNR'.
m_field_cat1-seltext_l = 'Материал'.
m_field_cat1-outputlen = 17.
APPEND m_field_cat1.
m_field_cat1-col_pos = 2.
m_field_cat1-fieldname = 'AUFNR'.
m_field_cat1-seltext_l = '№ Зак. на поставку'.
m_field_cat1-outputlen = 15.
APPEND m_field_cat1.
m_field_cat1-col_pos = 3.
m_field_cat1-fieldname = 'DATA'.
m_field_cat1-seltext_l = 'Дата ЗакНаПост'.
m_field_cat1-outputlen = 10.
APPEND m_field_cat1.
m_field_cat1-col_pos = 4.
m_field_cat1-fieldname = 'SKLAD_OUT'.
m_field_cat1-seltext_l = 'Склад погр.'.
m_field_cat1-outputlen = 5.
APPEND m_field_cat1.
m_field_cat1-col_pos = 5.
m_field_cat1-fieldname = 'MTSNR_OUT'.
m_field_cat1-seltext_l = '№ документа материала'.
m_field_cat1-outputlen = 12.
APPEND m_field_cat1.
m_field_cat1-col_pos = 6.
m_field_cat1-fieldname = 'TYPE_OUT'.
m_field_cat1-seltext_l = 'ВДМ'.
m_field_cat1-outputlen = 5.
APPEND m_field_cat1.
m_field_cat1-col_pos = 7.
m_field_cat1-fieldname = 'MEASURE_OUT'.
m_field_cat1-seltext_l = 'Ед.изм.'.
m_field_cat1-outputlen = 5.
APPEND m_field_cat1.
m_field_cat1-col_pos = 8.
m_field_cat1-fieldname = 'MENGE_OUT'.
m_field_cat1-seltext_l = 'Объем'.
m_field_cat1-outputlen = 15.
APPEND m_field_cat1.
m_field_cat1-col_pos = 9.
m_field_cat1-fieldname = 'SKLAD_IN'.
m_field_cat1-seltext_l = 'Склад разг.'.
m_field_cat1-outputlen = 5.
APPEND m_field_cat1.
m_field_cat1-col_pos = 10.
m_field_cat1-fieldname = 'MTSNR_IN'.
m_field_cat1-seltext_l = '№ документа материала'.
m_field_cat1-outputlen = 12.
APPEND m_field_cat1.
m_field_cat1-col_pos = 11.
m_field_cat1-fieldname = 'TYPE_IN'.
m_field_cat1-seltext_l = 'ВДМ'.
m_field_cat1-outputlen = 5.
APPEND m_field_cat1.
m_field_cat1-col_pos = 12.
m_field_cat1-fieldname = 'MEASURE_IN'.
m_field_cat1-seltext_l = 'Ед.изм.'.
m_field_cat1-outputlen = 5.
APPEND m_field_cat1.
m_field_cat1-col_pos = 13.
m_field_cat1-fieldname = 'MENGE_IN'.
m_field_cat1-seltext_l = 'Объем'.
m_field_cat1-outputlen = 15.
APPEND m_field_cat1.
m_field_cat1-col_pos = 14.
m_field_cat1-fieldname = 'TYPE_CAR'.
m_field_cat1-seltext_l = 'Тип перевозки'.
m_field_cat1-outputlen = 6.
APPEND m_field_cat1.
m_field_cat1-col_pos = 15.
m_field_cat1-fieldname = 'ORDERID'.
m_field_cat1-seltext_l = '№ тех.заказа'.
m_field_cat1-outputlen = 14.
APPEND m_field_cat1.
m_field_cat1-col_pos = 16.
m_field_cat1-fieldname = 'VERID'.
m_field_cat1-seltext_l = 'ВарИзг'.
m_field_cat1-outputlen = 6.
APPEND m_field_cat1.
m_field_cat1-col_pos = 17.
m_field_cat1-fieldname = 'ISM01'.
m_field_cat1-seltext_l = 'ОбПодРаб'.
m_field_cat1-outputlen = 12.
APPEND m_field_cat1.
m_field_cat[] = m_field_cat1[].
REFRESH: m_sortinfo_alv1, m_sortinfo_alv.
CLEAR: m_sortinfo_alv1, m_sortinfo_alv.
m_sortinfo_alv1-spos = 1.
m_sortinfo_alv1-fieldname = 'DATA'.
m_sortinfo_alv1-tabname = 'TBL_CAR'.
m_sortinfo_alv1-up = 'X'.
APPEND m_sortinfo_alv1.
m_sortinfo_alv1-spos = 2.
m_sortinfo_alv1-fieldname = 'ORDERID'.
m_sortinfo_alv1-tabname = 'TBL_CAR'.
m_sortinfo_alv1-up = 'X'.
APPEND m_sortinfo_alv1.
m_sortinfo_alv[] = m_sortinfo_alv1[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-cprog
* i_callback_pf_status_set = ''
i_callback_user_command = 'USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
it_fieldcat = m_field_cat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = m_sortinfo_alv
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
is_variant = is_variant
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = tbl_car
* 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. "output_alv
**********************************************************************
* FORM : user_command
**********************************************************************
FORM user_command USING u_ucomm LIKE sy-ucomm "#EC CALLED
selfield TYPE slis_selfield.
CASE u_ucomm.
WHEN '&IC1'.
IF selfield-tabindex <> 0.
READ TABLE tbl_car INDEX selfield-tabindex.
CASE selfield-fieldname.
WHEN 'MTSNR_OUT'.
SET PARAMETER ID 'MJA' FIELD tbl_car-data(4).
SET PARAMETER ID 'MBN' FIELD tbl_car-mtsnr_out.
CALL TRANSACTION 'MIGO' AND SKIP FIRST SCREEN .
SET PARAMETER ID 'MBN' FIELD ''.
SET PARAMETER ID 'MJA' FIELD ''.
WHEN 'MTSNR_IN'.
SET PARAMETER ID 'MJA' FIELD tbl_car-data(4).
SET PARAMETER ID 'MBN' FIELD tbl_car-mtsnr_in.
CALL TRANSACTION 'MIGO' AND SKIP FIRST SCREEN .
SET PARAMETER ID 'MBN' FIELD ''.
SET PARAMETER ID 'MJA' FIELD ''.
WHEN 'AUFNR'.
SET PARAMETER ID 'BSA' FIELD 'F'.
SET PARAMETER ID 'BES' FIELD tbl_car-aufnr.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN .
WHEN 'ORDERID'.
SET PARAMETER ID 'ANR' FIELD tbl_car-orderid.
CALL TRANSACTION 'CORT' AND SKIP FIRST SCREEN .
ENDCASE.
ENDIF.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Возвращает варианты просмотра
*&---------------------------------------------------------------------*
FORM alv_variant.
DATA: alv_variant LIKE disvariant.
DATA: alv_repid LIKE sy-repid.
alv_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = alv_variant
i_save = 'A'
IMPORTING
es_variant = alv_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
variant = alv_variant-variant.
ENDIF.
ENDFORM. "alv_variant