program(based on the schedule line to check the status about delivery)
2013-04-09 10:45
561 查看
*&---------------------------------------------------------------------*
*& 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
*& 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
相关文章推荐
- MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
- MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
- 奇葩问题:This file could not be checked in because the original version of the file on the server was moved or deleted. A new version of this file has been saved to the server, but your check-in comments were not saved
- HV000183: Unable to load 'javax.el.ExpressionFactory'. Check that you have the EL dependencies on th
- Diesel engine designer watches sale made on-line are distributed day-to-day over the web
- dubbo异常:Failed to check the status of the service . No provider available for the service 解决
- The script which used to Check GL-PO-AP-INV Period Status
- VA番茄助手提示The security key for this program currently stored on your system does not appear to be vali
- the connection to the VMware USB Arbitration Service was unsuccessful.Please check the status of this service in the Microsogt M
- Based on configured schedule, the given trigger will never fire.
- Something about the Inter Prediction of HEVC Based on HM9.0
- NDK_报错 Unable to launch cygpath. Is Cygwin on the path?] java.io.IOException: Cannot run program。
- VS 安装助手,弹出“The security key for this program currently stored on your system does not appear to be ”
- 海洋工作室——网站建设专家:How to check the SQL statement execute time on SQL Server ?
- Failed to check the status of the service com.taotao.search.service.SearchItemSerivce. No provider a
- An application to fetch the release sources from Visual SouceSafe based on an Excel migration plan
- Setting Text to Image On Android and Adjudt the text font size based on the android resolution
- sing NAGIOS to Check the Physical Memory Available on a Windows Host
- How_to_build_an_ARM/DSP_Hello_World_program_on_the_DaVinci_EVM 续
- Methods to transform made the effort and additionally wedding date about Diesel-engined keep an eye on