# ITC/# SAP

ALV Grid with Transtion Watch

ilus 2012. 9. 21. 17:43
*&---------------------------------------------------------------------* *& Report ZALV_S *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZALV_S. TABLES: ZTKKS01. TYPE-POOLS: SLIS. "ALV Declarations *Data Declaration *---------------- TYPES: BEGIN OF T_EKKO, EBELN TYPE ZTKKS01-ITEMNO, EBELP TYPE ZTKKS01-GROUPS, STATU TYPE ZTKKS01-AREA, AEDAT TYPE ZTKKS01-NAME, MATNR TYPE ZTKKS01-HOMETEL, MENGE TYPE ZTKKS01-MOBILE, MEINS TYPE ZTKKS01-EMAIL, NETPR TYPE ZTKKS01-BIRTH, PEINH TYPE ZTKKS01-ADDRESS, LINE_COLOR(4) TYPE C, "Used to store row color attributes END OF T_EKKO. DATA: IT_EKKO TYPE STANDARD TABLE OF T_EKKO INITIAL SIZE 0, WA_EKKO TYPE T_EKKO. *ALV data declarations DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE, GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV, GD_LAYOUT TYPE SLIS_LAYOUT_ALV, GD_REPID LIKE SY-REPID. * Transtion Prograss Watch DATA: G_TOTAL TYPE I, G_CNT TYPE I, G_INDEX TYPE I. DATA : GT_SFLIGHT TYPE TABLE OF ZTKKS01 WITH HEADER LINE. ************************************************************************ *Start-of-selection. START-OF-SELECTION. PERFORM DATA_RETRIEVAL. PERFORM BUILD_FIELDCATALOG. PERFORM BUILD_LAYOUT. PERFORM DISPLAY_ALV_REPORT. *&---------------------------------------------------------------------* *& Form BUILD_FIELDCATALOG *&---------------------------------------------------------------------* * Build Fieldcatalog for ALV Report *----------------------------------------------------------------------* FORM BUILD_FIELDCATALOG. * There are a number of ways to create a fieldcat. * For the purpose of this example i will build the fieldcatalog manualy * by populating the internal table fields individually and then * appending the rows. This method can be the most time consuming but can * also allow you more control of the final product. * Beware though, you need to ensure that all fields required are * populated. When using some of functionality available via ALV, such as * total. You may need to provide more information than if you were * simply displaying the result * I.e. Field type may be required in-order for * the 'TOTAL' function to work. FIELDCATALOG-FIELDNAME = 'EBELN'. FIELDCATALOG-SELTEXT_M = 'ITEM-NO'. FIELDCATALOG-COL_POS = 0. FIELDCATALOG-OUTPUTLEN = 10. FIELDCATALOG-EMPHASIZE = 'X'. FIELDCATALOG-KEY = 'X'. * fieldcatalog-do_sum = 'X'. * fieldcatalog-no_zero = 'X'. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'EBELP'. FIELDCATALOG-SELTEXT_M = 'GROUP'. FIELDCATALOG-COL_POS = 1. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'STATU'. FIELDCATALOG-SELTEXT_M = 'AREA'. FIELDCATALOG-COL_POS = 2. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'AEDAT'. FIELDCATALOG-SELTEXT_M = 'NAME'. FIELDCATALOG-COL_POS = 3. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'MATNR'. FIELDCATALOG-SELTEXT_M = 'HOME-TEL'. FIELDCATALOG-COL_POS = 4. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'MENGE'. FIELDCATALOG-SELTEXT_M = 'MOBILE'. FIELDCATALOG-COL_POS = 5. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'MEINS'. FIELDCATALOG-SELTEXT_M = 'E-MAIL'. FIELDCATALOG-COL_POS = 6. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'NETPR'. FIELDCATALOG-SELTEXT_M = 'BIRTH'. FIELDCATALOG-COL_POS = 7. FIELDCATALOG-OUTPUTLEN = 15. FIELDCATALOG-DATATYPE = 'CURR'. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. FIELDCATALOG-FIELDNAME = 'PEINH'. FIELDCATALOG-SELTEXT_M = 'ADDRESS'. FIELDCATALOG-COL_POS = 8. APPEND FIELDCATALOG TO FIELDCATALOG. CLEAR FIELDCATALOG. ENDFORM. " BUILD_FIELDCATALOG *&---------------------------------------------------------------------* *& Form BUILD_LAYOUT *&---------------------------------------------------------------------* * Build layout for ALV grid report *----------------------------------------------------------------------* FORM BUILD_LAYOUT. GD_LAYOUT-NO_INPUT = 'X'. GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. GD_LAYOUT-TOTALS_TEXT = 'TOTALS'(201). * Set layout field for row attributes(i.e. color) GD_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'. * gd_layout-totals_only = 'X'. * gd_layout-f2code = 'DISP'. "Sets fcode for when double * "click(press f2) * gd_layout-zebra = 'X'. * gd_layout-group_change_edit = 'X'. * gd_layout-header_text = 'helllllo'. ENDFORM. " BUILD_LAYOUT *&---------------------------------------------------------------------* *& Form DISPLAY_ALV_REPORT *&---------------------------------------------------------------------* * Display report using ALV grid *----------------------------------------------------------------------* FORM DISPLAY_ALV_REPORT. GD_REPID = SY-REPID. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = GD_REPID * i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM * i_callback_user_command = 'USER_COMMAND' * i_grid_title = outtext IS_LAYOUT = GD_LAYOUT IT_FIELDCAT = FIELDCATALOG[] * it_special_groups = gd_tabgroup * IT_EVENTS = GT_XEVENTS I_SAVE = 'X' * is_variant = z_template TABLES T_OUTTAB = IT_EKKO 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. ENDFORM. " DISPLAY_ALV_REPORT *&---------------------------------------------------------------------* *& Form DATA_RETRIEVAL *&---------------------------------------------------------------------* * Retrieve data form EKPO table and populate itab it_ekko *----------------------------------------------------------------------* FORM DATA_RETRIEVAL. DATA: LD_COLOR(1) TYPE C. SELECT ITEMNO GROUPS AREA NAME HOMETEL MOBILE EMAIL BIRTH ADDRESS UP TO 10 ROWS FROM ZTKKS01 INTO TABLE IT_EKKO. DESCRIBE TABLE IT_EKKO LINES G_TOTAL. " Transtion Prograss Watch *Populate field with color attributes LOOP AT IT_EKKO INTO WA_EKKO. * Populate color variable with colour properties * Char 1 = C (This is a color property) * Char 2 = 3 (Color codes: 1 - 7) * Char 3 = Intensified on/off ( 1 or 0 ) * Char 4 = Inverse display on/off ( 1 or 0 ) * i.e. wa_ekko-line_color = 'C410' LD_COLOR = LD_COLOR + 1. * Only 7 colours so need to reset color value IF LD_COLOR = 3. LD_COLOR = 1. ENDIF. CONCATENATE 'C' LD_COLOR '10' INTO WA_EKKO-LINE_COLOR. * wa_ekko-line_color = 'C410'. MODIFY IT_EKKO FROM WA_EKKO. G_CNT = G_CNT + 1. " Transtion Prograss Watch PERFORM PROGRESS_INDICATOR " Transtion Prograss Watch USING G_CNT G_TOTAL ' Progressing... '. " Transtion Prograss Watch ENDLOOP. ENDFORM. " DATA_RETRIEVAL *&--------------------------------------------------------------------* *& Form progress_indicator *&--------------------------------------------------------------------* FORM PROGRESS_INDICATOR USING VALUE(P_CUR) VALUE(P_TOTAL) VALUE(P_TEXT). DATA : TEXT(50) TYPE C, IDX1(3) TYPE N. IF P_CUR > P_TOTAL. IDX1 = 100. ELSE. IDX1 = ( P_CUR / P_TOTAL ) * 100. ENDIF. CHECK G_INDEX <> IDX1 OR G_INDEX IS INITIAL. G_INDEX = IDX1. CONCATENATE IDX1 ' % : ' P_TEXT INTO TEXT. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING PERCENTAGE = IDX1 TEXT = TEXT EXCEPTIONS OTHERS = 0. ENDFORM. " progress_indicator