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

Interactive report: third screen not displaying

Former Member
0 Likes
804

Hi Experts,

I am doing a interactive report in ALV grid...and my requirement is

when the user clicks on SPMON which is displayed on the initial screen the first screen

should display and in first screen when the user clicks LIFNR second screen should display..

I am able to display initial and first screen but second screen is not displaying...I am

pasting a pinch of my code please have a look and advice me..

FORM USER_COMM USING P_UCOMM LIKE SY-UCOMM
                           R_SELFIELD TYPE SLIS_SELFIELD.

  DATA : OK_CODE TYPE SY-UCOMM.
  OK_CODE = P_UCOMM.
  CASE OK_CODE.

    WHEN '&IC1'.
      IF R_SELFIELD-FIELDNAME = 'SPMON'.
        READ TABLE IT_TAB INDEX R_SELFIELD-TABINDEX.

        REFRESH IT_TAB_1[].
        CLEAR IT_TAB_1.

        LOOP AT IT_FIRST WHERE WERK EQ IT_TAB-WERK AND SPMON EQ IT_TAB-SPMON
                           AND ART = IT_TAB-ART.

          MOVE IT_FIRST-WERK       TO  IT_TAB_1-WERK.
          MOVE IT_FIRST-LIFNR      TO  IT_TAB_1-LIFNR.
          MOVE IT_FIRST-MEANQ      TO  IT_TAB_1-MEANQ.
          MOVE IT_FIRST-BASME_QM   TO  IT_TAB_1-BASME_QM.
           APPEND IT_TAB_1.
          CLEAR: IT_FIRST, IT_TAB_1.
        ENDLOOP.


        REFRESH IT_FIELDCAT1[].

        S_LAYOUT-ZEBRA = 'X' .
        S_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .

        PERFORM FIELD_CATALOG1 TABLES IT_FIELDCAT1
        USING:

          'IT_TAB_1' 'WERK' ' ' 'PLANT' ' ' ' ',
          'IT_TAB_1' 'LIFNR' ' ' 'VENDOR NUMBER' ' ' ' ',
          'IT_TAB_1' 'MEANQ' ' ' 'MEANQSCORE' ' ' ' ',
          'IT_TAB_1' 'BASME_QM' ' ' 'BuM' ' ' ' ',
        
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           I_CALLBACK_PROGRAM                = SY-CPROG
           I_CALLBACK_USER_COMMAND             = 'USER_COMM_1'
           IS_LAYOUT                         = S_LAYOUT
           IT_FIELDCAT                       = IT_FIELDCAT1[]
         TABLES
            T_OUTTAB                          = IT_TAB_1[]
                  .

      ENDIF.
  ENDCASE.
ENDFORM.                    "USER_COMM

For second screen : which is not working

FORM USER_COMM_1 USING P_UCOMM LIKE SY-UCOMM
                           R_SELFIELD TYPE SLIS_SELFIELD.
  DATA : OK_CODE TYPE SY-UCOMM.
  OK_CODE = P_UCOMM.
  CASE OK_CODE.

    WHEN '&IC2'.
      IF R_SELFIELD-FIELDNAME = 'LIFNR'.
        READ TABLE IT_TAB_1 INDEX R_SELFIELD-TABINDEX.

        REFRESH IT_TAB_2[].
        CLEAR IT_TAB_2.

        LOOP AT IT_SECOND WHERE WERK EQ IT_TAB_1-WERK AND 
SPMON EQ IT_TAB_1-SPMON AND ART = IT_TAB_1-ART AND LIFNR = IT_TAB_1-LIFNR.
                                   
          MOVE IT_SECOND-ART        TO  IT_TAB_2-ART.
          MOVE IT_SECOND-SPMON      TO  IT_TAB_2-SPMON.
          MOVE IT_SECOND-MATNR      TO  IT_TAB_2-MATNR.
               APPEND IT_TAB_2.
          CLEAR: IT_SECOND, IT_TAB_2.
        ENDLOOP.

        REFRESH IT_FIELDCAT2[].

        S_LAYOUT-ZEBRA = 'X' .
        S_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .

        PERFORM FIELD_CATALOG1 TABLES IT_FIELDCAT2
                USING:

                  'IT_TAB_2' 'MATNR' ' ' 'MATERIAL NUMBER' ' ' ' ',
                  'IT_TAB_2' 'MEANQ' ' ' 'MEANQSCORE' ' ' ' ',
                  'IT_TAB_2' 'BASME_QM' ' ' 'BuM' ' ' ' ',
               
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           I_CALLBACK_PROGRAM                = SY-CPROG
           IS_LAYOUT                         = S_LAYOUT
           IT_FIELDCAT                       = IT_FIELDCAT2[]
          TABLES
            T_OUTTAB                          = IT_TAB_2[]
                  .

      ENDIF.
  ENDCASE.
ENDFORM.                    "USER_COMM_1

Please advice

Karthik

Edited by: Karthik R on Apr 29, 2009 12:22 PM

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
751

Use both conditions in USER_COMM.

FORM USER_COMM USING P_UCOMM LIKE SY-UCOMM
                           R_SELFIELD TYPE SLIS_SELFIELD.
 
  DATA : OK_CODE TYPE SY-UCOMM.
  OK_CODE = P_UCOMM.
  CASE OK_CODE.
 
    WHEN '&IC1'.

      IF R_SELFIELD-FIELDNAME = 'SPMON'.                      " Field name SPMON
        READ TABLE IT_TAB INDEX R_SELFIELD-TABINDEX.
 
        REFRESH IT_TAB_1[].
        CLEAR IT_TAB_1.
 
        LOOP AT IT_FIRST WHERE WERK EQ IT_TAB-WERK AND SPMON EQ IT_TAB-SPMON
                           AND ART = IT_TAB-ART.
 
          MOVE IT_FIRST-WERK       TO  IT_TAB_1-WERK.
          MOVE IT_FIRST-LIFNR      TO  IT_TAB_1-LIFNR.
          MOVE IT_FIRST-MEANQ      TO  IT_TAB_1-MEANQ.
          MOVE IT_FIRST-BASME_QM   TO  IT_TAB_1-BASME_QM.
           APPEND IT_TAB_1.
          CLEAR: IT_FIRST, IT_TAB_1.
        ENDLOOP.
 
 
        REFRESH IT_FIELDCAT1[].
 
        S_LAYOUT-ZEBRA = 'X' .
        S_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
 
        PERFORM FIELD_CATALOG1 TABLES IT_FIELDCAT1
        USING:
 
          'IT_TAB_1' 'WERK' ' ' 'PLANT' ' ' ' ',
          'IT_TAB_1' 'LIFNR' ' ' 'VENDOR NUMBER' ' ' ' ',
          'IT_TAB_1' 'MEANQ' ' ' 'MEANQSCORE' ' ' ' ',
          'IT_TAB_1' 'BASME_QM' ' ' 'BuM' ' ' ' ',
        
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           I_CALLBACK_PROGRAM                = SY-CPROG
           I_CALLBACK_USER_COMMAND             = 'USER_COMM_1'
           IS_LAYOUT                         = S_LAYOUT
           IT_FIELDCAT                       = IT_FIELDCAT1[]
         TABLES
            T_OUTTAB                          = IT_TAB_1[]
                  .
 
      ELSEIF R_SELFIELD-FIELDNAME = 'LIFNR'.              " ELSE FIELDNAME LIFNR

        READ TABLE IT_TAB_1 INDEX R_SELFIELD-TABINDEX.
 
        REFRESH IT_TAB_2[].
        CLEAR IT_TAB_2.
 
        LOOP AT IT_SECOND WHERE WERK EQ IT_TAB_1-WERK AND 
        SPMON EQ IT_TAB_1-SPMON AND ART = IT_TAB_1-ART AND LIFNR = IT_TAB_1-LIFNR.
                                   
          MOVE IT_SECOND-ART        TO  IT_TAB_2-ART.
          MOVE IT_SECOND-SPMON      TO  IT_TAB_2-SPMON.
          MOVE IT_SECOND-MATNR      TO  IT_TAB_2-MATNR.
               APPEND IT_TAB_2.
          CLEAR: IT_SECOND, IT_TAB_2.
        ENDLOOP.
 
        REFRESH IT_FIELDCAT2[].
 
        S_LAYOUT-ZEBRA = 'X' .
        S_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
 
        PERFORM FIELD_CATALOG1 TABLES IT_FIELDCAT2
                USING:
 
                  'IT_TAB_2' 'MATNR' ' ' 'MATERIAL NUMBER' ' ' ' ',
                  'IT_TAB_2' 'MEANQ' ' ' 'MEANQSCORE' ' ' ' ',
                  'IT_TAB_2' 'BASME_QM' ' ' 'BuM' ' ' ' ',
               
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           I_CALLBACK_PROGRAM                = SY-CPROG
           IS_LAYOUT                         = S_LAYOUT
           IT_FIELDCAT                       = IT_FIELDCAT2[]
          TABLES
            T_OUTTAB                          = IT_TAB_2[]
                  .
 
      ENDIF.
  ENDCASE.
ENDFORM.                    "USER_COMM

Regards,

Gurpreet

6 REPLIES 6
Read only

Former Member
0 Likes
752

Use both conditions in USER_COMM.

FORM USER_COMM USING P_UCOMM LIKE SY-UCOMM
                           R_SELFIELD TYPE SLIS_SELFIELD.
 
  DATA : OK_CODE TYPE SY-UCOMM.
  OK_CODE = P_UCOMM.
  CASE OK_CODE.
 
    WHEN '&IC1'.

      IF R_SELFIELD-FIELDNAME = 'SPMON'.                      " Field name SPMON
        READ TABLE IT_TAB INDEX R_SELFIELD-TABINDEX.
 
        REFRESH IT_TAB_1[].
        CLEAR IT_TAB_1.
 
        LOOP AT IT_FIRST WHERE WERK EQ IT_TAB-WERK AND SPMON EQ IT_TAB-SPMON
                           AND ART = IT_TAB-ART.
 
          MOVE IT_FIRST-WERK       TO  IT_TAB_1-WERK.
          MOVE IT_FIRST-LIFNR      TO  IT_TAB_1-LIFNR.
          MOVE IT_FIRST-MEANQ      TO  IT_TAB_1-MEANQ.
          MOVE IT_FIRST-BASME_QM   TO  IT_TAB_1-BASME_QM.
           APPEND IT_TAB_1.
          CLEAR: IT_FIRST, IT_TAB_1.
        ENDLOOP.
 
 
        REFRESH IT_FIELDCAT1[].
 
        S_LAYOUT-ZEBRA = 'X' .
        S_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
 
        PERFORM FIELD_CATALOG1 TABLES IT_FIELDCAT1
        USING:
 
          'IT_TAB_1' 'WERK' ' ' 'PLANT' ' ' ' ',
          'IT_TAB_1' 'LIFNR' ' ' 'VENDOR NUMBER' ' ' ' ',
          'IT_TAB_1' 'MEANQ' ' ' 'MEANQSCORE' ' ' ' ',
          'IT_TAB_1' 'BASME_QM' ' ' 'BuM' ' ' ' ',
        
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           I_CALLBACK_PROGRAM                = SY-CPROG
           I_CALLBACK_USER_COMMAND             = 'USER_COMM_1'
           IS_LAYOUT                         = S_LAYOUT
           IT_FIELDCAT                       = IT_FIELDCAT1[]
         TABLES
            T_OUTTAB                          = IT_TAB_1[]
                  .
 
      ELSEIF R_SELFIELD-FIELDNAME = 'LIFNR'.              " ELSE FIELDNAME LIFNR

        READ TABLE IT_TAB_1 INDEX R_SELFIELD-TABINDEX.
 
        REFRESH IT_TAB_2[].
        CLEAR IT_TAB_2.
 
        LOOP AT IT_SECOND WHERE WERK EQ IT_TAB_1-WERK AND 
        SPMON EQ IT_TAB_1-SPMON AND ART = IT_TAB_1-ART AND LIFNR = IT_TAB_1-LIFNR.
                                   
          MOVE IT_SECOND-ART        TO  IT_TAB_2-ART.
          MOVE IT_SECOND-SPMON      TO  IT_TAB_2-SPMON.
          MOVE IT_SECOND-MATNR      TO  IT_TAB_2-MATNR.
               APPEND IT_TAB_2.
          CLEAR: IT_SECOND, IT_TAB_2.
        ENDLOOP.
 
        REFRESH IT_FIELDCAT2[].
 
        S_LAYOUT-ZEBRA = 'X' .
        S_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
 
        PERFORM FIELD_CATALOG1 TABLES IT_FIELDCAT2
                USING:
 
                  'IT_TAB_2' 'MATNR' ' ' 'MATERIAL NUMBER' ' ' ' ',
                  'IT_TAB_2' 'MEANQ' ' ' 'MEANQSCORE' ' ' ' ',
                  'IT_TAB_2' 'BASME_QM' ' ' 'BuM' ' ' ' ',
               
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           I_CALLBACK_PROGRAM                = SY-CPROG
           IS_LAYOUT                         = S_LAYOUT
           IT_FIELDCAT                       = IT_FIELDCAT2[]
          TABLES
            T_OUTTAB                          = IT_TAB_2[]
                  .
 
      ENDIF.
  ENDCASE.
ENDFORM.                    "USER_COMM

Regards,

Gurpreet

Read only

0 Likes
751

Hi Gurpreet,

Thank u !!! But its not working, I think u have understood my requirement wrongly

as u have not used user command USER_COMM_1 ...

Actually my requirement is three different screens.

1. 1st one is initial screen ..when user clicks s068~spmon the details of it

should appear in the second screen.

2. In second screen details of s068~spmon should fire and when user clicks s068~lifnr

other screen ie is the third screen should appear.

3. In third screen detials of s068~lifnr should appear.

Please advice

Karthik

Read only

0 Likes
751

1) Instead of using Two Dynamic use one Subroutine.

FORM USER_COMM USING P_UCOMM LIKE SY-UCOMM
                           R_SELFIELD TYPE SLIS_SELFIELD.
ENDFORM.

2) When the Line is clicked:

Check for the field which is clicked.

If SPMOM.
First Screen.
ELSEIF LIFNR.
SECOND SCREEN.
ENDIF.

It will work in the same subroutine.Just check for the field name in condition.

Regards,

Gurpreet

Read only

0 Likes
751

Hello Karthik,


FORM USER_COMM_1 USING P_UCOMM LIKE SY-UCOMM
                           R_SELFIELD TYPE SLIS_SELFIELD.
  DATA : OK_CODE TYPE SY-UCOMM.
  OK_CODE = P_UCOMM.
  CASE OK_CODE.
 
    WHEN '&IC2'. 

There is no Ok_code &IC2. It must be &IC1 only.Change it. It works.

Regards

Venkat

Read only

dev_parbutteea
Active Contributor
0 Likes
751

Hi,

FORM USER_COMM_1 USING P_UCOMM LIKE SY-UCOMM

R_SELFIELD TYPE SLIS_SELFIELD.

DATA : OK_CODE TYPE SY-UCOMM.

OK_CODE = P_UCOMM.

CASE OK_CODE.

WHEN '&IC2'. --> should have been &IC1 i guess

Read only

Former Member
0 Likes
751

Hi,

'&IC2' does not have any meaning.

'&IC1' means double click.

So you should change it.

Please try.

Regards,

Chris Gu

Edited by: Gu Chris on Apr 29, 2009 11:19 AM