‎2006 Nov 02 7:20 AM
Hello Everyone,
For the logic below...
If VBAK-BSARK contains ZG01 AND VBAK-SUBMI CONTAINS(O_L_O2DL or O_L_O2SH)
The value in field VBEP-ETTYP needs to change from CP tp Cn
Following code is writen...
REPORT YATPLOOP .
DATA: BEGIN OF IVBAK OCCURS 0,
BSARK LIKE VBAK-BSARK, " Purchase order type
SUBMI LIKE VBAK-SUBMI, " Collective number (SD)
END OF IVBAK.
*DATA: BEGIN OF IVBEP OCCURS 0,
ETTYP LIKE VBEP-ETTYP, " Shedule line category
END OF IVBEP.
DATA:IVBEP LIKE VBEP OCCURS 0 WITH HEADER LINE.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF IVBAK.
ENDSELECT.
LOOP AT IVBAK.
IF IVBAK-BSARK = 'ZG01' AND IVBAK-SUBMI = 'O_L_O2DL' OR IVBAK-SUBMI = 'O_L_O2SH' .
select ettyp from vbep into ivbep where vbeln = ivbep-vbeln.
endselect.
MOVE 'CN' TO IVBEP-ETTYP.
MODIFY IVBEP.
endif.
ENDLOOP.
UPDATE VBEP FROM TABLE IVBEP.
but the logic is not working..
can anybody help in finding the error and making it to work.
Points will be rewarded...
Thanks !
Sonal
‎2006 Nov 02 7:37 AM
Hi Sonal,
Check your modified code.
DATA: BEGIN OF IVBAK OCCURS 0,
VBELN LIKE VBAK-VBELN , " Purchase order Number
BSARK LIKE VBAK-BSARK, " Purchase order type
SUBMI LIKE VBAK-SUBMI, " Collective number (SD)
END OF IVBAK.
DATA:IVBEP LIKE VBEP OCCURS 0 WITH HEADER LINE.
*--Get VBAK data
SELECT VBELN BSARK SUBMI INTO TABLE IVBAK
FROM VBAK
WHERE BSARK = 'ZG01'
AND ( SUBMI = 'O_L_O2DL'
OR SUBMI = 'O_L_O2SH' ).
*Get vbep data
IF NOT IVBAK IS INITIAL.
SELECT VBELN ETTYP FROM VBEP INTO CORRESPONDING FIELDS OF TABLE IVBEP
FOR ALL ENTRIES IN IVBAK
WHERE VBELN = IVBAK-VBELN .
LOOP AT IVBEP .
READ TABLE IVBAK WITH KEY VBELN = IVBEP-VBELN .
IF SY-SUBRC = 0.
MOVE 'CN' TO IVBEP-ETTYP.
MODIFY IVBEP.
ENDIF.
ENDLOOP .
UPDATE VBEP FROM TABLE IVBEP.
ENDIF.
*
Regards,
Raghav
‎2006 Nov 02 7:23 AM
Ho sonal,
1. use BRACKETS () in condition for OR
2.
IF IVBAK-BSARK = 'ZG01' AND
( IVBAK-SUBMI = 'O_L_O2DL' OR IVBAK-SUBMI = 'O_L_O2SH' )
regards,
amit m.
‎2006 Nov 02 7:23 AM
first:
IF IVBAK-BSARK = 'ZG01' AND
( IVBAK-SUBMI = 'O_L_O2DL' OR IVBAK-SUBMI = 'O_L_O2SH' ).
second:
it's BETTER write:
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IVBAK.
THEN
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF IVBAK.
ENDSELECT.
‎2006 Nov 02 7:24 AM
HI,
change your query like following.
<b>SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IVBAK.</b>
OR do like this your are not appending into internal table.
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF IVBAK.
APPEND IVBAK.
ENDSELECT.
REgards,
‎2006 Nov 02 7:37 AM
Hi Sonal,
Check your modified code.
DATA: BEGIN OF IVBAK OCCURS 0,
VBELN LIKE VBAK-VBELN , " Purchase order Number
BSARK LIKE VBAK-BSARK, " Purchase order type
SUBMI LIKE VBAK-SUBMI, " Collective number (SD)
END OF IVBAK.
DATA:IVBEP LIKE VBEP OCCURS 0 WITH HEADER LINE.
*--Get VBAK data
SELECT VBELN BSARK SUBMI INTO TABLE IVBAK
FROM VBAK
WHERE BSARK = 'ZG01'
AND ( SUBMI = 'O_L_O2DL'
OR SUBMI = 'O_L_O2SH' ).
*Get vbep data
IF NOT IVBAK IS INITIAL.
SELECT VBELN ETTYP FROM VBEP INTO CORRESPONDING FIELDS OF TABLE IVBEP
FOR ALL ENTRIES IN IVBAK
WHERE VBELN = IVBAK-VBELN .
LOOP AT IVBEP .
READ TABLE IVBAK WITH KEY VBELN = IVBEP-VBELN .
IF SY-SUBRC = 0.
MOVE 'CN' TO IVBEP-ETTYP.
MODIFY IVBEP.
ENDIF.
ENDLOOP .
UPDATE VBEP FROM TABLE IVBEP.
ENDIF.
*
Regards,
Raghav
‎2006 Nov 02 8:36 AM
Hi Raghav,
Thank you so much for the corrections.
but the corresponding fields should get updated in the table VBEP and i have check that .
The values in the table VBEP are not changed.
Please check this logic in your server.
It will be very helpful.
Thanks.
(and yes i have rewarded the points).
Sonal.
‎2006 Nov 02 7:44 AM
Hi,
Use brackets in ur if statement...
IF IVBAK-BSARK = 'ZG01' AND ( IVBAK-SUBMI = 'O_L_O2DL' OR IVBAK-SUBMI = 'O_L_O2SH' ).
& also the way u r updating IVBEP seems to have wrong logic.
Try this..
.
.
.
DATA:IVBEP LIKE VBEP OCCURS 0 WITH HEADER LINE.
DATA:VBEP LIKE VBEP OCCURS 0 WITH HEADER LINE.
.
.
.
.
LOOP AT IVBAK.
IF IVBAK-BSARK = 'ZG01' AND ( IVBAK-SUBMI = 'O_L_O2DL' OR IVBAK-SUBMI = 'O_L_O2SH' ).
select * from vbep into ivbep where vbeln = ivbep-vbeln.
MOVE 'CN' TO IVBEP-ETTYP.
MODIFY IVBEP.
endselect.
endif.
ENDLOOP.
UPDATE VBEP FROM TABLE IVBEP.