‎2009 Jul 15 3:58 AM
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.
‎2009 Jul 15 4:06 AM
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
‎2009 Jul 15 4:06 AM
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
‎2009 Jul 15 4:16 AM
hi,
select option is like RANGE so you need to write 'IN' while comparing in where clause ..
thanks
‎2009 Jul 15 4:25 AM
>
>
> 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
‎2009 Jul 15 4:38 AM
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'
‎2009 Jul 15 4:46 AM
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.
‎2009 Jul 15 4:49 AM
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
‎2009 Jul 15 4:48 AM
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.
‎2009 Jul 15 5:03 AM
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.
‎2009 Jul 16 1:29 AM
okkkkk i've solve it already...thanks everyone for the help 😃