*&---------------------------------------------------------------------*
*& Report ZSD_SCH_DEL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSD_SCH_DEL.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
TABLES: vbak, vbap, vbep, vbfa, vbup, T001.
TYPES: BEGIN OF vbep_ty,
vbeln TYPE vbepvb-vbeln,
posnr TYPE vbepvb-posnr,
etenr TYPE vbepvb-etenr,
ettyp TYPE vbepvb-ettyp,
edatu TYPE vbepvb-edatu,
lddat type vbepvb-lddat,
* mbdat TYPE vbepvb-mbdat,
wmeng TYPE vbepvb-wmeng,
bmeng TYPE vbepvb-bmeng,
olfmng TYPE vbepvb-olfmng,
vsmng TYPE vbepvb-vsmng,
vrkme TYPE vbepvb-vrkme,
vbelv TYPE VBFA-vbelv,
posnv TYPE VBFA-posnv,
END OF vbep_ty.
DATA: vbep_out TYPE STANDARD TABLE OF vbep_ty,
lvbep_out TYPE vbep_ty.
TYPES: BEGIN OF vbep_ty_1,
matnr TYPE mara-matnr,
maktx type makt-maktx,
MATKL TYPE MARA-MATKL,
vbeln TYPE vbepvb-vbeln,
gbsta TYPE vbup-gbsta,
pstyv TYPE vbap-pstyv,
posnr TYPE vbepvb-posnr,
etenr TYPE vbepvb-etenr,
kunnr type vbak-kunnr,
name1 type kna1-name1,
werks type vbap-werks,
lgort type vbap-lgort,
vkorg type vbak-vkorg,
ernam type vbak-ernam,
erdat type vbak-erdat,
RSDAT type VBEP-RSDAT,
* VALUE_OLD type cdpos-VALUE_OLD,
VDATU type vbak-VDATU,
ettyp TYPE vbepvb-ettyp,
edatu TYPE vbepvb-edatu,
lddat type vbepvb-lddat,
vrkme TYPE vbepvb-vrkme,
wmeng TYPE vbepvb-wmeng,
bmeng TYPE vbepvb-bmeng,
olfmng TYPE vbepvb-olfmng,
vsmng TYPE vbepvb-vsmng,
LABST type mard-LABST,
bstnk type vbak-bstnk,
BSTDK type vbkd-BSTDK,
BLDAT type likp-BLDAT,
wadat_ist type likp-wadat_ist,
erfmg type mseg-erfmg,
vtweg type vbak-vtweg,
inco1 type vbkd-inco1,
VERPR type mbew-VERPR,
PEINH type mbew-PEINH,
WAERS type t001-WAERS,
VERSG type mvke-VERSG,
KUNWE type VEPVG-KUNWE,
NAME2 type KNA1-NAME1,
END OF vbep_ty_1.
DATA: vbep_out_1 TYPE STANDARD TABLE OF vbep_ty_1,
lvbep_out_1 TYPE vbep_ty_1.
DATA:BEGIN OF tt_detail OCCURS 0,
vbeln like vbak-vbeln,
posnr like vbap-posnr,
END OF tt_detail.
DATA:BEGIN OF t_detail OCCURS 0,
vbeln like vbak-vbeln,
posnr like vbap-posnr,
gbsta like vbup-gbsta,
END OF t_detail.
DATA: t_heading TYPE slis_t_listheader.
DATA: xvbap TYPE STANDARD TABLE OF vbapvb.
DATA: xvbep TYPE STANDARD TABLE OF vbepvb.
DATA: xvbup TYPE STANDARD TABLE OF vbup.
DATA: xvbfa TYPE STANDARD TABLE OF vbfa.
DATA: zvbap TYPE TABLE OF vbapvb.
DATA: lvbap TYPE vbapvb.
DATA: lvbep TYPE vbepvb.
DATA: lvbup TYPE vbup.
DATA: lvbfa TYPE vbfa.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-001.
SELECT-OPTIONS : so_vkorg FOR vbak-vkorg OBLIGATORY. " Sales Organization
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
SELECT-OPTIONS : so_auart FOR vbak-auart,
so_vbeln FOR vbak-vbeln, " Sales Document
so_ernam FOR vbak-ernam, " Created By
so_erdat FOR vbak-erdat OBLIGATORY, " Created On
so_kunnr FOR vbak-kunnr, " Customer Number
so_matnr FOR vbap-matnr , " Material
so_matkl FOR vbap-matkl, " Material Group
so_werks FOR vbap-werks, " Plant
so_statu FOR vbup-gbsta. " Status
SELECTION-SCREEN: END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_data.
LOOP AT t_detail.
PERFORM read_vbup.
PERFORM read_vbfa.
PERFORM read_vbep.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
PERFORM check_deliveries.
endloop.
PERFORM get_scl_change_log.
PERFORM get_order_info.
PERFORM alv USING t_heading.
*&---------------------------------------------------------------------*
*& Form read_vbup
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_vbup.
SELECT * FROM vbup INTO TABLE xvbup
WHERE vbeln = t_detail-vbeln
AND posnr = t_detail-posnr.
ENDFORM. " read_vbup
*&---------------------------------------------------------------------*
*& Form read_vbfa
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_vbfa.
SELECT * FROM vbfa INTO TABLE xvbfa
WHERE vbelv = t_detail-vbeln
AND posnv = t_detail-posnr
AND vbtyp_n = 'J'.
ENDFORM. " read_vbfa
*&---------------------------------------------------------------------*
*& Form read_vbep
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_vbep.
SELECT * FROM vbep
INTO TABLE xvbep
WHERE vbeln = t_detail-vbeln
AND posnr = t_detail-posnr.
* AND bmeng > 0.
ENDFORM. " read_vbep
*&---------------------------------------------------------------------*
*& Form check_deliveries
*&---------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM check_deliveries.
DATA TLINE TYPE i.
CALL FUNCTION 'RV_SCHEDULE_CHECK_DELIVERIES'
EXPORTING
fbeleg = t_detail-vbeln
fposnr = t_detail-posnr
TABLES
fvbfa = xvbfa
fvbup = xvbup
fxvbep = xvbep
fvbap = zvbap
EXCEPTIONS
fehler_bei_lesen_fvbup = 1
fehler_bei_lesen_fxvbep = 2
OTHERS = 3.
IF sy-subrc <> 0.
RETURN.
ENDIF.
clear tline.
LOOP AT xvbep INTO lvbep.
MOVE-CORRESPONDING lvbep TO lvbep_out.
* IF lvbep-BMENG <> 0.
* LOOP AT xvbfa INTO lvbfa.
* if sy-tabix = 1.
* move lvbfa-VBELN to lvbep_out-VBELV.
* MOVE lvbfa-POSNN to lvbep_out-POSNV.
* endif.
* ENDLOOP.
* endif.
if sy-tabix = 1.
IF lvbep-BMENG <> 0.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = 1.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
tline = 1.
endif.
ENDLOOP.
endif.
endif.
if sy-tabix = 2.
IF lvbep-BMENG <> 0.
tline = tline + 1.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = tline.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
EXIT.
endif.
ENDLOOP.
endif.
endif.
if sy-tabix = 3.
IF lvbep-BMENG <> 0.
tline = tline + 1.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = tline.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
EXIT.
endif.
ENDLOOP.
endif.
endif.
if sy-tabix = 4.
IF lvbep-BMENG <> 0.
tline = tline + 1.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = tline.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
EXIT.
endif.
ENDLOOP.
endif.
endif.
if sy-tabix = 5.
IF lvbep-BMENG <> 0.
tline = tline + 1.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = tline.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
EXIT.
endif.
ENDLOOP.
endif.
endif.
if sy-tabix = 6.
IF lvbep-BMENG <> 0.
tline = tline + 1.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = tline.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
EXIT.
endif.
ENDLOOP.
endif.
endif.
if sy-tabix = 7.
IF lvbep-BMENG <> 0.
tline = tline + 1.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = tline.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
EXIT.
endif.
ENDLOOP.
endif.
endif.
if sy-tabix = 8.
IF lvbep-BMENG <> 0.
tline = tline + 1.
LOOP AT xvbfa INTO lvbfa.
if sy-tabix = tline.
move lvbfa-VBELN to lvbep_out-VBELV.
MOVE lvbfa-POSNN to lvbep_out-POSNV.
EXIT.
endif.
ENDLOOP.
endif.
endif.
APPEND lvbep_out TO vbep_out.
clear lvbep_out.
ENDLOOP.
ENDFORM. " check_deliveries
*&---------------------------------------------------------------------*
*& Form ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv USING t_heading TYPE slis_t_listheader.
data: gr_table type ref to cl_salv_table.
data: gr_functions type ref to cl_salv_functions.
data: gr_display type ref to cl_salv_display_settings.
data: gr_columns type ref to cl_salv_columns_table.
data: gr_column type ref to cl_salv_column_table.
data: gr_sorts type ref to cl_salv_sorts.
data: gr_agg type ref to cl_salv_aggregations.
data: gr_filter type ref to cl_salv_filters.
data: gr_layout type ref to cl_salv_layout.
data: key type salv_s_layout_key.
data: color type lvc_s_colo.
cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = vbep_out_1 ).
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
gr_display = gr_table->get_display_settings( ).
gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
gr_layout = gr_table->get_layout( ).
key-report = sy-repid.
gr_layout->set_key( key ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
gr_layout->set_default( abap_true ).
gr_table->display( ).
ENDFORM. " ALV
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
select a~vbeln a~posnr into CORRESPONDING FIELDS OF TABLE tt_detail
from vbap as a inner join vbak as b on a~vbeln = b~vbeln
where b~VKORG in so_vkorg and
b~vbeln IN so_vbeln AND
b~auart in so_auart AND
b~ernam IN so_ernam AND
b~erdat IN so_erdat AND
b~kunnr IN so_kunnr AND
a~matnr IN so_matnr AND
a~matkl IN so_matkl AND
a~werks IN so_werks.
IF tt_detail[] is initial.
ELSE.
IF so_statu[] is initial.
select vbeln posnr gbsta into table t_detail
from vbup
FOR ALL ENTRIES IN tt_detail
where vbeln = tt_detail-vbeln and
posnr = tt_detail-posnr.
else.
select vbeln posnr gbsta into table t_detail
from vbup
FOR ALL ENTRIES IN tt_detail
where gbsta in so_statu and
vbeln = tt_detail-vbeln and
posnr = tt_detail-posnr.
endif.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form GET_SCL_CHANGE_LOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SCL_CHANGE_LOG .
data: t_changer like cdhdr-changenr.
data: t_VALUE_OLD like cdpos-VALUE_OLD.
loop at vbep_out into lvbep_out.
clear lvbep_out_1.
MOVE-CORRESPONDING lvbep_out TO lvbep_out_1.
select single CHANGENR into t_changer
from cdpos where
OBJECTCLAS = 'VERKBELEG' and
OBJECTID = lvbep_out_1-vbeln and
TABNAME = 'VBEP' and
FNAME = 'EDATU'.
if sy-subrc = 0.
select single VALUE_OLD into t_VALUE_OLD
from cdpos
where OBJECTCLAS = 'VERKBELEG' and
OBJECTID = lvbep_out_1-vbeln and
changenr = t_changer and
TABNAME = 'VBEP' and
FNAME = 'EDATU'.
write t_VALUE_OLD+0(8) to lvbep_out_1-RSDAT.
endif.
select single matnr matkl pstyv WERKS LGORT into
(lvbep_out_1-matnr,
lvbep_out_1-matkl,
lvbep_out_1-pstyv,
lvbep_out_1-werks,
lvbep_out_1-lgort)
from vbap where vbeln = lvbep_out_1-vbeln and
posnr = lvbep_out_1-posnr.
select single gbsta into lvbep_out_1-gbsta
from vbup
where vbeln = lvbep_out_1-vbeln and
posnr = lvbep_out_1-posnr.
select single vkorg kunnr ERDAT ERNAM VDATU vtweg BSTNK BSTDK into
(lvbep_out_1-vkorg,
lvbep_out_1-kunnr,
lvbep_out_1-erdat,
lvbep_out_1-ernam,
lvbep_out_1-vdatu,
lvbep_out_1-vtweg,
lvbep_out_1-bstnk,
lvbep_out_1-bstdk)
from vbak
where vbeln = lvbep_out_1-vbeln.
select SINGLE name1 into lvbep_out_1-name1
from kna1
where kunnr = lvbep_out_1-kunnr.
select SINGLE inco1 into lvbep_out_1-inco1
from vbkd
where vbeln = lvbep_out_1-vbeln.
select SINGLE a~KUNNR b~NAME1 into
(lvbep_out_1-KUNWE,
lvbep_out_1-NAME2)
from vbpa as a inner join kna1 as b
on a~kunnr = b~kunnr
where a~vbeln = lvbep_out_1-vbeln
and a~PARVW = 'WE'.
* if lvbep_out_1-pstyv = 'Y1' or lvbep_out_1-pstyv = 'YYAB'.
* select SINGLE vbeln erdat into
* (lvbep_out_1-ebeln,
* lvbep_out_1-aedat)
* from vbfa
* where vbelv = lvbep_out_1-vbeln and
* posnv = lvbep_out_1-posnr and
* VBTYP_N = 'V'.
* endif.
select SINGLE erdat into
lvbep_out_1-BLDAT
from vbfa
where vbelv = lvbep_out_1-vbeln and
posnv = lvbep_out_1-posnr and
vbeln = lvbep_out-vbelv and
posnn = lvbep_out-posnv and
VBTYP_N = 'J'.
* select SINGLE RFMNG erdat into
* (lvbep_out_1-erfmg,
* lvbep_out_1-wadat_ist)
* from vbfa
* where vbelv = lvbep_out_1-vbeln and
* posnv = lvbep_out_1-posnr and
* vbeln = lvbep_out-vbelv and
* posnn = lvbep_out-posnv and
* VBTYP_N = 'R'.
select SINGLE RFMNG erdat into
(lvbep_out_1-erfmg,
lvbep_out_1-wadat_ist)
from vbfa
where vbelv = lvbep_out-vbelv and
posnv = lvbep_out-posnv and
VBTYP_N = 'R'.
if lvbep_out_1-werks = '3300' or lvbep_out_1-werks = '330E'.
select single MAKTX into lvbep_out_1-maktx
from makt
where MATNR = lvbep_out_1-matnr
and SPRAS = '1'.
else.
select single MAKTX into lvbep_out_1-maktx
from makt
where MATNR = lvbep_out_1-matnr
and SPRAS = 'EN'.
endif.
select single VERSG into lvbep_out_1-VERSG
from mvke
where MATNR = lvbep_out_1-matnr and
VKORG = lvbep_out_1-vkorg and
VTWEG = lvbep_out_1-vtweg.
select sum( LABST ) into lvbep_out_1-labst
from mard
where matnr = lvbep_out_1-matnr and
werks = lvbep_out_1-werks.
select single VERPR PEINH into
(lvbep_out_1-VERPR,lvbep_out_1-PEINH)
from mbew
where matnr = lvbep_out_1-matnr and
BWKEY = lvbep_out_1-werks.
select single a~WAERS into lvbep_out_1-waers
from t001 as a inner join t001k as b
on a~BUKRS = b~BUKRS
where b~BWKEY = lvbep_out_1-werks.
APPEND lvbep_out_1 TO vbep_out_1.
endloop.
ENDFORM. " GET_SCL_CHANGE_LOG
*&---------------------------------------------------------------------*
*& Form GET_ORDER_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_ORDER_INFO .
ENDFORM. " GET_ORDER_INFO