Secondary list doesnt trigger

hi,
i have pasted the code below.
when i click in the basic list ...its taking me to secondary list sy-lsind = 1. but in this list its not allowing me to click.(not taking me to sy-lsind>=2) something wrong with my menu painter stuff. when i try to click....i get as chose valid function in the status place.
I have given 'TEST' in the function key place before choose.
in application tool bar have crated MARC.MARD.MAKT. GAVE THEM AS sap gui FUNCTIONS. can some one plz correct me.
Tables: marc,mard,makt.
data: begin of itab occurs 0,
      matnr like mara-matnr,
      ersda like mara-ersda,
      ernam like mara-ernam,
      mtart like mara-mtart,
      end of itab.
TOP-OF-PAGE.
WRITE:/ 'INTERACTIVE REPORTS'.
ULINE.
WRITE:/ 'MATNR', 'ERSDA', 'ERNAM', 'MTART'.
START-OF-SELECTION.
SELECT MATNR ERSDA ERNAM MTART INTO TABLE ITAB FROM MARA.
END-OF-SELECTION.
LOOP AT ITAB.
WRITE:/ ITAB-MATNR HOTSPOT ON,ITAB-ERSDA,ITAB-ERNAM,ITAB-MTART.
HIDE: ITAB-MATNR.
ENDLOOP.
AT LINE-SELECTION.
WRITE:/ 'LIST INDEX NO:',SY-LSIND.
IF SY-LSIND > 0.
  WRITE:/ ITAB-MATNR , ITAB-ERSDA, ITAB-ERNAM.
ENDIF.
                    "this below part of the code is not really executin i guess'
SET PF-STATUS 'THREE'.
AT USER-COMMAND.
CASE SY-UCOMM.
   WHEN 'MARC'.
           SELECT * FROM MARC WHERE MATNR = ITAB-MATNR.
            WRITE:/ MARC-MATNR, MARC-WERKS.
   ENDSELECT.
   IF SY-SUBRC <> 0.
   WRITE:/ ' NO RECORDS AVAILABLE'.
   ENDIF.
   WHEN 'MARD'.
   SELECT * FROM MARD WHERE MATNR = ITAB-MATNR.
   WRITE:/ MARD-MATNR, MARC-WERKS.
   ENDSELECT.
   IF SY-SUBRC <> 0.
   WRITE:/ ' NO RECORDS AVAILABLE FROM MARD'.
   ENDIF.
   WHEN 'MAKT'.
   SELECT * FROM MAKT WHERE MATNR = ITAB-MATNR.
   WRITE:/ MAKT-MATNR, MAKT-SPRAS.
   ENDSELECT.
   IF SY-SUBRC <> 0.
   WRITE:/ 'NO RECORDS AVAILABLE FROM MAKT'.
   ENDIF.
ENDCASE.
END-OF-SELECTION.

lease look at the changed code.
However sy-ucomm will be 'PICK' at the line selection.
Shreekant
TABLES: marc,mard,makt.
DATA: BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
ersda LIKE mara-ersda,
ernam LIKE mara-ernam,
mtart LIKE mara-mtart,
END OF itab.
TOP-OF-PAGE.
  WRITE:/ 'INTERACTIVE REPORTS'.
  ULINE.
  WRITE:/ 'MATNR', 'ERSDA', 'ERNAM', 'MTART'.
START-OF-SELECTION.
  SELECT matnr ersda ernam mtart INTO TABLE itab FROM mara.
END-OF-SELECTION.
  LOOP AT itab.
    WRITE:/ itab-matnr HOTSPOT ON,itab-ersda,itab-ernam,itab-mtart.
    HIDE: itab-matnr.
  ENDLOOP.
AT LINE-SELECTION.
  WRITE:/ 'LIST INDEX NO:',sy-lsind.
  IF sy-lsind > 0.
    WRITE:/ itab-matnr , itab-ersda, itab-ernam.
    CASE sy-ucomm.
      WHEN 'MARC'.
        SELECT * FROM marc WHERE matnr = itab-matnr.
          WRITE:/ marc-matnr, marc-werks.
        ENDSELECT.
        IF sy-subrc <> 0.
          WRITE:/ ' NO RECORDS AVAILABLE'.
        ENDIF.
      WHEN 'MARD'.
        SELECT * FROM mard WHERE matnr = itab-matnr.
          WRITE:/ mard-matnr, marc-werks.
        ENDSELECT.
        IF sy-subrc <> 0.
          WRITE:/ ' NO RECORDS AVAILABLE FROM MARD'.
        ENDIF.
      WHEN 'MAKT'.
        SELECT * FROM makt WHERE matnr = itab-matnr.
          WRITE:/ makt-matnr, makt-spras.
        ENDSELECT.
        IF sy-subrc <> 0.
          WRITE:/ 'NO RECORDS AVAILABLE FROM MAKT'.
        ENDIF.
    ENDCASE.
  ENDIF.
  "this below part of the code is not really executin i guess'
*SET PF-STATUS 'THREE'.
*AT USER-COMMAND.
END-OF-SELECTION.

Similar Messages

  • Report title displaying for the secondary list

    Hi All,
    I have done a report interactive.The basic list is ALV and the secondary list is normal report.The problem in secondary list is it is diplaying the title "Dynamic list display" I am not getting from where this text is picking up and displaying .The code is as shown below.
    LEAVE TO LIST-PROCESSING.
    write:/ 'converting spool to pdf'.
    The output is displaying as shown below.
    dynamic list display.
    converting spool to pdf.
    I dont want to display dynamic list display in the output.How to suppress this?I even observed in debug mode after leave to list-prcoessing it is going to next line converting spool to pdf.
    Regards
    Mahesh

    use
    TOP-OF-PAGE DURING LINE-SELECTION.
    when ur SY-LSIND
    trigger this event with whtever heading u want in secondary list

  • Help needed Displaying ALV  Secondary list without using oops concept

    Hi Experts
    Help needed Displaying ALV  Secondary list without using oops concept.
    its urgent
    regds
    rajasekhar

    hi chk this code
    ******************TABLES DECLARATION*****************
    TABLES : VBAP,MARA.
    *****************TYPE POOLS**************************
    TYPE-POOLS : SLIS.
    ****************INTERNAL TABLES**********************
    DATA : BEGIN OF IT_VBAP OCCURS 0,
    VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
    POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
    MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
    END OF IT_VBAP.
    ****************TEMPORARY VARIABLES******************
    DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
    DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE
    *****************FIELD CATALOG***********************
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    ****************LAYOUT*******************************
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    ***************VARIANT*******************************
    DATA : G_VARIANT LIKE DISVARIANT.
    ****************SAVE*********************************
    DATA : G_SAVE(1) TYPE C.
    *****************EVENTS******************************
    DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
           G_EVENTS TYPE SLIS_T_EVENT.
    ******************PF STATUS**************************
    DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.
    ******************USER COMMAND************************
    DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
           R_UCOMM LIKE SY-UCOMM.
    ****************SELECTION SCREEN************************
    SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
    ***************AT SELECTION SCREEN*********************
    AT SELECTION-SCREEN.
      PERFORM VALIDATE.
    **************START-OF-SELECTION**************************
    START-OF-SELECTION.
      PERFORM GET_DETAILS.
      PERFORM FIELDCAT.
      PERFORM LAYOUT.
      PERFORM VARIANT.
      PERFORM SAVE.
      PERFORM EVENTS.
      PERFORM ALV_DISPLAY.
    *********************FORMS*******************************************
    *&      Form  validate
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE .
      SELECT SINGLE VBELN
                    FROM VBAP
                    INTO V_VBELN
                    WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'enter valid vbeln'.
      ENDIF.
    ENDFORM.                    " validate
    *&      Form  get_details
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DETAILS .
      SELECT VBELN
             POSNR
             MATNR
             FROM VBAP
             INTO TABLE IT_VBAP
             WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no details found'.
      ENDIF.
    ENDFORM.                    " get_details
    *&      Form  fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT .
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'VBELN'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'POSNR'.
      WA_FIELDCAT-OUTPUTLEN = 6.
      WA_FIELDCAT-SELTEXT_L = 'ITEM'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-OUTPUTLEN = 18.
      WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    " fieldcat
    *&      Form  LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT .
      WA_LAYOUT-ZEBRA = 'X'.
    ENDFORM.                    " LAYOUT
    *&      Form  VARIANT
          text
    -->  p1        text
    <--  p2        text
    FORM VARIANT .
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = SY-REPID.
    ENDFORM.                    " VARIANT
    *&      Form  SAVE
          text
    -->  p1        text
    <--  p2        text
    FORM SAVE .
      CLEAR G_SAVE.
      G_SAVE = 'A'.
    ENDFORM.                    " SAVE
    *&      Form  EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM EVENTS .
      CLEAR XS_EVENTS.
      XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENTS-FORM = 'TOP_OF_PAGE'.
      APPEND XS_EVENTS TO G_EVENTS.
    ENDFORM.                    " EVENTS
    *&      Form  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      WRITE :/ ' INTELLI GROUP'.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  ALV_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM ALV_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = SY-REPID
         I_CALLBACK_PF_STATUS_SET       = PF_STATUS
         I_CALLBACK_USER_COMMAND        = USER_COMMAND
      I_STRUCTURE_NAME               =
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
         I_SAVE                         = G_SAVE
         IS_VARIANT                     = G_VARIANT
         IT_EVENTS                      = G_EVENTS
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB                       = IT_VBAP
       EXCEPTIONS
         PROGRAM_ERROR                  = 1
         OTHERS                         = 2
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  SET_PF_STATUS
          text
    FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'Z50651_PFSTATUS' EXCLUDING EXTAB.
    ENDFORM.                    "SET_PF_STATUS
    *&      Form  SET_USER_COMMAND
          text
    FORM SET_USER_COMMAND USING R_UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN 'DC'.
          READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
          IF SY-SUBRC = 0.
            SELECT SINGLE MTART
                          FROM MARA
                          INTO V_MTART
                          WHERE MATNR = IT_VBAP-MATNR.
            IF SY-SUBRC <> 0.
       MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
            ELSE.
              WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
              WRITE :/ 'MATERIAL TYPE :' , V_MTART.
            ENDIF.
          ENDIF.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE TO SCREEN 0.
        WHEN 'CLOSE'.
          CALL TRANSACTION 'SE38'.
      ENDCASE.
    REPORT  Z_ALV_INTERACTIVE  MESSAGE-ID ZMSG_50651
                                    LINE-SIZE 100
                                    LINE-COUNT 60
                                    NO STANDARD PAGE HEADING.
    ******************TABLES DECLARATION*****************
    TABLES : VBAP,MARA.
    *****************TYPE POOLS**************************
    TYPE-POOLS : SLIS.
    ****************INTERNAL TABLES**********************
    DATA : BEGIN OF IT_VBAP OCCURS 0,
    VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
    POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
    MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
    END OF IT_VBAP.
    ****************TEMPORARY VARIABLES******************
    DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
    DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE
    *****************FIELD CATALOG***********************
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    ****************LAYOUT*******************************
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    ***************VARIANT*******************************
    DATA : G_VARIANT LIKE DISVARIANT.
    ****************SAVE*********************************
    DATA : G_SAVE(1) TYPE C.
    *****************EVENTS******************************
    DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
           G_EVENTS TYPE SLIS_T_EVENT.
    ******************PF STATUS**************************
    DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.
    ******************USER COMMAND************************
    DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
           R_UCOMM LIKE SY-UCOMM.
    ****************SELECTION SCREEN************************
    SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
    ***************AT SELECTION SCREEN*********************
    AT SELECTION-SCREEN.
      PERFORM VALIDATE.
    **************START-OF-SELECTION**************************
    START-OF-SELECTION.
      PERFORM GET_DETAILS.
      PERFORM FIELDCAT.
      PERFORM LAYOUT.
      PERFORM VARIANT.
      PERFORM SAVE.
      PERFORM EVENTS.
      PERFORM ALV_DISPLAY.
    *********************FORMS*******************************************
    *&      Form  validate
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE .
      SELECT SINGLE VBELN
                    FROM VBAP
                    INTO V_VBELN
                    WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'enter valid vbeln'.
      ENDIF.
    ENDFORM.                    " validate
    *&      Form  get_details
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DETAILS .
      SELECT VBELN
             POSNR
             MATNR
             FROM VBAP
             INTO TABLE IT_VBAP
             WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no details found'.
      ENDIF.
    ENDFORM.                    " get_details
    *&      Form  fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT .
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'VBELN'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'POSNR'.
      WA_FIELDCAT-OUTPUTLEN = 6.
      WA_FIELDCAT-SELTEXT_L = 'ITEM'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-OUTPUTLEN = 18.
      WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    " fieldcat
    *&      Form  LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT .
      WA_LAYOUT-ZEBRA = 'X'.
    ENDFORM.                    " LAYOUT
    *&      Form  VARIANT
          text
    -->  p1        text
    <--  p2        text
    FORM VARIANT .
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = SY-REPID.
    ENDFORM.                    " VARIANT
    *&      Form  SAVE
          text
    -->  p1        text
    <--  p2        text
    FORM SAVE .
      CLEAR G_SAVE.
      G_SAVE = 'A'.
    ENDFORM.                    " SAVE
    *&      Form  EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM EVENTS .
      CLEAR XS_EVENTS.
      XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENTS-FORM = 'TOP_OF_PAGE'.
      APPEND XS_EVENTS TO G_EVENTS.
    ENDFORM.                    " EVENTS
    *&      Form  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      WRITE :/ ' INTELLI GROUP'.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  ALV_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM ALV_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET         = PF_STATUS
         I_CALLBACK_USER_COMMAND        = USER_COMMAND
      I_STRUCTURE_NAME               =
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
         I_SAVE                         = G_SAVE
        IS_VARIANT                      = G_VARIANT
         IT_EVENTS                      = G_EVENTS
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB                       = IT_VBAP
       EXCEPTIONS
         PROGRAM_ERROR                  = 1
         OTHERS                         = 2
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  SET_PF_STATUS
          text
    FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'STANDARD' EXCLUDING EXTAB.
    ENDFORM.                    "SET_PF_STATUS
    *&      Form  SET_USER_COMMAND
          text
    FORM SET_USER_COMMAND USING R_UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN 'DC'.
          READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
          IF SY-SUBRC = 0.
            SELECT SINGLE MTART
                          FROM MARA
                          INTO V_MTART
                          WHERE MATNR = IT_VBAP-MATNR.
            IF SY-SUBRC <> 0.
       MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
            ELSE.
              WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
              WRITE :/ 'MATERIAL TYPE :' , V_MTART.
      SUBMIT SLIS_DUMMY WITH P_MATNR EQ IT_VBAP-MATNR
                        WITH P_MTART EQ V_MTART.
            ENDIF.
          ENDIF.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE TO SCREEN 0.
        WHEN 'CLOSE'.
          CALL TRANSACTION 'SE38'.
      ENDCASE.
    plz reward if useful

  • Adding button in the secondary list and alv grid

    Hi all ,
                i have devloped an alv grid interactive report as below, my problem is i want to add some button in the secondary list and do some interactions. but i dont know how to do that. i m sending u my code below ,,, plzz suggest what can be done do add that.
    <code>
    *& Report  Z_demo_SALESDOC
    REPORT  z_demo_salesdoc.
    TABLES: vbak, vbap.
    TYPE-POOLS:slis.
    DATA: BEGIN OF it_vbak OCCURS 0,
           vbeln TYPE vbak-vbeln,
           ernam TYPE vbak-ernam,
           erdat TYPE vbak-erdat,
           auart TYPE vbak-auart,
           END OF it_vbak.
    DATA: BEGIN OF it_vbap OCCURS 0,
           vbeln TYPE vbap-vbeln,
           posnr TYPE vbap-vbeln,
           matnr TYPE vbap-matnr,
           zmeng TYPE vbap-zmeng,
           netwr TYPE vbap-netwr,
           END OF it_vbap.
    DATA:it_event TYPE slis_t_event.
    DATA: t_field TYPE slis_t_fieldcat_alv,
          w_field TYPE slis_fieldcat_alv,
          t_field1 TYPE slis_t_fieldcat_alv,
          w_field1 TYPE slis_fieldcat_alv,
          w_layout TYPE slis_layout_alv,
          t_sort TYPE slis_t_sortinfo_alv,
          w_sort TYPE slis_sortinfo_alv.
    CONSTANTS: c_top_of_page  TYPE slis_formname VALUE 'TOP_OF_PAGE',
               c_usercommand  TYPE slis_formname VALUE 'USER_COMMAND'.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: s_vbeln FOR vbak-vbeln MODIF ID m1,
                    s_erdat FOR vbak-erdat MODIF ID m2.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
    PARAMETERS:rb1 RADIOBUTTON GROUP g1 USER-COMMAND us1,
               rb2 RADIOBUTTON GROUP g1 DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK B2.
    AT SELECTION-SCREEN OUTPUT.
      IF rb1 = 'X'.
        LOOP AT SCREEN.
          IF screen-group1    = 'M1'.
         IF screen-name    CS 'S_VBELN'.
            screen-active    = '0'.
           screen-input     = '0'.
          screen-output    = '0'.
          screen-invisible = '1'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDIF.
      IF rb2 = 'X'.
        LOOP AT SCREEN.
          IF screen-group1    = 'M2'.
            screen-active    = '0'.
           screen-input     = '0'.
          screen-output    = '0'.
          screen-invisible = '0'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDIF.
    AT SELECTION-SCREEN.
      DATA: v_vbeln LIKE vbak-vbeln.
      SELECT SINGLE vbeln
                      FROM vbak
                      INTO (v_vbeln)
                      WHERE vbeln IN s_vbeln .
      IF sy-subrc <> 0.
        MESSAGE e001(q) WITH 'Invalid Sales document'.
      ENDIF.
      DATA: v_erdat LIKE vbak-erdat.
      SELECT SINGLE erdat
                      FROM vbak
                      INTO (v_erdat)
                      WHERE erdat IN s_erdat.
      IF sy-subrc <> 0.
        MESSAGE e001(q) WITH 'No document available with given date'.
      ENDIF.
    START-OF-SELECTION.
      PERFORM get_data_vbak.
      PERFORM build_field_catalog.
    PERFORM fill_event.
      PERFORM print_data_vbak.
    END-OF-SELECTION.
    *&      Form  get_data_vbak
          text
    -->  p1        text
    <--  p2        text
    FORM get_data_vbak .
      SELECT vbeln ernam erdat auart
                                FROM vbak
                                INTO TABLE it_vbak
                                WHERE vbeln IN s_vbeln AND erdat IN s_erdat.
    ENDFORM.                    " get_data_vbak
    *&      Form  build_field_catalog
          text
    -->  p1        text
    <--  p2        text
    FORM build_field_catalog .
      w_field-col_pos = 1.
      w_field-fieldname = 'VBELN'.
      w_field-tabname = 'IT_VBAK'.
      w_field-seltext_m = 'Sales Order'.
      w_field-emphasize = 'C710'.
      APPEND w_field TO t_field.
      CLEAR w_field.
      w_field-col_pos = 2.
      w_field-fieldname = 'ERNAM'.
      w_field-tabname = 'IT_VBAK'.
      w_field-seltext_m = 'Created by'.
      w_field-emphasize = 'C710'.
      APPEND w_field TO t_field.
      CLEAR w_field.
      w_field-col_pos = 3.
      w_field-fieldname = 'ERDAT'.
      w_field-tabname = 'IT_VBAK'.
      w_field-seltext_m = 'Created Date'.
      w_field-emphasize = 'C710'.
      APPEND w_field TO t_field.
      CLEAR w_field.
      w_field-col_pos = 4.
      w_field-fieldname = 'AUART'.
      w_field-tabname = 'IT_VBAK'.
      w_field-seltext_m = 'Order type'.
      w_field-emphasize = 'C710'.
      APPEND w_field TO t_field.
      CLEAR w_field.
      w_sort-spos = 1.
      w_sort-fieldname = 'VBELN'.
      w_sort-up = 'X'.
      APPEND w_sort TO t_sort.
      w_layout-colwidth_optimize = 'X'.
    ENDFORM.                    " build_field_catalog
    *&      Form  user_command
          text
         -->RF_UCOMM     text
         -->RS_SELFIELD  text
    FORM user_command USING rf_ucomm    TYPE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      CASE rf_ucomm.
        WHEN '&IC1'.
          IF rs_selfield-fieldname = 'VBELN'.
            READ TABLE it_vbak INDEX rs_selfield-tabindex.
            IF sy-subrc = 0.
              PERFORM get_data_vbap.
              PERFORM build_field_catalog2.
              PERFORM print_field_data.
            ENDIF.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  print_data_vbak
          text
    -->  p1        text
    <--  p2        text
    FORM print_data_vbak .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
       i_callback_user_command           = 'USER_COMMAND'
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  = I_STRUCTURE_NAME
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      = I_GRID_TITLE
      I_GRID_SETTINGS                   = I_GRID_SETTINGS
         is_layout                         = w_layout
       it_fieldcat                       = t_field[]
      IT_EXCLUDING                      = IT_EXCLUDING
      IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
       it_sort                           = t_sort
      IT_FILTER                         = IT_FILTER
      IS_SEL_HIDE                       = IS_SEL_HIDE
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        = IS_VARIANT
      it_events                         = it_event[]
      IT_EVENT_EXIT                     = IT_EVENT_EXIT
      IS_PRINT                          = IS_PRINT
      IS_REPREP_ID                      = IS_REPREP_ID
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
      IT_HYPERLINK                      = IT_HYPERLINK
      IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
      IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
      IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
        TABLES
          t_outtab                          = it_vbak
    EXCEPTIONS
       program_error                     = 1
       OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " print_data_vbak
    *&      Form  fill_event
          text
    FORM fill_event .
      DATA : st_event TYPE slis_alv_event.
    *- Clear.
      CLEAR : st_event, it_event[].
    *- Local variable
      DATA : l_tabix TYPE sy-tabix.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    *- Read event table
      READ TABLE it_event WITH KEY name = slis_ev_user_command
                           INTO st_event.
    *- Clear
      CLEAR l_tabix.
      l_tabix = sy-tabix.
    *- Check subrc
      IF sy-subrc = 0.
        st_event-form = c_usercommand.
    *- Modify
        MODIFY it_event FROM st_event INDEX l_tabix.
    *- Clear
        CLEAR st_event.
      ENDIF.
    ENDFORM.                    " fill_event
    *&      Form  get_data_vbap
          text
    FORM get_data_vbap .
      IF NOT it_vbak[] IS INITIAL.
        SELECT vbeln
               posnr
               matnr
               zmeng
               netwr
            FROM vbap
            INTO TABLE it_vbap
            WHERE vbeln = it_vbak-vbeln.
        IF sy-subrc = 0.
          SORT it_vbap BY vbeln.
        ENDIF.
      ENDIF.
    ENDFORM.                    " get_data_vbap
    *&      Form  build_field_catalog2
          text
    FORM build_field_catalog2 .
      CLEAR:t_field1,w_field1.
      w_field1-col_pos = 1.
      w_field1-fieldname = 'VBELN'.
      w_field1-tabname = 'IT_VBAP'.
      w_field1-seltext_m = 'Sales Order'.
      w_field1-emphasize = 'C710'.
      APPEND w_field1 TO t_field1.
      CLEAR w_field1.
      w_field1-col_pos = 2.
      w_field1-fieldname = 'POSNR'.
      w_field1-tabname = 'IT_VBAP'.
      w_field1-seltext_m = 'Sales Doc Item'.
      w_field1-emphasize = 'C710'.
      APPEND w_field1 TO t_field1.
      CLEAR w_field1.
      w_field1-col_pos = 3.
      w_field1-fieldname = 'MATNR'.
      w_field1-tabname = 'IT_VBAP'.
      w_field1-seltext_m = 'Material No'.
      w_field1-emphasize = 'C710'.
      APPEND w_field1 TO t_field1.
      CLEAR w_field1.
      w_field1-col_pos = 4.
      w_field1-fieldname = 'ZMENG'.
      w_field1-tabname = 'IT_VBAP'.
      w_field1-seltext_m = 'Target quan units'.
      w_field1-emphasize = 'C710'.
      APPEND w_field1 TO t_field1.
      CLEAR w_field1.
      w_field1-col_pos = 5.
      w_field1-fieldname = 'NETWR'.
      w_field1-tabname = 'IT_VBAP'.
      w_field1-seltext_m = 'Net value dc cu'.
      w_field1-emphasize = 'C710'.
      APPEND w_field1 TO t_field1.
      CLEAR w_field1.
    ENDFORM.                    " build_field_catalog2
    *&      Form  print_field_data
          text
    FORM print_field_data .
    SET PF-STATUS 'VBAP'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  = I_STRUCTURE_NAME
      I_BACKGROUND_ID                   = ' '
         i_grid_title                      = 'VBAP DETAILS'
      I_GRID_SETTINGS                   = I_GRID_SETTINGS
      IS_LAYOUT                         = IS_LAYOUT
         it_fieldcat                       = t_field1[]
      IT_EXCLUDING                      = IT_EXCLUDING
      IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
      IT_SORT                           = IT_SORT
      IT_FILTER                         = IT_FILTER
      IS_SEL_HIDE                       = IS_SEL_HIDE
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        = IS_VARIANT
      IT_EVENTS                         = IT_EVENTS
      IT_EVENT_EXIT                     = IT_EVENT_EXIT
      IS_PRINT                          = IS_PRINT
      IS_REPREP_ID                      = IS_REPREP_ID
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
      IT_HYPERLINK                      = IT_HYPERLINK
      IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
      IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
      IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
        TABLES
          t_outtab                          = it_vbap
       EXCEPTIONS
         program_error                     = 1
         OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " print_field_data
    </code>

    Hi Satya..
    This is the Sample code...
    DATA : V_FORM_GUI TYPE SLIS_FORMNAME VALUE 'F_GUI'.  "Form name
    **Secondary List
    FORM print_field_data .
    SET PF-STATUS 'VBAP'.  "This statement will not work for ALV
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER = ' '
    I_BUFFER_ACTIVE = ' '
    i_callback_program = sy-repid
    <b> I_CALLBACK_PF_STATUS_SET = V_FORM_GUI  
                                                      "Subroutine in which GUI status is called</b>
    I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'   "To handle GUI
    I_CALLBACK_TOP_OF_PAGE = ' '
    I_CALLBACK_HTML_TOP_OF_PAGE = ' '
    I_CALLBACK_HTML_END_OF_LIST = ' '
    I_STRUCTURE_NAME = I_STRUCTURE_NAME
    I_BACKGROUND_ID = ' '
    i_grid_title = 'VBAP DETAILS'
    I_GRID_SETTINGS = I_GRID_SETTINGS
    IS_LAYOUT = IS_LAYOUT
    it_fieldcat = t_field1[]
    IT_EXCLUDING = IT_EXCLUDING
    IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
    IT_SORT = IT_SORT
    IT_FILTER = IT_FILTER
    IS_SEL_HIDE = IS_SEL_HIDE
    I_DEFAULT = 'X'
    I_SAVE = ' '
    IS_VARIANT = IS_VARIANT
    IT_EVENTS = IT_EVENTS
    IT_EVENT_EXIT = IT_EVENT_EXIT
    IS_PRINT = IS_PRINT
    IS_REPREP_ID = IS_REPREP_ID
    I_SCREEN_START_COLUMN = 0
    I_SCREEN_START_LINE = 0
    I_SCREEN_END_COLUMN = 0
    I_SCREEN_END_LINE = 0
    I_HTML_HEIGHT_TOP = 0
    I_HTML_HEIGHT_END = 0
    IT_ALV_GRAPHICS = IT_ALV_GRAPHICS
    IT_HYPERLINK = IT_HYPERLINK
    IT_ADD_FIELDCAT = IT_ADD_FIELDCAT
    IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
    IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
    ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
    TABLES
    t_outtab = it_vbap
    EXCEPTIONS
    program_error = 1
    OTHERS = 2
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " print_field_data
    FORM F_GUI USING rt_extab TYPE slis_t_extab.
    SET PF-STATUS 'GUI_1'.  "Double click and Create this GUI status and add buttons
    ENDFORM.
    <b><REMOVED BY MODERATOR></b>
    Message was edited by:
            Alvaro Tejada Galindo

  • Alv drilldown-fields are hiding in secondary list-when layout option used

    hey guys,
    i displayed alv grid using fms.
    the basic list has default layout option.
    but when user gives a deault layout,and try to see secondary list,the fields appear as hidden.
    one has to unhide them manualy to see.

    Kumar,
      Check the Field catalog Before displaying Secondary list, If NO_OUT is set for Hidden fields.
    Thanks,
    Kishore

  • I just changed my residence to the US and now I cant register my new US credit card on itunes cause the state list doesnt match to the US states, what should I do?

    I just changed my residence to the US and now I cant register my new US credit card on itunes cause the state list doesnt match to the US states, what should I do?

    Your credit card info, billing address must be the same country as the iTunes store country you registering.
    For example, you can’t have a credit card from a U.S. bank with  a U.S. billing address registered in the iTunes store for China.
    I tried to change my payment information too, but it happened the same, I can change the information but when I get to the state part, it only shows the other country states
    Remove all payment info and save it.
    Then change the iTunes store country to U.S., add a U.S. credit card with a U.S. billing address.
    As previously suggested, if this does not work, contact iTunes store support.
    -> http://www.apple.com/support/itunes/contact/

  • How to create a secondary list of alv grid inside the function module

    Hi All,
    My requirement is to create a RFC function module to display the alv grid of one table.
    i have created that.
    while clicking on the records of the alv it should open the secondary list of another table.
    My problem is it is not fetching the records of the internal table of the primary list since it is created inside the function module(FUNCTION...ENDFUNCTION).
    pls help me on this.
    Thanks in Advance.

    hi,
    READ TABLE sel_sheet INTO wa_sheet INDEX rs_selfield-tabindex.
    here sel_sheet is the internal table for the primary list..
    i called the function module "reuse_lav_grid_display" inside Function...Endfunction.
    so when i am using  READ TABLE sel_sheet INTO wa_sheet INDEX rs_selfield-tabindex.
    inside the user command perform therecords in this internal table is not populating..
    pls help me on this.
    thanks in advance.

  • Problem in displaying 2nd secondary list

    Hi ABAP Gurus,
    Here i got an assignment to develope interactive report (basic list, 1st secondary, 2nd secondary list)
    according to my report i am able to get 1st secondary list perfectly but i am not able to get 2nd secondary list .pls solve my problem
    below is my code.
    *& Report  ZCRPT_MM_MRP
    REPORT  zcrpt_mm_mrp .
    *& Report       : ZRPT_MM_PR_HISTORY                               *
    Dev. Class   : ZCVS                                             *
    Program Name : ZRPT_MM_PR_HISTORY                               *
    Description  : PO History Details List                          *
    Author       : Sujit   Created on : 12.11.2007          *
    SAP Release  : SAP ERP Central Component 5.0                    *
    Tcode        : Req DKIK905199  N-160                            *
                  :     DKIK905248  N-160 For Deletion indicator     *
    S O U R C E   C O D E   C H A N G E   H I S T O R Y             *
    CODE     | AUTHOR     | DATE     |   Description                *
              |            |          |                              *
          TABLE  DECLARATIONS                                        *
    TABLES: ekko,ekpo,mara, makt,ekes,eban,mard,s994.
    Internal tables decleration
    TYPE-POOLS: slis.
    DATA: BEGIN OF it_vbrkvbrp OCCURS 0,
            vbeln TYPE vbrk-vbeln,
            fktyp TYPE vbrk-fktyp,
            matnr TYPE vbrp-matnr,
            fkimg TYPE vbrp-fkimg,
            fklmg TYPE vbrp-fklmg,
            vrkme TYPE vbrp-vrkme,
            meins TYPE vbrp-meins,
            shkzg TYPE vbrp-shkzg,
          END OF it_vbrkvbrp.
    DATA: BEGIN OF it_vbrk OCCURS 0,
            matnr TYPE vbrp-matnr,
            fkimg TYPE vbrp-fkimg,
            meins TYPE vbrp-meins,
          END OF it_vbrk.
    DATA: BEGIN OF it_ekko OCCURS 0,
            ebeln TYPE ekko-ebeln,
            bukrs TYPE ekko-bukrs,
            frggr TYPE ekko-frggr,
            frgsx TYPE ekko-frgsx,
            frgke TYPE ekko-frgke,
            frgzu TYPE ekko-frgzu,
          END OF it_ekko.
    DATA: BEGIN OF it_ekbe OCCURS 0,
          ebeln type ekbe-ebeln,
          ebelp type ekbe-ebelp,
          belnr type ekbe-belnr,
          buzei type ekbe-buzei,
          xblnr type ekbe-xblnr,
          END OF it_ekbe.
    DATA: BEGIN OF it_lips OCCURS 0,
          vbeln type lips-vbeln,
          posnr type lips-posnr,
          matnr type lips-matnr,
          vgbel type lips-vgbel,
          lfimg type lips-lfimg,
          meins type lips-meins,
          END OF it_lips.
    data : it1_lips like it_lips occurs 0 with header line.
    DATA: BEGIN OF itab OCCURS 1 ,
          banfn     LIKE eban-banfn,    " Purchase requisition number
          bnfpo     LIKE eban-bnfpo,    " PR Item Number
          werks     LIKE ekpo-werks,    " Plant
          matnr     LIKE ekpo-matnr,    " Material
          maktx     LIKE makt-maktx,    " Name of Material
          pr_menge  LIKE eban-menge,    " PR Quantity
          meins     LIKE ekpo-meins,    " Unit
          ebeln     LIKE ekpo-ebeln,    " PO No
          bsart     LIKE ekko-bsart,    " Purchasing Document Type
          ebelp     LIKE ekpo-ebelp,    " Item
          menge     LIKE ekpo-menge,    " PO Qty
          grn_menge LIKE ekpo-menge,    " GRN Qty
          trn_menge LIKE ekpo-menge,    " Transit Qty
          bal_menge LIKE ekpo-menge,    " Balance PO Qty
          labst     LIKE mard-labst,    " Valuated stock with unrestricted
          fkimg     LIKE vbrp-fkimg,    " Actual billed quantity
          minbe TYPE marc-minbe,
          mabst TYPE marc-mabst,
          fixkz TYPE eban-fixkz,
          zfixkz(7) TYPE c,
          matkl TYPE mara-matkl,
          mvgr1 TYPE mvke-mvgr1,
          bezei TYPE tvm1t-bezei,
          zconfirm1(3) TYPE c,
          zconfirm2(3) TYPE c,
          zconfirm3(3) TYPE c,
        END OF itab.
    DATA: BEGIN OF itab_sale OCCURS 1 ,
          matnr     LIKE ekpo-matnr,    " Material
          werks     LIKE ekpo-werks,    " Plant
          maktx     LIKE makt-maktx,    " Name of Material
          labst     LIKE mard-labst,    " Valuated stock with unrestricted
        END OF itab_sale.
    DATA : i_eban LIKE eban OCCURS 0 WITH HEADER LINE.
    DATA : del_menge LIKE ekes-menge,
           grn_dabmg LIKE ekes-dabmg.
    DATA: BEGIN OF it_marc OCCURS 0,
            matnr TYPE marc-matnr,
            werks TYPE marc-werks,
            minbe TYPE marc-minbe,
            mabst TYPE marc-mabst,
          END OF it_marc.
    DATA: BEGIN OF it_eban OCCURS 0,
            banfn TYPE eban-banfn,
            bnfpo TYPE eban-bnfpo,
            fixkz TYPE eban-fixkz,
            ebeln type eban-ebeln,
          END OF it_eban.
    DATA: BEGIN OF it_mara OCCURS 0,
            matnr TYPE mara-matnr,
            matkl TYPE mara-matkl,
          END OF it_mara.
    DATA: BEGIN OF it_mvke OCCURS 0,
            matnr TYPE mvke-matnr,
            mvgr1 TYPE mvke-mvgr1,
            mvgr2 TYPE mvke-mvgr2,
            mvgr3 TYPE mvke-mvgr3,
            mvgr4 TYPE mvke-mvgr4,
          END OF it_mvke.
    DATA: BEGIN OF it_tvm1t OCCURS 0,
            mvgr1 TYPE tvm1t-mvgr1,
            bezei TYPE tvm1t-bezei,
          END OF it_tvm1t.
    DATA:  fcat TYPE slis_t_fieldcat_alv,
           fcat1 TYPE slis_t_fieldcat_alv,
           fcat2 TYPE slis_t_fieldcat_alv,
           heading  TYPE slis_t_listheader,
           heading1  TYPE slis_t_listheader,
           heading2  TYPE slis_t_listheader,
           events   TYPE slis_t_event,
           events1   TYPE slis_t_event,
           events2   TYPE slis_t_event,
           repname  LIKE sy-repid.
    DATA: keyinfo  TYPE slis_keyinfo_alv.
    CONSTANTS: formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    CONSTANTS: formname_top_of_page1 TYPE slis_formname VALUE 'TOP_OF_PAGE1'
    CONSTANTS: formname_top_of_page2 TYPE slis_formname VALUE 'TOP_OF_PAGE2'
    RANGES : s_erdat FOR vbrk-erdat.
    DATA: ss_date TYPE mkpf-budat.
    DATA: ss_period(3) TYPE n.
    Screen Selection
    SELECTION-SCREEN BEGIN OF BLOCK  s1 WITH FRAME TITLE text-001.
    *SELECT-OPTIONS : s_ebeln FOR ekpo-ebeln,
                    s_werks FOR ekpo-werks.
    SELECT-OPTIONS : s_banfn FOR eban-banfn,  "Purchase requisition number
                     s_badat FOR eban-badat,  "Requisition (request) date
                     s_matnr FOR eban-matnr,  "Material Number
                     s_werks FOR eban-werks,  "Plant
                     s_lgort FOR eban-lgort,  "Storage Location
                     s_matkl FOR eban-matkl,  "Material group
                     s_flief FOR eban-flief,  "Fixed Vendor
                     s_bsart FOR ekko-bsart NO INTERVALS.   " Purchasing
    SELECTION-SCREEN  END    OF BLOCK  s1 .
    SELECTION-SCREEN BEGIN OF BLOCK  s2 WITH FRAME TITLE text-002.
    PARAMETERS: s_period(3) TYPE n .
    SELECTION-SCREEN  END    OF BLOCK  s2 .
    initialization.
    repname = sy-repid.
      PERFORM build_eventtab  USING events[].
      PERFORM build_eventtab1  USING events1[].
      PERFORM build_eventtab2  USING events2[].
      PERFORM build_comment USING heading[].
      PERFORM build_comment1 USING heading1[].
      PERFORM build_comment2 USING heading2[].
    Strat-of-Selection
    START-OF-SELECTION.
      PERFORM getdata.
      PERFORM getfieldcatalog USING fcat[].
      PERFORM getfieldcatalog1 USING fcat1[].
      PERFORM getfieldcatalog2 USING fcat2[].
      PERFORM alvdisplaydata.
    END-OF-SELECTION.
    *&      Form  getdata
          text
    -->  p1        text
    <--  p2        text
    FORM getdata.
      SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE i_eban
               WHERE banfn IN s_banfn      "Purchase requisition number
               AND   badat IN s_badat      "Requisition (request) date
               AND   matnr IN s_matnr      "Material Number
               AND   werks IN s_werks      "Plant
               AND   lgort IN s_lgort      "Storage Location
               AND   matkl IN s_matkl      "Material group
               AND   flief IN s_flief      "Fixed Vendor
               AND   loekz NE 'X'          "Deletion Pocument
               AND   afnam EQ 'MRP'.       "Name of requisitioner/requester
      IF NOT i_eban[] IS INITIAL.
        LOOP AT i_eban.
          CLEAR itab.
          itab-banfn     =  i_eban-banfn.
          itab-bnfpo     =  i_eban-bnfpo.
          itab-pr_menge  =  i_eban-menge.
          itab-meins     =  i_eban-meins.
          itab-ebeln     =  i_eban-ebeln.
          itab-ebelp     =  i_eban-ebelp.
          itab-matnr     =  i_eban-matnr.
          itab-werks     =  i_eban-werks.
    **----Get Material Description
          IF NOT i_eban-matnr IS INITIAL.
            SELECT SINGLE * FROM  makt
                            WHERE matnr EQ i_eban-matnr.
            IF sy-subrc EQ 0.
              itab-maktx = makt-maktx.
            ENDIF.
          ELSE.
            itab-maktx = i_eban-txz01.
          ENDIF.
    *----Get PO & GRN Quantity
          IF i_eban-ebeln GT 0 AND i_eban-ebelp GT 0.
            SELECT SINGLE * FROM ekpo
                            WHERE ebeln = i_eban-ebeln
                            AND   ebelp = i_eban-ebelp.
            IF sy-subrc EQ 0.
              itab-menge     = ekpo-menge.
            ENDIF.
            SELECT SINGLE * FROM ekko
                            WHERE ebeln = i_eban-ebeln.
            IF sy-subrc EQ 0.
              itab-bsart     = ekko-bsart.
            ENDIF.
    *-------Get GRN Quantity
            CLEAR : del_menge,grn_dabmg.
            IF  ekpo-bstae = '0004'.  " GRN Against InbondDelivery
              SELECT SUM( menge ) SUM( dabmg )
                      FROM ekes
                      INTO (del_menge,grn_dabmg)
                      WHERE ebeln =  i_eban-ebeln
                      AND   ebelp =  i_eban-ebelp
                      AND   ebtyp = 'LA'.
              IF sy-subrc EQ 0.
                itab-grn_menge = grn_dabmg.
                itab-trn_menge = del_menge - grn_dabmg.
              itab-bal_menge = ekpo-menge - del_menge.
                IF itab-bal_menge < 0.
                 itab-bal_menge = 0.
                ENDIF.
              ELSE.
               itab-bal_menge = itab-menge.
              ENDIF.
            ELSE.          " Regular GRN
              SELECT SUM( menge )
                      FROM ekbe
                      INTO (grn_dabmg)
                      WHERE ebeln =  i_eban-ebeln
                      AND   ebelp =  i_eban-ebelp
                      AND   bewtp = 'E'
                      AND   bwart = '101'.
              IF sy-subrc EQ 0.
                itab-grn_menge = grn_dabmg.
              itab-trn_menge = del_menge - grn_dabmg.
              ENDIF.
    For Cancelled GRN
              SELECT SUM( menge )
                      FROM ekbe
                      INTO (grn_dabmg)
                      WHERE ebeln =  i_eban-ebeln
                      AND   ebelp =  i_eban-ebelp
                      AND   bewtp = 'E'
                      AND   bwart = '102'.
              IF sy-subrc EQ 0.
                itab-grn_menge = itab-grn_menge - grn_dabmg.
              itab-trn_menge = del_menge - grn_dabmg.
              ENDIF.
              IF itab-bsart = 'UB'.
                CLEAR : grn_dabmg,grn_dabmg.
                SELECT SUM( menge )
                        FROM ekbe
                        INTO (grn_dabmg)
                        WHERE ebeln =  i_eban-ebeln
                        AND   ebelp =  i_eban-ebelp
                        AND   bewtp = 'U'
                        AND   bwart = '641'.
                IF sy-subrc EQ 0.
                  itab-trn_menge  = grn_dabmg.
                ENDIF.
    For Reversal of Issue Document
                SELECT SUM( menge )
                        FROM ekbe
                        INTO (grn_dabmg)
                        WHERE ebeln =  i_eban-ebeln
                        AND   ebelp =  i_eban-ebelp
                        AND   bewtp = 'U'
                        AND   bwart = '642'.
                IF sy-subrc EQ 0.
                  itab-trn_menge  = itab-trn_menge  - grn_dabmg.
                ENDIF.
                IF itab-grn_menge <> 0.
                  itab-trn_menge = 0.
                ENDIF.
              ENDIF.
    End
            ENDIF.
    *-------End
          ENDIF.
          itab-bal_menge = itab-menge - ( itab-grn_menge + itab-trn_menge ).
          CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
            EXPORTING
              input  = itab-matnr
            IMPORTING
              output = itab-matnr.
          itab_sale-matnr = itab-matnr.
          itab_sale-werks = itab-werks.
          itab_sale-maktx = itab-maktx.
          COLLECT itab_sale.
          APPEND itab.
        ENDLOOP.
      ENDIF.
      IF NOT s_bsart[] IS INITIAL.
        DELETE itab WHERE bsart NOT IN s_bsart.
      ENDIF.
      IF NOT itab_sale IS INITIAL.
        LOOP AT itab_sale.
    *-----Get Sales Quantity
          CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
            EXPORTING
              input  = itab_sale-matnr
            IMPORTING
              output = itab_sale-matnr.
    *-----Change as on 08.12.2007
          SELECT SUM( clabs ) INTO  itab_sale-labst
                              FROM  mchb
                              WHERE matnr = itab_sale-matnr
                              AND   werks = itab_sale-werks.
    *-----End
          MODIFY itab_sale TRANSPORTING labst matnr.
        ENDLOOP.
        LOOP AT itab.
          READ TABLE itab_sale WITH KEY matnr = itab-matnr
                               werks = itab-werks.
          IF sy-subrc = 0.
            CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
              EXPORTING
                input  = itab_sale-matnr
              IMPORTING
                output = itab_sale-matnr.
            MOVE itab_sale-labst TO itab-labst.
          ENDIF.
          MODIFY itab TRANSPORTING labst.
          CLEAR itab.
        ENDLOOP.
      ENDIF.
      CHECK itab[] IS NOT INITIAL.
      SELECT * FROM marc CLIENT SPECIFIED
                              INTO CORRESPONDING FIELDS OF TABLE it_marc
                              FOR ALL ENTRIES IN itab
                              WHERE mandt = sy-mandt
                              AND matnr EQ itab-matnr
                              AND werks EQ itab-werks.
      SELECT * FROM eban CLIENT SPECIFIED
                             INTO CORRESPONDING FIELDS OF TABLE it_eban
                             FOR ALL ENTRIES IN itab
                             WHERE mandt = sy-mandt
                             AND banfn EQ itab-banfn
                             AND bnfpo EQ itab-bnfpo.
      SELECT * FROM mara CLIENT SPECIFIED
                            INTO CORRESPONDING FIELDS OF TABLE it_mara
                            FOR ALL ENTRIES IN itab
                            WHERE mandt = sy-mandt
                            AND matnr EQ itab-matnr.
      SELECT * FROM mvke CLIENT SPECIFIED
                           INTO CORRESPONDING FIELDS OF TABLE it_mvke
                           FOR ALL ENTRIES IN itab
                           WHERE mandt = sy-mandt
                           AND matnr EQ itab-matnr.
      IF sy-subrc = 0.
        SELECT * FROM tvm1t CLIENT SPECIFIED
                       INTO CORRESPONDING FIELDS OF TABLE it_tvm1t
                       FOR ALL ENTRIES IN it_mvke
                       WHERE mandt = sy-mandt
                       AND mvgr1 EQ it_mvke-mvgr1.
      ENDIF.
      IF s_period IS NOT INITIAL.
        ss_period = s_period.
        ss_period = ss_period + 1.
        s_erdat-sign = 'I'.
        s_erdat-option = 'BT'.
        s_erdat-high = sy-datum.
        ss_date = sy-datum - ss_period.
        s_erdat-low = ss_date.
        APPEND s_erdat.
        CLEAR s_erdat.
        SELECT * FROM zcvi_vbrk_vbrp CLIENT SPECIFIED
                             INTO CORRESPONDING FIELDS OF TABLE it_vbrkvbrp
                                     FOR ALL ENTRIES IN itab
                                     WHERE mandt = sy-mandt
                                     AND matnr = itab-matnr
                                     AND   fkart IN ('Z3PS','ZVIT',
                                           'ZVDT','ZFRV',
                                           'ZDRV','ZCMR')
                                     AND fkdat IN s_erdat
                                     AND fksto EQ space
                                     AND sfakn EQ space
                                     AND rfbsk NE 'E'
                                     AND fkimg NE 0.
        LOOP AT it_vbrkvbrp.
          IF it_vbrkvbrp-fktyp NE 'L'.
            DELETE it_vbrkvbrp.
            CONTINUE.
          ENDIF.
          IF it_vbrkvbrp-vrkme NE it_vbrkvbrp-meins.
            it_vbrkvbrp-fkimg = it_vbrkvbrp-fklmg.
            it_vbrkvbrp-meins = it_vbrkvbrp-vrkme.
          ENDIF.
          IF it_vbrkvbrp-shkzg = 'X'.
            it_vbrkvbrp-fkimg = it_vbrkvbrp-fkimg * -1.
          ENDIF.
          it_vbrk-matnr = it_vbrkvbrp-matnr.
          it_vbrk-fkimg = it_vbrkvbrp-fkimg.
          it_vbrk-meins = it_vbrkvbrp-meins.
          IF it_vbrk[] IS INITIAL.
            APPEND it_vbrk.
            CLEAR it_vbrk.
          ELSE.
            COLLECT it_vbrk.
            CLEAR it_vbrk.
          ENDIF.
        ENDLOOP.
      ENDIF.
      SORT it_vbrkvbrp BY matnr.
      SELECT * FROM ekko CLIENT SPECIFIED
                                 INTO CORRESPONDING FIELDS OF TABLE it_ekko
                                  FOR ALL ENTRIES IN itab
                                  WHERE mandt = sy-mandt
                                  AND ebeln = itab-ebeln.
      SORT it_ekko BY ebeln.
      LOOP AT itab.
        READ TABLE it_ekko BINARY SEARCH WITH KEY
                                                ebeln = itab-ebeln.
        IF sy-subrc = 0.
          IF it_ekko-frgke = 'R'.
            itab-zconfirm1 = 'YES'.
            itab-zconfirm2 = 'YES'.
            itab-zconfirm3 = 'YES'.
          ELSEIF it_ekko-frgzu = 'X'.
            itab-zconfirm1 = 'YES'.
          ELSEIF it_ekko-frgzu = 'XX'.
            itab-zconfirm1 = 'YES'.
            itab-zconfirm2 = 'YES'.
          ENDIF.
        ENDIF.
        IF s_period IS NOT INITIAL.
          READ TABLE it_vbrk BINARY SEARCH
                                           WITH KEY matnr = itab-matnr.
          IF sy-subrc = 0.
            itab-fkimg = it_vbrk-fkimg.
          ENDIF.
        ENDIF.
        READ TABLE it_marc WITH KEY matnr = itab-matnr
                                    werks = itab-werks.
        IF sy-subrc = 0.
          MOVE it_marc-minbe TO itab-minbe.
          MOVE it_marc-mabst TO itab-mabst.
        ENDIF.
        READ TABLE it_eban WITH KEY banfn = itab-banfn
                                    bnfpo = itab-bnfpo.
        IF sy-subrc = 0.
          IF it_eban-fixkz EQ 'X'.
            itab-zfixkz = 'Firmed'.
          ENDIF.
        ENDIF.
        READ TABLE it_mara WITH KEY matnr = itab-matnr.
        IF sy-subrc = 0.
          MOVE it_mara-matkl TO itab-matkl.
        ENDIF.
        READ TABLE it_mvke WITH KEY matnr = itab-matnr.
        IF sy-subrc = 0.
          MOVE it_mvke-mvgr1 TO itab-mvgr1.
          READ TABLE it_tvm1t WITH KEY mvgr1 = itab-mvgr1.
          IF sy-subrc = 0.
            MOVE it_tvm1t-bezei TO itab-bezei.
          ENDIF.
        ENDIF.
        MODIFY itab.
        CLEAR itab.
      ENDLOOP.
    ENDFORM.                    " getdata
    *&      Form  build_eventtab
          text
         -->P_EVENTS[]  text
    FORM build_eventtab  USING   p_events TYPE slis_t_event.
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_events.
      READ TABLE p_events WITH KEY name = slis_ev_top_of_page
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE formname_top_of_page TO ls_event-form.
        APPEND ls_event TO p_events.
      ENDIF.
    ENDFORM.                    " build_eventtab
    *&      Form  build_comment
          text
         -->P_HEADING[]  text
    FORM build_comment  USING    p_heading TYPE slis_t_listheader.
      DATA: hline TYPE slis_listheader.
      CLEAR: hline.
      hline-info = 'Purchase Requision History'.
      hline-typ  = 'H'.
      APPEND hline TO p_heading.
      CLEAR hline.
    ENDFORM.                    " build_comment
    *&      Form  getfieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM getfieldcatalog USING  p_fcat TYPE slis_t_fieldcat_alv.
      DATA : w_fcat TYPE slis_fieldcat_alv.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BANFN'.
      w_fcat-seltext_l    = 'PR No '.
      w_fcat-key          = 'X'.
      w_fcat-col_pos      = 1.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BNFPO'.
      w_fcat-seltext_l    = 'PR Item '.
      w_fcat-key          = 'X'.
      w_fcat-col_pos      = 2.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MATNR'.
      w_fcat-seltext_l    = 'Material '.
      w_fcat-col_pos      = 3.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MAKTX'.
      w_fcat-seltext_l    = 'Name of the Mateiral '.
      w_fcat-col_pos      = 4.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'WERKS'.
      w_fcat-seltext_l    = 'Plant '.
      w_fcat-col_pos      = 5.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'EBELN'.
      w_fcat-seltext_l    = 'PO No '.
      w_fcat-hotspot        = 'X'.
      w_fcat-col_pos      = 6.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'EBELP'.
      w_fcat-seltext_l    = 'PO Item '.
      w_fcat-col_pos      = 7.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'PR_MENGE'.
      w_fcat-seltext_l    = 'PR Qty '.
      w_fcat-col_pos      = 8.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MEINS'.
      w_fcat-seltext_l    = 'Unit'.
      w_fcat-col_pos      = 9.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MENGE'.
      w_fcat-seltext_l    = 'PO Quantity '.
      w_fcat-col_pos      = 10.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'GRN_MENGE'.
      w_fcat-seltext_l    = 'GRN Qty '.
      w_fcat-col_pos      = 11.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'TRN_MENGE'.
      w_fcat-seltext_l    = 'Transit Qty '.
      w_fcat-col_pos      = 12.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BAL_MENGE'.
      w_fcat-seltext_l    = 'Balance PO Qty '.
      w_fcat-col_pos      = 13.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'LABST'.
      w_fcat-seltext_l    = 'Current Stock'.
      w_fcat-col_pos      = 14.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'FKIMG'.
      w_fcat-seltext_l    = 'Sales Qty '.
      w_fcat-col_pos      = 15.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MINBE'.
      w_fcat-seltext_l    = 'Reorder Point'.
      w_fcat-col_pos      = 16.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MABST'.
      w_fcat-seltext_l    = 'Maximum stock level'.
      w_fcat-col_pos      = 17.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZFIXKZ'.
      w_fcat-seltext_l    = 'Fixed Indicator'.
      w_fcat-col_pos      = 18.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MATKL'.
      w_fcat-seltext_l    = 'Design'.
      w_fcat-col_pos      = 19.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MVGR1'.
      w_fcat-seltext_l    = 'Size'.
      w_fcat-col_pos      = 20.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BEZEI'.
      w_fcat-seltext_l    = 'Size Desc.'.
      w_fcat-col_pos      = 21.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'FKIMG'.
      w_fcat-seltext_l    = 'Sales Qty '.
      w_fcat-col_pos      = 22.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZCONFIRM1'.
      w_fcat-seltext_l    = 'Release1'.
      w_fcat-col_pos      = 23.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZCONFIRM2'.
      w_fcat-seltext_l    = 'Release2'.
      w_fcat-col_pos      = 24.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZCONFIRM3'.
      w_fcat-seltext_l    = 'Release3'.
      w_fcat-col_pos      = 25.
      APPEND w_fcat TO fcat.
    ENDFORM.                    " getfieldcatalog
    *&      Form  alvdisplaydata
          text
    -->  p1        text
    <--  p2        text
    FORM alvdisplaydata .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repname
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = fcat
          it_events               = events[]
        TABLES
          t_outtab                = itab.
      IF sy-subrc <> 0.
        WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                    " alvdisplaydata
          FORM TOP_OF_PAGE                                              *
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = heading.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  build_eventtab1
          text
         -->P_EVENTS[]  text
    FORM build_eventtab1  USING   p_events1 TYPE slis_t_event.
      DATA: ls_event1 TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_events1.
      READ TABLE p_events1 WITH KEY name = slis_ev_top_of_page
                               INTO ls_event1.
      IF sy-subrc = 0.
        MOVE formname_top_of_page1 TO ls_event1-form.
        APPEND ls_event1 TO p_events1.
      ENDIF.
    endform.
    *&      Form  build_comment
          text
         -->P_HEADING[]  text
    FORM build_comment1  USING    p_heading1 TYPE slis_t_listheader.
      DATA: hline1 TYPE slis_listheader.
      hline1-info = '1 Secondary List'.
      hline1-typ  = 'H'.
      APPEND hline1 TO p_heading1.
      CLEAR hline1.
    ENDFORM.                    " build_comment
    *&      Form  getfieldcatalog1
          text
         -->P_FCAT1[]  text
    form getfieldcatalog1  using    p_fcat1 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat1 TYPE slis_fieldcat_alv.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'VBELN'.
      w_fcat1-seltext_l    = 'Pr.No'.
      w_fcat1-hotspot   = 'X'.
      w_fcat1-col_pos      = 1.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'POSNR'.
      w_fcat1-seltext_l    = 'PR Item'.
      w_fcat1-col_pos      = 2.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'MATNR'.
      w_fcat1-seltext_l    = 'Material'.
      w_fcat1-col_pos      = 3.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'LFIMG'.
      w_fcat1-seltext_l    = 'Actual quantity delivered'.
      w_fcat1-col_pos      = 4.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'MEINS'.
      w_fcat1-seltext_l    = 'Base Unit of Measure'.
      w_fcat1-col_pos      = 5.
      APPEND w_fcat1 to fcat1.
    endform.                    " getfieldcatalog1
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM      text
         -->RS_SELFIELD  text
    FORM user_command  USING r_ucomm LIKE sy-ucomm
          rs_selfield TYPE slis_selfield.
    READ TABLE itab INDEX rs_selfield-tabindex.
      IF sy-subrc EQ 0.
      select vbeln
             posnr
             matnr
             vgbel
             lfimg
             meins from lips into table it_lips
             where vgbel = itab-ebeln.
      ENDIF.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repname
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = fcat1
          it_events               = events1[]
        TABLES
          t_outtab                = it_lips.
      IF sy-subrc <> 0.
        WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                    "USER_COMMAND
          FORM TOP_OF_PAGE1                                              *
    FORM top_of_page1.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = heading1.
    ENDFORM.                    "TOP_OF_PAGE1
    *&      Form  build_eventtab1
          text
         -->P_EVENTS[]  text
    FORM build_eventtab2  USING   p_events2 TYPE slis_t_event.
      DATA: ls_event2 TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_events2.
      READ TABLE p_events2 WITH KEY name = slis_ev_top_of_page
                               INTO ls_event2.
      IF sy-subrc = 0.
        MOVE formname_top_of_page2 TO ls_event2-form.
        APPEND ls_event2 TO p_events2.
      ENDIF.
    endform.
    *&      Form  build_comment
          text
         -->P_HEADING[]  text
    FORM build_comment2  USING    p_heading2 TYPE slis_t_listheader.
      DATA: hline2 TYPE slis_listheader.
      hline2-info = '2 Secondary List'.
      hline2-typ  = 'H'.
      APPEND hline2 TO p_heading2.
      CLEAR hline2.
    ENDFORM.                    " build_comment
    *&      Form  getfieldcatalog1
          text
         -->P_FCAT1[]  text
    form getfieldcatalog2  using    p_fcat2 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat2 TYPE slis_fieldcat_alv.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'EBELN'.
      w_fcat2-seltext_l    = 'Pr.Doc No'.
      w_fcat2-col_pos      = 1.
      APPEND w_fcat2 to fcat2.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'EBELP'.
      w_fcat2-seltext_l    = 'PR Doc Item'.
      w_fcat2-col_pos      = 2.
      APPEND w_fcat2 to fcat2.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'BELNR'.
      w_fcat2-seltext_l    = 'No.Mat Doc'.
      w_fcat2-col_pos      = 3.
      APPEND w_fcat2 to fcat2.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'BUZEI'.
      w_fcat2-seltext_l    = 'Item in Mat Doc'.

    Hi,
    You did mistakes hear.
    check for >>>>
    *& Report ZCRPT_MM_MRP
    REPORT zcrpt_mm_mrp .
    *& Report : ZRPT_MM_PR_HISTORY *
    Dev. Class : ZCVS *
    Program Name : ZRPT_MM_PR_HISTORY *
    Description : PO History Details List *
    Author : Sujit Created on : 12.11.2007 *
    SAP Release : SAP ERP Central Component 5.0 *
    Tcode : Req DKIK905199 N-160 *
    : DKIK905248 N-160 For Deletion indicator *
    S O U R C E C O D E C H A N G E H I S T O R Y *
    CODE | AUTHOR | DATE | Description *
    | | | *
    TABLE DECLARATIONS *
    TABLES: ekko,ekpo,mara, makt,ekes,eban,mard,s994.
    Internal tables decleration
    TYPE-POOLS: slis.
    DATA: BEGIN OF it_vbrkvbrp OCCURS 0,
    vbeln TYPE vbrk-vbeln,
    fktyp TYPE vbrk-fktyp,
    matnr TYPE vbrp-matnr,
    fkimg TYPE vbrp-fkimg,
    fklmg TYPE vbrp-fklmg,
    vrkme TYPE vbrp-vrkme,
    meins TYPE vbrp-meins,
    shkzg TYPE vbrp-shkzg,
    END OF it_vbrkvbrp.
    DATA: BEGIN OF it_vbrk OCCURS 0,
    matnr TYPE vbrp-matnr,
    fkimg TYPE vbrp-fkimg,
    meins TYPE vbrp-meins,
    END OF it_vbrk.
    DATA: BEGIN OF it_ekko OCCURS 0,
    ebeln TYPE ekko-ebeln,
    bukrs TYPE ekko-bukrs,
    frggr TYPE ekko-frggr,
    frgsx TYPE ekko-frgsx,
    frgke TYPE ekko-frgke,
    frgzu TYPE ekko-frgzu,
    END OF it_ekko.
    DATA: BEGIN OF it_ekbe OCCURS 0,
    ebeln type ekbe-ebeln,
    ebelp type ekbe-ebelp,
    belnr type ekbe-belnr,
    buzei type ekbe-buzei,
    xblnr type ekbe-xblnr,
    END OF it_ekbe.
    DATA: BEGIN OF it_lips OCCURS 0,
    vbeln type lips-vbeln,
    posnr type lips-posnr,
    matnr type lips-matnr,
    vgbel type lips-vgbel,
    lfimg type lips-lfimg,
    meins type lips-meins,
    END OF it_lips.
    data : it1_lips like it_lips occurs 0 with header line.
    DATA: BEGIN OF itab OCCURS 1 ,
    banfn LIKE eban-banfn, " Purchase requisition number
    bnfpo LIKE eban-bnfpo, " PR Item Number
    werks LIKE ekpo-werks, " Plant
    matnr LIKE ekpo-matnr, " Material
    maktx LIKE makt-maktx, " Name of Material
    pr_menge LIKE eban-menge, " PR Quantity
    meins LIKE ekpo-meins, " Unit
    ebeln LIKE ekpo-ebeln, " PO No
    bsart LIKE ekko-bsart, " Purchasing Document Type
    ebelp LIKE ekpo-ebelp, " Item
    menge LIKE ekpo-menge, " PO Qty
    grn_menge LIKE ekpo-menge, " GRN Qty
    trn_menge LIKE ekpo-menge, " Transit Qty
    bal_menge LIKE ekpo-menge, " Balance PO Qty
    labst LIKE mard-labst, " Valuated stock with unrestricted
    fkimg LIKE vbrp-fkimg, " Actual billed quantity
    minbe TYPE marc-minbe,
    mabst TYPE marc-mabst,
    fixkz TYPE eban-fixkz,
    zfixkz(7) TYPE c,
    matkl TYPE mara-matkl,
    mvgr1 TYPE mvke-mvgr1,
    bezei TYPE tvm1t-bezei,
    zconfirm1(3) TYPE c,
    zconfirm2(3) TYPE c,
    zconfirm3(3) TYPE c,
    END OF itab.
    DATA: BEGIN OF itab_sale OCCURS 1 ,
    matnr LIKE ekpo-matnr, " Material
    werks LIKE ekpo-werks, " Plant
    maktx LIKE makt-maktx, " Name of Material
    labst LIKE mard-labst, " Valuated stock with unrestricted
    END OF itab_sale.
    DATA : i_eban LIKE eban OCCURS 0 WITH HEADER LINE.
    DATA : del_menge LIKE ekes-menge,
    grn_dabmg LIKE ekes-dabmg.
    DATA: BEGIN OF it_marc OCCURS 0,
    matnr TYPE marc-matnr,
    werks TYPE marc-werks,
    minbe TYPE marc-minbe,
    mabst TYPE marc-mabst,
    END OF it_marc.
    DATA: BEGIN OF it_eban OCCURS 0,
    banfn TYPE eban-banfn,
    bnfpo TYPE eban-bnfpo,
    fixkz TYPE eban-fixkz,
    ebeln type eban-ebeln,
    END OF it_eban.
    DATA: BEGIN OF it_mara OCCURS 0,
    matnr TYPE mara-matnr,
    matkl TYPE mara-matkl,
    END OF it_mara.
    DATA: BEGIN OF it_mvke OCCURS 0,
    matnr TYPE mvke-matnr,
    mvgr1 TYPE mvke-mvgr1,
    mvgr2 TYPE mvke-mvgr2,
    mvgr3 TYPE mvke-mvgr3,
    mvgr4 TYPE mvke-mvgr4,
    END OF it_mvke.
    DATA: BEGIN OF it_tvm1t OCCURS 0,
    mvgr1 TYPE tvm1t-mvgr1,
    bezei TYPE tvm1t-bezei,
    END OF it_tvm1t.
    DATA: fcat TYPE slis_t_fieldcat_alv,
    fcat1 TYPE slis_t_fieldcat_alv,
    fcat2 TYPE slis_t_fieldcat_alv,
    heading TYPE slis_t_listheader,
    heading1 TYPE slis_t_listheader,
    heading2 TYPE slis_t_listheader,
    events TYPE slis_t_event,
    events1 TYPE slis_t_event,
    events2 TYPE slis_t_event,
    repname LIKE sy-repid.
    DATA: keyinfo TYPE slis_keyinfo_alv.
    CONSTANTS: formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    CONSTANTS: formname_top_of_page1 TYPE slis_formname VALUE 'TOP_OF_PAGE1'
    CONSTANTS: formname_top_of_page2 TYPE slis_formname VALUE 'TOP_OF_PAGE2'
    RANGES : s_erdat FOR vbrk-erdat.
    DATA: ss_date TYPE mkpf-budat.
    DATA: ss_period(3) TYPE n.
    Screen Selection
    SELECTION-SCREEN BEGIN OF BLOCK s1 WITH FRAME TITLE text-001.
    *SELECT-OPTIONS : s_ebeln FOR ekpo-ebeln,
    s_werks FOR ekpo-werks.
    SELECT-OPTIONS : s_banfn FOR eban-banfn, "Purchase requisition number
    s_badat FOR eban-badat, "Requisition (request) date
    s_matnr FOR eban-matnr, "Material Number
    s_werks FOR eban-werks, "Plant
    s_lgort FOR eban-lgort, "Storage Location
    s_matkl FOR eban-matkl, "Material group
    s_flief FOR eban-flief, "Fixed Vendor
    s_bsart FOR ekko-bsart NO INTERVALS. " Purchasing
    SELECTION-SCREEN END OF BLOCK s1 .
    SELECTION-SCREEN BEGIN OF BLOCK s2 WITH FRAME TITLE text-002.
    PARAMETERS: s_period(3) TYPE n .
    SELECTION-SCREEN END OF BLOCK s2 .
    initialization.
    repname = sy-repid.
    PERFORM build_eventtab USING events[].
    PERFORM build_eventtab1 USING events1[].
    PERFORM build_eventtab2 USING events2[].
    PERFORM build_comment USING heading[].
    PERFORM build_comment1 USING heading1[].
    PERFORM build_comment2 USING heading2[].
    Strat-of-Selection
    START-OF-SELECTION.
    PERFORM getdata.
    PERFORM getfieldcatalog USING fcat[].
    PERFORM getfieldcatalog1 USING fcat1[].
    PERFORM getfieldcatalog2 USING fcat2[].
    PERFORM alvdisplaydata.
    END-OF-SELECTION.
    *& Form getdata
    text
    --> p1 text
    <-- p2 text
    FORM getdata.
    SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE i_eban
    WHERE banfn IN s_banfn "Purchase requisition number
    AND badat IN s_badat "Requisition (request) date
    AND matnr IN s_matnr "Material Number
    AND werks IN s_werks "Plant
    AND lgort IN s_lgort "Storage Location
    AND matkl IN s_matkl "Material group
    AND flief IN s_flief "Fixed Vendor
    AND loekz NE 'X' "Deletion Pocument
    AND afnam EQ 'MRP'. "Name of requisitioner/requester
    IF NOT i_eban[] IS INITIAL.
    LOOP AT i_eban.
    CLEAR itab.
    itab-banfn = i_eban-banfn.
    itab-bnfpo = i_eban-bnfpo.
    itab-pr_menge = i_eban-menge.
    itab-meins = i_eban-meins.
    itab-ebeln = i_eban-ebeln.
    itab-ebelp = i_eban-ebelp.
    itab-matnr = i_eban-matnr.
    itab-werks = i_eban-werks.
    **----Get Material Description
    IF NOT i_eban-matnr IS INITIAL.
    SELECT SINGLE * FROM makt
    WHERE matnr EQ i_eban-matnr.
    IF sy-subrc EQ 0.
    itab-maktx = makt-maktx.
    ENDIF.
    ELSE.
    itab-maktx = i_eban-txz01.
    ENDIF.
    *----Get PO & GRN Quantity
    IF i_eban-ebeln GT 0 AND i_eban-ebelp GT 0.
    SELECT SINGLE * FROM ekpo
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp.
    IF sy-subrc EQ 0.
    itab-menge = ekpo-menge.
    ENDIF.
    SELECT SINGLE * FROM ekko
    WHERE ebeln = i_eban-ebeln.
    IF sy-subrc EQ 0.
    itab-bsart = ekko-bsart.
    ENDIF.
    *-------Get GRN Quantity
    CLEAR : del_menge,grn_dabmg.
    IF ekpo-bstae = '0004'. " GRN Against InbondDelivery
    SELECT SUM( menge ) SUM( dabmg )
    FROM ekes
    INTO (del_menge,grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND ebtyp = 'LA'.
    IF sy-subrc EQ 0.
    itab-grn_menge = grn_dabmg.
    itab-trn_menge = del_menge - grn_dabmg.
    itab-bal_menge = ekpo-menge - del_menge.
    IF itab-bal_menge < 0.
    itab-bal_menge = 0.
    ENDIF.
    ELSE.
    itab-bal_menge = itab-menge.
    ENDIF.
    ELSE. " Regular GRN
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'E'
    AND bwart = '101'.
    IF sy-subrc EQ 0.
    itab-grn_menge = grn_dabmg.
    itab-trn_menge = del_menge - grn_dabmg.
    ENDIF.
    For Cancelled GRN
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'E'
    AND bwart = '102'.
    IF sy-subrc EQ 0.
    itab-grn_menge = itab-grn_menge - grn_dabmg.
    itab-trn_menge = del_menge - grn_dabmg.
    ENDIF.
    IF itab-bsart = 'UB'.
    CLEAR : grn_dabmg,grn_dabmg.
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'U'
    AND bwart = '641'.
    IF sy-subrc EQ 0.
    itab-trn_menge = grn_dabmg.
    ENDIF.
    For Reversal of Issue Document
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'U'
    AND bwart = '642'.
    IF sy-subrc EQ 0.
    itab-trn_menge = itab-trn_menge - grn_dabmg.
    ENDIF.
    IF itab-grn_menge <> 0.
    itab-trn_menge = 0.
    ENDIF.
    ENDIF.
    End
    ENDIF.
    *-------End
    ENDIF.
    itab-bal_menge = itab-menge - ( itab-grn_menge + itab-trn_menge ).
    CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
    EXPORTING
    input = itab-matnr
    IMPORTING
    output = itab-matnr.
    itab_sale-matnr = itab-matnr.
    itab_sale-werks = itab-werks.
    itab_sale-maktx = itab-maktx.
    COLLECT itab_sale.
    APPEND itab.
    ENDLOOP.
    ENDIF.
    IF NOT s_bsart[] IS INITIAL.
    DELETE itab WHERE bsart NOT IN s_bsart.
    ENDIF.
    IF NOT itab_sale IS INITIAL.
    LOOP AT itab_sale.
    *-----Get Sales Quantity
    CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
    EXPORTING
    input = itab_sale-matnr
    IMPORTING
    output = itab_sale-matnr.
    *-----Change as on 08.12.2007
    SELECT SUM( clabs ) INTO itab_sale-labst
    FROM mchb
    WHERE matnr = itab_sale-matnr
    AND werks = itab_sale-werks.
    *-----End
    MODIFY itab_sale TRANSPORTING labst matnr.
    ENDLOOP.
    LOOP AT itab.
    READ TABLE itab_sale WITH KEY matnr = itab-matnr
    werks = itab-werks.
    IF sy-subrc = 0.
    CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
    EXPORTING
    input = itab_sale-matnr
    IMPORTING
    output = itab_sale-matnr.
    MOVE itab_sale-labst TO itab-labst.
    ENDIF.
    MODIFY itab TRANSPORTING labst.
    CLEAR itab.
    ENDLOOP.
    ENDIF.
    CHECK itab[] IS NOT INITIAL.
    SELECT * FROM marc CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_marc
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr EQ itab-matnr
    AND werks EQ itab-werks.
    SELECT * FROM eban CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_eban
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND banfn EQ itab-banfn
    AND bnfpo EQ itab-bnfpo.
    SELECT * FROM mara CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_mara
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr EQ itab-matnr.
    SELECT * FROM mvke CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_mvke
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr EQ itab-matnr.
    IF sy-subrc = 0.
    SELECT * FROM tvm1t CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_tvm1t
    FOR ALL ENTRIES IN it_mvke
    WHERE mandt = sy-mandt
    AND mvgr1 EQ it_mvke-mvgr1.
    ENDIF.
    IF s_period IS NOT INITIAL.
    ss_period = s_period.
    ss_period = ss_period + 1.
    s_erdat-sign = 'I'.
    s_erdat-option = 'BT'.
    s_erdat-high = sy-datum.
    ss_date = sy-datum - ss_period.
    s_erdat-low = ss_date.
    APPEND s_erdat.
    CLEAR s_erdat.
    SELECT * FROM zcvi_vbrk_vbrp CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_vbrkvbrp
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr = itab-matnr
    AND fkart IN ('Z3PS','ZVIT',
    'ZVDT','ZFRV',
    'ZDRV','ZCMR')
    AND fkdat IN s_erdat
    AND fksto EQ space
    AND sfakn EQ space
    AND rfbsk NE 'E'
    AND fkimg NE 0.
    LOOP AT it_vbrkvbrp.
    IF it_vbrkvbrp-fktyp NE 'L'.
    DELETE it_vbrkvbrp.
    CONTINUE.
    ENDIF.
    IF it_vbrkvbrp-vrkme NE it_vbrkvbrp-meins.
    it_vbrkvbrp-fkimg = it_vbrkvbrp-fklmg.
    it_vbrkvbrp-meins = it_vbrkvbrp-vrkme.
    ENDIF.
    IF it_vbrkvbrp-shkzg = 'X'.
    it_vbrkvbrp-fkimg = it_vbrkvbrp-fkimg * -1.
    ENDIF.
    it_vbrk-matnr = it_vbrkvbrp-matnr.
    it_vbrk-fkimg = it_vbrkvbrp-fkimg.
    it_vbrk-meins = it_vbrkvbrp-meins.
    IF it_vbrk[] IS INITIAL.
    APPEND it_vbrk.
    CLEAR it_vbrk.
    ELSE.
    COLLECT it_vbrk.
    CLEAR it_vbrk.
    ENDIF.
    ENDLOOP.
    ENDIF.
    SORT it_vbrkvbrp BY matnr.
    SELECT * FROM ekko CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_ekko
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND ebeln = itab-ebeln.
    SORT it_ekko BY ebeln.
    LOOP AT itab.
    READ TABLE it_ekko BINARY SEARCH WITH KEY
    ebeln = itab-ebeln.
    IF sy-subrc = 0.
    IF it_ekko-frgke = 'R'.
    itab-zconfirm1 = 'YES'.
    itab-zconfirm2 = 'YES'.
    itab-zconfirm3 = 'YES'.
    ELSEIF it_ekko-frgzu = 'X'.
    itab-zconfirm1 = 'YES'.
    ELSEIF it_ekko-frgzu = 'XX'.
    itab-zconfirm1 = 'YES'.
    itab-zconfirm2 = 'YES'.
    ENDIF.
    ENDIF.
    IF s_period IS NOT INITIAL.
    READ TABLE it_vbrk BINARY SEARCH
    WITH KEY matnr = itab-matnr.
    IF sy-subrc = 0.
    itab-fkimg = it_vbrk-fkimg.
    ENDIF.
    ENDIF.
    READ TABLE it_marc WITH KEY matnr = itab-matnr
    werks = itab-werks.
    IF sy-subrc = 0.
    MOVE it_marc-minbe TO itab-minbe.
    MOVE it_marc-mabst TO itab-mabst.
    ENDIF.
    READ TABLE it_eban WITH KEY banfn = itab-banfn
    bnfpo = itab-bnfpo.
    IF sy-subrc = 0.
    IF it_eban-fixkz EQ 'X'.
    itab-zfixkz = 'Firmed'.
    ENDIF.
    ENDIF.
    READ TABLE it_mara WITH KEY matnr = itab-matnr.
    IF sy-subrc = 0.
    MOVE it_mara-matkl TO itab-matkl.
    ENDIF.
    READ TABLE it_mvke WITH KEY matnr = itab-matnr.
    IF sy-subrc = 0.
    MOVE it_mvke-mvgr1 TO itab-mvgr1.
    READ TABLE it_tvm1t WITH KEY mvgr1 = itab-mvgr1.
    IF sy-subrc = 0.
    MOVE it_tvm1t-bezei TO itab-bezei.
    ENDIF.
    ENDIF.
    MODIFY itab.
    CLEAR itab.
    ENDLOOP.
    ENDFORM. " getdata
    *& Form build_eventtab
    text
    -->P_EVENTS[] text
    FORM build_eventtab USING p_events TYPE slis_t_event.
    DATA: ls_event TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = p_events.
    READ TABLE p_events WITH KEY name = slis_ev_top_of_page
    INTO ls_event.
    IF sy-subrc = 0.
    MOVE formname_top_of_page TO ls_event-form.
    APPEND ls_event TO p_events.
    ENDIF.
    ENDFORM. " build_eventtab
    *& Form build_comment
    text
    -->P_HEADING[] text
    FORM build_comment USING p_heading TYPE slis_t_listheader.
    DATA: hline TYPE slis_listheader.
    CLEAR: hline.
    hline-info = 'Purchase Requision History'.
    hline-typ = 'H'.
    APPEND hline TO p_heading.
    CLEAR hline.
    ENDFORM. " build_comment
    *& Form getfieldcatalog
    text
    --> p1 text
    <-- p2 text
    FORM getfieldcatalog USING p_fcat TYPE slis_t_fieldcat_alv.
    DATA : w_fcat TYPE slis_fieldcat_alv.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BANFN'.
    w_fcat-seltext_l = 'PR No '.
    w_fcat-key = 'X'.
    w_fcat-col_pos = 1.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BNFPO'.
    w_fcat-seltext_l = 'PR Item '.
    w_fcat-key = 'X'.
    w_fcat-col_pos = 2.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MATNR'.
    w_fcat-seltext_l = 'Material '.
    w_fcat-col_pos = 3.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MAKTX'.
    w_fcat-seltext_l = 'Name of the Mateiral '.
    w_fcat-col_pos = 4.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'WERKS'.
    w_fcat-seltext_l = 'Plant '.
    w_fcat-col_pos = 5.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'EBELN'.
    w_fcat-seltext_l = 'PO No '.
    w_fcat-hotspot = 'X'.
    w_fcat-col_pos = 6.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'EBELP'.
    w_fcat-seltext_l = 'PO Item '.
    w_fcat-col_pos = 7.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'PR_MENGE'.
    w_fcat-seltext_l = 'PR Qty '.
    w_fcat-col_pos = 8.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MEINS'.
    w_fcat-seltext_l = 'Unit'.
    w_fcat-col_pos = 9.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MENGE'.
    w_fcat-seltext_l = 'PO Quantity '.
    w_fcat-col_pos = 10.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'GRN_MENGE'.
    w_fcat-seltext_l = 'GRN Qty '.
    w_fcat-col_pos = 11.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'TRN_MENGE'.
    w_fcat-seltext_l = 'Transit Qty '.
    w_fcat-col_pos = 12.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BAL_MENGE'.
    w_fcat-seltext_l = 'Balance PO Qty '.
    w_fcat-col_pos = 13.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'LABST'.
    w_fcat-seltext_l = 'Current Stock'.
    w_fcat-col_pos = 14.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'FKIMG'.
    w_fcat-seltext_l = 'Sales Qty '.
    w_fcat-col_pos = 15.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MINBE'.
    w_fcat-seltext_l = 'Reorder Point'.
    w_fcat-col_pos = 16.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MABST'.
    w_fcat-seltext_l = 'Maximum stock level'.
    w_fcat-col_pos = 17.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZFIXKZ'.
    w_fcat-seltext_l = 'Fixed Indicator'.
    w_fcat-col_pos = 18.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MATKL'.
    w_fcat-seltext_l = 'Design'.
    w_fcat-col_pos = 19.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MVGR1'.
    w_fcat-seltext_l = 'Size'.
    w_fcat-col_pos = 20.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BEZEI'.
    w_fcat-seltext_l = 'Size Desc.'.
    w_fcat-col_pos = 21.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'FKIMG'.
    w_fcat-seltext_l = 'Sales Qty '.
    w_fcat-col_pos = 22.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZCONFIRM1'.
    w_fcat-seltext_l = 'Release1'.
    w_fcat-col_pos = 23.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZCONFIRM2'.
    w_fcat-seltext_l = 'Release2'.
    w_fcat-col_pos = 24.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZCONFIRM3'.
    w_fcat-seltext_l = 'Release3'.
    w_fcat-col_pos = 25.
    APPEND w_fcat TO fcat.
    ENDFORM. " getfieldcatalog
    *& Form alvdisplaydata
    text
    --> p1 text
    <-- p2 text
    FORM alvdisplaydata .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = repname
    i_callback_user_command = 'USER_COMMAND'
    it_fieldcat = fcat
    it_events = events[]
    TABLES
    t_outtab = itab.
    IF sy-subrc <> 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    ENDFORM. " alvdisplaydata
    FORM TOP_OF_PAGE *
    FORM top_of_page.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = heading.
    ENDFORM. "TOP_OF_PAGE
    *& Form build_eventtab1
    text
    -->P_EVENTS[] text
    FORM build_eventtab1 USING p_events1 TYPE slis_t_event.
    DATA: ls_event1 TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = p_events1.
    READ TABLE p_events1 WITH KEY name = slis_ev_top_of_page
    INTO ls_event1.
    IF sy-subrc = 0.
    MOVE formname_top_of_page1 TO ls_event1-form.
    APPEND ls_event1 TO p_events1.
    ENDIF.
    endform.
    *& Form build_comment
    text
    -->P_HEADING[] text
    FORM build_comment1 USING p_heading1 TYPE slis_t_listheader.
    DATA: hline1 TYPE slis_listheader.
    hline1-info = '1 Secondary List'.
    hline1-typ = 'H'.
    APPEND hline1 TO p_heading1.
    CLEAR hline1.
    ENDFORM. " build_comment
    *& Form getfieldcatalog1
    text
    -->P_FCAT1[] text
    form getfieldcatalog1 using p_fcat1 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat1 TYPE slis_fieldcat_alv.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'VBELN'.
    w_fcat1-seltext_l = 'Pr.No'.
    w_fcat1-hotspot = 'X'.
    w_fcat1-col_pos = 1.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'POSNR'.
    w_fcat1-seltext_l = 'PR Item'.
    w_fcat1-col_pos = 2.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'MATNR'.
    w_fcat1-seltext_l = 'Material'.
    w_fcat1-col_pos = 3.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'LFIMG'.
    w_fcat1-seltext_l = 'Actual quantity delivered'.
    w_fcat1-col_pos = 4.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'MEINS'.
    w_fcat1-seltext_l = 'Base Unit of Measure'.
    w_fcat1-col_pos = 5.
    APPEND w_fcat1 to fcat1.
    endform. " getfieldcatalog1
    *& Form USER_COMMAND
    text
    -->R_UCOMM text
    -->RS_SELFIELD text
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    READ TABLE itab INDEX rs_selfield-tabindex.
    IF sy-subrc EQ 0.
    select vbeln
    posnr
    matnr
    vgbel
    lfimg
    meins from lips into table it_lips
    where vgbel = itab-ebeln.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = repname
    >>>> i_callback_user_command = 'USER_COMMAND1'
    it_fieldcat = fcat1
    it_events = events1[]
    TABLES
    t_outtab = it_lips.
    IF sy-subrc 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    ENDFORM. "USER_COMMAND
    FORM TOP_OF_PAGE1 *
    FORM top_of_page1.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = heading1.
    ENDFORM. "TOP_OF_PAGE1
    *& Form build_eventtab1
    text
    -->P_EVENTS[] text
    FORM build_eventtab2 USING p_events2 TYPE slis_t_event.
    DATA: ls_event2 TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = p_events2.
    READ TABLE p_events2 WITH KEY name = slis_ev_top_of_page
    INTO ls_event2.
    IF sy-subrc = 0.
    MOVE formname_top_of_page2 TO ls_event2-form.
    APPEND ls_event2 TO p_events2.
    ENDIF.
    endform.
    *& Form build_comment
    text
    -->P_HEADING[] text
    FORM build_comment2 USING p_heading2 TYPE slis_t_listheader.
    DATA: hline2 TYPE slis_listheader.
    hline2-info = '2 Secondary List'.
    hline2-typ = 'H'.
    APPEND hline2 TO p_heading2.
    CLEAR hline2.
    ENDFORM. " build_comment
    *& Form getfieldcatalog1
    text
    -->P_FCAT1[] text
    form getfieldcatalog2 using p_fcat2 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat2 TYPE slis_fieldcat_alv.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'EBELN'.
    w_fcat2-seltext_l = 'Pr.Doc No'.
    w_fcat2-col_pos = 1.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'EBELP'.
    w_fcat2-seltext_l = 'PR Doc Item'.
    w_fcat2-col_pos = 2.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'BELNR'.
    w_fcat2-seltext_l = 'No.Mat Doc'.
    w_fcat2-col_pos = 3.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'BUZEI'.
    w_fcat2-seltext_l = 'Item in Mat Doc'.
    w_fcat2-col_pos = 4.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'MENGE'.
    w_fcat2-seltext_l = 'Quantity'.
    w_fcat2-col_pos = 5.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'XBLNR'.
    w_fcat2-seltext_l = 'Ref Doc Num'.
    w_fcat2-col_pos = 5.
    APPEND w_fcat2 to fcat2.
    endform. " getfieldcatalog2
    *& Form USER_COMMAND1
    text
    -->R_UCOMM text
    -->RS_SELFIELD text
    FORM user_command1 USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    READ TABLE it_lips INDEX rs_selfield-tabindex.
    IF sy-subrc EQ 0.
    select ebeln
    ebelp
    belnr
    buzei
    menge
    xblnr from ekbe into table it_ekbe
    where xblnr = it_lips-vbeln.
    endif.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = repname
    i_callback_user_command = 'USER_COMMAND1'
    it_fieldcat = fcat2
    it_events = events2[]
    TABLES
    t_outtab = it_ekbe.
    IF sy-subrc 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    ENDFORM. "USER_COMMAND
    FORM TOP_OF_PAGE1
    FORM top_of_page2.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = heading2.
    ENDFORM. "TOP_OF_PAGE2

  • Alv interactive report  for secondary list

    Hi All,
    This is my code for ALV interactive report. Its working Properly for me when i select material number iam able to display the secondary list properly . if i sorted the basic list other than material number for ex . created date . iam uable to display correct secondary list . Can any one help me in this issue?
    REPORT  ZWRLOMDMM_PMG_PHWEB_PLD   NO STANDARD PAGE HEADING
            LINE-SIZE 120
            LINE-COUNT 65
            MESSAGE-ID 00.
    TABLES                                                              *
    TABLES: MARA ,      "General Material Data
            ZWPBPH.     " Published Product Hierarchy
    TYPE-POOLS                                                          *
    TYPE-POOLS:SLIS .
    DATA:FIELDCATALOG_BASIC TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
         FIELDCATALOG_SECONDARY TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
         GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
         GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
         GD_REPID LIKE SY-REPID.
    INTERNAL TABLES                                                     *
    *Internal Tables to Get Data.
    *Internal Table For MARA Table.
    DATA:BEGIN OF T_MARA OCCURS 0 ,
            MATNR LIKE MARA-MATNR,
            MTART LIKE MARA-MTART,
            ERSDA LIKE MARA-ERSDA,
            ERNAM LIKE MARA-ERNAM,
            AENAM LIKE MARA-AENAM,
            SPART LIKE MARA-SPART,
         END OF T_MARA.
    *Internal Table For ZWPBPH Table.
    DATA:BEGIN OF T_ZWPBPH OCCURS 0 ,
           PBPINO LIKE ZWPBPH-PBPINO,
           PBPAPINO LIKE ZWPBPH-PBPAPINO,
         END OF T_ZWPBPH.
    *Internal Table For Basic List Field Catalog.
    DATA:BEGIN OF T_ALV OCCURS 0 ,
           MATNR LIKE MARA-MATNR,
           MTART LIKE MARA-MTART,
           ERSDA LIKE MARA-ERSDA,
           ERNAM LIKE MARA-ERNAM,
           SPART LIKE MARA-SPART,
           SPART1(3),
         END OF T_ALV.
    *Internal Table For Secondary List Field Catalog.
    DATA: BEGIN OF T_ALVS OCCURS 0 ,
            MATNR LIKE MARA-MATNR,
            AENAM LIKE MARA-AENAM,
            LAEDA LIKE MARA-LAEDA,
          END OF T_ALVS.
    *Internal Table For Model
    DATA:T_MODEL LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
    *Internal Table For Product
    DATA:T_PRODUCT LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
    *Internal Table For Family
    DATA:T_FAMILY LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
    *Internal Table For Line
    DATA:T_LINE LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
    *Internal Table For Type
    DATA:T_TYPE LIKE T_ZWPBPH OCCURS 0 WITH HEADER LINE.
    SELECTION SCREEN                                                    *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: P_MATN RADIOBUTTON GROUP R1  USER-COMMAND run default 'X'.
    SELECT-OPTIONS: P_MATNR FOR MARA-MATNR MODIF ID SC1 .
    PARAMETERS: P_DAT RADIOBUTTON GROUP R1  .
    SELECT-OPTIONS: : P_DATE FOR MARA-LAEDA  MODIF ID SC2.
    PARAMETERS: P_DIV RADIOBUTTON GROUP R1  .
    SELECT-OPTIONS: : P_DIVIS for mara-spart  MODIF ID SC3.
    SELECTION-SCREEN END OF BLOCK b1.
    INITIALIZATION                                                      *
    INITIALIZATION.
      REFRESH: T_MARA,
               T_ZWPBPH,
               T_ALV,
               T_ALVS,
               T_MODEL,
               T_PRODUCT,
               T_FAMILY,
               T_LINE,
               T_TYPE.
      CLEAR:   T_MARA,
               T_ZWPBPH,
               T_ALV,
               T_ALVS,
               T_MODEL,
               T_PRODUCT,
               T_FAMILY,
               T_LINE,
               T_TYPE.
      GD_REPID = SY-REPID.
    *AT SELECTION-SCREEN OUTPUT.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF P_MATN = 'X'.
          FREE : P_DIVIS,P_DATE.
          IF SCREEN-GROUP1 = 'SC2' or SCREEN-GROUP1 = 'SC3'.
            SCREEN-INPUT  = 0.
            MODIFY SCREEN.
            CONTINUE.
          ENDIF .
        ENDIF.
        IF P_DAT = 'X'.
          FREE : P_MATNR,P_DIVIS.
          IF SCREEN-GROUP1 = 'SC1' or  SCREEN-GROUP1 = 'SC3'.
            SCREEN-INPUT  = 0.
            MODIFY SCREEN.
            CONTINUE.
          ENDIF .
        ENDIF.
        IF P_DIV = 'X'.
          FREE : P_DATE,P_MATNR.
          IF SCREEN-GROUP1 = 'SC1' or SCREEN-GROUP1 = 'SC2'.
            SCREEN-INPUT = 0.
            MODIFY SCREEN.
            CONTINUE.
          ENDIF .
        ENDIF.
      ENDLOOP.
    START-OF-SELECTION                                                  *
    START-OF-SELECTION.
      PERFORM GET_FIELDCATALOG_BASIC.
      PERFORM GET_FIELDCATALOG_SECONDARY.
      PERFORM POPULATE_DATA.
    END-OF-SELECTION                                                    *
    END-OF-SELECTION.
    *&      FORM GET_FIELDCATALOG_BASIC.
    Get Fieldcatalog For Basic List
    FORM GET_FIELDCATALOG_BASIC.
      FIELDCATALOG_BASIC-FIELDNAME = 'MATNR'.
      FIELDCATALOG_BASIC-SELTEXT_M = 'Material Number'.
      FIELDCATALOG_BASIC-COL_POS   = 0.
      FIELDCATALOG_BASIC-OUTPUTLEN = 20.
      FIELDCATALOG_BASIC-HOTSPOT   = 'X'.
      FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
      FIELDCATALOG_BASIC-KEY       = 'X'.
      APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
      CLEAR FIELDCATALOG_BASIC.
      FIELDCATALOG_BASIC-FIELDNAME = 'MTART'.
      FIELDCATALOG_BASIC-SELTEXT_M = 'Material Type'.
      FIELDCATALOG_BASIC-COL_POS   = 0.
      FIELDCATALOG_BASIC-OUTPUTLEN = 20.
      FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
      FIELDCATALOG_BASIC-KEY       = 'X'.
      APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
      CLEAR FIELDCATALOG_BASIC.
      FIELDCATALOG_BASIC-FIELDNAME = 'ERSDA'.
      FIELDCATALOG_BASIC-SELTEXT_M = 'Created Date'.
      FIELDCATALOG_BASIC-COL_POS   = 0.
      FIELDCATALOG_BASIC-OUTPUTLEN = 12.
      FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
      FIELDCATALOG_BASIC-KEY       = 'X'.
      APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
      CLEAR FIELDCATALOG_BASIC.
      FIELDCATALOG_BASIC-FIELDNAME = 'ERNAM'.
      FIELDCATALOG_BASIC-SELTEXT_M = 'Created By'.
      FIELDCATALOG_BASIC-COL_POS   = 0.
      FIELDCATALOG_BASIC-OUTPUTLEN = 15.
      FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
      FIELDCATALOG_BASIC-KEY       = 'X'.
      APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
      CLEAR FIELDCATALOG_BASIC.
      FIELDCATALOG_BASIC-FIELDNAME = 'SPART'.
      FIELDCATALOG_BASIC-SELTEXT_M = 'Division PMG'.
      FIELDCATALOG_BASIC-COL_POS   = 0.
      FIELDCATALOG_BASIC-OUTPUTLEN = 14.
      FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
      FIELDCATALOG_BASIC-KEY       = 'X'.
      APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
      CLEAR FIELDCATALOG_BASIC.
      FIELDCATALOG_BASIC-FIELDNAME = 'SPART1'.
      FIELDCATALOG_BASIC-SELTEXT_M = 'Division PhWEB'.
      FIELDCATALOG_BASIC-COL_POS   = 0.
      FIELDCATALOG_BASIC-OUTPUTLEN = 14.
      FIELDCATALOG_BASIC-EMPHASIZE = 'X'.
      FIELDCATALOG_BASIC-KEY       = 'X'.
      APPEND FIELDCATALOG_BASIC TO FIELDCATALOG_BASIC.
      CLEAR FIELDCATALOG_BASIC.
    ENDFORM.                    "GET_FIELDCATALOG_BASIC
    *&      FORM GET_FIELDCATALOG_SECONDARY
    Get Fieldcatalog For Secondary List
    FORM GET_FIELDCATALOG_SECONDARY.
      FIELDCATALOG_SECONDARY-FIELDNAME = 'MATNR'.
      FIELDCATALOG_SECONDARY-SELTEXT_M = 'Material Number'.
      FIELDCATALOG_SECONDARY-COL_POS   = 0.
      FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
      FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
      FIELDCATALOG_SECONDARY-KEY       = 'X'.
      APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
      CLEAR FIELDCATALOG_SECONDARY.
      FIELDCATALOG_SECONDARY-FIELDNAME = 'AENAM'.
      FIELDCATALOG_SECONDARY-SELTEXT_M = 'Changed By'.
      FIELDCATALOG_SECONDARY-COL_POS   = 0.
      FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
      FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
      FIELDCATALOG_SECONDARY-KEY       = 'X'.
      APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
      CLEAR FIELDCATALOG_SECONDARY.
      FIELDCATALOG_SECONDARY-FIELDNAME = 'LAEDA'.
      FIELDCATALOG_SECONDARY-SELTEXT_M = 'Changed ON'.
      FIELDCATALOG_SECONDARY-COL_POS   = 0.
      FIELDCATALOG_SECONDARY-OUTPUTLEN = 20.
      FIELDCATALOG_SECONDARY-EMPHASIZE = 'X'.
      FIELDCATALOG_SECONDARY-KEY       = 'X'.
      APPEND FIELDCATALOG_SECONDARY TO FIELDCATALOG_SECONDARY.
      CLEAR FIELDCATALOG_SECONDARY.
    ENDFORM.                    "GET_FIELDCATALOG_SECONDARY
    *&      FORM POPULATE_DATA
    FORM POPULATE_DATA.
    *Get Data From MARA And ZWPBPH Tables
      IF P_MATN = 'X'.
    SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
    where MATNR IN P_MATNR .
        IF SY-SUBRC <> 0.
          MESSAGE E001(0) WITH 'Invalid Material Number'.
        ENDIF.
      ELSEIF P_DAT = 'X'.
    SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
    where LAEDA IN P_DATE .
        IF SY-SUBRC <> 0.
          MESSAGE E001(0) WITH 'Invalid Date Range'.
        ENDIF.
      ELSEIF P_DIV = 'X'.
    SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA
    where SPART IN P_DIVIS .
        IF SY-SUBRC <> 0.
          MESSAGE E001(0) WITH 'Invalid Division'.
        ENDIF.
      ELSEIF P_MATN = ' ' AND P_DAT = ' ' AND  P_DIV = ' '.
    SELECT MATNR MTART ERSDA ERNAM AENAM SPART FROM MARA INTO TABLE T_MARA.
      ENDIF.
      DELETE ADJACENT DUPLICATES FROM T_MARA COMPARING MATNR.
      SORT T_MARA BY MATNR.
      IF T_MARA[] IS NOT INITIAL .
    SELECT PBPINO PBPAPINO FROM ZWPBPH INTO TABLE T_ZWPBPH FOR ALL ENTRIES
    IN T_MARA WHERE PBPINO = T_MARA-MATNR.
      ENDIF.
      IF SY-SUBRC = 0.
        LOOP AT  T_ZWPBPH.
          SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO  T_MODEL   WHERE
          PBPINO = T_ZWPBPH-PBPAPINO.
          IF SY-SUBRC = 0.
          SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH  INTO T_PRODUCT   WHERE
          PBPINO
          = T_MODEL-PBPAPINO.
          ENDIF.
          IF SY-SUBRC = 0.
           SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH  INTO T_FAMILY   WHERE
           PBPINO = T_PRODUCT-PBPAPINO.
          ENDIF.
          IF SY-SUBRC = 0.
            SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH  INTO T_LINE   WHERE
            PBPINO = T_FAMILY-PBPAPINO.
          ENDIF.
          IF SY-SUBRC = 0.
       SELECT SINGLE PBPINO PBPAPINO FROM ZWPBPH INTO T_TYPE   WHERE PBPINO
        = T_LINE-PBPAPINO.
          ENDIF.
          IF SY-SUBRC = 0.
         SELECT SINGLE MTART ERSDA ERNAM SPART FROM MARA INTO CORRESPONDING
          FIELDS OF T_ALV WHERE MATNR = T_ZWPBPH-PBPINO AND SPART <>
        T_TYPE-PBPAPINO+1(2).
          ENDIF.
          IF SY-SUBRC = 0.
            MOVE T_ZWPBPH-PBPINO TO T_ALV-MATNR.
            MOVE T_TYPE-PBPAPINO+1(2) TO T_ALV-SPART1.
            APPEND T_ALV.
            SELECT SINGLE MATNR AENAM LAEDA FROM MARA INTO CORRESPONDING
            FIELDS OF T_ALVS WHERE MATNR = T_ZWPBPH-PBPINO.
            APPEND T_ALVS.
            CLEAR T_ALVS.
          ENDIF.
        ENDLOOP.
      ENDIF.
      SORT T_ALV BY MATNR.
      SORT T_ALVS BY MATNR.
      call function 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = GD_REPID
          i_callback_user_command = 'DISPLAY_DETAIL'
          it_fieldcat             = FIELDCATALOG_BASIC[]
          i_save                  = 'X'
        TABLES
          t_outtab                = T_ALV
        EXCEPTIONS
          program_error           = 1
          others                  = 2.
    ENDFORM.                    "POPULATE_DATA
    *&      Form  DISPLAY_DETAIL
          text
         -->UCOMM      text
         -->SELFIELD   text
    FORM DISPLAY_DETAIL USING UCOMM LIKE SY-UCOMM
    SELFIELD TYPE SLIS_SELFIELD.
    Select Material Number For Secondary List
      DATA: T_ALV_TEMP LIKE T_ALVS OCCURS 0 WITH HEADER LINE.
      IF UCOMM = '&IC1'.
        READ TABLE T_ALVS INDEX SELFIELD-TABINDEX.
        IF SY-SUBRC = 0.
          MOVE T_ALVS TO T_ALV_TEMP.
          APPEND T_ALV_TEMP.
        ENDIF.
        CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
          EXPORTING
            i_callback_program = GD_REPID
            it_fieldcat        = FIELDCATALOG_SECONDARY[]
          TABLES
            t_outtab           = T_ALV_TEMP.
      ENDIF.
    ENDFORM.                    "DISPLAY_DETAIL

    Hi,
    Try this in the routine display details
    READ TABLE T_ALV INDEX SELFIELD-TABINDEX.
    READ TABLE T_ALVS with key matnr = T_ALV-MATNR
    thanks

  • How to select valid lines in a secondary list in a interactive report

    hi
    how to select valid lines in a secondary list in a interactive report

    hi,
    do this one
    at line-selection.
    if sy-lsind = some list no.
    GET CURSOR FIELD FIELDNAME VALUE FIELDVALUE.
            IF FIELDNAME = 'TVBAK-VBELN'.
    do some thing
    Regards
    ASHOK KUMAR

  • FRM-40735: WHEN-LIST-ACTIVATED trigger raised unhandled exception ORA-29516

    Hi All,
    The users are facing problem on opening the OAF pages on 11i(11.5.10.2) instance.
    They face this error when they,
    1. Go to System Administrator responsibility.
    2. Open page under Workflow > Administrator Workflow > Status Monitor.
    3. This error pops up at the end of the form page. Below is what the error appearing.
    FRM-40735: WHEN-LIST-ACTIVATED trigger raised unhandled exception ORA-29516
    We are having DB:11.2.0.2.5,Applications:11.5.10.2
    Please suggest in resolving the error.
    Thanks
    Althaf khan

    The users are facing problem on opening the OAF pages on 11i(11.5.10.2) instance.
    They face this error when they,
    1. Go to System Administrator responsibility.
    2. Open page under Workflow > Administrator Workflow > Status Monitor.
    3. This error pops up at the end of the form page. Below is what the error appearing.
    FRM-40735: WHEN-LIST-ACTIVATED trigger raised unhandled exception ORA-29516
    We are having DB:11.2.0.2.5,Applications:11.5.10.2
    Please suggest in resolving the error.Was this working before? If yes, any changes been done recently?
    Can you find any errors in the database log file?
    Do you have any invalid objects?
    What is the complete error message? Any errors in Apache log files (error_log* and access_log*)?
    Thanks,
    Hussein

  • Dynamic Change of FieldCatalog in OO ALV Secondary List

    Dear All,
    i have Scenario like when i go to secondary list on some event, the fieldcatlog for the info is generated. then again i go back and choose some other event, now the secondary fieldcatalog list should contain few extra fields which are not being displayed. i am refreshing the fieldcatalog and filling the fieldcatalog table with new fields everytime. but the system displays only the first generated fieldcatalog.
    any ideas what can be done?
    Thanks & Regards
    Rahul

    Hello Rahul
    The following sample report <b>ZUS_SDN_TWO_ALV_GRIDS_A</b> shows how to dynamically change the fieldcatalog of the second ALV list depending on which customer has been selected (by double-clicking) on the first ALV list.
    *& Report  ZUS_SDN_TWO_ALV_GRIDS_A
    *& Screen '0100' contains no elements.
    *& ok_code -> assigned to GD_OKCODE
    *& Flow logic:
    *  PROCESS BEFORE OUTPUT.
    *    MODULE STATUS_0100.
    *  PROCESS AFTER INPUT.
    *    MODULE USER_COMMAND_0100.
    REPORT  zus_sdn_two_alv_grids_a.
    " Dynamic fieldcatalog on second ALV list
    DATA:
      gd_okcode        TYPE ui_func,
      go_docking       TYPE REF TO cl_gui_docking_container,
      go_splitter      TYPE REF TO cl_gui_splitter_container,
      go_cell_top      TYPE REF TO cl_gui_container,
      go_cell_bottom   TYPE REF TO cl_gui_container,
      go_grid1         TYPE REF TO cl_gui_alv_grid,
      go_grid2         TYPE REF TO cl_gui_alv_grid,
      gs_layout        TYPE lvc_s_layo.
    DATA:
      gt_knb1          TYPE STANDARD TABLE OF knb1,
      gt_knvv          TYPE STANDARD TABLE OF knvv.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-DATA:
          md_row              TYPE i.
        CLASS-METHODS:
          handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
            IMPORTING
              e_row
              e_column
              es_row_no
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_double_click.
    *   define local data
        DATA:
          ls_knb1      TYPE knb1.
        CHECK ( sender = go_grid1 ).
        READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.
        CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
        md_row = e_row-index.
        CALL METHOD go_grid1->set_current_cell_via_id
          EXPORTING
    *        IS_ROW_ID    =
    *        IS_COLUMN_ID =
            is_row_no    = es_row_no.
    *   Triggers PAI of the dynpro with the specified ok-code
        CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).
      ENDMETHOD.                    "handle_double_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      SELECT        * FROM  knb1 INTO TABLE gt_knb1
             WHERE  bukrs  = '1000'.
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          OTHERS                      = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Create splitter container
      CREATE OBJECT go_splitter
        EXPORTING
          parent            = go_docking
          rows              = 2
          columns           = 1
    *      NO_AUTODEF_PROGID_DYNNR =
    *      NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Get cell container
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = go_cell_top.
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 2
          column    = 1
        RECEIVING
          container = go_cell_bottom.
    * Create ALV grids
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_cell_top
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Set event handler
      SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.
      CREATE OBJECT go_grid2
        EXPORTING
          i_parent          = go_cell_bottom
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Display data
      gs_layout-grid_title = 'Customers'.
      CALL METHOD go_grid1->set_table_for_first_display
        EXPORTING
          i_structure_name = 'KNB1'
          is_layout        = gs_layout
        CHANGING
          it_outtab        = gt_knb1
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      gs_layout-grid_title = 'Customers Details (Sales Areas)'.
      CALL METHOD go_grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'KNVV'
          is_layout        = gs_layout
        CHANGING
          it_outtab        = gt_knvv  " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Link the docking container to the target dynpro
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * NOTE: dynpro does not contain any elements
      CALL SCREEN '0100'.
    * Flow logic of dynpro (does not contain any dynpro elements):
    *PROCESS BEFORE OUTPUT.
    *  MODULE STATUS_0100.
    *PROCESS AFTER INPUT.
    *  MODULE USER_COMMAND_0100.
    END-OF-SELECTION.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.  " contains push button "DETAIL"
    *  SET TITLEBAR 'xxx'.
    * Refresh display of detail ALV list
      CALL METHOD go_grid2->refresh_table_display
    *    EXPORTING
    *      IS_STABLE      =
    *      I_SOFT_REFRESH =
        EXCEPTIONS
          OTHERS         = 2.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE gd_okcode.
        WHEN 'BACK' OR
             'END'  OR
             'CANC'.
          SET SCREEN 0. LEAVE SCREEN.
    *   User has pushed button "Display Details"
        WHEN 'DETAIL'.
          PERFORM entry_show_details.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  ENTRY_SHOW_DETAILS
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM entry_show_details .
    * define local data
      DATA:
        ld_row      TYPE i,
        ls_knb1     TYPE knb1,
        ls_fcat     TYPE lvc_s_fcat,
        lt_fcat     TYPE lvc_t_fcat.
      CALL METHOD go_grid1->get_current_cell
        IMPORTING
          e_row = ld_row.
      READ TABLE gt_knb1 INTO ls_knb1 INDEX ld_row.
      CHECK ( syst-subrc = 0 ).
      SELECT        * FROM  knvv INTO TABLE gt_knvv
             WHERE  kunnr  = ls_knb1-kunnr.
      CALL METHOD go_grid2->get_frontend_fieldcatalog
        IMPORTING
          et_fieldcatalog = lt_fcat.
      " Logic of fieldcatalog modification:
      " 1st customer selected -> show 1 column only
      " 2nd customer selected -> show 2 columns only
      " 3rd customer selected -> show 3 columns
      LOOP AT lt_fcat INTO ls_fcat.
        IF ( syst-tabix <= ld_row ).
          ls_fcat-no_out = ' '.
        ELSE.
          ls_fcat-no_out = 'X'.
        ENDIF.
        MODIFY lt_fcat FROM ls_fcat.
      ENDLOOP.
      go_grid2->set_frontend_fieldcatalog( lt_fcat ).
    ENDFORM.                    " ENTRY_SHOW_DETAILS
    Regards
      Uwe

  • How to create secondary lists in ALV

    Hi all,
    Can u plz explain me how to create Secondary lists usingl ALV and how many secondary lists we can create.
    Thanks in advance
    Venkat

    this is the very very simple program in HR module to demonstrate interactive ALV report.
    If u have HR module implemented...just copy and paste this code and debug it...you will easily get the flow of the report...this is the simplest program..
    i hope it helps...here u go......
    REPORT ztej_alv_interactive.
    TABLES: pa0000, pa0001.
    DATA : BEGIN OF it0001 OCCURS 0,
              pernr LIKE pa0001-pernr,
              ename LIKE pa0001-ename,
           END OF it0001.
    DATA : BEGIN OF it0000 OCCURS 0,
              pernr LIKE pa0000-pernr,
              begda LIKE pa0000-begda,
              endda LIKE pa0000-endda,
              massn LIKE pa0000-massn,
              massg LIKE pa0000-massg,
              aedtm LIKE pa0000-aedtm,
           END OF it0000.
    TYPE-POOLS: slis.
    DATA: v_repid LIKE sy-repid .
    DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: i_fieldcat1 TYPE slis_t_fieldcat_alv.
    DATA: it_listheader TYPE slis_t_listheader.
    DATA: it_listheader1 TYPE slis_t_listheader.
    DATA: v_events TYPE slis_t_event,
          wa_event TYPE slis_alv_event.
    DATA: alv_layout TYPE slis_layout_alv.
    DATA:  i_title_0001 TYPE lvc_title VALUE 'FIRST LIST DISPLAYED'.
    DATA:  i_title_0000 TYPE lvc_title.
    DATA : temp_pernr LIKE pa0001-pernr.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
    SELECTION-SCREEN SKIP.
    SELECT-OPTIONS : s_pernr FOR pa0000-pernr DEFAULT '16240147'.
    SELECTION-SCREEN END OF BLOCK b1.
    INITIALIZATION.
      v_repid = sy-repid.
      PERFORM build_fieldcatlog USING i_fieldcat.
      PERFORM event_call.
      PERFORM populate_event.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM build_listheader USING it_listheader.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATLOG
          text
    -->  p1        text
    <--  p2        text
    FORM build_fieldcatlog USING temp_fieldcat TYPE slis_t_fieldcat_alv.
      DATA : wa_temp_fieldcat TYPE slis_fieldcat_alv.
      wa_temp_fieldcat-tabname = 'IT0001'.
      wa_temp_fieldcat-fieldname = 'PERNR'.
      wa_temp_fieldcat-seltext_m = 'Personnel Number'.
      APPEND wa_temp_fieldcat TO temp_fieldcat.
      CLEAR wa_temp_fieldcat.
      wa_temp_fieldcat-tabname = 'IT0001'.
      wa_temp_fieldcat-fieldname = 'ENAME'.
      wa_temp_fieldcat-seltext_m = 'Name'.
      APPEND wa_temp_fieldcat TO temp_fieldcat.
      CLEAR wa_temp_fieldcat.
    ENDFORM.                    " BUILD_FIELDCATLOG
    *&      Form  EVENT_CALL
          text
    -->  p1        text
    <--  p2        text
    FORM event_call.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
            EXPORTING
               i_list_type     = 0
            IMPORTING
               et_events       = v_events
           EXCEPTIONS
                LIST_TYPE_WRONG = 1
                OTHERS          = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " EVENT_CALL
    *&      Form  POPULATE_EVENT
          text
    -->  p1        text
    <--  p2        text
    FORM populate_event.
      READ TABLE v_events INTO wa_event WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc EQ 0.
        wa_event-form = 'TOP_OF_PAGE'.
        MODIFY v_events FROM wa_event TRANSPORTING form WHERE name =
    wa_event-form.
      ENDIF.
      READ TABLE v_events INTO wa_event WITH KEY name = 'USER_COMMAND'.
      IF sy-subrc EQ 0.
        wa_event-form = 'USER_COMMAND'.
        MODIFY v_events FROM wa_event TRANSPORTING form WHERE name =
    wa_event-name.
      ENDIF.
    ENDFORM.                    " POPULATE_EVENT
    *&      Form  DATA_RETRIEVAL
          text
    -->  p1        text
    <--  p2        text
    FORM data_retrieval.
      SELECT pernr ename
             FROM pa0001
             INTO TABLE it0001
             WHERE pernr IN s_pernr.
      DELETE ADJACENT DUPLICATES FROM it0001.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  BUILD_LISTHEADER
          text
         -->P_IT_LISTHEADER  text
    FORM build_listheader USING i_listheader TYPE slis_t_listheader.
      DATA hline TYPE slis_listheader.
      hline-info = 'This is Interactive ALV Program.'.
      hline-typ = 'H'.
      APPEND hline TO i_listheader.
    ENDFORM.                    " BUILD_LISTHEADER
    *&      Form  DISPLAY_ALV_REPORT
          text
    -->  p1        text
    <--  p2        text
    FORM display_alv_report.
      v_repid = sy-repid.
      alv_layout-colwidth_optimize = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         i_callback_program                = v_repid
      I_CALLBACK_PF_STATUS_SET          = ' '
         i_callback_user_command           = 'USER_COMMAND'
         i_callback_top_of_page            = 'TOP_OF_PAGE'
         i_grid_title                      = i_title_0001
      I_GRID_SETTINGS                   =
       is_layout                         = alv_layout
         it_fieldcat                       = i_fieldcat[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
        i_default                         = 'ZLAY1'
         i_save                            = 'A'
        is_variant                        = i_variant
         it_events                         = v_events
        TABLES
          t_outtab                          = it0001
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      REFRESH i_fieldcat.
      CLEAR i_fieldcat.
      REFRESH it_listheader.
      CLEAR it_listheader.
    ENDFORM.                    " DISPLAY_ALV_REPORT
    *&      Form  TOP_OF_PAGE
          text
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_listheader
       i_logo                   =
       I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
      REFRESH i_fieldcat1.
      REFRESH it_listheader1.
      CASE r_ucomm.
        WHEN '&IC1'.
          READ TABLE it0001 INDEX rs_selfield-tabindex.
          IF sy-subrc = 0.
            temp_pernr = it0001-pernr.
            PERFORM build_fieldcatlog_0000 USING i_fieldcat1.
            PERFORM event_call_0000.
            PERFORM populate_event_0000.
            PERFORM data_retrieval_0000.
            PERFORM build_listheader_0000 USING it_listheader1.
            PERFORM display_alv_0000.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  BUILD_FIELDCATLOG_0000
          text
    -->  p1        text
    <--  p2        text
    FORM build_fieldcatlog_0000 USING temp_fieldcat TYPE slis_t_fieldcat_alv
      DATA : wa_temp_fieldcat TYPE slis_fieldcat_alv.
      wa_temp_fieldcat-tabname = 'IT0000'.
      wa_temp_fieldcat-fieldname = 'BEGDA'.
      wa_temp_fieldcat-seltext_m = 'From Date'.
      APPEND wa_temp_fieldcat TO temp_fieldcat.
      CLEAR wa_temp_fieldcat.
      wa_temp_fieldcat-tabname = 'IT0000'.
      wa_temp_fieldcat-fieldname = 'ENDDA'.
      wa_temp_fieldcat-seltext_m = 'To Date'.
      APPEND wa_temp_fieldcat TO temp_fieldcat.
      CLEAR wa_temp_fieldcat.
      wa_temp_fieldcat-tabname = 'IT0000'.
      wa_temp_fieldcat-fieldname = 'MASSN'.
      wa_temp_fieldcat-seltext_m = 'Action'.
      APPEND wa_temp_fieldcat TO temp_fieldcat.
      CLEAR wa_temp_fieldcat.
      wa_temp_fieldcat-tabname = 'IT0000'.
      wa_temp_fieldcat-fieldname = 'MASSG'.
      wa_temp_fieldcat-seltext_m = 'Reason'.
      APPEND wa_temp_fieldcat TO temp_fieldcat.
      CLEAR wa_temp_fieldcat.
      wa_temp_fieldcat-tabname = 'IT0000'.
      wa_temp_fieldcat-fieldname = 'AEDTM'.
      wa_temp_fieldcat-seltext_m = 'Action Run On'.
      APPEND wa_temp_fieldcat TO temp_fieldcat.
      CLEAR wa_temp_fieldcat.
    ENDFORM.                    " BUILD_FIELDCATLOG
    *&      Form  EVENT_CALL_0000
          text
    -->  p1        text
    <--  p2        text
    FORM event_call_0000.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         i_list_type           = 0
       IMPORTING
         et_events             = v_events
    EXCEPTIONS
      LIST_TYPE_WRONG       = 1
      OTHERS                = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " EVENT_CALL_0000
    *&      Form  POPULATE_EVENT_0000
          text
    -->  p1        text
    <--  p2        text
    FORM populate_event_0000.
      READ TABLE v_events INTO wa_event WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc EQ 0.
        wa_event-form = 'F_TOP_OF_PAGE'.
        MODIFY v_events FROM wa_event TRANSPORTING form WHERE name =
    wa_event-form.
      ENDIF.
    ENDFORM.                    " POPULATE_EVENT_0000
    *&      Form  TOP_OF_PAGE
          text
    FORM f_top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_listheader1
       i_logo                   =
       I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM data_retrieval_0000.
      SELECT pernr begda endda massn massg aedtm
             FROM pa0000
             INTO TABLE it0000
             WHERE pernr = temp_pernr.
    ENDFORM.
    *&      Form  BUILD_LISTHEADER_0000
          text
         -->P_IT_LISTHEADER  text
    FORM build_listheader_0000 USING i_listheader1 TYPE slis_t_listheader.
      DATA: hline1 TYPE slis_listheader.
      hline1-typ = 'H'.
      hline1-info = 'Actions Detail List'.
      APPEND hline1 TO i_listheader1.
    ENDFORM.                    " BUILD_LISTHEADER_0000
    *&      Form  DISPLAY_ALV_0000
          text
    -->  p1        text
    <--  p2        text
    FORM display_alv_0000.
      CONCATENATE 'Actions For Personnel Number ' temp_pernr
                   INTO i_title_0000 SEPARATED BY ' '.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = v_repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = 'F_USER_COMMAND'
         i_callback_top_of_page            = 'F_TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
         i_grid_title                      = i_title_0000
      I_GRID_SETTINGS                   =
       is_layout                          = alv_layout
         it_fieldcat                      = i_fieldcat1[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         =
         i_save                            = 'A'
      IS_VARIANT                        =
         it_events                         = v_events
        TABLES
          t_outtab                          = it0000
       EXCEPTIONS
         program_error                     = 1
         OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV_0000
    Regards,
    Tejas

  • Drop-down list to trigger instance manager

    I may have bitten off more than I can chew with this one, but I have two pages. One comprises a checklist of Y/N/NA drop-downs; the other page has a repeating table row.
    If the drop-down selection is N I want the Instance Manager to trigger a new row on the second page and populate one of the textboxes within it with the caption value of that drop-down.
    If anyone has an idea as to whether this can be done or, even better, how I could actually do it, do please let me know. I'm no programmer unfortunately so the best I can manage is to tweak other scripts.
    Thanks in advance

    Hi Manuel,
    You will find your answer, with diagrams, in section 3.4 Model Advanced Input Fields in the following document:
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/07134c67-0b01-0010-0493-b89287cf330f
    Be sure that within the Entry List tab, your list scope is dynamic for 0CALYEAR, then just map the fields.
    Failing that, make sure you have values against 0CALYEAR in your source system.
    Regards,
    Chet.

  • How to make one-option dropdown list partial trigger?

    There are two dependent dropdown lists. when list one is selected, the other one will get the SelectItems according the value of list one. My question is: when there is only one selectiem in list one (and the hint 'Please select one..."), how to make it partial trigger in the second time? e.g. I first login and select the ONLY one choice in List one, and the List two gets the values. but the data in datasource updated, so I want to choose the List one again, and make the List two get the new values.

    Hi,
    create a JSF binding (Bindings property on the list component) to a managed bean. The in the code that would trigger the PPR, call
    AdfFacesContext.getCurrentInstance().addPartialtarget(theListBindingName);
    If you have a refresh button, then you could use declarative PPR
    Frank

Maybe you are looking for

  • Mail does not retreive messages after upgrading to Mountain Lion

    I just upgraded my work iMac (2009) to Mountain Lion last night and now it will not retreive any messages from my work email account (POP).  It was working fine yesterday (and for the past 3+ years) while I was still on Lion, but despite searching fo

  • Question related to mapping the pernr with the sap userid

    How do we map the sap userid and the related pernr. Regards, Sukumar. Message was edited by: sukumar kumar

  • Can any tell me default PDF viewer for iPad??

    Please let me know the default PDF viewer n iPad which Apple provides??

  • Legality of cloning hard drive

    Hi, just a quick need to confirm that the process of cloning one's entire hard drive, incuding the OS, is entirely legal. (My apologies if this question has been answered before: a quick search around yeilded nothing clear, and I am with a friend who

  • Callback syntax explanation

    Pardon my beginner questions.  I'm trying to understand the syntax of the callback functions that are auto-inserted into my source by CVI.  I'm not fully understanding what the point of "CVICALLBACK" is in front of my callback function name. int CVIC