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

Read report statement

Former Member
0 Likes
942

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...

3 REPLIES 3
Read only

Former Member
0 Likes
702

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

Read only

Former Member
0 Likes
702

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.

Read only

0 Likes
702

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.