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

Parameters and Select-options

Former Member
0 Likes
1,456

Hi i realize that when i use parameters, i was able to update to my database but when i use select-options, i wasn't...

anyone has any idea why and how can i change my codes to suit the select-options(because i need to select a range to update)?Thanks

DATA:it_bseg TYPE bseg OCCURS 0 WITH HEADER LINE, 
     it_ekpo TYPE ekpo OCCURS 0 WITH HEADER LINE, 
     it_combo TYPE TABLE OF t_combo WITH HEADER LINE. 


PARAMETERS:p_belnr LIKE bseg-belnr OBLIGATORY, 
           p_bukrs LIKE bseg-bukrs OBLIGATORY, 
           p_gjahr LIKE bseg-gjahr OBLIGATORY, 
           p_ebeln LIKE ekpo-ebeln, 
           p_ebelp LIKE ekpo-ebelp, 
           p_budat LIKE bkpf-budat. 

*SELECT-OPTIONS: p_belnr FOR bseg-belnr OBLIGATORY, 
*                p_bukrs FOR bseg-bukrs OBLIGATORY, 
*                p_gjahr FOR bseg-gjahr OBLIGATORY, 
*                p_ebeln FOR ekpo-ebeln, 
*                p_ebelp FOR ekpo-ebelp. 
**                p_budat FOR bkpf-budat. 
***           p_hkont FOR bseg-hkont. 

START-OF-SELECTION. 

  SELECT * FROM ekpo INTO TABLE it_ekpo 
  WHERE ebeln = p_ebeln AND ebelp = p_ebelp. 

  SELECT * FROM bseg INTO TABLE it_bseg 
  WHERE belnr = p_belnr AND bukrs = p_bukrs AND gjahr = p_gjahr. 
*AND hkont = p_hkont. 

  IF it_bseg[] IS NOT INITIAL. 
  SELECT SINGLE TXZ01 INTO EKPO-TXZ01 
FROM EKPO WHERE 
EBELN = BSEG-EBELN AND 
EBELP = BSEG-EBELP. 

IF SY-SUBRC EQ 0. 
BSEG-SGTXT = EKPO-TXZ01. 
ENDIF. 
LOOP AT IT_EKPO. 
  MOVE it_ekpo-txz01 TO it_bseg-sgtxt. 
  MODIFY it_bseg FROM it_bseg TRANSPORTING sgtxt 


  WHERE belnr = p_belnr AND bukrs = p_bukrs AND gjahr = p_gjahr. 

    WRITE:/ it_bseg-belnr, it_bseg-gjahr, it_bseg-sgtxt, it_ekpo-ebeln. 
  ENDLOOP. 


  MODIFY bseg FROM TABLE it_bseg. 
  COMMIT WORK. 

ENDIF. 
  IF sy-subrc EQ 0. 
    WRITE:/3 'BSEG TABLE UPDATED SUCCESSFULLY WITH TEXT'. 
  ENDIF.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,082

hi

while using select-options use IN in select query instead of = sign.

SELECT * FROM ekpo INTO TABLE it_ekpo

WHERE ebeln = p_ebeln AND ebelp = p_ebelp.

replace like this

SELECT * FROM ekpo INTO TABLE it_ekpo

WHERE ebeln in p_ebeln AND ebelp in p_ebelp.

Edited by: anand kumar on Jul 15, 2009 5:07 AM

9 REPLIES 9
Read only

Former Member
0 Likes
1,083

hi

while using select-options use IN in select query instead of = sign.

SELECT * FROM ekpo INTO TABLE it_ekpo

WHERE ebeln = p_ebeln AND ebelp = p_ebelp.

replace like this

SELECT * FROM ekpo INTO TABLE it_ekpo

WHERE ebeln in p_ebeln AND ebelp in p_ebelp.

Edited by: anand kumar on Jul 15, 2009 5:07 AM

Read only

Former Member
0 Likes
1,082

hi,

select option is like RANGE so you need to write 'IN' while comparing in where clause ..

thanks

Read only

Former Member
0 Likes
1,082

>

>

> MODIFY bseg FROM TABLE it_bseg.

> COMMIT WORK.

>

> ENDIF.

> IF sy-subrc EQ 0.

> WRITE:/3 'BSEG TABLE UPDATED SUCCESSFULLY WITH TEXT'.

> ENDIF.

Hi weelilin,

I agree with Anand and Rimpa about Select - options and Parameters, Please do note that SAP will not encourage or be responsible if You directly MODIFY the BSEG table.

Regards,

Suneel G

Read only

Former Member
0 Likes
1,082

thanks a lot!!!! any idea how can i do a search criteria within my codes... something like

SELECT * FROM ekpo INTO TABLE it_ekpo
  WHERE ebeln = '1930000000 to 1930000002' AND ebelp = '00010'

Read only

0 Likes
1,082

Hi,

If you are hard coding the value then you can use between in the where condition. Else you can use the same select-option to give values like you wish,.

Regards,

Dhasarathy.

Read only

0 Likes
1,082

hi ,

You can use RANGE or select-option or between

RANGES: r_value FOR mara-matnr.

r_value-sign = 'I'.

r_value-option = 'EQ'.

r_value-low = '1930000000'.

APPEND r_value.

CLEAR r_value.

r_value-sign = 'I'.

r_value-option = 'EQ'.

r_value-low = '1930000001'. .

APPEND r_value.

CLEAR r_value.

r_value-sign = 'I'.

r_value-option = 'EQ'.

r_value-low = '1930000002'. .

APPEND r_value.

CLEAR r_value.

then in where clause use matnr in r_value

or use select-options in where clause like matnr in s_matnr

tahnks

Read only

Former Member
0 Likes
1,082

DATA:it_bseg TYPE bseg OCCURS 0 WITH HEADER LINE,

it_ekpo TYPE ekpo OCCURS 0 WITH HEADER LINE,

it_combo TYPE TABLE OF t_combo WITH HEADER LINE.

SELECT-OPTIONS: so_belnr FOR bseg-belnr OBLIGATORY,

so_bukrs FOR bseg-bukrs OBLIGATORY,

so_gjahr FOR bseg-gjahr OBLIGATORY,

so_ebeln FOR ekpo-ebeln,

so_ebelp FOR ekpo-ebelp.

so_budat FOR bkpf-budat.

so_hkont FOR bseg-hkont.

START-OF-SELECTION.

SELECT * FROM ekpo INTO TABLE it_ekpo WHERE

ebeln IN so_ebeln AND

ebelp IN so_ebelp.

SELECT * FROM bseg INTO TABLE it_bseg WHERE

belnr IN so_belnr AND

bukrs IN so_bukrs AND

gjahr IN so_gjahr.

*AND hkont IN so_hkont.

IF it_bseg[] IS NOT INITIAL.

SELECT SINGLE TXZ01 INTO EKPO-TXZ01

FROM EKPO WHERE

EBELN = BSEG-EBELN AND

EBELP = BSEG-EBELP.

IF SY-SUBRC EQ 0.

BSEG-SGTXT = EKPO-TXZ01.

ENDIF.

LOOP AT IT_EKPO.

MOVE it_ekpo-txz01 TO it_bseg-sgtxt.

MODIFY it_bseg FROM it_bseg TRANSPORTING sgtxt

WHERE belnr IN so_belnr AND bukrs IN so_bukrs AND gjahr IN so_gjahr.

WRITE:/ it_bseg-belnr, it_bseg-gjahr, it_bseg-sgtxt, it_ekpo-ebeln.

ENDLOOP.

MODIFY bseg FROM TABLE it_bseg.

COMMIT WORK.

ENDIF.

IF sy-subrc EQ 0.

WRITE:/3 'BSEG TABLE UPDATED SUCCESSFULLY WITH TEXT'.

ENDIF.

Read only

Former Member
0 Likes
1,082

Hi do u mean smthing like this? thanks

TABLES:bseg, ekpo, bkpf.

TYPES: BEGIN OF t_ekpo,
       txz01 LIKE ekpo-txz01,
       END OF t_ekpo,

       BEGIN OF t_combo,
       ebeln LIKE ekpo-ebeln,
       txz01 LIKE ekpo-txz01,
       END OF t_combo.


DATA:it_bseg TYPE bseg OCCURS 0 WITH HEADER LINE,
     it_ekpo TYPE ekpo OCCURS 0 WITH HEADER LINE,
     it_combo TYPE TABLE OF t_combo WITH HEADER LINE.


SELECT-OPTIONS: p_belnr FOR bseg-belnr OBLIGATORY,
                p_bukrs FOR bseg-bukrs OBLIGATORY,
                p_gjahr FOR bseg-gjahr OBLIGATORY,
                p_ebeln FOR ekpo-ebeln,
                p_ebelp FOR ekpo-ebelp.
                p_budat FOR bkpf-budat.

RANGES: r_value FOR mara-matnr.
r_value-sign = 'I'.
r_value-option = 'EQ'.
r_value-low = '1930000000'. 
APPEND r_value.
CLEAR r_value.

r_value-sign = 'I'.
r_value-option = 'EQ'.
r_value-low = '1930000001'. . 
APPEND r_value.
CLEAR r_value.

r_value-sign = 'I'.
r_value-option = 'EQ'.
r_value-low = '1930000002'. . 
APPEND r_value.
CLEAR r_value.

Read only

Former Member
0 Likes
1,082

okkkkk i've solve it already...thanks everyone for the help 😃