您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐