Dear Experts,
Please find herewith below my code. In this the column MONAT displays Month. Now scenario is as follows:
1. In the selection screen user inputs the YEAR & MONTH for which the report is to be displayed.
2. With reference to that the system should display VALUES in the MONTH column DYNAMICALLY.
For Ex: Currently my data is coming as follows:
CompanyCode Year Month GLCode CostCenter Amt 1000 2008 MAR aaaa xxxx 1000 1000 2008 MAR aaaa xxxx 2000 1000 2008 MAR aaaa xxxx 3000 1000 2008 MAR aaaa xxxx 4000 1000 2008 MAR bbbb yyyy 1000 1000 2008 MAR bbbb yyyy 1000 1000 2008 MAR cccc yyyy 1000 1000 2008 APR aaaa xxxx 2000 1000 2008 APR aaaa xxxx 3000 1000 2008 APR bbbb xxxx 4000
I want the data as follows:
CompanyCode Year MAR APR GLCode CostCenter 1000 2008 10000 5000 aaaa xxxx 1000 2008 2000 0.00 bbbb yyyy 1000 2008 1000 0.00 cccc yyyy 1000 2008 0.00 4000 bbbb xxxx
The month should get generated dynamically.
My Code:
REPORT z_co_expenses.
TYPE-POOLS: slis.
TABLES: bsis, "GL Table
csks, "Cost Center Master Data
cska. "Cost Elements(Dependent on Chart of Accounts).
DATA: BEGIN OF it_bsis OCCURS 0,
bukrs TYPE bsis-bukrs , "Company Code
hkont TYPE bsis-hkont , "General Ledger Account
gjahr TYPE bsis-gjahr , "Fiscal Year
monat TYPE bsis-monat , "Fiscal Period
shkzg TYPE bsis-shkzg , "Debit/Credit Indicator
dmbtr TYPE bsis-dmbtr , "Amount in Local Currency
wrbtr TYPE bsis-wrbtr, "Amount in document currency
kostl TYPE bsis-kostl , "Cost Center
END OF it_bsis.
DATA: BEGIN OF it_data OCCURS 0,
bukrs TYPE bsis-bukrs , "Company Code
hkont TYPE bsis-hkont , "General Ledger Account
gjahr TYPE bsis-gjahr , "Fiscal Year
monat TYPE bsis-monat , "Fiscal Period
shkzg TYPE bsis-shkzg , "Debit/Credit Indicator
dmbtr TYPE bsis-dmbtr , "Amount in Local Currency
wrbtr TYPE bsis-wrbtr, "Amount in document currency
kostl TYPE bsis-kostl , "Cost Center
dr_val TYPE bsis-dmbtr,
cr_val TYPE bsis-dmbtr,
END OF it_data.
DATA: BEGIN OF it_final OCCURS 0,
bukrs TYPE bsis-bukrs , "Company Code
hkont TYPE bsis-hkont , "General Ledger Account
gjahr TYPE bsis-gjahr , "Fiscal Year
monat TYPE bsis-monat , "Fiscal Period
dmbtr TYPE bsis-dmbtr , "Amount in Local Currency
wrbtr TYPE bsis-wrbtr, "Amount in document currency
kostl TYPE bsis-kostl , "Cost Center
dr_val TYPE bsis-dmbtr,
cr_val TYPE bsis-dmbtr,
count(30) TYPE c,
END OF it_final.
DATA: BEGIN OF it_cost OCCURS 0,
bukrs TYPE bsis-bukrs , "Company Code
hkont TYPE bsis-hkont , "General Ledger Account
gjahr TYPE bsis-gjahr , "Fiscal Year
monat TYPE bsis-monat , "Fiscal Period
dmbtr TYPE bsis-dmbtr , "Amount in Local Currency
wrbtr TYPE bsis-wrbtr, "Amount in document currency
kostl TYPE bsis-kostl , "Cost Center
final_val TYPE bsis-dmbtr,
count(30) TYPE c,
END OF it_cost.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
it_header TYPE slis_t_listheader,
wa_header LIKE LINE OF it_header,
it_events TYPE slis_t_event,
wa_events LIKE LINE OF it_events.
****************************************************************************************
* selection screen *
********************
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-030.
SELECT-OPTIONS: so_bukrs FOR bsis-bukrs, "Company Code
so_gjahr FOR bsis-gjahr, "Fiscal Year
so_monat FOR bsis-monat, "Fiscal Period
so_kostl FOR bsis-kostl, "Cost Center
so_hkont FOR bsis-hkont. "Cost Element
SELECTION-SCREEN END OF BLOCK a.
****************************************************************************************
*START_OF_SELECTION *
**********************
START-OF-SELECTION.
PERFORM get_data.
PERFORM fill_catalog.
PERFORM display_data.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
SELECT
bukrs
hkont
gjahr
monat
shkzg
SUM( dmbtr )
SUM( wrbtr )
kostl
FROM bsis
INTO TABLE it_bsis
WHERE
bukrs IN so_bukrs AND
gjahr IN so_gjahr AND
monat IN so_monat AND
kostl IN so_kostl AND
hkont IN ( SELECT kstar FROM cska WHERE kstar IN so_hkont AND ktopl = '1000' )
GROUP BY gjahr monat bukrs shkzg hkont kostl.
SORT it_bsis BY bukrs gjahr monat hkont shkzg kostl.
IF it_bsis[] IS NOT INITIAL.
LOOP AT it_bsis.
it_data-bukrs = it_bsis-bukrs.
it_data-hkont = it_bsis-hkont.
it_data-gjahr = it_bsis-gjahr.
it_data-monat = it_bsis-monat.
it_data-shkzg = it_bsis-shkzg.
it_data-kostl = it_bsis-kostl.
IF it_data-shkzg = 'H'.
it_data-cr_val = it_data-cr_val + it_bsis-dmbtr.
ENDIF.
IF it_data-shkzg = 'S'.
it_data-dr_val = it_data-dr_val + it_bsis-dmbtr.
ENDIF.
APPEND it_data.
CLEAR it_data.
ENDLOOP.
SORT it_data BY bukrs gjahr monat hkont kostl.
LOOP AT it_data.
MOVE: it_data-bukrs TO it_final-bukrs,
it_data-hkont TO it_final-hkont,
it_data-gjahr TO it_final-gjahr,
it_data-monat TO it_final-monat,
it_data-kostl TO it_final-kostl,
it_data-dr_val TO it_final-dr_val,
it_data-cr_val TO it_final-cr_val.
* CONCATENATE it_data-bukrs it_data-gjahr it_data-monat it_data-hkont it_data-kostl INTO it_final-count.
collect it_final.
APPEND it_final.
CLEAR it_final.
ENDLOOP.
SORT it_final BY count.
DATA: w_bukrs TYPE bsis-bukrs,
w_hkont TYPE bsis-hkont,
w_gjahr TYPE bsis-gjahr,
w_kostl TYPE bsis-kostl,
w_monat TYPE bsis-monat.
LOOP AT it_final.
w_bukrs = it_final-bukrs.
w_hkont = it_final-hkont.
w_gjahr = it_final-gjahr.
w_kostl = it_final-kostl.
w_monat = it_final-monat.
AT END OF monat.
sum.
it_cost-bukrs = w_bukrs.
it_cost-gjahr = w_gjahr.
it_cost-monat = w_monat.
it_cost-hkont = w_hkont.
it_cost-kostl = w_kostl.
it_cost-final_val = it_final-dr_val - it_final-cr_val.
ENDAT.
CLEAR: w_bukrs, w_gjahr, w_monat, w_hkont, w_kostl.
ENDLOOP.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form FILL_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_catalog .
data lwa_fieldcat type slis_fieldcat_alv.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
clear lwa_fieldcat.
lwa_fieldcat-fieldname = 'BUKRS'.
lwa_fieldcat-seltext_m = 'Company Code'.
append lwa_fieldcat to it_fieldcat.
clear lwa_fieldcat.
lwa_fieldcat-fieldname = 'GJAHR'.
lwa_fieldcat-seltext_m = 'Year'.
append lwa_fieldcat to it_fieldcat.
clear lwa_fieldcat.
lwa_fieldcat-fieldname = 'MONAT'.
lwa_fieldcat-seltext_m = 'Month'.
append lwa_fieldcat to it_fieldcat.
clear lwa_fieldcat.
lwa_fieldcat-fieldname = 'HKONT'.
lwa_fieldcat-seltext_m = 'Cost Element'.
append lwa_fieldcat to it_fieldcat.
clear lwa_fieldcat.
lwa_fieldcat-fieldname = 'KOSTL'.
lwa_fieldcat-seltext_m = 'Cost Center'.
append lwa_fieldcat to it_fieldcat.
clear lwa_fieldcat.
lwa_fieldcat-fieldname = 'FINAL_VAL'.
lwa_fieldcat-seltext_m = 'VALUE'.
append lwa_fieldcat to it_fieldcat.
ENDFORM. " FILL_CATALOG
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_data .
ENDFORM. " DISPLAY_DATA
Please tell me how to go about... As usual your expert suggestions are most valued.
Also any suggestion for writing report in different way is also welcomed.
Regards,
Jitesh