‎2009 Jan 06 12:37 AM
Hi ,
i have changed my report from list display to grid display the output is correct but the top of page in report header is not being displayed in the output please suggest
Thanks
‎2009 Jan 06 3:56 AM
Hi Revanth Kandula,
Use this this way, its working:-
use demo code for top_of_page event.
*FOR TOP OF THE PAGE
DATA : it_top TYPE slis_t_listheader,
wa_top TYPE slis_listheader.
*&---------------------------------------------------------------------*
* DISPLAY RECORDS IN ALV GRID
*&---------------------------------------------------------------------*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid "report id
i_callback_top_of_page = 'TOP' "to print in top of page
it_fieldcat = it_field "for field catalog (headings for columns)
TABLES
t_outtab = it_ekpo "internal table comprising of the data
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc 0.
ENDIF.
*&---------------------------------------------------------------------*
*& Form top
*&---------------------------------------------------------------------*
* TO WRITE THE HEADER
*----------------------------------------------------------------------*
FORM top.
REFRESH it_top.
wa_top-typ = 'S'.
wa_top-key = 'Date :'.
wa_top-info = sy-datum.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-key = 'Time :'.
wa_top-info = sy-uzeit.
APPEND wa_top TO it_top.
CLEAR wa_top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_top "pass the data to be printed
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM. "top
Hope this solves your problem.
Thanks & Regards,
Tarun Gambhir
‎2009 Jan 06 12:56 AM
Debug and chek the code how the header is building for grid display.
‎2009 Jan 06 1:41 AM
Hi,
Can you put your code here so as to make it more clear?
Thanks and regards,
Chris Gu
‎2009 Jan 06 1:54 AM
*
REPORT zsample12 NO STANDARD PAGE HEADING LINE-SIZE 256.
----
Types
----
TYPE-POOLS: kkblo.
----
Tables
----
TABLES: aufk, "Order master data
cosp, "CO Object: Cost Totals for External Postings
lgrwo, "RW: Dynpro Fields of Function Group LGRWO
tko08, "Processing groups for orders
tko09. "Process Group Description
----
Structures
----
*Structure used to fill the ALV Grid
DATA: BEGIN OF st_output,
aufgr TYPE aufgr, "Order Group
aufnr TYPE aufnr, "Order Number
R3DK908842 ktext TYPE ktext, "Order Text
ktext(40) TYPE C, "Order Text
perio TYPE co_perio, "Period
gjahr TYPE gjahr, "Year
kokrs TYPE kokrs, "Controlling Area
aufgr type aufgr, "Summary Group
user7 TYPE aufuser7, "Start of Work
user8 TYPE aufuser8, "Date Work Ends
user6 TYPE aufuser6, "Department
kostv TYPE kostv, "Cost Centre
user2 TYPE aufuser2, "Person Resp.
user3 TYPE aufuser3, "Person Resp. Tel.
status(4) TYPE c, "Status of Order
st_dat TYPE budat, "Status Date
user0 TYPE aufuser0, "Applicant
user1 TYPE aufuser1, "Applicant Tel.
abkrs TYPE aufabkrs, "Processing Group
AKTXT(30) type C, "Process Description
user4 TYPE aufuser4, "Estimated Costs
user5 TYPE aufuser5, "Application Date
totbud TYPE bp_wjl, "Total Budget
totbtr TYPE wertv8, "Total Actuals
commit TYPE wertv8, "Total Commitment
assgnd TYPE wertv8, "Total Asigned to the project
avalbl TYPE wertv8, "Total Available
perbtr TYPE wertv8, "Actual Current Period
yerbtr TYPE wertv8, "Actual Current Year
prybtr TYPE wertv8, "Actual Previous Year
setid TYPE setid, "Heirarchy group id.
END OF st_output.
----
Internal Tables
----
*WORK AREAS
DATA: wa_coep TYPE coep.
Internal Table for the Set Information
DATA: BEGIN OF tbl_setinfo OCCURS 0.
INCLUDE STRUCTURE setinfo.
DATA: END OF tbl_setinfo.
Range for the Order numbers in the Set
RANGES: r_aufnr FOR aufk-aufnr OCCURS 0.
Internal Table for the Order Master AND to store temp data
DATA: BEGIN OF tbl_aufk OCCURS 0,
hi_setid TYPE setid, "Higher Level of Object
hi_desc TYPE settext, "Description of Higher Level
aufnr TYPE aufnr, "Order Number
objnr TYPE j_objnr, "Object Number
perbtr TYPE wertv8, "Period Total value in object currency
yerbtr TYPE wertv8, "Year Total value in object currency
prybtr TYPE wertv8, "Prev Year Total value in object currency
totbtr TYPE wertv8, "Total for Object value in object currency
totbud TYPE wertv8, "Total Budget
commit TYPE wertv8, "Total Commitment
kokrs TYPE kokrs, "Controlling Area
kstar TYPE kstar, "Cost Element No.
user7 TYPE aufuser7, "Start of Work
user8 TYPE aufuser8, "Date Work Ends
user6 TYPE aufuser6, "Department
kostv TYPE aufkostv, "Cost Centre
user2 TYPE aufuser2, "Person Resp
user3 TYPE aufuser3, "Person Resp Tel
user0 TYPE aufuser0, "Applicant
user1 TYPE aufuser1, "App Tel
abkrs TYPE aufabkrs, "Processign Group
AKTXT(30) type C, "Process Description
user4 TYPE aufuser4, "Estimated Costs
user5 TYPE aufuser5, "Application Date
R3DK908842 ktext TYPE ktext, "Short Text
ktext(40) TYPE c, "Short Text
level TYPE setlev, "Level of the object
descript TYPE settext,"Description for the object
setid TYPE setid, "Identification of a set
phas0 TYPE xfeld, "Phase "Order created"
phas1 TYPE xfeld, "Phase "Order released"
phas2 TYPE xfeld, "Phase "order completed"
phas3 TYPE xfeld, "Phase "order closed"
gjahr TYPE gjahr,
erdat TYPE datum, "Created By
idat1 TYPE datum,
idat2 TYPE datum,
idat3 TYPE datum,
st_dat TYPE datum, "Status Date
status(4) TYPE c, "Status of Order
R3DK906478 tart
ernam TYPE usnam, "Entered By
R3DK906478 end
R3DK908338 start
user9 TYPE aufuser9, " Work Approval flag
R3DK908338 end
R3DK908718 Start
kdauf TYPE kdauf, " Sales Order Ref
R3DK908718 End
totplan TYPE wertv8, "Total Plan
wtjhr TYPE bpej-wtjhr, " yealy supplement R3DK913369
totpvyract TYPE wertv8, "R3DK913495
END OF tbl_aufk.
*Internal data for the table COEP
DATA: BEGIN OF tbl_coep OCCURS 0,
objnr TYPE objnr, "Object Number
kstar TYPE kstar, "Cost Element
gjahr TYPE gjahr, "Fiscal Year
perio TYPE co_perio, "Period
kokrs TYPE kokrs, "Controlling Area
belnr TYPE co_belnr, "Document Number
buzei TYPE co_buzei, "Line Item
wogbtr TYPE wertv8, "Total value in object currency
wkgbtr TYPE wertv8, "Total value in CO area currency
beknz TYPE beknz, "Debit/Credit Indicator
wrttp TYPE co_wrttp, "Value Type
END OF tbl_coep.
*Internal data for the table BPEG
DATA: BEGIN OF tbl_bpeg OCCURS 0,
belnr TYPE bp_belnr, "Document No.
buzei TYPE co_buzei, "Item No.
lednr TYPE bp_lednr, "Budget / Planning ledger
objnr TYPE bp_objekt, "Object number
wrttp TYPE co_wrttp, "Value type
gjahr TYPE gjahr, "Fiscal year
versn TYPE bp_version,"Planning/budgeting version
wlges TYPE bp_wgl, "Value in ledger currency
wtges TYPE bp_wgt, "Value in Document Currency
vorga TYPE bpeg-vorga, " activity type R3DK913369
END OF tbl_bpeg.
*Internal data for the table COOI
DATA: BEGIN OF tbl_cooi OCCURS 0,
refbn TYPE co_refbn, "Reference Document No
rfpos TYPE cc_rfpos, "Reference Line Item
lednr TYPE lednr, "Budget / Planning ledger
objnr TYPE j_objnr, "Object number
wrttp TYPE co_wrttp, "Value type
gjahr TYPE gjahr, "Fiscal year
versn TYPE versn, "Planning/budgeting version
perio TYPE co_perio, "Period
kokrs TYPE kokrs, "Company Code
whgbtr TYPE wertv8, "Total value in local currency
wkgbtr TYPE wertv8, "Total value in CO area currency
END OF tbl_cooi.
Internal table of Hierarchies and Number Ranges
DATA: BEGIN OF tbl_setheir OCCURS 0.
INCLUDE STRUCTURE sethier.
DATA: END OF tbl_setheir.
Internal Table for Set Values of the Hierarchy
DATA: BEGIN OF tbl_setvalues OCCURS 0.
INCLUDE STRUCTURE setvalues.
DATA: END OF tbl_setvalues.
Internal Table for Output. ie. fields to fill the ALV with.
DATA: BEGIN OF tbl_output OCCURS 0,
hi_setid TYPE setid, "Higher Level of Object
hi_desc TYPE settext, "Description of Higher Level
level TYPE setlev, "Level of the object
descript TYPE settext,"Description for the object
aufgr TYPE aufgr, "Order Group
aufnr TYPE aufnr, "Order Number
R3DK908842 ktext TYPE ktext, "Order Text
ktext(40) type c, "Short Text
perio TYPE co_perio, "Period
gjahr TYPE gjahr, "Year
kokrs TYPE kokrs, "Controlling Area
objnr TYPE j_objnr, "Order Number
aufgr type aufgr, "Summary Group
user7 TYPE aufuser7, "Start of Work
user8 TYPE aufuser8, "Date Work Ends
user6 TYPE aufuser6, "Department
kostv TYPE kostv, "Cost Centre
user2 TYPE aufuser2, "Person Resp.
user3 TYPE aufuser3, "Person Resp. Tel.
status(4) TYPE c, "Status of Order
st_dat TYPE budat, "Status Date
user0 TYPE aufuser0, "Applicant
user1 TYPE aufuser1, "Applicant Tel.
abkrs TYPE aufabkrs, "Processing Group
AKTXT(30) type C, "Process Description
user4 TYPE aufuser4, "Estimated Costs
user5 TYPE aufuser5, "Application Date
totbud TYPE bp_wjl, "Total Budget
totbtr TYPE wertv8, "Total Actuals
commit TYPE wertv8, "Total Commitment
assgnd TYPE wertv8, "Total Asigned to the project
avalbl TYPE wertv8, "Total Available
perbtr TYPE wertv8, "Actual Current Period
yerbtr TYPE wertv8, "Actual Current Year
prybtr TYPE wertv8, "Actual Previous Year
setid TYPE setid, "Identification of a set
R3DK906478 start
erdat TYPE datum, "Created on
ernam TYPE usnam, "Entered By
R3DK906478 end
R3DK908338 Start
user9 TYPE aufuser9, " Work Approval
R3DK908338 end
R3DK908718 Start
kdauf TYPE kdauf, " Sales Order Ref
R3DK908718 End
R3DK911017 Start
wljhr LIKE bpej-wtjhr, "Total Budget for Current Year
R3DK911017 End
R3DK912712 Start
plan LIKE bpej-wtjhr, "Current Plan for Year
totplan TYPE bp_wjl, "Total Plan
R3DK912712 End
wtjhr TYPE bpej-wtjhr, " yealy supplement R3DK913369
totpvyract TYPE wertv8, "R3DK913495
END OF tbl_output.
DATA: BEGIN OF tbl_hier OCCURS 0.
INCLUDE STRUCTURE sethier.
DATA: END OF tbl_hier.
DATA: BEGIN OF tbl_hier2 OCCURS 0.
INCLUDE STRUCTURE sethier.
DATA: END OF tbl_hier2.
R3DK911017 Start
DATA: BEGIN OF tbl_budget OCCURS 0,
wljhr LIKE bpej-wljhr,
objnr LIKE bpej-objnr,
END OF tbl_budget.
DATA: BEGIN OF tbl_bpej OCCURS 0,
wljhr LIKE bpej-wljhr,
objnr LIKE bpej-objnr,
END OF tbl_bpej.
R3DK911017 End
Begin of R3DK912712
DATA: BEGIN OF tbl_plan OCCURS 0,
wljhr LIKE bpja-wljhr,
objnr LIKE bpja-objnr,
END OF tbl_plan.
DATA: BEGIN OF tbl_bpge OCCURS 0.
INCLUDE STRUCTURE bpge.
DATA: END OF tbl_bpge.
DATA: BEGIN OF tbl_bpja OCCURS 0,
wljhr LIKE bpja-wljhr,
objnr LIKE bpja-objnr,
END OF tbl_bpja.
End of R3DK912712
----
Variables
----
DATA: g_setid TYPE setid,
t_setid TYPE setid,
g_lines LIKE sy-tabix.
DATA: l_lynes LIKE sy-tabix,
l_level(10) TYPE c,
l_index(10) TYPE c,
l_index2 TYPE i,
l_tabix LIKE sy-tabix,
l_hi_setid LIKE tbl_setheir-setid,
l_hi_desc LIKE tbl_setheir-descript.
*----
ALV GRID Definitions
*field catalogue
DATA: st_fieldcat TYPE slis_fieldcat_alv.
DATA: st_layout TYPE slis_layout_alv.
DATA: st_event TYPE slis_alv_event.
DATA: st_sort TYPE slis_sortinfo_alv.
DATA: tbl_fieldcat TYPE slis_t_fieldcat_alv.
DATA: tbl_events TYPE slis_t_event.
DATA: tbl_sorts TYPE slis_t_sortinfo_alv.
----
Constants
----
CONSTANTS: c_setclass TYPE setclass VALUE '0103',
c_set_table TYPE tabname VALUE 'CCSS'.
----
Selection Screen
----
SELECTION-SCREEN BEGIN OF BLOCK title WITH FRAME TITLE text-001.
PARAMETERS: p_kokrs TYPE kokrs DEFAULT 'APJH' OBLIGATORY, "CO Area
p_gjahr TYPE gjahr OBLIGATORY, "Fiscal Year
p_perio TYPE co_perio OBLIGATORY. "Period
SELECTION-SCREEN SKIP.
PARAMETERS: p_aufgr TYPE aufgr.
SELECT-OPTIONS: s_aufnr FOR aufk-aufnr.
PARAMETERS: p_kagru TYPE kagru.
SELECT-OPTIONS: s_kstar FOR cosp-kstar.
PARAMETERS: p_ob_cur RADIOBUTTON GROUP grp0 DEFAULT 'X',
p_ca_cur RADIOBUTTON GROUP grp0.
SELECTION-SCREEN END OF BLOCK title .
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK additional WITH FRAME TITLE text-002.
*SELECT-OPTIONS: s_summ FOR lgrwo-sum_from.
PARAMETERS: p_summ TYPE sum_from_n.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK status WITH FRAME TITLE text-003.
PARAMETERS: p_open RADIOBUTTON GROUP grp1 DEFAULT 'X',
p_comp RADIOBUTTON GROUP grp1,
p_all RADIOBUTTON GROUP grp1.
SELECTION-SCREEN END OF BLOCK status.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK dates WITH FRAME TITLE text-004.
SELECT-OPTIONS: s_user5 FOR aufk-user5, "App Date
s_user7 FOR aufk-user7, "Start of Work
s_ends FOR aufk-user8. "Date Work Ends
PARAMETERS: p_odue TYPE aufuser8. "Overdue as Of
SELECTION-SCREEN END OF BLOCK dates.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK dollars WITH FRAME TITLE text-005.
PARAMETERS: p_life AS CHECKBOX. "O/Spent Proj LTD
SELECTION-SCREEN END OF BLOCK dollars.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK general WITH FRAME TITLE text-006.
SELECT-OPTIONS: s_user2 FOR aufk-user2, "Person Resp
s_user6 FOR aufk-user6, "Department
s_user0 FOR aufk-user0, "Applicant
s_abkrs FOR tko08-abkrs. "Process. Group
SELECTION-SCREEN END OF BLOCK general.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK output WITH FRAME TITLE text-007.
PARAMETERS: p_show AS CHECKBOX DEFAULT 'X', "Show All
p_grpnam AS CHECKBOX, "Summ Group Name
p_resnam AS CHECKBOX, "Person Responsible
p_dept AS CHECKBOX, "Department
p_cost AS CHECKBOX, "Cost Centre
p_appl AS CHECKBOX, "Applicant
p_procgp AS CHECKBOX, "Process Group
p_protxt AS CHECKBOX, "Process Description
p_appdat AS CHECKBOX, "Application Date
p_start AS CHECKBOX, "Start of Work
p_end AS CHECKBOX, "Date Work Ends
p_apptel AS CHECKBOX, "Applicant's Tel.
p_restel AS CHECKBOX, "Person Resp's Tel.
p_est AS CHECKBOX, "Estimated Costs
p_status AS CHECKBOX, "Status of Order
p_date AS CHECKBOX. "Date of Order Status
SELECTION-SCREEN END OF BLOCK output.
SELECTION-SCREEN END OF BLOCK additional.
----
Range
----
Fiscal Year Range
RANGES: r_dates FOR aufk-idat1 OCCURS 0.
----
At Selection Screen
----
AT SELECTION-SCREEN.
PERFORM check_selections.
----
Initialisation
----
INITIALIZATION.
PERFORM initialise.
----
Start of Selection
----
START-OF-SELECTION.
PERFORM get_data. "Get all data for the ALV
----
End of Selection
----
END-OF-SELECTION.
DESCRIBE TABLE tbl_output LINES g_lines.
IF g_lines GT 0.
PERFORM get_layout. "Set the ALV layout
PERFORM get_events. "Include header in display
PERFORM get_sort_criteria. "Sort by Setid
PERFORM get_fieldcat. "Fill the ALV table
PERFORM create_report. "Write ALV
ELSE.
WRITE:/ 'No data found'(e04) COLOR COL_NEGATIVE INVERSE.
ENDIF.
----
Subroutines
*----
&----
*& Form initialise
&----
Initialise Key Tables
----
FORM initialise.
CLEAR: tbl_fieldcat,
tbl_setinfo,
r_aufnr,
tbl_aufk.
REFRESH: tbl_fieldcat,
tbl_setinfo,
r_aufnr,
tbl_aufk.
ENDFORM. " initialise
&----
*& Form check_selections
&----
Check the data on the Selection Screen
----
FORM check_selections.
Make sure Order Group or Order Numer is filled
IF p_aufgr IS INITIAL AND
s_aufnr-low IS INITIAL.
MESSAGE e398(00)
WITH 'An Order Group or Order Number must be provided'(e01)
space space space.
ENDIF.
Make sure that both Order Group and Order Number are not filled.
IF NOT p_aufgr IS INITIAL AND
NOT s_aufnr-low IS INITIAL.
MESSAGE e398(00)
WITH 'An Order Group or Order Number must be provided'(e01)
space space space.
ENDIF.
Make sure that 'Overdue As of' is used only for 'Open Projects'
IF NOT p_odue IS INITIAL AND
p_open = ' '.
MESSAGE e398(00)
WITH 'Overdue As of can only be used for'(e02)
'Open Projects Only'(e03) space space.
ENDIF.
Make sure that Hierarchy Level is greater than 0
IF p_summ LT 1.
MESSAGE e398(00)
WITH 'Please enter a Hierarchy Level greater than 0'(e05)
space space space.
ENDIF.
ENDFORM. " check_selections
&----
*& Form get_data
&----
Basically get all the relevant data and get an output table
ready for the ALV
----
FORM get_data.
Get the Fiscal Year
PERFORM get_fiscal_year.
Because the user must either put in an Order Group or an Order Number
range, we will use either GET_ORDERS_BY_GROUP or GET_ORDERS_BY_NUMBER
IF NOT p_aufgr IS INITIAL.
PERFORM get_orders_by_group.
ELSE.
PERFORM get_orders_by_number.
ENDIF.
PERFORM get_curr_period_budget. "GET ACCTCURPR - COEP
PERFORM get_curr_year_budget. "GET ACCTCURYR - COEP
R3DK911017 Start
PERFORM get_budget_curr_year. "GET Total Budget
R3DK911017 End
PERFORM get_plan_curr_year. "GET Plan for current year R3DK912712
PERFORM get_total_plan. "GET Total Plan R3DK912712
PERFORM get_total_actuals. "GET Total Actuals (totbtr) - COEP
PERFORM get_previous_year_budget."GET PREVYRBUD - COEP
PERFORM get_total_budget. "GET Budget (totbud)
PERFORM get_commitment. "Get Assignment (assngd)
PERFORM filter_data. "Check selection screen data
PERFORM fill_output_table. "Fill up output table to pass to ALV
ENDFORM. " get_data
&----
*& Form get_orders_by_group
&----
Get the Order Number Range via the Order Group
----
FORM get_orders_by_group.
REFRESH: tbl_setinfo,
tbl_setvalues.
CLEAR: g_setid,
tbl_setinfo,
tbl_setvalues,
t_setid.
We need to get the SET ID
CALL FUNCTION 'G_SET_ENCRYPT_SETID'
EXPORTING
setclass = c_setclass
shortname = p_aufgr
IMPORTING
setid = g_setid
EXCEPTIONS
no_co_area_specified = 1
illegal_setclass = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CHECK NOT g_setid IS INITIAL.
t_setid = g_setid.
*Get all objects and setid' s for the entire group
CALL FUNCTION 'G_SET_TREE_IMPORT'
EXPORTING
setid = t_setid
max_hier_level = 99
TABLES
set_hierarchy = tbl_setheir
set_values = tbl_setvalues
EXCEPTIONS
set_not_found = 1
illegal_field_replacement = 2
illegal_table_replacement = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Get the Group Set Data
CALL FUNCTION 'G_SET_GET_INFO'
EXPORTING
class = c_setclass
setname = p_aufgr
table = c_set_table
use_table_buffer = 'X'
client = sy-mandt
IMPORTING
info = tbl_setinfo
EXCEPTIONS
set_not_found = 1
illegal_field_replacement = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
tbl_hier[] = tbl_setheir[].
tbl_hier2[] = tbl_setheir[].
SORT tbl_hier BY level.
DESCRIBE TABLE tbl_hier LINES l_lynes.
READ TABLE tbl_hier INDEX l_lynes.
l_level = tbl_hier-level.
L_LEVEL now contains the highest level in the table
We need to find out if at which Hierarchy Level to display the report.
SHIFT l_level LEFT DELETING LEADING space.
SHIFT p_summ LEFT DELETING LEADING '0'.
IF p_summ LT l_level(2).
l_index = p_summ.
ELSE.
l_index = l_level(2).
ENDIF.
Loop through the relevant elements in the tbl_setheir and check for
its AUFNR_RANGE
MOVE l_index TO l_index2.
l_index2 = l_index2 - 1.
LOOP AT tbl_setheir WHERE level = l_index.
CLEAR: r_aufnr, g_setid.
g_setid = tbl_setheir-setid.
Get the previous level and it's description
IF l_index NE 0.
l_tabix = sy-tabix.
DO.
l_tabix = l_tabix - 1.
IF l_tabix EQ 0.
EXIT.
ELSE.
READ TABLE tbl_hier2 INDEX l_tabix.
IF tbl_hier2-level = l_index2.
l_hi_setid = tbl_hier2-setid.
l_hi_desc = tbl_hier2-descript.
EXIT.
ENDIF.
ENDIF.
ENDDO.
ENDIF.
Get the Order Number range defined for this Order Group
CALL FUNCTION 'K_ORDER_RANGE_FILL_FROM_SET'
EXPORTING
setid = g_setid
TABLES
aufnr_range = r_aufnr
EXCEPTIONS
aufgr_not_found = 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.
CHECK NOT r_aufnr IS INITIAL.
Check the heirarchy level and fill up data accordingly
Append data from tables into the internal table.
R3DK908718 Start
added the field kdauf-sales order ref for the display
R3DK908718 End
LOOP AT r_aufnr.
SELECT aufnr user7 user8 user6 kostv user2 user5
user3 user0 user1 abkrs user4 kokrs kstar
objnr ktext phas0 phas1 phas2 phas3 erdat
idat1 idat2 idat3 ernam user9 kdauf
FROM aufk
APPENDING CORRESPONDING FIELDS OF TABLE tbl_aufk
WHERE aufnr IN r_aufnr.
ENDLOOP.
Set the level and description of the hierarchy level and date
LOOP AT tbl_aufk WHERE level IS initial AND
descript IS initial.
tbl_aufk-level = tbl_setheir-level.
tbl_aufk-descript = tbl_setheir-descript.
tbl_aufk-hi_setid = l_hi_setid.
tbl_aufk-hi_desc = l_hi_desc.
tbl_aufk-setid = g_setid.
tbl_aufk-gjahr = p_gjahr.
MODIFY tbl_aufk TRANSPORTING gjahr level descript setid hi_setid
hi_desc.
ENDLOOP.
ENDLOOP.
SORT tbl_aufk BY aufnr DESCENDING.
DELETE ADJACENT DUPLICATES FROM tbl_aufk COMPARING aufnr.
PERFORM status_check.
ENDFORM. " get_orders_by_group
&----
*& Form get_orders_by_number
&----
Get Orders by Order Number
----
FORM get_orders_by_number.
SELECT aufnr user7 user8 user6 kostv user2 user5
user3 user0 user1 abkrs user4 kokrs kstar
objnr ktext phas0 phas1 phas2 phas3 erdat
idat1 idat2 idat3 ernam user9 kdauf
FROM aufk
INTO CORRESPONDING FIELDS OF TABLE tbl_aufk
WHERE aufnr IN s_aufnr.
PERFORM status_check.
LOOP AT tbl_aufk.
tbl_aufk-gjahr = p_gjahr.
MODIFY tbl_aufk TRANSPORTING gjahr.
ENDLOOP.
ENDFORM. " get_orders_by_number
&----
*& Form filter_data
&----
This subroutine will filter out the data in TBL_AUFK based on
the user defined selection criteria
----
FORM filter_data.
DELETE tbl_aufk WHERE kokrs NE p_kokrs. "CO Area
DELETE tbl_aufk WHERE NOT kstar IN s_kstar. "Cost Element
DELETE tbl_aufk WHERE NOT user5 IN s_user5. "Application Date
DELETE tbl_aufk WHERE NOT user7 IN s_user7. "Start of Work
DELETE tbl_aufk WHERE NOT user8 IN s_ends. "Date Work Ends
DELETE tbl_aufk WHERE NOT user2 IN s_user2. "Person Responsible
DELETE tbl_aufk WHERE NOT user6 IN s_user6. "Department
DELETE tbl_aufk WHERE NOT user0 IN s_user0. "Applicant
DELETE tbl_aufk WHERE NOT abkrs IN s_abkrs. "Processing Group
IF NOT p_odue IS INITIAL.
DELETE tbl_aufk WHERE user8 GE p_odue. "Date Overdue
ENDIF.
ENDFORM. " filter_data
&----
*& Form get_curr_period_budget
&----
This will find the value for the Current Period. AcctCurPr
----
FORM get_curr_period_budget.
REFRESH: tbl_coep.
CLEAR: tbl_coep.
DATA: l_gjahr TYPE gjahr.
l_gjahr = p_gjahr - 1.
Use Index Z1 for COEP
SELECT belnr buzei kstar gjahr perio kokrs belnr wogbtr wkgbtr objnr
beknz wrttp
FROM coep
INTO CORRESPONDING FIELDS OF TABLE tbl_coep
FOR ALL ENTRIES IN tbl_aufk
WHERE kokrs = tbl_aufk-kokrs AND
objnr = tbl_aufk-objnr AND
gjahr LE p_gjahr.
Delete Credit Postings from Order
DELETE tbl_coep WHERE beknz = 'A'.
Delete all Postings where the Value Type is not 04 (Actuals)
DELETE tbl_coep WHERE wrttp NE '04'.
DATA: l_perbtr TYPE wertv8.
SORT tbl_coep BY kokrs objnr gjahr perio .
LOOP AT tbl_aufk.
READ TABLE tbl_coep WITH KEY kokrs = tbl_aufk-kokrs
objnr = tbl_aufk-objnr
gjahr = p_gjahr
perio = p_perio
BINARY SEARCH.
CHECK sy-subrc = 0.
CLEAR: l_perbtr.
Total up all the entries for the current period
Check for whether to use Controlling object numbers (AUS) or Local
Objects Numbers (NZ or AUS)
LOOP AT tbl_coep FROM sy-tabix.
IF p_ob_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr AND
p_gjahr = tbl_coep-gjahr AND
p_perio = tbl_coep-perio.
l_perbtr = l_perbtr + tbl_coep-wogbtr.
ELSE.
EXIT.
ENDIF.
ELSE. "p_ca_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr AND
p_gjahr = tbl_coep-gjahr AND
p_perio = tbl_coep-perio.
l_perbtr = l_perbtr + tbl_coep-wkgbtr.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
tbl_aufk-perbtr = l_perbtr.
MODIFY tbl_aufk TRANSPORTING perbtr.
ENDLOOP.
ENDFORM. " get_curr_period_budget
&----
*& Form get_curr_year_budget
&----
This will find the value for the Current Year. AcctCurYr
----
FORM get_curr_year_budget.
DATA: l_perbtr TYPE wertv8.
SORT tbl_coep BY kokrs objnr gjahr perio.
LOOP AT tbl_aufk.
READ TABLE tbl_coep WITH KEY kokrs = tbl_aufk-kokrs
objnr = tbl_aufk-objnr
gjahr = p_gjahr
BINARY SEARCH.
CHECK sy-subrc = 0.
CLEAR: l_perbtr.
LOOP AT tbl_coep FROM sy-tabix.
IF p_ob_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr AND
p_gjahr = tbl_coep-gjahr AND
tbl_coep-perio LE p_perio.
l_perbtr = l_perbtr + tbl_coep-wogbtr.
ELSE.
EXIT.
ENDIF.
ELSE. "p_ca_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr AND
p_gjahr = tbl_coep-gjahr AND
tbl_coep-perio LE p_perio.
l_perbtr = l_perbtr + tbl_coep-wkgbtr.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
tbl_aufk-yerbtr = l_perbtr.
MODIFY tbl_aufk TRANSPORTING yerbtr.
ENDLOOP.
ENDFORM. " get_curr_year_budget
&----
*& Form get_previous_year_budget
&----
Get the Previous Years total. PrevYrBud
----
FORM get_previous_year_budget.
DATA: l_gjahr TYPE gjahr.
Get the Previous Year
l_gjahr = p_gjahr - 1.
DATA: l_perbtr TYPE wertv8.
Delete all entries in TBL_COEP that are not in the previous year
DELETE tbl_coep WHERE gjahr NE l_gjahr.
SORT tbl_coep BY kokrs objnr gjahr .
LOOP AT tbl_aufk.
READ TABLE tbl_coep WITH KEY kokrs = tbl_aufk-kokrs
objnr = tbl_aufk-objnr
gjahr = l_gjahr
BINARY SEARCH.
CHECK sy-subrc = 0.
CLEAR: l_perbtr.
LOOP AT tbl_coep FROM sy-tabix.
IF p_ob_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr AND
l_gjahr = tbl_coep-gjahr.
l_perbtr = l_perbtr + tbl_coep-wogbtr.
ELSE.
EXIT.
ENDIF.
ELSE. "p_ca_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr AND
l_gjahr = tbl_coep-gjahr.
l_perbtr = l_perbtr + tbl_coep-wkgbtr.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
tbl_aufk-prybtr = l_perbtr.
MODIFY tbl_aufk TRANSPORTING prybtr.
ENDLOOP.
ENDFORM. " get_previous_year_budget
**&----
*
**& Form get_pre_yer_coep
**&----
*
THIS IS AN OLD VERSION TO GET THE PREVIOUS YEARS BUDGET DATA.
SHOULD NOT NEED TO USE THIS ONE. HOWEVER LEFT IT IN FOR **
TROUBLESHOOTING PURPOSES.
**----
*
--> p1 text
<-- p2 text
**----
*
*FORM get_previous_year_budget.
REFRESH: tbl_coep.
CLEAR: tbl_coep.
*
DATA: j_gjahr TYPE gjahr.
j_gjahr = p_gjahr - 1.
*
SELECT kstar gjahr kokrs belnr wogbtr wkgbtr objnr
FROM coep
APPENDING CORRESPONDING FIELDS OF TABLE tbl_coep
FOR ALL ENTRIES IN tbl_aufk
WHERE kokrs = tbl_aufk-kokrs AND
objnr = tbl_aufk-objnr AND
gjahr = j_gjahr AND
wrttp = '04'.
DATA: l_perbtr TYPE wertv8.
*
SORT tbl_coep BY kokrs objnr.
*
LOOP AT tbl_aufk.
READ TABLE tbl_coep WITH KEY kokrs = tbl_aufk-kokrs
objnr = tbl_aufk-objnr
BINARY SEARCH.
CHECK sy-subrc = 0.
CLEAR: l_perbtr.
LOOP AT tbl_coep FROM sy-tabix.
IF p_ob_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr.
l_perbtr = l_perbtr + tbl_coep-wogbtr.
ELSE.
EXIT.
ENDIF.
ELSE. "p_ca_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr.
l_perbtr = l_perbtr + tbl_coep-wkgbtr.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
tbl_aufk-prybtr = l_perbtr.
MODIFY tbl_aufk TRANSPORTING prybtr.
ENDLOOP.
*ENDFORM. " get_pre_yer_coep
&----
*& Form get_total_actuals
&----
Find the Total Accruals Value. totbtr.
----
FORM get_total_actuals.
DATA: l_perbtr TYPE wertv8,
l_wertv8 TYPE wertv8. "R3DK913495
SORT tbl_coep BY kokrs objnr gjahr .
LOOP AT tbl_aufk.
READ TABLE tbl_coep WITH KEY kokrs = tbl_aufk-kokrs
objnr = tbl_aufk-objnr
BINARY SEARCH.
CHECK sy-subrc = 0.
CLEAR: l_perbtr.
LOOP AT tbl_coep FROM sy-tabix.
IF p_ob_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr.
l_perbtr = l_perbtr + tbl_coep-wogbtr.
Prev Yr Act(full)
IF tbl_coep-gjahr < p_gjahr. "R3DK913495
l_wertv8 = l_wertv8 + tbl_coep-wogbtr. "R3DK913495
ENDIF. "R3DK913495
ELSE.
EXIT.
ENDIF.
ELSE. "p_ca_cur = 'X'.
IF tbl_aufk-kokrs = tbl_coep-kokrs AND
tbl_aufk-objnr = tbl_coep-objnr.
l_perbtr = l_perbtr + tbl_coep-wkgbtr.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
tbl_aufk-totbtr = l_perbtr.
tbl_aufk-totpvyract = l_wertv8. "R3DK913495
MODIFY tbl_aufk TRANSPORTING totbtr totpvyract. "R3DK913495
ENDLOOP.
ENDFORM. " get_total_actuals
&----
*& Form get_total_budget
&----
Get the total budget for the project
----
FORM get_total_budget.
DATA: l_perbtr TYPE bp_wgl.
DATA: l_sup TYPE bpeg-wlges. " R3DK913369
REFRESH: tbl_bpeg.
CLEAR: tbl_bpeg.
SELECT belnr buzei lednr objnr versn wtges wlges
vorga " R3DK913369
FROM bpeg
INTO CORRESPONDING FIELDS OF TABLE tbl_bpeg
FOR ALL ENTRIES IN tbl_aufk
WHERE objnr = tbl_aufk-objnr AND
lednr = '0001' AND
" vorga = 'KBUD' AND "R3DK912712 R3DK913369
( vorga = 'KBUD' OR vorga = 'KBN0' ) AND " R3DK913369
versn = '000'.
SORT tbl_bpeg BY objnr.
LOOP AT tbl_aufk.
CLEAR: l_perbtr.
CLEAR: l_sup. " R3DK913369
READ TABLE tbl_bpeg WITH KEY objnr = tbl_aufk-objnr
BINARY SEARCH.
CHECK sy-subrc = 0.
LOOP AT tbl_bpeg FROM sy-tabix.
IF tbl_aufk-objnr = tbl_bpeg-objnr.
IF p_ob_cur = 'X'. "Get in Object Currency
l_perbtr = l_perbtr + tbl_bpeg-wtges.
ELSE. "Get in Ledger Currency
l_perbtr = l_perbtr + tbl_bpeg-wlges.
ENDIF.
R3DK913369 starts
IF tbl_bpeg-vorga = 'KBN0'.
IF p_ob_cur = 'X'. "Get in Object Currency
l_sup = l_sup + tbl_bpeg-wtges.
ELSE. "Get in Ledger Currency
l_sup = l_sup + tbl_bpeg-wlges.
ENDIF.
ENDIF.
R3DK913369 ends
ELSE.
EXIT.
ENDIF.
ENDLOOP.
tbl_aufk-totbud = l_perbtr.
tbl_aufk-wtjhr = l_sup. " R3DK913369
MODIFY tbl_aufk TRANSPORTING totbud.
MODIFY tbl_aufk TRANSPORTING wtjhr. " R3DK913369
ENDLOOP.
ENDFORM. " get_total_budget
&----
*& Form get_commitment
&----
Get the total commitment value for the project
----
FORM get_commitment.
DATA: l_perbtr TYPE wertv8.
REFRESH: tbl_cooi.
CLEAR: tbl_cooi,
l_perbtr.
SELECT refbn rfpos lednr objnr gjahr wrttp versn perio kokrs whgbtr
wkgbtr
FROM cooi
INTO CORRESPONDING FIELDS OF TABLE tbl_cooi
FOR ALL ENTRIES IN tbl_aufk
WHERE kokrs = tbl_aufk-kokrs AND
objnr = tbl_aufk-objnr.
SORT tbl_cooi BY kokrs objnr.
LOOP AT tbl_aufk.
CLEAR l_perbtr.
READ TABLE tbl_cooi WITH KEY kokrs = tbl_aufk-kokrs
objnr = tbl_aufk-objnr
BINARY SEARCH.
CHECK sy-subrc = 0.
LOOP AT tbl_cooi FROM sy-tabix.
IF p_ob_cur = 'X'.
IF tbl_aufk-kokrs NE tbl_cooi-kokrs OR
tbl_aufk-objnr NE tbl_cooi-objnr.
EXIT.
ENDIF.
l_perbtr = l_perbtr + tbl_cooi-whgbtr.
ELSE. "p_ca_cur = 'X'.
IF tbl_aufk-kokrs NE tbl_cooi-kokrs OR
tbl_aufk-objnr NE tbl_cooi-objnr.
EXIT.
ENDIF.
l_perbtr = l_perbtr + tbl_cooi-wkgbtr.
ENDIF.
ENDLOOP.
tbl_aufk-commit = l_perbtr.
MODIFY tbl_aufk TRANSPORTING commit.
ENDLOOP.
ENDFORM. " get_commitment
&----
*& Form get_fieldcat
&----
Fill in the ALV table
----
FORM get_fieldcat.
PERFORM wrt_fieldcat
USING 'HI_SETID' "field name
'TBL_OUTPUT' "table where data is stored
' ' "Datatype
'Group Header' "Column label
' ' "Key
1 "Position
' ' "Hide
' ' "Sum
'12'. "Width
PERFORM wrt_fieldcat
USING 'HI_DESC'"field name
'TBL_OUTPUT' "table where data is stored
' ' "Datatype
'Header Desc' "Column label
' ' "Key
2 "Position
' ' "Hide
' ' "Sum
'15'. "Width
PERFORM wrt_fieldcat
USING 'SETID' "field name
'TBL_OUTPUT' "table where data is stored
' ' "Datatype
'Group' "Column label
' ' "Key
3 "Position
' ' "Hide
' ' "Sum
' '. "Width
IF NOT p_aufgr IS INITIAL.
PERFORM wrt_fieldcat
USING 'DESCRIPT'
'TBL_OUTPUT'
' '
'Description'
'X'
4
' '
' '
'30'.
ELSE.
PERFORM wrt_fieldcat
USING 'DESCRIPT'
'TBL_OUTPUT'
'SETHIER'
' '
' '
4
'X'
' '
'30'.
ENDIF.
perform wrt_fieldcat using 'OBJNR' 'TBL_OUTPUT' 'COEP' '/' 'X' 1.
PERFORM wrt_fieldcat
USING 'AUFNR'
'TBL_OUTPUT'
'AUFK'
' '
' '
5
' '
' '
'10'.
PERFORM wrt_fieldcat USING 'KTEXT'
'TBL_OUTPUT'
' '
'Order Name'
'X'
6
' '
' '
'15'.
IF p_start = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER7'
'TBL_OUTPUT'
'AUFK'
' '
' '
6
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER7'
'TBL_OUTPUT'
'AUFK'
' '
' '
7
' '
' '
' '.
ENDIF.
IF p_end = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER8'
'TBL_OUTPUT'
'AUFK'
' '
' '
8
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER8'
'TBL_OUTPUT'
'AUFK'
' '
' '
8
' '
' '
' '.
ENDIF.
IF p_dept = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER6'
'TBL_OUTPUT'
'AUFK'
' '
' '
9
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER6'
'TBL_OUTPUT'
'AUFK'
' '
' '
9
'X'
' '
' '.
ENDIF.
IF p_cost = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'KOSTV'
'TBL_OUTPUT'
'AUFK'
' '
' '
10
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'KOSTV'
'TBL_OUTPUT'
'AUFK'
' '
' '
10
'X'
' '
' '.
ENDIF.
IF p_resnam = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER2'
'TBL_OUTPUT'
'AUFK'
' '
' '
11
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER2'
'TBL_OUTPUT'
'AUFK'
' '
' '
11
'X'
' '
' '.
ENDIF.
IF p_restel = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER3'
'TBL_OUTPUT'
'AUFK'
' '
' '
12
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER3'
'TBL_OUTPUT'
'AUFK'
' '
' '
12
'X'
' '
' '.
ENDIF.
IF p_appl = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER0'
'TBL_OUTPUT'
'AUFK'
' '
' '
13
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER0'
'TBL_OUTPUT'
'AUFK'
' '
' '
13
'X'
' '
' '.
ENDIF.
IF p_apptel = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER1'
'TBL_OUTPUT'
'AUFK'
' '
' '
14
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER1'
'TBL_OUTPUT'
'AUFK'
' '
' '
14
'X'
' '
' '.
ENDIF.
IF p_procgp = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'ABKRS'
'TBL_OUTPUT'
'AUFK'
'Proc. Group'
' '
15
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'ABKRS'
'TBL_OUTPUT'
'AUFK'
'Proc. Group'
' '
15
'X'
' '
' '.
*ENDIF.
IF p_proTxt = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'AKTXT'
'TBL_OUTPUT'
'AUFK'
'Proc. Desc. '
' '
20
' '
' '
' '.
ELSE.
PERFORM wrt_fieldcat USING 'AKTXT'
'TBL_OUTPUT'
'AUFK'
'Proc. Desc.'
' '
20
'X'
' '
' '.
ENDIF.
IF p_est = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER4' 'TBL_OUTPUT'
'AUFK' ' ' ' ' 16 ' ' 'X' ' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER4' 'TBL_OUTPUT'
'AUFK' ' ' ' ' 16 'X' 'X' ' '.
ENDIF.
IF p_appdat = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'USER5' 'TBL_OUTPUT'
'AUFK' ' ' ' ' 16 ' ' ' ' ' '.
ELSE.
PERFORM wrt_fieldcat USING 'USER5' 'TBL_OUTPUT'
'AUFK' ' ' ' ' 16 'X' ' ' ' '.
ENDIF.
PERFORM wrt_fieldcat USING 'TOTBUD' 'TBL_OUTPUT' ' '
'Ttl Bud' ' ' 17 ' ' 'X' ' '.
Begin of R3DK913369
PERFORM wrt_fieldcat USING 'WTJHR' 'TBL_OUTPUT' ' '
'Ttl Bud Supp' ' ' 18 ' ' 'X' ' '.
End of R3DK913369
PERFORM wrt_fieldcat USING 'TOTBTR' 'TBL_OUTPUT' ' '
'Ttl Act' ' ' 19 ' ' 'X' ' '.
PERFORM wrt_fieldcat USING 'COMMIT' 'TBL_OUTPUT' ' '
'Commitment' ' ' 20 ' ' 'X' ' '.
PERFORM wrt_fieldcat USING 'ASSGND' 'TBL_OUTPUT' ' '
'Assigned' ' ' 21 ' ' 'X' ' '.
PERFORM wrt_fieldcat USING 'AVALBL' 'TBL_OUTPUT' ' '
'Ttl Left' ' ' 22 ' ' 'X' ' '.
PERFORM wrt_fieldcat USING 'PERBTR' 'TBL_OUTPUT' ' '
'AcctCurrPer' ' ' 23 ' ' 'X' ' '.
PERFORM wrt_fieldcat USING 'YERBTR' 'TBL_OUTPUT' ' '
'AcctCurrYr' ' ' 24 ' ' 'X' ' '.
PERFORM wrt_fieldcat USING 'PRYBTR' 'TBL_OUTPUT' ' '
'Prev Yr Act' ' ' 25 ' ' 'X' ' '.
*Begin of R3DK911017
PERFORM wrt_fieldcat USING 'WLJHR' 'TBL_OUTPUT' ' '
'Curr Year Budget' ' ' 26 ' ' 'X' ' '.
*End of R3DK911017
IF p_status = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'STATUS' 'TBL_OUTPUT' ' '
*Begin of R3DK911017
'Status' ' ' 25 ' ' 'X' ' '.
'Status' ' ' 27 ' ' 'X' ' '.
ELSE.
PERFORM wrt_fieldcat USING 'STATUS' 'TBL_OUTPUT' ' '
'Status' ' ' 25 'X' 'X' ' '.
'Status' ' ' 27 ' ' 'X' ' '.
*End of R3DK911017
ENDIF.
IF p_date = 'X' OR p_show = 'X'.
PERFORM wrt_fieldcat USING 'ST_DAT' 'TBL_OUTPUT' ' '
*Begin of R3DK911017
'Status Date' ' ' 26 ' ' 'X' ' '.
'Status Date' ' ' 28 ' ' 'X' ' '.
ELSE.
PERFORM wrt_fieldcat USING 'ST_DAT' 'TBL_OUTPUT' ' '
'Status Date' ' ' 26 'X' 'X' ' '.
'Status Date' ' ' 28 ' ' 'X' ' '.
*End of R3DK911017
ENDIF.
R3DK906478 start
PERFORM wrt_fieldcat USING 'ERDAT' 'TBL_OUTPUT'
*Begin of R3DK911017
'AUFK' ' ' ' ' 27 ' ' ' ' ' '.
'AUFK' ' ' ' ' 29 ' ' ' ' ' '.
PERFORM wrt_fieldcat USING 'ERNAM' 'TBL_OUTPUT'
'AUFK' ' ' ' ' 28 ' ' ' ' ' '.
'AUFK' ' ' ' ' 30 ' ' ' ' ' '.
End of R3DK911017
R3DK906478 end
R3DK908338 start
PERFORM wrt_fieldcat USING 'USER9' 'TBL_OUTPUT'
*Begin of R3DK911017
'AUFK' ' ' ' ' 29 ' ' ' ' ' '.
'AUFK' ' ' ' ' 31 ' ' ' ' ' '.
*End of R3DK911017
R3DK908338 end
R3DK908718 Start
PERFORM wrt_fieldcat USING 'KDAUF' 'TBL_OUTPUT'
*Begin of R3DK911017
'AUFK' ' ' ' ' 30 ' ' ' ' ' '.
'AUFK' ' ' ' ' 32 ' ' ' ' ' '.
*End of R3DK911017
R3DK908718 End
Begin of R3DK912712
PERFORM wrt_fieldcat USING 'PLAN' 'TBL_OUTPUT' ' '
'Curr Yr Plan' ' ' 33 ' ' 'X' ' '.
PERFORM wrt_fieldcat USING 'TOTPLAN' 'TBL_OUTPUT' ' '
'Tot Yr Plan' ' ' 34 ' ' 'X' ' '.
End of R3DK912712
Begin of R3DK913495
PERFORM wrt_fieldcat USING 'TOTPVYRACT' 'TBL_OUTPUT' ' '
'Prv Yr Act(full)' ' ' 35 ' ' 'X' ' '.
End of R3DK913495
ENDFORM. " get_fieldcat
&----
*& Form fill_output_table
&----
Get all data to fill in the Output table
----
FORM fill_output_table.
DATA: j_setid(30) TYPE c,
loc_count TYPE i.
SORT tbl_aufk BY aufnr objnr.
LOOP AT tbl_aufk.
Begin of R3DK911017
CLEAR:tbl_output-wljhr,
tbl_output-plan. "R3DK912712
End of R3DK911017
tbl_output-aufgr = p_aufgr.
tbl_output-aufnr = tbl_aufk-aufnr.
tbl_output-level = tbl_aufk-level.
tbl_output-descript = tbl_aufk-descript.
tbl_output-hi_setid = tbl_aufk-hi_setid+4.
tbl_output-hi_desc = tbl_aufk-hi_desc.
tbl_output-ktext = tbl_aufk-ktext.
tbl_output-perio = p_perio. "Period
tbl_output-gjahr = tbl_aufk-gjahr. "Year
tbl_output-kokrs = tbl_aufk-kokrs. "Controlling Area
aufgr type aufgr, "Summary Group
tbl_output-objnr = tbl_aufk-objnr. "Object Number
tbl_output-user7 = tbl_aufk-user7. "Start of Work
tbl_output-user8 = tbl_aufk-user8. "Date Work Ends
tbl_output-user6 = tbl_aufk-user6. "Department
tbl_output-kostv = tbl_aufk-kostv. "Cost Centre
tbl_output-user2 = tbl_aufk-user2. "Person Resp.
tbl_output-user3 = tbl_aufk-user3. "Person Resp. Tel.
R3DK908718 Start
tbl_output-kdauf = tbl_aufk-kdauf. " Sales Order Reference
R3DK908718 end
*GET STATUS
IF tbl_aufk-phas0 = 'X'.
tbl_aufk-status = 'CRTD'.
tbl_aufk-st_dat = tbl_aufk-erdat.
ELSE.
IF tbl_aufk-phas1 = 'X'.
tbl_aufk-status = 'REL'.
tbl_aufk-st_dat = tbl_aufk-idat1.
ELSE.
IF tbl_aufk-phas2 = 'X'.
tbl_aufk-status = 'TECO'.
tbl_aufk-st_dat = tbl_aufk-idat2.
ELSE.
IF tbl_aufk-phas3 = 'X'.
tbl_aufk-status = 'CLSD'.
tbl_aufk-st_dat = tbl_aufk-idat3.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
tbl_output-status = tbl_aufk-status. "Status of Order
tbl_output-st_dat = tbl_aufk-st_dat. "Status Date
tbl_output-user0 = tbl_aufk-user0. "Applicant
tbl_output-user1 = tbl_aufk-user1. "Applicant Tel.
tbl_output-abkrs = tbl_aufk-abkrs. "Processing Group
tbl_output-aktxt = tbl_aufk-aktxt. "Process Description
tbl_output-user4 = tbl_aufk-user4. "Estimated Costs
tbl_output-user5 = tbl_aufk-user5. "Application Date
tbl_output-totbud = tbl_aufk-totbud. "Total Budget
tbl_output-wtjhr = tbl_aufk-wtjhr. " Total supplement R3DK913369
tbl_output-totplan = tbl_aufk-totplan. "Total Plan "R3DK912712
tbl_output-totbtr = tbl_aufk-totbtr. "Total Actuals
tbl_output-commit = tbl_aufk-commit. "Total Commitment
Total Asigned to the project
Total Actual + Commitment
tbl_output-assgnd = tbl_aufk-totbtr + tbl_aufk-commit.
*Total Available for the project
Total Budget - Total Assigned
tbl_output-avalbl = tbl_aufk-totbud -
( tbl_aufk-totbtr + tbl_aufk-commit ) .
tbl_output-perbtr = tbl_aufk-perbtr. "Actual Current Period
tbl_output-yerbtr = tbl_aufk-yerbtr. "Actual Current Year
tbl_output-prybtr = tbl_aufk-prybtr. "Actual Previous Year
Concatenate the setid so that it fits in with f50
j_setid = tbl_aufk-setid+4(30).
tbl_output-setid = j_setid. "the sets id
R3DK906478 start Add created on and entered by fields
tbl_output-erdat = tbl_aufk-erdat. "Created On
tbl_output-ernam = tbl_aufk-ernam. "Entered By
R3DK906478 end
R3DK908338 start
tbl_output-user9 = tbl_aufk-user9. " Work Approval Flag
R3DK908338 end
*Begin of changes R3DK909162
SELECT single aktxt from tko09
INTO TBL_output-AKTXT
WHERE ABKRS EQ TBL_AUFK-ABKRS
AND SPRAS EQ 'EN'.
End of Changes R3DK909162
Begin of R3DK911017
READ TABLE tbl_budget with key objnr = tbl_aufk-objnr.
if sy-subrc eq 0.
tbl_output-wljhr = tbl_budget-wljhr.
endif.
End of R3DK911017
Begin of R3DK912712
READ TABLE tbl_plan with key objnr = tbl_aufk-objnr.
if sy-subrc eq 0.
tbl_output-plan = tbl_plan-wljhr.
endif.
End of R3DK912712
tbl_output-totpvyract = tbl_aufk-totpvyract. "R3DK913495
APPEND tbl_output.
ENDLOOP.
IF p_life = 'X'.
Delete if Total Available (tbl_output-avalbl) is less than zero
DELETE tbl_output WHERE avalbl GE '0'.
ENDIF.
ENDFORM. " fill_output_table
&----
*& Form write_fieldcat
&----
Fill in the table.
----
-->fieldname
-->tabname
-->ref_tabname
-->seltext_m
-->key
-->col_pos
-->no_out (hide)
-->do_sum
-->Width
----
FORM wrt_fieldcat USING name tab st w_label key
pos w_hide w_sum w_width.
st_fieldcat-fieldname = name.
st_fieldcat-tabname = tab.
st_fieldcat-ref_tabname = st.
st_fieldcat-seltext_m = w_label.
st_fieldcat-key = key.
st_fieldcat-col_pos = pos.
st_fieldcat-no_out = w_hide.
st_fieldcat-do_sum = w_sum.
st_fieldcat-outputlen = w_width.
APPEND st_fieldcat TO tbl_fieldcat.
CLEAR st_fieldcat.
ENDFORM. " write_fieldcat
&----
*& Form create_report
&----
Pass the values to the ALV function module and run it.
----
FORM create_report.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
it_events = tbl_events
i_interface_check = ' '
i_callback_program = 'ZKR_PROJECT_REPORT'
i_callback_user_command = 'PROCESS_USER_COMMANDS'
is_layout = st_layout
it_fieldcat = tbl_fieldcat
i_default = 'X'
i_save = 'X'
it_sort = tbl_sorts
TABLES
t_outtab = tbl_output
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID S-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " create_report
&----
*& Form get_layout
&----
Set the zebra pattern for the ALV table
----
FORM get_layout.
CLEAR st_layout.
st_layout-zebra = 'X'.
ENDFORM. " get_layout
&----
*& Form get_events
&----
Set the header for the ALV table screen.
----
FORM get_events.
CLEAR st_event.
st_event-name = 'TOP_OF_PAGE'.
st_event-form = 'PROCESS_TOP_OF_PAGE'.
APPEND st_event TO tbl_events.
ENDFORM. " get_events
&----
*& Form get_sort_criteria
&----
Set the Sort options on. Sort by SETID
----
FORM get_sort_criteria.
CLEAR st_sort.
st_sort-fieldname = 'SETID'.
st_sort-down = 'X'.
st_sort-subtot = 'X'.
APPEND st_sort TO tbl_sorts.
ENDFORM. "get_sort_criteria
*&----
*& Form top of page
*&----
Header section
*----
FORM process_top_of_page.
Skip.
Uline.
FORMAT COLOR COL_HEADING. INTENSIFIED ON.
WRITE:/ 'Report Name: ZKR_PROJECT_REPORT',
/ 'Order Group:',p_aufgr,
/ 'Description of Order Group:', tbl_setinfo-title,
/ 'Run Date:', sy-datum,
/ 'Run Time:', sy-uzeit,
/ 'Controlling Area:', p_kokrs,
/ 'Fiscal Year:', p_gjahr,
/ 'Period:', p_perio.
ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
ENDFORM. " process_top_of_page
&----
*& Form get_fiscal_year
&----
Populate R_DATES with the Current Fiscal Year
----
FORM get_fiscal_year.
REFRESH r_dates.
CLEAR r_dates.
r_dates-sign = 'I'.
r_dates-option = 'BT'.
r_dates-low(4) = p_gjahr - 1.
r_dates-low+4(4) = '0401'.
r_dates-high(4) = p_gjahr.
r_dates-high+4(4) = '0331'.
APPEND r_dates.
ENDFORM. " get_fiscal_year
&----
*& Form status_check
&----
Check Status
----
FORM status_check.
Delete orders that are not Open/Complete
IF p_open = 'X'.
Delete any orders that are not open or closed.
DELETE tbl_aufk WHERE phas2 EQ 'X' OR
phas3 EQ 'X'.
ELSEIF p_comp = 'X'.
Delete all projects that were closed prior to this
fiscal year. Projects that are open or created are also deleted.
DELETE tbl_aufk WHERE phas0 EQ 'X' OR
phas1 EQ 'X'.
DELETE tbl_aufk WHERE NOT idat3 IN r_dates AND
NOT idat3 IS initial.
ELSEIF p_all = 'X'.
Delete all projects that were closed prior to the fiscal year
DELETE tbl_aufk WHERE NOT idat3 IN r_dates AND
NOT idat3 IS initial.
ENDIF.
ENDFORM. " status_check
&----
*& Form get_budget_curr_year
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_budget_curr_year.
REFRESH: tbl_bpej.
CLEAR: tbl_bpej.
SELECT wljhr objnr
FROM bpej
INTO CORRESPONDING FIELDS OF TABLE tbl_bpej
FOR ALL ENTRIES IN tbl_aufk
WHERE objnr = tbl_aufk-objnr AND
gjahr = p_gjahr AND
" vorga = 'KBUD' AND "R3DK912712 R3DK913369
( vorga = 'KBUD' OR vorga = 'KBN0' ) AND " R3DK913369
lednr = '0001'.
LOOP AT tbl_bpej.
COLLECT tbl_bpej INTO tbl_budget.
ENDLOOP.
ENDFORM. " get_budget_curr_year
&----
*& Form get_plan_curr_year
&----
text
----
--> p1 text
<-- p2 text
----
form get_plan_curr_year.
REFRESH: tbl_bpja, tbl_plan.
CLEAR: tbl_bpja, tbl_plan.
SELECT wljhr objnr
FROM bpja
INTO CORRESPONDING FIELDS OF TABLE tbl_bpja
FOR ALL ENTRIES IN tbl_aufk
WHERE objnr = tbl_aufk-objnr AND
gjahr = p_gjahr AND
wrttp = '01' AND
vorga = 'KSTP' AND
lednr = '0001'.
LOOP AT tbl_bpja.
COLLECT tbl_bpja INTO tbl_plan.
ENDLOOP.
endform. " get_plan_curr_year
&----
*& Form get_total_plan
&----
text
----
--> p1 text
<-- p2 text
----
form get_total_plan.
DATA: l_perbtr TYPE bp_wgl.
REFRESH: tbl_bpge.
CLEAR: tbl_bpge.
SELECT * FROM bpge
INTO CORRESPONDING FIELDS OF TABLE tbl_bpge
FOR ALL ENTRIES IN tbl_aufk
WHERE objnr = tbl_aufk-objnr AND
vorga = 'KSTP' AND
wrttp = '01'.
LOOP AT tbl_aufk.
READ table tbl_bpge WITH KEY objnr = tbl_aufk-objnr
vorga = 'KSTP'
wrttp = '01'.
IF SY-SUBRC EQ 0.
l_perbtr = tbl_bpge-wlges.
tbl_aufk-totplan = l_perbtr. "R3DK912718
ENDIF.
tbl_aufk-totplan = l_perbtr. "R3DK912718
MODIFY tbl_aufk TRANSPORTING totplan.
ENDLOOP.
endform. " get_total_plan
‎2009 Jan 06 2:11 AM
Hi,
I don't think you need to use a form to process the top of page event.
ABAP has the event 'TOP-OF-PAGE'. You can use it only and put the code following by the statement.
Just like INITIALIZATION, START-OF-SELECTION etc.
Hope it helps.
Regards,
Chris Gu
‎2009 Jan 06 3:56 AM
Hi Revanth Kandula,
Use this this way, its working:-
use demo code for top_of_page event.
*FOR TOP OF THE PAGE
DATA : it_top TYPE slis_t_listheader,
wa_top TYPE slis_listheader.
*&---------------------------------------------------------------------*
* DISPLAY RECORDS IN ALV GRID
*&---------------------------------------------------------------------*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid "report id
i_callback_top_of_page = 'TOP' "to print in top of page
it_fieldcat = it_field "for field catalog (headings for columns)
TABLES
t_outtab = it_ekpo "internal table comprising of the data
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc 0.
ENDIF.
*&---------------------------------------------------------------------*
*& Form top
*&---------------------------------------------------------------------*
* TO WRITE THE HEADER
*----------------------------------------------------------------------*
FORM top.
REFRESH it_top.
wa_top-typ = 'S'.
wa_top-key = 'Date :'.
wa_top-info = sy-datum.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-key = 'Time :'.
wa_top-info = sy-uzeit.
APPEND wa_top TO it_top.
CLEAR wa_top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_top "pass the data to be printed
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM. "top
Hope this solves your problem.
Thanks & Regards,
Tarun Gambhir
‎2009 Jan 06 4:15 AM
Hi,
You can not use write statements in grid display for top of page instead you will have to use the function module 'REUSE_ALV_COMMENTARY_WRITE'. You will have to create an internal table of type slis_t_listheader with workarea of type slis_listheader.The structure contains three fields typ,info and key. Set value of typ as 'H' if the requested text to be displayed via info as bold and if you need the ouput as subtitles use type as 'S' and append to the internal table. So assume that it_list is the internal table and wa_list is the workarea, then
wa_list-typ = 'H'.
wa_list-info = 'Project System Report'.
append wa_list to it_list.
wa_list-typ = 'S'.
concatenate 'Date' sy-datum to wa_list-info.
append wa_list to it_list.
Call the function module Reuse_ALV_Commentary_write and pass this internal table it_list to the parameter it_list_commentary.
This would create the heading in top of page on every page.
This will solve your problem as write statements do not work in top of page with grid display.
Thanks and Regards,
Sachin
‎2009 Jan 06 5:40 AM
hi,
check the below link
and try this:
First add a handler method in your handler class definition as:
e.g. METHOD handle_print_top_of_list FOR EVENT print_top_of_list OF cl_gui_alv_grid .
Then implement the method in the implementation part of your local class.
e.g. METHOD handle_print_top_of_list .
WRITE:/ 'Flights Made on ', sy-datum .
ENDMETHOD .
And register this method as the handler.
e.g. SET HANDLER gr_event_handler->handle_print_top_of_list FOR gr_alvgrid .
‎2009 Jan 06 5:44 AM
Have U called the FM
'REUSE_ALV_COMMENTARY_WRITE',,
Only with this FM , Top of page /Header can be called..