|
Report (702) - ALV_Class_Reporting |
Home | ||||
|
Previous Next | |||||
Before tables sbc400_carrier.
After *tables sbc400_carrier.
TABLES: mara. INCLUDE zcl_event_receiver.
TYPE-POOLS: icon, ole2. TYPES : BEGIN OF gt_header, icon(4), END OF gt_header.
DATA: tc_header TYPE REF TO cl_gui_custom_container, tg_header TYPE REF TO cl_gui_alv_grid, tc_detail TYPE REF TO cl_gui_custom_container, tg_detail TYPE REF TO cl_gui_alv_grid, go_event_receiver_header TYPE REF TO zcl_event_receiver, go_event_receiver_detail TYPE REF TO zcl_event_receiver. DATA: gw_fieldcat_header TYPE lvc_t_fcat, gw_fieldcat_detail TYPE lvc_t_fcat. DATA: gv_row_no TYPE i.
DATA : gi_data TYPE ytta_header_101 WITH HEADER LINE.
Before MODULE CREATE_CONTROL OUTPUT. if container_ref is initial. create object container_ref exporting container_name = 'CONTAINER_1'. create object grid exporting i_parent = container_ref.
call method grid->set_table_for_first_display exporting i_structure_name = 'SPFLI' changing it_outtab = itab. else. select * from spfli into table itab where carrid = sbc400_carrier-carrid. call method grid->refresh_table_display exporting I_SOFT_REFRESH = 'X'.
endif. ENDMODULE. " CREATE_CONTROL OUTPUT
After MODULE create_control OUTPUT. IF container_ref IS INITIAL. CREATE OBJECT container_ref EXPORTING container_name = 'CONTAINER_1'. CREATE OBJECT grid EXPORTING i_parent = container_ref.
CALL METHOD grid->set_table_for_first_display EXPORTING i_structure_name = 'SPFLI' CHANGING it_outtab = itab. ELSE. CALL METHOD YCL_REPORT_MM=>get_data EXPORTING gv_matkl = mara-matkl gv_matnr = '001-001' gv_max_row = '100' CHANGING data = gi_data[].
CALL METHOD grid->refresh_table_display EXPORTING i_soft_refresh = 'X'.
ENDIF. ENDMODULE. " CREATE_CONTROL OUTPUT
*) at MODULE create_control OUTPUT, we use class YCL_REPORT_MM which we made at Report(701)
*&---------------------------------------------------------------------* *& Include ZCL_EVENT_RECEIVER * *&---------------------------------------------------------------------*
CLASS ZCL_EVENT_RECEIVER DEFINITION. PUBLIC SECTION. METHODS: HANDLE_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING E_OBJECT E_INTERACTIVE, HANDLE_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM, HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, HANDLE_BUTTON_CLICK FOR EVENT BUTTON_CLICK OF CL_GUI_ALV_GRID IMPORTING ES_COL_ID ES_ROW_NO, HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN ES_ROW_NO. ENDCLASS. "lcl_event_receiver DEFINITION
CLASS ZCL_EVENT_RECEIVER IMPLEMENTATION. METHOD HANDLE_TOOLBAR. * Event handler method for event toolbar. CONSTANTS: * Constants for button type C_BUTTON_NORMAL TYPE I VALUE 0, C_MENU_AND_DEFAULT_BUTTON TYPE I VALUE 1, C_MENU TYPE I VALUE 2, C_SEPARATOR TYPE I VALUE 3, C_RADIO_BUTTON TYPE I VALUE 4, C_CHECKBOX TYPE I VALUE 5, C_MENU_ENTRY TYPE I VALUE 6. DATA: LS_TOOLBAR TYPE STB_BUTTON. * Append seperator to the normal toolbar CLEAR LS_TOOLBAR. MOVE C_SEPARATOR TO LS_TOOLBAR-BUTN_TYPE.. APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR. * Append a new button that to the toolbar. Use E_OBJECT of * event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET. * This class has one attribute MT_TOOLBAR which is of table type * TTB_BUTTON. The structure is STB_BUTTON * CLEAR LS_TOOLBAR. * MOVE 'BATALKAN_SKET' TO LS_TOOLBAR-FUNCTION. * MOVE ICON_SYSTEM_MODUS_DELETE TO LS_TOOLBAR-ICON. * MOVE 'BATALKAN SKET' TO LS_TOOLBAR-QUICKINFO. * MOVE 'BATALKAN SKET' TO LS_TOOLBAR-TEXT. * MOVE ' ' TO LS_TOOLBAR-DISABLED. * APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* ENDMETHOD. "handle_toolbar
METHOD HANDLE_USER_COMMAND. * Handle own functions defined in the toolbar * CASE E_UCOMM. ** WHEN 'BATALKAN_SKET'. ** PERFORM FM_BATALKAN_SKET. * ENDCASE. ENDMETHOD. "handle_user_command
METHOD HANDLE_HOTSPOT_CLICK. PERFORM FM_ON_CLICK_HOTSPOT USING E_ROW_ID E_COLUMN_ID ES_ROW_NO. ENDMETHOD. "handle_hotspot_click
METHOD HANDLE_BUTTON_CLICK. PERFORM FM_ON_BUTTON_CLICK USING ES_COL_ID ES_ROW_NO. ENDMETHOD. "HANDLE_BUTTON_CLICK
METHOD HANDLE_DOUBLE_CLICK. PERFORM FM_ON_DOUBLE_CLICK USING E_ROW E_COLUMN ES_ROW_NO. ENDMETHOD.
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
Before module status_0100 output. SET PF-STATUS 'STATUS_100'. * SET TITLEBAR 'xxx'.
endmodule. " STATUS_0100 OUTPUT
After MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS_100'. * SET TITLEBAR 'xxx'. IF tc_header IS INITIAL.
PERFORM fm_build_alv_object_header.
ELSE. CALL METHOD tg_header->refresh_table_display EXPORTING i_soft_refresh = 'X'.
ENDIF. ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------* *& Form fm_on_BUTTON_CLICK *&---------------------------------------------------------------------* ** text **----------------------------------------------------------------------* * -->P_ES_COL_ID text * -->P_ES_ROW_NO text *----------------------------------------------------------------------* FORM fm_on_button_click USING p_es_col_id p_es_row_no.. READ TABLE gi_data INDEX p_es_row_no. IF sy-subrc IS INITIAL. * GV_ROW_NO = P_ES_ROW_NO. MESSAGE 'Test' TYPE 'E'. ENDIF. ENDFORM. " fm_on_BUTTON_CLICK
*&--------------------------------------------------------------------* *& Form FM_BUILD_ALV_OBJECT_HEADER *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM fm_build_alv_object_header. CREATE OBJECT tc_header EXPORTING container_name = 'FC_HEADER'. CREATE OBJECT tg_header EXPORTING i_parent = tc_header.
CREATE OBJECT go_event_receiver_header. PERFORM fm_build_fieldcat_header TABLES gw_fieldcat_header.
CREATE OBJECT go_event_receiver_header. * SET HANDLER GO_EVENT_RECEIVER_HEADER->HANDLE_TOOLBAR FOR TG_HEADER. * SET HANDLER GO_EVENT_RECEIVER_HEADER->HANDLE_USER_COMMAND FOR TG_HEADER. * SET HANDLER GO_EVENT_RECEIVER_HEADER->HANDLE_HOTSPOT_CLICK FOR TG_HEADER. SET HANDLER go_event_receiver_header->handle_button_click FOR tg_header. SET HANDLER go_event_receiver_header->handle_double_click FOR tg_header.
CALL METHOD tg_header->set_table_for_first_display EXPORTING i_save = 'U' i_structure_name = 'GI_DATA' CHANGING it_outtab = gi_data[] it_fieldcatalog = gw_fieldcat_header[].
ENDFORM. "FM_BUILD_ALV_OBJECT_HEADER
*&--------------------------------------------------------------------* *& Form FM_BUILD_FIELDCAT_HEADER *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->FT_REPORT text *---------------------------------------------------------------------* FORM fm_build_fieldcat_header TABLES ft_report. PERFORM f_fieldcatg USING gw_fieldcat_header 'GI_DATA' : * 'CHK' '' 'CHK' '' '1' '' '' '' '' '' '' '' '' '' '' 'X' 'X' '' 'X' '', 'MATKL' 'GI_DATA' 'MATKL' '' '10' '' '' 'Material Number' '' '' '' '' '' '' '' '' '' '' '' '', 'MATNR' 'GI_DATA' 'MATNR' '' '13' '' '' 'Material' '' '' '' '' '' '' '' '' '' '' '' ''. ENDFORM. "FM_BUILD_FIELDCAT_HEADER
*&--------------------------------------------------------------------* *& Form F_FIELDCATG *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->T_ALV_FIELDtext * -->VALUE(FU_TYtext * -->VALUE(FU_FNtext * -->VALUE(FU_REtext * -->VALUE(FU_REtext * -->VALUE(FU_NOtext * -->VALUE(FU_OUtext * -->VALUE(FU_FLtext * -->VALUE(FU_REtext) * -->VALUE(FU_COtext) * -->VALUE(FU_DOtext * -->VALUE(FU_HOtext * -->VALUE(FU_DEtext * -->VALUE(FU_WAtext * -->VALUE(FU_MEtext * -->VALUE(FU_MEtextF) * -->VALUE(FU_WAtextF) * -->VALUE(FU_CHtextOX) * -->VALUE(FU_FItextUMN) * -->VALUE(FU_ICtext * -->VALUE(FU_EDtext * -->VALUE(FU_KEtext *---------------------------------------------------------------------* FORM f_fieldcatg USING t_alv_fieldcat TYPE lvc_t_fcat value(fu_types) "0 value(fu_fname) "1 value(fu_reftb) "2 value(fu_refld) "3 value(fu_noout) "4 value(fu_outln) "5 value(fu_fltxt) "6 value(fu_reptxt) "7 value(fu_coltxt) "8 value(fu_dosum) "9 value(fu_hotsp) "10 value(fu_dec) "11 value(fu_waers) value(fu_meins) value(fu_meins_f) value(fu_waers_f) value(fu_checkbox) value(fu_fixcolumn) value(fu_icon) value(fu_edit) value(fu_key) .
DATA: ld_fieldcat TYPE lvc_t_fcat WITH HEADER LINE. CLEAR: ld_fieldcat. ld_fieldcat-tabname = fu_types. ld_fieldcat-fieldname = fu_fname. ld_fieldcat-ref_table = fu_reftb. ld_fieldcat-ref_field = fu_refld. ld_fieldcat-no_out = fu_noout. ld_fieldcat-outputlen = fu_outln. ld_fieldcat-seltext = fu_fltxt. ld_fieldcat-reptext = fu_reptxt. ld_fieldcat-coltext = fu_coltxt. ld_fieldcat-do_sum = fu_dosum. ld_fieldcat-hotspot = fu_hotsp. ld_fieldcat-decimals_o = fu_dec. ld_fieldcat-currency = fu_waers. ld_fieldcat-quantity = fu_meins. ld_fieldcat-qfieldname = fu_meins_f. ld_fieldcat-cfieldname = fu_waers_f. ld_fieldcat-checkbox = fu_checkbox. ld_fieldcat-fix_column = fu_fixcolumn. ld_fieldcat-icon = fu_icon. ld_fieldcat-edit = fu_edit. ld_fieldcat-key = fu_key. APPEND ld_fieldcat TO t_alv_fieldcat.
ENDFORM. "F_FIELDCATG
*&---------------------------------------------------------------------* *& Form FM_ON_CLICK_HOTSPOT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->I_ROW_ID text * --> text * -->I_COLUMN_ID text * --> text * -->IS_ROW_NO text *----------------------------------------------------------------------* FORM FM_ON_CLICK_HOTSPOT USING I_ROW_ID TYPE LVC_S_ROW I_COLUMN_ID TYPE LVC_S_COL IS_ROW_NO TYPE LVC_S_ROID.
* READ TABLE GI_HEADER INDEX I_ROW_ID. * IF SY-SUBRC IS INITIAL. * GV_ROW_NO = I_ROW_ID. * ENDIF. READ TABLE GI_DATA INDEX I_ROW_ID. * IF GI_DATA-ICON IS INITIAL. * * ELSEIF GI_DATA-ICON = ICON_EXPAND. * PERFORM FM_LOAD_CHILD_HEADER USING GI_HEADER-PRUEFLOS GI_HEADER-WERK I_ROW_ID. * ELSEIF GI_HEADER-ICON = ICON_COLLAPSE. * PERFORM FM_UNLOAD_CHILD_HEADER USING GI_HEADER-PRUEFLOS I_ROW_ID. * ENDIF. ENDFORM. "FM_ON_CLICK_HOTSPOT
*&---------------------------------------------------------------------* *& Form FM_ON_DOUBLE_CLICK *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_E_ROW text * -->P_E_COLUMN text * -->P_ES_ROW_NO text *----------------------------------------------------------------------* FORM fm_on_double_click USING p_e_row p_e_column p_es_row_no TYPE lvc_s_roid. * BREAK ABAP08. DATA: lv_row_id TYPE i. lv_row_id = p_es_row_no-row_id. READ TABLE gi_data INDEX lv_row_id. MESSAGE gi_data-matkl TYPE 'I'.
ENDFORM. " FM_ON_DOUBLE_CLICK
will show then show
|
| User Threads | New Thread ( Only for Donators ) |
|
|
|||
| Threads | Last Post | Replies | Views |
|
|
|||