Sei sulla pagina 1di 10

TABLES: SPFLI. TYPE-POOLS: SLIS. PARAMETERS: P_COL TYPE I , P_ROW TYPE I, P_COLOR(4) TYPE C .

DATA: T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, FS_FIELDCAT LIKE LINE OF T_FIELDCAT, FS_LAYOUT TYPE SLIS_LAYOUT_ALV , W_COLOR(4) , W_ROW TYPE I, W_FIELDNAME(20), W_PROG TYPE SY-REPID. DATA: BEGIN OF T_SPFLI OCCURS 0, COLOR(4), CHECKBOX , CELL TYPE SLIS_T_SPECIALCOL_ALV, CARRID TYPE SPFLI-CARRID, CONNID TYPE SPFLI-CONNID, CITYFROM TYPE SPFLI-CITYFROM, CITYTO TYPE SPFLI-CITYTO, DISTANCE TYPE SPFLI-DISTANCE, END OF T_SPFLI. DATA: FS_CELL LIKE LINE OF T_SPFLI-CELL. SELECT * FROM SPFLI INTO CORRESPONDING FIELDS OF TABLE T_SPFLI. W_COLOR = P_COLOR. T_SPFLI-COLOR = P_COLOR. IF P_COL IS INITIAL AND P_ROW GT 0. MODIFY T_SPFLI INDEX P_ROW TRANSPORTING COLOR. ENDIF. FS_FIELDCAT-FIELDNAME = 'CARRID'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. FS_FIELDCAT-COL_POS = 1. FS_FIELDCAT-KEY = 'X'. FS_FIELDCAT-HOTSPOT = 'X'. APPEND FS_FIELDCAT TO T_FIELDCAT. CLEAR FS_FIELDCAT . FS_FIELDCAT-FIELDNAME = 'CONNID'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. FS_FIELDCAT-COL_POS = 2. FS_FIELDCAT-KEY = 'X'. FS_FIELDCAT-HOTSPOT = 'X'. APPEND FS_FIELDCAT TO T_FIELDCAT.

CLEAR FS_FIELDCAT . FS_FIELDCAT-FIELDNAME = 'DISTANCE'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. FS_FIELDCAT-COL_POS = 3. FS_FIELDCAT-KEY = ' '. FS_FIELDCAT-EDIT = 'X'. APPEND FS_FIELDCAT TO T_FIELDCAT. CLEAR FS_FIELDCAT. FS_FIELDCAT-FIELDNAME = 'CITYFROM'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. FS_FIELDCAT-COL_POS = 4. FS_FIELDCAT-KEY = ' '. APPEND FS_FIELDCAT TO T_FIELDCAT. LOOP AT T_FIELDCAT INTO FS_FIELDCAT. IF FS_FIELDCAT-COL_POS EQ P_COL. FS_FIELDCAT-EMPHASIZE = P_COLOR. W_FIELDNAME = FS_FIELDCAT-FIELDNAME. IF P_ROW IS INITIAL AND P_COL GT 0. MODIFY T_FIELDCAT FROM FS_FIELDCAT TRANSPORTING EMPHASIZE. ENDIF. ENDIF. ENDLOOP. FS_CELL-FIELDNAME = W_FIELDNAME . FS_CELL-COLOR-COL = 6. FS_CELL-NOKEYCOL = 'X'. APPEND FS_CELL TO T_SPFLI-CELL. IF P_ROW IS NOT INITIAL AND P_COL IS NOT INITIAL. MODIFY T_SPFLI INDEX P_ROW TRANSPORTING CELL. ENDIF. FS_LAYOUT-INFO_FIELDNAME = 'COLOR'. FS_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'. FS_LAYOUT-COLTAB_FIELDNAME = 'CELL'. FS_LAYOUT-F2CODE = '&ETA'. W_PROG = SY-REPID. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = W_PROG IS_LAYOUT = FS_LAYOUT IT_FIELDCAT = T_FIELDCAT TABLES T_OUTTAB = T_SPFLI EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. _______________________________________________________________

______________________________________________________________ REPORT ZALV_LIST4. TABLES: SPFLI. TYPE-POOLS: SLIS. DATA: T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, FS_FIELDCAT LIKE LINE OF T_FIELDCAT, FS_LAYOUT TYPE SLIS_LAYOUT_ALV , W_COLOR(3) , W_ROW TYPE I, W_FIELDNAME(20), W_PROG TYPE SY-REPID. DATA: BEGIN OF T_SPFLI OCCURS 0, COLOR(3), CHECKBOX , CELL TYPE SLIS_T_SPECIALCOL_ALV, CARRID TYPE SPFLI-CARRID, CONNID TYPE SPFLI-CONNID, CITYFROM TYPE SPFLI-CITYFROM, CITYTO TYPE SPFLI-CITYTO, DISTANCE TYPE SPFLI-DISTANCE, END OF T_SPFLI. DATA: FS_CELL LIKE LINE OF T_SPFLI-CELL. SELECT * FROM SPFLI INTO CORRESPONDING FIELDS OF TABLE T_SPFLI. FS_FIELDCAT-FIELDNAME = 'CARRID'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. FS_FIELDCAT-COL_POS = 1. FS_FIELDCAT-KEY = 'X'. FS_FIELDCAT-HOTSPOT = 'X'. APPEND FS_FIELDCAT TO T_FIELDCAT. CLEAR FS_FIELDCAT . FS_FIELDCAT-FIELDNAME = 'CONNID'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. FS_FIELDCAT-COL_POS = 2. FS_FIELDCAT-KEY = 'X'. FS_FIELDCAT-HOTSPOT = 'X'. APPEND FS_FIELDCAT TO T_FIELDCAT. CLEAR FS_FIELDCAT . FS_FIELDCAT-FIELDNAME = 'DISTANCE'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. *FS_FIELDCAT-INPUT = 'X'. FS_FIELDCAT-COL_POS = 3. FS_FIELDCAT-KEY = ' '. FS_FIELDCAT-EDIT = 'X'.

APPEND FS_FIELDCAT TO T_FIELDCAT. CLEAR FS_FIELDCAT. FS_FIELDCAT-FIELDNAME = 'CITYFROM'. FS_FIELDCAT-REF_TABNAME = 'SPFLI'. FS_FIELDCAT-COL_POS = 4. FS_FIELDCAT-KEY = ' '. APPEND FS_FIELDCAT TO T_FIELDCAT. LOOP AT T_SPFLI WHERE DISTANCE GT 600. W_FIELDNAME = 'DISTANCE'. FS_CELL-FIELDNAME = W_FIELDNAME . FS_CELL-COLOR-COL = 5. FS_CELL-NOKEYCOL = 'X'. APPEND FS_CELL TO T_SPFLI-CELL. MODIFY T_SPFLI TRANSPORTING CELL. ENDLOOP. FS_LAYOUT-INFO_FIELDNAME = 'COLOR'. FS_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'. FS_LAYOUT-COLTAB_FIELDNAME = 'CELL'. FS_LAYOUT-F2CODE = '&ETA'. W_PROG = SY-REPID. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = W_PROG IS_LAYOUT = FS_LAYOUT IT_FIELDCAT = T_FIELDCAT TABLES T_OUTTAB = T_SPFLI EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. _______________________________________________________________________ ______________________________________________________________________ Report ZMULTICOLOR_TEST no standard page heading. * this report demonstrates how to send some ABAP data to an * EXCEL sheet using OLE automation. include ole2incl. * handles for OLE objects data: h_excel type ole2_object, " Excel object h_mapl type ole2_object, " list of workbooks h_map type ole2_object, " workbook h_zl type ole2_object, " cell h_f type ole2_object, " font h_c type ole2_object. " color DATA: FILENAME LIKE RLGRAP-FILENAME. tables: spfli.

data h type i. * table of flights data: it_spfli like spfli occurs 10 with header line. *&---------------------------------------------------------------------* *& Event START-OF-SELECTION *&---------------------------------------------------------------------* start-of-selection. * read flights select * from spfli into table it_spfli. * display header uline (61). write: / sy-vline no-gap, (3) 'Flg'(001) color col_heading no-gap, sy-vline no-gap, (4) 'Nr'(002) color col_heading no-gap, sy-vline no-gap, (20) 'Von'(003) color col_heading no-gap, sy-vline no-gap, (20) 'Nach'(004) color col_heading no-gap, sy-vline no-gap, (8) 'Zeit'(005) color col_heading no-gap, sy-vline no-gap. uline /(61). * display flights loop at it_spfli. write: / sy-vline no-gap, it_spfli-carrid color col_key no-gap, sy-vline no-gap, it_spfli-connid color col_normal no-gap, sy-vline no-gap, it_spfli-cityfrom color col_normal no-gap, sy-vline no-gap, it_spfli-cityto color col_normal no-gap, sy-vline no-gap, it_spfli-deptime color col_normal no-gap, sy-vline no-gap. endloop. uline /(61). * tell user what is going on call function 'SAPGUI_PROGRESS_INDICATOR' exporting * PERCENTAGE = 0 text = text-007 exceptions others = 1. * start Excel create object h_excel 'EXCEL.APPLICATION'. * PERFORM ERR_HDL. set property of h_excel 'Visible' = 1. * CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls' . * PERFORM ERR_HDL. * tell user what is going on call function 'SAPGUI_PROGRESS_INDICATOR' exporting * PERCENTAGE = 0 text = text-008 exceptions others = 1. * get list of workbooks, initially empty call method of h_excel 'Workbooks' = h_mapl. perform err_hdl. * add a new workbook call method of h_mapl 'Add' = h_map. perform err_hdl. * tell user what is going on

call function 'SAPGUI_PROGRESS_INDICATOR' exporting * PERCENTAGE = 0 text = text-009 exceptions others = 1. * output column headings to active Excel sheet perform fill_cell using 1 1 1 200 'Carrier id'(001). perform fill_cell using 1 2 1 200 'Connection id'(002). perform fill_cell using 1 3 1 200 'City from'(003). perform fill_cell using 1 4 1 200 'City to'(004). perform fill_cell using 1 5 1 200 'Dep. Time'(005). loop at it_spfli. * copy flights to active EXCEL sheet h = sy-tabix + 1. if it_spfli-carrid cs 'AA'. perform fill_cell using h 1 0 000255000 it_spfli-carrid. elseif it_spfli-carrid cs 'AZ'. perform fill_cell using h 1 0 168000000 it_spfli-carrid. elseif it_spfli-carrid cs 'JL'. perform fill_cell using h 1 0 168168000 it_spfli-carrid. elseif it_spfli-carrid cs 'LH'. perform fill_cell using h 1 0 111111111 it_spfli-carrid. elseif it_spfli-carrid cs 'SQ'. perform fill_cell using h 1 0 100100100 it_spfli-carrid. else. perform fill_cell using h 1 0 000145000 it_spfli-carrid. endif. if it_spfli-connid lt 400. perform fill_cell using h 2 0 255000255 it_spfli-connid. elseif it_spfli-connid lt 800. perform fill_cell using h 2 0 077099088 it_spfli-connid. else. perform fill_cell using h 2 0 246156138 it_spfli-connid. endif. if it_spfli-cityfrom cp 'S*'. perform fill_cell using h 3 0 155155155 it_spfli-cityfrom. elseif it_spfli-cityfrom cp 'N*'. perform fill_cell using h 3 0 189111222 it_spfli-cityfrom. else. perform fill_cell using h 3 0 111230222 it_spfli-cityfrom. endif. if it_spfli-cityto cp 'S*'. perform fill_cell using h 4 0 200200200 it_spfli-cityto. elseif it_spfli-cityto cp 'N*'. perform fill_cell using h 4 0 000111222 it_spfli-cityto. else. perform fill_cell using h 4 0 130230230 it_spfli-cityto. endif. if it_spfli-deptime lt '020000'. perform fill_cell using h 5 0 145145145 it_spfli-deptime. elseif it_spfli-deptime lt '120000' . perform fill_cell using h 5 0 015215205 it_spfli-deptime. elseif it_spfli-deptime lt '180000' . perform fill_cell using h 5 0 000215205 it_spfli-deptime. else.

perform fill_cell using h 5 0 115115105 it_spfli-deptime. endif. endloop. * EXCEL FILENAME CONCATENATE SY-REPID '_' SY-DATUM+6(2) '_' SY-DATUM+4(2) '_' SY-DATUM(4) '_' SY-UZEIT '.XLS' INTO FILENAME. CALL METHOD OF H_MAP 'SAVEAS' EXPORTING #1 = FILENAME. free object h_excel. perform err_hdl. *---------------------------------------------------------------------* * FORM FILL_CELL * *---------------------------------------------------------------------* * sets cell at coordinates i,j to value val boldtype bold * *---------------------------------------------------------------------* form fill_cell using i j bold col val. call method of h_excel 'Cells' = h_zl exporting #1 = i #2 = j. perform err_hdl. set property of h_zl 'Value' = val . perform err_hdl. get property of h_zl 'Font' = h_f. perform err_hdl. set property of h_f 'Bold' = bold . perform err_hdl. set property of h_f 'Color' = col. perform err_hdl. endform. "FILL_CELL *&---------------------------------------------------------------------* *& Form ERR_HDL *&---------------------------------------------------------------------* * outputs OLE error if any *

*----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form err_hdl. if sy-subrc <> 0. write: / 'OLE-Automation Error:'(010), sy-subrc. stop. endif. endform. " ERR_HDL

________________________________________________________________________________ __ _______________________________________________________________________________

REPORT ZALV_INTMENUTOOL. *Author : Swarna.S. *AS : Simple ALV with user defined menu in toolbar * Published at SAPTechnical.COM *Class declarations CLASS lcl_event_receiver DEFINITION DEFERRED. *type pool declarations TYPE-POOLS : icon. *Internal table and work area declarations for dd02l DATA: it_dd02l TYPE TABLE OF dd02l, wa_dd02l TYPE dd02l. *Data declaration for alv. DATA :it_layout TYPE lvc_s_layo, it_toolbar TYPE stb_button, c_alv TYPE REF TO cl_gui_alv_grid, custom_container TYPE REF TO cl_gui_custom_container, event_receiver TYPE REF TO lcl_event_receiver. *Select options multiple values no ranges SELECT-OPTIONS : s_table FOR wa_dd02l-tabname NO INTERVALS. *Initialization event INITIALIZATION. *Start of selection event START-OF-SELECTION. *sUBROUTINE FOR ALV DISPLAY PERFORM alvdisplay. *Class definition CLASS lcl_event_receiver DEFINITION. PUBLIC SECTION. CLASS-METHODS: *handling toolbar for interactive handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive, *handling menu button handle_menu_button FOR EVENT menu_button OF cl_gui_alv_grid IMPORTING e_object e_ucomm, *On click of the menu button handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm. PRIVATE SECTION. ENDCLASS. *Class implementation "lcl_event_receiver DEFINITION

CLASS lcl_event_receiver IMPLEMENTATION. METHOD handle_toolbar. * handle toolbar CLEAR it_toolbar. MOVE 'DETAIL' TO it_toolbar-function. MOVE icon_detail TO it_toolbar-icon. MOVE 2 TO it_toolbar-butn_type. APPEND it_toolbar TO e_object->mt_toolbar. ENDMETHOD. METHOD handle_menu_button. * handle own menubuttons IF e_ucomm = 'DETAIL'. CALL METHOD e_object->add_function EXPORTING fcode = 'DISPLAY' text = 'DISPLAY'. ENDIF. ENDMETHOD. "handle_menu_button METHOD handle_user_command. *On click CASE e_ucomm. WHEN 'DISPLAY'. MESSAGE 'Menu Clicked' TYPE 'I'. ENDCASE. ENDMETHOD. ENDCLASS. "handle_user_command "lcl_event_receiver IMPLEMENTATION "handle_toolbar

*&-----------------------------------------------------------------* *& Module PBO OUTPUT *&-----------------------------------------------------------------* * text *------------------------------------------------------------------* MODULE pbo OUTPUT. IF custom_container IS INITIAL. * select data from table dd02l PERFORM fetch_dd02l. * create a custom container control for our ALV Control CREATE OBJECT custom_container EXPORTING container_name = 'CCONT'. * create an instance of alv control CREATE OBJECT c_alv EXPORTING i_parent = custom_container. * Set a titlebar for the grid control it_layout-grid_title = 'TABLE DETAILS'.

*ALV display CALL METHOD c_alv->set_table_for_first_display EXPORTING i_structure_name = 'dd02l' is_layout = it_layout CHANGING it_outtab = it_dd02l. *Handlers for the events CREATE OBJECT event_receiver. SET HANDLER event_receiver->handle_user_command event_receiver->handle_menu_button event_receiver->handle_toolbar FOR ALL INSTANCES. *Calling the interactive toolbar method of ALV CALL METHOD c_alv->set_toolbar_interactive. ENDIF. ENDMODULE. " PBO OUTPUT *&-----------------------------------------------------------------* *& Module PAI INPUT *&-----------------------------------------------------------------* * text *-----------------------------------------------------------------* MODULE pai INPUT. ENDMODULE. " PAI INPUT

*&----------------------------------------------------------------* *& form fetch_dd02l *&----------------------------------------------------------------* * text *-----------------------------------------------------------------* *Subroutine to fetch data FORM fetch_dd02l. SELECT * FROM dd02l INTO CORRESPONDING FIELDS OF TABLE it_dd02l WHERE tabname IN s_table. ENDFORM. " SELECT_TABLE_dd02l *&-----------------------------------------------------------------* *& Form ALVDISPLAY *&-----------------------------------------------------------------* * text *------------------------------------------------------------------* * --> p1 text * <-- p2 text *------------------------------------------------------------------* FORM alvdisplay . * ALV output SET SCREEN 600. ENDFORM. Selection screen " ALVDISPLAY

Potrebbero piacerti anche