You are on page 1of 16

*&---------------------------------------------------------------------* *& Report ZPS_DAILY_PROGRESS *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zps_daily_progress. TYPE-POOLS: slis.

DATA : w_fieldcat wa_fieldcat xfieldcat layout wa_cellcolor cntr TYPE TYPE TYPE TYPE TYPE TYPE slis_t_fieldcat_alv, slis_fieldcat_alv, slis_t_fieldcat_alv, slis_layout_alv, lvc_s_scol, i.

" column color in alv

TYPES: BEGIN OF ty_afru, rueck TYPE co_rueck, rmzhl TYPE co_rmzhl, budat TYPE buchdatum, ltxa1 TYPE co_rtext, aufpl TYPE co_aufpl, aplzl TYPE co_aplzl, aufnr TYPE aufnr, ismnw TYPE ismnw, vornr TYPE vornr, ofmnw TYPE remnw, END OF ty_afru. TYPES : BEGIN * pspnr TYPE * post1 TYPE wbs_element description

"Order Confirmations "Completion confirmation number for the operation "Confirmation counter "Posting date "Confirmation text "Routing number of operations in the order "General counter for order "Order Number "Actual work "Operation/Activity Number "Remaining work

OF ty_proj, ps_posnr, "WBS Element ps_post1, "Short description (1st text line) TYPE ps_posid, "WBS Element TYPE ps_post1, "Short description (1st text line)

END OF ty_proj. TYPES : BEGIN OF ty_vornr, activity TYPE cn_vornr, description TYPE ltxa1, END OF ty_vornr. "Activity "Activity Desc

DATA : t_elem TYPE TABLE OF bapi_wbs_elements, t_exp TYPE TABLE OF bapi_wbs_element_exp, t_mil TYPE TABLE OF bapi_wbs_milestone_exp, t_netact TYPE TABLE OF bapi_network_activity_exp, t_afru TYPE TABLE OF ty_afru, t_proj TYPE TABLE OF ty_proj, w_proj LIKE LINE OF t_proj, t_vornr TYPE TABLE OF ty_vornr, w_vornr LIKE LINE OF t_vornr. FIELD-SYMBOLS : <w_elem> <w_exp> <w_mil> <w_netact> LIKE LIKE LIKE LIKE LINE LINE LINE LINE OF OF OF OF t_elem, t_exp, t_mil, t_netact,

<w_afru> TYPES: BEGIN OF ty_final, wbs wbs_desc act act_desc act_unit boq_qty cum_qty tot_bal day_plan day_ach short_fall week_plan week_ach month_plan month_ach month_bal totach_prev_mon prev_mon_bill diff_prev_mon rmks END OF ty_final. TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE

LIKE LINE OF t_afru.

ps_posid, ps_post1, cn_vornr, ltxa1, arbeite, arbeit, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, ofmnw, co_rtext,

"WBS Element "PS: Short description "Activity "Activity Desc "Activity Unit "Boq Qty "Cum.qty Achieved As On Date "Total Balance Scope of work "Day Planned Qty "Day Achieved Qty "Short_fall "Week Plan Qty "Week Achieved Qty "Month Plan Qty "Month Achieved Qty "Month Balance Qty "Total Ach.Previous Month Balance Qty "Previous Month Billing "Difference Previous Month "Confirmation text

DATA : t_final TYPE TABLE OF ty_final, w_final LIKE LINE OF t_final, w_prps2 TYPE prps, w_aufk2 TYPE aufk, w_afvc2 TYPE afvc, return_tab TYPE ddshretval OCCURS 0 WITH HEADER LINE. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. PARAMETERS: p_pspnr TYPE ps_pspid OBLIGATORY, "Project definition (internal) p_date TYPE datum OBLIGATORY. "Date SELECT-OPTIONS : s_posid FOR w_prps2-posid, "wbs s_vornr FOR w_afvc2-vornr. "Activity SELECTION-SCREEN END OF BLOCK b1 . AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_posid-low. PERFORM bapi_get_projectinfo. "bapi PERFORM f4_posid. "for wbs based on project s_posid-low = return_tab-fieldval. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_posid-high. PERFORM bapi_get_projectinfo. "bapi PERFORM f4_posid. "for wbs based on project s_posid-high = return_tab-fieldval. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vornr-low. PERFORM bapi_get_projectinfo. "bapi PERFORM f4_vornr. s_vornr-low = return_tab-fieldval. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vornr-high. PERFORM bapi_get_projectinfo. "bapi

PERFORM f4_vornr. s_vornr-high = return_tab-fieldval. START-OF-SELECTION. PERFORM bapi_get_projectinfo. "bapi PERFORM fetch_data. PERFORM process_data. PERFORM display_data. *&---------------------------------------------------------------------* *& Form fetch_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f4_posid. REFRESH : t_proj,return_tab. CLEAR w_proj. LOOP AT t_exp ASSIGNING <w_exp>. w_proj-wbs_element = <w_exp>-wbs_element. w_proj-description = <w_exp>-description. APPEND w_proj TO t_proj. ENDLOOP. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'WBS_ELEMENT' value_org = 'S' TABLES value_tab = t_proj return_tab = return_tab EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. ENDFORM. "f4_posid *&---------------------------------------------------------------------* *& Form f4_vornr *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f4_vornr. REFRESH : return_tab,t_vornr. CLEAR w_vornr. IF s_posid IS NOT INITIAL. LOOP AT s_posid. IF s_posid-low IS NOT INITIAL. CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT' EXPORTING input = s_posid-low IMPORTING output = s_posid-low. MODIFY s_posid TRANSPORTING low. ENDIF. "WBSe ID.No "WBSe Description

IF s_posid-high IS NOT INITIAL. CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT' EXPORTING input = s_posid-high IMPORTING output = s_posid-high. MODIFY s_posid TRANSPORTING low. ENDIF. ENDLOOP. ENDIF. *** to get activity based on wbs selected DELETE t_netact WHERE wbs_element NOT IN s_posid. *** end LOOP AT t_netact ASSIGNING <w_netact>. w_vornr-activity = <w_netact>-activity . w_vornr-description = <w_netact>-description . APPEND w_vornr TO t_vornr. ENDLOOP. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'ACTIVITY' value_org = 'S' TABLES value_tab = t_vornr return_tab = return_tab EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. ENDFORM. "f4_vornr

*&---------------------------------------------------------------------* *& Form bapi_get_projectinfo *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM bapi_get_projectinfo. REFRESH : t_elem,t_exp,t_mil,t_netact. CALL FUNCTION 'BAPI_PROJECT_GETINFO' EXPORTING project_definition = p_pspnr with_activities = 'X' TABLES i_wbs_element_table = t_elem e_wbs_element_table = t_exp e_wbs_milestone_table = t_mil e_activity_table = t_netact.

ENDFORM. "bapi_get_projectinfo *&---------------------------------------------------------------------* *& Form fetch_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM fetch_data. IF NOT t_netact[] IS INITIAL. SELECT rueck rmzhl budat ltxa1 aufpl aplzl aufnr ismnw vornr ofmnw INTO TABLE t_afru "Order Confirmations FROM afru FOR ALL ENTRIES IN t_netact WHERE aufnr = t_netact-network AND stokz EQ ' ' "Indicator: Document Has Been Reversed AND stzhl EQ ' '. "Confirmation counter of cancelled confirmation SORT t_afru BY aufnr ASCENDING. ENDIF. LOOP AT s_posid. IF s_posid-low IS NOT INITIAL. CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT' EXPORTING input = s_posid-low IMPORTING output = s_posid-low. MODIFY s_posid TRANSPORTING low. ENDIF. IF s_posid-high IS NOT INITIAL. CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT' EXPORTING input = s_posid-high IMPORTING output = s_posid-high. MODIFY s_posid TRANSPORTING low. ENDIF. ENDLOOP. DELETE t_exp WHERE wbs_element NOT IN s_posid. "to consider only given wbs DELETE t_netact WHERE activity NOT IN s_vornr. "to consider only given activit y LOOP AT t_exp ASSIGNING <w_exp>. LOOP AT t_netact ASSIGNING <w_netact> WHERE wbs_element = <w_exp>-wbs_elemen t. w_final-wbs w_final-wbs_desc w_final-act = <w_exp>-wbs_element. = <w_exp>-description. = <w_netact>-activity. "WBSe ID.No "WBSe Description "Activity

w_final-act_desc w_final-act_unit w_final-boq_qty

= <w_netact>-description. = <w_netact>-un_work. = <w_netact>-work_activity.

"Activity Description "Activity Unit "BOQ Quantity

READ TABLE t_afru ASSIGNING <w_afru> WITH KEY aufnr = <w_netact>-network BINARY SEARCH. IF sy-subrc EQ 0. w_final-tot_bal = <w_afru>-ofmnw . "Tot.Bal Scope of work ENDIF. LOOP AT t_afru ASSIGNING <w_afru> WHERE vornr = <w_netact>-activity. IF p_date = <w_afru>-budat. w_final-day_ach = w_final-day_ach + <w_afru>-ismnw. "Day Achieved Qty ENDIF. ENDLOOP. IF p_date >= <w_netact>-actual_start_date AND p_date <= <w_netact>-actual _finish_date. w_final-cum_qty = ( w_final-boq_qty - w_final-tot_bal ). "Cummulative Qty Achieved as on date ELSEIF p_date > <w_netact>-actual_finish_date. w_final-cum_qty = ( w_final-boq_qty - w_final-tot_bal ). Qty Achieved as on date ENDIF. IF p_date >= <w_netact>-early_start_date AND p_date <= <w_netact>-latest_ finish_date. IF <w_netact>-duration_normal GT 0. w_final-day_plan = ( w_final-boq_qty / <w_netact>-duration_normal ). "Day Planned Qty ENDIF. ENDIF. w_final-short_fall = w_final-day_plan - w_final-day_ach."Short Fall *** week plan Qty logic "Cummulative

DATA : week LIKE scal-week,start_date TYPE sy-datum, days(2) TYPE n,end_ date TYPE sy-datum. CLEAR week. CALL FUNCTION 'DATE_GET_WEEK' "FM to get week no based on input date EXPORTING date = p_date IMPORTING week = week "eg:201317 EXCEPTIONS date_invalid = 1 OTHERS = 2 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. IF NOT week IS INITIAL. CLEAR start_date.

CALL FUNCTION 'WEEK_GET_FIRST_DAY' "FM to get start date of the week EXPORTING week = week IMPORTING date = start_date EXCEPTIONS week_invalid = 1 OTHERS = 2 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ENDIF. days = 06. CLEAR end_date. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' " function module to get days to the given date EXPORTING date = start_date days = days months = 00 signum = '+' years = 00 IMPORTING calc_date = end_date. * * start_date as week start date end_date considered as week end date.

***cond for week plan qty IF start_date >= <w_netact>-early_start_date AND end_date <= <w_netact>-l atest_finish_date. w_final-week_plan = w_final-day_plan * 7. ENDIF. IF start_date LT <w_netact>-early_start_date AND end_date LT <w_netact>-e arly_start_date . w_final-week_plan = w_final-day_plan * 0. ENDIF. IF start_date LT <w_netact>-early_start_date AND ( end_date BETWEEN <w_net act>-early_start_date AND <w_netact>-latest_finish_date ). w_final-week_plan = ( end_date - <w_netact>-early_start_date ) * w_final -day_plan . ENDIF. IF ( start_date BETWEEN <w_netact>-early_start_date AND <w_netact>-latest_ finish_date ) AND ( end_date GT <w_netact>-latest_finish_date ). w_final-week_plan = ( <w_netact>-latest_finish_date - start_date ) * w_f inal-day_plan. ENDIF. IF start_date GT <w_netact>-latest_finish_date . w_final-week_plan = w_final-day_plan * 0. ENDIF. ***end of week plan

***

Start of week achieved DO 6 TIMES. CLEAR : days. days = sy-index.

IF sy-index EQ 1. end_date = start_date. ELSE. days = 01. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' " function module to get days to the given date EXPORTING date = end_date days = days months = 00 signum = '+' years = 00 IMPORTING calc_date = end_date. ENDIF. LOOP AT t_afru ASSIGNING <w_afru> WHERE vornr = <w_netact>-activity. IF end_date = <w_afru>-budat. w_final-week_ach = w_final-week_ach + <w_afru>-ismnw. "Week Achieve d Qty ENDIF. ENDLOOP. ENDDO. CLEAR end_date. end of week achieved

*** ***

Start of Month Plan Qty DATA : mon_start_dt TYPE sy-datum,mon_end_dt TYPE sy-datum, no_days LIKE t009b-butag, "to get no of days for the month a nd year. prev_mon TYPE sy-datum. CLEAR :mon_start_dt,mon_end_dt,prev_mon. CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE' "Function module to get Month S tart Date and Month End date for the given Date EXPORTING iv_date = p_date IMPORTING ev_month_begin_date = mon_start_dt ev_month_end_date = mon_end_dt. CLEAR no_days. CALL FUNCTION 'NUMBER_OF_DAYS_PER_MONTH_GET' "Function Module to get No Da ys for the given month and year EXPORTING par_month = mon_start_dt+4(2) par_year = mon_start_dt+0(4) IMPORTING par_days = no_days. IF mon_start_dt >= <w_netact>-early_start_date AND mon_end_dt <= <w_netac t>-latest_finish_date.

w_final-month_plan = w_final-day_plan * no_days . ENDIF. IF mon_end_dt LT <w_netact>-early_start_date . w_final-month_plan = w_final-day_plan * 0. ENDIF. IF mon_start_dt LT <w_netact>-early_start_date AND ( mon_end_dt BETWEEN <w _netact>-early_start_date AND <w_netact>-latest_finish_date ). w_final-month_plan = ( mon_end_dt - <w_netact>-early_start_date ) * w_fi nal-day_plan . ENDIF. IF ( mon_start_dt BETWEEN <w_netact>-early_start_date AND <w_netact>-lates t_finish_date ) AND ( mon_end_dt GT <w_netact>-latest_finish_date ). w_final-month_plan = ( <w_netact>-latest_finish_date - mon_start_dt ) * w_final-day_plan. ENDIF. IF mon_start_dt GT <w_netact>-latest_finish_date . w_final-month_plan = w_final-day_plan * 0. ENDIF. *** end of Month Plan Qty

***Start of Month Achieved Qty. CLEAR : start_date, end_date.. DO no_days TIMES. CLEAR : days. days = sy-index. IF sy-index EQ 1. end_date = mon_start_dt. ELSE. days = 01. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' " function module to get days to the given date EXPORTING date = end_date "input month start date days = days months = 00 signum = '+' years = 00 IMPORTING calc_date = end_date. ENDIF. LOOP AT t_afru ASSIGNING <w_afru> WHERE vornr = <w_netact>-activity and budat = end_date. w_final-month_ach = w_final-month_ach + <w_afru>-ismnw. "Month Achi eved Qty ENDLOOP. ENDDO. *** end of Month achieved ** MONTH BALANCE w_final-month_bal = ( w_final-month_plan - w_final-month_ach )."Month B alance Qty

**

END

***Start of Tot Achieved Qty for previous Month CLEAR : end_date,prev_mon,mon_start_dt,mon_end_dt. prev_mon = p_date. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' " function module to get last mon th to the given date EXPORTING date = prev_mon days = 00 months = 01 signum = '-' years = 00 IMPORTING calc_date = end_date. "to get last month * CLEAR no_days. CALL FUNCTION 'NUMBER_OF_DAYS_PER_MONTH_GET' "Function Module to get No Da ys for the given month and year EXPORTING par_month = end_date+4(2) par_year = end_date+0(4) IMPORTING par_days = no_days. CLEAR : mon_start_dt,mon_end_dt. CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE' "Function module to get Month S tart Date and Month End date for the given Date EXPORTING iv_date = prev_mon "input month - o1 (last month) IMPORTING ev_month_begin_date = mon_start_dt "will get last month start date ev_month_end_date = mon_end_dt. " wull get last month end date CLEAR end_date. DO no_days TIMES. CLEAR : days. days = sy-index. IF sy-index EQ 1. end_date = mon_start_dt. ELSE. days = 01. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' " function module to get days to the given date EXPORTING date = end_date "input month start date days = days months = 00 signum = '+' years = 00 IMPORTING calc_date = end_date. ENDIF. LOOP AT t_afru ASSIGNING <w_afru> WHERE vornr = <w_netact>-activity and

budat = end_date . w_final-totach_prev_mon = w_final-totach_prev_mon + <w_afru>-ismnw. "Previous Month Achieved Qty ENDLOOP. ENDDO. *** end of Tot Achieved Qty for previous Month

****Previous Month Total Qty logic need to be included after configuration. *w_final-prev_mon_bill ***end of Previous Month Total Qty *** Difference w_final-diff_prev_mon = ( w_final-totach_prev_mon - w_final-prev_mon_bill ). "Difference ** end *** Remarks based on input date LOOP AT t_afru ASSIGNING <w_afru> WHERE vornr = <w_netact>-activity AND bu dat = p_date . w_final-rmks = <w_afru>-ltxa1. "Remarks ENDLOOP. APPEND w_final TO t_final. CLEAR w_final. ENDLOOP. ENDLOOP. ENDFORM. "fetch_data *&---------------------------------------------------------------------* *& Form process_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM process_data. ENDFORM. "process_data *&---------------------------------------------------------------------* *& Form display_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM display_data. CLEAR : cntr,wa_fieldcat.. REFRESH xfieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'WBS'. wa_fieldcat-seltext_s = '[A] WBSe ID.No'. wa_fieldcat-seltext_l = '[A] WBSe Identification Number'. wa_fieldcat-seltext_m = '[A] WBSe Identification Number'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1.

wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'WBS_DESC'. wa_fieldcat-seltext_s = '[B] WBSe Description'. wa_fieldcat-seltext_l = '[B] WBSe Description'. wa_fieldcat-seltext_m = '[B] WBSe Description'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'ACT'. wa_fieldcat-seltext_s = '[B1] Activity'. wa_fieldcat-seltext_l = '[B1] Activity'. wa_fieldcat-seltext_m = '[B1] Activity'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'ACT_DESC'. wa_fieldcat-seltext_s = '[C] Activity Description'. wa_fieldcat-seltext_l = '[C] Activity Description'. wa_fieldcat-seltext_m = '[C] Activity Description'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'ACT_UNIT'. wa_fieldcat-seltext_s = '[D] Activity Unit'. wa_fieldcat-seltext_l = '[D] Activity Unit'.. wa_fieldcat-seltext_m = '[D] Activity Unit'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'BOQ_QTY'. wa_fieldcat-seltext_s = '[E] BOQ Qty'. wa_fieldcat-seltext_l = '[E] BOQ Quantity'. wa_fieldcat-seltext_m = '[E] BOQ Quantity'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'CUM_QTY'. wa_fieldcat-seltext_s = '[E1] Cumm.Qty acvd as on date'. wa_fieldcat-seltext_l = '[E1] Cummulative Qty Achieved as on date '. wa_fieldcat-seltext_m = '[E1] Cummulative Qty Achieved as on date '. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'TOT_BAL'. wa_fieldcat-seltext_s = '[F=E-E1] Tot.Bal Scope of work'. wa_fieldcat-seltext_l = '[F=E-E1] Total Balance Scope of work'. wa_fieldcat-seltext_m = '[F=E-E1] Total Balance Scope of work'. APPEND wa_fieldcat TO xfieldcat.

CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'DAY_PLAN'. wa_fieldcat-seltext_s = '[G] Day Planned Qty'. wa_fieldcat-seltext_l = '[G] Day Planned Qty'. wa_fieldcat-seltext_m = '[G] Day Planned Qty'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'DAY_ACH'. wa_fieldcat-seltext_s = '[H] Day Achieved Qty'. wa_fieldcat-seltext_l = '[H] Day Achieved Qty'. wa_fieldcat-seltext_m = '[H] Day Achieved Qty'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'SHORT_FALL'. wa_fieldcat-seltext_s = '[I=G-H] Short Fall/Excess'. wa_fieldcat-seltext_l = '[I=G-H] Short Fall/Excess'. wa_fieldcat-seltext_m = '[I=G-H] Short Fall/Excess'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'WEEK_PLAN'. wa_fieldcat-seltext_s = '[J] Week Planned Qty'. wa_fieldcat-seltext_l = '[J] Week Planned Qty'. wa_fieldcat-seltext_m = '[J] Week Planned Qty'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'WEEK_ACH'. wa_fieldcat-seltext_s = '[K] Week Achieved Qty'. wa_fieldcat-seltext_l = '[K] Week Achieved Qty'. wa_fieldcat-seltext_m = '[K] Week Achieved Qty'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'MONTH_PLAN'. wa_fieldcat-seltext_s = '[L] Month planned Qty'. wa_fieldcat-seltext_l = '[L] Month planned Qty'. wa_fieldcat-seltext_m = '[L] Month planned Qty'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos wa_fieldcat-fieldname wa_fieldcat-seltext_s = cntr. = 'MONTH_ACH'. = '[M] Month achieved Qty'.

wa_fieldcat-seltext_l = '[M] Month achieved Qty'. wa_fieldcat-seltext_m = '[M] Month achieved Qty'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'MONTH_BAL'. wa_fieldcat-seltext_s = '[N=L-M] Bal.Qty.Month'. wa_fieldcat-seltext_l = '[N=L-M] Balance Qty Month'. wa_fieldcat-seltext_m = '[N=L-M] Balance Qty Month'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'TOTACH_PREV_MON'. wa_fieldcat-seltext_s = '[O] Tot.Ach.Qty for prev. Month(DPR)'. wa_fieldcat-seltext_l = '[O] Total Ach Qty For Previous Month(Dpr)'. wa_fieldcat-seltext_m = '[O] Total Ach Qty For Previous Month(Dpr)'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'PREV_MON_BILL'. wa_fieldcat-seltext_s = '[P] Tot.Ach.Qty For Prev.Month(Billing)'. wa_fieldcat-seltext_l = '[P] Total Ach Qty For Previous Month(Billing)'. wa_fieldcat-seltext_m = '[P] Total Ach Qty For Previous Month(Billing)'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'DIFF_PREV_MON'. wa_fieldcat-seltext_s = '[Q=O-P] Diff.Qty For Pre.Month'. wa_fieldcat-seltext_l = '[Q=O-P] Difference Qty For Previous Month'. wa_fieldcat-seltext_m = '[Q=O-P] Difference Qty For Previous Month'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. cntr = cntr + 1. wa_fieldcat-col_pos = cntr. wa_fieldcat-fieldname = 'RMKS'. wa_fieldcat-seltext_s = '[R] Remarks'. wa_fieldcat-seltext_l = '[R] Remarks'. wa_fieldcat-seltext_m = '[R] Remarks'. APPEND wa_fieldcat TO xfieldcat. CLEAR wa_fieldcat. layout-colwidth_optimize = 'X'. * layout-coltab_fieldname = 'CELLCOLOR'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid * i_callback_user_command = 'USER_COMMAND' i_background_id = 'ALV_BACKGROUND' it_fieldcat = xfieldcat

i_save it_events is_layout i_callback_top_of_page TABLES t_outtab EXCEPTIONS program_error OTHERS

= = = =

'A' events layout 'TOP_OF_PAGE'

= t_final[] = 1 = 2.

ENDFORM.

"display_data

*&---------------------------------------------------------------------* *& Form top_of_page *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM top_of_page. DATA: theader TYPE slis_t_listheader, waheader TYPE slis_listheader, date1(10),date2(10),time(10),name1 TYPE name1,butxt TYPE butxt, mon_year(8),post1 TYPE ps_post1. DATA : pspnr2 TYPE ps_intnr. waheader-typ = 'H'. waheader-info = 'Daily Progress Report'. APPEND waheader TO theader. CLEAR waheader. CLEAR pspnr2. CALL FUNCTION 'CONVERSION_EXIT_KONPD_INPUT' EXPORTING input = p_pspnr IMPORTING output = pspnr2. CLEAR post1. SELECT SINGLE post1 INTO post1 FROM proj WHERE pspnr = pspnr2. waheader-typ = 'S'. waheader-key = 'Project Def '. CONCATENATE ':' p_pspnr'-' post1 INTO waheader-info. APPEND waheader TO theader. CLEAR waheader. CLEAR date1. waheader-typ = waheader-key = WRITE p_date TO CONCATENATE ':' APPEND waheader CLEAR waheader. 'S'. 'Date '. date1 DD/MM/YYYY. date1 INTO waheader-info. TO theader.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = theader. * i_logo = 'ZTEST'. ENDFORM. "top_of_page

You might also like