Application Development and Automation 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: 
Read only

select statement problem

Former Member
0 Likes
890

Hi experts,

In this following code why iam not able to get the data?

P_KDGRP & P_KUNNR are parameters and P_KDGRP is mandatory.


    SELECT VBAK~VBELN VBAK~KUNNR VBAK~AUDAT VBAK~VKBUR VBAK~AUART
           VBKD~KDGRP
    FROM VBAK INNER JOIN VBKD
    ON VBAK~VBELN = VBKD~VBELN
    INTO CORRESPONDING FIELDS OF TABLE T_HDR
    WHERE  KDGRP EQ P_KDGRP AND
            KUNNR EQ P_KUNNR .

thanks

kaki

9 REPLIES 9
Read only

Former Member
0 Likes
866

Since P_KDGRP & P_KUNNR are parameters and if the values are not specified. Then the result would be empty.

Modify your query as:

SELECT VBAK~VBELN VBAK~KUNNR VBAK~AUDAT VBAK~VKBUR VBAK~AUART
           VBKD~KDGRP
    FROM VBAK INNER JOIN VBKD
    ON VBAK~VBELN = VBKD~VBELN
    INTO CORRESPONDING FIELDS OF TABLE T_HDR
    WHERE  KDGRP EQ P_KDGRP.
IF p_kunnr IS NOT INITIAL.
DELETE FROM TABLE T_HDR WHERE KUNNR NE P_KUNNR .
ENDIF.

Read only

Former Member
0 Likes
866

Hi kaki,

1. thats bcos

P_KUNNR must be blank .

regards,

amit m.

Read only

Former Member
0 Likes
866

hi Kaki,

if P_KUNNR is empty .. there would be no output..

try this..

data : cond type string value 'KDGRP EQ P_KDGRP '.
  if p_kunnr is not initial.
     concatenate 'AND KUNNR EQ P_KUNNR ' cond into cond.
  endif.
SELECT VBAK~VBELN VBAK~KUNNR VBAK~AUDAT VBAK~VKBUR VBAK~AUART
           VBKD~KDGRP
    FROM VBAK INNER JOIN VBKD
    ON VBAK~VBELN = VBKD~VBELN
    INTO CORRESPONDING FIELDS OF TABLE T_HDR
    WHERE (cond)  .

regards

satesh

Message was edited by: Satesh R

Read only

Former Member
0 Likes
866

Hi again,

1. U have two options.

a) either make that parameter compulsory.

OR

b) define the paramter as SELECT-OPTION

using the manner as mentioned below

and use IN in the sql.

2.

<b>This will give the look same as parameter

without ranges, etc.

AND THERE WILL BE NO PROBLEM IF

BLANK IS THERE IN THE FIELD.

</b>

REPORT abc.

TABLES : vbak.

SELECT-OPTIONS p_kunnr FOR vbak-kunnr <b>no intervals NO-EXTENSION.</b>

regards,

amit m.

Read only

Former Member
0 Likes
866

Hi Kaki

The parameter P_KUNNR might be empty.

thanks

priya

Read only

Former Member
0 Likes
866

Hi Kaki,

do this check..

if not P_KUNNR is inital.

    SELECT 
         VBAK~VBELN 
         VBAK~KUNNR 
         VBAK~AUDAT 
         VBAK~VKBUR
         VBAK~AUART  
          VBKD~KDGRP 
   FROM VBAK INNER JOIN VBKD 
   ON VBAK~VBELN = VBKD~VBELN 
   INTO CORRESPONDING FIELDS OF TABLE T_HDR  
  WHERE  KDGRP EQ P_KDGRP AND  
          KUNNR EQ P_KUNNR .

endif.

Regards

vijay

Read only

hymavathi_oruganti
Active Contributor
0 Likes
866

MAKE P_KUNNR AS SELECT-OPTION OR OBLIGATORY

P_KUNNR MIGHT BE BLANK

Read only

Former Member
0 Likes
866

Hi kaki

Since you are using Parameters both the fields should satisfy the condition. If one condition is not satisfied it will get the data.

You can use SELECT-OPTIONS with NO INTERVALS then

SELECT VBAKVBELN VBAKKUNNR VBAKAUDAT VBAKVKBUR VBAK~AUART

VBKD~KDGRP

FROM VBAK INNER JOIN VBKD

ON VBAKVBELN = VBKDVBELN

INTO CORRESPONDING FIELDS OF TABLE T_HDR

WHERE KDGRP in S_KDGRP AND

KUNNR in S_KUNNR .

regards

kishore

Read only

Former Member
0 Likes
866

Hi,

This is because P_KUNNR is not mandatory and if you dont specify, it wnt give any result.

The solution could be one of the following.

1) Make P_KUNNR mandatory.

2) Use select-option for KUNNR instead of parameter with

no-intervals.

3) If you want to use parameter, then fill a range

table for KUNNR and then use IN operator.

Hope this helps..

Regards,

Shashank