‎2008 Nov 23 10:26 AM
hi all
i have to update data base fiels
my requirment is
from BKPF i have to select bellow fields
BUKRS
BELNR
GJAHR
BLART
MONAT
where AWTYP = 'harpay'
from BSEG i have to select
LIFNR
where inputs are BKPF-BUKRS
BKPF-BELNR
BKPF-GJAHR
now i have some lifnr values
if above Vender no (lifnr) in LFBW
i have to update BSEG-QSSKZ = 'xx'
for this i have write bellow code pls check once , if any modify is there pls tell me
code;
REPORT Zrep.
TABLES: BKPF,BSEG,LFBW.
TYPES:BEGIN OF TY_BKPF,
BUKRS TYPE BUKRS,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
BLART TYPE BLART,
MONAT TYPE MONAT,
END OF TY_BKPF.
DATA:IT_BKPF TYPE STANDARD TABLE OF TY_BKPF.
TYPES: BEGIN OF TY_BSEG,
BUKRS TYPE BUKRS,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
BUZEI TYPE BUZEI,
QSSKZ TYPE QSSKZ,
LIFNR TYPE LIFNR,
END OF TY_BSEG.
DATA:IT_BSEG TYPE STANDARD TABLE OF TY_BSEG.
data : wa_tempbseg TYPE bseg.
TYPES: BEGIN OF TY_LFBW,
LIFNR TYPE LFBW,
END OF TY_LFBW.
DATA:IT_LFBW TYPE STANDARD TABLE OF TY_LFBW.
DATA: WA_BKPF TYPE TY_BKPF.
DATA: WA_BSEG TYPE TY_BSEG.
DATA: WA_LFBW TYPE TY_LFBW.
----
SELECTION SCREEN *
----
SELECT-OPTIONS : S_BUKRS FOR BKPF-BUKRS OBLIGATORY,
S_BELNR FOR BKPF-BELNR,
S_GJAHR FOR BKPF-GJAHR OBLIGATORY,
S_BLART FOR BKPF-BLART,
S_MONAT FOR BKPF-MONAT. "OBLIGATORY.
*Get data
SELECT BUKRS
BELNR
GJAHR
BLART
MONAT
FROM BKPF INTO TABLE IT_BKPF
WHERE AWTYP = 'HRPAY'
AND BUKRS IN S_BUKRS
AND BELNR IN S_BELNR
AND GJAHR IN S_GJAHR
AND BLART IN S_BLART
AND MONAT IN S_MONAT.
SELECT BUKRS
BELNR
GJAHR
BUZEI
LIFNR
FROM BSEG INTO TABLE IT_BSEG
FOR ALL ENTRIES IN IT_BKPF
WHERE BUKRS = IT_BKPF-BUKRS
AND BELNR = IT_BKPF-BELNR
AND GJAHR = IT_BKPF-GJAHR.
AND KOART = 'K'.
SELECT LIFNR
FROM LFBW INTO TABLE IT_LFBW.
To check lifnr in LFBK or not
LOOP AT IT_BSEG INTO WA_BSEG.
READ TABLE IT_LFBW INTO WA_LFBW WITH KEY LIFNR = WA_tempBSEG-LIFNR.
IF SY-SUBRC = 0.
UPDATING BSEG-QSSKZ
modify bseg from wa_tempbseg.
if sy-subrc = 0.
COMMIT work.
else.
ROLLBACK work.
endif.
CLEAR WA_BSEG.
ENDIF.
ENDLOOP.
regards
Saimedha
‎2008 Nov 23 10:36 AM
ur code seems fine.
but at the end u cud use.
UPDATE <dbtable> FROM <wa>
then u dont need to explicitely specify commit and roll back statements
‎2008 Nov 23 11:32 AM
Hi Prashanti,
Thanks for ur reply.
I have used Modify <dtable>form <wa>
But u mentioned update <dtable>form <wa>
which one i will use kindly specify with reason
Saimedha
‎2008 Nov 23 11:57 AM
Choose modify insted of UPDATE !!
Because Update canonly update the existing recording ...It cant create new record ..
Where as modify can update the record as well as create a new record.
Regards
Sas
‎2008 Dec 25 6:00 AM