‎2007 Nov 23 6:24 AM
hi sdn
im using hirarachy alv display
FORM alv_disp TABLES p_t_header LIKE i_header
p_t_item LIKE i_item
p_t_fieldcat LIKE t_fieldcat
USING p_x_print TYPE slis_print_alv.
DATA : l_repid TYPE sy-repid.
l_repid = sy-repid.
t_keyinfo-header01 = 'vbeln'.
t_keyinfo-item01 = 'matnr'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = l_repid
it_fieldcat = p_t_fieldcat[]
i_default = 'X'
i_tabname_header = 'i_header'
i_tabname_item = 'i_item'
is_keyinfo = t_keyinfo
is_print = p_x_print
TABLES
t_outtab_header = p_t_header[]
t_outtab_item = p_t_item[].
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " alv_disp
in that not display the values
in p_t_header[] p_t_item[] have also values is there
but not displayed values .
code is every thing fine
‎2007 Nov 23 6:27 AM
‎2007 Nov 23 6:27 AM
Hi
see the sample code for Hierarchial display and do accordingly
REPORT ZBHALV_GRID.
TABLES:LFA1,EKKO.
SELECT-OPTIONS:LIFNR FOR LFA1-LIFNR.
DATA:BEGIN OF ITAB OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
LAND1 LIKE LFA1-LAND1,
ORT01 LIKE LFA1-ORT01,
REGIO LIKE LFA1-REGIO,
SORTL LIKE LFA1-SORTL,
END OF ITAB.
*DATA:BEGIN OF JTAB OCCURS 0,
LIFNR LIKE EKKO-LIFNR,
EBELN LIKE EKKO-EBELN,
BUKRS LIKE EKKO-BUKRS,
BSTYP LIKE EKKO-BSTYP,
BSART LIKE EKKO-BSART,
*END OF JTAB.
DATA:JTAB LIKE EKKO OCCURS 0 WITH HEADER LINE.
SELECT * FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE LIFNR
IN LIFNR.
SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE JTAB WHERE LIFNR
IN LIFNR.
TYPE-POOLS:SLIS.
DATA:FCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA:KINFO TYPE SLIS_KEYINFO_ALV.
DATA:LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA:EVE TYPE SLIS_T_EVENT WITH HEADER LINE.
DATA:HEAD TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
LAYOUT-ZEBRA = 'X'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT-WINDOW_TITLEBAR = 'VENDORS AND PURCHASE DOCCUMENTS
DETAILS'.
LAYOUT-numc_sum = 'X'.
KINFO-HEADER01 = 'LIFNR'.
KINFO-ITEM01 = 'LIFNR'.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = EVE[]
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE EVE WITH KEY NAME = 'TOP_OF_PAGE'.
EVE-FORM = 'TOPOFPAGE'.
MODIFY EVE TRANSPORTING FORM WHERE NAME = 'TOP_OF_PAGE'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = FCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 5
I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 120
I_SCREEN_END_LINE = 25
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = EVE[]
IT_EVENT_EXIT =
I_TABNAME_HEADER = 'ITAB'
I_TABNAME_ITEM = 'JTAB'
I_STRUCTURE_NAME_HEADER = 'LFA1'
I_STRUCTURE_NAME_ITEM = 'EKKO'
IS_KEYINFO = KINFO
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB_HEADER = ITAB[]
T_OUTTAB_ITEM = JTAB[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM TOPOFPAGE.
REFRESH HEAD.
HEAD-TYP = 'H'.
HEAD-INFO = 'VENDORS & PURCHASE DOCC. DETAILS'.
APPEND HEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEAD[]
I_LOGO = ' '
I_END_OF_LIST_GRID =
.
ENDFORM.
Regards
Anji
‎2007 Nov 23 6:30 AM
Hi,
Please check my code below. It also uses hierarchical ALV.
P.S. Please award points if it helps...
[code]
&----
*& Report ZFI_REP_DISBURSE_SUM
*&
*& PROGRAM TYPE : Report
*& RICEF ID : R-159
*& TITLE : Disbursement Summary Report(New version)
*& SAP Module : FI
*& CREATION DATE : 07/20/2007
*& AUTHOR : Aris Hidalgo
*& DESIGNER : Aris Hidalgo
&----
*& DESCRIPTION : Disbursement Summary Report
*& : NOTE: Backed up the original version to
*& : ZFI_REP_DISBURSE_SUM_BACKUP
&----
$*********************************************************************
*$ CHANGE HISTORY
*$----
*$ DATE | T-Num | Description | Reference
| | |
$*********************************************************************
REPORT zfi_rep_disburse_sum
NO STANDARD PAGE HEADING
LINE-SIZE 142
MESSAGE-ID zfi.
----
SELECTION-SCREEN *
----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE bsak-bukrs OBLIGATORY,
p_gjahr TYPE bkpf-gjahr OBLIGATORY,
p_monat TYPE bkpf-monat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
----
CLASS lcl_data_def DEFINITION
----
*
----
CLASS lcl_data_def DEFINITION ABSTRACT.
PUBLIC SECTION.
TYPES: BEGIN OF t_payr,
zbukr TYPE payr-zbukr,
vblnr TYPE payr-vblnr,
lifnr TYPE payr-lifnr,
gjahr TYPE payr-gjahr,
zaldt TYPE payr-zaldt,
chect TYPE payr-chect,
checf TYPE payr-checf,
priti TYPE payr-priti,
hbkid TYPE payr-hbkid,
hktid TYPE payr-hktid,
rzawe TYPE payr-hktid,
END OF t_payr.
TYPES: BEGIN OF t_bsak,
bukrs TYPE bsak-bukrs,
gjahr TYPE bsak-gjahr,
belnr TYPE bsak-belnr,
monat TYPE bsak-monat,
shkzg TYPE bsak-shkzg,
blart TYPE bsak-blart,
buzei TYPE bsak-buzei,
lifnr TYPE bsak-lifnr,
dmbtr TYPE bsak-dmbtr,
bschl TYPE bsak-bschl,
augbl TYPE bsak-augbl,
auggj TYPE bsak-auggj,
END OF t_bsak.
TYPES: BEGIN OF t_bsis,
bukrs TYPE bsis-bukrs,
belnr TYPE bsis-belnr,
gjahr TYPE bsis-gjahr,
monat TYPE bsis-monat,
hkont TYPE bsis-hkont,
buzei TYPE bsis-buzei,
blart TYPE bsis-blart,
shkzg TYPE bsis-shkzg,
dmbtr TYPE bsis-dmbtr,
bschl TYPE bsis-bschl,
augbl TYPE bsis-augbl,
auggj TYPE bsis-auggj,
END OF t_bsis.
TYPES: BEGIN OF t_output,
sort_order TYPE i,
header(35) TYPE c,
description(35) TYPE c,
blart TYPE bsak-blart,
last_year TYPE bsak-dmbtr,
this_year TYPE bsak-dmbtr,
percent1 TYPE prozab,
cum_last_year TYPE bsak-dmbtr,
cum_this_year TYPE bsak-dmbtr,
percent2 TYPE prozab,
END OF t_output.
TYPES: BEGIN OF t_text,
sort_order TYPE i,
header(35) TYPE c,
description(35) TYPE c,
blart TYPE bsak-blart,
END OF t_text.
TYPES: BEGIN OF t_header,
header(50) TYPE c,
curr_month(42) TYPE c,
cumulative(30) TYPE c,
expand(1) TYPE c,
END OF t_header.
DATA: gt_payr TYPE SORTED TABLE OF t_payr
WITH NON-UNIQUE KEY zbukr vblnr lifnr,
gt_bsak TYPE STANDARD TABLE OF t_bsak,
gt_payments TYPE STANDARD TABLE OF t_bsak,
wa_payments LIKE LINE OF gt_payments,
gt_payments2 TYPE SORTED TABLE OF t_bsak
WITH NON-UNIQUE KEY bukrs gjahr belnr,
gt_payments3 TYPE SORTED TABLE OF t_bsak
WITH NON-UNIQUE KEY bukrs gjahr belnr,
gt_bsis TYPE STANDARD TABLE OF t_bsis,
gt_bsis_dum TYPE SORTED TABLE OF t_bsis
WITH NON-UNIQUE KEY bukrs belnr gjahr,
wa_bsis LIKE LINE OF gt_bsis,
gt_bsas TYPE STANDARD TABLE OF t_bsis,
gt_output TYPE STANDARD TABLE OF t_output,
wa_output LIKE LINE OF gt_output,
gt_text TYPE STANDARD TABLE OF t_text,
wa_text LIKE LINE OF gt_text,
gt_header TYPE STANDARD TABLE OF t_header,
wa_header LIKE LINE OF gt_header,
lr_blart TYPE RANGE OF bsak-blart,
wa_blart LIKE LINE OF lr_blart.
ENDCLASS. "lcl_data_def DEFINITION
CLASS lcl_handle_events_hierseq DEFINITION DEFERRED.
----
CLASS lcl_get_data DEFINITION
----
*
----
CLASS lcl_get_data DEFINITION INHERITING FROM lcl_data_def.
PUBLIC SECTION.
METHODS: get_payment_details,
get_additional_data,
process_data,
move_to_output_table
IMPORTING
im_blart TYPE bsak-blart
im_gjahr TYPE bsak-gjahr
im_monat TYPE bsak-monat
im_dmbtr TYPE bsak-dmbtr,
check_cutting_routine
IMPORTING
im_bukrs TYPE bsak-bukrs
im_belnr TYPE bsak-belnr
im_gjahr TYPE bsak-gjahr
im_blart TYPE bsak-blart
EXPORTING
ex_flag TYPE flag,
display_data,
fill_text_table.
PRIVATE SECTION.
DATA: lv_year TYPE payr-gjahr,
lv_flag TYPE flag,
lr_augdt TYPE RANGE OF bsak-augdt,
lr_lifnr TYPE RANGE OF bsak-lifnr.
CONSTANTS: lc_kb TYPE bsak-blart VALUE 'KB',
lc_kd TYPE bsak-blart VALUE 'KD',
lc_k3 TYPE bsak-blart VALUE 'K3',
lc_k4 TYPE bsak-blart VALUE 'K4',
lc_k5 TYPE bsak-blart VALUE 'K5',
lc_k6 TYPE bsak-blart VALUE 'K6',
lc_py TYPE bsak-blart VALUE 'PY',
lc_pf TYPE bsak-blart VALUE 'PF',
lc_pq TYPE bsak-blart VALUE 'PQ',
lc_pj TYPE bsak-blart VALUE 'PJ',
lc_pm TYPE bsak-blart VALUE 'PM',
lc_pt TYPE bsak-blart VALUE 'PT',
lc_p0 TYPE bsak-blart VALUE 'P0',
lc_re TYPE bsak-blart VALUE 'RE',
lc_ps TYPE bsak-blart VALUE 'PS',
lc_pp TYPE bsak-blart VALUE 'PP',
lc_kp TYPE bsak-blart VALUE 'KP',
lc_pu TYPE bsak-blart VALUE 'PU',
lc_pd TYPE bsak-blart VALUE 'PD',
lc_pe TYPE bsak-blart VALUE 'PE',
lc_su TYPE bsak-blart VALUE 'SU',
lc_pc TYPE bsak-blart VALUE 'PC',
lc_p2 TYPE bsak-blart VALUE 'P2',
lc_po TYPE bsak-blart VALUE 'PO',
lc_pw TYPE bsak-blart VALUE 'PW',
lc_pv TYPE bsak-blart VALUE 'PV',
lc_p7 TYPE bsak-blart VALUE 'P7',
lc_pa TYPE bsak-blart VALUE 'PA',
lc_px TYPE bsis-blart VALUE 'PX',
lc_x0 TYPE bsis-blart VALUE 'X0', "Capital Expenditures(CAPEX)
lc_x1 TYPE bsis-blart VALUE 'X1', "Request of payment - Vendor
lc_x2 TYPE bsis-blart VALUE 'X2', "Logistics Fee - Diethelm
lc_x3 TYPE bsis-blart VALUE 'X3', "Logistics Fee - First Pioneer
lc_y1 TYPE bsis-blart VALUE 'Y1', "Profit Share
lc_y2 TYPE bsis-blart VALUE 'Y2', "Dividend Payments
lc_z1 TYPE bsis-blart VALUE 'Z1',
lc_z2 TYPE bsis-blart VALUE 'Z2',
lc_z3 TYPE bsis-blart VALUE 'Z3',
lc_z4 TYPE bsis-blart VALUE 'Z4',
lc_p8 TYPE bsis-blart VALUE 'P8',
lc_p9 TYPE bsis-blart VALUE 'P9',
lc_kf TYPE bsis-blart VALUE 'KF',
lc_ks TYPE bsis-blart VALUE 'KS',
lc_ko TYPE bsis-blart VALUE 'KO',
lc_km TYPE bsis-blart VALUE 'KM',
lc_kc TYPE bsis-blart VALUE 'KC',
lc_pb TYPE bsis-blart VALUE 'PB',
lc_promo TYPE bsis-blart VALUE 'P!',
lc_repair TYPE bsis-blart VALUE 'P@',
lc_shell TYPE bsis-blart VALUE 'P$',
lc_supplies TYPE bsis-blart VALUE 'P^',
lc_p5 TYPE bsis-blart VALUE 'P5',
lc_ph TYPE bsis-blart VALUE 'PH',
lc_p4 TYPE bsis-blart VALUE 'P4',
lc_p6 TYPE bsis-blart VALUE 'P6',
lc_p3 TYPE bsis-blart VALUE 'P3',
lc_pn TYPE bsis-blart VALUE 'PN',
lc_capex_new TYPE bsis-blart VALUE 'P+'.
CONSTANTS: lc_0020000800 TYPE bsis-hkont VALUE '0020000800',
lc_0060000653 TYPE bsis-hkont VALUE '0060000653',
lc_0020000660 TYPE bsis-hkont VALUE '0020000660',
lc_0020000770 TYPE bsis-hkont VALUE '0020000770',
lc_0020000650 TYPE bsis-hkont VALUE '0020000650',
lc_0020000651 TYPE bsis-hkont VALUE '0020000651',
lc_0020000200 TYPE bsis-hkont VALUE '0020000200',
lc_0020000320 TYPE bsis-hkont VALUE '0020000320',
lc_0060001100 TYPE bsis-hkont VALUE '0060001100',
lc_0060001114 TYPE bsis-hkont VALUE '0060001114',
lc_0070000001 TYPE bsis-hkont VALUE '0070000001',
lc_0070000024 TYPE bsis-hkont VALUE '0070000024'.
CONSTANTS: lc_8000000525 TYPE lfa1-lifnr VALUE '8000000525',
lc_8000001015 TYPE lfa1-lifnr VALUE '8000001015',
lc_debit TYPE bsak-shkzg VALUE 'S',
lc_31 TYPE bsak-bschl VALUE '31'.
DATA: o_lcl_hierseq TYPE REF TO cl_salv_hierseq_table,
o_lcl_events_hierseq TYPE REF TO lcl_handle_events_hierseq.
DATA:lt_binding TYPE salv_t_hierseq_binding,
ls_binding TYPE salv_s_hierseq_binding,
lcl_functions TYPE REF TO cl_salv_functions_list,
lcl_columns TYPE REF TO cl_salv_columns_hierseq,
lcl_column TYPE REF TO cl_salv_column_hierseq,
lcl_level TYPE REF TO cl_salv_hierseq_level,
lcl_events TYPE REF TO cl_salv_events_hierseq,
lcl_aggregations TYPE REF TO cl_salv_aggregations,
lcl_sorts TYPE REF TO cl_salv_sorts,
lcl_display TYPE REF TO cl_salv_display_settings.
ENDCLASS. "lcl_get_data DEFINITION
----
CLASS lcl_handle_events_hierseq DEFINITION
----
*
----
CLASS lcl_handle_events_hierseq DEFINITION INHERITING FROM lcl_get_data.
PUBLIC SECTION.
METHODS: on_top_of_page FOR EVENT top_of_page OF cl_salv_events_hierseq
IMPORTING
r_top_of_page page table_index.
PRIVATE SECTION.
DATA: lr_content TYPE REF TO cl_salv_form_element,
lr_grid TYPE REF TO cl_salv_form_layout_grid,
lr_grid_1 TYPE REF TO cl_salv_form_layout_grid,
lr_label TYPE REF TO cl_salv_form_label, "#EC NEEDED
lr_text TYPE REF TO cl_salv_form_text, "#EC NEEDED
l_text TYPE string.
ENDCLASS. "lcl_handle_events_hierseq DEFINITION
----
CLASS lcl_get_data IMPLEMENTATION
----
*
----
CLASS lcl_get_data IMPLEMENTATION.
METHOD get_payment_details
METHOD get_payment_details.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-p01.
Get previous year
lv_year = p_gjahr - 1.
Get records from PAYR
SELECT zbukr vblnr lifnr gjahr
zaldt chect checf priti
hbkid hktid rzawe
FROM payr
INTO TABLE gt_payr
WHERE zbukr = p_bukrs
AND gjahr IN (lv_year, p_gjahr).
IF NOT gt_payr[] IS INITIAL.
Get records from BSAK
SELECT bukrs gjahr belnr
monat shkzg blart
buzei lifnr dmbtr
bschl augbl auggj
FROM bsak
INTO TABLE gt_bsak
FOR ALL ENTRIES IN gt_payr
WHERE lifnr = gt_payr-lifnr
AND bukrs = gt_payr-zbukr
AND augdt IN lr_augdt
AND augbl = gt_payr-vblnr.
ENDIF.
IF NOT gt_bsak[] IS INITIAL.
gt_payments2[] = gt_bsak[].
DELETE gt_payments2 WHERE blart = 'KZ'
OR blart = 'ZP'.
gt_payments[] = gt_bsak[].
ENDIF.
IF NOT gt_payments[] IS INITIAL.
CALL METHOD me->get_additional_data.
CALL METHOD me->process_data.
ELSE.
MESSAGE i000 WITH text-057.
LEAVE LIST-PROCESSING.
ENDIF.
ENDMETHOD. "get_payment_details
METHOD get_additional_data
METHOD get_additional_data.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-p01.
IF NOT gt_payments2[] IS INITIAL.
Get records from BSAS(Cleared items)
SELECT bukrs belnr gjahr monat
hkont buzei blart shkzg
dmbtr bschl augbl auggj
FROM bsas
INTO TABLE gt_bsis
FOR ALL ENTRIES IN gt_payments2
WHERE bukrs = gt_payments2-bukrs
AND augbl = gt_payments2-belnr
AND auggj = gt_payments2-gjahr.
DELETE gt_bsis WHERE blart <> 'KZ'
AND blart <> 'ZP'.
ENDIF.
IF NOT gt_bsis[] IS INITIAL.
Get records from BSAK
SELECT bukrs gjahr belnr
monat shkzg blart
buzei lifnr dmbtr
bschl augbl auggj
FROM bsak
INTO TABLE gt_payments3
FOR ALL ENTRIES IN gt_bsis
WHERE bukrs = gt_bsis-bukrs
AND augbl = gt_bsis-belnr
AND auggj = gt_bsis-gjahr.
APPEND LINES OF gt_payments3 TO gt_payments.
DELETE gt_payments WHERE bschl <> lc_31.
DELETE gt_payments WHERE shkzg = lc_debit.
DELETE gt_payments WHERE blart = 'KR'
OR blart = 'KZ'
OR blart = 'ZP'.
IF NOT gt_payments[] IS INITIAL.
Get records from BSIS(Open items)
SELECT bukrs belnr gjahr monat
hkont buzei blart shkzg
dmbtr bschl augbl auggj
FROM bsis
APPENDING TABLE gt_bsis
FOR ALL ENTRIES IN gt_payments
WHERE bukrs = gt_payments-bukrs
AND belnr = gt_payments-belnr
AND gjahr = gt_payments-gjahr.
Get records from BSAS(Cleared items)
SELECT bukrs belnr gjahr monat
hkont buzei blart shkzg
dmbtr bschl augbl auggj
FROM bsas
APPENDING TABLE gt_bsis
FOR ALL ENTRIES IN gt_payments
WHERE bukrs = gt_payments-bukrs
AND belnr = gt_payments-belnr
AND gjahr = gt_payments-gjahr.
ENDIF.
ENDIF.
ENDMETHOD. "get_additional_data
METHOD process_data
METHOD process_data.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-p02.
FIELD-SYMBOLS: <fs_payments> LIKE LINE OF gt_payments,
<fs_payments3> LIKE LINE OF gt_payments3,
<fs_bsis> LIKE LINE OF gt_bsis,
<fs_payr> LIKE LINE OF gt_payr.
SORT gt_payments ASCENDING BY: bukrs blart gjahr monat.
SORT gt_bsis ASCENDING BY: bukrs belnr gjahr monat hkont.
gt_bsis_dum[] = gt_bsis[].
LOOP AT gt_payments ASSIGNING <fs_payments>.
CLEAR lv_flag.
IF <fs_payments>-blart = lc_pv OR
<fs_payments>-blart = lc_p7.
Request of payment - Vendor
IF <fs_payments>-lifnr <> lc_8000000525 AND
<fs_payments>-lifnr <> lc_8000001015.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_x1
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_x1
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
Diethelm
ELSEIF <fs_payments>-lifnr = lc_8000000525.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_x2
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_x2
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
First Pioneer
ELSEIF <fs_payments>-lifnr = lc_8000001015.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_x3
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_x3
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
Profit share
ELSEIF <fs_payments>-blart = lc_su.
READ TABLE gt_bsis ASSIGNING <fs_bsis> WITH KEY bukrs = <fs_payments>-bukrs
belnr = <fs_payments>-belnr
gjahr = <fs_payments>-gjahr
monat = <fs_payments>-monat
hkont = lc_0020000800
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_y1
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_y1
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ELSE.
READ TABLE gt_bsis ASSIGNING <fs_bsis> WITH KEY bukrs = <fs_payments>-bukrs
belnr = <fs_payments>-belnr
gjahr = <fs_payments>-gjahr
monat = <fs_payments>-monat
hkont = lc_0060000653
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_y1
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_y1
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ELSE.
Dividend payments
READ TABLE gt_bsis ASSIGNING <fs_bsis> WITH KEY bukrs = <fs_payments>-bukrs
belnr = <fs_payments>-belnr
gjahr = <fs_payments>-gjahr
monat = <fs_payments>-monat
hkont = lc_0020000770
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_y2
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_y2
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
Creditable input tax
ELSEIF <fs_payments>-blart = lc_px.
READ TABLE gt_bsis ASSIGNING <fs_bsis> WITH KEY bukrs = <fs_payments>-bukrs
belnr = <fs_payments>-belnr
gjahr = <fs_payments>-gjahr
monat = <fs_payments>-monat
hkont = lc_0020000650
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_z1
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_z1
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ELSE.
READ TABLE gt_bsis ASSIGNING <fs_bsis> WITH KEY bukrs = <fs_payments>-bukrs
belnr = <fs_payments>-belnr
gjahr = <fs_payments>-gjahr
monat = <fs_payments>-monat
hkont = lc_0020000651
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_payr ASSIGNING <fs_payr> WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_z1
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_z1
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ELSE.
Withholding taxes
LOOP AT gt_bsis ASSIGNING <fs_bsis>
WHERE bukrs = <fs_payments>-bukrs
AND belnr = <fs_payments>-belnr
AND gjahr = <fs_payments>-gjahr
AND monat = <fs_payments>-monat
AND hkont BETWEEN lc_0020000200 AND lc_0020000320.
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_z2
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
MOVE 'X' TO lv_flag.
EXIT.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_z2
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
IF lv_flag = 'X'.
CONTINUE.
ELSE.
Taxes and Licenses
LOOP AT gt_bsis ASSIGNING <fs_bsis>
WHERE bukrs = <fs_payments>-bukrs
AND belnr = <fs_payments>-belnr
AND gjahr = <fs_payments>-gjahr
AND monat = <fs_payments>-monat
AND hkont BETWEEN lc_0060001100 AND lc_0060001114.
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_z3
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
MOVE 'X' TO lv_flag.
EXIT.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_z3
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
IF lv_flag = 'X'.
CONTINUE.
ELSE.
Income Tax
READ TABLE gt_bsis ASSIGNING <fs_bsis>
WITH KEY bukrs = <fs_payments>-bukrs
belnr = <fs_payments>-belnr
gjahr = <fs_payments>-gjahr
monat = <fs_payments>-monat
hkont = lc_0020000660
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_z4
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_z4
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
Capital Expenditures(CAPEX) - November 2007 onwards
ELSEIF <fs_payments>-blart = lc_capex_new.
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_x0
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_x0
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
EXIT.
ENDIF.
ENDIF.
Capital Expenditures(CAPEX) - Up to October 2007
ELSEIF <fs_payments>-blart = lc_pt OR
<fs_payments>-blart = lc_p0 OR
<fs_payments>-blart = lc_re.
LOOP AT gt_bsis ASSIGNING <fs_bsis>
WHERE bukrs = <fs_payments>-bukrs
AND belnr = <fs_payments>-belnr
AND gjahr = <fs_payments>-gjahr
AND monat = <fs_payments>-monat
AND hkont BETWEEN lc_0070000001 AND lc_0070000024.
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_x0
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
MOVE 'X' TO lv_flag.
EXIT.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_x0
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
IF lv_flag = 'X'.
CONTINUE.
ELSE.
AP - Trade(Non Production w/o PO)
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = lc_pt
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = lc_pt
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
ELSE.
Other document types
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments>-bukrs
vblnr = <fs_payments>-augbl
lifnr = <fs_payments>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = <fs_payments>-blart
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments>-dmbtr.
CONTINUE.
ELSE.
CALL METHOD me->check_cutting_routine
EXPORTING
im_bukrs = <fs_payments>-bukrs
im_belnr = <fs_payments>-belnr
im_gjahr = <fs_payments>-gjahr
im_blart = <fs_payments>-blart
IMPORTING
ex_flag = lv_flag.
IF lv_flag = 'X'.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD. "process_data
METHOD move_to_output_table
METHOD move_to_output_table.
CLEAR wa_output.
READ TABLE gt_output INTO wa_output WITH KEY blart = im_blart.
*/If document type is not yet added
IF sy-subrc <> 0.
wa_output-blart = im_blart.
Year before the user specified year
IF im_gjahr = lv_year.
IF im_monat = p_monat.
wa_output-last_year = im_dmbtr.
ENDIF.
IF im_monat <= p_monat.
ADD im_dmbtr TO wa_output-cum_last_year.
APPEND wa_output TO gt_output.
ENDIF.
CLEAR wa_output.
User specified year
ELSEIF im_gjahr = p_gjahr.
IF im_monat = p_monat.
wa_output-this_year = im_dmbtr.
ENDIF.
IF im_monat <= p_monat.
ADD im_dmbtr TO wa_output-cum_this_year.
APPEND wa_output TO gt_output.
ENDIF.
CLEAR wa_output.
ENDIF.
*/If document type has been already added
ELSEIF sy-subrc = 0.
wa_output-blart = im_blart.
Year before the user specified year
IF im_gjahr = lv_year.
IF im_monat = p_monat.
ADD im_dmbtr TO wa_output-last_year.
MODIFY TABLE gt_output FROM wa_output.
ENDIF.
IF im_monat <= p_monat.
ADD im_dmbtr TO wa_output-cum_last_year.
MODIFY TABLE gt_output FROM wa_output.
ENDIF.
CLEAR wa_output.
User specified year
ELSEIF im_gjahr = p_gjahr.
IF im_monat = p_monat.
ADD im_dmbtr TO wa_output-this_year.
MODIFY TABLE gt_output FROM wa_output.
ENDIF.
IF im_monat <= p_monat.
ADD im_dmbtr TO wa_output-cum_this_year.
MODIFY TABLE gt_output FROM wa_output.
ENDIF.
CLEAR wa_output.
ENDIF.
ENDIF.
ENDMETHOD. "move_to_output_table
METHOD check_cutting_routine
METHOD check_cutting_routine.
FIELD-SYMBOLS: <fs_payments2> LIKE LINE OF gt_payments2,
<fs_payments3> LIKE LINE OF gt_payments3,
<fs_bsis_dum> LIKE LINE OF gt_bsis_dum,
<fs_payr> LIKE LINE OF gt_payr.
READ TABLE gt_payments3 ASSIGNING <fs_payments3>
WITH TABLE KEY bukrs = im_bukrs
gjahr = im_gjahr
belnr = im_belnr.
IF sy-subrc = 0.
READ TABLE gt_bsis_dum ASSIGNING <fs_bsis_dum>
WITH TABLE KEY bukrs = <fs_payments3>-bukrs
belnr = <fs_payments3>-augbl
gjahr = <fs_payments3>-auggj.
IF sy-subrc = 0.
READ TABLE gt_payments2 ASSIGNING <fs_payments2>
WITH TABLE KEY bukrs = <fs_bsis_dum>-bukrs
gjahr = <fs_bsis_dum>-auggj
belnr = <fs_bsis_dum>-augbl.
IF sy-subrc = 0.
READ TABLE gt_payr ASSIGNING <fs_payr>
WITH TABLE KEY zbukr = <fs_payments2>-bukrs
vblnr = <fs_payments2>-augbl
lifnr = <fs_payments2>-lifnr.
IF sy-subrc = 0.
CALL METHOD move_to_output_table
EXPORTING
im_blart = im_blart
im_gjahr = <fs_payr>-zaldt+0(4)
im_monat = <fs_payr>-zaldt+4(2)
im_dmbtr = <fs_payments3>-dmbtr.
MOVE 'X' TO ex_flag.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD. "check_cutting_routine
METHOD display_data
METHOD display_data.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-p03.
DATA: lt_month_names TYPE STANDARD TABLE OF t247,
lv_month_name(30) TYPE c,
lv_month_name_short(03) TYPE c,
lv_cumulative(50) TYPE c.
FIELD-SYMBOLS: <fs_output> LIKE LINE OF gt_output,
<fs_month_names> LIKE LINE OF lt_month_names.
CALL METHOD me->fill_text_table.
SORT gt_text BY sort_order.
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
language = sy-langu
IMPORTING
RETURN_CODE =
TABLES
month_names = lt_month_names
EXCEPTIONS
month_names_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF NOT lt_month_names[] IS INITIAL.
READ TABLE lt_month_names ASSIGNING <fs_month_names> WITH KEY mnr = p_monat.
IF sy-subrc = 0.
lv_month_name_short = <fs_month_names>-ktx.
lv_month_name = <fs_month_names>-ltx.
CONCATENATE text-006 '(' lv_month_name ')' INTO lv_month_name.
READ TABLE lt_month_names ASSIGNING <fs_month_names> WITH KEY mnr = 1."#EC *
IF sy-subrc = 0.
CONCATENATE text-005 '(' <fs_month_names>-ktx '-' lv_month_name_short ')'
INTO lv_cumulative.
ENDIF.
ENDIF.
ENDIF.
LOOP AT gt_text INTO wa_text.
READ TABLE gt_output ASSIGNING <fs_output> WITH KEY blart = wa_text-blart.
IF sy-subrc = 0.
IF <fs_output>-last_year <> 0.
<fs_output>-percent1 = ( <fs_output>-this_year -
<fs_output>-last_year ) /
<fs_output>-last_year.
ENDIF.
IF <fs_output>-cum_last_year <> 0.
<fs_output>-percent2 = ( <fs_output>-cum_this_year -
<fs_output>-cum_last_year ) /
<fs_output>-cum_last_year.
ENDIF.
<fs_output>-sort_order = wa_text-sort_order.
<fs_output>-description = wa_text-description.
<fs_output>-header = wa_text-header.
ELSE.
CLEAR wa_output.
wa_output-sort_order = wa_text-sort_order.
wa_output-blart = wa_text-blart.
wa_output-description = wa_text-description.
wa_output-header = wa_text-header.
APPEND wa_output TO gt_output.
ENDIF.
CLEAR: wa_text-description, wa_text-sort_order, wa_text-blart.
MODIFY gt_text FROM wa_text.
wa_header-header = wa_text-header.
wa_header-curr_month = lv_month_name.
wa_header-cumulative = lv_cumulative.
APPEND wa_header TO gt_header.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM gt_text COMPARING header.
DELETE ADJACENT DUPLICATES FROM gt_header COMPARING header.
DELETE gt_output WHERE description IS INITIAL.
SORT gt_output BY sort_order.
DEFINE m_binding.
ls_binding-master = &1.
ls_binding-slave = &2.
append ls_binding to lt_binding.
END-OF-DEFINITION.
m_binding 'HEADER' 'HEADER'.
TRY.
cl_salv_hierseq_table=>factory(
EXPORTING
t_binding_level1_level2 = lt_binding
IMPORTING
r_hierseq = o_lcl_hierseq
CHANGING
t_table_level1 = gt_header
t_table_level2 = gt_output ).
CATCH cx_salv_data_error cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
lcl_functions = o_lcl_hierseq->get_functions( ).
Set all standard ALV functions
lcl_functions->set_all( abap_true ).
TRY.
lcl_columns = o_lcl_hierseq->get_columns( 1 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
Expand/collapse functionality
TRY.
lcl_columns->set_expand_column( 'EXPAND' ).
CATCH cx_salv_data_error. "#EC NO_HANDLER
ENDTRY.
Master header settings
TRY.
lcl_level = o_lcl_hierseq->get_level( 1 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
Slave header settings
TRY.
lcl_columns = o_lcl_hierseq->get_columns( 2 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
Optimize width of columns
lcl_columns->set_optimize( abap_true ).
Expand items by default
lcl_level->set_items_expanded( ).
lcl_events = o_lcl_hierseq->get_event( ).
Set display to striped pattern
lcl_display = o_lcl_hierseq->get_display_settings( ).
lcl_display->set_striped_pattern( cl_salv_display_settings=>true ).
*/Sort columns
TRY.
lcl_sorts = o_lcl_hierseq->get_sorts( 1 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
lcl_sorts->set_group_active( ).
TRY.
lcl_sorts->add_sort(
columnname = 'HEADER'
subtotal = abap_true ).
CATCH cx_salv_not_found cx_salv_existing cx_salv_data_error."#EC NO_HANDLER
ENDTRY.
*/Set aggregations
TRY.
lcl_aggregations = o_lcl_hierseq->get_aggregations( 2 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'LAST_YEAR' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'THIS_YEAR' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'PERCENT1' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'CUM_LAST_YEAR' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'CUM_THIS_YEAR' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
TRY.
lcl_aggregations->add_aggregation( 'PERCENT2' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing."#EC NO_HANDLER
ENDTRY.
*/Hide columns
TRY.
lcl_column ?= lcl_columns->get_column( 'HEADER' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'SORT_ORDER' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'BLART' ).
lcl_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
*/Set column names
TRY.
lcl_column ?= lcl_columns->get_column( 'DESCRIPTION' ).
lcl_column->set_long_text( text-078 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'LAST_YEAR' ).
lcl_column->set_long_text( text-007 ).
lcl_column->set_output_length( '15' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'THIS_YEAR' ).
lcl_column->set_long_text( text-008 ).
lcl_column->set_output_length( '15' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'PERCENT1' ).
lcl_column->set_medium_text( text-009 ).
lcl_column->set_long_text( text-009 ).
lcl_column->set_output_length( '12' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'CUM_LAST_YEAR' ).
lcl_column->set_long_text( text-010 ).
lcl_column->set_output_length( '15' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'CUM_THIS_YEAR' ).
lcl_column->set_long_text( text-011 ).
lcl_column->set_output_length( '15' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
TRY.
lcl_column ?= lcl_columns->get_column( 'PERCENT2' ).
lcl_column->set_medium_text( text-012 ).
lcl_column->set_long_text( text-012 ).
lcl_column->set_output_length( '12' ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
CREATE OBJECT o_lcl_events_hierseq.
SET HANDLER o_lcl_events_hierseq->on_top_of_page FOR lcl_events.
o_lcl_hierseq->display( ).
ENDMETHOD. "display_data
METHOD fill_text_table
METHOD fill_text_table.
DEFINE fill_text_table.
add 1 to wa_text-sort_order.
wa_text-header = &1.
wa_text-description = &2.
wa_text-blart = &3.
append wa_text to gt_text.
END-OF-DEFINITION.
Importation details
fill_text_table text-048 text-060 lc_kf.
fill_text_table text-048 text-061 lc_ks.
fill_text_table text-048 text-062 lc_ko.
fill_text_table text-048 text-063 lc_km.
fill_text_table text-048 text-013 lc_kb.
fill_text_table text-048 text-064 lc_kc.
fill_text_table text-048 text-014 lc_kd.
fill_text_table text-048 text-015 lc_k3.
fill_text_table text-048 text-016 lc_k4.
fill_text_table text-048 text-017 lc_k6.
fill_text_table text-048 text-018 lc_k5.
Finished goods details
fill_text_table text-049 text-021 lc_pq.
fill_text_table text-049 text-020 lc_pf.
fill_text_table text-049 text-019 lc_py.
fill_text_table text-049 text-065 lc_pb.
Local production items
fill_text_table text-050 text-022 lc_pj.
fill_text_table text-050 text-023 lc_pm.
Local non-production items
fill_text_table text-051 text-033 lc_p2.
fill_text_table text-051 text-024 lc_pt.
fill_text_table text-051 text-058 lc_x0.
fill_text_table text-051 text-025 lc_ps.
fill_text_table text-051 text-066 lc_promo.
fill_text_table text-051 text-067 lc_repair.
fill_text_table text-051 text-068 lc_shell.
fill_text_table text-051 text-069 lc_supplies.
Payroll transactions
fill_text_table text-052 text-027 lc_kp.
fill_text_table text-052 text-028 lc_pu.
fill_text_table text-052 text-040 lc_y1.
fill_text_table text-052 text-026 lc_pp.
fill_text_table text-052 text-029 lc_pd.
fill_text_table text-052 text-030 lc_pe.
Taxes
fill_text_table text-059 text-042 lc_z1.
fill_text_table text-059 text-043 lc_z2.
fill_text_table text-059 text-044 lc_z3.
fill_text_table text-059 text-045 lc_z4.
Others
fill_text_table text-053 text-032 lc_pc.
fill_text_table text-053 text-070 lc_p5.
fill_text_table text-053 text-041 lc_y2.
fill_text_table text-053 text-035 lc_pw.
fill_text_table text-053 text-071 lc_ph.
fill_text_table text-053 text-072 lc_p4.
fill_text_table text-053 text-037 lc_x2.
fill_text_table text-053 text-038 lc_x3.
fill_text_table text-053 text-073 lc_p6.
fill_text_table text-053 text-074 lc_p3.
fill_text_table text-053 text-039 lc_pa.
fill_text_table text-053 text-034 lc_po.
fill_text_table text-053 text-036 lc_x1.
fill_text_table text-053 text-046 lc_p8.
fill_text_table text-053 text-047 lc_p9.
fill_text_table text-053 text-075 lc_pn.
ENDMETHOD. "fill_text_table
ENDCLASS. "lcl_get_data IMPLEMENTATION
----
CLASS lcl_handle_events_hierseq IMPLEMENTATION
----
*
----
CLASS lcl_handle_events_hierseq IMPLEMENTATION.
METHOD on_top_of_page.
DATA: lv_butxt TYPE t001-butxt,
lv_month_year TYPE string,
lt_month_names TYPE STANDARD TABLE OF t247.
FIELD-SYMBOLS: <fs_month_names> LIKE LINE OF lt_month_names.
CREATE OBJECT lr_grid.
SELECT SINGLE butxt
FROM t001
INTO lv_butxt
WHERE bukrs = p_bukrs.
MOVE lv_butxt TO l_text.
lr_grid->create_header_information( row = 1
column = 50
text = l_text
tooltip = l_text ).
lr_grid->add_row( ).
lr_grid_1 = lr_grid->create_grid( row = 3
column = 50 ).
lr_label = lr_grid_1->create_label( row = 1
column = 1
text = text-003
tooltip = text-003 ).
lr_label = lr_grid_1->create_label( row = 2
column = 1
text = text-t01
tooltip = text-t01 ).
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
language = sy-langu
IMPORTING
RETURN_CODE =
TABLES
month_names = lt_month_names
EXCEPTIONS
month_names_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF NOT lt_month_names[] IS INITIAL.
READ TABLE lt_month_names ASSIGNING <fs_month_names> WITH KEY mnr = p_monat.
IF sy-subrc = 0.
CONCATENATE <fs_month_names>-ltx p_gjahr INTO lv_month_year SEPARATED BY space.
ENDIF.
ENDIF.
lr_text = lr_grid_1->create_text( row = 2
column = 2
text = lv_month_year
tooltip = lv_month_year ).
lr_content = lr_grid.
r_top_of_page->set_content( lr_content ).
ENDMETHOD. "on_top_of_page
ENDCLASS. "lcl_handle_events_hierseq IMPLEMENTATION
----
START-OF-SELECTION *
----
START-OF-SELECTION.
DATA: o_lcl_get_data TYPE REF TO lcl_get_data.
CREATE OBJECT o_lcl_get_data.
CALL METHOD o_lcl_get_data->get_payment_details.
----
END-OF-SELECTION *
----
END-OF-SELECTION.
CALL METHOD o_lcl_get_data->display_data.
[/code]
‎2007 Nov 23 7:04 AM
Hi Kuamr ( or Kumar ? )
I admit it wasn't easy to understand , but let me give it a try _
I wrote similar code in my program like follows and it works.
You can try these alternatives in your code :
1. Remove the keyitem-item01 ; and/or
2. Create the sort table on the header key field.
Hope it helps.
Rgds,
TS WINEDYA
FORM HIER_DISPLAY_ALV TABLES t_outtab.
matnr dijadikan header key field
KEYINFO-HEADER01 = 'MATNR'.
is_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
*Tentukan kriteria pengurutan
refresh it_SORT.
it_SORT-SPOS = 1.
it_SORT-FIELDNAME = 'MATNR'.
it_SORT-TABNAME = 'IT_OUT'.
it_SORT-UP = 'X'.
APPEND it_SORT.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = i_callback_user_command
IS_LAYOUT = is_layout
IT_SORT = it_sort[]
IT_FIELDCAT = it_fieldcat
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = is_variant
IT_EVENTS = it_events
I_TABNAME_HEADER = 'IT_HDR'
I_TABNAME_ITEM = 'IT_OUT'
IS_KEYINFO = KEYINFO
TABLES
T_OUTTAB_HEADER = IT_HDR
T_OUTTAB_ITEM = t_outtab.
ENDFORM.