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

Back button in Interactive OO AlV

Former Member
0 Likes
1,745

Hi Experts,

Screen Flow

Screen 100 input ->screen 200 list of sales order -> screen 300 list of items.

Having problem while clicking back button on screen 300  i will be on Screen 200 and again if i double click another sales order i am getting same items which displayed when i double click sales order for first time.

  METHOD handle_double_click.

    DATA: w_vbak LIKE LINE OF t_vbak.

* Following checks not a total line

   

* read selected row from your internal table

    READ TABLE t_VBAK INDEX e_row-index INTO W_VBAK.

    SELECT * FROM VBAP

    INTO TABLE t_VBAP

    WHERE VBELN = W_VBAK-VBELN.

    CALL SCREEN 300.

  ENDMETHOD.                           "handle_double_click

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,416

Put a break point at READ TABLE t_VBAK INDEX e_row-index INTO W_VBAK.

and check the e_row-index value .I

Clear your work always.

CLEAR : W_VBAK.

and do the refresh of T_VBAP internal table.

  METHOD handle_double_click.

    DATA: w_vbak LIKE LINE OF t_vbak.

   REFRESH : T_VBAP.

   CLEAR : W_VBAK.

* Following checks not a total line

   

* read selected row from your internal table

    READ TABLE t_VBAK INDEX e_row-index INTO W_VBAK.

    SELECT * FROM VBAP

    INTO TABLE t_VBAP

    WHERE VBELN = W_VBAK-VBELN.

    CALL SCREEN 300.

  ENDMETHOD.                           "handle_double_click

9 REPLIES 9
Read only

Former Member
0 Likes
1,416

Hi

Before going back probably you need to release you custom container by method FREE

Max

Read only

0 Likes
1,416

Hi Max,

Yes i had free But still its not working.

Read only

Former Member
0 Likes
1,417

Put a break point at READ TABLE t_VBAK INDEX e_row-index INTO W_VBAK.

and check the e_row-index value .I

Clear your work always.

CLEAR : W_VBAK.

and do the refresh of T_VBAP internal table.

  METHOD handle_double_click.

    DATA: w_vbak LIKE LINE OF t_vbak.

   REFRESH : T_VBAP.

   CLEAR : W_VBAK.

* Following checks not a total line

   

* read selected row from your internal table

    READ TABLE t_VBAK INDEX e_row-index INTO W_VBAK.

    SELECT * FROM VBAP

    INTO TABLE t_VBAP

    WHERE VBELN = W_VBAK-VBELN.

    CALL SCREEN 300.

  ENDMETHOD.                           "handle_double_click

Read only

0 Likes
1,416

Hi Raj,

i had Refresh and clear also but still it is not working. i had set the break point and check it values are changing but it is not impacting on  the output.

Read only

0 Likes
1,416

Hi

Try to post your code

Max

Read only

0 Likes
1,416

REPORT  ZOOP_ABAP_CUSTOM_CONTAINER_SO.

TABLES : VBAK,VBAP.

DATA O_G TYPE REF TO CL_GUI_ALV_GRID.

DATA O_C TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA T_VBAK TYPE TABLE OF VBAK.

DATA T_VBAP TYPE TABLE OF VBAP.

DATA W_LAYOUT TYPE LVC_S_LAYO.

DATA O_G1 TYPE REF TO CL_GUI_ALV_GRID.

DATA O_C1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA : W_VBAK LIKE VBAK.

DATA FLAG TYPE C.

CALL SCREEN 100.

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

* CLASS lcl_event_receiver DEFINITION

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

CLASS LCL_EVENT_HANDLER DEFINITION.

  PUBLIC SECTION.

    METHODS:

* Double click handler

    HANDLE_DOUBLE_CLICK

        FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

            IMPORTING E_ROW E_COLUMN.

ENDCLASS.                    "lcl_event_handler DEFINITION

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

* CLASS lcl_event_receiver IMPLEMENTATION

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

CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

  METHOD HANDLE_DOUBLE_CLICK.

    DATA: W_VBAK LIKE LINE OF T_VBAK.

* Following checks not a total line

    CHECK E_ROW-ROWTYPE(1) EQ SPACE.

    CLEAR W_VBAK.

    REFRESH T_VBAP.

* read selected row from your internal table

    READ TABLE T_VBAK INDEX E_ROW-INDEX INTO W_VBAK.

    SELECT * FROM VBAP

    INTO TABLE T_VBAP

    WHERE VBELN = W_VBAK-VBELN.

    CALL SCREEN 300.

  ENDMETHOD.                           "handle_double_click

ENDCLASS.                    "lcl_event_handler1 IMPLEMENTATION

DATA O_EVENT_HANDLER    TYPE REF TO LCL_EVENT_HANDLER.

*&---------------------------------------------------------------------*

*&      Module  STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*

*       text

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

MODULE STATUS_0100 OUTPUT.

  SET PF-STATUS 'ZSTATUS'.

*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*

*       text

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

MODULE USER_COMMAND_0100 INPUT.

  CASE SY-UCOMM.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'EXECUTE'.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*

*&      Module  STATUS_0200  OUTPUT

*&---------------------------------------------------------------------*

MODULE STATUS_0200 OUTPUT.

  IF O_C IS INITIAL.

    SET PF-STATUS 'ZASTAS'.

*  SET TITLEBAR 'xxx'.

    CREATE OBJECT O_C

      EXPORTING

*    PARENT                      =

        CONTAINER_NAME              = 'CNTNR'

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

    IF SY-SUBRC = 0.

      CREATE OBJECT O_G

        EXPORTING

*    I_SHELLSTYLE      = 0

*    I_LIFETIME        =

          I_PARENT          = O_C

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

    ENDIF.

    IF SY-SUBRC = 0.

      W_LAYOUT-SEL_MODE = 'D'.

      CALL METHOD O_G->SET_TABLE_FOR_FIRST_DISPLAY

        EXPORTING

*    I_BUFFER_ACTIVE               =

*    I_BYPASSING_BUFFER            =

*    I_CONSISTENCY_CHECK           =

          I_STRUCTURE_NAME              = 'VBAK'

*    IS_VARIANT                    =

*    I_SAVE                        =

*    I_DEFAULT                     = 'X'

          IS_LAYOUT                     = W_LAYOUT

*    IS_PRINT                      =

*    IT_SPECIAL_GROUPS             =

*    IT_TOOLBAR_EXCLUDING          =

*    IT_HYPERLINK                  =

*    IT_ALV_GRAPHICS               =

*    IT_EXCEPT_QINFO               =

*    IR_SALV_ADAPTER               =

        CHANGING

          IT_OUTTAB                     = T_VBAK[]

*    IT_FIELDCATALOG               =

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

    ENDIF.

  ENDIF.

  CREATE OBJECT O_EVENT_HANDLER.

  SET HANDLER O_EVENT_HANDLER->HANDLE_DOUBLE_CLICK FOR O_G.

ENDMODULE.                 " STATUS_0200  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_0200  INPUT

*&---------------------------------------------------------------------*

*       text

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

MODULE USER_COMMAND_0200 INPUT.

  CASE SY-UCOMM.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'BACK'.

      LEAVE TO SCREEN 100.

    WHEN 'EXECUTE'.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0200  INPUT

*&---------------------------------------------------------------------*

*&      Module  READ_DATA  OUTPUT

*&---------------------------------------------------------------------*

*       text

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

MODULE READ_DATA OUTPUT.

  SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE T_VBAK  WHERE KUNNR = VBAK-KUNNR.

*BREAK-POINT.

ENDMODULE.                 " READ_DATA  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  STATUS_0300  OUTPUT

*&---------------------------------------------------------------------*

*       text

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

MODULE STATUS_0300 OUTPUT.

  IF O_C1 IS INITIAL.

    SET PF-STATUS 'ZSAS'.

    CREATE OBJECT O_C1

      EXPORTING

*    PARENT                      =

        CONTAINER_NAME              = 'CNTNR1'

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

    IF SY-SUBRC = 0.

      CREATE OBJECT O_G1

        EXPORTING

*    I_SHELLSTYLE      = 0

*    I_LIFETIME        =

          I_PARENT          = O_C1

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

    ENDIF.

    IF SY-SUBRC = 0.

      CALL METHOD O_G1->SET_TABLE_FOR_FIRST_DISPLAY

        EXPORTING

*    I_BUFFER_ACTIVE               =

          I_BYPASSING_BUFFER            = 'X'

*    I_CONSISTENCY_CHECK           =

          I_STRUCTURE_NAME              = 'VBAP'

*    IS_VARIANT                    =

*    I_SAVE                        = 'A'

*    I_DEFAULT                     = 'X'

*    IS_LAYOUT                     = W_LAYOUT

**    IS_PRINT                      =

*    IT_SPECIAL_GROUPS             =

*    IT_TOOLBAR_EXCLUDING          =

*    IT_HYPERLINK                  =

*    IT_ALV_GRAPHICS               =

*    IT_EXCEPT_QINFO               =

*    IR_SALV_ADAPTER               =

        CHANGING

          IT_OUTTAB                     = T_VBAP[]

*    IT_FIELDCATALOG               =

*    IT_SORT                       =

*    IT_FILTER                     =

*  EXCEPTIONS

*    INVALID_PARAMETER_COMBINATION = 1

*    PROGRAM_ERROR                 = 2

*    TOO_MANY_LINES                = 3

*    others                        = 4

              .

      CALL METHOD O_G1->FREE.

      CALL METHOD O_C1->FREE.

    ENDIF.

  ENDIF.

ENDMODULE.                 " STATUS_0300  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_0300  INPUT

*&---------------------------------------------------------------------*

*       text

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

MODULE USER_COMMAND_0300 INPUT.

  CASE SY-UCOMM.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'BACK'.

*PERFORM FREE_OB.

      CALL SCREEN 200.

      LEAVE TO  SCREEN 0.

  ENDCASE.

*

ENDMODULE.                 " USER_COMMAND_0300  INPUT

*&---------------------------------------------------------------------*

*&      Module  READ  OUTPUT

*&---------------------------------------------------------------------*

*       text

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

MODULE READ OUTPUT.

*CALL METHOD O_G1->REFRESH_TABLE_DISPLAY

**  EXPORTING

**    IS_STABLE      =

**    I_SOFT_REFRESH =

**  EXCEPTIONS

**    FINISHED       = 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.

*break-point.

ENDMODULE.                 " READ  OUTPUT

*&---------------------------------------------------------------------*

*&      Form  FREE_OB

*&---------------------------------------------------------------------*

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FREE_OB .

*CALL METHOD O_G1->FREE

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

*CALL METHOD O_C1->FREE

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

Read only

0 Likes
1,416

Hi

I can't understand why you "free" the custom container just after to display the ALV in module STATUS_0300.

When you back to screen 200 from 300, the form to free the container is not active, module USER_COMMAND_0300

Max

Read only

0 Likes
1,416

the form free which is not active is not working  i tried that one also.

Read only

0 Likes
1,416

Hi

I think you should delete the call of method FREE in STATUS_0300

MODULE STATUS_0300 OUTPUT.

  IF O_C1 IS INITIAL.

    SET PF-STATUS 'ZSAS'.

    CREATE OBJECT O_C1

      EXPORTING

*    PARENT                      =

        CONTAINER_NAME              = 'CNTNR1'

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

    IF SY-SUBRC = 0.

      CREATE OBJECT O_G1

        EXPORTING

*    I_SHELLSTYLE      = 0

*    I_LIFETIME        =

          I_PARENT          = O_C1

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

    ENDIF.

    IF SY-SUBRC = 0.

      CALL METHOD O_G1->SET_TABLE_FOR_FIRST_DISPLAY

        EXPORTING

*    I_BUFFER_ACTIVE               =

          I_BYPASSING_BUFFER            = 'X'

*    I_CONSISTENCY_CHECK           =

          I_STRUCTURE_NAME              = 'VBAP'

*    IS_VARIANT                    =

*    I_SAVE                        = 'A'

*    I_DEFAULT                     = 'X'

*    IS_LAYOUT                     = W_LAYOUT

**    IS_PRINT                      =

*    IT_SPECIAL_GROUPS             =

*    IT_TOOLBAR_EXCLUDING          =

*    IT_HYPERLINK                  =

*    IT_ALV_GRAPHICS               =

*    IT_EXCEPT_QINFO               =

*    IR_SALV_ADAPTER               =

        CHANGING

          IT_OUTTAB                     = T_VBAP[]

*    IT_FIELDCATALOG               =

*    IT_SORT                       =

*    IT_FILTER                     =

*  EXCEPTIONS

*    INVALID_PARAMETER_COMBINATION = 1

*    PROGRAM_ERROR                 = 2

*    TOO_MANY_LINES                = 3

*    others                        = 4

              .

*     CALL METHOD O_G1->FREE.  <----------------- Delete this

*     CALL METHOD O_C1->FREE.  <----------------- Delete this

    ENDIF.

  ENDIF.

ENDMODULE.                 " STATUS_0300  OUTPUT

and the form  FREE_OB should be

FORM FREE_OB .

    IF NOT O_C1 IS INITIAL.

      CALL METHOD O_C1->FREE

          EXCEPTIONS

             CNTL_ERROR                   = 1

            CNTL_SYSTEM_ERROR = 2

            others                                   = 3

        CLEAR O_C1.

    ENDIF.

You need to clear the custom container in order to create a new one for the new data: you check if it's INITIAL at the begging of module status_0300

MODULE STATUS_0300 OUTPUT.

  IF O_C1 IS INITIAL. <---------------------------

Max