Skip to Content
author's profile photo Former Member
Former Member

DATA_CHANGED event handler is not triggered after input.(OO ALV)

Dear Experts,

What I did:

I register Enter as the trigger event for data_changed event, and I put my checking logic in data_changed_handler which is a method of a local class. When the checking fails, I put messages using er_data_changed->add_protocal_entry to show messages.

My checking is simple, if the cell is empty, error messages pops up tells that this cell can not be blank for this row.

My problem:

When there is no entry in the alv list(Only this situation), I insert a new entry, the cell which is required is empty, I press Enter, data_changed event is triggered, the message pops up saying that the cell is required. Then close the pop up message window, I input something in the cell, and press enter. The data_changed event is not triggered.

Is there any1 has any ideas on this problem?

Vicnent

Edited by: Changjiu Tan on Sep 7, 2009 1:33 PM

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

1 Answer

  • author's profile photo Former Member
    Former Member
    Posted on Sep 07, 2009 at 11:34 AM
      METHOD HANDLE_DATA_CHANGED.                               "#EC NEEDED
    
    *<<<  BEGIN MODIFY EXAMPLE CODE
    *   u4FDDu5B58u30C7u30FCu30BFu3092u7DE8u96C6u3059u308Bu3000START
        DATA: LW_INS      TYPE LVC_S_MOCE,
              LV_FNAME    TYPE LVC_FNAME,
              LW_MOD      TYPE LVC_S_MODI,
              LV_MAX      TYPE I,
              LV_RES(12)  TYPE C,
              LW_LIST     TYPE ZTSRE012,
              LV_ROWID    TYPE LVC_S_ROID,
              LT_MOD      TYPE LVC_T_MODI,
              LV_COLID    TYPE LVC_S_COL,
    
              LV_ROW_ID    TYPE LVC_S_ROW,
              LV_COL_ID    TYPE LVC_S_COL.
    
    *   u73FEu5728u306Eu30D5u30A9u30FCu30ABu30B9u4F4Du7F6Eu3092u53D6u5F97
        CALL METHOD GO_ALV_GRID7->GET_CURRENT_CELL
          IMPORTING
            ES_ROW_ID = LV_ROW_ID
            ES_COL_ID = LV_COL_ID.
    
        LOOP AT GT_LIST INTO LW_LIST.
          IF LW_LIST-ID > LV_MAX.
            LV_MAX = LW_LIST-ID.
          ENDIF.
        ENDLOOP.
    *   u30B0u30EBu30FCu30D7ID
        LV_FNAME = CNS_ID.
        LOOP AT ER_DATA_CHANGED->MT_INSERTED_ROWS INTO LW_INS.
          LV_MAX = LV_MAX + 1.
          CALL METHOD ER_DATA_CHANGED->MODIFY_CELL
            EXPORTING
              I_ROW_ID    = LW_INS-ROW_ID
              I_FIELDNAME = LV_FNAME
              I_VALUE     = LV_MAX.
        ENDLOOP.
        CLEAR: LV_FNAME.
    
        LT_MOD[] = ER_DATA_CHANGED->MT_GOOD_CELLS[].
    
    *   u30C7u30FCu30BFu30C1u30A7u30C3u30AF
        LOOP AT LT_MOD INTO LW_MOD.
          IF LW_MOD-FIELDNAME = CNS_ZZTTSN.
    
            LV_COLID-FIELDNAME = LW_MOD-FIELDNAME.
            LV_ROWID-ROW_ID    = LW_MOD-ROW_ID.
    
            CALL METHOD GO_ALV_GRID7->SET_CURRENT_CELL_VIA_ID
              EXPORTING
                IS_COLUMN_ID = LV_COLID
                IS_ROW_NO    = LV_ROWID.
    
            CALL METHOD GO_ALV_GRID7->GET_CURRENT_CELL
              IMPORTING
                E_VALUE = LV_RES.
    
            IF LV_RES IS INITIAL.
    
              CALL METHOD ER_DATA_CHANGED->ADD_PROTOCOL_ENTRY
                EXPORTING
                  I_MSGID     = CNS_MSGID
                  I_MSGTY     = CNS_MSGTY
                  I_MSGNO     = CNS_MSGNO
                  I_FIELDNAME = LW_MOD-FIELDNAME
                  I_ROW_ID    = LW_MOD-ROW_ID.
            ENDIF.
            CALL METHOD ER_DATA_CHANGED->MODIFY_CELL
              EXPORTING
                I_ROW_ID    = LW_MOD-ROW_ID
                I_FIELDNAME = LW_MOD-FIELDNAME
                I_VALUE     = LV_RES.
           ENDIF.
          CLEAR:  LV_RES,
                  LV_COLID,
                  LV_ROWID.
        ENDLOOP.
    
        CALL METHOD GO_ALV_GRID7->SET_CURRENT_CELL_VIA_ID
          EXPORTING
            IS_ROW_ID    = LV_ROW_ID
            IS_COLUMN_ID = LV_COL_ID.
    
    
      ENDMETHOD.                    "handle_data_changed
    

    Edited by: Changjiu Tan on Sep 7, 2009 1:31 PM

    Edited by: Changjiu Tan on Sep 7, 2009 1:32 PM

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.