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

Problem in Logic..

Former Member
0 Likes
528

Hi Experts,

Can i use the below logic. Will be there any performance issue when i use this logic. Or else is there any other way to write this logic. Please confirm its urgent...

loop at it_ane assigning <fs_ane> .

CONCATENATE <fs_ane>-bukrs <fs_ane>-anln1 <fs_ane>-anln2 INTO v_objectid.

SELECT changenr

udate

FROM cdhdr

INTO TABLE x_cdhdr

WHERE objectid = v_objectid

AND udate IN s_budat.

IF x_cdhdr IS NOT INITIAL.

SELECT changenr

fname

value_new

FROM cdpos

INTO TABLE x_cdpos

FOR ALL ENTRIES IN x_cdhdr

WHERE changenr = x_cdhdr-changenr

AND fname = 'TXJCD'

AND tabname = 'ANLZ'.

ENDIF.

endloop.

Thanks & Regards,

Ramana

1 ACCEPTED SOLUTION
Read only

RaymondGiuseppi
Active Contributor
0 Likes
502

Access the CDHDR too using a FOR ALL ENTRIES clause, build an internal table for this. (x_objectid)

Add the keys OBJECTCLAS and OBJECTID from CDHDR when accessing CDPOS cluster table CDCLS. (Add theses fields to x_cdhdr)

may look like

LOOP AT it_ane ASSIGNING <fs_ane> .
  CONCATENATE <fs_ane>-bukrs <fs_ane>-anln1 <fs_ane>-anln2
    INTO v_objectid-id..
  APPEND v_objectid TO x_objectid.
ENDLOOP.

CHECK NOT x_objectid IS INITIAL.

SELECT objectclas objectid changenr udate
  FROM cdhdr INTO TABLE x_cdhdr
  FOR ALL ENTRIES IN x_objectid
  WHERE objectid = x_objectid-id
    AND udate IN s_budat.

CHECK NOT x_cdhdr IS INITIAL.

SELECT changenr fname value_new
  FROM cdpos
  INTO TABLE x_cdpos
  FOR ALL ENTRIES IN x_cdhdr
  WHERE objectclase = x_cdhdr-objectclas
    AND objectid = x_cdhdr-objectid
    AND changenr = x_cdhdr-changenr
    AND fname = 'TXJCD'
    AND tabname = 'ANLZ'.

Also, check with OBJECTCLASS = 'ANLA' to access CDHDR (call transaction SCDO)

Regards

3 REPLIES 3
Read only

RaymondGiuseppi
Active Contributor
0 Likes
503

Access the CDHDR too using a FOR ALL ENTRIES clause, build an internal table for this. (x_objectid)

Add the keys OBJECTCLAS and OBJECTID from CDHDR when accessing CDPOS cluster table CDCLS. (Add theses fields to x_cdhdr)

may look like

LOOP AT it_ane ASSIGNING <fs_ane> .
  CONCATENATE <fs_ane>-bukrs <fs_ane>-anln1 <fs_ane>-anln2
    INTO v_objectid-id..
  APPEND v_objectid TO x_objectid.
ENDLOOP.

CHECK NOT x_objectid IS INITIAL.

SELECT objectclas objectid changenr udate
  FROM cdhdr INTO TABLE x_cdhdr
  FOR ALL ENTRIES IN x_objectid
  WHERE objectid = x_objectid-id
    AND udate IN s_budat.

CHECK NOT x_cdhdr IS INITIAL.

SELECT changenr fname value_new
  FROM cdpos
  INTO TABLE x_cdpos
  FOR ALL ENTRIES IN x_cdhdr
  WHERE objectclase = x_cdhdr-objectclas
    AND objectid = x_cdhdr-objectid
    AND changenr = x_cdhdr-changenr
    AND fname = 'TXJCD'
    AND tabname = 'ANLZ'.

Also, check with OBJECTCLASS = 'ANLA' to access CDHDR (call transaction SCDO)

Regards

Read only

0 Likes
502

CHECK NOT x_objectid[] IS INITIAL.

CHECK NOT x_cdhdr[] IS INITIAL.

Read only

Former Member
0 Likes
502

Hi.

Instead of writing the selects inside the loop. Create ab internal table which holds v_object id. and use that internal table using for all entries to fetch entries from CDHDR and Subsequently CDPOS.