Sie sind auf Seite 1von 42

*&--------------------------------------------------------------------&*

*& Object Id : TS-SD-REP-209 &*


*& Object Name : Stock Monitoring Report &*
*& Program Name : YRVSH077 &*
*& Transaction Code: YRV77 &*
*& Author : Rajashekar.B &*
*& Module Name : Sales & distribution &*
*& Program Type : Reports Create Date : 25-Jan-2013 &*
*& SAP Release : ECC 6.0 Transport No : RD1K959426 &*
*& version 2.0 : RD1K960141 &*
*& Description : The business requires a report which will help &*
*& them identify the quantity Produced and &*
*& Dispatched (K1, K2 & K3) from all the &*
*& manufacturing location. &*
*& SSMS NO : ECC SD-HO#688/656 &*
*& CR NO : CR-FBD-SD-19 &*
*&--------------------------------------------------------------------&*
**&-------------------------------------------------------------------&*
**& Revision 1 : Revised by A.Eswar Rao log : aer01 &*
**& Revision Date : 12.05.2014 Transport No : RD1K968174 &*
**& Description : Invoice Details such as invoice number, invoice &*
**& date, value taxes & discount which is not being &*
**& captured in the existing report &*
**& SPR Ref : ECC SD-HO#826 &*
**&-------------------------------------------------------------------&*

REPORT yrvsh077 MESSAGE-ID ymfi NO STANDARD PAGE HEADING.

TYPE-POOLS: slis .

*& structure Type Declaration


TYPES : BEGIN OF ty_mkpf,
mblnr TYPE mkpf-mblnr,
mjahr TYPE mkpf-mjahr,
vgart TYPE mkpf-vgart,
blart TYPE mkpf-blart,
budat TYPE mkpf-budat,
xblnr TYPE mkpf-xblnr,
vbeln TYPE likp-vbeln,
flag TYPE char1 ,
END OF ty_mkpf,

BEGIN OF ty_mseg,
mblnr TYPE mkpf-mblnr,
mjahr TYPE mkpf-mjahr,
zeile TYPE mseg-zeile,
bwart TYPE mseg-bwart,
xauto TYPE mseg-xauto,
matnr TYPE mseg-matnr,
werks TYPE mseg-werks,
lgort TYPE mseg-lgort,
charg TYPE mseg-charg,
kunnr TYPE mseg-kunnr,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
ebeln TYPE mseg-ebeln,
sjahr TYPE mseg-sjahr,
smbln TYPE mseg-smbln,
smblp TYPE mseg-smblp,
wempf TYPE mseg-wempf,
bukrs TYPE mseg-bukrs,
prctr TYPE mseg-prctr,
xblnr_mkpf TYPE xblnr, "aer01
flag TYPE char1 ,
END OF ty_mseg,

BEGIN OF ty_vbfa,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
vbtyp_n TYPE vbtyp_n, "aer01
erdat TYPE vbfa-erdat,
END OF ty_vbfa,

BEGIN OF ty_lips,
vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr,
erdat TYPE lips-erdat,
matnr TYPE lips-matnr,
lgort TYPE lips-lgort,
charg TYPE lips-charg,
lfimg TYPE lips-lfimg, "aer01
arktx TYPE lips-arktx,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
spart TYPE lips-spart,
END OF ty_lips,

BEGIN OF ty_likp,
vbeln TYPE likp-vbeln,
lfart TYPE likp-lfart,
route TYPE likp-route,
wadat_ist TYPE likp-wadat_ist,
END OF ty_likp,

BEGIN OF ty_aufm,
mblnr TYPE aufm-mblnr,
mjahr TYPE aufm-mjahr,
matnr TYPE aufm-matnr,
werks TYPE aufm-werks,
charg TYPE aufm-charg,
flag TYPE char1,
END OF ty_aufm,

BEGIN OF ty_t001w,
werks TYPE t001w-werks,
name1 TYPE t001w-name1,
regio TYPE t001w-regio,
END OF ty_t001w,

*& Final structure for k1 & K3 process


BEGIN OF ty_final,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr, "aer01
lfart TYPE likp-lfart,
erdat TYPE lips-erdat,
werks TYPE mseg-werks,
kunnr TYPE mseg-kunnr,
route TYPE likp-route,
spart TYPE lips-spart,
matnr TYPE mseg-matnr,
arktx TYPE lips-arktx,
prctr TYPE mseg-prctr,
lgort TYPE lips-lgort,
charg TYPE mseg-charg,
werks1 TYPE aufm-werks, "manufacturer plant
regio TYPE t001w-regio,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
wadat_ist TYPE likp-wadat_ist,
flag TYPE char1, "AER01
END OF ty_final,

*& Final structure for k2 process


BEGIN OF ty_final_k2,
ebeln TYPE mseg-ebeln,
werks TYPE mseg-werks,
name_srp TYPE t001w-name1,
wempf TYPE mseg-wempf,
name_dsp TYPE t001w-name1,
vbeln TYPE vbfa-vbeln, "delivery no
vbelv TYPE vbfa-vbeln, "shipment no
erdat TYPE vbfa-erdat,
name_vnd TYPE lfa1-name1, "vendor name
spart TYPE lips-spart,
matnr TYPE mseg-matnr,
arktx TYPE lips-arktx,
prctr TYPE mseg-prctr,
menge TYPE mseg-menge,
signi TYPE vttk-signi,
text3 TYPE vttk-text3,
text2 TYPE vttk-text2,
text1 TYPE vttk-text1,
END OF ty_final_k2,

BEGIN OF ty_lfa1,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
END OF ty_lfa1,

BEGIN OF ty_vttk,
tknum TYPE vttk-tknum,
signi TYPE vttk-signi,
tdlnr TYPE vttk-tdlnr,
text1 TYPE vttk-text1,
text2 TYPE vttk-text2,
text3 TYPE vttk-text3,
END OF ty_vttk,

BEGIN OF ty_setleaf,
setname TYPE setleaf-setname,
lineid TYPE setleaf-lineid,
valfrom TYPE setleaf-valfrom,
END OF ty_setleaf,
BEGIN OF ty_setlinet,
setname TYPE setlinet-setname,
lineid TYPE setlinet-lineid,
descript TYPE setlinet-descript,
END OF ty_setlinet,

BEGIN OF ty_mcha,
matnr TYPE mcha-matnr,
werks TYPE mcha-werks,
charg TYPE mcha-charg,
flag TYPE char1 ,
END OF ty_mcha,

** start of insertion -- aer01

BEGIN OF ts_kna1,
kunnr TYPE kunnr,
name1 TYPE name1_gp,
name2 TYPE name2_gp,
ort01 TYPE ort01_gp,
pstlz TYPE pstlz,
regio TYPE regio,
stras TYPE stras_gp,
END OF ts_kna1,

BEGIN OF ts_j_1imocust,
kunnr TYPE kunnr,
j_1ilstno TYPE j_1ilstno,
END OF ts_j_1imocust,

BEGIN OF ts_vbrp,
vbeln TYPE vbeln_vf,
posnr TYPE posnr_vf,
vgbel TYPE vgbel,
vgpos TYPE vgpos,
aubel TYPE vbeln_va,
aupos TYPE posnr_va,
spart TYPE spart,
shkzg TYPE shkzg_vf,
flag TYPE char1,
END OF ts_vbrp,

BEGIN OF ts_vbrk,
vbeln TYPE vbeln_vf,
fkart TYPE fkart,
vkorg TYPE vkorg,
fkdat TYPE fkdat,
knumv TYPE knumv,
fksto TYPE fksto,
END OF ts_vbrk,

BEGIN OF ts_konv,
knumv TYPE knumv,
kposn TYPE kposn,
stunr TYPE stunr,
zaehk TYPE dzaehk,
kschl TYPE kscha,
kbetr TYPE kbetr,
kwert TYPE kwert,
END OF ts_konv,

BEGIN OF ts_final_inv,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
vbeln TYPE lips-vbeln,
posnr TYPE lips-posnr,
lfart TYPE likp-lfart,
erdat TYPE lips-erdat,
werks TYPE mseg-werks,
kunnr TYPE mseg-kunnr,
name1 TYPE char100,
address TYPE char100,
cust_reg TYPE regio,
j_1ilstno TYPE j_1ilstno,
route TYPE likp-route,
spart TYPE lips-spart,
matnr TYPE mseg-matnr,
arktx TYPE lips-arktx,
prctr TYPE mseg-prctr,
lgort TYPE lips-lgort,
charg TYPE mseg-charg,
werks1 TYPE aufm-werks,
regio TYPE t001w-regio,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
wadat_ist TYPE likp-wadat_ist,
bill_doc TYPE vbeln_vf,
fkart TYPE fkart,
fkdat TYPE fkdat,
vkorg TYPE vkorg,
bas_val TYPE dmbtr,
r_dis TYPE dmbtr,
net_val TYPE dmbtr,
tax_typ TYPE kscha,
tax1 TYPE kbetr,
tax1_amt TYPE dmbtr,
tax2 TYPE kbetr,
tax2_amt TYPE dmbtr,
dev TYPE kbetr,
dev_amt TYPE dmbtr,
tax4 TYPE kbetr,
tax4_amt TYPE dmbtr,
tot_tax TYPE dmbtr,
tot_amt TYPE dmbtr,
END OF ts_final_inv.

** end of insertion -- aer01

*& Internal data declaration


DATA : it_vttk TYPE STANDARD TABLE OF ty_vttk ,
it_lfa1 TYPE STANDARD TABLE OF ty_lfa1 ,
it_final_k2 TYPE STANDARD TABLE OF ty_final_k2 ,
it_final TYPE STANDARD TABLE OF ty_final ,
it_t001w TYPE STANDARD TABLE OF ty_t001w ,
it_likp TYPE STANDARD TABLE OF ty_likp ,
it_lips TYPE STANDARD TABLE OF ty_lips ,
it_vbfa TYPE STANDARD TABLE OF ty_vbfa ,
it_mseg TYPE STANDARD TABLE OF ty_mseg ,
it_mseg_642 TYPE STANDARD TABLE OF ty_mseg ,
it_mkpf TYPE STANDARD TABLE OF ty_mkpf ,
it_fcat TYPE slis_t_fieldcat_alv,
it_setleaf TYPE STANDARD TABLE OF ty_setleaf,
it_setlinet TYPE STANDARD TABLE OF ty_setlinet,
it_mcha TYPE STANDARD TABLE OF ty_mcha,
it_kna1 TYPE STANDARD TABLE OF ts_kna1, "aer01
it_j_1imocust TYPE TABLE OF ts_j_1imocust, "aer01
it_vbrk TYPE TABLE OF ts_vbrk, "aer01
it_vbrp TYPE TABLE OF ts_vbrp, "aer01
it_konv TYPE TABLE OF ts_konv, "aer01
it_final_inv TYPE TABLE OF ts_final_inv, "aer01

is_vttk TYPE ty_vttk,


is_lfa1 TYPE ty_lfa1,
is_kna1 TYPE ts_kna1, "aer01
is_j_1imocust TYPE ts_j_1imocust, "aer01
is_vbrk TYPE ts_vbrk, "aer01
is_vbrp TYPE ts_vbrp, "aer01
is_konv TYPE ts_konv, "aer01
is_final_inv TYPE ts_final_inv, "aer01
is_final_k2 TYPE ty_final_k2 ,
is_final TYPE ty_final ,
is_t001w TYPE ty_t001w ,
is_likp TYPE ty_likp ,
is_lips TYPE ty_lips ,
is_vbfa TYPE ty_vbfa ,
is_mseg TYPE ty_mseg ,
is_setleaf TYPE ty_setleaf,
is_mseg1 TYPE ty_mseg,
is_mkpf TYPE ty_mkpf ,
is_fcat TYPE slis_fieldcat_alv ,
is_layout TYPE slis_layout_alv,
is_mcha TYPE ty_mcha,

*& global data


w_werks_sr TYPE t001w-werks,
w_werks_ds TYPE t001w-werks,
w_spart TYPE tspa-spart,
w_date TYPE vbrk-erdat,
w_prctr TYPE mseg-prctr,
w_count TYPE i,
w_tabix TYPE sy-tabix. "AER01

CONSTANTS : c_x TYPE c VALUE 'X' ,


c_doc_cat TYPE c VALUE '8' ,
c_bwart_642 TYPE bwart VALUE '642',
c_bwart_942 TYPE bwart VALUE '942' ,
c_bwart_601 TYPE bwart VALUE '601', "#EC NEEDED
c_bwart_602 TYPE bwart VALUE '602' ,
c_mwl TYPE blart VALUE 'WL',
c_setname TYPE setleaf-setname VALUE 'FBD_MANU_PLANT' ,
c_class TYPE setlinet-setclass VALUE '0000' .

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-110 .


SELECT-OPTIONS : s_plnt_s FOR w_werks_sr OBLIGATORY,
s_plnt_d FOR w_werks_ds ,
s_spart FOR w_spart,
s_date FOR w_date OBLIGATORY,
s_prctr FOR w_prctr.

SELECTION-SCREEN SKIP 1.

PARAMETERS : r_k2 RADIOBUTTON GROUP grp DEFAULT 'X',


r_k3 RADIOBUTTON GROUP grp,
r_prd RADIOBUTTON GROUP grp,
r_prd1 RADIOBUTTON GROUP grp. "aer01
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN.

*& validating source ,supply plants and division


PERFORM sub_val_plants.

*& validating division.


PERFORM sub_val_division.

START-OF-SELECTION .
*&fetching material doc Header data
PERFORM sub_get_mkpf.

*&fetching material doc item data


PERFORM sub_get_mseg.

IF r_k2 = c_x.

*&fetching data from doc flow table


PERFORM sub_get_vbfa.

*& fetching shipping data


PERFORM sub_get_vttk.

*&fetching service agent details.


PERFORM sub_get_lfa1.

*&fetching delivery data


PERFORM sub_get_lips.

*&fetching plant description.


PERFORM sub_get_t001w.

*&preparing final table for k2 process.


PERFORM sub_pre_final_k2.

*& building field catalog.


PERFORM sub_pre_fcat .

*& display final table.


PERFORM sub_display.

ELSEIF r_k3 = c_x .

*&fetching delivery header data.


PERFORM sub_get_likp.

*&fetching delivery item data.


PERFORM sub_get_lips2.
*&preparing final table for k1 & k3 process .
PERFORM sub_pre_final_k1_k3.

*&building field catalog.


PERFORM sub_pre_fcat_k1_k3 .

*&display final table.


PERFORM sub_display_k3 .

ELSEIF r_prd = c_x .

*&fetching delivery header data.


PERFORM sub_get_likp.

*&fetching delivery item data.


PERFORM sub_get_lips2.

*&fetching data from mcha table


PERFORM sub_get_mcha.

*&fetching plant details.


PERFORM sub_get_t001w2.

*&perparing final table for prd k1 k3


PERFORM sub_pre_final_prd.

*&building field catalog.


PERFORM sub_pre_fcat_k1_k3 .

*&display final table.


PERFORM sub_display_k3 .

** start of insertion -- aer01

ELSEIF r_prd1 = c_x .

*&fetching delivery header data.


PERFORM sub_get_likp.

*&fetching delivery item data.


PERFORM sub_get_lips2.

*&fetching data from mcha table


PERFORM sub_get_mcha.

*&fetching plant details.


PERFORM sub_get_t001w2.

*&perparing final table for prd k1 k3 invoice details


PERFORM sub_pre_final_prd1.

PERFORM sub_get_cust_details.

PERFORM sub_get_vbrk_vbrp.

*&building field catalog.


PERFORM sub_pre_fcat_k1_k3_invoice_det.
*&display final table.
PERFORM sub_display_inv_det.

** end of insertion -- aer01

ENDIF.

*&---------------------------------------------------------------------*
*& Form SUB_VAL_PLANTS
*&---------------------------------------------------------------------*
*& validating source , supply plants and division
*----------------------------------------------------------------------*
FORM sub_val_plants .
DATA : w_werks TYPE t001w-werks.

SELECT SINGLE werks


FROM t001w
INTO w_werks
WHERE werks IN s_plnt_s. "#EC *
IF sy-subrc <> 0.
MESSAGE e000 WITH text-001. "enter valid supplying plant
ENDIF.

CLEAR w_werks.
SELECT SINGLE werks
FROM t001w
INTO w_werks
WHERE werks IN s_plnt_d. "#EC *
IF sy-subrc <> 0.
MESSAGE e000 WITH text-002. "Enter valid Receiving plant
ENDIF.
ENDFORM. " SUB_VAL_PLANTS
*&---------------------------------------------------------------------*
*& Form SUB_GET_MKPF
*&---------------------------------------------------------------------*
*&fetching material doc data
*----------------------------------------------------------------------*
FORM sub_get_mkpf .
SELECT mblnr
mjahr
vgart
blart
budat
xblnr
FROM mkpf
INTO TABLE it_mkpf
WHERE budat IN s_date .

IF sy-subrc <> 0.
MESSAGE i000 WITH text-004. "No data found
LEAVE LIST-PROCESSING .
ELSE .
DELETE it_mkpf WHERE blart NE c_mwl.
ENDIF.
ENDFORM. " SUB_GET_MKPF
*&---------------------------------------------------------------------*
*& Form SUB_GET_MSEG
*&---------------------------------------------------------------------*
*&fetching material doc item data
*----------------------------------------------------------------------*
FORM sub_get_mseg .

IF it_mkpf IS NOT INITIAL.

IF r_k2 = c_x.

SELECT mblnr
mjahr
zeile
bwart
xauto
matnr
werks
lgort
charg
kunnr
menge
meins
ebeln
sjahr
smbln
smblp
wempf
bukrs
prctr
xblnr_mkpf "aer01
FROM mseg
INTO TABLE it_mseg
FOR ALL ENTRIES IN it_mkpf
WHERE mblnr = it_mkpf-mblnr
AND mjahr = it_mkpf-mjahr
AND bwart IN (641,642,941,942) .

IF sy-subrc = 0.
DELETE it_mseg WHERE werks = 'FEXP' OR
menge IS INITIAL OR
bukrs NE 'FBD' OR
lgort NE 'BRND' OR
xauto = c_x.

DELETE it_mseg WHERE werks NOT IN s_plnt_s OR


wempf NOT IN s_plnt_d OR
prctr NOT IN s_prctr .
IF it_mseg IS INITIAL.
MESSAGE i000 WITH text-004 . " NO DATA FOUND
LEAVE LIST-PROCESSING .
ENDIF.

SORT it_mseg BY bwart .


it_mseg_642 = it_mseg.

DELETE it_mseg_642 WHERE bwart NE c_bwart_642 AND


bwart NE c_bwart_942 .
DELETE it_mseg WHERE bwart = c_bwart_642 OR
bwart = c_bwart_942 .

SORT : it_mseg BY mblnr mjahr zeile ,


it_mseg_642 BY mblnr mjahr .
LOOP AT it_mseg_642 INTO is_mseg .
CLEAR is_mseg1 .
READ TABLE it_mseg INTO is_mseg1 WITH KEY mblnr = is_mseg-smbln
mjahr = is_mseg-sjahr
zeile = is_mseg-smblp
BINARY SEARCH .
IF sy-subrc = 0.
is_mseg1-flag = c_x .
MODIFY it_mseg INDEX sy-tabix FROM is_mseg1 TRANSPORTING flag.
ENDIF.
ENDLOOP.

DELETE it_mseg WHERE flag = c_x .


ELSEIF sy-subrc <> 0 .
MESSAGE i000 WITH text-004 . " NO DATA FOUND
LEAVE LIST-PROCESSING .
ENDIF.

ELSEIF r_k3 = 'X' OR r_prd = 'X' . "aer01

SELECT mblnr
mjahr
zeile
bwart
xauto
matnr
werks
lgort
charg
kunnr
menge
meins
ebeln
sjahr
smbln
smblp
wempf
bukrs
prctr
xblnr_mkpf "aer01
FROM mseg
INTO TABLE it_mseg
FOR ALL ENTRIES IN it_mkpf
WHERE mblnr = it_mkpf-mblnr
AND mjahr = it_mkpf-mjahr
AND bwart IN (601,602) .

IF sy-subrc = 0.
DELETE it_mseg WHERE werks = 'FEXP' OR
menge IS INITIAL OR
bukrs NE 'FBD' OR
lgort NE 'BRND' OR
xauto = c_x.

DELETE it_mseg WHERE werks NOT IN s_plnt_s OR


wempf NOT IN s_plnt_d OR
prctr NOT IN s_prctr .
IF it_mseg IS INITIAL.
MESSAGE i000 WITH text-004 . " NO DATA FOUND
LEAVE LIST-PROCESSING .
ENDIF.
SORT it_mseg BY bwart .
it_mseg_642 = it_mseg.

DELETE it_mseg_642 WHERE bwart NE c_bwart_602 .


DELETE it_mseg WHERE bwart = c_bwart_602 .

SORT : it_mseg BY mblnr mjahr zeile,


it_mseg_642 BY mblnr mjahr .

LOOP AT it_mseg_642 INTO is_mseg .


CLEAR is_mseg1 .
READ TABLE it_mseg INTO is_mseg1 WITH KEY mblnr = is_mseg-smbln
mjahr = is_mseg-sjahr
zeile = is_mseg-smblp
BINARY SEARCH .
IF sy-subrc = 0.
is_mseg1-flag = c_x .
MODIFY it_mseg INDEX sy-tabix FROM is_mseg1 TRANSPORTING flag.
ENDIF.
ENDLOOP.

DELETE it_mseg WHERE flag = c_x .


ELSEIF sy-subrc <> 0 .
MESSAGE i000 WITH text-004 . " NO DATA FOUND
LEAVE LIST-PROCESSING .
ENDIF.

** start of insertion -- aer01

ELSEIF r_prd1 = 'X' .

SELECT mblnr
mjahr
zeile
bwart
xauto
matnr
werks
lgort
charg
kunnr
menge
meins
ebeln
sjahr
smbln
smblp
wempf
bukrs
prctr
xblnr_mkpf "aer01
FROM mseg
INTO TABLE it_mseg
FOR ALL ENTRIES IN it_mkpf
WHERE mblnr = it_mkpf-mblnr
AND mjahr = it_mkpf-mjahr
AND bwart IN (601,602,651,652).

IF sy-subrc = 0.

DELETE it_mseg WHERE werks = 'FEXP' OR


menge IS INITIAL OR
bukrs NE 'FBD' OR
lgort NE 'BRND' OR
xauto = c_x.

DELETE it_mseg WHERE werks NOT IN s_plnt_s OR


wempf NOT IN s_plnt_d OR
prctr NOT IN s_prctr .

IF it_mseg IS INITIAL.
MESSAGE i000 WITH text-004 . " NO DATA FOUND
LEAVE LIST-PROCESSING .
ENDIF.

ENDIF.

** end of insertion -- aer01

ENDIF.

IF it_mseg IS NOT INITIAL.

SORT it_mseg BY mblnr mjahr.

LOOP AT it_mkpf INTO is_mkpf.

CLEAR is_mseg .
READ TABLE it_mseg INTO is_mseg WITH KEY mblnr = is_mkpf-mblnr
mjahr = is_mkpf-mjahr BINARY
SEARCH.

IF sy-subrc <> 0.

is_mkpf-flag = c_x .
MODIFY it_mkpf FROM is_mkpf TRANSPORTING flag.

ELSE.

is_mkpf-vbeln = is_mkpf-xblnr .
MODIFY it_mkpf FROM is_mkpf TRANSPORTING vbeln .

ENDIF.

ENDLOOP.

DELETE it_mkpf WHERE flag = c_x .

ENDIF.

ENDIF.

ENDFORM. " SUB_GET_MSEG


*&---------------------------------------------------------------------*
*& Form SUB_GET_VBFA
*&---------------------------------------------------------------------*
*&fetching data from doc flow table
*----------------------------------------------------------------------*
FORM sub_get_vbfa .

IF it_mkpf IS NOT INITIAL.

IF r_k2 = c_x.

SELECT vbelv
posnv
vbeln
posnn
erdat
FROM vbfa
INTO TABLE it_vbfa
FOR ALL ENTRIES IN it_mkpf
WHERE vbelv = it_mkpf-vbeln
AND vbtyp_n = c_doc_cat .

ENDIF.

ENDIF.

ENDFORM. " SUB_GET_VBFA


*&---------------------------------------------------------------------*
*& Form SUB_GET_VTTK
*&---------------------------------------------------------------------*
*& fetching shipping data
*----------------------------------------------------------------------*
FORM sub_get_vttk .
IF it_vbfa IS NOT INITIAL.
SELECT tknum
signi
tdlnr
text1
text2
text3
FROM vttk
INTO TABLE it_vttk
FOR ALL ENTRIES IN it_vbfa
WHERE tknum = it_vbfa-vbeln .
ENDIF.
ENDFORM. " SUB_GET_VTTK
*&---------------------------------------------------------------------*
*& Form SUB_GET_LFA1
*&---------------------------------------------------------------------*
*&fetching service agent details.
*----------------------------------------------------------------------*
FORM sub_get_lfa1 .
IF it_vttk IS NOT INITIAL.
SELECT lifnr
name1
FROM lfa1
INTO TABLE it_lfa1
FOR ALL ENTRIES IN it_vttk
WHERE lifnr = it_vttk-tdlnr .

ENDIF.
ENDFORM. " SUB_GET_LFA1
*&---------------------------------------------------------------------*
*& Form SUB_GET_LIPS
*&---------------------------------------------------------------------*
*&fetching delivery data
*----------------------------------------------------------------------*
FORM sub_get_lips .
IF it_mkpf IS NOT INITIAL.
SELECT vbeln
posnr
erdat
matnr
lgort
charg
arktx
vgbel
vgpos
spart
FROM lips
INTO TABLE it_lips
FOR ALL ENTRIES IN it_mkpf
WHERE vbeln = it_mkpf-vbeln .

IF sy-subrc = 0.
DELETE it_lips WHERE spart NOT IN s_spart .
IF it_lips IS INITIAL.
MESSAGE i000 WITH text-100 . "no data found for the given division
LEAVE LIST-PROCESSING .
ENDIF.

ENDIF.
ENDIF.
ENDFORM. " SUB_GET_LIPS
*&---------------------------------------------------------------------*
*& Form SUB_GET_T001W
*&---------------------------------------------------------------------*
*&fetching plant description.
*----------------------------------------------------------------------*
FORM sub_get_t001w .
IF it_mseg IS NOT INITIAL.
SELECT werks
name1
regio
FROM t001w
INTO TABLE it_t001w
FOR ALL ENTRIES IN it_mseg
WHERE werks = it_mseg-werks
OR werks = it_mseg-wempf+0(4).
ENDIF.
ENDFORM. " SUB_GET_T001W
*&---------------------------------------------------------------------*
*& Form SUB_GET_LIKP
*&---------------------------------------------------------------------*
*&fetching delivery header data.
*----------------------------------------------------------------------*
FORM sub_get_likp .

IF it_mkpf IS NOT INITIAL.


SELECT vbeln
lfart
route
wadat_ist
FROM likp
INTO TABLE it_likp
FOR ALL ENTRIES IN it_mkpf
WHERE vbeln = it_mkpf-vbeln .

ENDIF.

ENDFORM. " SUB_GET_LIKP


*&---------------------------------------------------------------------*
*& Form SUB_GET_LIPS2
*&---------------------------------------------------------------------*
*&fetching delivery item data.
*----------------------------------------------------------------------*
FORM sub_get_lips2 .

IF it_likp IS NOT INITIAL.

SELECT vbeln
posnr
erdat
matnr
lgort
charg
lfimg "aer01
arktx
vgbel
vgpos
spart
FROM lips
INTO TABLE it_lips
FOR ALL ENTRIES IN it_likp
WHERE vbeln = it_likp-vbeln .

IF sy-subrc = 0.

DELETE it_lips WHERE spart NOT IN s_spart .


DELETE it_lips WHERE lfimg IS INITIAL.

IF it_lips IS INITIAL.
MESSAGE i000 WITH text-100 . "no data found for the given division
LEAVE LIST-PROCESSING .
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " SUB_GET_LIPS2
*&---------------------------------------------------------------------*
*& Form SUB_GET_AUFM
*&---------------------------------------------------------------------*
*&fetching data from aufm table
*----------------------------------------------------------------------*
FORM sub_get_mcha .

SELECT setname
lineid
descript
FROM setlinet
INTO TABLE it_setlinet
WHERE setclass = c_class
AND setname = c_setname
AND descript IN s_spart .

IF sy-subrc = 0.
SELECT setname
lineid
valfrom
FROM setleaf
INTO TABLE it_setleaf
FOR ALL ENTRIES IN it_setlinet
WHERE setclass = c_class
AND setname = c_setname
AND lineid = it_setlinet-lineid.

ENDIF.

IF it_mseg IS NOT INITIAL.


DATA : lt_mseg LIKE it_mseg.
lt_mseg = it_mseg.

SORT lt_mseg BY matnr charg .


DELETE ADJACENT DUPLICATES FROM lt_mseg COMPARING matnr charg .

SELECT
matnr
werks
charg
FROM mcha
INTO TABLE it_mcha
FOR ALL ENTRIES IN lt_mseg
WHERE matnr = lt_mseg-matnr
AND charg = lt_mseg-charg.

IF sy-subrc = 0.
SORT it_setleaf BY valfrom .

LOOP AT it_mcha INTO is_mcha.


CLEAR is_setleaf.
READ TABLE it_setleaf INTO is_setleaf WITH KEY valfrom = is_mcha-werks.
IF sy-subrc <> 0.
is_mcha-flag = c_x .
MODIFY it_mcha FROM is_mcha TRANSPORTING flag .
ENDIF.
ENDLOOP.

DELETE it_mcha WHERE flag = c_x.


ENDIF.
ENDIF.
ENDFORM. " SUB_GET_MCHA
*&---------------------------------------------------------------------*
*& Form SUB_GET_T001W2
*&---------------------------------------------------------------------*
*&fetching plant details.
*----------------------------------------------------------------------*
FORM sub_get_t001w2 .
DATA : lt_mcha LIKE it_mcha.
lt_mcha = it_mcha .
SORT lt_mcha BY werks .
DELETE ADJACENT DUPLICATES FROM lt_mcha COMPARING werks .
IF lt_mcha IS NOT INITIAL.
SELECT werks
name1
regio
FROM t001w
INTO TABLE it_t001w
FOR ALL ENTRIES IN lt_mcha
WHERE werks = lt_mcha-werks .
ENDIF.
ENDFORM. " SUB_GET_T001W2
*&---------------------------------------------------------------------*
*& Form SUB_PRE_FINAL_K2
*&---------------------------------------------------------------------*
*&preparing final table for k2 process.
*----------------------------------------------------------------------*
FORM sub_pre_final_k2 .
SORT : it_mseg BY mblnr mjahr ,
it_t001w BY werks,
it_vbfa BY vbelv,
it_vttk BY tknum ,
it_lfa1 BY lifnr,
it_mkpf BY mblnr mjahr,
it_lips BY vbeln matnr.

LOOP AT it_mseg INTO is_mseg.


is_final_k2-ebeln = is_mseg-ebeln.
is_final_k2-werks = is_mseg-werks.
is_final_k2-prctr = is_mseg-prctr.
is_final_k2-menge = is_mseg-menge.
is_final_k2-matnr = is_mseg-matnr.
is_final_k2-wempf = is_mseg-wempf.

CLEAR is_t001w.
READ TABLE it_t001w INTO is_t001w WITH KEY werks = is_mseg-werks BINARY SEARCH.
IF sy-subrc = 0.
is_final_k2-name_srp = is_t001w-name1.
ENDIF.

CLEAR is_t001w.
READ TABLE it_t001w INTO is_t001w WITH KEY werks = is_mseg-wempf+0(4) BINARY
SEARCH.
IF sy-subrc = 0.
is_final_k2-name_dsp = is_t001w-name1.
ENDIF.

CLEAR is_mkpf.
READ TABLE it_mkpf INTO is_mkpf WITH KEY mblnr = is_mseg-mblnr
mjahr = is_mseg-mjahr BINARY SEARCH.
IF sy-subrc = 0.
is_final_k2-vbeln = is_mkpf-vbeln. "delivery no
CLEAR is_vbfa.
READ TABLE it_vbfa INTO is_vbfa WITH KEY vbelv = is_mkpf-vbeln BINARY
SEARCH .
IF sy-subrc = 0.
is_final_k2-vbelv = is_vbfa-vbeln. "shipment no
is_final_k2-erdat = is_vbfa-erdat.
ENDIF.

CLEAR is_lips.
READ TABLE it_lips INTO is_lips WITH KEY vbeln = is_mkpf-vbeln
matnr = is_mseg-matnr BINARY SEARCH
.
IF sy-subrc = 0.
is_final_k2-spart = is_lips-spart.
is_final_k2-arktx = is_lips-arktx.
ENDIF.
ENDIF.

CLEAR is_vttk.
READ TABLE it_vttk INTO is_vttk WITH KEY tknum = is_final_k2-vbelv BINARY
SEARCH.
IF sy-subrc = 0 .
is_final_k2-signi = is_vttk-signi.
is_final_k2-text3 = is_vttk-text3.
is_final_k2-text2 = is_vttk-text2.
is_final_k2-text1 = is_vttk-text1.
CLEAR is_lfa1.
READ TABLE it_lfa1 INTO is_lfa1 WITH KEY lifnr = is_vttk-tdlnr BINARY
SEARCH .
IF sy-subrc = 0.
is_final_k2-name_vnd = is_lfa1-name1. "vendor name
ENDIF.
ENDIF.

*appending final table.


APPEND is_final_k2 TO it_final_k2.
CLEAR is_final_k2 .
ENDLOOP.
ENDFORM. " SUB_PRE_FINAL_K2
*&---------------------------------------------------------------------*
*& Form SUB_PRE_FINAL_K1_K3
*&---------------------------------------------------------------------*
*&preparing final table for k1 & k3 process .
*----------------------------------------------------------------------*
FORM sub_pre_final_k1_k3 .
SORT : it_mseg BY mblnr mjahr,
it_mkpf BY mblnr mjahr,
it_likp BY vbeln,
it_lips BY vbeln matnr.
LOOP AT it_mseg INTO is_mseg.

is_final-menge = is_mseg-menge.
is_final-meins = is_mseg-meins.
is_final-charg = is_mseg-charg.
is_final-werks = is_mseg-werks.
is_final-kunnr = is_mseg-kunnr.
is_final-matnr = is_mseg-matnr.
is_final-prctr = is_mseg-prctr.

CLEAR is_mkpf.
READ TABLE it_mkpf INTO is_mkpf WITH KEY mblnr = is_mseg-mblnr
mjahr = is_mseg-mjahr BINARY SEARCH .
IF sy-subrc = 0.
CLEAR is_likp.
READ TABLE it_likp INTO is_likp WITH KEY vbeln = is_mkpf-vbeln BINARY
SEARCH .
IF sy-subrc = 0.
is_final-wadat_ist = is_likp-wadat_ist.
is_final-route = is_likp-route.
is_final-lfart = is_likp-lfart.
ENDIF.
CLEAR is_lips.
READ TABLE it_lips INTO is_lips WITH KEY vbeln = is_likp-vbeln
matnr = is_mseg-matnr BINARY
SEARCH .
IF sy-subrc = 0 .
is_final-vgbel = is_lips-vgbel.
is_final-vgpos = is_lips-vgpos.
is_final-spart = is_lips-spart.
is_final-vbeln = is_lips-vbeln.
is_final-erdat = is_lips-erdat.
is_final-arktx = is_lips-arktx.
is_final-lgort = is_lips-lgort.
ENDIF.
ENDIF.
*&append final table.
APPEND is_final TO it_final.
CLEAR is_final .
ENDLOOP.
ENDFORM. " SUB_PRE_FINAL_K1_K3
*&---------------------------------------------------------------------*
*& Form SUB_PRE_FINAL_PRD
*&---------------------------------------------------------------------*
FORM sub_pre_final_prd .

SORT : it_mseg BY mblnr mjahr,


it_mkpf BY mblnr mjahr,
it_likp BY vbeln,
it_lips BY vbeln matnr,
it_mcha BY matnr charg,
it_t001w BY werks .

LOOP AT it_mseg INTO is_mseg.

is_final-menge = is_mseg-menge.
is_final-meins = is_mseg-meins.
is_final-charg = is_mseg-charg.
is_final-werks = is_mseg-werks.
is_final-kunnr = is_mseg-kunnr.
is_final-matnr = is_mseg-matnr.
is_final-prctr = is_mseg-prctr.

CLEAR is_mkpf.
READ TABLE it_mkpf INTO is_mkpf WITH KEY mblnr = is_mseg-mblnr
mjahr = is_mseg-mjahr
BINARY SEARCH .

IF sy-subrc = 0.
CLEAR is_likp.
READ TABLE it_likp INTO is_likp WITH KEY vbeln = is_mkpf-vbeln BINARY
SEARCH .
IF sy-subrc = 0.
is_final-wadat_ist = is_likp-wadat_ist.
is_final-route = is_likp-route.
is_final-lfart = is_likp-lfart.
ENDIF.
CLEAR is_lips.
READ TABLE it_lips INTO is_lips WITH KEY vbeln = is_likp-vbeln
matnr = is_mseg-matnr BINARY
SEARCH .
IF sy-subrc = 0 .
is_final-vgbel = is_lips-vgbel.
is_final-vgpos = is_lips-vgpos.
is_final-spart = is_lips-spart.
is_final-vbeln = is_lips-vbeln.
is_final-erdat = is_lips-erdat.
is_final-arktx = is_lips-arktx.
is_final-lgort = is_lips-lgort.
ENDIF.
ENDIF.
CLEAR is_mcha.
READ TABLE it_mcha INTO is_mcha WITH KEY matnr = is_mseg-matnr
charg = is_mseg-charg BINARY SEARCH.
IF sy-subrc = 0 .
is_final-werks1 = is_mcha-werks. "manufacturer plant
CLEAR is_t001w.
READ TABLE it_t001w INTO is_t001w WITH KEY werks = is_mcha-werks BINARY
SEARCH .
IF sy-subrc = 0.
is_final-regio = is_t001w-regio.
ENDIF.
ENDIF.
***append final table.
APPEND is_final TO it_final.
CLEAR is_final.
ENDLOOP.
ENDFORM. " SUB_PRE_FINAL_PRD
*&---------------------------------------------------------------------*
*& Form SUB_DISPLAY
*&---------------------------------------------------------------------*
*& display final table.
*----------------------------------------------------------------------*
FORM sub_display .

DELETE it_final_k2 WHERE spart NOT IN s_spart.


IF sy-subrc = 0 AND it_final_k2 IS INITIAL.
MESSAGE i000 WITH text-100 . "no data found for
the given division
LEAVE LIST-PROCESSING .
ENDIF.
is_layout-zebra = c_x .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = is_layout
it_fieldcat = it_fcat
TABLES
t_outtab = it_final_k2
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. " SUB_DISPLAY


*&---------------------------------------------------------------------*
*& Form SUB_PRE_FCAT
*&---------------------------------------------------------------------*
* building field catalog
*----------------------------------------------------------------------*
FORM sub_pre_fcat .
w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-010.
is_fcat-fieldname = text-011.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-012.
is_fcat-fieldname = text-013.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-014.
is_fcat-fieldname = text-015.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-016.
is_fcat-fieldname = text-017.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-018.
is_fcat-fieldname = text-019.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-020.
is_fcat-fieldname = text-021.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-022.
is_fcat-fieldname = text-023.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-024.
is_fcat-fieldname = text-025.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-026.
is_fcat-fieldname = text-027.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-028.
is_fcat-fieldname = text-029.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-030.
is_fcat-fieldname = text-031.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-032.
is_fcat-fieldname = text-033.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-034.
is_fcat-fieldname = text-035.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-036.
is_fcat-fieldname = text-037.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-038.
is_fcat-fieldname = text-039.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-040.
is_fcat-fieldname = text-041.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-042.
is_fcat-fieldname = text-043.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-seltext_m = text-044.
is_fcat-fieldname = text-045.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
ENDFORM. " SUB_PRE_FCAT
*&---------------------------------------------------------------------*
*& Form SUB_PRE_FCAT_K1_K3
*&---------------------------------------------------------------------*
*&building field catalog.
*----------------------------------------------------------------------*
FORM sub_pre_fcat_k1_k3 .

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-050.
is_fcat-seltext_m = text-051.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-052.
is_fcat-seltext_m = text-053.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-054.
is_fcat-seltext_m = text-055.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-056.
is_fcat-seltext_m = text-057.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-058.
is_fcat-seltext_m = text-059.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-060.
is_fcat-seltext_m = text-061.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-062.
is_fcat-seltext_m = text-063.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-064.
is_fcat-seltext_m = text-065.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-066.
is_fcat-seltext_m = text-067.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-068.
is_fcat-seltext_m = text-069.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-070.
is_fcat-seltext_m = text-071.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-072.
is_fcat-seltext_m = text-073.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-074.
is_fcat-seltext_m = text-075.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

IF r_prd = c_x.
w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-082.
is_fcat-seltext_m = text-083.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-084.
is_fcat-seltext_m = text-085.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
ENDIF.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-076.
is_fcat-seltext_m = text-077.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-078.
is_fcat-seltext_m = text-079.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-080.
is_fcat-seltext_m = text-081.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

ENDFORM. " SUB_PRE_FCAT_K1_K3


*&---------------------------------------------------------------------*
*& Form SUB_DISPLAY_K3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_display_k3 .

DELETE it_final WHERE spart NOT IN s_spart.

IF sy-subrc = 0 AND it_final IS INITIAL.


MESSAGE i000 WITH text-100 . "no data found for the given division
LEAVE LIST-PROCESSING .
ENDIF.

is_layout-zebra = c_x .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
is_layout = is_layout
it_fieldcat = it_fcat
TABLES
t_outtab = it_final
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. " SUB_DISPLAY_K3


*&---------------------------------------------------------------------*
*& Form SUB_VAL_DIVISION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_val_division .

DATA : w_spart TYPE spart.

SELECT SINGLE spart


FROM tspa
INTO w_spart
WHERE spart IN s_spart. "#EC *

IF sy-subrc <> 0.
MESSAGE e000 WITH text-003. "Enter valid division
ENDIF.

ENDFORM. " SUB_VAL_DIVISION

*&---------------------------------------------------------------------*
*& Form SUB_PRE_FINAL_PRD1
*&---------------------------------------------------------------------*
FORM sub_pre_final_prd1.

SORT : it_mseg BY mblnr mjahr,


it_mkpf BY mblnr mjahr,
it_likp BY vbeln,
it_lips BY vbeln matnr,
it_mcha BY matnr charg,
it_t001w BY werks .

IF it_mseg IS NOT INITIAL.

SELECT vbelv
posnv
vbeln
posnn
vbtyp_n
erdat
FROM vbfa
INTO TABLE it_vbfa
FOR ALL ENTRIES IN it_mseg
WHERE vbeln = it_mseg-mblnr
AND vbtyp_v IN ('J','T').

IF sy-subrc = 0.
DELETE it_vbfa WHERE vbtyp_n NE 'R'.
SORT it_vbfa BY vbelv posnv.
DELETE ADJACENT DUPLICATES FROM it_vbfa COMPARING vbelv posnv.
SORT it_vbfa BY vbeln posnn.

ENDIF.

ENDIF.

LOOP AT it_mseg INTO is_mseg.

is_final-menge = is_mseg-menge.
is_final-meins = is_mseg-meins.
is_final-charg = is_mseg-charg.
is_final-werks = is_mseg-werks.
is_final-kunnr = is_mseg-kunnr.
is_final-matnr = is_mseg-matnr.
is_final-prctr = is_mseg-prctr.

CLEAR is_mkpf.
READ TABLE it_mkpf INTO is_mkpf WITH KEY mblnr = is_mseg-mblnr
mjahr = is_mseg-mjahr
BINARY SEARCH .

IF sy-subrc = 0.

CLEAR is_likp.
READ TABLE it_likp INTO is_likp WITH KEY vbeln = is_mkpf-vbeln BINARY
SEARCH .

IF sy-subrc = 0.
is_final-wadat_ist = is_likp-wadat_ist.
is_final-route = is_likp-route.
is_final-lfart = is_likp-lfart.
ENDIF.

ENDIF.

CLEAR is_vbfa.
READ TABLE it_vbfa INTO is_vbfa WITH KEY vbeln = is_mseg-mblnr
posnn = is_mseg-zeile
BINARY SEARCH.

IF sy-subrc = 0.

CLEAR is_lips.
READ TABLE it_lips INTO is_lips WITH KEY vbeln = is_vbfa-vbelv
posnr = is_vbfa-posnv BINARY
SEARCH .

IF sy-subrc = 0 .

is_final-vgbel = is_lips-vgbel.
is_final-vgpos = is_lips-vgpos.
is_final-spart = is_lips-spart.
is_final-vbeln = is_lips-vbeln.
is_final-posnr = is_lips-posnr.
is_final-erdat = is_lips-erdat.
is_final-arktx = is_lips-arktx.
is_final-lgort = is_lips-lgort.

ENDIF.

ENDIF.

CLEAR is_mcha.
READ TABLE it_mcha INTO is_mcha WITH KEY matnr = is_mseg-matnr
charg = is_mseg-charg BINARY SEARCH.
IF sy-subrc = 0 .
is_final-werks1 = is_mcha-werks. "manufacturer plant
CLEAR is_t001w.
READ TABLE it_t001w INTO is_t001w WITH KEY werks = is_mcha-werks BINARY
SEARCH .
IF sy-subrc = 0.
is_final-regio = is_t001w-regio.
ENDIF.
ENDIF.

***append final table.


APPEND is_final TO it_final.
CLEAR is_final.

ENDLOOP.

DELETE it_final WHERE vgbel IS INITIAL AND vgpos IS INITIAL.

ENDFORM. " SUB_PRE_FINAL_PRD1


*&---------------------------------------------------------------------*
*& Form SUB_PRE_FCAT_K1_K3_INVOICE_DET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_pre_fcat_k1_k3_invoice_det .

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-050.
is_fcat-seltext_m = text-051.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-052.
is_fcat-seltext_m = text-053.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-054.
is_fcat-seltext_m = text-055.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-056.
is_fcat-seltext_m = text-057.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-058.
is_fcat-seltext_m = text-059.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'NAME1'.
is_fcat-seltext_m = 'Customer Name'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'ADDRESS'.
is_fcat-seltext_m = 'Customer Address'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'CUST_REG'.
is_fcat-seltext_m = 'Customer Region'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'J_1ILSTNO'.
is_fcat-seltext_m = 'Customer TIN / LST Number'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-062.
is_fcat-seltext_m = text-063.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-060.
is_fcat-seltext_m = text-061.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-072.
is_fcat-seltext_m = text-073.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-064.
is_fcat-seltext_m = text-065.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-066.
is_fcat-seltext_m = text-067.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-068.
is_fcat-seltext_m = text-069.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-070.
is_fcat-seltext_m = text-071.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-074.
is_fcat-seltext_m = text-075.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-082.
is_fcat-seltext_m = 'Mfg. Plant'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-084.
is_fcat-seltext_m = 'Mfg. Plant Rg'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-076.
is_fcat-seltext_m = text-077.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-078.
is_fcat-seltext_m = text-079.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = text-080.
is_fcat-seltext_m = text-081.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'BILL_DOC'.
is_fcat-seltext_m = 'Invoice No'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'FKART'.
is_fcat-seltext_m = 'Billing Type'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'FKDAT'.
is_fcat-seltext_m = 'Invoice Date'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'VKORG'.
is_fcat-seltext_m = 'Sales Org'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'SPART'.
is_fcat-seltext_m = 'Division'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'BAS_VAL'.
is_fcat-seltext_m = 'Base Value'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'R_DIS'.
is_fcat-seltext_m = 'Rebates/Discounts'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'NET_VAL'.
is_fcat-seltext_m = 'Net Value'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TAX_TYP'.
is_fcat-seltext_m = 'Tax type (VAT/CST)'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TAX1'.
is_fcat-seltext_m = 'Tax1 rate'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TAX1_AMT'.
is_fcat-seltext_m = 'Tax1 Amount'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TAX2'.
is_fcat-seltext_m = 'Tax2 rate'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TAX2_AMT'.
is_fcat-seltext_m = 'Tax2 Amount'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'DEV'.
is_fcat-seltext_m = 'Dev Tax rate'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'DEV_AMT'.
is_fcat-seltext_m = 'Dev Tax Amount'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TAX4'.
is_fcat-seltext_m = 'Tax4 rate'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TAX4_AMT'.
is_fcat-seltext_m = 'Tax4 Amount'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TOT_TAX'.
is_fcat-seltext_m = 'Total Tax Amount'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

w_count = w_count + 1 .
is_fcat-col_pos = w_count .
is_fcat-fieldname = 'TOT_AMT'.
is_fcat-seltext_m = 'Total Amount'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

ENDFORM. " SUB_PRE_FCAT_K1_K3_INVOICE_DET


*&---------------------------------------------------------------------*
*& Form SUB_GET_CUST_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_get_cust_details .

IF it_final IS NOT INITIAL.

SELECT kunnr
name1
name2
ort01
pstlz
regio
stras
INTO TABLE it_kna1
FROM kna1
FOR ALL ENTRIES IN it_final
WHERE kunnr = it_final-kunnr.

IF sy-subrc = 0.
SORT it_kna1 BY kunnr.
ENDIF.
SELECT kunnr
j_1ilstno
FROM j_1imocust
INTO TABLE it_j_1imocust
FOR ALL ENTRIES IN it_final
WHERE kunnr = it_final-kunnr.

IF sy-subrc = 0.
SORT it_j_1imocust BY kunnr.
ENDIF.

ENDIF.

ENDFORM. " SUB_GET_CUST_DETAILS


*&---------------------------------------------------------------------*
*& Form SUB_GET_VBRK_VBRP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_get_vbrk_vbrp .

IF it_final IS NOT INITIAL.

SELECT vbeln
posnr
vgbel
vgpos
aubel
aupos
spart
shkzg
FROM vbrp
INTO TABLE it_vbrp
FOR ALL ENTRIES IN it_final
WHERE aubel = it_final-vgbel
AND aupos = it_final-vgpos.

IF sy-subrc = 0.

IF it_vbrp IS NOT INITIAL.

SELECT vbeln
fkart
vkorg
fkdat
knumv
fksto
FROM vbrk
INTO TABLE it_vbrk
FOR ALL ENTRIES IN it_vbrp
WHERE vbeln = it_vbrp-vbeln.

IF sy-subrc = 0.

DELETE it_vbrk WHERE fkart NE 'ZF2'


AND fkart NE 'ZRE'
AND fkart NE 'IG'.

DELETE it_vbrk WHERE fksto = 'X'.

SORT it_vbrk BY vbeln.

LOOP AT it_vbrp INTO is_vbrp.

w_tabix = sy-tabix.

CLEAR is_vbrk.
READ TABLE it_vbrk INTO is_vbrk WITH KEY vbeln = is_vbrp-vbeln
BINARY SEARCH.

IF sy-subrc = 0.
is_vbrp-flag = 'X'.
ENDIF.

MODIFY it_vbrp FROM is_vbrp INDEX w_tabix TRANSPORTING flag.

CLEAR is_vbrp.

ENDLOOP.

DELETE it_vbrp WHERE flag NE 'X'.

IF it_vbrk IS NOT INITIAL.

SELECT knumv
kposn
stunr
zaehk
kschl
kbetr
kwert
FROM konv
INTO TABLE it_konv
FOR ALL ENTRIES IN it_vbrk
WHERE knumv = it_vbrk-knumv.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

SORT it_vbrp BY aubel aupos.

LOOP AT it_final INTO is_final.

w_tabix = sy-tabix.

CLEAR is_vbrp.
READ TABLE it_vbrp INTO is_vbrp WITH KEY aubel = is_final-vgbel
aupos = is_final-vgpos
BINARY SEARCH.

IF sy-subrc = 0.
is_final-flag = 'X'.
ENDIF.

MODIFY it_final FROM is_final INDEX w_tabix TRANSPORTING flag.

CLEAR is_final.

ENDLOOP.

DELETE it_final WHERE flag NE 'X'.

LOOP AT it_final INTO is_final.

MOVE-CORRESPONDING is_final TO is_final_inv.


APPEND is_final_inv TO it_final_inv.

CLEAR : is_final,is_final_inv.

ENDLOOP.

SORT it_kna1 BY kunnr.


SORT it_j_1imocust BY kunnr.
SORT it_vbrp BY aubel aupos.
SORT it_vbrk BY vbeln.
SORT it_konv BY knumv kposn kschl.

LOOP AT it_final_inv INTO is_final_inv.

w_tabix = sy-tabix.

CLEAR is_kna1.
READ TABLE it_kna1 INTO is_kna1 WITH KEY kunnr = is_final_inv-kunnr BINARY
SEARCH.

IF sy-subrc = 0.
CONCATENATE is_kna1-name1 is_kna1-name2 INTO is_final_inv-name1.
CONCATENATE is_kna1-stras is_kna1-ort01 is_kna1-regio is_kna1-pstlz INTO
is_final_inv-address.
is_final_inv-cust_reg = is_kna1-regio.
ENDIF.

CLEAR is_j_1imocust.
READ TABLE it_j_1imocust INTO is_j_1imocust WITH KEY kunnr = is_final_inv-kunnr
BINARY SEARCH.

IF sy-subrc = 0.
CONDENSE is_j_1imocust-j_1ilstno.
is_final_inv-j_1ilstno = is_j_1imocust-j_1ilstno.
ENDIF.

CLEAR is_vbrp.
READ TABLE it_vbrp INTO is_vbrp WITH KEY aubel = is_final_inv-vgbel
aupos = is_final_inv-vgpos
BINARY SEARCH.

is_final_inv-spart = is_vbrp-spart.
IF sy-subrc = 0.

CLEAR is_vbrk.
READ TABLE it_vbrk INTO is_vbrk WITH KEY vbeln = is_vbrp-vbeln
BINARY SEARCH.

IF sy-subrc = 0.

is_final_inv-bill_doc = is_vbrk-vbeln.
is_final_inv-fkart = is_vbrk-fkart.
is_final_inv-fkdat = is_vbrk-fkdat.
is_final_inv-vkorg = is_vbrk-vkorg.

CLEAR is_konv.
READ TABLE it_konv INTO is_konv WITH KEY knumv = is_vbrk-knumv
kposn = is_vbrp-posnr
kschl = 'ZINV'
BINARY SEARCH.

IF sy-subrc = 0.
is_final_inv-bas_val = is_konv-kwert.
ENDIF.

CLEAR is_konv.
READ TABLE it_konv INTO is_konv WITH KEY knumv = is_vbrk-knumv
kposn = is_vbrp-posnr
kschl = 'JIVP'
BINARY SEARCH.

IF sy-subrc = 0.
is_final_inv-tax_typ = 'VAT'.
ENDIF.

CLEAR is_konv.
READ TABLE it_konv INTO is_konv WITH KEY knumv = is_vbrk-knumv
kposn = is_vbrp-posnr
kschl = 'JIVC'
BINARY SEARCH.

IF sy-subrc = 0.
is_final_inv-tax_typ = 'CST'.
ENDIF.

CLEAR is_konv.

LOOP AT it_konv INTO is_konv WHERE knumv = is_vbrk-knumv


AND kposn = is_vbrp-posnr
AND ( kschl = 'ZDA1' OR kschl = 'ZDA2' OR
kschl = 'ZDA3' OR kschl = 'ZDA4' OR
kschl = 'ZDA5' OR kschl = 'ZDA6' OR
kschl = 'ZDA7' OR kschl = 'ZDP1' OR
kschl = 'ZDP2' OR kschl = 'ZDP3' OR
kschl = 'ZDP4' ).

is_final_inv-r_dis = is_final_inv-r_dis + is_konv-kwert.

CLEAR is_konv.
ENDLOOP.

is_final_inv-net_val = is_final_inv-bas_val + is_final_inv-r_dis.

CLEAR is_konv.

LOOP AT it_konv INTO is_konv WHERE knumv = is_vbrk-knumv


AND kposn = is_vbrp-posnr
AND ( kschl = 'JCST'
OR kschl = 'JLST'
OR kschl = 'JSTA'
OR kschl = 'JIVP'
OR kschl = 'JIVC'
OR kschl = 'JIVM' ).

is_final_inv-tax1 = is_final_inv-tax1 + ( is_konv-kbetr / 10 ).


is_final_inv-tax1_amt = is_final_inv-tax1_amt + is_konv-kwert.

CLEAR is_konv.

ENDLOOP.

CLEAR is_konv.

LOOP AT it_konv INTO is_konv WHERE knumv = is_vbrk-knumv


AND kposn = is_vbrp-posnr
AND ( kschl = 'ZADL'
OR kschl = 'ZTOT' ).

is_final_inv-tax2 = is_final_inv-tax2 + ( is_konv-kbetr / 10 ).


is_final_inv-tax2_amt = is_final_inv-tax2_amt + is_konv-kwert.

CLEAR is_konv.

ENDLOOP.

CLEAR is_konv.
READ TABLE it_konv INTO is_konv WITH KEY knumv = is_vbrk-knumv
kposn = is_vbrp-posnr
kschl = 'ZDEV'
BINARY SEARCH.

IF sy-subrc = 0.
is_final_inv-dev = ( is_konv-kbetr / 10 ).
is_final_inv-dev_amt = is_konv-kwert.
ENDIF.

is_final_inv-tax4 = ' '.


is_final_inv-tax4_amt = ' '.

ENDIF.

ENDIF.

is_final_inv-tot_tax = is_final_inv-tax1_amt + is_final_inv-tax2_amt +


is_final_inv-dev_amt + is_final_inv-tax4_amt.
is_final_inv-tot_amt = is_final_inv-tot_tax + is_final_inv-net_val.

IF is_final_inv-fkart = 'ZRE' OR is_final_inv-fkart = 'ZG2' OR is_final_inv-


fkart = 'ZS1' OR is_final_inv-fkart = 'IG'.

is_final_inv-bas_val = is_final_inv-bas_val * ( -1 ).
is_final_inv-r_dis = is_final_inv-r_dis * ( -1 ).
is_final_inv-net_val = is_final_inv-net_val * ( -1 ).
is_final_inv-tax1 = is_final_inv-tax1 * ( -1 ).
is_final_inv-tax1_amt = is_final_inv-tax1_amt * ( -1 ).
is_final_inv-tax2 = is_final_inv-tax2 * ( -1 ).
is_final_inv-tax2_amt = is_final_inv-tax2_amt * ( -1 ).
is_final_inv-dev = is_final_inv-dev * ( -1 ).
is_final_inv-dev_amt = is_final_inv-dev_amt * ( -1 ).
is_final_inv-tax4 = is_final_inv-tax4 * ( -1 ).
is_final_inv-tax4_amt = is_final_inv-tax4_amt * ( -1 ).
is_final_inv-tot_tax = is_final_inv-tot_tax * ( -1 ).
is_final_inv-tot_amt = is_final_inv-tot_amt * ( -1 ).
is_final_inv-menge = is_final_inv-menge * ( -1 ).

ENDIF.

MODIFY it_final_inv FROM is_final_inv INDEX w_tabix TRANSPORTING name1 address


cust_reg j_1ilstno spart bill_doc fkart fkdat vkorg
bas_val
tax_typ r_dis net_val tax1 tax1_amt
tax2 tax2_amt
dev dev_amt tot_tax tot_amt menge.

CLEAR is_final_inv.

ENDLOOP.

ENDFORM. " SUB_GET_VBRK_VBRP


*&---------------------------------------------------------------------*
*& Form SUB_DISPLAY_INV_DET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_display_inv_det .

DELETE it_final_inv WHERE spart NOT IN s_spart.

IF sy-subrc = 0 AND it_final_inv IS INITIAL.


MESSAGE i000 WITH text-100 . "no data found for the given division
LEAVE LIST-PROCESSING .
ENDIF.

is_layout-zebra = c_x .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = sy-repid
is_layout = is_layout
it_fieldcat = it_fcat
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = it_final_inv
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. " SUB_DISPLAY_INV_DET

*Text elements
*----------------------------------------------------------
* 001 Enter valid supply plant
* 002 Enter valid Receiving plant
* 003 Enter valid division
* 004 No data found
* 010 Sto No
* 011 EBELN
* 012 Source Plant
* 013 WERKS
* 014 Source Name
* 015 NAME_SRP
* 016 Dest.Plant
* 017 WEMPF
* 018 Destination Name
* 019 NAME_DSP
* 020 Delivery No
* 021 VBELN
* 022 Shipment No
* 023 VBELV
* 024 Shipment Dt
* 025 ERDAT
* 026 Service Agent Name
* 027 NAME_VND
* 028 Division
* 029 SPART
* 030 Material
* 031 MATNR
* 032 Material Description
* 033 ARKTX
* 034 Category
* 035 PRCTR
* 036 Quantity
* 037 MENGE
* 038 Truck No
* 039 SIGNI
* 040 Way Bill No
* 041 TEXT3
* 042 LR No
* 043 TEXT1
* 044 Delivery Challan Number
* 045 TEXT2
* 050 VGBEL
* 051 Ref.doc.
* 052 VGPOS
* 053 RefItm
* 054 VBELN
* 055 Delivery
* 056 LFART
* 057 DlvTy
* 058 ERDAT
* 059 Created on
* 060 WERKS
* 061 Plnt
* 062 KUNNR
* 063 Ship-to-party
* 064 ROUTE
* 065 Route
* 066 MATNR
* 067 Material
* 068 ARKTX
* 069 Material Description
* 070 PRCTR
* 071 Category
* 072 LGORT
* 073 SLoc
* 074 CHARG
* 075 Batch
* 076 MENGE
* 077 Delivery quantity
* 078 MEINS
* 079 SU
* 080 WADAT_IST
* 081 Ac.GI date
* 082 WERKS1
* 083 Plant
* 084 REGIO
* 085 Region
* 100 No data found for the given division
* 110 Selection screen

*Selection texts
*----------------------------------------------------------
* R_K2 K2
* R_K3 K1 & K3
* R_PRD Production Source Sales K1 K3
* R_PRD1 K1 K3 - Invoice Details
* S_DATE Date
* S_PLNT_D Receiving Plant
* S_PLNT_S Supplying Plant
* S_PRCTR Category
* S_SPART Division

*Messages
*----------------------------------------------------------
*
* Message class: YMFI
*000 & & & &

----------------------------------------------------------------------------------

Das könnte Ihnen auch gefallen