‎2009 Apr 20 11:35 AM
Hi experts..
I am using read report statement..
example : read report itab-repid into rtab. suppose report name is mv45afzz.
this include program consist of two FORM defination..
I want to check that the form contains active code or not.. for that I am using following code..
LOOP AT ITAB.
READ REPORT ITAB-REPID INTO RTAB.
LOOP AT RTAB.
IF RTAB-TEXT(1) = '*'.
TEXT_TYPE-TEXT = 'NO ACTIVE CODING'.
MODIFY ITAB FROM TEXT_TYPE TRANSPORTING TEXT
WHERE MODULENAME = ITAB-MODULENAME.
ELSEIF RTAB-TEXT CS 'FORM USEREXIT'
OR RTAB-TEXT CS 'form userexit'.
ELSEIF RTAB-TEXT CS 'ENDFORM'
OR RTAB-TEXT CS 'endform'.
ELSEIF RTAB-TEXT = SPACE.
ELSE.
TEXT_TYPE-TEXT = 'ACTIVE CODING'.
MODIFY ITAB FROM TEXT_TYPE TRANSPORTING TEXT
WHERE MODULENAME = ITAB-MODULENAME.
ENDIF.
ENDLOOP.and i want display text into ouput,..
MV45AFZZ FORM USEREXIT_ ACTIVE CODING.
IN ABOVE FORMAT..
BUT I AM FACING PROBLEM IN READING THE FORMS. .. IF PROGRAMS HAVING MORE THAN ONE FORMS.... PLEASE HELP ME...
‎2009 Apr 20 11:42 AM
Hi,
You may try using SCAN functionality to analyze the read report. Go through the SAP help provided for SCAN functionality and you will understand it better.
Regards
Sitharamaraju
‎2009 Apr 20 12:01 PM
Hi,
Use the code given below...
data :
fs type string,
t_itab like table of fs.
data : fl_flag type c.
LOOP AT ITAB.
READ REPORT ITAB-REPID INTO RTAB.
LOOP AT RTAB.
IF RTAB-TEXT CS 'FORM USEREXIT'
OR RTAB-TEXT CS 'form userexit'.
CONCATENATE ITAB-REPID RTAB-TEXT TO FS.
fl_flag = 'F'.
ELSEIF RTAB-TEXT CS 'ENDFORM'
OR RTAB-TEXT CS 'endform'.
IF FL_FLAG NE 'N'.
CONCATENATE FS 'ACTIVE CODING' TO FS.
ENDIF.
fl_flag = 'S'.
ENDIF.
IF FL_FLAG = 'F'.
IF RTAB-TEXT(1) = '*'.
CONCATENATE FS 'NO ACTIVE CODING' TO FS.
FL_FLAG = 'N'.
ENDIF.
ELSEIF FL_FLAG = 'S'.
APPEND FS TO T_ITAB.
ENDIF.
ENDLOOP.
ENDLOOP.
LOOP AT T_ITAB INTO FS.
WRITE FS.
ENDLOOP.
‎2009 Apr 22 5:18 AM
Solved by myself..
LOOP AT itab.
text_type-repid = itab-repid.
READ REPORT itab-repid INTO rtab.
LOOP AT rtab INTO wa_rtab.
TRANSLATE wa_rtab-text TO UPPER CASE.
IF wa_rtab-text CS 'FORM' AND wa_rtab-text CS 'USEREXIT'
AND wa_rtab-text(1) NE '*' AND NOT wa_rtab-text CS 'PERFORM'
AND NOT wa_rtab-text CS '"USEREXIT'
AND NOT wa_rtab-text CS '" USEREXIT'.
MOVE : wa_rtab-text TO text_type-modulename,
itab-repid TO text_type-repid,
sy-tabix TO text_type-zzline.
APPEND text_type.
f_check = 'X'.
ENDIF.
IF wa_rtab-text CS 'ENDFORM' AND f_check EQ 'X'
AND wa_rtab-text(1) NE '*'.
IF f_active EQ space.
text_type-text = 'NO ACTIVE CODING'.
MODIFY text_type TRANSPORTING text
WHERE repid = itab-repid
AND modulename = text_type-modulename.
ELSE.
f_active = space.
ENDIF.
f_check = space.
ENDIF.
IF f_check = 'X'.
IF ( wa_rtab-text(1) = '*' OR wa_rtab-text = space ) OR
( wa_rtab-text CS 'FORM' AND wa_rtab-text CS 'USEREXIT' ) OR
f_active = 'X'.
ELSE.
f_active = 'X'.
text_type-text = 'ACTIVE CODING'.
MODIFY text_type TRANSPORTING text
WHERE repid = itab-repid
AND modulename = text_type-modulename.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.