Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

SELECT Query - Data Type and Length problem

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi

please declare ebeln with length 10 characters

otherwise use the dataelement ebeln to declare data type.

regards

Thirumaran k

14 REPLIES 14

sachin_mathapati
Contributor
0 Kudos

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

0 Kudos

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.

Former Member
0 Kudos

Hi

please declare ebeln with length 10 characters

otherwise use the dataelement ebeln to declare data type.

regards

Thirumaran k

Former Member
0 Kudos

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

0 Kudos

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.

Former Member
0 Kudos

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.

0 Kudos

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.

Former Member
0 Kudos

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

SuhaSaha
Advisor
Advisor
0 Kudos

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

Former Member
0 Kudos

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

0 Kudos

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.

0 Kudos

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.

Former Member
0 Kudos

Hi All,

thanks for your Answers.

Regards,

Viji

Former Member
0 Kudos

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.