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

interactive report issue

Former Member
0 Likes
481

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.

1 REPLY 1
Read only

Former Member
0 Likes
352

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