Hi,
i use CALL METHOD O_GRID2->GET_SELECTED_ROWS but second alv selected I_ROWINDEX[] is intial.
why this reason happing ?
*&---------------------------------------------------------------------*
*& Report ZPLANLAMAEKRANI
*& Planma Ekranı ALV'yi iki ekranda göstermek REF : ZSD_ICL_P004
*&---------------------------------------------------------------------*
*& Mustafa Hamit
*& Bilgisayar Öğretmeni
*&---------------------------------------------------------------------*
REPORT ZPLANLAMAEKRANI.
TABLES : LIKP.
DATA : IT_LIKP TYPE STANDARD TABLE OF LIKP,
IT_LIKP2 TYPE STANDARD TABLE OF LIKP,
IT_LIKP3 TYPE STANDARD TABLE OF LIKP,
WA_LIKP LIKE LINE OF IT_LIKP,
STABLE TYPE LVC_S_STBL,
I_FIELDLIKP TYPE STANDARD TABLE OF LVC_S_FCAT,"Field catalog
GS_LAYOUT TYPE LVC_S_LAYO,
W_VARIANT TYPE DISVARIANT,
O_DOCKING TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Docking Container
O_GRID TYPE REF TO CL_GUI_ALV_GRID,"Grid.
O_DOCKING2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Docking Container
O_GRID2 TYPE REF TO CL_GUI_ALV_GRID,"Grid.
O_DOCKING3 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Docking Container
O_GRID3 TYPE REF TO CL_GUI_ALV_GRID,"Grid.
I_ROWINDEX TYPE LVC_T_ROW,
SELROWS_LINE LIKE LINE OF I_ROWINDEX.
DATA : BEGIN OF GT_LIKP OCCURS 0,
VBELN LIKE LIKP-VBELN,"Teslimat No
NTGEW LIKE LIKP-NTGEW,"Net Ağırlık
END OF GT_LIKP.
DATA : BEGIN OF GT_LIKP2 OCCURS 0,
VBELN LIKE LIKP-VBELN,"Teslimat No
NTGEW LIKE LIKP-NTGEW,"Net Ağırlık
END OF GT_LIKP2.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE BASLIK.
SELECT-OPTIONS SO_VBELN FOR LIKP-VBELN.
SELECTION-SCREEN END OF BLOCK B1.
*---- CLASS ALV ----*
*&---------------------------------------------------------------------*
*& Include ZPLANLAMAEKRAN_CLASS
*&---------------------------------------------------------------------*
CLASS LCL_EVENTHANDLER DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID
IMPORTING
ER_DATA_CHANGED
E_ONF4
E_ONF4_BEFORE
E_ONF4_AFTER
E_UCOMM
SENDER.
ENDCLASS. "lcl_eventhandler DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENTHANDLER IMPLEMENTATION.
METHOD HANDLE_DATA_CHANGED.
* define local data
DATA: LD_ANSWER(1) TYPE C.
" Triggers PAI -> required for list refresh
CALL METHOD CL_GUI_CFW=>SET_NEW_OK_CODE
EXPORTING
NEW_CODE = 'REFRESH'
* IMPORTING
* rc =
.
ENDMETHOD. "handle_data_changed
ENDCLASS. "LCL_EVENTHANDLER IMPLEMENTATION
*---- FORMLAR ----*
*&---------------------------------------------------------------------*
*& Include ZPLANLAMAEKRAN_FORMS
*&---------------------------------------------------------------------*
FORM GRID_YENILE.
IF O_GRID IS NOT INITIAL .
CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = STABLE.
ENDIF .
IF O_GRID2 IS NOT INITIAL .
CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = STABLE.
ENDIF .
IF O_GRID3 IS NOT INITIAL .
CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = STABLE.
ENDIF .
ENDFORM. "grid_yenile
*&---------------------------------------------------------------------*
*& Form CON1_olustur
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CON1_OLUSTUR.
CREATE OBJECT O_DOCKING
EXPORTING
CONTAINER_NAME = 'CON1' " Screen 1500 custom kontrol adı verilir...
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC EQ 0.
CREATE OBJECT O_GRID
EXPORTING
I_PARENT = O_DOCKING
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'LIKP'
CHANGING
CT_FIELDCAT = I_FIELDLIKP
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
W_VARIANT-REPORT = SY-REPID.
"GS_LAYOUT-SEL_MODE = 'A'. " ALV seçim aktif olsun...
GS_LAYOUT-ZEBRA = 'X'. " Zebra Görünümlü ALV olsun...
CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = W_VARIANT
I_SAVE = 'X'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = IT_LIKP
IT_FIELDCATALOG = I_FIELDLIKP
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
*----------------ALV Çoklu Seçme Açılıyor.......---------------*****
* CALL METHOD O_GRID->SET_READY_FOR_INPUT
* EXPORTING
* I_READY_FOR_INPUT = 1.
*
* CALL METHOD O_GRID->REGISTER_EDIT_EVENT
* EXPORTING
* I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
*
* CALL METHOD O_GRID->REGISTER_EDIT_EVENT
* EXPORTING
* I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
*----------------ALV Çoklu Seçme Açılıyor.......---------------*****
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "CON1_olustur
*&---------------------------------------------------------------------*
*& Form CON2_OLUSTUR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CON2_OLUSTUR.
IT_LIKP2[] = IT_LIKP.
CLEAR : WA_LIKP,IT_LIKP3.
*********bakkkkkkkkk
LOOP AT GT_LIKP2.
READ TABLE IT_LIKP INTO WA_LIKP WITH KEY VBELN = GT_LIKP2-VBELN.
IF SY-SUBRC EQ 0.
DELETE IT_LIKP2 WHERE VBELN = GT_LIKP2-VBELN.
CALL METHOD O_GRID2->FREE.
"PERFORM GRID_OLUSTUR USING O_GRID2 O_DOCKING2 IT_LIKP2.
CREATE OBJECT O_GRID2
EXPORTING
I_PARENT = O_DOCKING2
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
SET HANDLER LCL_EVENTHANDLER=>HANDLE_DATA_CHANGED FOR O_GRID2.
CALL METHOD O_GRID2->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'LIKP'
CHANGING
CT_FIELDCAT = I_FIELDLIKP
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
W_VARIANT-REPORT = SY-REPID.
GS_LAYOUT-SEL_MODE = 'A'. " ALV seçim aktif olsun...
GS_LAYOUT-ZEBRA = 'X'. " Zebra Görünümlü ALV olsun...
CALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = W_VARIANT
I_SAVE = 'X'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = IT_LIKP2
IT_FIELDCATALOG = I_FIELDLIKP
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
CALL METHOD O_DOCKING2->LINK
EXPORTING
REPID = SYST-REPID
DYNNR = '2000'
* CONTAINER =
EXCEPTIONS
OTHERS = 4.
ENDIF.
ENDLOOP.
*********bakkkkkkkkk
CREATE OBJECT O_DOCKING2
EXPORTING
CONTAINER_NAME = 'CON2' " Screen 2000 custom kontrol adı verilir...
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC EQ 0.
CREATE OBJECT O_GRID2
EXPORTING
I_PARENT = O_DOCKING2
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
SET HANDLER LCL_EVENTHANDLER=>HANDLE_DATA_CHANGED FOR O_GRID2.
CALL METHOD O_GRID2->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'LIKP'
CHANGING
CT_FIELDCAT = I_FIELDLIKP
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
W_VARIANT-REPORT = SY-REPID.
GS_LAYOUT-SEL_MODE = 'A'. " ALV seçim aktif olsun...
GS_LAYOUT-ZEBRA = 'X'. " Zebra Görünümlü ALV olsun...
CALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = W_VARIANT
I_SAVE = 'X'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = IT_LIKP2
IT_FIELDCATALOG = I_FIELDLIKP
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
PERFORM GRID_YENILE.
*----------------ALV Çoklu Seçme Açılıyor.......---------------*****
* CALL METHOD O_GRID2->SET_READY_FOR_INPUT
* EXPORTING
* I_READY_FOR_INPUT = 1.
*
* CALL METHOD O_GRID2->REGISTER_EDIT_EVENT
* EXPORTING
* I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
*----------------ALV Çoklu Seçme Açılıyor.......---------------*****
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "CON1_olustur
*&---------------------------------------------------------------------*
*& Form CON3_OLUSTUR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CON3_OLUSTUR.
CLEAR : WA_LIKP,IT_LIKP3.
*********bakkkkkkkkk
LOOP AT GT_LIKP2.
READ TABLE IT_LIKP INTO WA_LIKP WITH KEY VBELN = GT_LIKP2-VBELN.
IF SY-SUBRC EQ 0.
APPEND WA_LIKP TO IT_LIKP3.
CALL METHOD O_GRID3->FREE.
"PERFORM GRID_OLUSTUR USING O_GRID3 O_DOCKING3 IT_LIKP3.
CREATE OBJECT O_GRID3
EXPORTING
I_PARENT = O_DOCKING3
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'LIKP'
CHANGING
CT_FIELDCAT = I_FIELDLIKP
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
W_VARIANT-REPORT = SY-REPID.
GS_LAYOUT-SEL_MODE = 'A'. " ALV seçim aktif olsun...
GS_LAYOUT-ZEBRA = 'X'. " Zebra Görünümlü ALV olsun...
CALL METHOD O_GRID3->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = W_VARIANT
I_SAVE = 'X'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = IT_LIKP3
IT_FIELDCATALOG = I_FIELDLIKP
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
ENDIF.
ENDLOOP.
*********bakkkkkkkkk
CREATE OBJECT O_DOCKING3
EXPORTING
CONTAINER_NAME = 'CON3' " Screen 3000 custom kontrol adı verilir...
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
IF SY-SUBRC EQ 0.
CREATE OBJECT O_GRID3
EXPORTING
I_PARENT = O_DOCKING3
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'LIKP'
CHANGING
CT_FIELDCAT = I_FIELDLIKP
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
W_VARIANT-REPORT = SY-REPID.
GS_LAYOUT-SEL_MODE = 'A'. " ALV seçim aktif olsun...
GS_LAYOUT-ZEBRA = 'X'. " Zebra Görünümlü ALV olsun...
CALL METHOD O_GRID3->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = W_VARIANT
I_SAVE = 'X'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = IT_LIKP3
IT_FIELDCATALOG = I_FIELDLIKP
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
PERFORM GRID_YENILE.
*----------------ALV Çoklu Seçme Açılıyor.......---------------*****
* CALL METHOD O_GRID3->SET_READY_FOR_INPUT
* EXPORTING
* I_READY_FOR_INPUT = 1.
*
* CALL METHOD O_GRID3->REGISTER_EDIT_EVENT
* EXPORTING
* I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
*
* CALL METHOD O_GRID3->REGISTER_EDIT_EVENT
* EXPORTING
* I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
*
* CALL METHOD O_GRID3->CHECK_CHANGED_DATA.
*----------------ALV Çoklu Seçme Açılıyor.......---------------*****
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "CON1_olustur
*&---------------------------------------------------------------------*
*& Form grid_sec_oku
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GRID_SEC_OKU.
CLEAR GT_LIKP2.
CALL METHOD O_GRID2->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = I_ROWINDEX.
IF I_ROWINDEX[] IS NOT INITIAL .
LOOP AT I_ROWINDEX INTO SELROWS_LINE.
READ TABLE GT_LIKP INDEX SELROWS_LINE-INDEX.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING GT_LIKP TO GT_LIKP2.
APPEND GT_LIKP2.
ENDIF.
ENDLOOP.
ENDIF.
PERFORM GRID_YENILE.
ENDFORM. "grid_sec_oku
*&---------------------------------------------------------------------*
*& Form grid_olustur
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->O_DOCKING text
* -->O_GRID text
*----------------------------------------------------------------------*
FORM GRID_OLUSTUR USING O_GRID TYPE REF TO CL_GUI_ALV_GRID
O_DOCKING TYPE REF TO CL_GUI_CUSTOM_CONTAINER
IT_LIKP TYPE STANDARD TABLE OF LIKP.
CREATE OBJECT O_GRID
EXPORTING
I_PARENT = O_DOCKING
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'LIKP'
CHANGING
CT_FIELDCAT = I_FIELDLIKP
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
W_VARIANT-REPORT = SY-REPID.
GS_LAYOUT-SEL_MODE = 'A'. " ALV seçim aktif olsun...
GS_LAYOUT-ZEBRA = 'X'. " Zebra Görünümlü ALV olsun...
CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = W_VARIANT
I_SAVE = 'X'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = IT_LIKP
IT_FIELDCATALOG = I_FIELDLIKP
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
ENDFORM. "grid_olustur
*------------------------------------------------------------------------------------------------*
INITIALIZATION.
BASLIK = 'Teslimat Seç - Kamyonlaştır.'.
*------------------------------------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
*------------------------------------------------------------------------------------------------*
AT SELECTION-SCREEN.
IF SO_VBELN IS INITIAL.
MESSAGE 'Teslimat no girilmedi...' TYPE 'E'.
ENDIF.
*------------------------------------------------------------------------------------------------*
START-OF-SELECTION.
SELECT * FROM LIKP INTO TABLE IT_LIKP WHERE VBELN IN SO_VBELN.
IF SY-SUBRC NE 0.
MESSAGE 'Teslimat Seçilemedi' TYPE 'I'.
ENDIF.
*------------------------------------------------------------------------------------------------*
END-OF-SELECTION.
CALL SCREEN 1500.
*------------------------------------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_1500 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1500 OUTPUT.
SET PF-STATUS 'ZMUSTI'.
SET TITLEBAR 'Mustafa Hamit'.
PERFORM CON1_OLUSTUR.
CLEAR LIKP-NTGEW.
LOOP AT IT_LIKP INTO WA_LIKP.
*GT_LIKP doldur ve toplam tonaj bul.....
GT_LIKP-VBELN = WA_LIKP-VBELN.
GT_LIKP-NTGEW = WA_LIKP-NTGEW.
LIKP-NTGEW = LIKP-NTGEW + WA_LIKP-NTGEW.
*GT_LIKP doldur ve toplam tonaj bul.....
APPEND GT_LIKP.
ENDLOOP.
ENDMODULE. " STATUS_1500 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1500 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_1500 INPUT.
O_GRID->CHECK_CHANGED_DATA( ).
CASE SY-UCOMM.
WHEN 'CANCEL' OR 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'KAMYON'.
CALL SCREEN 2000.
ENDCASE.
ENDMODULE. " USER_COMMAND_1500 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_2000 OUTPUT.
SET PF-STATUS 'ZMUSTI2'.
SET TITLEBAR 'Mustafa Hamit'.
PERFORM CON2_OLUSTUR.
PERFORM CON3_OLUSTUR.
PERFORM GRID_YENILE.
ENDMODULE. " STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2000 INPUT.
O_GRID2->CHECK_CHANGED_DATA( ).
O_GRID3->CHECK_CHANGED_DATA( ).
CASE SY-UCOMM.
WHEN 'CANCEL' OR 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
LEAVE TO SCREEN 1500.
* SET SCREEN 1500.
* LEAVE SCREEN.
WHEN 'SAG'.
PERFORM GRID_SEC_OKU.
WHEN 'SOL'.
ENDCASE.
ENDMODULE. " USER_COMMAND_2000 INPUT