Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Regarding grid display

Former Member
0 Likes
1,617

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

1 ACCEPTED SOLUTION
Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
1,452

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

8 REPLIES 8
Read only

amit_khare
Active Contributor
0 Likes
1,452

Debug and chek the code how the header is building for grid display.

Read only

Former Member
0 Likes
1,452

Hi,

Can you put your code here so as to make it more clear?

Thanks and regards,

Chris Gu

Read only

0 Likes
1,452

*

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

Read only

Former Member
0 Likes
1,452

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

Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
1,453

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

Read only

Former Member
0 Likes
1,452

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

Read only

Former Member
0 Likes
1,452

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 .

Read only

Former Member
0 Likes
1,452

Have U called the FM

'REUSE_ALV_COMMENTARY_WRITE',,

Only with this FM , Top of page /Header can be called..