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

ALV

Former Member
0 Likes
587

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

4 REPLIES 4
Read only

Former Member
0 Likes
543

HI

refer this link once

http://www.sapdev.co.uk/reporting/alv/alvtree.htm

<b>Reward if usefull</b>

Read only

Former Member
0 Likes
543

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

Read only

aris_hidalgo
Contributor
0 Likes
543

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]

Read only

Former Member
0 Likes
543

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.