‎2008 Jul 16 6:14 AM
In a interactive list user cliks on a row of the displayed records ,user is mapped to a transaction and once he enters the save button in that transaction ,User is mapped back to the initial screen of the interactive report as the program is submitted with the selection screen values in order to display the newly updated values .can anyone let me know how to set the cursor at the position where the user has done the last double click and also to display the newly updated values.
‎2008 Jul 16 6:19 AM
here is the example code it will help you to call another transaction .
REPORT z000fre_bs_acc
NO STANDARD PAGE HEADING
LINE-SIZE 132 .
************************************************************************
Title : Balance Sheet & GL Accounts *
Author : Suvarchala C *
Date : 18/12/2007 *
Reference : 2KEE transaction *
Type : Report *
Frequency : Regularly *
Input : Selection criteria *
Output : Report to be designed should display sum of all the *
movements on each combination of Business area and *
Balance Sheet GL account summarized in 1 line for the *
given selection criteria *
Description : Report to get the combination of Business area and *
Balance Sheet GL account summarized on 1 line *
************************************************************************
************************************************************************
M O D I F I C A T I O N L O G *
*----
*
Date User id Change # Description *
-------- ---------- ---------- ----------------------------------*
18/12/07 EXCCHINTS01 ADSK920712 New development *
************************************************************************
************************************************************************
TABLES *
************************************************************************
TABLES:
glt0, " G/L acc master rec trans figs
ska1, " G/L Account Master
sscrfields. " Fields on selection screens
************************************************************************
TYPE POOLS *
************************************************************************
TYPE-POOLS:
slis, " Global Type pool
rsds. " Types for free deferrals
***********************************************************************
WORK AREA *
***********************************************************************
DATA:
wa_afield TYPE slis_fieldcat_alv, " Field Catatlog
wa_layout TYPE slis_layout_alv, " Layout
wa_layout2 TYPE slis_layout_alv, " Layout
wa_event TYPE slis_alv_event, " Events
wa_variant TYPE disvariant, " Variant
wa_xvariant TYPE disvariant. " Variant
***********************************************************************
INTERNAL TABLES *
***********************************************************************
DATA:
Table for Fields of the current screen
i_dynpread LIKE dynpread OCCURS 1
WITH HEADER LINE,
Table for List Header
i_listheader TYPE slis_t_listheader
WITH HEADER LINE,
Table for Field Catalog
i_fieldcat TYPE
slis_t_fieldcat_alv,
Table for Field Catalog2
i_fieldcat2 TYPE
slis_t_fieldcat_alv,
Table for Events
i_events TYPE slis_t_event.
Table for G/L account master record transaction figures
DATA:
BEGIN OF i_glt0 OCCURS 0,
busctr LIKE glt0-rbusa, " Business Area
accno LIKE glt0-racct, " Account Number
t_curr LIKE tka01-pcacur, " Currency
ccode LIKE glt0-bukrs, " Company code
fyear LIKE glt0-ryear, " Fiscal year
tsl LIKE glt0-ksl01, " Amount in Transaction Currency
hsl LIKE glt0-hsl01, " Amount in Local Currency
ksl LIKE glt0-tsl01. " Amount in Group Currency
INCLUDE STRUCTURE glt0.
DATA:
txt50 LIKE skat-txt50, " GL Account Name
altkt LIKE skb1-altkt, " French GL Account
END OF i_glt0,
Temporary table for glt0
i_glt0temp LIKE i_glt0 OCCURS 0
WITH HEADER LINE,
i_glt0temp1 LIKE i_glt0 OCCURS 0
WITH HEADER LINE.
Table for GL Account Names
DATA:
BEGIN OF i_skat OCCURS 0,
saknr LIKE skat-saknr, " Account Number
txt50 LIKE skat-txt50, " GL Account Name
END OF i_skat,
Table for French GL Accounts
BEGIN OF i_skb1 OCCURS 0,
bukrs LIKE skb1-bukrs, " Company Code
saknr LIKE skb1-saknr, " Account Number
altkt LIKE skb1-altkt, " French GL Account
END OF i_skb1.
Table for periods
DATA:
BEGIN OF i_periods OCCURS 16,
ccode LIKE glt0-bukrs, " Company code
fyear LIKE glt0-ryear, " Fiscal year
altkt LIKE skb1-altkt, " French GL Account
poper LIKE " Period
fdbl_balance_line-period,
ksl LIKE glt0-ksl01, " Group Currency amt
hsl LIKE glt0-hsl01, " Local Currency amt
tsl LIKE glt0-tsl01, " Transactional amt
rtcur LIKE glt0-rtcur, " Currency
END OF i_periods.
Table for French GL Account
DATA:
BEGIN OF i_altkt OCCURS 0,
busctr LIKE glt0-rbusa, " Business Area
accno LIKE glt0-racct, " Account Number
ccode LIKE glt0-bukrs, " Company code
altkt LIKE skb1-altkt, " French GL Account
END OF i_altkt,
Table for Balance Sheet GL Accounts
BEGIN OF i_ska1 OCCURS 0,
saknr LIKE ska1-saknr, " GL Account
END OF i_ska1.
***********************************************************************
DATA DECLARATION AND CONSTANTS *
***********************************************************************
DATA:
v_repid LIKE sy-repid, " Report Name
v_cntpoper TYPE i, " Counter for selected periods
v_cntrldnr TYPE i, " Counter for selected ledgers
v_cntryear TYPE i, " Counter for selected years
v_packsize TYPE i VALUE 1000, " Packet size
v_exit(1) TYPE c, " Exit
v_save(1) TYPE c, " Save
v_text1(60) TYPE c, " Text
v_text2(60) TYPE c. " Text
***********************************************************************
RANGES *
***********************************************************************
RANGES:
r_rclnt FOR glpca-rclnt. " Client
***********************************************************************
SELECTION SCREEN *
***********************************************************************
SELECT-OPTIONS:
s_rldnr FOR glt0-rldnr " Ledger
DEFAULT '00' NO-DISPLAY,
s_rrcty FOR glt0-rrcty, " Record type
s_rvers FOR glt0-rvers " Version
DEFAULT '001' OBLIGATORY,
s_bukrs FOR glt0-bukrs, " Company Code
s_ryear FOR glt0-ryear " Fiscal year
DEFAULT sy-datlo,
s_racct FOR ska1-saknr, " Account Number
s_rbusa FOR glt0-rbusa, " FI-SL Buss Trans
s_poper FOR glt0-rpmax. " Period
Display-variant
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-e01.
PARAMETERS:
p_vari LIKE disvariant-variant. " Variant
SELECTION-SCREEN COMMENT 47(40) varname FOR FIELD p_vari.
SELECTION-SCREEN END OF BLOCK b1.
PARAMETERS
log_grp(4) TYPE c NO-DISPLAY DEFAULT 'pc10'.
***********************************************************************
INITIALIZATION *
***********************************************************************
INITIALIZATION.
v_repid = sy-repid.
Settings for display variants
v_save = 'A'.
CLEAR wa_variant.
wa_variant-report = v_repid.
wa_variant-log_group = log_grp.
wa_variant-username = sy-uname.
Get default variant
wa_xvariant = wa_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = v_save
CHANGING
cs_variant = wa_xvariant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = wa_xvariant-variant.
ENDIF. " IF SY-SUBRC = 0
varname = wa_xvariant-text.
***********************************************************************
AT SELCTION-SCREEN on value request *
***********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
F4 help for variant
PERFORM f_f4_for_variant.
***********************************************************************
AT SELCTION-SCREEN *
***********************************************************************
AT SELECTION-SCREEN.
Check authorizations
PERFORM f_check_authority_groups.
Validate Variant
PERFORM f_validate_vari.
Validate the Version
AT SELECTION-SCREEN ON s_rvers.
IF NOT s_rvers[] IS INITIAL.
PERFORM f_validate_rvers.
ENDIF. " IF S_RVERS[]..
Validate Company Code
AT SELECTION-SCREEN ON s_bukrs.
IF NOT s_bukrs[] IS INITIAL.
PERFORM f_validate_bukrs.
ENDIF. " IF S_BUKRS[]..
Validate Account Number
AT SELECTION-SCREEN ON s_racct.
IF NOT s_racct[] IS INITIAL.
PERFORM f_validate_racct.
ENDIF. " IF S_RACCT[]..
Validate Business Area
AT SELECTION-SCREEN ON s_rbusa.
IF NOT s_rbusa[] IS INITIAL.
PERFORM f_validate_rbusa.
ENDIF. " IF S_RBUSA[]..
***********************************************************************
START-OF-SELECTION *
***********************************************************************
START-OF-SELECTION.
Optimize database performance
PERFORM f_db_optimizer.
Fetch Business area and accounting data
PERFORM f_fetch_busadata.
Fetch GL Acc names & Balance Sheet GL Accounts
IF NOT i_glt0[] IS INITIAL.
PERFORM f_fetch_balacc.
PERFORM f_fetch_glacc.
ENDIF. " IF NOT I_GLT0[]..
***********************************************************************
END-OF-SELECTION *
***********************************************************************
END-OF-SELECTION.
IF NOT i_glt0[] IS INITIAL.
Modify Selected GL Acc data
PERFORM f_modify_gldata.
Calculate yearly totals
PERFORM f_fetch_yeartot.
Calculate G/L totals
PERFORM f_calculate_gltot.
Filling fieldcat
PERFORM f_setup_field_tab.
Filling table t_events (for dynamic callbacks from ALV)
REFRESH i_events.
wa_event-name = 'TOP_OF_PAGE'.
wa_event-form = 'TOP_OF_PAGE'.
APPEND wa_event TO i_events.
Filling listheader
PERFORM f_fill_listheader.
Display Primary list
PERFORM f_list_display.
ENDIF. " IF NOT I_glt0[]..
*&----
*
*& FORM F_F4_FOR_VARIANT
*&----
*
F4- help for variant
*----
*
There are no interface parameters to be passed to this routine
*----
*
FORM f_f4_for_variant.
Get Variant
wa_variant-log_group = log_grp.
Get the variants
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = wa_variant
i_save = v_save
IMPORTING
e_exit = v_exit
es_variant = wa_xvariant
EXCEPTIONS
not_found = 2.
IF sy-subrc EQ 2.
MESSAGE s017(0k).
ELSE.
Update the Screen Fields
IF v_exit EQ space.
p_vari = wa_xvariant-variant.
varname = wa_xvariant-text.
i_dynpread-fieldname = 'VARNAME'.
i_dynpread-fieldvalue = wa_xvariant-text.
APPEND i_dynpread.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = v_repid
dynumb = '1000'
TABLES
dynpfields = i_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
IF sy-subrc NE 0.
MESSAGE s017(0k).
ENDIF. " IF SY-SUBRC NE 0.
ENDIF. " IF V_EXIT EQ SPACE
ENDIF. " IF SY-SUBRC EQ 2
ENDFORM. " F_F4_FOR_VARIANT
*----
*
FORM F_USR_CMD *
*----
*
This routine is used to display secondary list
*----
*
-->UCOMM User Command
-->SELFIELD Cell Field
*----
*
FORM f_usr_cmd USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
CASE ucomm.
Double click
WHEN '&IC1'.
IF selfield-tabindex = 0.
MESSAGE e004(ok).
ENDIF. " IF SELFIELD-TABINDEX
READ TABLE i_glt0 INDEX selfield-tabindex.
Fill Field catalog
PERFORM f_fill_tables2.
wa_layout2-detail_initial_lines = 'X'.
wa_layout2-detail_popup = 'X'.
wa_layout2-min_linesize = 40.
wa_layout2-f2code = 'PIC1'.
wa_layout2-colwidth_optimize = 'X'.
Display Process indicatior in currenct widow
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = text-p60.
Display Secondary list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_interface_check = ' '
i_callback_program = v_repid
i_callback_pf_status_set = 'F_SET_PF_STATUS_2'
i_callback_user_command = 'F_USR_CMD'
i_structure_name = 'T_PERIODS'
is_layout = wa_layout2
it_fieldcat = i_fieldcat2
i_default = 'X'
i_screen_start_column = 1
i_screen_start_line = 1
i_screen_end_column = 75
i_screen_end_line = 17
TABLES
t_outtab = i_periods
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc EQ 0.
Do nothing
ENDIF. " IF SY-SUBRC EQ 0
CLEAR i_glt0.
WHEN '&ICP'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'PIC1'.
IF selfield-tabindex = 0.
MESSAGE e004(ok).
ENDIF. " IF SELFIELD-TABINDEX
READ TABLE i_periods INDEX selfield-tabindex.
Display individual items
PERFORM f_submit_report.
ENDCASE. " CASE UCOMM
ENDFORM. " F_USR_CMD
*----
*
FORM F_SET_UP_FIELD_TAB *
*----
*
Prepare Field catalog
*----
*
No interface parameters are required
*----
*
FORM f_setup_field_tab.
DATA lv_i TYPE i. " Integer
CLEAR lv_i.
Business Area
CLEAR wa_afield.
wa_afield-seltext_m = text-w01.
wa_afield-key = 'X'.
PERFORM f_add_afield_to_fieldtab USING 'RBUSA'.
GL Account
CLEAR wa_afield.
wa_afield-seltext_m = text-w02.
wa_afield-key = 'X'.
PERFORM f_add_afield_to_fieldtab USING 'RACCT'.
French GL Account
CLEAR wa_afield.
wa_afield-key = 'X'.
wa_afield-seltext_m = text-w03.
PERFORM f_add_afield_to_fieldtab USING 'ALTKT'.
GL Account Name
CLEAR wa_afield.
wa_afield-key = 'X'.
wa_afield-seltext_m = text-w04.
PERFORM f_add_afield_to_fieldtab USING 'TXT50'.
Record Type
CLEAR wa_afield.
wa_afield-seltext_m = text-w05.
wa_afield-key = ' '.
PERFORM f_add_afield_to_fieldtab USING 'RRCTY'.
Transactional Currency total
CLEAR wa_afield.
wa_afield-ref_tabname = 'GLPCA'.
wa_afield-cfieldname = 'RTCUR'.
wa_afield-do_sum = 'X'.
wa_afield-seltext_m = text-w06.
PERFORM f_add_afield_to_fieldtab USING 'TSL'.
Transactional Currency
CLEAR wa_afield.
wa_afield-no_sum = 'X'.
wa_afield-seltext_m = text-w07.
PERFORM f_add_afield_to_fieldtab USING 'RTCUR'.
Version
CLEAR wa_afield.
wa_afield-no_out = 'X'.
wa_afield-seltext_m = text-w08.
PERFORM f_add_afield_to_fieldtab USING 'RVERS'.
Ledger
CLEAR wa_afield.
wa_afield-no_out = 'X'.
wa_afield-seltext_m = text-w09.
PERFORM f_add_afield_to_fieldtab USING 'RLDNR'.
Period Break down
REFRESH i_fieldcat2.
CLEAR lv_i.
Company Code
ADD 1 TO lv_i.
CLEAR wa_afield.
wa_afield-col_pos = lv_i.
wa_afield-fieldname = 'CCODE'.
wa_afield-key = 'X'.
wa_afield-no_sum = 'X'.
wa_afield-seltext_m = text-w13.
APPEND wa_afield TO i_fieldcat2.
Fiscal Year
ADD 1 TO lv_i.
CLEAR wa_afield.
wa_afield-col_pos = lv_i.
wa_afield-fieldname = 'FYEAR'.
wa_afield-key = 'X'.
wa_afield-no_sum = 'X'.
wa_afield-seltext_m = text-w10.
APPEND wa_afield TO i_fieldcat2.
French GL Account
ADD 1 TO lv_i.
CLEAR wa_afield.
wa_afield-col_pos = lv_i.
wa_afield-fieldname = 'ALTKT'.
wa_afield-key = 'X'.
wa_afield-no_sum = 'X'.
wa_afield-seltext_m = text-w03.
APPEND wa_afield TO i_fieldcat2.
Period
ADD 1 TO lv_i.
CLEAR wa_afield.
wa_afield-col_pos = lv_i.
wa_afield-fieldname = 'POPER'.
wa_afield-key = 'X'.
wa_afield-no_sum = 'X'.
wa_afield-ref_tabname = 'GLPCA'.
wa_afield-seltext_s = text-w11.
wa_afield-seltext_m = text-w11.
wa_afield-seltext_l = text-w11.
APPEND wa_afield TO i_fieldcat2.
Transactional Currency
ADD 1 TO lv_i.
CLEAR wa_afield.
wa_afield-col_pos = lv_i.
wa_afield-fieldname = 'TSL'.
wa_afield-ref_fieldname = 'TSL'.
wa_afield-ref_tabname = 'GLPCA'.
wa_afield-seltext_m = text-w06.
wa_afield-do_sum = 'X'.
wa_afield-cfieldname = 'RTCUR'.
APPEND wa_afield TO i_fieldcat2.
Currency Key
ADD 1 TO lv_i.
CLEAR wa_afield.
wa_afield-col_pos = lv_i.
wa_afield-fieldname = 'RTCUR'.
wa_afield-ref_fieldname = 'RTCUR'.
wa_afield-seltext_m = text-w07.
wa_afield-no_sum = 'X'.
APPEND wa_afield TO i_fieldcat2.
ENDFORM. " F_SETUP_FIELD_TAB
*----
*
FORM F_ADD_AFIELD_TO_FIELDTAB *
*----
*
This Routine is used to prepare field catalag *
*----
*
--> VALUE(FIELDNAME) Field name
*----
*
FORM f_add_afield_to_fieldtab
USING value(fieldname) LIKE wa_afield-fieldname.
STATICS zaehler LIKE sy-tabix.
wa_afield-fieldname = fieldname.
ADD 1 TO zaehler.
wa_afield-col_pos = zaehler.
APPEND wa_afield TO i_fieldcat.
ENDFORM. " F_ADD_AFIELD_TO_FIELDTAB
*----
*
FORM WRITE_ITAB
*----
*
To display Internal table data
*----
*
--> ITAB " Internal table
*----
*
FORM write_itab TABLES itab.
LOOP AT itab.
WRITE / itab.
ENDLOOP. " LOOP AT ITAB
ENDFORM. " WRITE_ITAB
*----
*
FORM MODIFY_FIELDTAB_FOR_POPER *
*----
*
Modify Field Catalog *
*----
*
--> VALUE(FIELDNAME) Field name *
*----
*
FORM modify_fieldtab_for_poper
USING value(fieldname) LIKE wa_afield-fieldname.
DATA:
lv_text LIKE wa_afield-fieldname, " Field name
lv_zaehler LIKE sy-tabix. " Index
DESCRIBE TABLE s_poper LINES lv_zaehler.
IF lv_zaehler GT 0.
lv_zaehler = 0.
DO 17 TIMES.
IF lv_zaehler IN s_poper.
lv_text = fieldname.
IF lv_zaehler EQ 0.
WRITE 'VT' TO lv_text+3(2).
ELSEIF lv_zaehler LT 10.
WRITE lv_zaehler TO lv_text+4(1).
ELSE.
WRITE lv_zaehler TO lv_text+3(2).
ENDIF. " IF LV_ZAEHLER EQ 0
READ TABLE i_fieldcat WITH KEY fieldname = lv_text
INTO wa_afield.
wa_afield-no_out = ' '.
MODIFY i_fieldcat FROM wa_afield INDEX sy-tabix.
ENDIF. " IF LV_ZAEHLER IN POPER
ADD 1 TO lv_zaehler.
ENDDO. " DO
ENDIF. " IF LV_ZAEHLER GT 0
ENDFORM. " MODIFY_FIELDTAB_FOR_POPER
*&----
*
*& Form F_CLEAR_PERIODS
*&----
*
Deleting not selected Periods
*----
*
No Interface parameters are required
*----
*
FORM f_clear_periods.
CHECK v_cntpoper > 0.
IF NOT 0 IN s_poper.
CLEAR: i_glt0-kslvt, i_glt0-hslvt,
i_glt0-tslvt.
ENDIF. " IF NOT 0 IN POPER
IF NOT 1 IN s_poper.
CLEAR: i_glt0-ksl01, i_glt0-hsl01,
i_glt0-tsl01.
ENDIF. " IF NOT 1 IN POPER
IF NOT 2 IN s_poper.
CLEAR: i_glt0-ksl02, i_glt0-hsl02,
i_glt0-tsl02.
ENDIF. " IF NOT 2 IN POPER
IF NOT 3 IN s_poper.
CLEAR: i_glt0-ksl03, i_glt0-hsl03,
i_glt0-tsl03.
ENDIF. " IF NOT 3 IN POPER
IF NOT 4 IN s_poper.
CLEAR: i_glt0-ksl04, i_glt0-hsl04,
i_glt0-tsl04.
ENDIF. " IF NOT 4 IN POPER
IF NOT 5 IN s_poper.
CLEAR: i_glt0-ksl05, i_glt0-hsl05,
i_glt0-tsl05.
ENDIF. " IF NOT 5 IN POPER
IF NOT 6 IN s_poper.
CLEAR: i_glt0-ksl06, i_glt0-hsl06,
i_glt0-tsl06.
ENDIF. " IF NOT 6 IN POPER
IF NOT 7 IN s_poper.
CLEAR: i_glt0-ksl07, i_glt0-hsl07,
i_glt0-tsl07.
ENDIF. " IF NOT 7 IN POPER
IF NOT 8 IN s_poper.
CLEAR: i_glt0-ksl08, i_glt0-hsl08,
i_glt0-tsl08.
ENDIF. " IF NOT 8 IN POPER
IF NOT 9 IN s_poper.
CLEAR: i_glt0-ksl09, i_glt0-hsl09,
i_glt0-tsl09.
ENDIF. " IF NOT 9 IN POPER
IF NOT 10 IN s_poper.
CLEAR: i_glt0-ksl10, i_glt0-hsl10,
i_glt0-tsl10.
ENDIF. " IF NOT 10 IN POPER
IF NOT 11 IN s_poper.
CLEAR: i_glt0-ksl11, i_glt0-hsl11,
i_glt0-tsl11.
ENDIF. " IF NOT 11 IN POPER
IF NOT 12 IN s_poper.
CLEAR: i_glt0-ksl12, i_glt0-hsl12,
i_glt0-tsl12.
ENDIF. " IF NOT 12 IN POPER
IF NOT 13 IN s_poper.
CLEAR: i_glt0-ksl13, i_glt0-hsl13,
i_glt0-tsl13.
ENDIF. " IF NOT 13 IN POPER
IF NOT 14 IN s_poper.
CLEAR: i_glt0-ksl14, i_glt0-hsl14,
i_glt0-tsl14.
ENDIF. " IF NOT 14 IN POPER
IF NOT 15 IN s_poper.
CLEAR: i_glt0-ksl15, i_glt0-hsl15,
i_glt0-tsl15.
ENDIF. " IF NOT 15 IN POPER
IF NOT 16 IN s_poper.
CLEAR: i_glt0-ksl16, i_glt0-hsl16,
i_glt0-tsl16.
ENDIF. " IF NOT 16 IN POPER
ENDFORM. " F_CLEAR_PERIODS
*&----
*
*& Form F_CALCULATE_SUMS
*&----
*
Calculating sums over periods *
*----
*
No Interface parameters are required
*----
*
FORM f_calculate_sums.
i_glt0-ksl = i_glt0-kslvt + i_glt0-ksl01 +
i_glt0-ksl02 + i_glt0-ksl03 +
i_glt0-ksl04 + i_glt0-ksl05 +
i_glt0-ksl06 + i_glt0-ksl07 +
i_glt0-ksl08 + i_glt0-ksl09 +
i_glt0-ksl10 + i_glt0-ksl11 +
i_glt0-ksl12 + i_glt0-ksl13 +
i_glt0-ksl14 + i_glt0-ksl15 +
i_glt0-ksl16.
i_glt0-hsl = i_glt0-hslvt + i_glt0-hsl01 +
i_glt0-hsl02 + i_glt0-hsl03 +
i_glt0-hsl04 + i_glt0-hsl05 +
i_glt0-hsl06 + i_glt0-hsl07 +
i_glt0-hsl08 + i_glt0-hsl09 +
i_glt0-hsl10 + i_glt0-hsl11 +
i_glt0-hsl12 + i_glt0-hsl13 +
i_glt0-hsl14 + i_glt0-hsl15 +
i_glt0-hsl16.
i_glt0-tsl = i_glt0-tslvt + i_glt0-tsl01 +
i_glt0-tsl02 + i_glt0-tsl03 +
i_glt0-tsl04 + i_glt0-tsl05 +
i_glt0-tsl06 + i_glt0-tsl07 +
i_glt0-tsl08 + i_glt0-tsl09 +
i_glt0-tsl10 + i_glt0-tsl11 +
i_glt0-tsl12 + i_glt0-tsl13 +
i_glt0-tsl14 + i_glt0-tsl15 +
i_glt0-tsl16.
ENDFORM. " F_CALCULATE_SUMS
*&----
*
*& Form F_FILL_TABLES2
*&----
*
Fill Secondary List table
*----
*
No Interface parameters are required
*----
*
FORM f_fill_tables2.
REFRESH i_periods.
CLEAR i_periods.
LOOP AT i_glt0temp1 WHERE busctr = i_glt0-busctr
AND accno = i_glt0-accno
AND t_curr = i_glt0-t_curr.
i_periods-rtcur = i_glt0temp1-rtcur.
i_periods-ccode = i_glt0temp1-ccode.
i_periods-fyear = i_glt0temp1-fyear.
IF i_glt0-altkt EQ space.
READ TABLE i_skb1 WITH KEY bukrs = i_glt0temp1-ccode
saknr = i_glt0temp1-racct BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE i_skb1-altkt TO i_periods-altkt.
ENDIF. " IF SY-SUBRC EQ 0
ENDIF. " IV I_GLT0-ALTKT
IF 0 IN s_poper.
i_periods-poper = 'Bal.carrried forward'(w12).
i_periods-ksl = i_glt0temp1-kslvt.
i_periods-hsl = i_glt0temp1-hslvt.
i_periods-tsl = i_glt0temp1-tslvt.
APPEND i_periods.
ENDIF. " IF 0 IN POPER.
IF 1 IN s_poper.
i_periods-poper = '01'.
i_periods-ksl = i_glt0temp1-ksl01.
i_periods-hsl = i_glt0temp1-hsl01.
i_periods-tsl = i_glt0temp1-tsl01.
APPEND i_periods.
ENDIF. " IF 1 IN POPER.
IF 2 IN s_poper.
i_periods-poper = '02'.
i_periods-ksl = i_glt0temp1-ksl02.
i_periods-hsl = i_glt0temp1-hsl02.
i_periods-tsl = i_glt0temp1-tsl02.
APPEND i_periods.
ENDIF. " IF 2 IN POPER.
IF 3 IN s_poper.
i_periods-poper = '03'.
i_periods-ksl = i_glt0temp1-ksl03.
i_periods-hsl = i_glt0temp1-hsl03.
i_periods-tsl = i_glt0temp1-tsl03.
APPEND i_periods.
ENDIF. " IF 3 IN POPER.
IF 4 IN s_poper.
i_periods-poper = '04'.
i_periods-ksl = i_glt0temp1-ksl04.
i_periods-hsl = i_glt0temp1-hsl04.
i_periods-tsl = i_glt0temp1-tsl04.
APPEND i_periods.
ENDIF. " IF 4 IN POPER.
IF 5 IN s_poper.
i_periods-poper = '05'.
i_periods-ksl = i_glt0temp1-ksl05.
i_periods-hsl = i_glt0temp1-hsl05.
i_periods-tsl = i_glt0temp1-tsl05.
APPEND i_periods.
ENDIF. " IF 5 IN POPER.
IF 6 IN s_poper.
i_periods-poper = '06'.
i_periods-ksl = i_glt0temp1-ksl06.
i_periods-hsl = i_glt0temp1-hsl06.
i_periods-tsl = i_glt0temp1-tsl06.
APPEND i_periods.
ENDIF. " IF 6 IN POPER.
IF 7 IN s_poper.
i_periods-poper = '07'.
i_periods-ksl = i_glt0temp1-ksl07.
i_periods-hsl = i_glt0temp1-hsl07.
i_periods-tsl = i_glt0temp1-tsl07.
APPEND i_periods.
ENDIF. " IF 7 IN POPER.
IF 8 IN s_poper.
i_periods-poper = '08'.
i_periods-ksl = i_glt0temp1-ksl08.
i_periods-hsl = i_glt0temp1-hsl08.
i_periods-tsl = i_glt0temp1-tsl08.
APPEND i_periods.
ENDIF. " IF 8 IN POPER.
IF 9 IN s_poper.
i_periods-poper = '09'.
i_periods-ksl = i_glt0temp1-ksl09.
i_periods-hsl = i_glt0temp1-hsl09.
i_periods-tsl = i_glt0temp1-tsl09.
APPEND i_periods.
ENDIF. " IF 9 IN POPER.
IF 10 IN s_poper.
i_periods-poper = '10'.
i_periods-ksl = i_glt0temp1-ksl10.
i_periods-hsl = i_glt0temp1-hsl10.
i_periods-tsl = i_glt0temp1-tsl10.
APPEND i_periods.
ENDIF. " IF 10 IN POPER.
IF 11 IN s_poper.
i_periods-poper = '11'.
i_periods-ksl = i_glt0temp1-ksl11.
i_periods-hsl = i_glt0temp1-hsl11.
i_periods-tsl = i_glt0temp1-tsl11.
APPEND i_periods.
ENDIF. " IF 11 IN POPER.
IF 12 IN s_poper.
i_periods-poper = '12'.
i_periods-ksl = i_glt0temp1-ksl12.
i_periods-hsl = i_glt0temp1-hsl12.
i_periods-tsl = i_glt0temp1-tsl12.
APPEND i_periods.
ENDIF. " IF 12 IN POPER.
IF 13 IN s_poper.
i_periods-poper = '13'.
i_periods-ksl = i_glt0temp1-ksl13.
i_periods-hsl = i_glt0temp1-hsl13.
i_periods-tsl = i_glt0temp1-tsl13.
APPEND i_periods.
ENDIF. " IF 13 IN POPER.
IF 14 IN s_poper.
i_periods-poper = '14'.
i_periods-ksl = i_glt0temp1-ksl14.
i_periods-hsl = i_glt0temp1-hsl14.
i_periods-tsl = i_glt0temp1-tsl14.
APPEND i_periods.
ENDIF. " IF 14 IN POPER.
IF 15 IN s_poper.
i_periods-poper = '15'.
i_periods-ksl = i_glt0temp1-ksl15.
i_periods-hsl = i_glt0temp1-hsl15.
i_periods-tsl = i_glt0temp1-tsl15.
APPEND i_periods.
ENDIF. " IF 15 IN POPER.
IF 16 IN s_poper.
i_periods-poper = '16'.
i_periods-ksl = i_glt0temp1-ksl16.
i_periods-hsl = i_glt0temp1-hsl16.
i_periods-tsl = i_glt0temp1-tsl16.
APPEND i_periods.
ENDIF. " IF 16 IN POPER.
CLEAR i_periods.
ENDLOOP. " LOOP AT I_GLT0TEMP1
ENDFORM. " F_FILL_TABLES2
*----
*
FORM F_SET_PF_STATUS_2 *
*----
*
--> EXTAB Auszublendende Funktions-Codes *
*----
*
Eigenen CUA-Status einblenden *
Dynamischer Aufruf aus K_KKBL_LIST_DISPLAY *
*----
*
FORM f_set_pf_status_2 USING extab TYPE slis_t_extab.
SET PF-STATUS 'STDPOPUP' EXCLUDING extab.
ENDFORM. " F_SET_PF_STATUS_2
*&----
*
*& Form F_FILL_LISTHEADER
*&----
*
This routine is uesd to prepare list header
*----
*
No interface parameters are required
*----
*
FORM f_fill_listheader.
READ TABLE i_glt0 INDEX 1.
i_listheader-typ = 'S'.
i_listheader-key = text-h01.
IF v_cntrldnr <= 1.
i_listheader-info = i_glt0-rldnr.
ELSE.
i_listheader-info = '*'.
ENDIF. " IF V_CNTRLDNR <= 1
APPEND i_listheader.
i_listheader-typ = 'S'.
i_listheader-key = text-h05.
IF v_cntryear <= 1.
i_listheader-info = i_glt0-ryear.
ELSE.
i_listheader-info = '*'.
ENDIF. " IF V_CNTRYEAR <= 1
APPEND i_listheader.
ENDFORM. " F_FILL-LISTHEADER
*----
*
FORM TOP_OF_PAGE
*----
*
Called dynamically form REUSE_ALV_LIST_DISPLAY
*----
*
No interface parameters are required
*----
*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_listheader[]
EXCEPTIONS
OTHERS = 1.
IF sy-subrc EQ 0.
Do nothing
ENDIF. " IF SY-SUBRC EQ 0
ENDFORM. " TOP_OF_PAGE
*&----
*
*& Form F_DB_OPTIMIZER
*&----
*
To optimize the data base performance
*----
*
There are no interface parameters to be passed to this routine
*----
*
FORM f_db_optimizer .
Selection into internal table i_glt0
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = text-p10.
Use trick to mislead DB-optimizer
CALL FUNCTION 'DB_DO_NOT_USE_CLIENT_INDEX'
EXPORTING
value = sy-mandt
TABLES
mandttab = r_rclnt.
ENDFORM. " F_DB_OPTIMIZER
*&----
*
*& Form F_FETCH_BUSADATA
*&----
*
Fetch Business area and Accounting data for the given selection
criteria
*----
*
There are no interface parameters to be passed to this routine
*----
*
FORM f_fetch_busadata .
REFRESH i_glt0.
Get the required data from G/L account master records table
SELECT *
FROM glt0
CLIENT SPECIFIED
PACKAGE SIZE v_packsize
APPENDING CORRESPONDING FIELDS
OF TABLE i_glt0
WHERE rclnt IN r_rclnt
AND rldnr IN s_rldnr
AND rrcty IN s_rrcty
AND rvers IN s_rvers
AND bukrs IN s_bukrs
AND ryear IN s_ryear
AND racct IN s_racct
AND rbusa IN s_rbusa.
v_text1 = sy-dbcnt.
CONDENSE v_text1.
CONCATENATE v_text1 text-s01
INTO v_text2 SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = v_text2. " ... Datensätze gelesen
ENDSELECT. " SELECT *
IF sy-dbcnt EQ 0. " Info,dass nichts gefunden wurde
MESSAGE s213(v4).
EXIT.
ENDIF. " IF SY-DBCNT
DESCRIBE TABLE s_poper LINES v_cntpoper.
ENDFORM. " F_FETCH_PFTCDATA
*&----
*
*& Form F_MODIFY_GLDATA
*&----
*
Modify selected GL account data
*----
*
There are no interface parameters to be passed to this routine
*----
*
FORM f_modify_gldata.
DATA: li_fska1 LIKE i_glt0 OCCURS 0
WITH HEADER LINE.
List sorting
SORT i_glt0 BY rldnr ryear bukrs rrcty rvers.
Loop through the profit center totals table
LOOP AT i_glt0.
MOVE:
i_glt0-rbusa TO i_glt0-busctr,
i_glt0-racct TO i_glt0-accno,
i_glt0-rtcur TO i_glt0-t_curr,
i_glt0-bukrs TO i_glt0-ccode,
i_glt0-ryear TO i_glt0-fyear.
On change of Year
ON CHANGE OF i_glt0-ryear.
ADD 1 TO v_cntryear.
ENDON. " ON CHANGE OF I_GLT0-RYEAR
On change of Ledeger
ON CHANGE OF i_glt0-rldnr.
ADD 1 TO v_cntrldnr.
ENDON. " ON CHANGE OF I_GLT0-RLDNR
Deleting not selcted periods
PERFORM f_clear_periods.
Adding values of periods
PERFORM f_calculate_sums.
Get GL Account Name
READ TABLE i_skat WITH KEY saknr = i_glt0-racct
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE i_skat-txt50 TO i_glt0-txt50.
ENDIF. " IF SY-SUBRC EQ 0
READ TABLE i_ska1 WITH KEY saknr = i_glt0-racct
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING i_glt0 TO li_fska1.
APPEND li_fska1.
ENDIF. " IF SY-SUBRC EQ 0
ENDLOOP. " LOOP AT I_GLT0
REFRESH i_glt0.
i_glt0[] = li_fska1[].
ENDFORM. " F_MODIFY_GLDATA
*&----
*
*& Form F_CALCULATE_GLTOT
*&----
*
Calculate totals by profit center, gl account and Currency
*----
*
No interface parameters are required
*----
*
FORM f_calculate_gltot .
DATA:
Local variables
lv_glt0ksl LIKE glt0-ksl01, " Amount in Group Currency
lv_glt0hsl LIKE glt0-hsl01, " Amount in Company code Currency
lv_glt0tsl LIKE glt0-tsl01. " Amount in Transaction Currency
DATA:
Group Currency
lv_kslvt LIKE glt0-kslvt, " Group amt
lv_ksl01 LIKE glt0-ksl01, " Group amt01
lv_ksl02 LIKE glt0-ksl02, " Group amt02
lv_ksl03 LIKE glt0-ksl03, " Group amt03
lv_ksl04 LIKE glt0-ksl04, " Group amt04
lv_ksl05 LIKE glt0-ksl05, " Group amt05
lv_ksl06 LIKE glt0-ksl06, " Group amt06
lv_ksl07 LIKE glt0-ksl07, " Group amt07
lv_ksl08 LIKE glt0-ksl08, " Group amt08
lv_ksl09 LIKE glt0-ksl09, " Group amt09
lv_ksl10 LIKE glt0-ksl10, " Group amt10
lv_ksl11 LIKE glt0-ksl11, " Group amt11
lv_ksl12 LIKE glt0-ksl12, " Group amt12
lv_ksl13 LIKE glt0-ksl13, " Group amt13
lv_ksl14 LIKE glt0-ksl14, " Group amt14
lv_ksl15 LIKE glt0-ksl15, " Group amt15
lv_ksl16 LIKE glt0-ksl16, " Group amt16
Transaction Currency
lv_tslvt LIKE glt0-tslvt, " Trans amt
lv_tsl01 LIKE glt0-tsl01, " Trans amt01
lv_tsl02 LIKE glt0-tsl02, " Trans amt02
lv_tsl03 LIKE glt0-tsl03, " Trans amt03
lv_tsl04 LIKE glt0-tsl04, " Trans amt04
lv_tsl05 LIKE glt0-tsl05, " Trans amt05
lv_tsl06 LIKE glt0-tsl06, " Trans amt06
lv_tsl07 LIKE glt0-tsl07, " Trans amt07
lv_tsl08 LIKE glt0-tsl08, " Trans amt08
lv_tsl09 LIKE glt0-tsl09, " Trans amt09
lv_tsl10 LIKE glt0-tsl10, " Trans amt10
lv_tsl11 LIKE glt0-tsl11, " Trans amt11
lv_tsl12 LIKE glt0-tsl12, " Trans amt12
lv_tsl13 LIKE glt0-tsl13, " Trans amt13
lv_tsl14 LIKE glt0-tsl14, " Trans amt14
lv_tsl15 LIKE glt0-tsl15, " Trans amt15
lv_tsl16 LIKE glt0-tsl16, " Trans amt16
Company Code Currency
lv_hslvt LIKE glt0-hslvt, " Local amt
lv_hsl01 LIKE glt0-hsl01, " Local amt01
lv_hsl02 LIKE glt0-hsl02, " Local amt02
lv_hsl03 LIKE glt0-hsl03, " Local amt03
lv_hsl04 LIKE glt0-hsl04, " Local amt04
lv_hsl05 LIKE glt0-hsl05, " Local amt05
lv_hsl06 LIKE glt0-hsl06, " Local amt06
lv_hsl07 LIKE glt0-hsl07, " Local amt07
lv_hsl08 LIKE glt0-hsl08, " Local amt08
lv_hsl09 LIKE glt0-hsl09, " Local amt09
lv_hsl10 LIKE glt0-hsl10, " Local amt10
lv_hsl11 LIKE glt0-hsl11, " Local amt11
lv_hsl12 LIKE glt0-hsl12, " Local amt12
lv_hsl13 LIKE glt0-hsl13, " Local amt13
lv_hsl14 LIKE glt0-hsl14, " Local amt14
lv_hsl15 LIKE glt0-hsl15, " Local amt15
lv_hsl16 LIKE glt0-hsl16, " Local amt16
lv_altkt LIKE skb1-altkt, " French GL Acc
lv_faltkt LIKE skb1-altkt, " French GL Acc
lv_flag TYPE c, " Flag
lv_aflag TYPE c. " Flag
REFRESH i_glt0temp.
i_glt0temp[] = i_glt0[].
i_glt0temp[] = i_glt0temp1[].
REFRESH i_glt0.
SORT i_glt0temp BY busctr accno t_curr ccode.
LOOP AT i_glt0temp.
Company Code
AT NEW ccode.
CLEAR lv_altkt.
READ TABLE i_altkt WITH KEY busctr = i_glt0temp-busctr
accno = i_glt0temp-accno
ccode = i_glt0temp-ccode
BINARY SEARCH.
IF sy-subrc EQ 0.
lv_altkt = i_altkt-altkt.
ENDIF. " IF SY-SUBRC EQ 0
ENDAT. " AT NEW CCODE
MOVE-CORRESPONDING i_glt0temp TO i_glt0.
IF sy-tabix EQ 1 OR lv_aflag = 'Y'.
MOVE lv_altkt TO lv_faltkt.
ENDIF. " IF SY-TABIX..
CLEAR lv_aflag.
IF lv_faltkt NE lv_altkt.
lv_flag = 'N'.
ENDIF. " IF LV_FALTKT
Totals in Transaction Currency
lv_tslvt = lv_tslvt + i_glt0temp-tslvt.
lv_tsl01 = lv_tsl01 + i_glt0temp-tsl01.
lv_tsl02 = lv_tsl02 + i_glt0temp-tsl02.
lv_tsl03 = lv_tsl03 + i_glt0temp-tsl03.
lv_tsl04 = lv_tsl04 + i_glt0temp-tsl04.
lv_tsl05 = lv_tsl05 + i_glt0temp-tsl05.
lv_tsl06 = lv_tsl06 + i_glt0temp-tsl06.
lv_tsl07 = lv_tsl07 + i_glt0temp-tsl07.
lv_tsl08 = lv_tsl08 + i_glt0temp-tsl08.
lv_tsl09 = lv_tsl09 + i_glt0temp-tsl09.
lv_tsl10 = lv_tsl10 + i_glt0temp-tsl10.
lv_tsl11 = lv_tsl11 + i_glt0temp-tsl11.
lv_tsl12 = lv_tsl12 + i_glt0temp-tsl12.
lv_tsl13 = lv_tsl13 + i_glt0temp-tsl13.
lv_tsl14 = lv_tsl14 + i_glt0temp-tsl14.
lv_tsl15 = lv_tsl15 + i_glt0temp-tsl15.
lv_tsl16 = lv_tsl16 + i_glt0temp-tsl16.
Totals in Local Currency
lv_hslvt = lv_hslvt + i_glt0temp-hslvt.
lv_hsl01 = lv_hsl01 + i_glt0temp-hsl01.
lv_hsl02 = lv_hsl02 + i_glt0temp-hsl02.
lv_hsl03 = lv_hsl03 + i_glt0temp-hsl03.
lv_hsl04 = lv_hsl04 + i_glt0temp-hsl04.
lv_hsl05 = lv_hsl05 + i_glt0temp-hsl05.
lv_hsl06 = lv_hsl06 + i_glt0temp-hsl06.
lv_hsl07 = lv_hsl07 + i_glt0temp-hsl07.
lv_hsl08 = lv_hsl08 + i_glt0temp-hsl08.
lv_hsl09 = lv_hsl09 + i_glt0temp-hsl09.
lv_hsl10 = lv_hsl10 + i_glt0temp-hsl10.
lv_hsl11 = lv_hsl11 + i_glt0temp-hsl11.
lv_hsl12 = lv_hsl12 + i_glt0temp-hsl12.
lv_hsl13 = lv_hsl13 + i_glt0temp-hsl13.
lv_hsl14 = lv_hsl14 + i_glt0temp-hsl14.
lv_hsl15 = lv_hsl15 + i_glt0temp-hsl15.
lv_hsl16 = lv_hsl16 + i_glt0temp-hsl16.
Totals in Group cirrency
lv_kslvt = lv_kslvt + i_glt0temp-kslvt.
lv_ksl01 = lv_ksl01 + i_glt0temp-ksl01.
lv_ksl02 = lv_ksl02 + i_glt0temp-ksl02.
lv_ksl03 = lv_ksl03 + i_glt0temp-ksl03.
lv_ksl04 = lv_ksl04 + i_glt0temp-ksl04.
lv_ksl05 = lv_ksl05 + i_glt0temp-ksl05.
lv_ksl06 = lv_ksl06 + i_glt0temp-ksl06.
lv_ksl07 = lv_ksl07 + i_glt0temp-ksl07.
lv_ksl08 = lv_ksl08 + i_glt0temp-ksl08.
lv_ksl09 = lv_ksl09 + i_glt0temp-ksl09.
lv_ksl10 = lv_ksl10 + i_glt0temp-ksl10.
lv_ksl11 = lv_ksl11 + i_glt0temp-ksl11.
lv_ksl12 = lv_ksl12 + i_glt0temp-ksl12.
lv_ksl13 = lv_ksl13 + i_glt0temp-ksl13.
lv_ksl14 = lv_ksl14 + i_glt0temp-ksl14.
lv_ksl15 = lv_ksl15 + i_glt0temp-ksl15.
lv_ksl16 = lv_ksl16 + i_glt0temp-ksl16.
Totals Amount in Group,Comp code, Trans
lv_glt0ksl = lv_glt0ksl + i_glt0temp-ksl.
lv_glt0hsl = lv_glt0hsl + i_glt0temp-hsl.
lv_glt0tsl = lv_glt0tsl + i_glt0temp-tsl.
MOVE lv_altkt TO i_glt0-altkt.
AT END OF t_curr.
lv_aflag = 'Y'.
IF lv_flag EQ 'N'.
CLEAR i_glt0-altkt.
ENDIF. " IF lv_flag EQ 'N'
MOVE i_glt0temp-busctr TO i_glt0-busctr.
MOVE i_glt0temp-accno TO i_glt0-accno.
MOVE lv_glt0ksl TO i_glt0-ksl.
MOVE lv_glt0hsl TO i_glt0-hsl.
MOVE lv_glt0tsl TO i_glt0-tsl.
MOVE lv_kslvt TO i_glt0-kslvt.
MOVE lv_ksl01 TO i_glt0-ksl01.
MOVE lv_ksl02 TO i_glt0-ksl02.
MOVE lv_ksl03 TO i_glt0-ksl03.
MOVE lv_ksl04 TO i_glt0-ksl04.
MOVE lv_ksl05 TO i_glt0-ksl05.
MOVE lv_ksl06 TO i_glt0-ksl06.
MOVE lv_ksl07 TO i_glt0-ksl07.
MOVE lv_ksl08 TO i_glt0-ksl08.
MOVE lv_ksl09 TO i_glt0-ksl09.
MOVE lv_ksl10 TO i_glt0-ksl10.
MOVE lv_ksl11 TO i_glt0-ksl11.
MOVE lv_ksl12 TO i_glt0-ksl12.
MOVE lv_ksl13 TO i_glt0-ksl13.
MOVE lv_ksl14 TO i_glt0-ksl14.
MOVE lv_ksl15 TO i_glt0-ksl15.
MOVE lv_ksl16 TO i_glt0-ksl16.
MOVE lv_hslvt TO i_glt0-hslvt.
MOVE lv_hsl01 TO i_glt0-hsl01.
MOVE lv_hsl02 TO i_glt0-hsl02.
MOVE lv_hsl03 TO i_glt0-hsl03.
MOVE lv_hsl04 TO i_glt0-hsl04.
MOVE lv_hsl05 TO i_glt0-hsl05.
MOVE lv_hsl06 TO i_glt0-hsl06.
MOVE lv_hsl07 TO i_glt0-hsl07.
MOVE lv_hsl08 TO i_glt0-hsl08.
MOVE lv_hsl09 TO i_glt0-hsl09.
MOVE lv_hsl10 TO i_glt0-hsl10.
MOVE lv_hsl11 TO i_glt0-hsl11.
MOVE lv_hsl12 TO i_glt0-hsl12.
MOVE lv_hsl13 TO i_glt0-hsl13.
MOVE lv_hsl14 TO i_glt0-hsl14.
MOVE lv_hsl15 TO i_glt0-hsl15.
MOVE lv_hsl16 TO i_glt0-hsl16.
MOVE lv_tslvt TO i_glt0-tslvt.
MOVE lv_tsl01 TO i_glt0-tsl01.
MOVE lv_tsl02 TO i_glt0-tsl02.
MOVE lv_tsl03 TO i_glt0-tsl03.
MOVE lv_tsl04 TO i_glt0-tsl04.
MOVE lv_tsl05 TO i_glt0-tsl05.
MOVE lv_tsl06 TO i_glt0-tsl06.
MOVE lv_tsl07 TO i_glt0-tsl07.
MOVE lv_tsl08 TO i_glt0-tsl08.
MOVE lv_tsl09 TO i_glt0-tsl09.
MOVE lv_tsl10 TO i_glt0-tsl10.
MOVE lv_tsl11 TO i_glt0-tsl11.
MOVE lv_tsl12 TO i_glt0-tsl12.
MOVE lv_tsl13 TO i_glt0-tsl13.
MOVE lv_tsl14 TO i_glt0-tsl14.
MOVE lv_tsl15 TO i_glt0-tsl15.
MOVE lv_tsl16 TO i_glt0-tsl16.
APPEND i_glt0.
CLEAR: i_glt0,lv_glt0ksl,lv_glt0hsl,lv_glt0tsl,
lv_kslvt,lv_tslvt,lv_hslvt,
lv_ksl01,lv_ksl02,lv_ksl03,lv_ksl04,
lv_ksl05,lv_ksl06,lv_ksl07,lv_ksl08,
lv_ksl09,lv_ksl10,lv_ksl11,lv_ksl12,
lv_ksl13,lv_ksl14,lv_ksl15,lv_ksl16,
lv_tsl01,lv_tsl02,lv_tsl03,lv_tsl04,
lv_tsl05,lv_tsl06,lv_tsl07,lv_tsl08,
lv_tsl09,lv_tsl10,lv_tsl11,lv_tsl12,
lv_tsl13,lv_tsl14,lv_tsl15,lv_tsl16,
lv_hsl01,lv_hsl02,lv_hsl03,lv_hsl04,
lv_hsl05,lv_hsl06,lv_hsl07,lv_hsl08,
lv_hsl09,lv_hsl10,lv_hsl11,lv_hsl12,
lv_hsl13,lv_hsl14,lv_hsl15,lv_hsl16,
lv_flag,lv_faltkt.
ENDAT. " AT END OF T_CURR
ENDLOOP. " LOOP AT I_glt0_TEMP
ENDFORM. " F_CALCULATE_GLTOT
*&----
*
*& Form F_LIST_DISPLAY
*&----
*
Primary List display
*----
*
No Interface parameters are required
*----
*
FORM f_list_display .
wa_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_user_command = 'F_USR_CMD'
i_structure_name = 'I_GLT0'
is_layout = wa_layout
it_fieldcat = i_fieldcat
i_save = v_save
is_variant = wa_variant
it_events = i_events
TABLES
t_outtab = i_glt0
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc NE 0.
Do nothing
ENDIF. " IF SY-SUBRC NE 0
ENDFORM. " F_LIST_DISPLAY
*&----
*
*& Form F_FETCH_PFTCTGL
*&----
*
Get GL account names and French GL Accounts
*----
*
No Interface parameters are required
*----
*
FORM f_fetch_glacc .
Temporary table for GL Accounts
DATA: li_glt0 LIKE i_glt0 OCCURS 0
WITH HEADER LINE.
li_glt0[] = i_glt0[].
GL Account Names
REFRESH li_glt0.
li_glt0[] = i_glt0[].
SORT li_glt0 BY racct.
DELETE ADJACENT DUPLICATES FROM li_glt0
COMPARING racct.
SELECT saknr " GL Account Number
txt50 " GL Account Name
FROM skat
INTO TABLE i_skat
FOR ALL ENTRIES IN li_glt0
WHERE spras EQ sy-langu
AND saknr EQ li_glt0-racct.
IF sy-subrc EQ 0.
SORT i_skat BY saknr.
ENDIF. " IF SY-SUBRC EQ 0
French GL Account
REFRESH li_glt0.
li_glt0[] = i_glt0[].
SORT li_glt0 BY bukrs racct.
DELETE ADJACENT DUPLICATES FROM li_glt0
COMPARING bukrs racct.
SELECT bukrs " Company Code
saknr " GL Account Number
altkt " Alternative Account
FROM skb1
INTO TABLE i_skb1
FOR ALL ENTRIES IN li_glt0
WHERE bukrs EQ li_glt0-bukrs
AND saknr EQ li_glt0-racct.
IF sy-subrc EQ 0.
SORT i_skb1 BY bukrs saknr.
ENDIF. " IF SY-SUBRC EQ 0
ENDFORM. " F_FETCH_PFTCTGL
*&----
*
*& Form F_SUBMIT_REPORT
*&----
*
This routine is used to call the GL Account Line item display
*----
*
No inter face parameters are required
*----
*
FORM f_submit_report .
Local Variables
DATA:
li_seltab TYPE STANDARD TABLE OF " Str for params n select opts
rsparams WITH HEADER LINE,
li_free_select TYPE rsds_texpr, " Table for selection
ls_free_select TYPE rsds_expr, " Work area for selection
li_expressions TYPE rsds_expr_tab, " Table for expression
ls_expressions TYPE rsdsexpr, " Work area for expression
Chart of accounts
BEGIN OF li_ktopl OCCURS 0,
ktopl LIKE t001-ktopl, " Chart of Accounts
END OF li_ktopl,
GL Account Master
ls_ska1 LIKE ska1,
lv_gvtyp_flag LIKE ska1-gvtyp, " P&L Acc stmt type
lv_fiscper LIKE rwcoom-fiscper, " Fiscal year
lv_ryear LIKE glt0-ryear, " Year
lv_count TYPE i. " Counter
Constant
CONSTANTS:
lc_poper LIKE " Period
fdbl_balance_line-period VALUE 'Bal.carrried forward'."#EC NOTEXT
SELECT COUNT( * )
INTO (lv_count)
FROM skb1
WHERE bukrs EQ i_periods-ccode
AND saknr EQ i_glt0-racct
AND xkres EQ space.
IF sy-subrc EQ 0 AND lv_count GT 0.
MESSAGE i430(f4) WITH i_glt0-racct i_periods-ccode.
ELSE.
Carry Forward
IF i_periods-poper EQ lc_poper.
Get Chart of Accounts
SELECT DISTINCT ktopl " Chart Of Accounts
INTO TABLE li_ktopl
FROM t001
WHERE bukrs EQ i_periods-ccode.
Get GL Account details
SELECT *
FROM ska1
UP TO 1 ROWS
INTO ls_ska1
FOR ALL ENTRIES IN li_ktopl
WHERE ktopl EQ li_ktopl-ktopl
AND saknr EQ i_glt0-racct
AND gvtyp <> space.
ENDSELECT. " SELECT *
IF sy-subrc EQ 0.
lv_gvtyp_flag = 'X'.
ELSE.
CLEAR lv_gvtyp_flag.
ENDIF. " IF SY-SUBRC EQ 0
IF NOT lv_gvtyp_flag IS INITIAL.
MESSAGE e010(fdbl).
ENDIF. " IF NOT LV_GVTYP
li_seltab-selname = 'SO_YRPER'.
li_seltab-sign = 'I'.
li_seltab-option = 'BT'.
li_seltab-low = '1950001'.
lv_ryear = i_periods-fyear - 1.
lv_fiscper(4) = i_periods-fyear - 1.
CLEAR lv_fiscper.
CONCATENATE lv_ryear '016'
INTO lv_fiscper.
li_seltab-high = lv_fiscper.
APPEND li_seltab.
ELSE.
CLEAR li_seltab.
CONCATENATE i_periods-fyear '0' i_periods-poper
INTO lv_fiscper.
li_seltab-selname = 'SO_YRPER'.
li_seltab-sign = 'I'.
li_seltab-option = 'BT'.
li_seltab-low = lv_fiscper.
li_seltab-high = lv_fiscper.
APPEND li_seltab.
ENDIF. " IF i_periods-poper
CLEAR li_seltab.
li_seltab-selname = 'SD_SAKNR'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = i_glt0-racct.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'SD_BUKRS'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = i_periods-ccode.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'SD_UMSKZ'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = ''.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'SD_GSB_B'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = i_glt0-rbusa.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'SO_WAERS'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = i_glt0-rtcur.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'PA_VARI'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = '1SAP-FC'.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'X_OPSEL'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = ''.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'X_CLSEL'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = ''.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'X_AISEL'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = 'X'.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'X_NORM'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = 'X'.
APPEND li_seltab.
CLEAR li_seltab.
li_seltab-selname = 'X_SHBV'.
li_seltab-sign = 'I'.
li_seltab-option = 'EQ'.
li_seltab-low = 'X'.
APPEND li_seltab.
ls_free_select-tablename = 'BSIS'.
Carry Forward
IF i_periods-poper EQ lc_poper.
ls_expressions-fieldname = 'MONAT'.
ls_expressions-option = 'BT'.
ls_expressions-low = '01'.
ls_expressions-high = '16'.
APPEND ls_expressions TO li_expressions.
ls_free_select-expr_tab = li_expressions.
APPEND ls_free_select TO li_free_select.
CLEAR ls_expressions.
REFRESH li_expressions.
ls_expressions-fieldname = 'GJAHR'.
ls_expressions-option = 'BT'.
ls_expressions-low = '1950'.
ls_expressions-high = lv_ryear.
APPEND ls_expressions TO li_expressions.
ls_free_select-expr_tab = li_expressions.
APPEND ls_free_select TO li_free_select.
CLEAR ls_expressions.
REFRESH li_expressions.
ELSE.
ls_expressions-fieldname = 'MONAT'.
ls_expressions-option = 'EQ'.
ls_expressions-low = i_periods-poper.
CLEAR ls_expressions-high.
APPEND ls_expressions TO li_expressions.
ls_free_select-expr_tab = li_expressions.
APPEND ls_free_select TO li_free_select.
CLEAR ls_expressions.
REFRESH li_expressions.
ls_expressions-fieldname = 'GJAHR'.
ls_expressions-option = 'EQ'.
ls_expressions-low = i_periods-fyear.
CLEAR ls_expressions-high.
APPEND ls_expressions TO li_expressions.
ls_free_select-expr_tab = li_expressions.
APPEND ls_free_select TO li_free_select.
CLEAR ls_expressions.
REFRESH li_expressions.
ENDIF. " IF i_periods-poper
SUBMIT rfitemgl WITH SELECTION-TABLE li_seltab
WITH FREE SELECTIONS li_free_select
AND RETURN.
ENDIF. " IF SY-SUBRC EQ 0
ENDFORM. " F_SUBMIT_REPORT
*&----
*
*& Form F_CHECK_AUTHORITY_GROUPS
*&----
*
To check Authorization for GL account
*----
*
No interface parameters are required
*----
*
FORM f_check_authority_groups.
Table for Authorization Group
DATA: li_begru TYPE STANDARD TABLE OF
begru WITH HEADER LINE.
SELECT begru " Authorization Group
FROM skb1
INTO TABLE li_begru
WHERE bukrs IN s_bukrs
AND saknr IN s_racct
AND begru NE space.
IF sy-subrc EQ 0.
SORT li_begru.
DELETE ADJACENT DUPLICATES FROM li_begru.
AUTHORITY-CHECK OBJECT 'F_BKPF_BES'
ID 'BRGRU' FIELD li_begru
ID 'ACTVT' FIELD '03'.
ENDIF. " IF SY-SUBRC EQ 0
ENDFORM. " F_CHECK_AUTHORITY_GROUPS
*&----
*
*& Form F_VALIDATE_RVERS
*&----
*
Validate Version
*----
*
No interface parameters are required
*----
*
FORM f_validate_rvers.
DATA:
lv_rvers LIKE t894-rvers. " Version
SELECT rvers " Version
FROM t894
UP TO 1 ROWS
INTO lv_rvers
WHERE rvers IN s_rvers.
ENDSELECT. " SELECT RVERS
IF sy-subrc NE 0.
CLEAR: sscrfields.
MESSAGE e506(0u).
ENDIF. " IF SY-SUBRC NE 0
ENDFORM. " F_VALIDATE_RVERS
*&----
*
*& Form F_VALIDATE_BUKRS
*&----
*
Validate Company code
*----
*
No interface parameters are required
*----
*
FORM f_validate_bukrs.
DATA:
lv_bukrs LIKE t001-bukrs. " Company Code
SELECT bukrs " Company Code
FROM t001
UP TO 1 ROWS
INTO lv_bukrs
WHERE bukrs IN s_bukrs.
ENDSELECT. " SELECT BUKRS
IF sy-subrc NE 0.
CLEAR: sscrfields.
MESSAGE e603(64).
ENDIF. " IF SY-SUBRC NE 0
ENDFORM. " F_VALIDATE_BUKRS
*&----
*
*& Form F_VALIDATE_GLACCOUNT
*&----
*
Validate GL Account
*----
*
No interface parameters are required
*----
*
FORM f_validate_racct.
DATA:
lv_saknr LIKE ska1-saknr. " GL Account
SELECT saknr " GL Account
FROM ska1
UP TO 1 ROWS
INTO lv_saknr
WHERE saknr IN s_racct.
ENDSELECT. " SELECT SAKNR
IF sy-subrc NE 0.
CLEAR: sscrfields.
MESSAGE e751(5b) WITH s_racct.
ENDIF. " IF SY-SUBRC NE 0
ENDFORM. " F_VALIDATE_RACCT
*&----
*
*& Form F_VALIDATE_RBUSA
*&----
*
Validate Business Area
*----
*
No interface parameters are required
*----
*
FORM f_validate_rbusa.
DATA:
lv_gsber LIKE tgsb-gsber. " Business Area
SELECT gsber " Business Area
FROM tgsb
UP TO 1 ROWS
INTO lv_gsber
WHERE gsber IN s_rbusa.
ENDSELECT. " SELECT GSBER
IF sy-subrc NE 0.
CLEAR: sscrfields.
MESSAGE e068(ay) WITH s_rbusa .
ENDIF. " IF SY-SUBRC NE 0
ENDFORM. " F_VALIDATE_RBUSA
*&----
*
*& Form F_VALIDATE_VARI
*&----
*
Validate Variant
*----
*
No interface parameters are required
*----
*
FORM f_validate_vari.
Selection screen fields
wa_variant-log_group = log_grp.
IF log_grp NE 'pc10'.
Get default variant
wa_xvariant = wa_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = v_save
CHANGING
cs_variant = wa_xvariant
EXCEPTIONS
not_found = 2.
IF sy-subrc EQ 0.
p_vari = wa_xvariant-variant.
ENDIF. " IF SY-SUBRC EQ 0
ENDIF. " IF LOG_GRP NE 'PC10'
Check for Variant existance
IF NOT p_vari IS INITIAL.
MOVE wa_variant TO wa_xvariant.
MOVE p_vari TO wa_xvariant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = v_save
CHANGING
cs_variant = wa_xvariant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc EQ 0.
wa_variant = wa_xvariant.
varname = wa_variant-text.
ELSE.
MESSAGE e017(0k).
ENDIF. " IF SY-SUBRC EQ 0
ELSE.
varname = ''.
ENDIF. " IF NOT P_VARI IS INITIAL
ENDFORM. " F_VALIDATE_VARI
*&----
*
*& Form F_FETCH_YEARTOT
*&----
*
Calculate Company code and yearwise totals
*----
*
No interface parameters are required
*----
*
FORM f_fetch_yeartot.
DATA:
Local variables
lv_glt0ksl LIKE glt0-ksl01, " Amount in Group Currency
lv_glt0hsl LIKE glt0-hsl01, " Amount in Company code Currency
lv_glt0tsl LIKE glt0-tsl01. " Amount in Transaction Currency
DATA:
Group Currency
lv_kslvt LIKE glt0-kslvt, " Group amt
lv_ksl01 LIKE glt0-ksl01, " Group amt01
lv_ksl02 LIKE glt0-ksl02, " Group amt02
lv_ksl03 LIKE glt0-ksl03, " Group amt03
lv_ksl04 LIKE glt0-ksl04, " Group amt04
lv_ksl05 LIKE glt0-ksl05, " Group amt05
lv_ksl06 LIKE glt0-ksl06, " Group amt06
lv_ksl07 LIKE glt0-ksl07, " Group amt07
lv_ksl08 LIKE glt0-ksl08, " Group amt08
lv_ksl09 LIKE glt0-ksl09, " Group amt09
lv_ksl10 LIKE glt0-ksl10, " Group amt10
lv_ksl11 LIKE glt0-ksl11, " Group amt11
lv_ksl12 LIKE glt0-ksl12, " Group amt12
lv_ksl13 LIKE glt0-ksl13, " Group amt13
lv_ksl14 LIKE glt0-ksl14, " Group amt14
lv_ksl15 LIKE glt0-ksl15, " Group amt15
lv_ksl16 LIKE glt0-ksl16, " Group amt16
Transaction Currency
lv_tslvt LIKE glt0-tslvt, " Trans amt
lv_tsl01 LIKE glt0-tsl01, " Trans amt01
lv_tsl02 LIKE glt0-tsl02, " Trans amt02
lv_tsl03 LIKE glt0-tsl03, " Trans amt03
lv_tsl04 LIKE glt0-tsl04, " Trans amt04
lv_tsl05 LIKE glt0-tsl05, " Trans amt05
lv_tsl06 LIKE glt0-tsl06, " Trans amt06
lv_tsl07 LIKE glt0-tsl07, " Trans amt07
lv_tsl08 LIKE glt0-tsl08, " Trans amt08
lv_tsl09 LIKE glt0-tsl09, " Trans amt09
lv_tsl10 LIKE glt0-tsl10, " Trans amt10
lv_tsl11 LIKE glt0-tsl11, " Trans amt11
lv_tsl12 LIKE glt0-tsl12, " Trans amt12
lv_tsl13 LIKE glt0-tsl13, " Trans amt13
lv_tsl14 LIKE glt0-tsl14, " Trans amt14
lv_tsl15 LIKE glt0-tsl15, " Trans amt15
lv_tsl16 LIKE glt0-tsl16, " Trans amt16
Company Code Currency
lv_hslvt LIKE glt0-hslvt, " Local amt
lv_hsl01 LIKE glt0-hsl01, " Local amt01
lv_hsl02 LIKE glt0-hsl02, " Local amt02
lv_hsl03 LIKE glt0-hsl03, " Local amt03
lv_hsl04 LIKE glt0-hsl04, " Local amt04
lv_hsl05 LIKE glt0-hsl05, " Local amt05
lv_hsl06 LIKE glt0-hsl06, " Local amt06
lv_hsl07 LIKE glt0-hsl07, " Local amt07
lv_hsl08 LIKE glt0-hsl08, " Local amt08
lv_hsl09 LIKE glt0-hsl09, " Local amt09
lv_hsl10 LIKE glt0-hsl10, " Local amt10
lv_hsl11 LIKE glt0-hsl11, " Local amt11
lv_hsl12 LIKE glt0-hsl12, " Local amt12
lv_hsl13 LIKE glt0-hsl13, " Local amt13
lv_hsl14 LIKE glt0-hsl14, " Local amt14
lv_hsl15 LIKE glt0-hsl15, " Local amt15
lv_hsl16 LIKE glt0-hsl16. " Local amt16
REFRESH i_glt0temp1.
SORT i_glt0 BY busctr accno t_curr ccode fyear.
LOOP AT i_glt0.
MOVE-CORRESPONDING i_glt0 TO i_glt0temp1.
Totals in Transaction Currency
lv_tslvt = lv_tslvt + i_glt0-tslvt.
lv_tsl01 = lv_tsl01 + i_glt0-tsl01.
lv_tsl02 = lv_tsl02 + i_glt0-tsl02.
lv_tsl03 = lv_tsl03 + i_glt0-tsl03.
lv_tsl04 = lv_tsl04 + i_glt0-tsl04.
lv_tsl05 = lv_tsl05 + i_glt0-tsl05.
lv_tsl06 = lv_tsl06 + i_glt0-tsl06.
lv_tsl07 = lv_tsl07 + i_glt0-tsl07.
lv_tsl08 = lv_tsl08 + i_glt0-tsl08.
lv_tsl09 = lv_tsl09 + i_glt0-tsl09.
lv_tsl10 = lv_tsl10 + i_glt0-tsl10.
lv_tsl11 = lv_tsl11 + i_glt0-tsl11.
lv_tsl12 = lv_tsl12 + i_glt0-tsl12.
lv_tsl13 = lv_tsl13 + i_glt0-tsl13.
lv_tsl14 = lv_tsl14 + i_glt0-tsl14.
lv_tsl15 = lv_tsl15 + i_glt0-tsl15.
lv_tsl16 = lv_tsl16 + i_glt0-tsl16.
Totals in Local Currency
lv_hslvt = lv_hslvt + i_glt0-hslvt.
lv_hsl01 = lv_hsl01 + i_glt0-hsl01.
lv_hsl02 = lv_hsl02 + i_glt0-hsl02.
lv_hsl03 = lv_hsl03 + i_glt0-hsl03.
lv_hsl04 = lv_hsl04 + i_glt0-hsl04.
lv_hsl05 = lv_hsl05 + i_glt0-hsl05.
lv_hsl06 = lv_hsl06 + i_glt0-hsl06.
lv_hsl07 = lv_hsl07 + i_glt0-hsl07.
lv_hsl08 = lv_hsl08 + i_glt0-hsl08.
lv_hsl09 = lv_hsl09 + i_glt0-hsl09.
lv_hsl10 = lv_hsl10 + i_glt0-hsl10.
lv_hsl11 = lv_hsl11 + i_glt0-hsl11.
lv_hsl12 = lv_hsl12 + i_glt0-hsl12.
lv_hsl13 = lv_hsl13 + i_glt0-hsl13.
lv_hsl14 = lv_hsl14 + i_glt0-hsl14.
lv_hsl15 = lv_hsl15 + i_glt0-hsl15.
lv_hsl16 = lv_hsl16 + i_glt0-hsl16.
Totals in Group cirrency
lv_kslvt = lv_kslvt + i_glt0-kslvt.
lv_ksl01 = lv_ksl01 + i_glt0-ksl01.
lv_ksl02 = lv_ksl02 + i_glt0-ksl02.
lv_ksl03 = lv_ksl03 + i_glt0-ksl03.
lv_ksl04 = lv_ksl04 + i_glt0-ksl04.
lv_ksl05 = lv_ksl05 + i_glt0-ksl05.
lv_ksl06 = lv_ksl06 + i_glt0-ksl06.
lv_ksl07 = lv_ksl07 + i_glt0-ksl07.
lv_ksl08 = lv_ksl08 + i_glt0-ksl08.
lv_ksl09 = lv_ksl09 + i_glt0-ksl09.
lv_ksl10 = lv_ksl10 + i_glt0-ksl10.
lv_ksl11 = lv_ksl11 + i_glt0-ksl11.
lv_ksl12 = lv_ksl12 + i_glt0-ksl12.
lv_ksl13 = lv_ksl13 + i_glt0-ksl13.
lv_ksl14 = lv_ksl14 + i_glt0-ksl14.
lv_ksl15 = lv_ksl15 + i_glt0-ksl15.
lv_ksl16 = lv_ksl16 + i_glt0-ksl16.
Totals Amount in Group,Comp code, Trans
lv_glt0ksl = lv_glt0ksl + i_glt0-ksl.
lv_glt0hsl = lv_glt0hsl + i_glt0-hsl.
lv_glt0tsl = lv_glt0tsl + i_glt0-tsl.
AT END OF fyear.
MOVE i_glt0-busctr TO i_glt0temp1-busctr.
MOVE i_glt0-accno TO i_glt0temp1-accno.
MOVE i_glt0-ccode TO i_glt0temp1-ccode.
MOVE i_glt0-fyear TO i_glt0temp1-fyear.
MOVE lv_glt0ksl TO i_glt0temp1-ksl.
MOVE lv_glt0hsl TO i_glt0temp1-hsl.
MOVE lv_glt0tsl TO i_glt0temp1-tsl.
MOVE lv_kslvt TO i_glt0temp1-kslvt.
MOVE lv_ksl01 TO i_glt0temp1-ksl01.
MOVE lv_ksl02 TO i_glt0temp1-ksl02.
MOVE lv_ksl03 TO i_glt0temp1-ksl03.
MOVE lv_ksl04 TO i_glt0temp1-ksl04.
MOVE lv_ksl05 TO i_glt0temp1-ksl05.
MOVE lv_ksl06 TO i_glt0temp1-ksl06.
MOVE lv_ksl07 TO i_glt0temp1-ksl07.
MOVE lv_ksl08 TO i_glt0temp1-ksl08.
MOVE lv_ksl09 TO i_glt0temp1-ksl09.
MOVE lv_ksl10 TO i_glt0temp1-ksl10.
MOVE lv_ksl11 TO i_glt0temp1-ksl11.
MOVE lv_ksl12 TO i_glt0temp1-ksl12.
MOVE lv_ksl13 TO i_glt0temp1-ksl13.
MOVE lv_ksl14 TO i_glt0temp1-ksl14.
MOVE lv_ksl15 TO i_glt0temp1-ksl15.
MOVE lv_ksl16 TO i_glt0temp1-ksl16.
MOVE lv_hslvt TO i_glt0temp1-hslvt.
MOVE lv_hsl01 TO i_glt0temp1-hsl01.
MOVE lv_hsl02 TO i_glt0temp1-hsl02.
MOVE lv_hsl03 TO i_glt0temp1-hsl03.
MOVE lv_hsl04 TO i_glt0temp1-hsl04.
MOVE lv_hsl05 TO i_glt0temp1-hsl05.
MOVE lv_hsl06 TO i_glt0temp1-hsl06.
MOVE lv_hsl07 TO i_glt0temp1-hsl07.
MOVE lv_hsl08 TO i_glt0temp1-hsl08.
MOVE lv_hsl09 TO i_glt0temp1-hsl09.
MOVE lv_hsl10 TO i_glt0temp1-hsl10.
MOVE lv_hsl11 TO i_glt0temp1-hsl11.
MOVE lv_hsl12 TO i_glt0temp1-hsl12.
MOVE lv_hsl13 TO i_glt0temp1-hsl13.
MOVE lv_hsl14 TO i_glt0temp1-hsl14.
MOVE lv_hsl15 TO i_glt0temp1-hsl15.
MOVE lv_hsl16 TO i_glt0temp1-hsl16.
MOVE lv_tslvt TO i_glt0temp1-tslvt.
MOVE lv_tsl01 TO i_glt0temp1-tsl01.
MOVE lv_tsl02 TO i_glt0temp1-tsl02.
MOVE lv_tsl03 TO i_glt0temp1-tsl03.
MOVE lv_tsl04 TO i_glt0temp1-tsl04.
MOVE lv_tsl05 TO i_glt0temp1-tsl05.
MOVE lv_tsl06 TO i_glt0temp1-tsl06.
MOVE lv_tsl07 TO i_glt0temp1-tsl07.
MOVE lv_tsl08 TO i_glt0temp1-tsl08.
MOVE lv_tsl09 TO i_glt0temp1-tsl09.
MOVE lv_tsl10 TO i_glt0temp1-tsl10.
MOVE lv_tsl11 TO i_glt0temp1-tsl11.
MOVE lv_tsl12 TO i_glt0temp1-tsl12.
MOVE lv_tsl13 TO i_glt0temp1-tsl13.
MOVE lv_tsl14 TO i_glt0temp1-tsl14.
MOVE lv_tsl15 TO i_glt0temp1-tsl15.
MOVE lv_tsl16 TO i_glt0temp1-tsl16.
APPEND i_glt0temp1.
CLEAR: i_glt0temp1,lv_glt0ksl,lv_glt0hsl,lv_glt0tsl,
lv_kslvt,lv_tslvt,lv_hslvt,
lv_ksl01,lv_ksl02,lv_ksl03,lv_ksl04,
lv_ksl05,lv_ksl06,lv_ksl07,lv_ksl08,
lv_ksl09,lv_ksl10,lv_ksl11,lv_ksl12,
lv_ksl13,lv_ksl14,lv_ksl15,lv_ksl16,
lv_tsl01,lv_tsl02,lv_tsl03,lv_tsl04,
lv_tsl05,lv_tsl06,lv_tsl07,lv_tsl08,
lv_tsl09,lv_tsl10,lv_tsl11,lv_tsl12,
lv_tsl13,lv_tsl14,lv_tsl15,lv_tsl16,
lv_hsl01,lv_hsl02,lv_hsl03,lv_hsl04,
lv_hsl05,lv_hsl06,lv_hsl07,lv_hsl08,
lv_hsl09,lv_hsl10,lv_hsl11,lv_hsl12,
lv_hsl13,lv_hsl14,lv_hsl15,lv_hsl16.
ENDAT. " AT END OF FYEAR
AT END OF ccode.
MOVE i_glt0-busctr TO i_altkt-busctr.
MOVE i_glt0-accno TO i_altkt-accno.
MOVE i_glt0-ccode TO i_altkt-ccode.
READ TABLE i_skb1 WITH KEY bukrs = i_glt0-ccode
saknr = i_glt0-accno BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE i_skb1-altkt TO i_altkt-altkt.
ENDIF. " IF SY-SUBRC EQ 0
APPEND i_altkt.
CLEAR i_altkt.
ENDAT. " AT END OF CCODE
ENDLOOP. " LOOP AT I_glt0
SORT i_altkt BY busctr accno ccode altkt.
DELETE ADJACENT DUPLICATES FROM i_altkt COMPARING
busctr accno ccode altkt.
ENDFORM. " F_FETCH_YEARTOT
*&----
*
*& Form F_FETCH_BALACC
*&----
*
Get Balance Sheet GL Accounts
*----
*
No interface parameters are required
*----
*
FORM f_fetch_balacc.
Temporary table for Balance Sheet accs
DATA: li_glt0 LIKE i_glt0 OCCURS 0
WITH HEADER LINE.
li_glt0[] = i_glt0[].
SORT li_glt0 BY racct.
DELETE ADJACENT DUPLICATES FROM li_glt0
COMPARING racct.
REFRESH i_ska1.
Get Balance Sheet Accounts
SELECT saknr " GL Account
FROM ska1
INTO TABLE i_ska1
FOR ALL ENTRIES IN li_glt0
WHERE saknr EQ li_glt0-racct
AND xbilk EQ 'X'.
IF sy-subrc EQ 0.
SORT i_ska1 BY saknr.
DELETE ADJACENT DUPLICATES FROM i_ska1
COMPARING saknr.
ENDIF. " IF SY-SUBRC EQ 0
ENDFORM. " F_FETCH_BALACC