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

Logic correction

Former Member
0 Likes
855

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
790

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

6 REPLIES 6
Read only

Former Member
0 Likes
790

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.

Read only

Former Member
0 Likes
790

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.

Read only

dani_mn
Active Contributor
0 Likes
790

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,

Read only

Former Member
0 Likes
791

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

Read only

0 Likes
790

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.

Read only

Former Member
0 Likes
790

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.