*&---------------------------------------------------------------------*
*& Include ZFIVE_002TOP Module pool ZFIVE_002
*&
*&---------------------------------------------------------------------*
PROGRAM zfive_002 no standard page heading line-count 10.
types: begin of info,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
currency like sflight-currency,
seatsmax like sflight-seatsmax,
seatsocc like sflight-seatsocc,
free like sflight-seatsmax,
free_icon(30),
end of info.
DATA:wa_info type info,
it_info type standard table of info.
* Field position
data: pos_free type i value 8,
pos_icon type i value 9.
* Fieldcatalog
data: p_fieldcat type lvc_t_fcat,
w_fieldcat like line of p_fieldcat,
wa_sbook like sbook.
*control
DATA: p_control_contianter TYPE REF TO cl_gui_custom_container,
alv_grid TYPE REF TO cl_gui_alv_grid.
DATA:ok_code LIKE sy-ucomm.
*layout
DATA:gs_layout TYPE lvc_s_layo.
DATA: GS_REPORT TYPE DISVARIANT,
P_SAVE.
* Local class
class list_d definition.
public section.
methods on_dblclick for event double_click of cl_gui_alv_grid
importing e_row e_column.
endclass.
* Double Click
data: p_double type ref to list_d.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
SELECT-OPTIONS:p_car FOR wa_info-carrid.
SELECTION-SCREEN END OF BLOCK b2.
START-OF-SELECTION.
SELECT *
FROM sflight INTO CORRESPONDING FIELDS OF wa_info
WHERE carrid IN p_car
order by primary key.
wa_info-free = wa_info-seatsmax - wa_info-seatsocc.
IF wa_info-seatsmax < wa_info-seatsocc.
wa_info-free_icon = icon_red_light.
ELSE.
wa_info-free_icon = icon_green_light.
ENDIF.
APPEND wa_info TO it_info.
ENDSELECT.
CALL SCREEN 100.
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE create_objects.
MODULE layout_data.
MODULE VARIANT.
MODULE field_catalog.
MODULE transfer_data.
*
PROCESS AFTER INPUT.
MODULE exit AT EXIT-COMMAND.
MODULE user_command_0100.
*----------------------------------------------------------------------*
***INCLUDE ZFIVE_002_STATUS_0100O01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'S100'.
SET TITLEBAR 'T100' WITH 'five'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module CREATE_OBJECTS OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE create_objects OUTPUT.
IF p_control_contianter IS INITIAL.
CREATE OBJECT p_control_contianter
EXPORTING container_name = 'P_CONTROL'.
CREATE OBJECT alv_grid
EXPORTING i_parent = p_control_contianter.
CREATE OBJECT p_double.
set handler p_double->on_dblclick for alv_grid.
ENDIF.
ENDMODULE. " CREATE_OBJECTS OUTPUT
*&---------------------------------------------------------------------*
*& Module TRANSFER_DATA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE transfer_data OUTPUT.
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
is_layout = gs_layout
is_variant = gs_report
i_save = p_save
CHANGING
it_outtab = it_info
it_fieldcatalog = p_fieldcat.
ENDMODULE. " TRANSFER_DATA OUTPUT
*&---------------------------------------------------------------------*
*& Module exit INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE. " exit INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
CALL METHOD p_control_contianter->free.
SET SCREEN 0.
WHEN 'EXIT'.
CALL METHOD p_control_contianter->free.
SET SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module layout_data OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE layout_data OUTPUT.
gs_layout-grid_title = 'five test'.
gs_layout-detailtitl = 'test'.
gs_layout-zebra = 'X'.
ENDMODULE. " layout_data OUTPUT
*&---------------------------------------------------------------------*
*& Module field_catalog OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE field_catalog OUTPUT.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'FREE'.
w_fieldcat-ref_table = 'SFILGHT'.
w_fieldcat-ref_field = 'SEATSMAX'.
w_fieldcat-coltext = 'FIVE TEST'.
w_fieldcat-seltext = 'FIVE TEST'.
w_fieldcat-col_pos = pos_free.
APPEND w_fieldcat TO p_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'FREE_ICON'.
w_fieldcat-icon = 'X'.
w_fieldcat-coltext = 'FREE_ICON'.
w_fieldcat-seltext = 'FREE_ICON'.
w_fieldcat-col_pos = pos_icon.
APPEND w_fieldcat TO p_fieldcat.
ENDMODULE. " field_catalog OUTPUT
*&---------------------------------------------------------------------*
*& Module VARIANT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE variant OUTPUT.
gs_report-report = sy-repid.
p_save = 'A'.
ENDMODULE. " VARIANT OUTPUT
*&---------------------------------------------------------------------*
*& Module list OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE list OUTPUT.
SUPPRESS DIALOG.
SET PF-STATUS space.
WRITE:'basic'.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
FORMAT COLOR COL_NORMAL.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF wa_sbook
WHERE carrid = wa_info-carrid
AND connid = wa_info-connid
AND fldate = wa_info-fldate.
WRITE:/ sy-vline, wa_sbook-carrid,
wa_sbook-connid,
wa_sbook-fldate,
wa_sbook-customid,
wa_sbook-bookid, 83 sy-vline.
ENDSELECT.
ENDMODULE. " list OUTPUT
*&---------------------------------------------------------------------*
*& Class (Implementation) list_d
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
CLASS list_d IMPLEMENTATION.
METHOD on_dblclick.
* valid line check
IF e_row-rowtype = space AND NOT e_row-index IS INITIAL.
READ TABLE it_info INDEX e_row-index INTO wa_info.
CALL SCREEN 101.
ELSE.
MESSAGE 'no data' TYPE 'I'.
ENDIF.
ENDMETHOD. "dbclick
ENDCLASS. "list_d
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-611029/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14397246/viewspace-611029/