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

ALV GRID DISPLAY USING OOPS CONCEPT

Former Member
0 Likes
2,764

Actually

Trying to Design and ALV grid list using OOPS Programming, and list sales Orders for a particular Sales ORG and sales order(Will be inputted in the selection Screen, multiple inputs can be possible).

When user double clicks on any particular row it should take me to VA03 screen directly. But when i am executing the below code, after entering values for vbeln am not able to get the output. please help me on this.


REPORT  YASH_TEST_01 NO STANDARD PAGE HEADING .

*-----------------------------------------------------------------------*
*       DECLARATION OF CLASS

*-----------------------------------------------------------------------*

CLASS  LCL_EVENT_RECEIVER DEFINITION DEFERRED.

TYPE-POOLS : SLIS.

TABLES: VBAK.

TYPES: BEGIN OF TY_VBAK,
          VBELN TYPE VBAK-VBELN,
          VKORG TYPE VBAK-VBELN,
          GUEBG TYPE VBAK-GUEBG,
          GUEEN TYPE VBAK-GUEEN,
        END OF TY_VBAK.

DATA:   ITAB TYPE TABLE OF TY_VBAK,
         WA TYPE TY_VBAK,
         GC_CUSTOM_CONTROL_NAME TYPE VBELN VALUE 'CC_ALV',
         EVENTRECEIVER TYPE REF TO LCL_EVENT_RECEIVER.


DATA:   LT_FCAT TYPE LVC_T_FCAT,
         WA_FCAT TYPE LVC_S_FCAT,
         TY_FIELDCAT TYPE LVC_S_FCAT ,
         CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
         REF_GRID TYPE REF TO CL_GUI_ALV_GRID.


*---------------------------------------------------------------------*
*       CLASS EVENT RECEIVER DEFINITION
*---------------------------------------------------------------------*

CLASS LCL_EVENT_RECEIVER DEFINITION.

     PUBLIC SECTION.

     METHODS:

     HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                         IMPORTING E_ROW E_COLUMN ES_ROW_NO.

ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS EVENT RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*

CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.

   METHOD HANDLE_DOUBLE_CLICK.

     READ TABLE ITAB INTO WA INDEX E_ROW-INDEX.

     IF SY-SUBRC <> 0.
       MESSAGE ' * DATA IS NOT AVAILABLE * ' TYPE 'I'.
     ENDIF.

     SET PARAMETER ID 'VBELN' FIELD WA-VBELN.

     CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.


   ENDMETHOD.

   ENDCLASS.

*-----------------------------------------------------------------------*
*       SELECTION SCREEN DECLARATION.
*-----------------------------------------------------------------------*

    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T1.
    SELECTION-SCREEN SKIP 2.

    SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN NO INTERVALS.

    SELECTION-SCREEN SKIP 2.
    SELECTION-SCREEN END OF BLOCK B1.



INITIALIZATION.

        T1 = 'SELECT SALES ORDER NUMBER'.

START-OF-SELECTION.

        SELECT VBELN
               VKORG
               GUEBG
               GUEEN
               FROM VBAK
               INTO TABLE ITAB
               WHERE VBELN IN S_VBELN.


END-OF-SELECTION.
        IF NOT ITAB IS INITIAL.
               CALL SCREEN 9001.
        ENDIF.


  MODULE STATUS_9001 OUTPUT.

*-----------------------------------------------------------------------*
*       CREATING AN OBJECT.
*-----------------------------------------------------------------------*


CREATE OBJECT container
   EXPORTING
*    parent                      =
     container_name              = 'CONTAINER'
*    style                       =
*    lifetime                    = lifetime_default
*    repid                       =
*    dynnr                       =
*    no_autodef_progid_dynnr     =
*  EXCEPTIONS
*    cntl_error                  = 1
*    cntl_system_error           = 2
*    create_error                = 3
*    lifetime_error              = 4
*    lifetime_dynpro_dynpro_link = 5
*    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 OBJECT ref_grid
   EXPORTING
*    i_shellstyle      = 0
*    i_lifetime        =
     i_parent          = CONTAINER
*    i_appl_events     = space
*    i_parentdbg       =
*    i_applogparent    =
*    i_graphicsparent  =
*    i_name            =
*    i_fcat_complete   = space
*  EXCEPTIONS
*    error_cntl_create = 1
*    error_cntl_init   = 2
*    error_cntl_link   = 3
*    error_dp_create   = 4
*    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 HANDLER EVENTRECEIVER->HANDLE_DOUBLE_CLICK FOR REF_GRID.

   WA_FCAT-COL_POS  = 1.
   WA_FCAT-FIELDNAME = 'VBELN'.
   WA_FCAT-TABNAME = 'ITAB'.
   WA_FCAT-REPTEXT = 'SALES DOC NO'.
   WA_FCAT-EMPHASIZE = 'C711'.
   APPEND WA_FCAT TO LT_FCAT.

   WA_FCAT-COL_POS  = 2.
   WA_FCAT-FIELDNAME = 'VKORG'.
   WA_FCAT-TABNAME = 'ITAB'.
   WA_FCAT-REPTEXT = 'SALES-ORG.'.
   APPEND WA_FCAT TO LT_FCAT.

   WA_FCAT-COL_POS  = 3.
   WA_FCAT-FIELDNAME = 'GUEBG'.
   WA_FCAT-TABNAME = 'ITAB'.
   WA_FCAT-REPTEXT = 'FROM DATE'.
   APPEND WA_FCAT TO LT_FCAT.

   WA_FCAT-COL_POS  = 4.
   WA_FCAT-FIELDNAME = 'GUEEN'.
   WA_FCAT-TABNAME = 'ITAB'.
   WA_FCAT-REPTEXT = 'TILL DATE'.
   APPEND WA_FCAT TO LT_FCAT.


ENDMODULE. " STATUS_9001 OUTPUT

MODULE USER_COMMAND_9001 INPUT.



*-----------------------------------------------------------------------*
*      MERGING BEFORE THE ALV-GRID
*----------------------------------------------------------------

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
                 EXPORTING
*                  I_BUFFER_ACTIVE              =
                   I_STRUCTURE_NAME             = 'TY-VBAK'
*                  I_CLIENT_NEVER_DISPLAY       = 'X'
*                  I_BYPASSING_BUFFER           =
                   I_INTERNAL_TABNAME           = ITAB
                  CHANGING
                    ct_fieldcat                  = LT_FCAT
                 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.

*-----------------------------------------------------------------------*
*       DISPLAYING THE ALV-GRID
*-----------------------------------------------------------------------*

CALL METHOD ref_grid->set_table_for_first_display
   EXPORTING
*    i_buffer_active               =
*    i_bypassing_buffer            =
*    i_consistency_check           =
     i_structure_name              = 'TY_VBAK'
*    is_variant                    =
*    i_save                        =
*    i_default                     = 'X'
*    is_layout                     =
*    is_print                      =
*    it_special_groups             =
*    it_toolbar_excluding          =
*    it_hyperlink                  =
*    it_alv_graphics               =
*    it_except_qinfo               =
*    ir_salv_adapter               =
   CHANGING
     it_outtab                     = ITAB
     it_fieldcatalog               = LT_FCAT
*    it_sort                       =
*    it_filter                     =
   EXCEPTIONS
     invalid_parameter_combination = 1
     program_error                 = 2
     too_many_lines                = 3
     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.


ENDMODULE. " USER_COMMAND_9001 INPUT


TOP-OF-PAGE.
   WRITE  'SALES ORDER AND ITS SALES ORG DETAILS'.

1 ACCEPTED SOLUTION
Read only

jitendra_it
Active Contributor
0 Likes
1,707

Hi MADALAM,

code u have written in USER_COMMAND_9001 is not getting triggered since no user command at load of acreen. I think u can put that code in STATUS_9001  only.

u go for PAI event when u want some user action but first u have to display the ALV upon load of screen.

5 REPLIES 5
Read only

jitendra_it
Active Contributor
0 Likes
1,708

Hi MADALAM,

code u have written in USER_COMMAND_9001 is not getting triggered since no user command at load of acreen. I think u can put that code in STATUS_9001  only.

u go for PAI event when u want some user action but first u have to display the ALV upon load of screen.

Read only

0 Likes
1,707

Hi Jitendra,

Thanks for your reply.   I have tried it like how you said. But still am not able to display alv grid. the same problem is coming like before with no change.

Read only

0 Likes
1,707

Hi ,

for me that is working. it might be possible that in screen flow logic u haven't uncomment statements

MODULE STATUS_9001 and MODULE USER_COMMAND_9001.

Read only

0 Likes
1,707

Thanks for the reply JITENDRA

I am getting runtime error saying that 'RAISE_EXCEPTION" 

Program : CL_GUI_ALV_GRID========CP

Include: CL_GUI_ALV_GRID=========CM01J

Module Name: SET_SORT_CRITERIA.

please go through the code that am executing.

  

REPORT  YASH_TEST_01 NO STANDARD PAGE HEADING .

*-----------------------------------------------------------------------*
*       DECLARATION OF CLASS
*-----------------------------------------------------------------------*

CLASS  LCL_EVENT_RECEIVER DEFINITION DEFERRED.

TYPE-POOLS : SLIS.

TABLES: VBAK.

TYPES: BEGIN OF TY_VBAK,
         VBELN TYPE VBAK-VBELN,
         VKORG TYPE VBAK-VBELN,
         GUEBG TYPE VBAK-GUEBG,
         GUEEN TYPE VBAK-GUEEN,
       END OF TY_VBAK.

DATA:   ITAB TYPE TABLE OF TY_VBAK,
        WA TYPE TY_VBAK,
        GC_CUSTOM_CONTROL_NAME TYPE VBELN VALUE 'CC_ALV',
        EVENTRECEIVER TYPE REF TO LCL_EVENT_RECEIVER,
        OK_CODE.


DATA:   LT_FCAT TYPE LVC_T_FCAT,
        WA_FCAT TYPE LVC_S_FCAT,
        TY_FIELDCAT TYPE LVC_S_FCAT ,
        CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
        REF_GRID TYPE REF TO CL_GUI_ALV_GRID.


*---------------------------------------------------------------------*
*       CLASS EVENT RECEIVER DEFINITION
*---------------------------------------------------------------------*

CLASS LCL_EVENT_RECEIVER DEFINITION.

    PUBLIC SECTION.

    METHODS:

    HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                        IMPORTING E_ROW E_COLUMN ES_ROW_NO.

ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS EVENT RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*

CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.

  METHOD HANDLE_DOUBLE_CLICK.

    READ TABLE ITAB INTO WA INDEX E_ROW-INDEX.

    IF SY-SUBRC <> 0.
      MESSAGE ' * DATA IS NOT AVAILABLE * ' TYPE 'I'.
    ENDIF.

    SET PARAMETER ID 'VBELN' FIELD WA-VBELN.

    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.


  ENDMETHOD.

  ENDCLASS.

*-----------------------------------------------------------------------*
*       SELECTION SCREEN DECLARATION.
*-----------------------------------------------------------------------*

   SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T1.
   SELECTION-SCREEN SKIP 2.

   SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN NO INTERVALS OBLIGATORY.

   SELECTION-SCREEN SKIP 2.
   SELECTION-SCREEN END OF BLOCK B1.



INITIALIZATION.

       T1 = 'SELECT SALES ORDER NUMBER'.

START-OF-SELECTION.
       
       SELECT VBELN
              VKORG
              GUEBG
              GUEEN
              FROM VBAK
              INTO TABLE ITAB
              WHERE VBELN IN S_VBELN.


END-OF-SELECTION.
       IF NOT ITAB IS INITIAL.
              CALL SCREEN 9001.
       ENDIF.


TOP-OF-PAGE.
  WRITE  'SALES ORDER AND ITS SALES ORG DETAILS'.
*&---------------------------------------------------------------------*
*&      MODULE  STATUS_9001  OUTPUT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*

MODULE STATUS_9001 OUTPUT.
  SET PF-STATUS '1111'.
*  SET TITLEBAR 'XXX'.



*-----------------------------------------------------------------------*
*       CREATING AN OBJECT.
*-----------------------------------------------------------------------*


CREATE OBJECT CONTAINER
  EXPORTING
*    PARENT                      =
    CONTAINER_NAME              = 'CONTAINER'
*    STYLE                       =
*    LIFETIME                    = LIFETIME_DEFAULT
*    REPID                       =
*    DYNNR                       =
*    NO_AUTODEF_PROGID_DYNNR     =
  EXCEPTIONS
    CNTL_ERROR                  = 1
    CNTL_SYSTEM_ERROR           = 2
    CREATE_ERROR                = 3
    LIFETIME_ERROR              = 4
    LIFETIME_DYNPRO_DYNPRO_LINK = 5
    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 OBJECT REF_GRID
  EXPORTING
*    I_SHELLSTYLE      = 0
*    I_LIFETIME        =
    I_PARENT          = CONTAINER
*    I_APPL_EVENTS     = SPACE
*    I_PARENTDBG       =
*    I_APPLOGPARENT    =
*    I_GRAPHICSPARENT  =
*    I_NAME            =
*    I_FCAT_COMPLETE   = SPACE
  EXCEPTIONS
    ERROR_CNTL_CREATE = 1
    ERROR_CNTL_INIT   = 2
    ERROR_CNTL_LINK   = 3
    ERROR_DP_CREATE   = 4
    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.

*-----------------------------------------------------------------------*
*       DISPLAYING THE ALV-GRID
*-----------------------------------------------------------------------*


CALL METHOD REF_GRID->SET_TABLE_FOR_FIRST_DISPLAY
  EXPORTING
*    I_BUFFER_ACTIVE               =
*    I_BYPASSING_BUFFER            =
*    I_CONSISTENCY_CHECK           =
    I_STRUCTURE_NAME              = 'TY_VBAK'
*    IS_VARIANT                    =
*    I_SAVE                        =
*    I_DEFAULT                     = 'X'
*    IS_LAYOUT                     =
*    IS_PRINT                      =
*    IT_SPECIAL_GROUPS             =
*    IT_TOOLBAR_EXCLUDING          =
*    IT_HYPERLINK                  =
*    IT_ALV_GRAPHICS               =
*    IT_EXCEPT_QINFO               =
*    IR_SALV_ADAPTER               =
  CHANGING
    IT_OUTTAB                     = ITAB
    IT_FIELDCATALOG               = LT_FCAT
*    IT_SORT                       =
*    IT_FILTER                     =
  EXCEPTIONS
    INVALID_PARAMETER_COMBINATION = 1
    PROGRAM_ERROR                 = 2
    TOO_MANY_LINES                = 3
    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.


SET HANDLER EVENTRECEIVER->HANDLE_DOUBLE_CLICK FOR REF_GRID.

  WA_FCAT-COL_POS  = 1.
  WA_FCAT-FIELDNAME = 'VBELN'.
  WA_FCAT-TABNAME = 'ITAB'.
  WA_FCAT-REPTEXT = 'SALES DOC NO'.
  WA_FCAT-EMPHASIZE = 'C711'.
  APPEND WA_FCAT TO LT_FCAT.
  CLEAR WA_FCAT.

  WA_FCAT-COL_POS  = 2.
  WA_FCAT-FIELDNAME = 'VKORG'.
  WA_FCAT-TABNAME = 'ITAB'.
  WA_FCAT-REPTEXT = 'SALES-ORG.'.
  APPEND WA_FCAT TO LT_FCAT.
  CLEAR WA_FCAT.

  WA_FCAT-COL_POS  = 3.
  WA_FCAT-FIELDNAME = 'GUEBG'.
  WA_FCAT-TABNAME = 'ITAB'.
  WA_FCAT-REPTEXT = 'FROM DATE'.
  APPEND WA_FCAT TO LT_FCAT.
  CLEAR WA_FCAT.

  WA_FCAT-COL_POS  = 4.
  WA_FCAT-FIELDNAME = 'GUEEN'.
  WA_FCAT-TABNAME = 'ITAB'.
  WA_FCAT-REPTEXT = 'TILL DATE'.
  APPEND WA_FCAT TO LT_FCAT.
  CLEAR WA_FCAT.


ENDMODULE.                 " STATUS_9001  OUTPUT
*&---------------------------------------------------------------------*
*&      MODULE  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.

  OK_CODE = SY-UCOMM.

  CASE OK_CODE.

    WHEN 'BACK'.
      LEAVE TO SCREEN 0.

    WHEN 'ENTER'.
      LEAVE TO TRANSACTION 'VA03'.

  ENDCASE.



ENDMODULE.                 " USER_COMMAND_9001  INPUT

Read only

0 Likes
1,707

i have uncommented the modules in screen painter. Is there any thing that i should do in screen painter other than this.