You are on page 1of 28

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

*& Report ZZW2R006_ALV_TEST copy of BCALV_TEST_GRID_DRAG_DROP *


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

REPORT zzw2r006_alv_test.

*----------------------------------------------------------------------*
* D A T A *
*----------------------------------------------------------------------*

*>>>Begin of YRA
TABLES lips.
TABLES likp.
TABLES vbfa.
TABLES ltap.
*TABLES zzw2r006_tempo.

*Begin of structure of LIPS


TYPES: BEGIN OF ty_lips,
vbeln TYPE lips-vbeln, "Delivery number
posnr TYPE lips-posnr, "Item number
lgnum TYPE lips-lgnum, "Wahrehouse number
lgtyp TYPE lips-lgtyp,
END OF ty_lips.
*End of structure of LIPS
DATA : t_lips TYPE STANDARD TABLE OF ty_lips,
wa_lips TYPE ty_lips.

*Begin of structure of VBFA


TYPES: BEGIN OF ty_vbfa,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln TYPE vbfa-vbeln,
posnn TYPE vbfa-posnn,
END OF ty_vbfa.
*End of structure of VBFA
DATA : t_vbfa TYPE TABLE OF ty_vbfa,
wa_vbfa TYPE ty_vbfa.

*Begin of structure of LTAP


TYPES: BEGIN OF ty_ltap,
vlpla TYPE ltap-vlpla,
lgnum TYPE ltap-lgnum,
tanum TYPE ltap-tanum,
tapos TYPE ltap-tapos,
END OF ty_ltap.
*End of structure of LTAP
DATA : t_ltap TYPE TABLE OF ty_ltap,
wa_ltap TYPE ty_ltap.

*Begin of structure of VBFA BIS


TYPES: BEGIN OF ty_vbfa_bis,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
vbeln TYPE ltap-tanum,
posnn TYPE ltap-tapos,
END OF ty_vbfa_bis.
*End of structure of VBFA BIS

DATA : t_vbfa_bis TYPE TABLE OF ty_vbfa_bis,


wa_vbfa_bis TYPE ty_vbfa_bis.
*
*DATA t_zzw16 TYPE HASHED TABLE OF zzw16
* WITH UNIQUE KEY lgnum lgtyp zrow zlev.

*DATA t_zzw17 TYPE HASHED TABLE OF zzw17


* WITH UNIQUE KEY lgnum lgtyp zsbin.

*Begin of structure final


TYPES: BEGIN OF ty_final,
vbeln TYPE likp-vbeln,
posnr TYPE lips-posnr,
lgnum TYPE lips-lgnum,
lgtyp TYPE lips-lgtyp,
tanum TYPE ltap-tanum,
tapos TYPE ltap-tapos,
* znew TYPE zzw2r006_ltap-znew,
* zseq TYPE zzw17-zseq,
END OF ty_final.
*End of structure final

DATA : t_final TYPE TABLE OF ty_final,


wa_final TYPE ty_final.
*>>>End of YRA

*TYPES: g_ty_s_sflight TYPE alv_t_t2. "DESACIVATED


TYPES: g_ty_s_sflight TYPE likp.

CONSTANTS: con_sflight TYPE lvc_fname VALUE 'LIKP'. "DESACIVATED


"need to create zzw2r006_ltap to have the field name.
*CONSTANTS: con_sflight TYPE lvc_fname VALUE 'S'.

CONSTANTS: con_exit TYPE sy-ucomm VALUE 'EXIT',


con_canc TYPE sy-ucomm VALUE 'CANC',
con_back TYPE sy-ucomm VALUE 'BACK',

con_true TYPE char1 VALUE 'X',

con_edit_grid TYPE i VALUE 1,


con_edit_column TYPE i VALUE 2,
con_edit_cell TYPE i VALUE 3,

con_edit_mode_display TYPE i VALUE 1,


con_edit_mode_change TYPE i VALUE 2,

con_edit_event_enter TYPE i VALUE 1,


con_edit_event_modify TYPE i VALUE 2,

con_source TYPE i VALUE 1,


con_target TYPE i VALUE 2,

con_dragdrop_row TYPE i VALUE 1,


con_dragdrop_column TYPE i VALUE 2,
con_dragdrop_cell TYPE i VALUE 3,

con_dragdrop_effect_move TYPE i VALUE 1,


con_dragdrop_effect_copy TYPE i VALUE 2,
con_dragdrop_effect_all TYPE i VALUE 3.

CLASS cl_gui_resources DEFINITION LOAD.


CLASS lcl_events_d0100 DEFINITION DEFERRED.

TYPES: BEGIN OF g_ty_s_test, "DESACTIVATED


select_amount TYPE i,
no_info_popup TYPE char1,
info_popup_once TYPE char1,
events_info_popup TYPE lvc_fname OCCURS 0,
edit_type TYPE i,
edit_mode TYPE i,
edit_event TYPE i,
edit_fields TYPE lvc_fname OCCURS 0,
dragdrop_type TYPE i,
dragdrop_effect TYPE i,
dragdrop_fields TYPE lvc_fname OCCURS 0,
bypassing_buffer TYPE char1,
buffer_active TYPE char1,
END OF g_ty_s_test,

BEGIN OF g_ty_s_outtab.
INCLUDE TYPE g_ty_s_sflight.
TYPES: "table type char10,
count TYPE i,
box TYPE char1,
lights TYPE char1,
handle_style TYPE lvc_t_styl,
handle_dragdrop TYPE lvc_t_drdr,
tabcolor TYPE lvc_t_scol,
END OF g_ty_s_outtab,
g_ty_t_outtab TYPE TABLE OF g_ty_s_outtab.

DATA: g_field TYPE lvc_fname.

DATA: g_okcode TYPE sy-ucomm.

DATA: gs_test TYPE g_ty_s_test. "DESACTIVATED

DATA: gt_outtab_source TYPE g_ty_t_outtab,


gt_outtab_target TYPE g_ty_t_outtab,

gr_container_d0100_source TYPE REF TO cl_gui_custom_container,


gr_grid_d0100_source TYPE REF TO cl_gui_alv_grid,

gr_container_d0100_target TYPE REF TO cl_gui_custom_container,


gr_grid_d0100_target TYPE REF TO cl_gui_alv_grid,

gr_events_d0100 TYPE REF TO lcl_events_d0100,


gr_dragdrop_d0100 TYPE REF TO cl_dragdrop,
gr_dragdrop_background_d0100 TYPE REF TO cl_dragdrop.

*---------------------------------------------------------------------*
* CLASS lcl_events_d0100 DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_events_d0100 DEFINITION.
PUBLIC SECTION.
DATA:
m_grid TYPE i.

METHODS:
data_changed FOR EVENT data_changed
OF cl_gui_alv_grid
IMPORTING er_data_changed
e_onf4
e_onf4_before
e_onf4_after,

data_changed_finished
FOR EVENT data_changed_finished
OF cl_gui_alv_grid,

ondrag FOR EVENT ondrag


OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj,

ondrop FOR EVENT ondrop


OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj,

ondropcomplete FOR EVENT ondropcomplete


OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj,

ondropgetflavor FOR EVENT ondropgetflavor


OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj
e_flavors.
ENDCLASS. "lcl_events_d0100 DEFINITION

*---------------------------------------------------------------------*
* CLASS lcl_events_d0100 IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_events_d0100 IMPLEMENTATION.
*---------------------------------------------------------------------*
* METHOD data_cahnged *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
METHOD data_changed.
PERFORM d0100_event_data_changed USING er_data_changed
e_onf4
e_onf4_before
e_onf4_after
m_grid.
ENDMETHOD. "data_changed
*---------------------------------------------------------------------*
* METHOD data_changed_finished *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
METHOD data_changed_finished.
PERFORM d0100_event_data_changed_finis.
ENDMETHOD. "data_changed_finished
*---------------------------------------------------------------------*
* METHOD ondrag *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
METHOD ondrag.
PERFORM d0100_event_ondrag USING e_row
e_column
e_dragdropobj.
ENDMETHOD. "ondrag

*---------------------------------------------------------------------*
* METHOD ondrop *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
METHOD ondrop.
PERFORM d0100_event_ondrop USING e_row
e_column
e_dragdropobj.
ENDMETHOD. "ondrop

*---------------------------------------------------------------------*
* METHOD ondropcomplete *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
METHOD ondropcomplete.
PERFORM d0100_event_ondropcomplete USING e_row
e_column
e_dragdropobj.
ENDMETHOD. "ondropcomplete

*---------------------------------------------------------------------*
* METHOD ondropgetflavor *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
METHOD ondropgetflavor.
PERFORM d0100_event_ondropgetflavor USING e_row
e_column
es_row_no
e_dragdropobj
e_flavors.
ENDMETHOD. "ondropgetflavor
ENDCLASS. "lcl_events_d0100 IMPLEMENTATION

*---------------------------------------------------------------------*
* CLASS lcl_dragdrop_obj_d0100 DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_dragdrop_obj_d0100 DEFINITION.
PUBLIC SECTION.
DATA: line TYPE g_ty_s_outtab,
index TYPE i.
ENDCLASS. "lcl_dragdrop_obj_d0100 DEFINITION

*----------------------------------------------------------------------*
* SELECTION-SCREEN *
*----------------------------------------------------------------------*

*>>>Begin of YRA
SELECTION-SCREEN : BEGIN OF BLOCK b1. "WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS p_vbeln TYPE likp-vbeln OBLIGATORY DEFAULT '2000027642'.
SELECTION-SCREEN : END OF BLOCK b1.
*>>>End of YRA

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST *
*----------------------------------------------------------------------*

*>>>Begin of YRA
AT SELECTION-SCREEN ON p_vbeln.

DATA l_vbeln TYPE likp-vbeln.


IF p_vbeln IS NOT INITIAL.
CLEAR l_vbeln.
SELECT SINGLE vbeln
FROM likp
INTO l_vbeln
WHERE vbeln = p_vbeln.
IF sy-subrc <> 0.
MESSAGE e559(vl) WITH p_vbeln.
ENDIF.
ENDIF.

START-OF-SELECTION.
* PERFORM f100_select_data.
* PERFORM f200_data_treatment.

gs_test-bypassing_buffer = space.
gs_test-buffer_active = space.

*----------------------------------------------------------------------*
* END-OF-SELECTION *
*----------------------------------------------------------------------*
END-OF-SELECTION.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module d0100_set_status OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE d0100_set_status OUTPUT.
PERFORM d0100_set_status.
ENDMODULE. " d0100_set_status OUTPUT

*&---------------------------------------------------------------------*
*& Module d0100_prepare_container OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE d0100_prepare_container OUTPUT.
PERFORM d0100_prepare_container.
ENDMODULE. " d0100_prepare_container OUTPUT

*&---------------------------------------------------------------------*
*& Module d0100_exit INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE d0100_exit INPUT.
PERFORM d0100_exit.
ENDMODULE. " d0100_exit INPUT

*&---------------------------------------------------------------------*
*& Module d0100_fcode INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE d0100_fcode INPUT.
PERFORM d0100_fcode.
ENDMODULE. " d0100_fcode INPUT

*&---------------------------------------------------------------------*
*& Form d0100_set_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_set_status .

TYPES: BEGIN OF l_ty_s_excl,


func TYPE syucomm,
END OF l_ty_s_excl,
l_ty_t_excl TYPE STANDARD TABLE OF l_ty_s_excl.

DATA: lt_excl TYPE l_ty_t_excl.

SET PF-STATUS 'D0100' EXCLUDING lt_excl.


SET TITLEBAR 'D0100'.

ENDFORM. " d0100_set_status

*&---------------------------------------------------------------------*
*& Form d0100_prepare_container
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_prepare_container .

DATA: lt_fcat TYPE lvc_t_fcat,


ls_layo TYPE lvc_s_layo,
ls_vari TYPE disvariant,
l_consistency_check TYPE char1.

IF gr_container_d0100_source IS INITIAL.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CREATE OBJECT gr_container_d0100_source
EXPORTING
container_name = 'D0100_CONTAINER_SOURCE'.
ENDIF.

CREATE OBJECT gr_grid_d0100_source


EXPORTING
i_parent = gr_container_d0100_source.

PERFORM d0100_get_outtab.

PERFORM d0100_set_grid_vari CHANGING ls_vari.


PERFORM d0100_set_grid_layo CHANGING ls_layo.
PERFORM d0100_set_grid_fcat CHANGING lt_fcat.
PERFORM d0100_set_grid_events USING con_source.
PERFORM d0100_set_grid_edit USING con_source
CHANGING ls_layo
lt_fcat.
PERFORM d0100_set_drag_drop USING con_source
CHANGING ls_layo
lt_fcat.

CALL METHOD gr_grid_d0100_source->set_table_for_first_display


EXPORTING
i_buffer_active = gs_test-buffer_active
i_bypassing_buffer = gs_test-bypassing_buffer
i_consistency_check = l_consistency_check
is_variant = ls_vari
i_save = 'A'
i_default = con_true
is_layout = ls_layo
CHANGING
it_outtab = gt_outtab_source[]
it_fieldcatalog = lt_fcat.
ENDIF.

IF gr_container_d0100_target IS INITIAL.
CREATE OBJECT gr_container_d0100_target
EXPORTING
container_name = 'D0100_CONTAINER_TARGET'.

CREATE OBJECT gr_grid_d0100_target


EXPORTING
i_parent = gr_container_d0100_target.

PERFORM d0100_set_grid_vari CHANGING ls_vari.


PERFORM d0100_set_grid_layo CHANGING ls_layo.
PERFORM d0100_set_grid_fcat CHANGING lt_fcat.
PERFORM d0100_set_grid_events USING con_target.
PERFORM d0100_set_grid_edit USING con_target
CHANGING ls_layo
lt_fcat.
PERFORM d0100_set_drag_drop USING con_target
CHANGING ls_layo
lt_fcat.

CALL METHOD gr_grid_d0100_target->set_table_for_first_display


EXPORTING
i_buffer_active = space
i_consistency_check = l_consistency_check
is_variant = ls_vari
i_save = 'A'
i_default = con_true
is_layout = ls_layo
CHANGING
it_outtab = gt_outtab_target[]
it_fieldcatalog = lt_fcat.
ENDIF.

ENDFORM. " d0100_prepare_container

*&---------------------------------------------------------------------*
*& Form d0100_exit
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_exit .

DATA: l_okcode LIKE sy-ucomm.

l_okcode = g_okcode.
CLEAR g_okcode.

CASE l_okcode.
WHEN con_exit OR con_back OR con_canc.
CALL METHOD gr_grid_d0100_source->free.
CALL METHOD gr_container_d0100_source->free.
CALL METHOD gr_grid_d0100_target->free.
CALL METHOD gr_container_d0100_target->free.

CALL METHOD cl_gui_cfw=>flush.

CLEAR gr_container_d0100_source.
CLEAR gr_grid_d0100_source.
CLEAR gr_container_d0100_target.
CLEAR gr_grid_d0100_target.
CLEAR gr_events_d0100.

SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.

ENDFORM. " d0100_exit

*&---------------------------------------------------------------------*
*& Form d0100_fcode
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_fcode .

DATA: l_okcode LIKE sy-ucomm.

l_okcode = g_okcode.
CLEAR g_okcode.

CASE l_okcode.
WHEN con_exit OR con_back OR con_canc.
g_okcode = l_okcode.
PERFORM d0100_exit.
ENDCASE.

ENDFORM. " d0100_fcode

*&---------------------------------------------------------------------*
*& Form d0100_set_grid_vari
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_set_grid_vari CHANGING cs_vari TYPE disvariant.

cs_vari-report = sy-repid.
cs_vari-handle = space.
cs_vari-log_group = space.
cs_vari-username = space.
cs_vari-variant = space.
cs_vari-text = space.
cs_vari-dependvars = space.

ENDFORM. " d0100_set_grid_vari

*&---------------------------------------------------------------------*
*& Form d0100_set_grid_layo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_set_grid_layo CHANGING cs_layo TYPE lvc_s_layo.

*... ALV-Control: Allgemeine Anzeigeoptionen


cs_layo-stylefname = space.

cs_layo-cwidth_opt = con_true.
cs_layo-zebra = space.
cs_layo-smalltitle = space.
cs_layo-graphics = space.
cs_layo-frontend = space.
cs_layo-template = space.

*... ALV-Control: Gridcustomizing


cs_layo-no_colexpd = space.
cs_layo-no_hgridln = space.
cs_layo-no_vgridln = space.
cs_layo-no_rowmark = space.
cs_layo-no_headers = space.
cs_layo-no_merging = space.
cs_layo-grid_title = space.
cs_layo-no_toolbar = space.

cs_layo-sel_mode = 'D'.

cs_layo-box_fname = space.

cs_layo-sgl_clk_hd = space.

*... ALV-Control: Summenoptionen


cs_layo-totals_bef = space.
cs_layo-no_totline = space.
cs_layo-numc_total = space.
cs_layo-no_utsplit = space.

*... ALV-Control: Exceptions


cs_layo-excp_fname = space.
cs_layo-excp_rolln = space.
cs_layo-excp_conds = space.
cs_layo-excp_led = space.

*... ALV-Control: Steuerung Interaktion


cs_layo-detailinit = space.
cs_layo-detailtitl = space.
cs_layo-keyhot = space.
cs_layo-no_keyfix = space.
cs_layo-no_author = space.
CLEAR cs_layo-s_dragdrop.

*... ALV-Control: Farben


cs_layo-info_fname = space.
cs_layo-ctab_fname = 'TABCOLOR'.

*... ALV-Control: Eingabef�higkeit


cs_layo-edit = con_true.
cs_layo-edit_mode = space.

cs_layo-no_rowins = space.
cs_layo-no_rowmove = space.

*... ALV-Control: Web-Optionen


cs_layo-weblook = space.
cs_layo-webstyle = space.
cs_layo-webrows = space.
cs_layo-webxwidth = space.
cs_layo-webxheight = space.

ENDFORM. " d0100_set_grid_layo

*&---------------------------------------------------------------------*
*& Form d0100_set_grid_fcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_set_grid_fcat CHANGING ct_fcat TYPE lvc_t_fcat.

DATA: l_bypassing_buffer TYPE char1,


l_buffer_active TYPE char1,
ls_fcat TYPE lvc_s_fcat.
CLEAR ct_fcat[].

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'


EXPORTING
i_buffer_active = l_buffer_active
i_structure_name = con_sflight
i_client_never_display = con_true
i_bypassing_buffer = l_bypassing_buffer
CHANGING
ct_fieldcat = ct_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.

CLEAR ls_fcat.
ls_fcat-tabname = '1'.
ls_fcat-fieldname = 'TABLE'.
ls_fcat-inttype = 'C'.
ls_fcat-datatype = 'CHAR'.
ls_fcat-intlen = 10.
ls_fcat-scrtext_s = ls_fcat-fieldname.
ls_fcat-scrtext_m = ls_fcat-fieldname.
ls_fcat-scrtext_l = ls_fcat-fieldname.
APPEND ls_fcat TO ct_fcat.

ENDFORM. " d0100_set_grid_fcat

*&---------------------------------------------------------------------*
*& Form d0100_set_grid_events
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_set_grid_events USING i_grid TYPE i.

CREATE OBJECT gr_events_d0100.

CASE i_grid.
WHEN con_source.
gr_events_d0100->m_grid = con_source.

SET HANDLER gr_events_d0100->ondrag


FOR gr_grid_d0100_source.

SET HANDLER gr_events_d0100->ondrop


FOR gr_grid_d0100_source.

SET HANDLER gr_events_d0100->ondropcomplete


FOR gr_grid_d0100_source.

SET HANDLER gr_events_d0100->ondropgetflavor


FOR gr_grid_d0100_source.

SET HANDLER gr_events_d0100->data_changed


FOR gr_grid_d0100_source.
SET HANDLER gr_events_d0100->data_changed_finished
FOR gr_grid_d0100_source.

WHEN con_target.
gr_events_d0100->m_grid = con_target.

SET HANDLER gr_events_d0100->ondrag


FOR gr_grid_d0100_target.

SET HANDLER gr_events_d0100->ondrop


FOR gr_grid_d0100_target.

SET HANDLER gr_events_d0100->ondropcomplete


FOR gr_grid_d0100_target.

SET HANDLER gr_events_d0100->ondropgetflavor


FOR gr_grid_d0100_target.

SET HANDLER gr_events_d0100->data_changed


FOR gr_grid_d0100_target.

SET HANDLER gr_events_d0100->data_changed_finished


FOR gr_grid_d0100_target.
ENDCASE.

ENDFORM. " d0100_set_grid_events

*&---------------------------------------------------------------------*
*& Form d0100_set_grid_edit
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_set_grid_edit USING i_grid TYPE i
CHANGING cs_layo TYPE lvc_s_layo
ct_fcat TYPE lvc_t_fcat.

FIELD-SYMBOLS: <ls_fcat> TYPE lvc_s_fcat.

DATA: ls_edit TYPE lvc_s_styl,


lt_edit TYPE lvc_t_styl,
ls_field TYPE lvc_fname,
ls_outtab TYPE g_ty_s_outtab.

DATA: l_index TYPE i,


l_erg TYPE i.

CASE gs_test-edit_type.
WHEN con_edit_grid.
*... Grid Editerbar
* In Layout wird Feld EDIT auf 'X' gesetzt
cs_layo-edit = con_true.

WHEN con_edit_column.
*... Spalteneditierbar
* In Feldkatalog wird Feld EDIT auf 'X' gesetzt f�r Spalte CARRID
LOOP AT gs_test-edit_fields INTO ls_field.
READ TABLE ct_fcat ASSIGNING <ls_fcat>
WITH KEY fieldname = ls_field.
IF sy-subrc EQ 0.
<ls_fcat>-edit = con_true.
ENDIF.
ENDLOOP.

WHEN con_edit_cell.
*... Zellen-Editierbar
* In Layout wird Feld SYTLEFNAME auf 'HANDLE_STYLE' gesetzt
cs_layo-stylefname = 'HANDLE_STYLE'.

WHEN con_source.
LOOP AT gt_outtab_source INTO ls_outtab.
l_index = sy-tabix.
l_erg = l_index MOD 2.
IF l_erg EQ 0.
LOOP AT gs_test-edit_fields INTO ls_field.
ls_edit-fieldname = ls_field.
ls_edit-style = cl_gui_alv_grid=>mc_style_enabled.
ls_edit-style2 = space.
ls_edit-style3 = space.
ls_edit-style4 = space.
ls_edit-maxlen = 8.
INSERT ls_edit INTO TABLE lt_edit.
ENDLOOP.

INSERT LINES OF lt_edit INTO TABLE ls_outtab-handle_style.

MODIFY gt_outtab_source INDEX l_index FROM ls_outtab


TRANSPORTING handle_style.
ENDIF.
ENDLOOP.

WHEN con_target.
LOOP AT gt_outtab_target INTO ls_outtab.
l_index = sy-tabix.
l_erg = l_index MOD 2.
IF l_erg EQ 0.
LOOP AT gs_test-edit_fields INTO ls_field.
ls_edit-fieldname = ls_field.
ls_edit-style = cl_gui_alv_grid=>mc_style_enabled.
ls_edit-style2 = space.
ls_edit-style3 = space.
ls_edit-style4 = space.
ls_edit-maxlen = 8.
INSERT ls_edit INTO TABLE lt_edit.
ENDLOOP.

INSERT LINES OF lt_edit INTO TABLE ls_outtab-handle_style.

MODIFY gt_outtab_target INDEX l_index FROM ls_outtab


TRANSPORTING handle_style.
ENDIF.
ENDLOOP.

WHEN OTHERS.
EXIT.
ENDCASE.

CASE gs_test-edit_event.
WHEN con_edit_event_enter.
*... hiermit erfolgt eine Pr�fung nach Eingabe wenn ENTER gedr�ckt wird
CASE i_grid.
WHEN con_source.
CALL METHOD gr_grid_d0100_source->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
WHEN con_target.
CALL METHOD gr_grid_d0100_target->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
ENDCASE.

WHEN con_edit_event_modify.
*... hiermit erfolgt eine Pr�fung nach jeder �nderung
CASE i_grid.
WHEN con_source.
CALL METHOD gr_grid_d0100_source->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
WHEN con_target.
CALL METHOD gr_grid_d0100_target->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
ENDCASE.
ENDCASE.

CASE gs_test-edit_mode.
WHEN con_edit_mode_change.
*... hier wird alles was editierbar sein kann auch editierbar gemacht
CASE i_grid.
WHEN con_source.
CALL METHOD gr_grid_d0100_source->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
WHEN con_target.
CALL METHOD gr_grid_d0100_target->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ENDCASE.
WHEN con_edit_mode_display.
*... hier wird alles was editierbar sein kann nicht editierbar gemacht
CASE i_grid.
WHEN con_source.
CALL METHOD gr_grid_d0100_source->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
WHEN con_target.
CALL METHOD gr_grid_d0100_target->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDCASE.
ENDCASE.

* cs_layo-no_rowins = gs_test-no_row_ins.
* cs_layo-no_rowmove = gs_test-no_row_move.

ENDFORM. " d0100_set_grid_edit


*>>>Begin of YRA
*&---------------------------------------------------------------------*
*& Form f100_select_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f100_select_data.

" get all item of the selected delivery


SELECT vbeln
posnr
lgnum
lgtyp
FROM lips
INTO TABLE t_lips
WHERE vbeln = p_vbeln.

" get all TO items linked to delivery items.


* VBFA
* VBELV - POSNV
* VBELN - POSNN
" make the selection only if delivery items have been found, otherwise,
" selection without restriction => selection of all VBFA

IF t_lips IS NOT INITIAL .


SELECT vbelv
posnv
vbeln
posnn
FROM vbfa
INTO TABLE t_vbfa
FOR ALL ENTRIES IN t_lips
WHERE vbelv = t_lips-vbeln
AND posnv = t_lips-posnr
AND vbtyp_n = 'Q'.
ENDIF.

" need to transfer vbfa data into other table


" to have successor document number with TO number format
LOOP AT t_vbfa INTO wa_vbfa.
CLEAR wa_vbfa_bis.
MOVE-CORRESPONDING wa_vbfa TO wa_vbfa_bis.
APPEND wa_vbfa_bis TO t_vbfa_bis.
ENDLOOP.

IF t_vbfa_bis IS NOT INITIAL.


SELECT vlpla "Source Storage Bin
lgnum
tanum
tapos
FROM ltap
INTO TABLE t_ltap
FOR ALL ENTRIES IN t_vbfa_bis
WHERE tanum = t_vbfa_bis-vbeln
AND tapos = t_vbfa_bis-posnn.
ENDIF.
ENDFORM. "f100_select_data

*&---------------------------------------------------------------------*
*& Form f200_data_treatment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f200_data_treatment.

LOOP AT t_lips INTO wa_lips


WHERE vbeln = wa_lips-vbeln
AND posnr = wa_lips-posnr.

" construire la table de sortie.


*check TOP include
LOOP AT t_final INTO wa_final
WHERE vbeln = wa_final-vbeln
AND posnr = wa_final-posnr
AND lgnum = wa_final-lgnum
AND lgtyp = wa_final-lgtyp
AND tanum = wa_final-tanum
AND tapos = wa_final-tapos.
* AND znew = wa_final-znew
* AND zseq = wa_final-zseq.
APPEND wa_final TO t_final.
ENDLOOP.

* >>>>>> READ alternative to LOOP (� voir)

" clear structure de sortie


CLEAR wa_final.

"move-corresponding wa_lips to structure de sortie


MOVE-CORRESPONDING wa_lips TO wa_final.
APPEND wa_final TO t_final.

" get TO information for current delivery item.


LOOP AT t_vbfa_bis INTO wa_vbfa_bis
WHERE vbelv = wa_lips-vbeln
AND posnv = wa_lips-posnr.

" clear all fields of structure de sortie that come from vbfa or ltap
CLEAR wa_final.
CLEAR wa_vbfa_bis.

" structure de sortie - tanum = wa_vbfa_bis-tanum.


"tanum = t_vbfa_bis-vbeln
wa_final-tanum = wa_vbfa_bis-vbeln.
" structure de sortie - tapos = wa_vbfa_bis-tapos.
"tapos = t_vbfa_bis-posnn.
wa_final-tapos = wa_vbfa_bis-posnn.

READ TABLE t_ltap INTO wa_ltap


WITH KEY lgnum = wa_lips-lgnum
tanum = wa_vbfa_bis-vbeln
tapos = wa_vbfa_bis-posnn.

" move data from ltap into structure de sortie.


MOVE-CORRESPONDING wa_ltap TO wa_final.

" append structure de sortie to table de sortie


APPEND wa_final TO t_final.
" get VLPLA
" get ZSEQ

ENDLOOP.
ENDLOOP.

" sort table de sortie.


* SORT t_final BY zseq DESCENDING.

ENDFORM. "f100_data_treatment

*&---------------------------------------------------------------------*
*& Form f300_display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*

*Form f300_display_data.
*
*ENDFORM.

"Begin of F100_GET_VLPLA
*&---------------------------------------------------------------------*
*& Form f100_get_vlpla_upd
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PW_LTAP text
*----------------------------------------------------------------------*
*FORM f100_get_vlpla_upd CHANGING pw_ltap TYPE zzw2r006_ltap.
* DATA lw_zzw16 LIKE LINE OF t_zzw16.
* DATA l_zrow TYPE zzw16-zrow.
* DATA l_zlev TYPE zzw16-zlev.
*
* pw_ltap-vlpla_upd = pw_ltap-vlpla.
* IF pw_ltap-vlpla IS INITIAL.
* RETURN.
* ENDIF.
* FIND REGEX '^(...)-..-(..)\s*$' IN pw_ltap-vlpla SUBMATCHES l_zrow l_zlev.
* IF sy-subrc NE 0. " not like XXX-XX-XX
* RETURN.
* ENDIF.
* READ TABLE t_zzw16 INTO lw_zzw16
* WITH TABLE KEY lgnum = pw_ltap-lgnum
* lgtyp = pw_ltap-vltyp
* zrow = l_zrow
* zlev = l_zlev
* TRANSPORTING znew.
* IF sy-subrc NE 0.
* SELECT SINGLE znew INTO lw_zzw16-znew
* FROM zzw16
* WHERE lgnum EQ pw_ltap-lgnum
* AND lgtyp EQ pw_ltap-vltyp
* AND zrow EQ l_zrow
* AND zlev EQ l_zlev.
* IF sy-subrc NE 0.
* CLEAR lw_zzw16-znew.
* ENDIF.
* lw_zzw16-lgnum = pw_ltap-lgnum.
* lw_zzw16-lgtyp = pw_ltap-vltyp.
* lw_zzw16-zrow = l_zrow.
* lw_zzw16-zlev = l_zlev.
* INSERT lw_zzw16 INTO TABLE t_zzw16.
* ENDIF.
* IF lw_zzw16-znew IS INITIAL.
* RETURN.
* ENDIF.
* pw_ltap-znew = lw_zzw16-znew.
* pw_ltap-vlpla_upd(3) = lw_zzw16-znew.
*ENDFORM.
*"End of F100_GET_VLPLA

"Begin of F100_GET_SEQ
*&---------------------------------------------------------------------*
*& Form f100_get_sequence
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PW_LTAP text
*----------------------------------------------------------------------*
*FORM f100_get_sequence CHANGING pw_ltap TYPE zzw2r006_ltap.
* DATA lw_zzw17 LIKE LINE OF t_zzw17.
*
* READ TABLE t_zzw17 INTO lw_zzw17
* WITH TABLE KEY lgnum = pw_ltap-lgnum
* lgtyp = pw_ltap-vltyp
* zsbin = pw_ltap-vlpla_upd
* TRANSPORTING zseq.
* IF sy-subrc NE 0.
* SELECT SINGLE zseq INTO lw_zzw17-zseq
* FROM zzw17
* WHERE lgnum EQ pw_ltap-lgnum
* AND lgtyp EQ pw_ltap-vltyp
* AND zsbin EQ pw_ltap-vlpla_upd.
* IF sy-subrc NE 0.
* lw_zzw17-zseq = '9999999'. " if not found => at the end
* ENDIF.
* lw_zzw17-lgnum = pw_ltap-lgnum.
* lw_zzw17-lgtyp = pw_ltap-vltyp.
* lw_zzw17-zsbin = pw_ltap-vlpla_upd.
* INSERT lw_zzw17 INTO TABLE t_zzw17.
* ENDIF.
* IF lw_zzw17-zseq IS INITIAL.
* RETURN.
* ENDIF.
* pw_ltap-zseq = lw_zzw17-zseq.
*ENDFORM.
"End of F100_GET_SEQ
*>>>End of YRA

*&---------------------------------------------------------------------*
*& Form d0100_get_outtab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_get_outtab .
DATA: ls_outtab TYPE g_ty_s_outtab.

PERFORM f100_select_data.
PERFORM f200_data_treatment.

MOVE-CORRESPONDING t_lips TO gt_outtab_source.

gt_outtab_target[] = gt_outtab_source[].

*SORT T_FINAL BY ZSEQ DESCENDING. "ADD YRA

ENDFORM. " d0100_get_outtab

*&---------------------------------------------------------------------*
*& Form d0100_event_ondrag
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_event_ondrag USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
e_dragdropobj TYPE REF TO
cl_dragdropobject. "#EC *

DATA: l_event TYPE lvc_fname. "#EC NEEDED

IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDRAG'.
IF sy-subrc NE 0.
INSERT 'ONDRAG'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH TEXT-t01.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH TEXT-t01.
ENDIF.

DATA: ls_outtab TYPE g_ty_s_outtab,


l_obj TYPE REF TO lcl_dragdrop_obj_d0100.

CREATE OBJECT l_obj.

CASE e_dragdropobj->dragsourcectrl.
WHEN gr_grid_d0100_source.
READ TABLE gt_outtab_source INTO ls_outtab INDEX e_row-index.
WHEN gr_grid_d0100_target.
READ TABLE gt_outtab_target INTO ls_outtab INDEX e_row-index.
ENDCASE.
IF sy-subrc EQ 0.
l_obj->line = ls_outtab.
l_obj->index = e_row-index.
e_dragdropobj->object = l_obj.
ENDIF.

ENDFORM. " d0100_event_ondrag

*&---------------------------------------------------------------------*
*& Form d0100_event_ondrop
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_event_ondrop USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
e_dragdropobj TYPE REF TO
cl_dragdropobject. "#EC *

DATA: l_event TYPE lvc_fname. "#EC NEEDED

IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDROP'.
IF sy-subrc NE 0.
INSERT 'ONDROP'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH TEXT-t02.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH TEXT-t02.
ENDIF.

DATA: l_obj TYPE REF TO lcl_dragdrop_obj_d0100,


ls_outtab TYPE g_ty_s_outtab.

CREATE OBJECT l_obj.

IF e_row-index IS INITIAL.
e_row-index = 1.
ENDIF.

CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.


l_obj ?= e_dragdropobj->object.
ls_outtab = l_obj->line.
CASE e_dragdropobj->effect.
WHEN cl_dragdrop=>move.
CASE e_dragdropobj->droptargetctrl.
WHEN gr_grid_d0100_source.
INSERT ls_outtab INTO gt_outtab_source INDEX e_row-index.
WHEN gr_grid_d0100_target.
INSERT ls_outtab INTO gt_outtab_target INDEX e_row-index.
ENDCASE.
WHEN cl_dragdrop=>copy.
CASE e_dragdropobj->droptargetctrl.
WHEN gr_grid_d0100_source.
INSERT ls_outtab INTO gt_outtab_source INDEX e_row-index.
WHEN gr_grid_d0100_target.
INSERT ls_outtab INTO gt_outtab_target INDEX e_row-index.
ENDCASE.
ENDCASE.
ENDCATCH.
IF sy-subrc <> 0.
CALL METHOD e_dragdropobj->abort.
ENDIF.

ENDFORM. " d0100_event_ondrop

*&---------------------------------------------------------------------*
*& Form d0100_event_ondropcomplete
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_event_ondropcomplete USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
e_dragdropobj TYPE REF TO
cl_dragdropobject. "#EC *

DATA: l_event TYPE lvc_fname. "#EC NEEDED

IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDROPCOMPLETE'.
IF sy-subrc NE 0.
INSERT 'ONDROPCOMPLETE'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH TEXT-t03.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH TEXT-t03.
ENDIF.

DATA: l_obj TYPE REF TO lcl_dragdrop_obj_d0100,


ls_stable TYPE lvc_s_stbl,
lr_grid TYPE REF TO cl_gui_alv_grid.

ls_stable-row = con_true.
ls_stable-col = con_true.

CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.


l_obj ?= e_dragdropobj->object.
IF e_dragdropobj->effect = cl_dragdrop=>move.
DELETE gt_outtab_source INDEX l_obj->index.
ENDIF.
ENDCATCH.
CASE sy-subrc.
WHEN 0.
CASE e_dragdropobj->effect.
WHEN cl_dragdrop=>move.
lr_grid ?= e_dragdropobj->dragsourcectrl.
CALL METHOD lr_grid->refresh_table_display
EXPORTING
is_stable = ls_stable.
lr_grid ?= e_dragdropobj->droptargetctrl.
CALL METHOD lr_grid->refresh_table_display
EXPORTING
is_stable = ls_stable.

WHEN cl_dragdrop=>copy.
lr_grid ?= e_dragdropobj->droptargetctrl.
CALL METHOD lr_grid->refresh_table_display
EXPORTING
is_stable = ls_stable.
ENDCASE.
WHEN OTHERS.
CALL METHOD e_dragdropobj->abort.
ENDCASE.
ENDFORM. " d0100_event_ondropcomplete

*&---------------------------------------------------------------------*
*& Form d0100_event_ondropgetflavor
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_event_ondropgetflavor USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
es_row_no TYPE lvc_s_roid
e_dragdropobj TYPE REF TO
cl_dragdropobject
e_flavors TYPE cndd_flavors.
"#EC *

DATA: l_event TYPE lvc_fname. "#EC NEEDED

IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDROPGETFLAVOR'.
IF sy-subrc NE 0.
INSERT 'ONDROPGETFLAVOR'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH TEXT-t04.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH TEXT-t04.
ENDIF.

ENDFORM. " d0100_event_ondropgetflavor

*&---------------------------------------------------------------------*
*& Form d0100_set_drag_drop
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_set_drag_drop USING i_grid TYPE i
CHANGING cs_layo TYPE lvc_s_layo
ct_fcat TYPE lvc_t_fcat.

DATA: l_effect TYPE i,


l_dragdrop_handle TYPE i,
ls_dragdrop TYPE lvc_s_dd01,
ls_drag_cell TYPE lvc_s_drdr,
lt_drag_cells TYPE lvc_t_drdr,
ls_fcat TYPE lvc_s_fcat,
l_field TYPE lvc_fname,
l_source TYPE char1,
l_target TYPE char1,
ls_outtab TYPE g_ty_s_outtab,
ls_tabcolor TYPE lvc_s_scol,
lt_tabcolor TYPE lvc_t_scol.

CASE i_grid.
WHEN con_source.
l_source = con_true.
WHEN con_target.
l_target = con_true.
ENDCASE.
l_source = con_true.
l_target = con_true.

CREATE OBJECT gr_dragdrop_d0100.


CREATE OBJECT gr_dragdrop_background_d0100.

CASE gs_test-dragdrop_effect.
WHEN con_dragdrop_effect_move.
l_effect = cl_dragdrop=>move.
WHEN con_dragdrop_effect_copy.
l_effect = cl_dragdrop=>copy.
WHEN con_dragdrop_effect_all.
l_effect = cl_dragdrop=>move + cl_dragdrop=>copy.
ENDCASE.

CASE gs_test-dragdrop_type.
WHEN con_dragdrop_row.
*... setzen f�r alle Zeilen
* Im Layout wird S_DRAGDROP mit Handle gef�llt
CALL METHOD gr_dragdrop_d0100->add
EXPORTING
flavor = 'Line' "#EC NOTEXT
dragsrc = l_source
droptarget = l_target
effect = l_effect.

CALL METHOD gr_dragdrop_d0100->get_handle


IMPORTING
handle = l_dragdrop_handle.

ls_dragdrop-cntr_ddid = l_dragdrop_handle. "auch bei leerem Grid


ls_dragdrop-grid_ddid = space.
ls_dragdrop-col_ddid = space.
ls_dragdrop-row_ddid = l_dragdrop_handle.
ls_dragdrop-fieldname = space.
cs_layo-s_dragdrop = ls_dragdrop.

WHEN con_dragdrop_column.
*... setzen f�r Spalten
* Im Feldkatalog wird DRAGDROPID mit Handle gef�llt
CALL METHOD gr_dragdrop_d0100->add
EXPORTING
flavor = 'Line' "#EC NOTEXT
dragsrc = l_source
droptarget = l_target
effect = l_effect.

CALL METHOD gr_dragdrop_d0100->get_handle


IMPORTING
handle = l_dragdrop_handle.

ls_dragdrop-cntr_ddid = l_dragdrop_handle. "auch bei leerem Grid


ls_dragdrop-grid_ddid = space.
ls_dragdrop-col_ddid = l_dragdrop_handle.
ls_dragdrop-row_ddid = space.
ls_dragdrop-fieldname = space.
cs_layo-s_dragdrop = ls_dragdrop.

ls_fcat-dragdropid = l_dragdrop_handle.
LOOP AT gs_test-dragdrop_fields INTO l_field.
ls_tabcolor-fname = l_field.
ls_tabcolor-color-col = cl_gui_resources=>list_col_negative.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
ls_tabcolor-nokeycol = con_true.
APPEND ls_tabcolor TO lt_tabcolor.

MODIFY ct_fcat FROM ls_fcat


TRANSPORTING dragdropid
WHERE fieldname = l_field.
ENDLOOP.

ls_outtab-tabcolor = lt_tabcolor.
MODIFY gt_outtab_source FROM ls_outtab
TRANSPORTING tabcolor
WHERE tabcolor IS INITIAL.

WHEN con_dragdrop_cell.
*... setzen f�r Zellen
CALL METHOD gr_dragdrop_d0100->add
EXPORTING
flavor = 'Line' "#EC NOTEXT
dragsrc = l_source
droptarget = l_target
effect = l_effect.

CALL METHOD gr_dragdrop_d0100->get_handle


IMPORTING
handle = l_dragdrop_handle.

ls_dragdrop-cntr_ddid = l_dragdrop_handle. "auch bei leerem Grid


ls_dragdrop-grid_ddid = space.
ls_dragdrop-col_ddid = space.
ls_dragdrop-row_ddid = space.
ls_dragdrop-fieldname = 'HANDLE_DRAGDROP'.
cs_layo-s_dragdrop = ls_dragdrop.

LOOP AT gs_test-dragdrop_fields INTO l_field.


ls_drag_cell-fieldname = l_field.
ls_drag_cell-dragdropid = l_dragdrop_handle.
INSERT ls_drag_cell INTO TABLE lt_drag_cells.

ls_tabcolor-fname = l_field.
ls_tabcolor-color-col = cl_gui_resources=>list_col_negative.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
ls_tabcolor-nokeycol = con_true.
APPEND ls_tabcolor TO lt_tabcolor.
ENDLOOP.

DATA: l_index TYPE i,


l_erg TYPE i.

LOOP AT gt_outtab_source INTO ls_outtab.


l_index = sy-tabix.
l_erg = sy-tabix MOD 2.
IF l_erg EQ 0.
ls_outtab-handle_dragdrop = lt_drag_cells.
ls_outtab-tabcolor = lt_tabcolor.
MODIFY gt_outtab_source INDEX l_index FROM ls_outtab
TRANSPORTING handle_dragdrop
tabcolor.
ENDIF.
ENDLOOP.
ENDCASE.

ENDFORM. " d0100_set_drag_drop

*&---------------------------------------------------------------------*
*& Form d0100_f4_fcode
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_f4_fcode CHANGING c_value TYPE lvc_s_fcat-fieldname.

DATA: lt_fcat TYPE lvc_t_fcat,


ls_fcat TYPE lvc_s_fcat.

PERFORM d0100_set_grid_fcat CHANGING lt_fcat.

DATA: lt_values TYPE TABLE OF seahlpres,


lt_fields TYPE TABLE OF dfies,
lt_return TYPE TABLE OF ddshretval,
ls_value TYPE seahlpres,
ls_field TYPE dfies,
ls_return TYPE ddshretval.

CLEAR ls_field.
ls_field-fieldname = 'FIELDNAME'.
ls_field-intlen = 30.
ls_field-leng = 30.
ls_field-outputlen = 30.
ls_field-scrtext_s = ls_field-fieldname.
ls_field-scrtext_m = ls_field-fieldname.
ls_field-scrtext_l = ls_field-fieldname.
ls_field-reptext = ls_field-fieldname.
APPEND ls_field TO lt_fields.

LOOP AT lt_fcat INTO ls_fcat WHERE tech EQ space.


ls_value-string = ls_fcat-fieldname.
APPEND ls_value TO lt_values.
ENDLOOP.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'FIELDNAME'
* PVALKEY = ' '
* DYNPPROG = ' '
* DYNPNR = ' '
* DYNPROFIELD = ' '
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
* VALUE_ORG = 'C'
* MULTIPLE_CHOICE = ' '
display = space
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
TABLES
value_tab = lt_values
field_tab = lt_fields
return_tab = lt_return
* DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0 AND sy-subrc NE 3.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

READ TABLE lt_return INTO ls_return


WITH KEY fieldname = 'FIELDNAME'.
IF sy-subrc EQ 0.
c_value = ls_return-fieldval.
ENDIF.

ENDFORM. " d0100_f4_fcode

*&---------------------------------------------------------------------*
*& Form d0100_event_data_changed
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_event_data_changed USING er_data_changed
TYPE REF TO cl_alv_changed_data_protocol
e_onf4
e_onf4_before
e_onf4_after
i_grid TYPE i. "#EC *

DATA: l_text1 TYPE string,


l_text2 TYPE string,
l_text3 TYPE string.

CONCATENATE TEXT-100 e_onf4 INTO l_text3.


CONCATENATE TEXT-101 e_onf4_before INTO l_text1.
CONCATENATE TEXT-102 e_onf4_after INTO l_text2.

DATA: l_event TYPE lvc_fname. "#EC NEEDED

IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'DATA_CHANGED'.
IF sy-subrc NE 0.
INSERT 'DATA_CHANGED'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH TEXT-001
l_text3
l_text1
l_text2.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH TEXT-001
l_text3
l_text1
l_text2.
ENDIF.

DATA: ls_row TYPE lvc_s_moce.

LOOP AT er_data_changed->mt_deleted_rows INTO ls_row.


CASE i_grid.
WHEN con_source.
DELETE gt_outtab_source INDEX ls_row-row_id.
WHEN con_target.
DELETE gt_outtab_target INDEX ls_row-row_id.
ENDCASE.
ENDLOOP.

*... die Ausgabetabelle ist noch nicht aktualisiert


* hier sollen semantische Pr�fungen zun�chst erfolgen �ber
* er_data_changed->mt_good_cells
* Fehler k�nnen dann dem Fehlerprotokoll angeh�ngt werden
* er_data_changed->add_protocol_entry
* Es darf an dieser Stelle kein Refresh erfolgen!

ENDFORM. " d0100_event_data_changed

*&---------------------------------------------------------------------*
*& Form d0100_event_data_changed_finis
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM d0100_event_data_changed_finis . "#EC *

DATA: l_event TYPE lvc_fname. "#EC NEEDED

IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'DATA_CHANGED_FINISHED'.
IF sy-subrc NE 0.
INSERT 'DATA_CHANGED_FINISHED'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH TEXT-002.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH TEXT-002.
ENDIF.

*... die Ausgabetabelle ist nun aktualisiert

ENDFORM. " d0100_event_data_changed_finis

You might also like