Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Interactive ALV

Former Member
0 Kudos

what is Interactive ALV report? plz send me example program?

1 ACCEPTED SOLUTION

rahulkavuri
Active Contributor
0 Kudos

check this example

REPORT  Z_50657_ALV_EX5 NO STANDARD PAGE HEADING
        LINE-COUNT 65(3)
        LINE-SIZE 220
        MESSAGE-ID ZZ.

************************************************************************
*                             Type Pools                               *
************************************************************************

TYPE-POOLS: SLIS, ICON.

************************************************************************
*                              Tables                                  *
************************************************************************

TABLES : VBRK,  "Billing Master table
         VBRP.  "Billing Item table


************************************************************************
*                         VARIABLES DECLARATION                        *
************************************************************************

DATA: STR_DATE LIKE SY-DATUM.

DATA: X_FIELDCAT_VBRK TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT_VBRK TYPE SLIS_T_FIELDCAT_ALV.

DATA: X_FIELDCAT_VBRP TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT_VBRP TYPE SLIS_T_FIELDCAT_ALV.

DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV,
      L_VARIANT LIKE DISVARIANT,
      L_REPID LIKE SY-REPID,
      L_SAVE(1) TYPE C.


DATA: CUR_VBELN(15), CUR_VBELN_VALUE(15).

DATA: TEMP_VBELN(10).

DATA: CTAB LIKE SY-TABIX.


************************************************************************
*                         Internal Tables                              *
************************************************************************

* Internal table to hold data from VBRK

DATA: BEGIN OF IT_VBRK OCCURS 0,
      VBELN LIKE VBRK-VBELN,
      WAERK LIKE VBRK-WAERK,
      VKORG LIKE VBRK-VKORG,
      FKDAT LIKE VBRK-FKDAT,
      BUKRS LIKE VBRK-BUKRS,
      BUTXT LIKE T001-BUTXT,
      CHECK(1) TYPE C,
      END OF IT_VBRK.

* Internal table to hold data from VBRP

DATA: BEGIN OF IT_VBRP OCCURS 0,
      VBELN LIKE VBRP-VBELN,
      POSNR LIKE VBRP-POSNR,
      FKIMG LIKE VBRP-FKIMG,
      VRKME LIKE VBRP-VRKME,
      NETWR LIKE VBRP-NETWR,
      MATNR LIKE VBRP-MATNR,
      ARKTX LIKE VBRP-ARKTX,
      END OF IT_VBRP.

DATA: BEGIN OF IT_T001 OCCURS 0,
      BUKRS LIKE T001-BUKRS,
      BUTXT LIKE T001-BUTXT,
      END OF IT_T001.
************************************************************************
*                       Selection-Screen                               *
************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_VBELN FOR VBRK-VBELN,
                S_FKDAT FOR VBRK-FKDAT,
                S_MATNR FOR VBRP-MATNR.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.

PARAMETERS : LIST RADIOBUTTON GROUP G1,
             GRID  RADIOBUTTON GROUP G1 DEFAULT 'X'.


SELECTION-SCREEN END OF BLOCK B2.

************************************************************************
*****************            INITIALIZATION         ********************
************************************************************************

INITIALIZATION.

  STR_DATE = SY-DATUM - 200.
  S_FKDAT-LOW = STR_DATE.
  S_FKDAT-HIGH = SY-DATUM.
  S_FKDAT-SIGN = 'I'.
  APPEND S_FKDAT.


************************************************************************
*                     At  Selection-Screen Output                      *
************************************************************************
AT SELECTION-SCREEN OUTPUT .

  LOOP AT SCREEN.

    IF SCREEN-NAME = 'S_FKDAT-HIGH'.
      SCREEN-INPUT = 0.
      MODIFY SCREEN.
    ENDIF.

  ENDLOOP.

***********************************************************************
*
*                     At  Selection-Screen
*
***********************************************************************
*
AT SELECTION-SCREEN.

  PERFORM VALIDATION.

***********************************************************************
*
*                       Start of Selection
*
***********************************************************************
*

START-OF-SELECTION.

*POPULATION OF DATA INTO INTERNAL TABLE IT_VBRK AND IT_VBRP
  PERFORM GET_DATA_VBRK.

  PERFORM FIELDCATALOG_CHANGE.

*ALV GRID/LIST DISPLAY
  PERFORM FIRST_SCREEN_DISPLAY.


*&--------------------------------------------------------------------*
*&      Form  VALIDATION
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM VALIDATION.

  IF S_VBELN[] IS NOT INITIAL.

    SELECT SINGLE VBELN
                  FROM VBRK
                  INTO VBRK-VBELN
                  WHERE VBELN IN S_VBELN.

    IF SY-SUBRC <> 0.
      MESSAGE E000(Z000) WITH S_VBELN.
      STOP.
    ENDIF.

  ENDIF.

  IF S_FKDAT[] IS INITIAL.

    MESSAGE I000 WITH 'PLEASE ENTER ALL THE MANDATORY FIELDS'.
    STOP.

  ENDIF.

  IF S_MATNR[] IS NOT INITIAL.

    SELECT SINGLE MATNR
                  FROM MARA
                  INTO VBRP-MATNR
                  WHERE MATNR IN S_MATNR.

    IF SY-SUBRC <> 0.
      MESSAGE I000 WITH 'PLEASE ENTER CORRECT MATERIAL NUMBER'.
      STOP.
    ENDIF.


  ENDIF.

ENDFORM.                    "VALIDATION

*&--------------------------------------------------------------------*
*&      Form  GET_DATA_VBRK
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM GET_DATA_VBRK.

  SELECT VBELN
         WAERK
         VKORG
         FKDAT
         BUKRS
         FROM VBRK INTO TABLE IT_VBRK
         WHERE VBELN IN S_VBELN
               AND FKDAT IN S_FKDAT.

  SORT IT_VBRK BY VBELN BUKRS.

  SELECT BUKRS
         BUTXT
         FROM T001 INTO TABLE IT_T001
         FOR ALL ENTRIES IN IT_VBRK
         WHERE BUKRS = IT_VBRK-BUKRS.

  LOOP AT IT_VBRK.

    CTAB = SY-TABIX.

    LOOP AT IT_T001 WHERE BUKRS = IT_VBRK-BUKRS.

      IF SY-SUBRC  = 0.
        IT_VBRK-BUTXT = IT_T001-BUTXT.
        MODIFY IT_VBRK INDEX CTAB.
        CLEAR CTAB.
      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDFORM.                    "GET_DATA

*&--------------------------------------------------------------------*
*&      Form  FIELDCATALOG_CHANGE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*

FORM FIELDCATALOG_CHANGE.



*Layout Change
  L_LAYOUT-ZEBRA = 'X'.
  L_SAVE = 'X'.
  L_REPID =  SY-REPID.
  L_VARIANT-REPORT = L_REPID.
*  L_LAYOUT-BOX_FIELDNAME = 'CHECK'.

*Define seperate Color for the fields

  X_FIELDCAT_VBRK-COL_POS = 1.
  X_FIELDCAT_VBRK-FIELDNAME = 'CHECK'.
  X_FIELDCAT_VBRK-SELTEXT_M = 'chek'.
  X_FIELDCAT_VBRK-CHECKBOX = 'X'.
  X_FIELDCAT_VBRK-INPUT = 'X'.
  X_FIELDCAT_VBRK-EDIT = 'X'.
  APPEND X_FIELDCAT_VBRK TO  IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-COL_POS = 2.
  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'VBELN'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C301'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'WAERK'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C201'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'VKORG'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C300'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'FKDAT'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C600'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.


  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'BUKRS'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C400'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.


  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'BUTXT'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C500'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

ENDFORM.                    "FIELDCATALOG_CHANGE


*&--------------------------------------------------------------------*
*&      Form  FIRST_SCREEN_DISPLAY
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM FIRST_SCREEN_DISPLAY.


  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         = SY-REPID
      I_INTERNAL_TABNAME     = 'IT_VBRK'
      I_INCLNAME             = SY-REPID
    CHANGING
      CT_FIELDCAT            = IT_FIELDCAT_VBRK
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_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.

* CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV


  IF LIST = 'X'.

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
     EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
       IS_LAYOUT                      = L_LAYOUT
       IT_FIELDCAT                    = IT_FIELDCAT_VBRK
*       I_SAVE                         = L_SAVE
*       IS_VARIANT                     = L_VARIANT

*       IT_EVENTS                      =

      TABLES
        T_OUTTAB                       = IT_VBRK

     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.

    CLEAR LIST.

  ENDIF.


  IF GRID = 'X'.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM             = SY-REPID
        I_CALLBACK_PF_STATUS_SET       = 'STATUS'(002)
        I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
        IS_LAYOUT                      = L_LAYOUT
        IT_FIELDCAT                    = IT_FIELDCAT_VBRK
*       IT_EVENTS                      =
*        I_SAVE                         = L_SAVE
*        IS_VARIANT                     = L_VARIANT

       TABLES
         T_OUTTAB                       = IT_VBRK

      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.

    CLEAR GRID.

  ENDIF.


ENDFORM.                    "FIRST_SCREEN_DISPLAY

*&--------------------------------------------------------------------*
*&      Form  STATUS
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->P_EXTAB    text
*---------------------------------------------------------------------*
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

  SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.

ENDFORM.                    "STATUS

*&---------------------------------------------------------------------
*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------
*
*       text
*----------------------------------------------------------------------
*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------
*

FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.

  CASE R_UCOMM.

    WHEN 'BACK' OR 'CANC' OR 'EXIT'.

      LEAVE TO SCREEN 0.

    WHEN '&IC1'.

      IF RS_SELFIELD-FIELDNAME = 'VBELN'.

        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            INPUT  = RS_SELFIELD-VALUE
          IMPORTING
            OUTPUT = TEMP_VBELN.


        TEMP_VBELN = RS_SELFIELD-VALUE.
        PERFORM GET_DATA_VBRP.
        PERFORM GET_SECOND_SCREEN_DISPLAY.

      ENDIF.

  ENDCASE.

ENDFORM.                    "USER_COMMAND

*&--------------------------------------------------------------------*
*&      Form  GET_DATA_VBRP
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM GET_DATA_VBRP.

  SELECT VBELN
         POSNR
         FKIMG
         VRKME
         NETWR
         MATNR
         ARKTX
         FROM VBRP INTO TABLE IT_VBRP
         WHERE VBELN = TEMP_VBELN.

  IF SY-SUBRC <> 0.

    MESSAGE E000 WITH ' NO BILLING DETAILS FOUND'.
    EXIT.

  ELSE.

    MESSAGE S000 WITH 'SUCCESSFUL'.

  ENDIF.

ENDFORM.                    "GET_DATA_VBRP

*&--------------------------------------------------------------------*
*&      Form  GET_SECOND_SCREEN_DISPLAY
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM GET_SECOND_SCREEN_DISPLAY.

* FIELDCATALOG CALL

  X_FIELDCAT_VBRP-TABNAME = 'IT_VBRP'.
  X_FIELDCAT_VBRP-FIELDNAME = 'VRKME'.
  X_FIELDCAT_VBRP-EMPHASIZE = 'C500'.
  X_FIELDCAT_VBRP-OUTPUTLEN = 10.
  APPEND X_FIELDCAT_VBRP TO IT_FIELDCAT_VBRP.
  CLEAR X_FIELDCAT_VBRP.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         = SY-REPID
      I_INTERNAL_TABNAME     = 'IT_VBRP'
      I_INCLNAME             = SY-REPID
    CHANGING
      CT_FIELDCAT            = IT_FIELDCAT_VBRP
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_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.


* CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV


  IF LIST = 'X'.

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
     EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
       IS_LAYOUT                      = L_LAYOUT
       IT_FIELDCAT                    = IT_FIELDCAT_VBRP
       I_SCREEN_START_COLUMN          = 1
       I_SCREEN_START_LINE            = 1
       I_SCREEN_END_COLUMN            = 100
       I_SCREEN_END_LINE              = 10
*       IT_EVENTS                      =

      TABLES
        T_OUTTAB                       = IT_VBRP

     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.


  ENDIF.


  IF GRID = 'X'.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
       IS_LAYOUT                      = L_LAYOUT
       IT_FIELDCAT                    = IT_FIELDCAT_VBRP
       I_SCREEN_START_COLUMN          = 1
       I_SCREEN_START_LINE            = 1
       I_SCREEN_END_COLUMN            = 100
       I_SCREEN_END_LINE              = 10
*       IT_EVENTS                      =

       TABLES
         T_OUTTAB                       = IT_VBRP

      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.

  ENDIF.


ENDFORM.                    "GET_SECOND_SCREEN_DISPLAY

4 REPLIES 4

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

It is an ALV program which allows for things like doubleclick and other things, Check out example program BCALV_GRID_02

Regards,

Rich Heilman

rahulkavuri
Active Contributor
0 Kudos

check this example

REPORT  Z_50657_ALV_EX5 NO STANDARD PAGE HEADING
        LINE-COUNT 65(3)
        LINE-SIZE 220
        MESSAGE-ID ZZ.

************************************************************************
*                             Type Pools                               *
************************************************************************

TYPE-POOLS: SLIS, ICON.

************************************************************************
*                              Tables                                  *
************************************************************************

TABLES : VBRK,  "Billing Master table
         VBRP.  "Billing Item table


************************************************************************
*                         VARIABLES DECLARATION                        *
************************************************************************

DATA: STR_DATE LIKE SY-DATUM.

DATA: X_FIELDCAT_VBRK TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT_VBRK TYPE SLIS_T_FIELDCAT_ALV.

DATA: X_FIELDCAT_VBRP TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT_VBRP TYPE SLIS_T_FIELDCAT_ALV.

DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV,
      L_VARIANT LIKE DISVARIANT,
      L_REPID LIKE SY-REPID,
      L_SAVE(1) TYPE C.


DATA: CUR_VBELN(15), CUR_VBELN_VALUE(15).

DATA: TEMP_VBELN(10).

DATA: CTAB LIKE SY-TABIX.


************************************************************************
*                         Internal Tables                              *
************************************************************************

* Internal table to hold data from VBRK

DATA: BEGIN OF IT_VBRK OCCURS 0,
      VBELN LIKE VBRK-VBELN,
      WAERK LIKE VBRK-WAERK,
      VKORG LIKE VBRK-VKORG,
      FKDAT LIKE VBRK-FKDAT,
      BUKRS LIKE VBRK-BUKRS,
      BUTXT LIKE T001-BUTXT,
      CHECK(1) TYPE C,
      END OF IT_VBRK.

* Internal table to hold data from VBRP

DATA: BEGIN OF IT_VBRP OCCURS 0,
      VBELN LIKE VBRP-VBELN,
      POSNR LIKE VBRP-POSNR,
      FKIMG LIKE VBRP-FKIMG,
      VRKME LIKE VBRP-VRKME,
      NETWR LIKE VBRP-NETWR,
      MATNR LIKE VBRP-MATNR,
      ARKTX LIKE VBRP-ARKTX,
      END OF IT_VBRP.

DATA: BEGIN OF IT_T001 OCCURS 0,
      BUKRS LIKE T001-BUKRS,
      BUTXT LIKE T001-BUTXT,
      END OF IT_T001.
************************************************************************
*                       Selection-Screen                               *
************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_VBELN FOR VBRK-VBELN,
                S_FKDAT FOR VBRK-FKDAT,
                S_MATNR FOR VBRP-MATNR.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.

PARAMETERS : LIST RADIOBUTTON GROUP G1,
             GRID  RADIOBUTTON GROUP G1 DEFAULT 'X'.


SELECTION-SCREEN END OF BLOCK B2.

************************************************************************
*****************            INITIALIZATION         ********************
************************************************************************

INITIALIZATION.

  STR_DATE = SY-DATUM - 200.
  S_FKDAT-LOW = STR_DATE.
  S_FKDAT-HIGH = SY-DATUM.
  S_FKDAT-SIGN = 'I'.
  APPEND S_FKDAT.


************************************************************************
*                     At  Selection-Screen Output                      *
************************************************************************
AT SELECTION-SCREEN OUTPUT .

  LOOP AT SCREEN.

    IF SCREEN-NAME = 'S_FKDAT-HIGH'.
      SCREEN-INPUT = 0.
      MODIFY SCREEN.
    ENDIF.

  ENDLOOP.

***********************************************************************
*
*                     At  Selection-Screen
*
***********************************************************************
*
AT SELECTION-SCREEN.

  PERFORM VALIDATION.

***********************************************************************
*
*                       Start of Selection
*
***********************************************************************
*

START-OF-SELECTION.

*POPULATION OF DATA INTO INTERNAL TABLE IT_VBRK AND IT_VBRP
  PERFORM GET_DATA_VBRK.

  PERFORM FIELDCATALOG_CHANGE.

*ALV GRID/LIST DISPLAY
  PERFORM FIRST_SCREEN_DISPLAY.


*&--------------------------------------------------------------------*
*&      Form  VALIDATION
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM VALIDATION.

  IF S_VBELN[] IS NOT INITIAL.

    SELECT SINGLE VBELN
                  FROM VBRK
                  INTO VBRK-VBELN
                  WHERE VBELN IN S_VBELN.

    IF SY-SUBRC <> 0.
      MESSAGE E000(Z000) WITH S_VBELN.
      STOP.
    ENDIF.

  ENDIF.

  IF S_FKDAT[] IS INITIAL.

    MESSAGE I000 WITH 'PLEASE ENTER ALL THE MANDATORY FIELDS'.
    STOP.

  ENDIF.

  IF S_MATNR[] IS NOT INITIAL.

    SELECT SINGLE MATNR
                  FROM MARA
                  INTO VBRP-MATNR
                  WHERE MATNR IN S_MATNR.

    IF SY-SUBRC <> 0.
      MESSAGE I000 WITH 'PLEASE ENTER CORRECT MATERIAL NUMBER'.
      STOP.
    ENDIF.


  ENDIF.

ENDFORM.                    "VALIDATION

*&--------------------------------------------------------------------*
*&      Form  GET_DATA_VBRK
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM GET_DATA_VBRK.

  SELECT VBELN
         WAERK
         VKORG
         FKDAT
         BUKRS
         FROM VBRK INTO TABLE IT_VBRK
         WHERE VBELN IN S_VBELN
               AND FKDAT IN S_FKDAT.

  SORT IT_VBRK BY VBELN BUKRS.

  SELECT BUKRS
         BUTXT
         FROM T001 INTO TABLE IT_T001
         FOR ALL ENTRIES IN IT_VBRK
         WHERE BUKRS = IT_VBRK-BUKRS.

  LOOP AT IT_VBRK.

    CTAB = SY-TABIX.

    LOOP AT IT_T001 WHERE BUKRS = IT_VBRK-BUKRS.

      IF SY-SUBRC  = 0.
        IT_VBRK-BUTXT = IT_T001-BUTXT.
        MODIFY IT_VBRK INDEX CTAB.
        CLEAR CTAB.
      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDFORM.                    "GET_DATA

*&--------------------------------------------------------------------*
*&      Form  FIELDCATALOG_CHANGE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*

FORM FIELDCATALOG_CHANGE.



*Layout Change
  L_LAYOUT-ZEBRA = 'X'.
  L_SAVE = 'X'.
  L_REPID =  SY-REPID.
  L_VARIANT-REPORT = L_REPID.
*  L_LAYOUT-BOX_FIELDNAME = 'CHECK'.

*Define seperate Color for the fields

  X_FIELDCAT_VBRK-COL_POS = 1.
  X_FIELDCAT_VBRK-FIELDNAME = 'CHECK'.
  X_FIELDCAT_VBRK-SELTEXT_M = 'chek'.
  X_FIELDCAT_VBRK-CHECKBOX = 'X'.
  X_FIELDCAT_VBRK-INPUT = 'X'.
  X_FIELDCAT_VBRK-EDIT = 'X'.
  APPEND X_FIELDCAT_VBRK TO  IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-COL_POS = 2.
  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'VBELN'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C301'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'WAERK'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C201'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'VKORG'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C300'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'FKDAT'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C600'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.


  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'BUKRS'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C400'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.


  X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
  X_FIELDCAT_VBRK-FIELDNAME = 'BUTXT'.
  X_FIELDCAT_VBRK-EMPHASIZE = 'C500'.
  X_FIELDCAT_VBRK-OUTPUTLEN = 15.
  APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
  CLEAR X_FIELDCAT_VBRK.

ENDFORM.                    "FIELDCATALOG_CHANGE


*&--------------------------------------------------------------------*
*&      Form  FIRST_SCREEN_DISPLAY
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM FIRST_SCREEN_DISPLAY.


  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         = SY-REPID
      I_INTERNAL_TABNAME     = 'IT_VBRK'
      I_INCLNAME             = SY-REPID
    CHANGING
      CT_FIELDCAT            = IT_FIELDCAT_VBRK
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_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.

* CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV


  IF LIST = 'X'.

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
     EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
       IS_LAYOUT                      = L_LAYOUT
       IT_FIELDCAT                    = IT_FIELDCAT_VBRK
*       I_SAVE                         = L_SAVE
*       IS_VARIANT                     = L_VARIANT

*       IT_EVENTS                      =

      TABLES
        T_OUTTAB                       = IT_VBRK

     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.

    CLEAR LIST.

  ENDIF.


  IF GRID = 'X'.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM             = SY-REPID
        I_CALLBACK_PF_STATUS_SET       = 'STATUS'(002)
        I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
        IS_LAYOUT                      = L_LAYOUT
        IT_FIELDCAT                    = IT_FIELDCAT_VBRK
*       IT_EVENTS                      =
*        I_SAVE                         = L_SAVE
*        IS_VARIANT                     = L_VARIANT

       TABLES
         T_OUTTAB                       = IT_VBRK

      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.

    CLEAR GRID.

  ENDIF.


ENDFORM.                    "FIRST_SCREEN_DISPLAY

*&--------------------------------------------------------------------*
*&      Form  STATUS
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->P_EXTAB    text
*---------------------------------------------------------------------*
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

  SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.

ENDFORM.                    "STATUS

*&---------------------------------------------------------------------
*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------
*
*       text
*----------------------------------------------------------------------
*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------
*

FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.

  CASE R_UCOMM.

    WHEN 'BACK' OR 'CANC' OR 'EXIT'.

      LEAVE TO SCREEN 0.

    WHEN '&IC1'.

      IF RS_SELFIELD-FIELDNAME = 'VBELN'.

        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            INPUT  = RS_SELFIELD-VALUE
          IMPORTING
            OUTPUT = TEMP_VBELN.


        TEMP_VBELN = RS_SELFIELD-VALUE.
        PERFORM GET_DATA_VBRP.
        PERFORM GET_SECOND_SCREEN_DISPLAY.

      ENDIF.

  ENDCASE.

ENDFORM.                    "USER_COMMAND

*&--------------------------------------------------------------------*
*&      Form  GET_DATA_VBRP
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM GET_DATA_VBRP.

  SELECT VBELN
         POSNR
         FKIMG
         VRKME
         NETWR
         MATNR
         ARKTX
         FROM VBRP INTO TABLE IT_VBRP
         WHERE VBELN = TEMP_VBELN.

  IF SY-SUBRC <> 0.

    MESSAGE E000 WITH ' NO BILLING DETAILS FOUND'.
    EXIT.

  ELSE.

    MESSAGE S000 WITH 'SUCCESSFUL'.

  ENDIF.

ENDFORM.                    "GET_DATA_VBRP

*&--------------------------------------------------------------------*
*&      Form  GET_SECOND_SCREEN_DISPLAY
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM GET_SECOND_SCREEN_DISPLAY.

* FIELDCATALOG CALL

  X_FIELDCAT_VBRP-TABNAME = 'IT_VBRP'.
  X_FIELDCAT_VBRP-FIELDNAME = 'VRKME'.
  X_FIELDCAT_VBRP-EMPHASIZE = 'C500'.
  X_FIELDCAT_VBRP-OUTPUTLEN = 10.
  APPEND X_FIELDCAT_VBRP TO IT_FIELDCAT_VBRP.
  CLEAR X_FIELDCAT_VBRP.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         = SY-REPID
      I_INTERNAL_TABNAME     = 'IT_VBRP'
      I_INCLNAME             = SY-REPID
    CHANGING
      CT_FIELDCAT            = IT_FIELDCAT_VBRP
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_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.


* CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV


  IF LIST = 'X'.

    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
     EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
       IS_LAYOUT                      = L_LAYOUT
       IT_FIELDCAT                    = IT_FIELDCAT_VBRP
       I_SCREEN_START_COLUMN          = 1
       I_SCREEN_START_LINE            = 1
       I_SCREEN_END_COLUMN            = 100
       I_SCREEN_END_LINE              = 10
*       IT_EVENTS                      =

      TABLES
        T_OUTTAB                       = IT_VBRP

     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.


  ENDIF.


  IF GRID = 'X'.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
       IS_LAYOUT                      = L_LAYOUT
       IT_FIELDCAT                    = IT_FIELDCAT_VBRP
       I_SCREEN_START_COLUMN          = 1
       I_SCREEN_START_LINE            = 1
       I_SCREEN_END_COLUMN            = 100
       I_SCREEN_END_LINE              = 10
*       IT_EVENTS                      =

       TABLES
         T_OUTTAB                       = IT_VBRP

      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.

  ENDIF.


ENDFORM.                    "GET_SECOND_SCREEN_DISPLAY

Former Member
0 Kudos

Hi ,

An interactive ALV is similar to an interactive report only diff being here the data is diaplayed in ALV format.

For e.g

A program to which take as input a date range and displays as output list of all SO created in that range , now this can be displayed in an ALV , to make it interactive we add this functionality that when the user clicks on any of the SO then in the next ALV we need to display the item details of the SO.

Now to implement this you need to handle events in the ALV like double click , hot spot click e.t.c.

Regards

Arun

Former Member
0 Kudos

HI,

Check the following program on Interactive ALV.

BALVSD11

Regards,

Vara