Files
DATA-Hawk/src/#deso#dh_hawk_me.prog.abap
2025-11-27 13:16:56 +00:00

170 lines
5.5 KiB
ABAP

*&---------------------------------------------------------------------*
*& Include /DESO/DH_HAWK_M
*&---------------------------------------------------------------------*
CLASS lcl_application DEFINITION.
PUBLIC SECTION.
METHODS: alv_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.
ENDCLASS. "LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
* CLASS LCL_APPLICATION IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION.
METHOD alv_handle_data_changed.
DATA: ls_good TYPE lvc_s_modi.
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
**** Dazu auf die richtige Zeile in der ITAB positionieren:
READ TABLE gt_result_show ASSIGNING FIELD-SYMBOL(<ls_result_collect>) INDEX ls_good-row_id.
DATA: ls_result_collect TYPE /deso/dh_c_rep.
MOVE-CORRESPONDING <ls_result_collect> TO ls_result_collect.
ASSIGN COMPONENT ls_good-fieldname OF STRUCTURE ls_result_collect TO FIELD-SYMBOL(<field>).
ASSIGN COMPONENT ls_good-fieldname OF STRUCTURE <ls_result_collect> TO FIELD-SYMBOL(<field_show>).
<field_show> = <field> = ls_good-value.
UPDATE /deso/dh_c_rep FROM ls_result_collect.
CASE ls_good-fieldname.
WHEN 'REP_CLASS'.
UPDATE /deso/dh_message SET rep_class = <field>
WHERE check_view = ls_result_collect-check_view
AND object = ls_result_collect-object
AND msgty = ls_result_collect-msgty
AND msgid = ls_result_collect-msgid
AND msgno = ls_result_collect-msgno.
WHEN 'REP_METHODE'.
UPDATE /deso/dh_message SET rep_methode = <field>
WHERE check_view = ls_result_collect-check_view
AND object = ls_result_collect-object
AND msgty = ls_result_collect-msgty
AND msgid = ls_result_collect-msgid
AND msgno = ls_result_collect-msgno.
ENDCASE.
MESSAGE s000(em) WITH 'Daten gesichert'.
ENDLOOP.
IF sy-subrc <> 0.
MESSAGE s000(em) WITH 'Keine veränderten Daten'.
ENDIF.
ENDMETHOD.
ENDCLASS. "LCL_APPLICATION IMPLEMENTATION
CLASS handle DEFINITION.
PUBLIC SECTION.
CLASS-METHODS : handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row.
CLASS-METHODS : handle_close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender.
CLASS-METHODS : on_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object.
CLASS-METHODS : on_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS.
CLASS handle IMPLEMENTATION.
METHOD handle_double_click.
READ TABLE gt_result_show ASSIGNING FIELD-SYMBOL(<fs_res_show>) INDEX e_row-index.
PERFORM build_fieldcat_result_detail.
REFRESH gt_result_detail.
LOOP AT gt_result ASSIGNING FIELD-SYMBOL(<fs_res>)
WHERE check_view = <fs_res_show>-check_view AND
refobject = <fs_res_show>-refobject AND
reffld = <fs_res_show>-reffld AND
msgty = <fs_res_show>-msgty AND
msgid = <fs_res_show>-msgid AND
msgno = <fs_res_show>-msgno.
APPEND INITIAL LINE TO gt_result_detail ASSIGNING FIELD-SYMBOL(<fs_det>).
MOVE-CORRESPONDING <fs_res> TO <fs_det>.
ENDLOOP.
CREATE OBJECT o_dial
EXPORTING
width = 1450
height = 400
top = 50
left = 200
caption = 'Details'.
SET HANDLER handle=>handle_close FOR o_dial.
CREATE OBJECT o_alv2
EXPORTING
i_parent = o_dial.
CALL METHOD o_alv2->set_table_for_first_display
CHANGING
it_outtab = gt_result_detail
it_fieldcatalog = gt_fieldcat_detail.
CALL METHOD o_alv2->refresh_table_display.
REFRESH gt_fieldcat_detail.
ENDMETHOD.
METHOD handle_close.
CALL METHOD sender->set_visible
EXPORTING
visible = space.
ENDMETHOD.
METHOD on_toolbar.
DATA btn TYPE stb_button.
CASE alv_ok_code.
WHEN 'include'.
btn-function = 'exclude'.
btn-icon = icon_pdir_foreward_switch.
WHEN 'exclude'.
CLEAR e_object->mt_toolbar.
btn-function = 'include'.
btn-icon = icon_pdir_back_switch.
ENDCASE.
INSERT btn INTO TABLE e_object->mt_toolbar.
ENDMETHOD.
METHOD on_user_command.
CASE e_ucomm.
WHEN 'include' OR 'exclude'.
alv_ok_code = e_ucomm.
CALL METHOD o_alv1->set_toolbar_interactive.
ENDCASE.
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& Module FILL_VARIANT OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*