08-06-2008 10:07 AM
Hi All,
Please go thro' the below code.
TYPES: BEGIN OF t_ebeln,
ebeln(16),
ebelp TYPE ebelp,
matnr TYPE ekpo-matnr,
xblnr TYPE xblnr,
flag(1),
END OF t_ebeln,
BEGIN OF t_mseg,
ebeln TYPE MSEG-EBELN,
ebelp TYPE ebelp,
mblnr TYPE mblnr,
bwart TYPE bwart,
matnr TYPE matnr,
werks TYPE werks_d,
lgort TYPE lgort_d,
sobkz TYPE sobkz,
lifnr TYPE lifnr,
menge TYPE menge_d,
meins TYPE meins,
sgtxt TYPE sgtxt,
budat TYPE budat,
rec_lgort TYPE lgort_d,
flag(1) TYPE c,
END OF t_mseg.
-
-
-
In the I_EBELN internal Table I will have my PO's.
IF NOT i_ebeln[] IS INITIAL.
SELECT mblnr
budat
xblnr
FROM mkpf
INTO TABLE i_mkpf
FOR ALL ENTRIES IN i_ebeln
WHERE xblnr = i_ebeln-ebeln.
IF sy-subrc EQ 0.
SORT i_mkpf BY mblnr budat DESCENDING.
ENDIF.
To get Quantity based on the Movement Types.
IF NOT i_mkpf[] IS INITIAL.
SELECT ebeln
ebelp
mblnr
bwart
matnr
werks
lgort
sobkz
lifnr
menge
meins
sgtxt
FROM mseg
INTO TABLE i_mseg
FOR ALL ENTRIES IN i_mkpf
WHERE mblnr = i_mkpf-mblnr AND
lifnr IN s_lifnr AND
( bwart = c_501 AND
sobkz = c_k ).
IF sy-subrc EQ 0.
SORT i_mseg BY ebeln ebelp mblnr.
ENDIF.
ENDIF.
*Get the PO's with 101 Quantity
SELECT ebeln
ebelp
mblnr
bwart
matnr
werks
lgort
sobkz
lifnr
menge
meins
sgtxt
FROM mseg
APPENDING TABLE i_mseg
FOR ALL ENTRIES IN i_ebeln
*WHERE ebeln = iebeln-ebeln AND*_
lifnr IN s_lifnr AND
bwart = c_101.
For the above SELECT statement I am getting error as 'EBELN' and 'I_EBELN-EBELN' should have same type and Length.
How to Over Come this.
\[removed by moderator\]
Regards,
Viji
Edited by: VijayaLakshmi Krishnaswamy on Aug 6, 2008 11:07 AM
Edited by: Jan Stallkamp on Aug 6, 2008 2:39 PM
08-06-2008 10:15 AM
Hi
please declare ebeln with length 10 characters
otherwise use the dataelement ebeln to declare data type.
regards
Thirumaran k
08-06-2008 10:14 AM
HI ,
change this..
TYPES: BEGIN OF t_ebeln,
ebeln type mseg-ebeln,
ebelp TYPE ebelp,
matnr TYPE ekpo-matnr,
xblnr TYPE xblnr,
flag(1),
END OF t_ebeln.
Regards,
Sachin M M
08-06-2008 10:17 AM
Hi,
I cant change that. B'coz I have to Fetch Record from MKPF based on the XBLNR = EBELN.
SELECT mblnr
budat
xblnr
FROM mkpf
INTO TABLE i_mkpf
FOR ALL ENTRIES IN i_ebeln
WHERE xblnr = i_ebeln-ebeln.
Regards,
Viji.
08-06-2008 10:15 AM
Hi
please declare ebeln with length 10 characters
otherwise use the dataelement ebeln to declare data type.
regards
Thirumaran k
08-06-2008 10:19 AM
Hi VijayaLakshmi,
Can you please give declaration of I_EBELN table.
It seems there is mismatch between EBELN declared in I_EBELN and MSEG-EBELN.
Regards,
Mohaiyuddin
08-06-2008 10:23 AM
Hi,
Please check the below.
TYPES: BEGIN OF t_ebeln,
ebeln(16),
ebelp TYPE ebelp,
matnr TYPE ekpo-matnr,
xblnr TYPE xblnr,
flag(1),
END OF t_ebeln,
I have declared EBELN as 16 Characters. B'cox to get record from MKPF based on XBLNR = EBELN.
Regards,
Viji.
08-06-2008 10:21 AM
Hi,
No need to change the length of ebeln bocz
xblnr if of length 16 and ebeln 10 which is less than 16.
so the system will automatically take care of it.
so change ebeln type mseg-ebeln.
08-06-2008 10:25 AM
Hi Arun,
When giving FOR ALL ENTRIES system will check for the DATA TYPE and LENGTH. It will not allow 16 Character with 10 Character.
Kindly check my code.
Regards,
Viji.
08-06-2008 10:24 AM
hii
create another types as
TYPES: BEGIN OF t_ebeln,
ebeln(10),
ebelp TYPE ebelp,
matnr TYPE ekpo-matnr,
xblnr TYPE xblnr,
flag(1),
END OF t_ebeln,
copy the value from I_EBELN to a_ebeln.
a_ebeln [] = i_ebeln[].
for first select query use i_ebeln
and for second select query use a_ebeln.
hope , this will solve u r problem
Reagrds ,
Sabarinathan.L
08-06-2008 10:25 AM
Hello,
You need to modify the TYPES declaratio a bit:
TYPES: BEGIN OF t_ebeln,
ebeln(16),
ebeln TYPE MSEG-EBELN,
ebelp TYPE ebelp,
matnr TYPE ekpo-matnr,
xblnr TYPE xblnr,
flag(1),
END OF t_ebeln,
Hope this is helpful.
BR,
Suhas
08-06-2008 10:27 AM
Correct as below
TYPES: BEGIN OF t_ebeln,
ebeln TYPE ekko-ebeln,
ebelp TYPE ebelp,
matnr TYPE ekpo-matnr,
xblnr TYPE xblnr,
flag(1),
END OF t_ebeln,
rgds
rajesh
08-06-2008 11:40 AM
Hi,
The TYPES of EBELN(16) should be of 16 Character. So that I can able to Extract data from MKPF table based on XBLNT = EBELN.
In this XBLNR is 16 Character Length.
So I cant change EBELN(16).
Regards,
Viji.
08-06-2008 11:46 AM
hi can you do one thing..
first select statement...
after this send this to a variable..
loop at itab .
variable = itab-field.
use conversion_exit function module..
then use the second select single here ...
where field = variable.
endloop.
08-27-2008 6:50 AM
11-25-2008 9:15 AM
Hi vijaya,
I have a similar problem in using FOR ALL ENTRIES as its giving a type and length mismatch error.
Were you able to solve your problem regarding the same?If so can you suggest me a solution.
My table is declared like this.
DATA:tb_vlcactdata_cs TYPE vlcactdata OCCURS 0 WITH HEADER LINE.
I am fecthing values into this table tb_vlcactdata_cs using an FM.
After that i m writing this select query for further processing.
SELECT * FROM nast
INTO TABLE tb_nast
FOR ALL ENTRIES IN tb_vlcactdata_cs
WHERE kschl = tb_vlcactdata_cs-kscha AND
objky = tb_vlcactdata_cs-vbeln.
This select query throws an error as tb_vlcactdata_cs-vbeln is of length 10 and nast-objky is of length 30.
So what is the possible solution to my query.
Thanks in advance.
Rithwika.