2007 Oct 17 1:55 PM
Hi all,
I have a requirement that for a particular excise invoice no and date I should show the particular Material Company Code, Batch No, Gross Weight, Net Weight.
There are two materials for that particular excise invoice no and for one material there are no of batch nos.
I have used a function module QC01_BATCH_VALUES_READ. In which if I give material number, company code, and batch number as import parameters it will return gross weight, net weight, tare weight.
The problem is it is returning the first value only . That is for the second material also it is showing the gross weight of first material only. I am unable to get the solution please help me check my source code.
The return values will be coming in the table char_val_tab.
TABLES: mara,
mvke,
likp,
tvm3t,
vbrk,
vbrp,
j_1imocust,
J_1IEXCHDR,
j_1iexcdtl.
TYPES: BEGIN OF t_date,
month(2) TYPE n,
year(4) TYPE n,
day(2) TYPE n,
END OF t_date.
TYPES: t_ct3(8) TYPE c,
t_are3(8) TYPE c.
FIELD-SYMBOLS <fs> TYPE t_date.
*INTERNAL TABLE DECLARATIONS
DATA : BEGIN OF it_j_1imocust OCCURS 0,
kunnr LIKE j_1imocust-kunnr,
aedat LIKE j_1imocust-aedat,
j_1iexcd LIKE j_1imocust-j_1iexcd,
j_1iexrn LIKE j_1imocust-j_1iexrn,
j_1iexrg LIKE j_1imocust-j_1iexrg,
j_1iexdi LIKE j_1imocust-j_1iexdi,
END OF it_j_1imocust.
DATA : BEGIN OF it_j_1iexcdtl OCCURS 0,
ecs LIKE j_1iexcdtl-ecs,
cess LIKE j_1iexcdtl-cess,
aedat LIKE j_1iexcdtl-aedat,
exdat LIKE j_1iexcdtl-exdat,
exnum LIKE j_1iexcdtl-exnum,
docyr LIKE j_1iexcdtl-docyr,
docno LIKE j_1iexcdtl-docno,
rdoc1 LIKE j_1iexcdtl-rdoc1,
rdoc2 LIKE j_1iexcdtl-rdoc2,
exbas LIKE j_1iexcdtl-exbas,
exbed LIKE j_1iexcdtl-exbed,
zeile LIKE j_1iexcdtl-zeile,
gewei LIKE j_1iexcdtl-gewei,
werks LIKE j_1iexcdtl-werks,
charg LIKE j_1iexcdtl-charg,
ntgew LIKE j_1iexcdtl-ntgew,
brgew LIKE j_1iexcdtl-brgew,
menge LIKE j_1iexcdtl-menge,
menga LIKE j_1iexcdtl-menga,
matnr LIKE j_1iexcdtl-matnr,
trntype LIKE j_1iexcdtl-trntyp,
ecsrate LIKE j_1iexcdtl-ecsrate,
BEDRATE LIKE j_1iexcdtl-bedrate,
grosswt TYPE p DECIMALS 3,
netwt TYPE p DECIMALS 3,
tarewt TYPE p DECIMALS 3,
cases type i,
exaddtax1 LIKE j_1iexcdtl-exaddtax1,
END OF it_j_1iexcdtl.
DATA : it_j_1iexcdtl1 LIKE it_j_1iexcdtl OCCURS 0 WITH HEADER LINE.
DATA : l_menge TYPE j_1iexcdtl-menge.
DATA : l_exnum TYPE j_1iexcdtl-exnum.
DATA : l_exbas TYPE j_1iexcdtl-exbas.
DATA : l_exbas1 TYPE j_1iexcdtl-exbas.
DATA : l_exbas2 TYPE j_1iexcdtl-exbas.
DATA : l_exbed TYPE j_1iexcdtl-exbed.
DATA : l_ecs TYPE j_1iexcdtl-ecs.
DATA : l_exaddtax1 TYPE j_1iexcdtl-exaddtax1.
DATA : l_amount TYPE j_1iexcdtl-exbed.
DATA : BEGIN OF it_likp OCCURS 0,
vbeln LIKE likp-vbeln,
traid LIKE likp-traid,
werks LIKE likp-werks,
END OF it_likp.
DATA : zwerks like j_1iexcdtl-werks,
zecs type p decimals 0,
zcess type p decimals 0,
zexbed type p decimals 0,
zexaddtax1 type p decimals 0,
zecsrate like j_1iexcdtl-ecsrate,
zbedrate like j_1iexcdtl-bedrate,
v_object LIKE ausp-objek,
zexbas like j_1iexcdtl-exbas,
zexaddrate1 like j_1iexcdtl-exaddrate1,
tx_netwt type p decimals 0,
TT_CCASE(4) type p decimals 0.
DATA: it_class LIKE sclass OCCURS 0 WITH HEADER LINE,
it_clobdata LIKE clobjdat OCCURS 0 WITH HEADER LINE,
itab_lips LIKE lips OCCURS 0 WITH HEADER LINE,
struc_tj_1iexcdtl like j_1iexcdtl .
DATA : BEGIN OF it_mvke OCCURS 0,
matnr LIKE mvke-matnr,
mvgr1 LIKE mvke-mvgr1,
mvgr3 LIKE mvke-mvgr3,
mvgr4 LIKE mvke-mvgr4,
mvgr5 LIKE mvke-mvgr5,
extwg LIKE mara-extwg,
matkl LIKE mara-matkl,
END OF it_mvke.
DATA : BEGIN OF it_tvm3t OCCURS 0,
mvgr3 LIKE tvm3t-mvgr3,
bezei LIKE tvm3t-bezei,
END OF it_tvm3t.
DATA : char_val_tab LIKE api_vali OCCURS 10 WITH HEADER LINE,
l_lfimg LIKE lips-lfimg,
l_grosswt(30) TYPE c,
l_grosswt1(30) TYPE c,
t_grosswt(8) TYPE c,
t_grosswt1(10) TYPE c,
tz_grosswt1(10) TYPE c,
tx_grosswt1(10) TYPE p decimals 3,
tz_ccase TYPE p DECIMALS 0,
l_unit(30) TYPE c,
l_netwt(30) TYPE c,
l_netwt1(30) TYPE c,
t_netwt1(30) TYPE c,
l_tarewt(30) TYPE c,
l_tarewt1(30) TYPE c,
t_tarewt1(30) TYPE c,
l_cases TYPE I,
flag TYPE c.
DATA : BEGIN OF it_delivery OCCURS 0,
matnr LIKE lips-matnr,
werks LIKE lips-werks,
charg LIKE lips-charg,
grosswt TYPE p DECIMALS 3,
netwt TYPE p DECIMALS 3,
tarewt TYPE p DECIMALS 3,
END OF it_delivery.
DATA : BEGIN OF IT_GROSSWT OCCURS 0,
matnr LIKE lips-matnr,
ccase TYPE p DECIMALS 0,
grosswt TYPE p DECIMALS 3,
netwt TYPE p DECIMALS 3,
End of it_grosswt.
DATA : BEGIN OF IT_INV OCCURS 0,
exnum LIKE j_1iexchdr-exnum,
exdat LIKE j_1iexchdr-exdat,
End of it_inv.
***********selection parameters ****************
SELECTION-SCREEN : BEGIN OF BLOCK blk WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_exnum FOR j_1iexcdtl-exnum,
s_exdat FOR j_1iexcdtl-exdat.
PARAMETERS: s_ct3 TYPE t_ct3 ,
s_date TYPE j_1iexcdtl-exdat DEFAULT ' '.
PARAMETERS: s_are3 TYPE t_are3,
s_date1 TYPE j_1iexcdtl-exdat DEFAULT ' '.
SELECTION-SCREEN : END OF BLOCK blk.
AT SELECTION-SCREEN.
IF NOT s_exnum IS INITIAL.
SELECT SINGLE * FROM j_1iexcdtl WHERE exnum IN s_exnum.
IF sy-subrc NE 0 .
MESSAGE e398(00) WITH
'This Invoice Number ' s_exnum 'does not exists'.
ENDIF.
ENDIF.
START-OF-SELECTION.
CLEAR: l_menge.
PERFORM get_data.
PERFORM TEST1.
PERFORM print_data. "*Working fine
&----
*& Form TOP_HEADING
&----
text
----
FORM top_heading.
DATA : Z_RG LIKE J_1IMOCUST-J_1IEXRG,
Z_DV LIKE J_1IMOCUST-J_1IEXDI,
Z_EX LIKE J_1IMOCUST-J_1IEXCO,
Z_KG LIKE J_1IEXCHDR-KUNAG,
Z_NM LIKE KNA1-NAME1.
SELECT SINGLE AJ_1IEXRG AJ_1IEXDI BKUNAG AJ_1IEXCO
INTO (Z_RG, Z_DV, Z_KG, Z_EX)
FROM J_1IMOCUST AS A INNER JOIN J_1IEXCHDR AS B
ON AKUNNR EQ BKUNAG
WHERE B~EXNUM IN s_exnum.
SELECT SINGLE NAME1
INTO (Z_NM)
FROM KNA1 WHERE KUNNR EQ Z_KG.
WRITE:/1 'INDIAN RAYON AND INDUSTRIES LTD.'.
WRITE: 78 ' VERAVAL'.
WRITE: 113 Z_EX.
WRITE:/1 'JUNAGADH ROAD, VERAVAL - 362266.'.
SKIP.
SKIP.
WRITE:/9 'AAA-CI-1747H-XM-007'.
WRITE:68 Z_RG.
WRITE:105 Z_DV.
WRITE:/9 'AR-I VERAVAL'.
WRITE:78 Z_NM.
WRITE:39 'JUNAGADH'.
WRITE:/9 'AAA-CI-1747H-XM-007'.
SKIP.
WRITE:/127 s_are3 ,
145 s_date1.
SKIP.
SKIP.
SKIP.
SKIP.
SKIP.
WRITE:/1 j_1iexcdtl-exdat, ' Viscose Rayon Filament Yarn.'.
ENDFORM. "TOP_HEADING
&----
*& Form get_data
&----
text
----
FORM get_data.
DATA : BEGIN OF IT_INV OCCURS 0,
exnum LIKE j_1iexchdr-exnum,
exdat LIKE j_1iexchdr-exdat,
End of it_inv.
SELECT distinct matnr charg werks
FROM j_1iexcdtl
INTO CORRESPONDING FIELDS OF TABLE it_delivery
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'.
SELECT distinct exnum exdat
FROM j_1iexcdtl
INTO CORRESPONDING FIELDS OF TABLE it_inv
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'.
SELECT matnr
count( * ) as cases sum( ecs ) as
ecs sum( cess ) as cess sum( exbas ) as exbas sum( exbed ) as
exbed sum( menge ) as menge min( ecsrate ) as ecsrate sum(
exaddtax1 ) as exaddtax1
FROM j_1iexcdtl
INTO CORRESPONDING FIELDS OF TABLE it_j_1iexcdtl
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'
group by matnr.
IF sy-subrc EQ 0.
SELECT a~matnr
a~mvgr1
a~mvgr3
a~mvgr5
a~mvgr4
b~extwg
b~matkl
FROM mvke as a inner join mara as b
on amatnr eq bmatnr
INTO corresponding fields of TABLE it_mvke
FOR ALL ENTRIES IN it_j_1iexcdtl
WHERE a~matnr EQ it_j_1iexcdtl-matnr.
SORT it_mvke BY matnr.
SELECT sum( ecs ) sum( cess ) sum( exbed ) sum( exaddtax1 ) min(
ecsrate ) min( bedrate ) min( exaddrate1 ) sum( exbas )
into (zecs, zcess, zexbed, zexaddtax1, zecsrate, zbedrate, zexaddrate1,
zexbas)
FROM j_1iexcdtl
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'.
SELECT vbeln
traid
werks
FROM likp INTO TABLE it_likp
FOR ALL ENTRIES IN it_j_1iexcdtl
WHERE erdat EQ it_j_1iexcdtl-exdat AND
werks EQ it_j_1iexcdtl-werks.
ENDIF.
ENDFORM. "get_data
&----
*& Form print_data
&----
text
----
FORM print_data.
PERFORM top_heading.
CLEAR : l_menge, t_grosswt1, t_tarewt1, t_netwt1, t_grosswt,
tz_grosswt1,tz_ccase,tx_netwt.
DATA : YMATNR LIKE J_1IEXCDTL-MATNR.
SORT it_j_1iexcdtl BY matnr.
MOVE: it_j_1iexcdtl-exnum TO l_exnum.
LOOP AT it_j_1iexcdtl." WHERE exnum IN s_exnum.
READ TABLE it_j_1iexcdtl WITH KEY matnr = it_j_1iexcdtl-matnr.
if YMATNR ne it_j_1iexcdtl-matnr.
ON CHANGE OF it_j_1iexcdtl-matnr.
REFRESH char_val_tab.
DATA : ZBEZEI LIKE TVM3T-BEZEI,
YBEZEI like TVM4T-BEZEI,
ZINVNO type STRING,
ZINVNO1 TYPE STRING,
ZINVNO2 TYPE STRING,
TY_CCASE(4) TYPE P DECIMALS 0,
zbed like it_j_1iexcdtl-bedrate.
READ TABLE IT_GROSSWT WITH KEY MATNR = IT_J_1IEXCDTL-MATNR.
IF SY-SUBRC EQ 0.
TZ_GROSSWT1 = IT_GROSSWT-GROSSWT.
T_GROSSWT1 = T_GROSSWT1 + TZ_GROSSWT1.
TY_CCASE = IT_GROSSWT-CCASE.
tx_netwt = it_grosswt-netwt.
ENDIF.
READ TABLE it_mvke WITH KEY matnr = it_j_1iexcdtl-matnr.
SELECT SINGLE BEZEI into zBEZEI
from TVM3T
where MVGR3 EQ it_mvke-mvgr3.
SELECT SINGLE BEZEI into yBEZEI
from TVM4T
where MVGR4 EQ it_mvke-mvgr4.
zexbed = ( ZEXBAS * 8 ) / 100.
zecs = ( zexbed * 2 ) / 100.
zexaddtax1 = ( zexbed * 1 ) / 100.
LOOP AT IT_INV.
ZINVNO = IT_INV-EXNUM.
CONCATENATE ZINVNO ZINVNO1 INTO ZINVNO2 SEPARATED BY ' '.
CONCATENATE EXNUM ZINVNO SEPARATED BY SPACE.
AT END.
CONCATENATE IT_INV-EXDAT INTO ZINVNO SEPARATED BY SPACE.
ENDAT.
ENDLOOP.
WRITE: 1 it_mvke-mvgr1,
5 it_mvke-extwg+0(4) LEFT-JUSTIFIED,' ',it_mvke-mvgr5
left-justified,
15 yBEZEI,
20 zBEZEI,
29 it_mvke-matkl+0(8) LEFT-JUSTIFIED,
34 TY_CCASE RIGHT-JUSTIFIED,
44 TZ_GROSSWT1 RIGHT-JUSTIFIED,
59 it_j_1iexcdtl-menge RIGHT-JUSTIFIED,
82 it_j_1iexcdtl-exbas RIGHT-JUSTIFIED.
if sy-tabix eq 1.
write: 99 'BED 8%',
109 zexbed round 0 RIGHT-JUSTIFIED,
130 ZINVNO2 NO-ZERO,
140 it_likp-traid.
write:/99 'CESS 2%',
109 zecs round 0 RIGHT-JUSTIFIED,
130 it_inv-exdat.
write:/99 'SCess 1%',
106 '%',
109 zexaddtax1 RIGHT-JUSTIFIED.
endif.
SKIP.
l_menge = l_menge + it_j_1iexcdtl-menge.
l_exbas = l_exbas + it_j_1iexcdtl-exbas.
l_exbed = l_exbed + it_j_1iexcdtl-exbed.
l_ecs = l_ecs + it_j_1iexcdtl-ecs.
l_cases = l_cases + it_j_1iexcdtl-cases.
l_exaddtax1 = l_exaddtax1 + it_j_1iexcdtl-exaddtax1.
T_GROSSWT1 = T_GROSSWT1 + TZ_GROSSWT1.
TT_CCASE = TT_CCASE + TY_CCASE.
IF sy-tabix GT '10'.
NEW-PAGE.
PERFORM top_heading.
CONTINUE.
ENDIF.
YMATNR = it_j_1iexcdtl-matnr.
ENDON.
ENDIF.
ENDLOOP.
l_amount = zexbed + zecs + zexaddtax1.
tx_grosswt1 = t_grosswt1 / 2.
Write: 10 'Invoice Total : ',
34 TT_CCASE RIGHT-JUSTIFIED.
WRITE: 45 tx_grosswt1 LEFT-JUSTIFIED.
WRITE: 59 l_menge RIGHT-JUSTIFIED.
WRITE: 82 l_exbas RIGHT-JUSTIFIED.
WRITE: 109 l_amount RIGHT-JUSTIFIED,
130 'CT3 No. ',s_ct3,' Dt. ',s_date.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/120 ' Veraval.'.
WRITE:/.
WRITE:/.
WRITE:/120 s_exdat.
ENDFORM. "print_data
&----
*& Form TEST1
&----
text
----
--> p1 text
<-- p2 text
----
form TEST1 .
DATA : ZMATNR LIKE j_1iexcdtl-matnr,
YMATNR LIKE j_1iexcdtl-matnr,
ZWERKS LIKE j_1iexcdtl-werks,
ZCHARG LIKE j_1iexcdtl-charg,
ty_grosswt1 LIKE j_1iexcdtl-MENGE.
CLEAR : l_menge, t_grosswt1, t_tarewt1, t_netwt1, t_grosswt,tz_ccase,
tx_netwt, char_val_tab.
REFRESH char_val_tab.
SORT it_j_1iexcdtl BY matnr.
MOVE: it_j_1iexcdtl-exnum TO l_exnum.
WRITE:/5 'MATNR', 25 'WERKS', 35'CHARG', 45'GROSSWT', 65'TAREWT',
85'NETWT'.
LOOP AT it_delivery.
read table it_delivery with key matnr = it_delivery-matnr charg =
it_delivery-charg.
CALL FUNCTION 'QC01_BATCH_VALUES_READ'
EXPORTING
i_val_matnr = it_delivery-matnr
i_val_werks = it_delivery-werks
i_val_charge = it_delivery-charg
TABLES
t_val_tab = char_val_tab
EXCEPTIONS
no_class = 1
internal_error = 2
no_values = 3
no_chars = 4
OTHERS = 5.
READ TABLE char_val_tab WITH KEY atnam = 'Z_GROSSWEIGHT'.
IF sy-subrc EQ 0.
MOVE char_val_tab-atwrt TO l_grosswt.
ENDIF.
READ TABLE char_val_tab WITH KEY atnam = 'Z_TAREWEIGHT'.
IF sy-subrc EQ 0.
MOVE char_val_tab-atwrt TO l_tarewt.
ENDIF.
READ TABLE char_val_tab WITH KEY atnam = 'Z_NETWEIGHT'.
IF sy-subrc EQ 0.
MOVE char_val_tab-atwrt TO l_netwt.
ENDIF.
SPLIT l_grosswt AT ' ' INTO l_grosswt1 l_unit.
SPLIT l_tarewt AT ' ' INTO l_tarewt1 l_unit.
SPLIT l_netwt AT ' ' INTO l_netwt1 l_unit.
it_j_1iexcdtl-grosswt = l_grosswt1.
it_j_1iexcdtl-tarewt = l_tarewt1.
it_j_1iexcdtl-netwt = l_netwt1.
ty_grosswt1 = ty_grosswt1 + l_grosswt1.
Write:/ it_delivery-matnr UNDER 'MATNR',it_delivery-werks UNDER
'WERKS',it_delivery-charg UNDER 'CHARG', L_GROSSWT1 UNDER
'GROSSWT', L_TAREWT1 UNDER 'TAREWT', L_NETWT1
UNDER 'NETWT'.
at new matnr.
IT_GROSSWT-matnr = zmatnr.
IT_GROSSWT-grosswt = tz_grosswt1.
IT_GROSSWT-CCASE = tz_ccase.
IT_GROSSWT-NETWT = tx_netwt.
append it_grosswt.
clear : tz_grosswt1,tz_ccase,tx_netwt.
endat.
tz_grosswt1 = tz_grosswt1 + l_grosswt1.
tz_ccase = tz_ccase + 1.
at last.
IT_GROSSWT-matnr = zmatnr.
IT_GROSSWT-grosswt = tz_grosswt1.
IT_GROSSWT-CCASE = tz_ccase.
IT_GROSSWT-NETWT = tx_netwt.
append it_grosswt.
sum.
endat.
zmatnr = it_delivery-matnr.
endloop.
<b>Useful answers rewarded</b>
Thanks & Regards,
sunil kumar.
Hi all,
I have a requirement that for a particular excise invoice no and date I should show the particular Material Company Code, Batch No, Gross Weight, Net Weight.
There are two materials for that particular excise invoice no and for one material there are no of batch nos.
I have used a function module QC01_BATCH_VALUES_READ. In which if I give material number, company code, and batch number as import parameters it will return gross weight, net weight, tare weight.
The problem is it is returning the first value only . That is for the second material also it is showing the gross weight of first material only. I am unable to get the solution please help me check my source code.
The return values will be coming in the table char_val_tab.
TABLES: mara,
mvke,
likp,
tvm3t,
vbrk,
vbrp,
j_1imocust,
J_1IEXCHDR,
j_1iexcdtl.
TYPES: BEGIN OF t_date,
month(2) TYPE n,
year(4) TYPE n,
day(2) TYPE n,
END OF t_date.
TYPES: t_ct3(8) TYPE c,
t_are3(8) TYPE c.
FIELD-SYMBOLS <fs> TYPE t_date.
*INTERNAL TABLE DECLARATIONS
DATA : BEGIN OF it_j_1imocust OCCURS 0,
kunnr LIKE j_1imocust-kunnr,
aedat LIKE j_1imocust-aedat,
j_1iexcd LIKE j_1imocust-j_1iexcd,
j_1iexrn LIKE j_1imocust-j_1iexrn,
j_1iexrg LIKE j_1imocust-j_1iexrg,
j_1iexdi LIKE j_1imocust-j_1iexdi,
END OF it_j_1imocust.
DATA : BEGIN OF it_j_1iexcdtl OCCURS 0,
ecs LIKE j_1iexcdtl-ecs,
cess LIKE j_1iexcdtl-cess,
aedat LIKE j_1iexcdtl-aedat,
exdat LIKE j_1iexcdtl-exdat,
exnum LIKE j_1iexcdtl-exnum,
docyr LIKE j_1iexcdtl-docyr,
docno LIKE j_1iexcdtl-docno,
rdoc1 LIKE j_1iexcdtl-rdoc1,
rdoc2 LIKE j_1iexcdtl-rdoc2,
exbas LIKE j_1iexcdtl-exbas,
exbed LIKE j_1iexcdtl-exbed,
zeile LIKE j_1iexcdtl-zeile,
gewei LIKE j_1iexcdtl-gewei,
werks LIKE j_1iexcdtl-werks,
charg LIKE j_1iexcdtl-charg,
ntgew LIKE j_1iexcdtl-ntgew,
brgew LIKE j_1iexcdtl-brgew,
menge LIKE j_1iexcdtl-menge,
menga LIKE j_1iexcdtl-menga,
matnr LIKE j_1iexcdtl-matnr,
trntype LIKE j_1iexcdtl-trntyp,
ecsrate LIKE j_1iexcdtl-ecsrate,
BEDRATE LIKE j_1iexcdtl-bedrate,
grosswt TYPE p DECIMALS 3,
netwt TYPE p DECIMALS 3,
tarewt TYPE p DECIMALS 3,
cases type i,
exaddtax1 LIKE j_1iexcdtl-exaddtax1,
END OF it_j_1iexcdtl.
DATA : it_j_1iexcdtl1 LIKE it_j_1iexcdtl OCCURS 0 WITH HEADER LINE.
DATA : l_menge TYPE j_1iexcdtl-menge.
DATA : l_exnum TYPE j_1iexcdtl-exnum.
DATA : l_exbas TYPE j_1iexcdtl-exbas.
DATA : l_exbas1 TYPE j_1iexcdtl-exbas.
DATA : l_exbas2 TYPE j_1iexcdtl-exbas.
DATA : l_exbed TYPE j_1iexcdtl-exbed.
DATA : l_ecs TYPE j_1iexcdtl-ecs.
DATA : l_exaddtax1 TYPE j_1iexcdtl-exaddtax1.
DATA : l_amount TYPE j_1iexcdtl-exbed.
DATA : BEGIN OF it_likp OCCURS 0,
vbeln LIKE likp-vbeln,
traid LIKE likp-traid,
werks LIKE likp-werks,
END OF it_likp.
DATA : zwerks like j_1iexcdtl-werks,
zecs type p decimals 0,
zcess type p decimals 0,
zexbed type p decimals 0,
zexaddtax1 type p decimals 0,
zecsrate like j_1iexcdtl-ecsrate,
zbedrate like j_1iexcdtl-bedrate,
v_object LIKE ausp-objek,
zexbas like j_1iexcdtl-exbas,
zexaddrate1 like j_1iexcdtl-exaddrate1,
tx_netwt type p decimals 0,
TT_CCASE(4) type p decimals 0.
DATA: it_class LIKE sclass OCCURS 0 WITH HEADER LINE,
it_clobdata LIKE clobjdat OCCURS 0 WITH HEADER LINE,
itab_lips LIKE lips OCCURS 0 WITH HEADER LINE,
struc_tj_1iexcdtl like j_1iexcdtl .
DATA : BEGIN OF it_mvke OCCURS 0,
matnr LIKE mvke-matnr,
mvgr1 LIKE mvke-mvgr1,
mvgr3 LIKE mvke-mvgr3,
mvgr4 LIKE mvke-mvgr4,
mvgr5 LIKE mvke-mvgr5,
extwg LIKE mara-extwg,
matkl LIKE mara-matkl,
END OF it_mvke.
DATA : BEGIN OF it_tvm3t OCCURS 0,
mvgr3 LIKE tvm3t-mvgr3,
bezei LIKE tvm3t-bezei,
END OF it_tvm3t.
DATA : char_val_tab LIKE api_vali OCCURS 10 WITH HEADER LINE,
l_lfimg LIKE lips-lfimg,
l_grosswt(30) TYPE c,
l_grosswt1(30) TYPE c,
t_grosswt(8) TYPE c,
t_grosswt1(10) TYPE c,
tz_grosswt1(10) TYPE c,
tx_grosswt1(10) TYPE p decimals 3,
tz_ccase TYPE p DECIMALS 0,
l_unit(30) TYPE c,
l_netwt(30) TYPE c,
l_netwt1(30) TYPE c,
t_netwt1(30) TYPE c,
l_tarewt(30) TYPE c,
l_tarewt1(30) TYPE c,
t_tarewt1(30) TYPE c,
l_cases TYPE I,
flag TYPE c.
DATA : BEGIN OF it_delivery OCCURS 0,
matnr LIKE lips-matnr,
werks LIKE lips-werks,
charg LIKE lips-charg,
grosswt TYPE p DECIMALS 3,
netwt TYPE p DECIMALS 3,
tarewt TYPE p DECIMALS 3,
END OF it_delivery.
DATA : BEGIN OF IT_GROSSWT OCCURS 0,
matnr LIKE lips-matnr,
ccase TYPE p DECIMALS 0,
grosswt TYPE p DECIMALS 3,
netwt TYPE p DECIMALS 3,
End of it_grosswt.
DATA : BEGIN OF IT_INV OCCURS 0,
exnum LIKE j_1iexchdr-exnum,
exdat LIKE j_1iexchdr-exdat,
End of it_inv.
***********selection parameters ****************
SELECTION-SCREEN : BEGIN OF BLOCK blk WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_exnum FOR j_1iexcdtl-exnum,
s_exdat FOR j_1iexcdtl-exdat.
PARAMETERS: s_ct3 TYPE t_ct3 ,
s_date TYPE j_1iexcdtl-exdat DEFAULT ' '.
PARAMETERS: s_are3 TYPE t_are3,
s_date1 TYPE j_1iexcdtl-exdat DEFAULT ' '.
SELECTION-SCREEN : END OF BLOCK blk.
AT SELECTION-SCREEN.
IF NOT s_exnum IS INITIAL.
SELECT SINGLE * FROM j_1iexcdtl WHERE exnum IN s_exnum.
IF sy-subrc NE 0 .
MESSAGE e398(00) WITH
'This Invoice Number ' s_exnum 'does not exists'.
ENDIF.
ENDIF.
START-OF-SELECTION.
CLEAR: l_menge.
PERFORM get_data.
PERFORM TEST1.
PERFORM print_data. "*Working fine
&----
*& Form TOP_HEADING
&----
text
----
FORM top_heading.
DATA : Z_RG LIKE J_1IMOCUST-J_1IEXRG,
Z_DV LIKE J_1IMOCUST-J_1IEXDI,
Z_EX LIKE J_1IMOCUST-J_1IEXCO,
Z_KG LIKE J_1IEXCHDR-KUNAG,
Z_NM LIKE KNA1-NAME1.
SELECT SINGLE AJ_1IEXRG AJ_1IEXDI BKUNAG AJ_1IEXCO
INTO (Z_RG, Z_DV, Z_KG, Z_EX)
FROM J_1IMOCUST AS A INNER JOIN J_1IEXCHDR AS B
ON AKUNNR EQ BKUNAG
WHERE B~EXNUM IN s_exnum.
SELECT SINGLE NAME1
INTO (Z_NM)
FROM KNA1 WHERE KUNNR EQ Z_KG.
WRITE:/1 'INDIAN RAYON AND INDUSTRIES LTD.'.
WRITE: 78 ' VERAVAL'.
WRITE: 113 Z_EX.
WRITE:/1 'JUNAGADH ROAD, VERAVAL - 362266.'.
SKIP.
SKIP.
WRITE:/9 'AAA-CI-1747H-XM-007'.
WRITE:68 Z_RG.
WRITE:105 Z_DV.
WRITE:/9 'AR-I VERAVAL'.
WRITE:78 Z_NM.
WRITE:39 'JUNAGADH'.
WRITE:/9 'AAA-CI-1747H-XM-007'.
SKIP.
WRITE:/127 s_are3 ,
145 s_date1.
SKIP.
SKIP.
SKIP.
SKIP.
SKIP.
WRITE:/1 j_1iexcdtl-exdat, ' Viscose Rayon Filament Yarn.'.
ENDFORM. "TOP_HEADING
&----
*& Form get_data
&----
text
----
FORM get_data.
DATA : BEGIN OF IT_INV OCCURS 0,
exnum LIKE j_1iexchdr-exnum,
exdat LIKE j_1iexchdr-exdat,
End of it_inv.
SELECT distinct matnr charg werks
FROM j_1iexcdtl
INTO CORRESPONDING FIELDS OF TABLE it_delivery
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'.
SELECT distinct exnum exdat
FROM j_1iexcdtl
INTO CORRESPONDING FIELDS OF TABLE it_inv
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'.
SELECT matnr
count( * ) as cases sum( ecs ) as
ecs sum( cess ) as cess sum( exbas ) as exbas sum( exbed ) as
exbed sum( menge ) as menge min( ecsrate ) as ecsrate sum(
exaddtax1 ) as exaddtax1
FROM j_1iexcdtl
INTO CORRESPONDING FIELDS OF TABLE it_j_1iexcdtl
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'
group by matnr.
IF sy-subrc EQ 0.
SELECT a~matnr
a~mvgr1
a~mvgr3
a~mvgr5
a~mvgr4
b~extwg
b~matkl
FROM mvke as a inner join mara as b
on amatnr eq bmatnr
INTO corresponding fields of TABLE it_mvke
FOR ALL ENTRIES IN it_j_1iexcdtl
WHERE a~matnr EQ it_j_1iexcdtl-matnr.
SORT it_mvke BY matnr.
SELECT sum( ecs ) sum( cess ) sum( exbed ) sum( exaddtax1 ) min(
ecsrate ) min( bedrate ) min( exaddrate1 ) sum( exbas )
into (zecs, zcess, zexbed, zexaddtax1, zecsrate, zbedrate, zexaddrate1,
zexbas)
FROM j_1iexcdtl
WHERE exnum IN s_exnum
and exdat in s_exdat
AND werks eq '1010'.
SELECT vbeln
traid
werks
FROM likp INTO TABLE it_likp
FOR ALL ENTRIES IN it_j_1iexcdtl
WHERE erdat EQ it_j_1iexcdtl-exdat AND
werks EQ it_j_1iexcdtl-werks.
ENDIF.
ENDFORM. "get_data
&----
*& Form print_data
&----
text
----
FORM print_data.
PERFORM top_heading.
CLEAR : l_menge, t_grosswt1, t_tarewt1, t_netwt1, t_grosswt,
tz_grosswt1,tz_ccase,tx_netwt.
DATA : YMATNR LIKE J_1IEXCDTL-MATNR.
SORT it_j_1iexcdtl BY matnr.
MOVE: it_j_1iexcdtl-exnum TO l_exnum.
LOOP AT it_j_1iexcdtl." WHERE exnum IN s_exnum.
READ TABLE it_j_1iexcdtl WITH KEY matnr = it_j_1iexcdtl-matnr.
if YMATNR ne it_j_1iexcdtl-matnr.
ON CHANGE OF it_j_1iexcdtl-matnr.
REFRESH char_val_tab.
DATA : ZBEZEI LIKE TVM3T-BEZEI,
YBEZEI like TVM4T-BEZEI,
ZINVNO type STRING,
ZINVNO1 TYPE STRING,
ZINVNO2 TYPE STRING,
TY_CCASE(4) TYPE P DECIMALS 0,
zbed like it_j_1iexcdtl-bedrate.
READ TABLE IT_GROSSWT WITH KEY MATNR = IT_J_1IEXCDTL-MATNR.
IF SY-SUBRC EQ 0.
TZ_GROSSWT1 = IT_GROSSWT-GROSSWT.
T_GROSSWT1 = T_GROSSWT1 + TZ_GROSSWT1.
TY_CCASE = IT_GROSSWT-CCASE.
tx_netwt = it_grosswt-netwt.
ENDIF.
READ TABLE it_mvke WITH KEY matnr = it_j_1iexcdtl-matnr.
SELECT SINGLE BEZEI into zBEZEI
from TVM3T
where MVGR3 EQ it_mvke-mvgr3.
SELECT SINGLE BEZEI into yBEZEI
from TVM4T
where MVGR4 EQ it_mvke-mvgr4.
zexbed = ( ZEXBAS * 8 ) / 100.
zecs = ( zexbed * 2 ) / 100.
zexaddtax1 = ( zexbed * 1 ) / 100.
LOOP AT IT_INV.
ZINVNO = IT_INV-EXNUM.
CONCATENATE ZINVNO ZINVNO1 INTO ZINVNO2 SEPARATED BY ' '.
CONCATENATE EXNUM ZINVNO SEPARATED BY SPACE.
AT END.
CONCATENATE IT_INV-EXDAT INTO ZINVNO SEPARATED BY SPACE.
ENDAT.
ENDLOOP.
WRITE: 1 it_mvke-mvgr1,
5 it_mvke-extwg+0(4) LEFT-JUSTIFIED,' ',it_mvke-mvgr5
left-justified,
15 yBEZEI,
20 zBEZEI,
29 it_mvke-matkl+0(8) LEFT-JUSTIFIED,
34 TY_CCASE RIGHT-JUSTIFIED,
44 TZ_GROSSWT1 RIGHT-JUSTIFIED,
59 it_j_1iexcdtl-menge RIGHT-JUSTIFIED,
82 it_j_1iexcdtl-exbas RIGHT-JUSTIFIED.
if sy-tabix eq 1.
write: 99 'BED 8%',
109 zexbed round 0 RIGHT-JUSTIFIED,
130 ZINVNO2 NO-ZERO,
140 it_likp-traid.
write:/99 'CESS 2%',
109 zecs round 0 RIGHT-JUSTIFIED,
130 it_inv-exdat.
write:/99 'SCess 1%',
106 '%',
109 zexaddtax1 RIGHT-JUSTIFIED.
endif.
SKIP.
l_menge = l_menge + it_j_1iexcdtl-menge.
l_exbas = l_exbas + it_j_1iexcdtl-exbas.
l_exbed = l_exbed + it_j_1iexcdtl-exbed.
l_ecs = l_ecs + it_j_1iexcdtl-ecs.
l_cases = l_cases + it_j_1iexcdtl-cases.
l_exaddtax1 = l_exaddtax1 + it_j_1iexcdtl-exaddtax1.
T_GROSSWT1 = T_GROSSWT1 + TZ_GROSSWT1.
TT_CCASE = TT_CCASE + TY_CCASE.
IF sy-tabix GT '10'.
NEW-PAGE.
PERFORM top_heading.
CONTINUE.
ENDIF.
YMATNR = it_j_1iexcdtl-matnr.
ENDON.
ENDIF.
ENDLOOP.
l_amount = zexbed + zecs + zexaddtax1.
tx_grosswt1 = t_grosswt1 / 2.
Write: 10 'Invoice Total : ',
34 TT_CCASE RIGHT-JUSTIFIED.
WRITE: 45 tx_grosswt1 LEFT-JUSTIFIED.
WRITE: 59 l_menge RIGHT-JUSTIFIED.
WRITE: 82 l_exbas RIGHT-JUSTIFIED.
WRITE: 109 l_amount RIGHT-JUSTIFIED,
130 'CT3 No. ',s_ct3,' Dt. ',s_date.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/.
WRITE:/120 ' Veraval.'.
WRITE:/.
WRITE:/.
WRITE:/120 s_exdat.
ENDFORM. "print_data
&----
*& Form TEST1
&----
text
----
--> p1 text
<-- p2 text
----
form TEST1 .
DATA : ZMATNR LIKE j_1iexcdtl-matnr,
YMATNR LIKE j_1iexcdtl-matnr,
ZWERKS LIKE j_1iexcdtl-werks,
ZCHARG LIKE j_1iexcdtl-charg,
ty_grosswt1 LIKE j_1iexcdtl-MENGE.
CLEAR : l_menge, t_grosswt1, t_tarewt1, t_netwt1, t_grosswt,tz_ccase,
tx_netwt, char_val_tab.
REFRESH char_val_tab.
SORT it_j_1iexcdtl BY matnr.
MOVE: it_j_1iexcdtl-exnum TO l_exnum.
WRITE:/5 'MATNR', 25 'WERKS', 35'CHARG', 45'GROSSWT', 65'TAREWT',
85'NETWT'.
LOOP AT it_delivery.
read table it_delivery with key matnr = it_delivery-matnr charg =
it_delivery-charg.
CALL FUNCTION 'QC01_BATCH_VALUES_READ'
EXPORTING
i_val_matnr = it_delivery-matnr
i_val_werks = it_delivery-werks
i_val_charge = it_delivery-charg
TABLES
t_val_tab = char_val_tab
EXCEPTIONS
no_class = 1
internal_error = 2
no_values = 3
no_chars = 4
OTHERS = 5.
READ TABLE char_val_tab WITH KEY atnam = 'Z_GROSSWEIGHT'.
IF sy-subrc EQ 0.
MOVE char_val_tab-atwrt TO l_grosswt.
ENDIF.
READ TABLE char_val_tab WITH KEY atnam = 'Z_TAREWEIGHT'.
IF sy-subrc EQ 0.
MOVE char_val_tab-atwrt TO l_tarewt.
ENDIF.
READ TABLE char_val_tab WITH KEY atnam = 'Z_NETWEIGHT'.
IF sy-subrc EQ 0.
MOVE char_val_tab-atwrt TO l_netwt.
ENDIF.
SPLIT l_grosswt AT ' ' INTO l_grosswt1 l_unit.
SPLIT l_tarewt AT ' ' INTO l_tarewt1 l_unit.
SPLIT l_netwt AT ' ' INTO l_netwt1 l_unit.
it_j_1iexcdtl-grosswt = l_grosswt1.
it_j_1iexcdtl-tarewt = l_tarewt1.
it_j_1iexcdtl-netwt = l_netwt1.
ty_grosswt1 = ty_grosswt1 + l_grosswt1.
Write:/ it_delivery-matnr UNDER 'MATNR',it_delivery-werks UNDER
'WERKS',it_delivery-charg UNDER 'CHARG', L_GROSSWT1 UNDER
'GROSSWT', L_TAREWT1 UNDER 'TAREWT', L_NETWT1
UNDER 'NETWT'.
at new matnr.
IT_GROSSWT-matnr = zmatnr.
IT_GROSSWT-grosswt = tz_grosswt1.
IT_GROSSWT-CCASE = tz_ccase.
IT_GROSSWT-NETWT = tx_netwt.
append it_grosswt.
clear : tz_grosswt1,tz_ccase,tx_netwt.
endat.
tz_grosswt1 = tz_grosswt1 + l_grosswt1.
tz_ccase = tz_ccase + 1.
at last.
IT_GROSSWT-matnr = zmatnr.
IT_GROSSWT-grosswt = tz_grosswt1.
IT_GROSSWT-CCASE = tz_ccase.
IT_GROSSWT-NETWT = tx_netwt.
append it_grosswt.
sum.
endat.
zmatnr = it_delivery-matnr.
endloop.
<b>Useful answers rewarded</b>
Thanks & Regards,
sunil kumar.
2007 Oct 17 5:10 PM
Hi sunil,
Clear internal tables after each append statement. your problem will get resolved.
<b> Reward for helpful answers</b>
Satish