0% found this document useful (0 votes)
14 views80 pages

ZSD Cust Open Item-S4D

Download as docx, pdf, or txt
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 80

Variants:

*&---------------------------------------------------------------------*
*& Report ZSD_CUST_OPEN_ITEM
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* Program Name : ZSD_CUST_OPEN_ITEM
*
* Author (userid) : Rahul Kalra (DTT_ABAP3) *
* Functional : Raja Rahul/Hashita Jain *
* Module Name : FICO-R2R
*
* Creation Date : 22.07.2023
*
* Transaction : ZS4_AGEING
*
* Title : Customer Ageing Report
*
* Transport No : S4DK917053
*
*----------------------------------------------------------------------*
* Function: Customer Ageing Analytical Report for Distribution & Non- *
* Distribution Business in Company Code , Transaction & Hard Currency *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& MODIFICATION LOG
*
*&---------------------------------------------------------------------*
*& Log# Date User ID Transport Ref Description *
*&---------------------------------------------------------------------*
*& 0001 14.09.2023 DTT_ABAP3 S4DK919080 Additional chg *
*& Fix for Below Incident :
*
*& SUBINC0023791 : PAN JV Backdated Reversal *
*&---------------------------------------------------------------------*
*& 0002 15.09.2023 DTT_ABAP3 S4DK919080 OnAccount/Advance *
*& Fix for Below Incident :
*
*& SUBINC0023791 : PAN JV Backdated Reversal *
*&---------------------------------------------------------------------*
*& 0003 20.09.2023 DTT_ABAP3 S4DK919080 Performance Improvement *
*& Fix for Below Incident :
*
*& Code for backdated reversal has been transferred to ABAP managed *
*& Database procedure to improve performance *
*&---------------------------------------------------------------------*

REPORT zsd_cust_open_item.

INCLUDE zsd_cust_open_item_top.
INCLUDE zsd_cust_open_item_sel.
INCLUDE zsd_cust_open_item_pbo.
INCLUDE zsd_cust_open_item_pai.
INCLUDE zsd_cust_open_item_subr.

AT SELECTION-SCREEN OUTPUT.

IF p_vendor = abap_true.
CLEAR:s_cust[].
LOOP AT SCREEN.
IF screen-group1 = 'CU' .
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

IF p_adsale = abap_true OR
p_dist = abap_true.
CLEAR:s_vend[].
LOOP AT SCREEN.
IF screen-group1 = 'VE' .
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

START-OF-SELECTION.

TYPES:ltt_sum TYPE STANDARD TABLE OF zo2c_cust_ageing_out_summary WITH


DEFAULT KEY,
ltt_sum_vend TYPE STANDARD TABLE OF zo2c_vend_ageing_out_summary WITH
DEFAULT KEY,
ltt_sum_tc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_summ_tc WITH
DEFAULT KEY,
ltt_sum_hc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_summ_hc WITH
DEFAULT KEY,
ltt_revw TYPE STANDARD TABLE OF bse_clr WITH DEFAULT KEY,

BEGIN OF lts_named_dref,
name TYPE string,
dref TYPE REF TO data,
END OF lts_named_dref ,

ltt_named_dref TYPE STANDARD TABLE OF lts_named_dref WITH DEFAULT KEY,

BEGIN OF lty_cust_latest,
customer TYPE kunnr,
amount TYPE fins_vhcur12,
END OF lty_cust_latest,

ltt_cust_latest TYPE STANDARD TABLE OF lty_cust_latest WITH DEFAULT KE


Y.

DATA:lr_blart TYPE RANGE OF blart_d,


lr_blart_mig TYPE RANGE OF blart_d,
lr_blart_h TYPE RANGE OF blart_d,
lr_blart_m TYPE RANGE OF blart_d,
lr_blart_rev TYPE RANGE OF blart_d,
lr_blart_pj TYPE RANGE OF blart_d,
lr_xstov TYPE RANGE OF xstov,
lr_ind TYPE RANGE OF shkzg,
lr_client TYPE RANGE OF mandt.

DATA:lr_rev TYPE RANGE OF fins_xreversed,


lr_revp TYPE RANGE OF fins_xreversed,
lr_revw TYPE RANGE OF fins_xreversing,
lr_invref TYPE RANGE OF rebzg,
lr_invrefw TYPE RANGE OF rebzg,
lr_clrdoc TYPE RANGE OF augbl,
lr_spgl TYPE RANGE OF umskz.

DATA:lt_final_cr TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket_tc,


lt_final_db_tc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket,
lt_final_cr_tc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket,
lt_final_db_hc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket_hc,
lt_final_cr_hc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket_hc.

DATA:lv_count_rev TYPE n LENGTH 2 VALUE 1.

lr_client = VALUE #( ( sign = 'I'


option = 'EQ'
low = sy-mandt ) ).

lr_rev = VALUE fdp_corr_koart_rt( ( sign = 'I'


option = 'EQ'
low = space ) ).

lr_revp = VALUE fdp_corr_koart_rt( ( sign = 'I'


option = 'EQ'
low = 'X' ) ).

lr_revw = VALUE fdp_corr_koart_rt( ( sign = 'I'


option = 'EQ'
low = space ) ).

DATA(lr_rldnr) = VALUE fac_t_ledger_ra( ( sign = 'I'


option = 'EQ'
low = p_rldnr ) ).

DATA(lr_spras) = VALUE spras_range_t( (


sign = 'I'
option = 'EQ'
low = sy-langu
) ).

DATA(lv_acct) = VALUE koart( ).

SELECT valsign,
valoption,
valfrom,
valto FROM setleaf WHERE setname = 'CUSTOMR01'
INTO TABLE @DATA(lt_cust_set).
IF sy-subrc = 0.
DATA(lr_cust) = VALUE trgr_kunnr( FOR ls_cust IN lt_cust_set ( sign = ls
_cust-valsign
option = ls
_cust-valoption
low = ls
_cust-valfrom
high = ls
_cust-valto ) ).
TRY.
DATA(lv_cust) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs = VALUE #( ( name = 'CUSTOMER' dref = REF #( lr_c
ust[] ) ) ) ).
CATCH cx_shdb_exception.

ENDTRY.

ENDIF.

IF p_dist = abap_true OR
p_adsale = abap_true.
DATA(lr_acct) = VALUE fdp_corr_koart_rt( ( sign = 'I'
option = 'EQ'
low = 'D' ) ).
lv_acct = 'D'.
ELSE.
lr_acct = VALUE fdp_corr_koart_rt( ( sign = 'I'
option = 'EQ'
low = 'K' ) ).
lv_acct = 'K'.
ENDIF.

*** Begin of Insertion S4DK919080 DTT_ABAP3


lr_blart_mig = VALUE #( ( sign = 'E'
option = 'EQ'
low = 'ZB' )

( sign = 'E'
option = 'EQ'
low = 'ZC' )
( sign = 'E'
option = 'EQ'
low = 'AB' )

( sign = 'E'
option = 'EQ'
low = 'PJ' )

( sign = 'E'
option = 'EQ'
low = 'DY' ) ).
*** End of Insertion S4DK919080 DTT_ABAP3

lr_blart_m = VALUE #( ( sign = 'I'


option = 'EQ'
low = 'UE' )

( sign = 'I'
option = 'EQ'
low = 'UC' )

( sign = 'I'
option = 'EQ'
low = 'UD' ) ).

lr_blart_rev = VALUE #( ( sign = 'I'


option = 'EQ'
low = 'ZB' )

( sign = 'I'
option = 'EQ'
low = 'AB' )

( sign = 'I'
option = 'EQ'
low = 'DY' )

( sign = 'I'
option = 'EQ'
low = 'PJ' )

).

IF p_adsale = abap_true.

lr_blart = VALUE #( ( sign = 'E'


option = 'EQ'
low = 'ZB' )

( sign = 'E'
option = 'EQ'
low = 'ZC' )
( sign = 'E'
option = 'EQ'
low = 'AB' )

( sign = 'E'
option = 'EQ'
low = 'PJ' )

( sign = 'E'
option = 'EQ'
low = 'DY' )

( sign = 'E'
option = 'EQ'
low = 'UC' )

( sign = 'E'
option = 'EQ'
low = 'UE' )

( sign = 'E'
option = 'EQ'
low = 'UD' ) ).

lr_blart_h = VALUE #( ( sign = 'I'


option = 'EQ'
low = 'ZB' )

( sign = 'I'
option = 'EQ'
low = 'ZC' )

( sign = 'I'
option = 'EQ'
low = 'AB' ) ).

ELSEIF p_dist = abap_true.

lr_blart_h = VALUE #( ( sign = 'I'


option = 'EQ'
low = 'ZB' )

( sign = 'I'
option = 'EQ'
low = 'ZC' )

( sign = 'I'
option = 'EQ'
low = 'AB' ) ).
lr_blart = VALUE #( ( sign = 'E'
option = 'EQ'
low = 'ZB' )

( sign = 'E'
option = 'EQ'
low = 'ZC' )

( sign = 'E'
option = 'EQ'
low = 'AB' )

( sign = 'E'
option = 'EQ'
low = 'PJ' )

( sign = 'E'
option = 'EQ'
low = 'DY' )

( sign = 'E'
option = 'EQ'
low = 'UC' )

( sign = 'E'
option = 'EQ'
low = 'UE' )

( sign = 'E'
option = 'EQ'
low = 'UD' )

).
ELSEIF p_vendor = abap_true.

lr_blart = VALUE #( ( sign = 'E'


option = 'EQ'
low = 'KZ' ) ).
*
* ( sign = 'E'
* option = 'EQ'
* low = 'ZP' ) .

lr_xstov = VALUE #( ( sign = 'I'


option = 'EQ'
low = space ) ).
ENDIF.

TRY.
DATA(lv_where) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'RCLNT' dref = REF #( lr_c
lient[] ) )
( name = 'RLDNR' dref = REF #( lr_r
ldnr[] ) )
( name = 'KOART' dref = REF #( lr_a
cct[] ) )
( name = 'RBUKRS' dref = REF #( s_cc
ode[] ) )
( name = 'KUNNR' dref = REF #( s_cu
st[] ) )
( name = 'LIFNR' dref = REF #( s_ve
nd[] ) )
( name = 'SEGMENT' dref = REF #( s_se
g[] ) )
( name = 'PRCTR' dref = REF #( s_pr
ctr[] ) )
( name = 'RBUSA' dref = REF #( s_ba
rea[] ) )
( name = 'BLART' dref = REF #( lr_b
lart[] ) )
( name = 'XREVERSED' dref = REF #( lr_r
ev[] ) )
( name = 'XREVERSING' dref = REF #( lr_r
evw[] ) )
) ).
CATCH cx_shdb_exception.

ENDTRY.

TRY.
DATA(lv_where_rev_p) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'RCLNT' dref = REF #( lr_c
lient[] ) )
( name = 'RLDNR' dref = REF #( lr_r
ldnr[] ) )
( name = 'KOART' dref = REF #( lr_a
cct[] ) )
( name = 'RBUKRS' dref = REF #( s_cc
ode[] ) )
( name = 'KUNNR' dref = REF #( s_cu
st[] ) )
( name = 'LIFNR' dref = REF #( s_ve
nd[] ) )
( name = 'SEGMENT' dref = REF #( s_se
g[] ) )
( name = 'PRCTR' dref = REF #( s_pr
ctr[] ) )
( name = 'RBUSA' dref = REF #( s_ba
rea[] ) )
( name = 'BLART' dref = REF #( lr_b
lart_mig[] ) )
( name = 'XREVERSED' dref = REF #( lr_r
evp[] ) )
"( name = 'XREVERSING' dref = REF #( l
r_revw[] ) )
) ).
CATCH cx_shdb_exception.

ENDTRY.

TRY.
DATA(lv_where_wrev) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'RCLNT' dref = REF #( lr_c
lient[] ) )
( name = 'RLDNR' dref = REF #( lr_r
ldnr[] ) )
( name = 'KOART' dref = REF #( lr_a
cct[] ) )
( name = 'RBUKRS' dref = REF #( s_cc
ode[] ) )
( name = 'KUNNR' dref = REF #( s_cu
st[] ) )
( name = 'LIFNR' dref = REF #( s_ve
nd[] ) )
( name = 'SEGMENT' dref = REF #( s_se
g[] ) )
( name = 'PRCTR' dref = REF #( s_pr
ctr[] ) )
( name = 'RBUSA' dref = REF #( s_ba
rea[] ) )
( name = 'BLART' dref = REF #( lr_b
lart_rev[] ) )
"( name = 'XREVERSED' dref = REF #( l
r_revp[] ) )
* ( name = 'XREVERSING' dref = REF
#( lr_revw[] ) )
) ).
CATCH cx_shdb_exception.

ENDTRY.

lr_invref = VALUE #( ( sign = 'I'


option = 'EQ'
low = '' ) ).

TRY.
DATA(lv_where_m) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'RCLNT' dref = REF #( lr_c
lient[] ) )
( name = 'RLDNR' dref = REF #( lr_r
ldnr[] ) )
( name = 'KOART' dref = REF #( lr_a
cct[] ) )
( name = 'RBUKRS' dref = REF #( s_cc
ode[] ) )
( name = 'KUNNR' dref = REF #( s_cu
st[] ) )
( name = 'REBZG' dref = REF #( lr_i
nvref[] ) )
( name = 'SEGMENT' dref = REF #( s_se
g[] ) )
( name = 'PRCTR' dref = REF #( s_pr
ctr[] ) )
( name = 'RBUSA' dref = REF #( s_ba
rea[] ) )
( name = 'BLART' dref = REF #( lr_b
lart_m[] ) )
( name = 'XREVERSED' dref = REF #( lr_r
ev[] ) )
( name = 'XREVERSING' dref = REF #( lr_r
evw[] ) )
) ).
CATCH cx_shdb_exception.

ENDTRY.

lr_clrdoc = VALUE #( ( sign = 'I'


option = 'EQ'
low = '' ) ).

lr_spgl = VALUE #( ( sign = 'I'


option = 'EQ'
low = 'H' ) ).

TRY.
DATA(lv_where_seg) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs = VALUE #( ( name = 'SEGMENT' dref = REF #( s_seg[]
) ) ) ).
CATCH cx_shdb_exception.

ENDTRY.

TRY.
DATA(lv_where_h) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'RCLNT' dref = REF #( lr_c
lient[] ) )
( name = 'RLDNR' dref = REF #( lr_r
ldnr[] ) )
( name = 'KOART' dref = REF #( lr_a
cct[] ) )
( name = 'RBUKRS' dref = REF #( s_cc
ode[] ) )
( name = 'KUNNR' dref = REF #( s_cu
st[] ) )
( name = 'LIFNR' dref = REF #( s_ve
nd[] ) )
( name = 'SEGMENT' dref = REF #( s_se
g[] ) )
( name = 'PRCTR' dref = REF #( s_pr
ctr[] ) )
( name = 'RBUSA' dref = REF #( s_ba
rea[] ) )
( name = 'BLART' dref = REF #( lr_b
lart_h[] ) )
( name = 'REBZG' dref = REF #( lr_i
nvref[] ) )
( name = 'AUGBL' dref = REF #( lr_c
lrdoc[] ) )
( name = 'UMSKZ' dref = REF #( lr_s
pgl[] ) )
( name = 'XREVERSED' dref = REF #( lr_r
ev[] ) )
( name = 'XREVERSING' dref = REF #( lr_r
evw[] ) )
) ).
CATCH cx_shdb_exception.

ENDTRY.

DATA(lr_status) = VALUE pfm_t_range_bstat( ( sign = 'I'


option = 'EQ'
low = 'S' ) ).

IF p_vendor = abap_true.
TRY.
DATA(lv_where_noted) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'MANDT' dref = REF #( lr_cl
ient[] ) )
( name = 'BUKRS' dref = REF #( s_cco
de[] ) )
( name = 'LIFNR' dref = REF #( s_ven
d[] ) )
( name = 'PRCTR' dref = REF #( s_prc
tr[] ) )
( name = 'GSBER' dref = REF #( s_bar
ea[] ) )
( name = 'BSTAT' dref = REF #( lr_st
atus[] ) )
( name = 'XSTOV' dref = REF #( lr_xs
tov[] ) )
) ).
CATCH cx_shdb_exception.
ENDTRY.
ELSE.
TRY.
lv_where_noted = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'MANDT' dref = REF #( lr_cl
ient[] ) )
( name = 'BUKRS' dref = REF #( s_cco
de[] ) )
( name = 'KUNNR' dref = REF #( s_cus
t[] ) )
( name = 'PRCTR' dref = REF #( s_prc
tr[] ) )
( name = 'GSBER' dref = REF #( s_bar
ea[] ) )
( name = 'BSTAT' dref = REF #( lr_st
atus[] ) )
( name = 'XSTOV' dref = REF #( lr_xs
tov[] ) )
) ).
CATCH cx_shdb_exception.
ENDTRY.

DATA(lt_named_seltabs) = VALUE ltt_named_dref( ).


DATA(ls_named_seltabs) = VALUE lts_named_dref( ).

IF s_agum[] IS NOT INITIAL.


ls_named_seltabs-name = 'AGENCYUMBRELLA'.
ls_named_seltabs-dref = REF #( s_agum[] ).
APPEND ls_named_seltabs TO lt_named_seltabs.
CLEAR:ls_named_seltabs.
ENDIF.

IF s_glind[] IS NOT INITIAL.


ls_named_seltabs-name = 'SPECIALGLIND'.
ls_named_seltabs-dref = REF #( s_glind[] ) .
APPEND ls_named_seltabs TO lt_named_seltabs.
CLEAR:ls_named_seltabs.
ENDIF.

IF s_grpkey[] IS NOT INITIAL.


ls_named_seltabs-name = 'GROUPKEY'.
ls_named_seltabs-dref = REF #( s_grpkey[] ) .
APPEND ls_named_seltabs TO lt_named_seltabs.
CLEAR:ls_named_seltabs.
ENDIF.

IF s_vkgrp[] IS NOT INITIAL.


ls_named_seltabs-name = 'SALESGROUP'.
ls_named_seltabs-dref = REF #( s_vkgrp[] ) .
APPEND ls_named_seltabs TO lt_named_seltabs.
CLEAR:ls_named_seltabs.
ENDIF.

IF lt_named_seltabs IS NOT INITIAL.


TRY.
DATA(lv_where_outside) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs = lt_named_seltabs ).
CATCH cx_shdb_exception.
ENDTRY.
ENDIF.

DATA(lr_gl) = VALUE gle_mca_tab_range_racct( ( sign = 'I'


option = 'EQ'
low = '0000831002' ) ).

DATA(lr_postingkey) = VALUE fdp_corr_bschl_rt( ( sign = 'I'


option = 'EQ'
low = '40' ) ).
lr_ind = VALUE #( ( sign = 'I'
option = 'EQ'
low = 'S' ) ).

TRY.
DATA(lv_where_pdd) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'RCLNT' dref = REF #( l
r_client[] ) )
( name = 'RLDNR' dref = REF #( l
r_rldnr[] ) )
( name = 'BSCHL' dref = REF #( l
r_postingkey[] ) )
( name = 'RACCT' dref = REF #( l
r_gl[] ) )
( name = 'DRCRK' dref = REF #( l
r_ind[] ) )
( name = 'XREVERSED' dref = REF #( l
r_rev[] ) )
( name = 'XREVERSING' dref = REF #( l
r_revw[] ) )
) ).
CATCH cx_shdb_exception.
ENDTRY.
ENDIF.

IF s_div[] IS NOT INITIAL.


TRY.
DATA(lv_where_division) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'MANDT' dref = REF #( l
r_client[] ) )
( name = 'SPRAS' dref = REF #( l
r_spras[] ) )
( name = 'SPART' dref = REF #( s
_div[] ) )
) ).
CATCH cx_shdb_exception.
ENDTRY.
ENDIF.

IF s_agname[] IS NOT INITIAL.


TRY.
DATA(lv_where_agname) = cl_shdb_seltab=>combine_seltabs(
EXPORTING
it_named_seltabs =
VALUE #( ( name = 'AGENCYNAME' dref = REF
#( s_agname[] ) )
) ).
CATCH cx_shdb_exception.
ENDTRY.
ENDIF.

CLEAR:gv_highest.
gv_highest = p_buck01.
DATA(lv_highest) = VALUE int2( ).
DATA:lv_count TYPE n LENGTH 2 VALUE 2.
DATA:lv_count_cr TYPE n LENGTH 2 VALUE 2.

WHILE lv_count <= 15.

DATA(lv_name_f) = 'p_buck' && lv_count.


ASSIGN (lv_name_f) TO FIELD-SYMBOL(<lfs_name_f>).
IF <lfs_name_f> IS ASSIGNED.
lv_highest = <lfs_name_f>.
IF lv_highest > gv_highest.
gv_highest = lv_highest.
ENDIF.
ENDIF.

lv_count = lv_count + 1.

ENDWHILE.

IF p_adsale = abap_true OR
p_dist = abap_true.

IF p_ccurr = abap_true.

CALL METHOD zcl_o2c_cust_out=>get_data


EXPORTING
p_input = lv_where
p_out = lv_where_outside
p_noted = lv_where_noted
p_pdd = lv_where_pdd
p_inputh = lv_where_h
p_inputs = lv_where_seg
p_cust = lv_cust
p_mig = lv_where_m
"p_pj = lv_where_pj
"p_pjw = lv_where_pjw
p_postd = p_postd
p_docd = p_docd
p_netd = p_netd
p_summ = p_summ
p_det = p_det
p_wipdd = p_wipdd
p_normal = p_normal
p_note = p_noted
p_keyd = p_keyd
p_buck1 = p_buck01
p_buck2 = p_buck02
p_buck3 = p_buck03
p_buck4 = p_buck04
p_buck5 = p_buck05
p_buck6 = p_buck06
p_buck7 = p_buck07
p_buck8 = p_buck08
p_buck9 = p_buck09
p_buck10 = p_buck10
p_buck11 = p_buck11
p_buck12 = p_buck12
p_buck13 = p_buck13
p_buck14 = p_buck14
p_buck15 = p_buck15
p_acct = lv_acct
p_ledg = p_rldnr
p_high = gv_highest
p_adsale = p_adsale
p_divft = lv_where_division
p_agname = lv_where_agname
p_inputr = lv_where_wrev
p_inputrv = lv_where_rev_p
IMPORTING
lt_detailed = DATA(lt_final).

IF sy-subrc = 0.
IF p_adsale = abap_true.

LOOP AT lt_final ASSIGNING FIELD-SYMBOL(<lfs_final>)


WHERE specialglind = 'A'.

CLEAR:<lfs_final>-bucket01,
<lfs_final>-bucket02,
<lfs_final>-bucket03,
<lfs_final>-bucket04,
<lfs_final>-bucket05,
<lfs_final>-bucket06,
<lfs_final>-bucket07,
<lfs_final>-bucket08,
<lfs_final>-bucket09,
<lfs_final>-bucket10,
<lfs_final>-bucket11,
<lfs_final>-bucket12,
<lfs_final>-bucket13,
<lfs_final>-bucket14,
<lfs_final>-bucket15,
<lfs_final>-bucket16.

ENDLOOP.
ENDIF.

gt_final = CORRESPONDING #( lt_final ).

DATA(lt_final_db) = lt_final.

IF p_summ = abap_true.

DATA(lt_summary) = VALUE ltt_sum( ).


DATA(lt_summary_db) = VALUE ltt_sum( ).
DATA(lt_ageing_onacc) = VALUE ltt_sum( ).

DATA(lwa_summ) = VALUE zo2c_cust_ageing_out_summary( ).


DATA(lwa_ageing_onacc) = VALUE zo2c_cust_ageing_out_summary( ).

LOOP AT lt_final INTO DATA(lwa_final).


lwa_summ = CORRESPONDING #( lwa_final ).
COLLECT lwa_summ INTO lt_summary.
CLEAR:lwa_summ.
ENDLOOP.

LOOP AT lt_summary ASSIGNING FIELD-SYMBOL(<lfs_summ_f>).


IF <lfs_summ_f>-outstanding < 0.
<lfs_summ_f>-osadv = 'ADV'.
ELSEIF <lfs_summ_f>-outstanding > 0.
<lfs_summ_f>-osadv = 'OS'.
ENDIF.
ENDLOOP.

LOOP AT lt_final_db INTO DATA(lwa_final_db)


WHERE specialglind <> 'A'.

lwa_summ = CORRESPONDING #( lwa_final_db ).


COLLECT lwa_summ INTO lt_summary_db.
CLEAR:lwa_summ.
ENDLOOP.

lt_final_cr = CORRESPONDING #( gt_final ).


DELETE lt_final_cr WHERE onaccount = 0.

DATA(lv_onacc) = VALUE fins_vhcur12( ).

lv_count = 16.
lv_count_cr = 16.

LOOP AT lt_summary INTO DATA(lwa_summary).

lwa_ageing_onacc = CORRESPONDING #( lwa_summary ).


READ TABLE lt_summary_db INTO DATA(lwa_summary_db)
WITH KEY companycode = lwa_summary-
companycode
customer = lwa_summary-
customer.
IF sy-subrc = 0.

WHILE lv_count >= 1.


DATA(lv_db) = 'BUCKET' && lv_count.
DATA(lv_cr) = 'ONBUCKET' && lv_count_cr.
ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_db TO FIELD-
SYMBOL(<lfs_summ>).
IF <lfs_summ> IS ASSIGNED.
IF <lfs_summ> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.

LOOP AT lt_final_cr INTO DATA(lwa_final_cr)


WHERE customer = lwa_summary-customer.

IF lv_count = 0.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.
lv_onacc = lwa_final_cr-onaccount * -1.
lv_db = 'BUCKET' && lv_count.
lv_cr = 'ONBUCKET' && lv_count_cr.

ASSIGN COMPONENT lv_cr OF STRUCTURE lwa_ageing_onacc TO FIELD-


SYMBOL(<lfs_cr>).
IF <lfs_cr> IS ASSIGNED.

IF <lfs_summ> >= lwa_final_cr-onaccount * -1.


<lfs_cr> = <lfs_cr> + lwa_final_cr-onaccount.
lv_onacc = lv_onacc + lwa_final_cr-onaccount.
<lfs_summ> = <lfs_summ> + lwa_final_cr-onaccount.
ELSEIF ( <lfs_summ> < lwa_final_cr-onaccount * -1 ) AND <lfs
_summ> > 0.
<lfs_cr> = <lfs_cr> + ( <lfs_summ> * -1 ).
lv_onacc = lv_onacc + ( <lfs_summ> * -1 ).
<lfs_summ> = <lfs_summ> + ( <lfs_summ> * -1 ).
ENDIF.

ENDIF.

IF <lfs_summ> <= 0 AND lv_onacc <= 0 .


lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
WHILE lv_count >= 1.
lv_db = 'BUCKET' && lv_count.

ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_db TO <lfs


_summ>.
IF <lfs_summ> IS ASSIGNED.
IF <lfs_summ> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.
ELSEIF <lfs_summ> >= 0 AND lv_onacc <= 0.
CONTINUE.
ELSEIF <lfs_summ> <= 0 AND lv_onacc > 0.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.

WHILE lv_onacc > 0 AND lv_count >= 1.

IF <lfs_summ> <= 0 .
WHILE lv_count >= 1.
lv_db = 'BUCKET' && lv_count.

ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_db TO


<lfs_summ>.
IF <lfs_summ> IS ASSIGNED.
IF <lfs_summ> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.
ENDIF.

IF lv_count = 0.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.

lv_cr = 'ONBUCKET' && lv_count_cr.


ASSIGN COMPONENT lv_cr OF STRUCTURE lwa_ageing_onacc TO <l
fs_cr>.
IF <lfs_cr> IS ASSIGNED.
IF lv_onacc > <lfs_summ>.
<lfs_cr> = <lfs_summ> * -1.
ELSE.
<lfs_cr> = lv_onacc * -1.
ENDIF.
lv_onacc = lv_onacc + <lfs_cr>.
<lfs_summ> = <lfs_summ> + <lfs_cr>.

IF <lfs_summ> <= 0 .
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDIF.

ENDIF.
ENDWHILE.

ENDIF.

ENDLOOP.
ENDIF.

APPEND lwa_ageing_onacc TO lt_ageing_onacc.


CLEAR:lwa_ageing_onacc,
lv_onacc.

lv_count = 16.
lv_count_cr = 16.

UNASSIGN:<lfs_summ>,<lfs_cr>.
ENDLOOP.

gt_final_s = CORRESPONDING #( lt_ageing_onacc ).


ENDIF.

CALL SCREEN 9000.


ELSE.
MESSAGE TEXT-002 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.

ELSEIF p_tcurr = abap_true.

CALL METHOD zcl_fi_outstanding_tc=>get_data_tc


EXPORTING
p_input = lv_where
p_out = lv_where_outside
p_noted = lv_where_noted
p_pdd = lv_where_pdd
p_inputh = lv_where_h
p_inputs = lv_where_seg
p_cust = lv_cust
p_mig = lv_where_m
"p_pj = lv_where_pj
"p_pjw = lv_where_pjw
p_postd = p_postd
p_docd = p_docd
p_netd = p_netd
p_summ = p_summ
p_det = p_det
p_wipdd = p_wipdd
p_normal = p_normal
p_note = p_noted
p_keyd = p_keyd
p_buck1 = p_buck01
p_buck2 = p_buck02
p_buck3 = p_buck03
p_buck4 = p_buck04
p_buck5 = p_buck05
p_buck6 = p_buck06
p_buck7 = p_buck07
p_buck8 = p_buck08
p_buck9 = p_buck09
p_buck10 = p_buck10
p_buck11 = p_buck11
p_buck12 = p_buck12
p_buck13 = p_buck13
p_buck14 = p_buck14
p_buck15 = p_buck15
p_acct = lv_acct
p_ledg = p_rldnr
p_high = gv_highest
p_adsale = p_adsale
p_divft = lv_where_division
p_agname = lv_where_agname
p_inputr = lv_where_wrev
p_inputrv = lv_where_rev_p
IMPORTING
lt_detailed = DATA(lt_final_tc).

IF sy-subrc = 0.
IF p_adsale = abap_true.

LOOP AT lt_final_tc ASSIGNING FIELD-SYMBOL(<lfs_final_tc>)


WHERE specialglind = 'A'.

CLEAR:<lfs_final_tc>-tbucket01,
<lfs_final_tc>-tbucket02,
<lfs_final_tc>-tbucket03,
<lfs_final_tc>-tbucket04,
<lfs_final_tc>-tbucket05,
<lfs_final_tc>-tbucket06,
<lfs_final_tc>-tbucket07,
<lfs_final_tc>-tbucket08,
<lfs_final_tc>-tbucket09,
<lfs_final_tc>-tbucket10,
<lfs_final_tc>-tbucket11,
<lfs_final_tc>-tbucket12,
<lfs_final_tc>-tbucket13,
<lfs_final_tc>-tbucket14,
<lfs_final_tc>-tbucket15,
<lfs_final_tc>-tbucket16.

ENDLOOP.
ENDIF.

gt_final_tc = CORRESPONDING #( lt_final_tc ).

DATA(lt_final_tc_db) = lt_final_tc.

IF p_summ = abap_true.

DATA(lt_summary_tc) = VALUE ltt_sum_tc( ).


DATA(lt_summary_tc_db) = VALUE ltt_sum_tc( ).
DATA(lt_ageing_onacc_tc) = VALUE ltt_sum_tc( ).

DATA(lwa_summ_tc) = VALUE zo2c_cust_ageing_out_summ_tc( ).


DATA(lwa_summ_tc_db) = VALUE zo2c_cust_ageing_out_summ_tc( ).
DATA(lwa_ageing_onacc_tc) = VALUE zo2c_cust_ageing_out_summ_tc( ).

LOOP AT lt_final_tc INTO DATA(lwa_final_tc).


lwa_summ_tc = CORRESPONDING #( lwa_final_tc ).
COLLECT lwa_summ_tc INTO lt_summary_tc.
ENDLOOP.

LOOP AT lt_summary_tc ASSIGNING FIELD-SYMBOL(<lfs_summ_tc_f>).


IF <lfs_summ_tc_f>-toutstanding < 0.
<lfs_summ_tc_f>-osadv = 'ADV'.
ELSEIF <lfs_summ_tc_f>-toutstanding > 0.
<lfs_summ_tc_f>-osadv = 'OS'.
ENDIF.
ENDLOOP.

LOOP AT lt_final_tc_db INTO DATA(lwa_final_tc_db)


WHERE specialglind <> 'A'.
lwa_summ_tc = CORRESPONDING #( lwa_final_tc_db ).
COLLECT lwa_summ_tc INTO lt_summary_tc_db.
CLEAR:lwa_summ_tc.
ENDLOOP.

lt_final_cr_tc = CORRESPONDING #( gt_final_tc ).


DELETE lt_final_cr_tc WHERE tonaccount = 0.

DATA(lv_tonacc) = VALUE fins_vwcur12( ).

lv_count = 16.
lv_count_cr = 16.

LOOP AT lt_summary_tc INTO DATA(lwa_summary_tc).


lwa_ageing_onacc_tc = CORRESPONDING #( lwa_summary_tc ).

READ TABLE lt_summary_tc_db INTO DATA(lwa_summary_tc_db)


WITH KEY companycode = lwa_summary_tc-
companycode
customer = lwa_summary_tc-
customer
tcurrency = lwa_summary_tc-
tcurrency.
IF sy-subrc = 0.

WHILE lv_count >= 1.


lv_db = 'TBUCKET' && lv_count.
lv_cr = 'ONTBUCKET' && lv_count_cr.
ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_tc_db TO FIELD
-SYMBOL(<lfs_summ_tc>).
IF <lfs_summ_tc> IS ASSIGNED.
IF <lfs_summ_tc> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.

LOOP AT lt_final_cr_tc INTO DATA(lwa_final_cr_tc)


WHERE companycode = lwa_summary_tc-
companycode
AND customer = lwa_summary_tc-
customer
AND tcurrency = lwa_summary_tc-
tcurrency.

IF lv_count = 0.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.

lv_tonacc = lwa_final_cr_tc-tonaccount * -1.


lv_db = 'TBUCKET' && lv_count.
lv_cr = 'ONTBUCKET' && lv_count_cr.

ASSIGN COMPONENT lv_cr OF STRUCTURE lwa_ageing_onacc_tc TO FIE


LD-SYMBOL(<lfs_cr_tc>).
IF <lfs_cr_tc> IS ASSIGNED.
* BOC SUBINC0025763 08.09.2023
* CLEAR: <lfs_cr_tc>.
* EOC SUBINC0025763 08.09.2023
IF <lfs_summ_tc> >= lwa_final_cr_tc-tonaccount * -1.
<lfs_cr_tc> = <lfs_cr_tc> + lwa_final_cr_tc-tonaccount.
lv_tonacc = lv_tonacc + lwa_final_cr_tc-tonaccount.
<lfs_summ_tc> = <lfs_summ_tc> + lwa_final_cr_tc-
tonaccount.
ELSEIF ( <lfs_summ_tc> < lwa_final_cr_tc-tonaccount * -1 ) A
ND <lfs_summ_tc> > 0.
<lfs_cr_tc> = <lfs_cr_tc> + ( <lfs_summ_tc> * -1 ).
lv_tonacc = lv_tonacc + ( <lfs_summ_tc> * -1 ).
<lfs_summ_tc> = <lfs_summ_tc> + ( <lfs_summ_tc> * -1 ).
ENDIF.

ENDIF.

IF <lfs_summ_tc> <= 0 AND lv_tonacc <= 0 .


lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
WHILE lv_count >= 1.
lv_db = 'TBUCKET' && lv_count.

ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_tc_db TO <


lfs_summ_tc>.
IF <lfs_summ_tc> IS ASSIGNED.
IF <lfs_summ_tc> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.
ELSEIF <lfs_summ_tc> >= 0 AND lv_tonacc <= 0.
CONTINUE.
ELSEIF <lfs_summ_tc> <= 0 AND lv_tonacc > 0.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.

WHILE lv_tonacc > 0 AND lv_count >= 1.

IF <lfs_summ_tc> <= 0 .
WHILE lv_count >= 1.
lv_db = 'TBUCKET' && lv_count.

ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_tc_db


TO <lfs_summ_tc>.
IF <lfs_summ_tc> IS ASSIGNED.
IF <lfs_summ_tc> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.
ENDIF.

IF lv_count = 0.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.

lv_cr = 'ONTBUCKET' && lv_count_cr.


ASSIGN COMPONENT lv_cr OF STRUCTURE lwa_ageing_onacc_tc TO
<lfs_cr_tc>.
IF <lfs_cr_tc> IS ASSIGNED.
IF lv_tonacc > <lfs_summ_tc>.
<lfs_cr_tc> = <lfs_summ_tc> * -1.
ELSE.
<lfs_cr_tc> = lv_tonacc * -1.
ENDIF.
lv_tonacc = lv_tonacc + <lfs_cr_tc>.
<lfs_summ_tc> = <lfs_summ_tc> + <lfs_cr_tc>.

IF <lfs_summ_tc> <= 0 .
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDIF.

ENDIF.
ENDWHILE.

ENDIF.
ENDLOOP.
ENDIF.
APPEND lwa_ageing_onacc_tc TO lt_ageing_onacc_tc.
CLEAR:lwa_ageing_onacc_tc,
lv_tonacc.
UNASSIGN:<lfs_summ_tc>,
<lfs_cr_tc>.
lv_count = 16.
lv_count_cr = 16.
ENDLOOP.

gt_final_s_tc = CORRESPONDING #( lt_ageing_onacc_tc ).


ENDIF.

CALL SCREEN 9000.


ELSE.
MESSAGE TEXT-002 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.

ELSEIF p_hcurr = abap_true.

CALL METHOD zcl_fi_outstanding_hc=>get_data_hc


EXPORTING
p_input = lv_where
p_out = lv_where_outside
p_noted = lv_where_noted
p_pdd = lv_where_pdd
p_inputh = lv_where_h
p_inputs = lv_where_seg
p_cust = lv_cust
p_mig = lv_where_m
"p_pj = lv_where_pj
"p_pjw = lv_where_pjw
p_postd = p_postd
p_docd = p_docd
p_netd = p_netd
p_summ = p_summ
p_det = p_det
p_wipdd = p_wipdd
p_normal = p_normal
p_note = p_noted
p_keyd = p_keyd
p_buck1 = p_buck01
p_buck2 = p_buck02
p_buck3 = p_buck03
p_buck4 = p_buck04
p_buck5 = p_buck05
p_buck6 = p_buck06
p_buck7 = p_buck07
p_buck8 = p_buck08
p_buck9 = p_buck09
p_buck10 = p_buck10
p_buck11 = p_buck11
p_buck12 = p_buck12
p_buck13 = p_buck13
p_buck14 = p_buck14
p_buck15 = p_buck15
p_acct = lv_acct
p_ledg = p_rldnr
p_high = gv_highest
p_adsale = p_adsale
p_divft = lv_where_division
p_agname = lv_where_agname
IMPORTING
lt_detailed = DATA(lt_final_hc).

IF sy-subrc = 0.
IF p_adsale = abap_true.

LOOP AT lt_final_hc ASSIGNING FIELD-SYMBOL(<lfs_final_hc>)


WHERE specialglind = 'A'.

CLEAR:<lfs_final_hc>-hbucket01,
<lfs_final_hc>-hbucket02,
<lfs_final_hc>-hbucket03,
<lfs_final_hc>-hbucket04,
<lfs_final_hc>-hbucket05,
<lfs_final_hc>-hbucket06,
<lfs_final_hc>-hbucket07,
<lfs_final_hc>-hbucket08,
<lfs_final_hc>-hbucket09,
<lfs_final_hc>-hbucket10,
<lfs_final_hc>-hbucket11,
<lfs_final_hc>-hbucket12,
<lfs_final_hc>-hbucket13,
<lfs_final_hc>-hbucket14,
<lfs_final_hc>-hbucket15,
<lfs_final_hc>-hbucket16.

ENDLOOP.
ENDIF.

gt_final_hc = CORRESPONDING #( lt_final_hc ).


DATA(lt_final_hc_db) = lt_final_hc.

IF p_summ = abap_true.

DATA(lt_summary_hc) = VALUE ltt_sum_hc( ).


DATA(lt_ageing_onacc_hc) = VALUE ltt_sum_hc( ).
DATA(lt_summary_hc_db) = VALUE ltt_sum_hc( ).
DATA(lwa_summ_hc) = VALUE zo2c_cust_ageing_out_summ_hc( ).
DATA(lwa_ageing_onacc_hc) = VALUE zo2c_cust_ageing_out_summ_hc( ).
DATA(lwa_summ_hc_db) = VALUE zo2c_cust_ageing_out_summ_hc( ).
LOOP AT lt_final_hc INTO DATA(lwa_final_hc).
lwa_summ_hc = CORRESPONDING #( lwa_final_hc ).
COLLECT lwa_summ_hc INTO lt_summary_hc.
ENDLOOP.

LOOP AT lt_summary_hc ASSIGNING FIELD-SYMBOL(<lfs_summ_hc_f>).


IF <lfs_summ_hc_f>-houtstanding < 0.
<lfs_summ_hc_f>-osadv = 'ADV'.
ELSEIF <lfs_summ_hc_f>-houtstanding > 0.
<lfs_summ_hc_f>-osadv = 'OS'.
ENDIF.
ENDLOOP.

LOOP AT lt_final_hc_db INTO DATA(lwa_final_hc_db)


WHERE specialglind <> 'A'.
lwa_summ_hc = CORRESPONDING #( lwa_final_hc_db ).
COLLECT lwa_summ_hc INTO lt_summary_hc_db.
CLEAR:lwa_summ_hc.
ENDLOOP.

lt_final_cr_hc = CORRESPONDING #( gt_final_hc ).


DELETE lt_final_cr_hc WHERE honaccount = 0.

DATA(lv_honacc) = VALUE fins_vvcur12( ).

lv_count = 16.
lv_count_cr = 16.

LOOP AT lt_summary_hc INTO DATA(lwa_summary_hc).

READ TABLE lt_summary_hc_db INTO DATA(lwa_summary_hc_db)


WITH KEY customer = lwa_summary_hc-
customer.

lwa_ageing_onacc_hc = CORRESPONDING #( lwa_summary_hc ).

WHILE lv_count >= 1.


lv_db = 'HBUCKET' && lv_count.
lv_cr = 'ONHBUCKET' && lv_count_cr.
ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_hc_db TO FIELD-
SYMBOL(<lfs_summ_hc>).
IF <lfs_summ_hc> IS ASSIGNED.
IF <lfs_summ_hc> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.

LOOP AT lt_final_cr_hc INTO DATA(lwa_final_cr_hc)


WHERE customer = lwa_summary_hc-customer.
IF lv_count = 0 .

lv_count = 16.
lv_count_cr = 16.

EXIT.
ENDIF.

lv_honacc = lwa_final_cr_hc-honaccount * -1.


lv_db = 'HBUCKET' && lv_count.
lv_cr = 'ONHBUCKET' && lv_count_cr.

ASSIGN COMPONENT lv_cr OF STRUCTURE lwa_ageing_onacc_hc TO FIELD


-SYMBOL(<lfs_cr_hc>).
IF <lfs_cr_hc> IS ASSIGNED.

IF <lfs_summ_hc> >= lwa_final_cr_hc-honaccount * -1.


<lfs_cr_hc> = <lfs_cr_hc> + lwa_final_cr_hc-honaccount.
lv_honacc = lv_honacc + lwa_final_cr_hc-honaccount.
<lfs_summ_hc> = <lfs_summ_hc> + lwa_final_cr_hc-honaccount.
ELSEIF ( <lfs_summ_hc> < lwa_final_cr_hc-honaccount * -1 ) AND
<lfs_summ_hc> > 0.
<lfs_cr_hc> = <lfs_cr_hc> + ( <lfs_summ_hc> * -1 ).
lv_honacc = lv_honacc + ( <lfs_summ_hc> * -1 ).
<lfs_summ_hc> = <lfs_summ_hc> + ( <lfs_summ_hc> * -1 ).
ENDIF.

ENDIF.

IF <lfs_summ_hc> <= 0 AND lv_honacc <= 0 .


lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
WHILE lv_count >= 1.
lv_db = 'HBUCKET' && lv_count.

ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_hc_db TO <lf


s_summ_hc>.
IF <lfs_summ_hc> IS ASSIGNED.
IF <lfs_summ_hc> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.
ELSEIF <lfs_summ_hc> >= 0 AND lv_honacc <= 0.
CONTINUE.
ELSEIF <lfs_summ_hc> <= 0 AND lv_honacc > 0.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
WHILE lv_honacc > 0 AND lv_count >= 1.

IF <lfs_summ_hc> <= 0 .
WHILE lv_count >= 1.
lv_db = 'HBUCKET' && lv_count.

ASSIGN COMPONENT lv_db OF STRUCTURE lwa_summary_hc_db TO


<lfs_summ_hc>.
IF <lfs_summ_hc> IS ASSIGNED.
IF <lfs_summ_hc> GT 0.
EXIT.
ENDIF.
ENDIF.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDWHILE.
ENDIF.

IF lv_count = 0 .

lv_count = 16.
lv_count_cr = 16.

EXIT.
ENDIF.

lv_cr = 'ONHBUCKET' && lv_count_cr.


ASSIGN COMPONENT lv_cr OF STRUCTURE lwa_ageing_onacc_hc TO <
lfs_cr_hc>.
IF <lfs_cr_hc> IS ASSIGNED.
IF lv_honacc > <lfs_summ_hc>.
<lfs_cr_hc> = <lfs_summ_hc> * -1.
ELSE.
<lfs_cr_hc> = lv_honacc * -1.
ENDIF.
lv_honacc = lv_honacc + <lfs_cr_hc>.
<lfs_summ_hc> = <lfs_summ_hc> + <lfs_cr_hc>.

IF <lfs_summ_hc> <= 0.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDIF.

ENDIF.

ENDWHILE.

ENDIF.

ENDLOOP.

APPEND lwa_ageing_onacc_hc TO lt_ageing_onacc_hc.


CLEAR:lwa_ageing_onacc_hc,
lv_honacc.

lv_count = 16.
lv_count_cr = 16.

UNASSIGN:<lfs_summ_hc>,<lfs_cr_hc>.
ENDLOOP.

gt_final_s_hc = CORRESPONDING #( lt_ageing_onacc_hc ).


ENDIF.

CALL SCREEN 9000.


ELSE.
MESSAGE TEXT-002 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ELSE.
IF p_ccurr = abap_true.

SELECT companycode,
fiscalyear,
accountingdocument,
segment,
specialglind,
gstinvoiceno,
invoicedate,
postingdate,
netduedate ,
fiscyearper ,
docstatus ,
postingkey,
baselinedate,
vendor,
vendorname,
amount,
outstanding,
partial,
currency,
bucket01,
bucket02,
bucket03,
bucket04,
bucket05,
bucket06,
bucket07,
bucket08,
bucket09,
bucket10,
bucket11,
bucket12,
bucket13,
bucket14,
bucket15,
bucket16,
profitcenter,
profitcentername,
businessplace,
branchname,
doctype,
industry,
chequeno,
reconaccount,
itemtext,
paymentterms,
paymenttermstxt,
billfrom,
taxcode FROM zfi_vendor_out_tf( p_input = @lv_where,
p_out = @lv_where_outside,
p_noted = @lv_where_noted,
p_pdd = @lv_where_pdd,
p_postd = @p_postd,
p_docd = @p_docd,
p_netd = @p_netd,
p_summ = @p_summ,
p_det = @p_det,
p_wipdd = @p_wipdd,
p_normal = @p_normal,
p_note = @p_noted,
p_keyd = @p_keyd,
p_buck1 = @p_buck01,
p_buck2 = @p_buck02,
p_buck3 = @p_buck03,
p_buck4 = @p_buck04,
p_buck5 = @p_buck05,
p_buck6 = @p_buck06,
p_buck7 = @p_buck07,
p_buck8 = @p_buck08,
p_buck9 = @p_buck09,
p_buck10 = @p_buck10,
p_buck11 = @p_buck11,
p_buck12 = @p_buck12,
p_buck13 = @p_buck13,
p_buck14 = @p_buck14,
p_buck15 = @p_buck15,
p_acct = @lv_acct,
p_ledg = @p_rldnr,
p_high = @gv_highest ) INTO TABLE @DATA(lt_final_vendor).
IF sy-subrc = 0.
gt_final_vend = CORRESPONDING #( lt_final_vendor ).
IF p_summ = abap_true.
DATA(lt_summary_vend) = VALUE ltt_sum_vend( ).
DATA(lwa_summ_vend) = VALUE zo2c_vend_ageing_out_summary( ).
LOOP AT gt_final_vend INTO DATA(lwa_final_vend).
lwa_summ_vend = CORRESPONDING #( lwa_final_vend ).
COLLECT lwa_summ_vend INTO gt_final_s_vend.
ENDLOOP.
ENDIF.
CALL SCREEN 9000.
ELSE.
MESSAGE TEXT-002 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.

ENDIF.
ENDIF.

*&---------------------------------------------------------------------*
*& Include ZSD_CUST_OPEN_ITEM_TOP
*&---------------------------------------------------------------------*

DATA:gv_bukrs TYPE bukrs,


gv_cust TYPE kunnr,
gv_vendor TYPE lifnr,
gv_seg TYPE fb_segment,
gv_prctr TYPE prctr,
gv_barea TYPE gsber,
gv_vkgrp TYPE vkgrp,
gv_agum TYPE locco,
gv_umskz TYPE umskz,
gv_div TYPE spart,
gv_grpkey TYPE konzs,
gv_agname TYPE zo2c_agencyname,
gv_highest TYPE int2.

DATA: go_container TYPE REF TO cl_gui_custom_container,


go_grid TYPE REF TO cl_gui_alv_grid,
gt_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,
gs_layout TYPE lvc_s_layo,
gt_final TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket_tc,
gt_final_vend TYPE STANDARD TABLE OF zo2c_vend_ageing_out_bucket_tc,
gt_final_tc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket,
gt_final_hc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_bucket_hc,
gt_final_s TYPE STANDARD TABLE OF zo2c_cust_ageing_out_summary,
gt_final_s_vend TYPE STANDARD TABLE OF zo2c_vend_ageing_out_summary,
gt_final_s_tc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_summ_tc,
gt_final_s_hc TYPE STANDARD TABLE OF zo2c_cust_ageing_out_summ_hc.
*&---------------------------------------------------------------------*
*& Include ZSD_CUST_OPEN_ITEM_SEL
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-004.


PARAMETERS:p_rldnr TYPE rldnr OBLIGATORY DEFAULT '0L'.
SELECT-OPTIONS:s_ccode FOR gv_bukrs OBLIGATORY,
s_seg FOR gv_seg OBLIGATORY MATCHCODE OBJECT h_fagl_segm.
SELECTION-SCREEN END OF BLOCK b3.

SELECTION-SCREEN BEGIN OF BLOCK b7.


SELECT-OPTIONS:s_cust FOR gv_cust MODIF ID cu,
s_vend FOR gv_vendor MODIF ID ve.
SELECTION-SCREEN END OF BLOCK b7.

SELECTION-SCREEN BEGIN OF BLOCK b6 WITH FRAME TITLE TEXT-009.


PARAMETERS:p_adsale TYPE c RADIOBUTTON GROUP rg4 DEFAULT 'X' USER-COMMAND cu
st,
p_dist TYPE c RADIOBUTTON GROUP rg4,
p_vendor TYPE c RADIOBUTTON GROUP rg4.
SELECTION-SCREEN END OF BLOCK b6.

SELECTION-SCREEN BEGIN OF BLOCK b5 WITH FRAME.


SELECT-OPTIONS:s_prctr FOR gv_prctr ,
s_barea FOR gv_barea MATCHCODE OBJECT h_tgsb,
s_vkgrp FOR gv_vkgrp MATCHCODE OBJECT h_tvkgr,
s_agum FOR gv_agum,
s_glind FOR gv_umskz MATCHCODE OBJECT h_t074u,
s_grpkey FOR gv_grpkey,
s_div for gv_div,
s_agname FOR gv_agname no INTERVALS.
SELECTION-SCREEN END OF BLOCK b5 .

PARAMETERS p_keyd TYPE rfpdo-allgstid DEFAULT sy-datlo.

SELECTION-SCREEN BEGIN OF LINE.


SELECTION-SCREEN COMMENT 3(10) TEXT-007 FOR FIELD p_buck01.
PARAMETERS:p_buck01 TYPE int2,
p_buck02 TYPE int2,
p_buck03 TYPE int2,
p_buck04 TYPE int2,
p_buck05 TYPE int2,
p_buck06 TYPE int2,
p_buck07 TYPE int2,
p_buck08 TYPE int2,
p_buck09 TYPE int2,
p_buck10 TYPE int2,
p_buck11 TYPE int2,
p_buck12 TYPE int2,
p_buck13 TYPE int2,
p_buck14 TYPE int2,
p_buck15 TYPE int2.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF BLOCK b8 WITH FRAME.


PARAMETERS:p_normal TYPE c AS CHECKBOX DEFAULT 'X',
p_noted TYPE c AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b8.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.


PARAMETERS:p_postd TYPE c RADIOBUTTON GROUP rg DEFAULT 'X',
p_docd TYPE c RADIOBUTTON GROUP rg,
p_netd TYPE c RADIOBUTTON GROUP rg.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-003.


PARAMETERS:p_det TYPE c RADIOBUTTON GROUP rg1 DEFAULT 'X',
p_summ TYPE c RADIOBUTTON GROUP rg1.
SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE TEXT-008.


PARAMETERS:p_ccurr TYPE c RADIOBUTTON GROUP rg3 DEFAULT 'X',
p_tcurr TYPE c RADIOBUTTON GROUP rg3,
p_hcurr TYPE c RADIOBUTTON GROUP rg3.
SELECTION-SCREEN END OF BLOCK b4.

SELECTION-SCREEN BEGIN OF BLOCK b10 WITH FRAME.


PARAMETERS:p_wipdd TYPE c RADIOBUTTON GROUP rg5 DEFAULT 'X' MODIF ID cu,
p_wopdd TYPE c RADIOBUTTON GROUP rg5 MODIF ID cu.
SELECTION-SCREEN END OF BLOCK b10.

*----------------------------------------------------------------------*
***INCLUDE ZSD_CUST_OPEN_ITEM_PBO.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.

SET PF-STATUS 'GUI_9000'.

IF p_adsale = abap_true.
SET TITLEBAR 'ZTITLE_NONDIS'.
ELSEIF p_dist = abap_true.
SET TITLEBAR 'ZTITLE_DIS'.
ELSEif p_vendor = abap_true.
SET TITLEBAR 'ZTITLE_VENDOR'.
ENDIF.
IF go_container IS INITIAL.
* Creating Docking Container
PERFORM create_objects.
* Filling the fieldcatalog table
PERFORM alv_build_fieldcat.
* Building Alv Layout
PERFORM alv_build_layout.
* Displaying the output
PERFORM output_display.
ENDIF.

ENDMODULE.

*----------------------------------------------------------------------*
***INCLUDE ZSD_CUST_OPEN_ITEM_PAI.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.

CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'DWNLD'.
PERFORM download.
ENDCASE.

ENDMODULE.

*----------------------------------------------------------------------*
***INCLUDE ZSD_CUST_OPEN_ITEM_SUBR.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form create_objects
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM create_objects .

DATA : lv_offline TYPE int4.


CLEAR:lv_offline.

* Check if program is running in background/foreground


CALL METHOD cl_gui_alv_grid=>offline
RECEIVING
e_offline = lv_offline.
IF lv_offline IS INITIAL.
* Creating custom container
CREATE OBJECT go_container
EXPORTING
container_name = 'CONTAINER'.

ENDIF.
* Creating grid for ALV display
CREATE OBJECT go_grid
EXPORTING
i_parent = go_container.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form alv_build_fieldcat
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM alv_build_fieldcat .

DATA:lv_count TYPE n LENGTH 2 VALUE 2,


lv_count_f TYPE n LENGTH 2 VALUE 2.

IF p_adsale = abap_true OR
p_dist = abap_true.

IF p_det = abap_true.
IF p_ccurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_CUST_AGEING_OUT_BUCKET_TC'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSEIF p_tcurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_CUST_AGEING_OUT_BUCKET'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSEIF p_hcurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_CUST_AGEING_OUT_BUCKET_HC'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ELSE.
IF p_ccurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_CUST_AGEING_OUT_SUMMARY'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSEIF p_tcurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_CUST_AGEING_OUT_SUMM_TC'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSEIF p_hcurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_CUST_AGEING_OUT_SUMM_HC'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDIF.
ELSE.
IF p_det = abap_true.
IF p_ccurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_VEND_AGEING_OUT_BUCKET_TC'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ELSE.
IF p_ccurr = abap_true.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZO2C_VEND_AGEING_OUT_SUMMARY'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDIF.
ENDIF.

IF p_ccurr = abap_true.
READ TABLE gt_fieldcat ASSIGNING FIELD-SYMBOL(<lfs_fieldcat>)
WITH KEY fieldname = 'BUCKET01'.
IF <lfs_fieldcat> IS ASSIGNED.
IF p_buck01 IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
DATA(lv_buck1) = VALUE string( ).
lv_buck1 = p_buck01.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONBUCKET01'.
IF <lfs_fieldcat> IS ASSIGNED.
IF p_buck01 IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck1 = p_buck01.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'TBUCKET01'.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'HBUCKET01'.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
ENDIF.

ELSEIF p_tcurr = abap_true.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'TBUCKET01'.
IF <lfs_fieldcat> IS ASSIGNED.
IF p_buck01 IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck1 = p_buck01.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'BUCKET01'.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'HUCKET01'.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONTBUCKET01'.
IF <lfs_fieldcat> IS ASSIGNED.
IF p_buck01 IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck1 = p_buck01.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.
ENDIF.

ELSEIF p_hcurr = abap_true.


READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>
WITH KEY fieldname = 'HBUCKET01'.
IF <lfs_fieldcat> IS ASSIGNED.
IF p_buck01 IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck1 = p_buck01.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'BUCKET01'.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'TBUCKET01'.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONHBUCKET01'.
IF <lfs_fieldcat> IS ASSIGNED.
IF p_buck01 IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck1 = p_buck01.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '0-' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.
ENDIF.
ENDIF.

LOOP AT gt_fieldcat ASSIGNING <lfs_fieldcat>.

CASE <lfs_fieldcat>-fieldname.

WHEN 'CUSTOMER'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'AGENCYNAME'.
IF p_vendor = abap_true .
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'CLIENTNAME'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'PDDIND'.
IF p_wopdd = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'PDDAMOUNT'.
IF p_wopdd = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'REGIONCODE'.
IF p_dist = abap_true .
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'COUNTRY'.
IF p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ITEMTEXT'.
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.

WHEN 'TAXCODE'.
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'BILLFROM'.
IF p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'RECONACCOUNT'.
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'CREDITS'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'XBLCK'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'BKTXT'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'DCHNAME'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'DIVISIONNAME'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'USNAM'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ZUONR'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'KIDNO'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONACCOUNT'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ADVANCE'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TCREDITS'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONACCOUNT'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TADVANCE'.
IF p_dist = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'PARTIAL'.
IF p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'TPARTIAL'.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'HPARTIAL'.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'CHEQUENO'.
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'VENDOR'.
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'VENDORNAME'.
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'BASELINEDATE' .
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'POSTINGKEY'.
IF p_adsale = abap_true OR
p_dist = abap_true .
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TAMOUNT'.
IF p_ccurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'TOUTSTANDING'.
IF p_ccurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'FISCYEARPER'.
IF p_adsale = abap_true OR
p_dist = abap_true .
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TCURRENCY'.
IF p_ccurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'HAMOUNT'.
IF p_tcurr = abap_true OR
p_ccurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'HOUTSTANDING'.
IF p_ccurr = abap_true OR
p_tcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'HCURRENCY'.
IF p_ccurr = abap_true OR
p_tcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TBUCKET01'.
IF p_ccurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TBUCKET16'.
IF p_ccurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'AMOUNT'.
IF p_tcurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
<lfs_fieldcat>-do_sum = abap_true.

WHEN 'OUTSTANDING'.
IF p_tcurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
<lfs_fieldcat>-do_sum = abap_true.
WHEN 'CURRENCY'.
IF p_tcurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'USAGE'.
IF p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'BUCKET01'.
IF p_tcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'BUCKET16'.
IF p_tcurr = abap_true OR
p_hcurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'HBUCKET16'.
IF p_tcurr = abap_true OR
p_ccurr = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'PROFITCENTER'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'PROFITCENTERNAME'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'AGENCYUMBRELLA'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.

WHEN 'INDUSTRY'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'MSOTAG'.
IF p_adsale = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'RELSTATUS'.
IF p_adsale = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'SUPERGROUP'.
IF p_adsale = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'BUSINESSAREA'.
IF p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'CUSTOMERGROUPNAME'.
IF p_adsale = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'SALESPERSON'.
IF p_adsale = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ZSABE'.
IF p_adsale = abap_true OR
p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
* WHEN 'IONUMBER'.
* IF p_vendor = abap_true OR
* p_dist = abap_true OR
* p_adsale = abap_true.
* <lfs_fieldcat>-no_out = abap_true.
* ENDIF.

WHEN 'C1AGENCY'.
IF p_vendor = abap_true OR
p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.

WHEN 'IDSMCODE'.
IF p_vendor = abap_true OR
p_adsale = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.

WHEN 'C2AGENCY'.
IF p_vendor = abap_true OR
p_adsale = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.

* WHEN 'RONUMBER' .
* IF p_vendor = abap_true OR
* p_dist = abap_true OR
* p_adsale = abap_true.
* <lfs_fieldcat>-no_out = abap_true.
* ENDIF.
WHEN 'CLIENTPAN'.
IF p_vendor = abap_true OR
p_dist = abap_true OR
p_adsale = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'CUSTOMERGSTIN'.
IF p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'AGENCYPAN'.
IF p_vendor = abap_true OR
p_dist = abap_true OR
p_adsale = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
* WHEN 'CHREFNUMBER'.
* IF p_vendor = abap_true.
* <lfs_fieldcat>-no_out = abap_true.
* ENDIF.
WHEN 'IRNNUMBER'.
IF p_vendor = abap_true OR
p_dist = abap_true OR
p_adsale = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'DISPUTEID'.
IF p_vendor = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'DISPUTEDAMT' .
IF p_vendor = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'DISPUTECURR'.
IF p_vendor = abap_true OR
p_dist = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET01'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET02'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET03'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET04'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET05'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET06'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET07'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET08'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET09'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET10'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET11'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET12'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET13'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET14'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET15'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'ONBUCKET16'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET01'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET02'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET03'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET04'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET05'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET06'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET07'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET08'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET09'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET10'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET11'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET12'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET13'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET14'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET15'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
WHEN 'TONBUCKET16'.
IF p_dist = abap_true OR p_vendor = abap_true.
<lfs_fieldcat>-no_out = abap_true.
ENDIF.
ENDCASE.
ENDLOOP.

WHILE lv_count <= 15.


IF p_ccurr = abap_true.
READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>
WITH KEY fieldname = 'BUCKET' && lv_count.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
DATA(lv_name_f) = 'p_buck' && lv_count.
ASSIGN (lv_name_f) TO FIELD-SYMBOL(<lfs_name_f>).
IF <lfs_name_f> IS ASSIGNED.

IF <lfs_name_f> IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
DATA(lv_buck2) = VALUE string( ).
lv_buck2 = <lfs_name_f>.
lv_count_f = lv_count - 1.
DATA(lv_name_t) = 'p_buck' && lv_count_f.
ASSIGN (lv_name_t) TO FIELD-SYMBOL(<lfs_name_t>).
IF <lfs_name_t> IS ASSIGNED.
lv_buck1 = <lfs_name_t> + 1.
ENDIF.

CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-


scrtext_l.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_m.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_s.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONBUCKET' && lv_count.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
lv_name_f = 'p_buck' && lv_count.
ASSIGN (lv_name_f) TO <lfs_name_f>.
IF <lfs_name_f> IS ASSIGNED.

IF <lfs_name_f> IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck2 = <lfs_name_f>.
lv_count_f = lv_count - 1.
lv_name_t = 'p_buck' && lv_count_f.
ASSIGN (lv_name_t) TO <lfs_name_t>.
IF <lfs_name_t> IS ASSIGNED.
lv_buck1 = <lfs_name_t> + 1.
ENDIF.

CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-


scrtext_l.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_m.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_s.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

ELSEIF p_tcurr = abap_true.


READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>
WITH KEY fieldname = 'TBUCKET' && lv_count.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
lv_name_f = 'p_buck' && lv_count.
ASSIGN (lv_name_f) TO <lfs_name_f>.
IF <lfs_name_f> IS ASSIGNED.

IF <lfs_name_f> IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.

lv_buck2 = <lfs_name_f>.
lv_count_f = lv_count - 1.
lv_name_t = 'p_buck' && lv_count_f.
ASSIGN (lv_name_t) TO <lfs_name_t>.
IF <lfs_name_t> IS ASSIGNED.
lv_buck1 = <lfs_name_t> + 1.
ENDIF.

CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-


scrtext_l.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_m.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_s.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONTBUCKET' && lv_count.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
lv_name_f = 'p_buck' && lv_count.
ASSIGN (lv_name_f) TO <lfs_name_f>.
IF <lfs_name_f> IS ASSIGNED.

IF <lfs_name_f> IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck2 = <lfs_name_f>.
lv_count_f = lv_count - 1.
lv_name_t = 'p_buck' && lv_count_f.
ASSIGN (lv_name_t) TO <lfs_name_t>.
IF <lfs_name_t> IS ASSIGNED.
lv_buck1 = <lfs_name_t> + 1.
ENDIF.

CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-


scrtext_l.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_m.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_s.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

ELSEIF p_hcurr = abap_true.


READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>
WITH KEY fieldname = 'HBUCKET' && lv_count.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
lv_name_f = 'p_buck' && lv_count.
ASSIGN (lv_name_f) TO <lfs_name_f>.
IF <lfs_name_f> IS ASSIGNED.

IF <lfs_name_f> IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.

lv_buck2 = <lfs_name_f>.
lv_count_f = lv_count - 1.
lv_name_t = 'p_buck' && lv_count_f.
ASSIGN (lv_name_t) TO <lfs_name_t>.
IF <lfs_name_t> IS ASSIGNED.
lv_buck1 = <lfs_name_t> + 1.
ENDIF.

CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-


scrtext_l.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_m.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_s.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONHBUCKET' && lv_count.
IF sy-subrc = 0.
IF <lfs_fieldcat> IS ASSIGNED.
lv_name_f = 'p_buck' && lv_count.
ASSIGN (lv_name_f) TO <lfs_name_f>.
IF <lfs_name_f> IS ASSIGNED.

IF <lfs_name_f> IS INITIAL.
<lfs_fieldcat>-no_out = abap_true.
ELSE.
lv_buck2 = <lfs_name_f>.
lv_count_f = lv_count - 1.
lv_name_t = 'p_buck' && lv_count_f.
ASSIGN (lv_name_t) TO <lfs_name_t>.
IF <lfs_name_t> IS ASSIGNED.
lv_buck1 = <lfs_name_t> + 1.
ENDIF.

CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-


scrtext_l.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_m.
CONCATENATE lv_buck1 '-' lv_buck2 INTO <lfs_fieldcat>-
scrtext_s.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

lv_count = lv_count + 1.
CLEAR:lv_buck1,
lv_buck2.
ENDWHILE.

IF gv_highest > 0.
IF p_ccurr = abap_true.
READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>
WITH KEY fieldname = 'BUCKET16'.
IF <lfs_fieldcat> IS ASSIGNED.

lv_buck1 = gv_highest + 1.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONBUCKET16'.
IF <lfs_fieldcat> IS ASSIGNED.

lv_buck1 = gv_highest + 1.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.

ELSEIF p_tcurr = abap_true.


READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>
WITH KEY fieldname = 'TBUCKET16'.
IF <lfs_fieldcat> IS ASSIGNED.

lv_buck1 = gv_highest + 1.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONTBUCKET16'.
IF <lfs_fieldcat> IS ASSIGNED.

lv_buck1 = gv_highest + 1.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.

ELSEIF p_hcurr = abap_true.


READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>
WITH KEY fieldname = 'HBUCKET16'.
IF <lfs_fieldcat> IS ASSIGNED.

lv_buck1 = gv_highest + 1.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.

READ TABLE gt_fieldcat ASSIGNING <lfs_fieldcat>


WITH KEY fieldname = 'ONHBUCKET16'.
IF <lfs_fieldcat> IS ASSIGNED.

lv_buck1 = gv_highest + 1.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_l.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_m.
CONCATENATE '>' lv_buck1 INTO <lfs_fieldcat>-scrtext_s.
ENDIF.
ENDIF.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form alv_build_layout
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM alv_build_layout .

DATA: lc_a TYPE char1 VALUE 'A'.


gs_layout-cwidth_opt = abap_true. "'X'.
gs_layout-zebra = abap_true. "'X'.
gs_layout-col_opt = abap_true. "'X'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form output_display
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM output_display .

* Local Declaration
DATA : lwa_variant TYPE disvariant.
CONSTANTS : lc_a TYPE char1 VALUE 'A'.

DATA: lr_agg TYPE REF TO cl_salv_aggregations.


CLEAR : lwa_variant.

* Passing report name to ALV variant


lwa_variant-report = sy-repid.
* Method call for ALV display
IF go_grid IS BOUND.

IF p_adsale = abap_true OR
p_dist = abap_true.

IF p_det = abap_true.
IF p_ccurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ELSEIF p_tcurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final_tc
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ELSEIF p_hcurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final_hc
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ENDIF.
ELSE.
IF p_ccurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final_s
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ELSEIF p_tcurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final_s_tc
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ELSEIF p_hcurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final_s_hc
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ENDIF.
ENDIF.
ELSE.

IF p_det = abap_true.
IF p_ccurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final_vend
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ENDIF.
ELSE.
IF p_ccurr = abap_true.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_variant = lwa_variant
i_save = lc_a
is_layout = gs_layout
CHANGING
it_outtab = gt_final_s_vend
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form download
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM download .
"for excel functionality
DATA : lr_excel_structure TYPE REF TO data,
lr_source_table_descr TYPE REF TO cl_abap_tabledescr,
lr_table_row_descriptor TYPE REF TO cl_abap_structdescr,
lv_content TYPE xstring,
lt_binary_tab TYPE TABLE OF sdokcntasc,
lv_length TYPE i,
lv_filename1 TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string.

IF p_ccurr = abap_true.

IF p_det = abap_true.

GET REFERENCE OF gt_final INTO lr_excel_structure.


DATA(lr_itab_services) = cl_salv_itab_services=>create_for_table_ref( lr
_excel_structure ).
lr_source_table_descr ?= cl_abap_tabledescr=>describe_by_data_ref( lr_ex
cel_structure ).

lr_table_row_descriptor ?= lr_source_table_descr->get_table_line_type( )
.

"excel instantiate
DATA(lr_tool_xls) = cl_salv_export_tool_ats_xls=>create_for_excel(
EXPORTING
r_data = lr_excel_structure ).

"Add columns to sheet


DATA(lr_config) = lr_tool_xls->configuration( ).

LOOP AT gt_fieldcat INTO DATA(ls_fcat).


IF ls_fcat-scrtext_l CP 'Amount*'
OR ( p_adsale = abap_true AND
( ls_fcat-fieldname = 'SUPERGROUP' OR
ls_fcat-fieldname = 'MSOTAG' OR
ls_fcat-fieldname = 'IRNNUMBER' OR
ls_fcat-fieldname = 'C1AGENCY' OR
ls_fcat-fieldname = 'C2AGENCY' OR
ls_fcat-fieldname = 'ZSABE' OR
ls_fcat-fieldname = 'AGENCYPAN' OR
ls_fcat-fieldname = 'CLIENTPAN'
) ).
CONTINUE.
ELSE.

DATA(lv_heading) = VALUE string( ).


lv_heading = ls_fcat-scrtext_l.

DATA(lv_fieldname) = VALUE string( ).


lv_fieldname = ls_fcat-fieldname.

lr_config->add_column(
EXPORTING
header_text = lv_heading
field_name = lv_fieldname
display_type = if_salv_bs_model_column=>uie_text_view ).
ENDIF.

ENDLOOP.

"get excel in xstring


TRY.
lr_tool_xls->read_result( IMPORTING content = lv_content ).
CATCH cx_root.
ENDTRY.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_content
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_binary_tab.

CONCATENATE TEXT-011 sy-datum sy-uzeit INTO lv_filename1 SEPARATED BY '_


'.

CALL METHOD cl_gui_frontend_services=>file_save_dialog


EXPORTING
default_extension = 'XLSX'
default_file_name = lv_filename1
CHANGING
filename = lv_filename1
path = lv_path
fullpath = lv_fullpath.

IF lv_fullpath IS NOT INITIAL.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
bin_filesize = lv_length
filename = lv_fullpath
filetype = 'BIN'
TABLES
data_tab = lt_binary_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.

IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.

CALL METHOD cl_gui_frontend_services=>execute


EXPORTING
document = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
bad_parameter = 3
file_not_found = 4
path_not_found = 5
file_extension_unknown = 6
error_execute_failed = 7
synchronous_failed = 8
not_supported_by_gui = 9
OTHERS = 10.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDIF.

ENDIF.
ELSE.
GET REFERENCE OF gt_final_s INTO lr_excel_structure.
lr_itab_services = cl_salv_itab_services=>create_for_table_ref( lr_excel
_structure ).
lr_source_table_descr ?= cl_abap_tabledescr=>describe_by_data_ref( lr_ex
cel_structure ).

lr_table_row_descriptor ?= lr_source_table_descr->get_table_line_type( )
.

"excel instantiate
lr_tool_xls = cl_salv_export_tool_ats_xls=>create_for_excel(
EXPORTING
r_data = lr_excel_structure ).

"Add columns to sheet


lr_config = lr_tool_xls->configuration( ).

LOOP AT gt_fieldcat INTO ls_fcat.


IF ls_fcat-scrtext_l CP 'Amount*'.
CONTINUE.
ELSE.

lv_heading = ls_fcat-scrtext_l.
lv_fieldname = ls_fcat-fieldname.

lr_config->add_column(
EXPORTING
header_text = lv_heading
field_name = lv_fieldname
display_type = if_salv_bs_model_column=>uie_text_view ).
ENDIF.
ENDLOOP.

"get excel in xstring


TRY.
lr_tool_xls->read_result( IMPORTING content = lv_content ).
CATCH cx_root.
ENDTRY.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'


EXPORTING
buffer = lv_content
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_binary_tab.

CONCATENATE TEXT-011 sy-datum sy-uzeit INTO lv_filename1 SEPARATED BY '_


'.

CALL METHOD cl_gui_frontend_services=>file_save_dialog


EXPORTING
default_extension = 'XLSX'
default_file_name = lv_filename1
CHANGING
filename = lv_filename1
path = lv_path
fullpath = lv_fullpath.

IF lv_fullpath IS NOT INITIAL.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
bin_filesize = lv_length
filename = lv_fullpath
filetype = 'BIN'
TABLES
data_tab = lt_binary_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.

IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.

CALL METHOD cl_gui_frontend_services=>execute


EXPORTING
document = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
bad_parameter = 3
file_not_found = 4
path_not_found = 5
file_extension_unknown = 6
error_execute_failed = 7
synchronous_failed = 8
not_supported_by_gui = 9
OTHERS = 10.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDIF.

ENDIF.
ENDIF.
ELSEIF p_tcurr = abap_true.
IF p_det = abap_true.

GET REFERENCE OF gt_final_tc INTO lr_excel_structure.


lr_itab_services = cl_salv_itab_services=>create_for_table_ref( lr_excel
_structure ).
lr_source_table_descr ?= cl_abap_tabledescr=>describe_by_data_ref( lr_ex
cel_structure ).

lr_table_row_descriptor ?= lr_source_table_descr->get_table_line_type( )
.

"excel instantiate
lr_tool_xls = cl_salv_export_tool_ats_xls=>create_for_excel(
EXPORTING
r_data = lr_excel_structure ).

"Add columns to sheet


lr_config = lr_tool_xls->configuration( ).

LOOP AT gt_fieldcat INTO ls_fcat.


IF ls_fcat-scrtext_l CP 'Amount*'
OR ( p_adsale = abap_true AND
( ls_fcat-fieldname = 'SUPERGROUP' OR
ls_fcat-fieldname = 'MSOTAG' OR
ls_fcat-fieldname = 'IRNNUMBER' OR
ls_fcat-fieldname = 'C1AGENCY' OR
ls_fcat-fieldname = 'C2AGENCY' OR
ls_fcat-fieldname = 'ZSABE' OR
ls_fcat-fieldname = 'AGENCYPAN' OR
ls_fcat-fieldname = 'CLIENTPAN'
) ).
CONTINUE.
ELSE.
lv_heading = ls_fcat-scrtext_l.
lv_fieldname = ls_fcat-fieldname.

lr_config->add_column(
EXPORTING
header_text = lv_heading
field_name = lv_fieldname
display_type = if_salv_bs_model_column=>uie_text_view ).
ENDIF.
ENDLOOP.

"get excel in xstring


TRY.
lr_tool_xls->read_result( IMPORTING content = lv_content ).
CATCH cx_root.
ENDTRY.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'


EXPORTING
buffer = lv_content
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_binary_tab.
CONCATENATE TEXT-011 sy-datum sy-uzeit INTO lv_filename1 SEPARATED BY '_
'.

CALL METHOD cl_gui_frontend_services=>file_save_dialog


EXPORTING
default_extension = 'XLSX'
default_file_name = lv_filename1
CHANGING
filename = lv_filename1
path = lv_path
fullpath = lv_fullpath.

IF lv_fullpath IS NOT INITIAL.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
bin_filesize = lv_length
filename = lv_fullpath
filetype = 'BIN'
TABLES
data_tab = lt_binary_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.

IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.

CALL METHOD cl_gui_frontend_services=>execute


EXPORTING
document = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
bad_parameter = 3
file_not_found = 4
path_not_found = 5
file_extension_unknown = 6
error_execute_failed = 7
synchronous_failed = 8
not_supported_by_gui = 9
OTHERS = 10.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDIF.

ENDIF.
ELSE.
GET REFERENCE OF gt_final_s_tc INTO lr_excel_structure.
lr_itab_services = cl_salv_itab_services=>create_for_table_ref( lr_excel
_structure ).
lr_source_table_descr ?= cl_abap_tabledescr=>describe_by_data_ref( lr_ex
cel_structure ).

lr_table_row_descriptor ?= lr_source_table_descr->get_table_line_type( )
.

"excel instantiate
lr_tool_xls = cl_salv_export_tool_ats_xls=>create_for_excel(
EXPORTING
r_data = lr_excel_structure ).

"Add columns to sheet


lr_config = lr_tool_xls->configuration( ).

LOOP AT gt_fieldcat INTO ls_fcat.


IF ls_fcat-scrtext_l CP 'Amount*'.
CONTINUE.
ELSE.
lv_heading = ls_fcat-scrtext_l.
lv_fieldname = ls_fcat-fieldname.

lr_config->add_column(
EXPORTING
header_text = lv_heading
field_name = lv_fieldname
display_type = if_salv_bs_model_column=>uie_text_view ).
ENDIF.
ENDLOOP.
"get excel in xstring
TRY.
lr_tool_xls->read_result( IMPORTING content = lv_content ).
CATCH cx_root.
ENDTRY.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'


EXPORTING
buffer = lv_content
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_binary_tab.

CONCATENATE TEXT-011 sy-datum sy-uzeit INTO lv_filename1 SEPARATED BY '_


'.

CALL METHOD cl_gui_frontend_services=>file_save_dialog


EXPORTING
default_extension = 'XLSX'
default_file_name = lv_filename1
CHANGING
filename = lv_filename1
path = lv_path
fullpath = lv_fullpath.

IF lv_fullpath IS NOT INITIAL.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
bin_filesize = lv_length
filename = lv_fullpath
filetype = 'BIN'
TABLES
data_tab = lt_binary_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.

IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.

CALL METHOD cl_gui_frontend_services=>execute


EXPORTING
document = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
bad_parameter = 3
file_not_found = 4
path_not_found = 5
file_extension_unknown = 6
error_execute_failed = 7
synchronous_failed = 8
not_supported_by_gui = 9
OTHERS = 10.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDIF.

ENDIF.
ENDIF.
ELSEIF p_hcurr = abap_true.

IF p_det = abap_true.

GET REFERENCE OF gt_final_hc INTO lr_excel_structure.


lr_itab_services = cl_salv_itab_services=>create_for_table_ref( lr_excel
_structure ).
lr_source_table_descr ?= cl_abap_tabledescr=>describe_by_data_ref( lr_ex
cel_structure ).

lr_table_row_descriptor ?= lr_source_table_descr->get_table_line_type( )
.

"excel instantiate
lr_tool_xls = cl_salv_export_tool_ats_xls=>create_for_excel(
EXPORTING
r_data = lr_excel_structure ).

"Add columns to sheet


lr_config = lr_tool_xls->configuration( ).

LOOP AT gt_fieldcat INTO ls_fcat.

IF ls_fcat-scrtext_l CP 'Amount*'
OR ( p_adsale = abap_true AND
( ls_fcat-fieldname = 'SUPERGROUP' OR
ls_fcat-fieldname = 'MSOTAG' OR
ls_fcat-fieldname = 'IRNNUMBER' OR
ls_fcat-fieldname = 'C1AGENCY' OR
ls_fcat-fieldname = 'C2AGENCY' OR
ls_fcat-fieldname = 'ZSABE' OR
ls_fcat-fieldname = 'AGENCYPAN' OR
ls_fcat-fieldname = 'CLIENTPAN') ).
CONTINUE.
ELSE.

lv_heading = ls_fcat-scrtext_l.
lv_fieldname = ls_fcat-fieldname.

lr_config->add_column(
EXPORTING
header_text = lv_heading
field_name = lv_fieldname
display_type = if_salv_bs_model_column=>uie_text_view ).
ENDIF.

ENDLOOP.

"get excel in xstring


TRY.
lr_tool_xls->read_result( IMPORTING content = lv_content ).
CATCH cx_root.
ENDTRY.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'


EXPORTING
buffer = lv_content
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_binary_tab.

CONCATENATE TEXT-011 sy-datum sy-uzeit INTO lv_filename1 SEPARATED BY '_


'.

CALL METHOD cl_gui_frontend_services=>file_save_dialog


EXPORTING
default_extension = 'XLSX'
default_file_name = lv_filename1
CHANGING
filename = lv_filename1
path = lv_path
fullpath = lv_fullpath.

IF lv_fullpath IS NOT INITIAL.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
bin_filesize = lv_length
filename = lv_fullpath
filetype = 'BIN'
TABLES
data_tab = lt_binary_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.

IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.

CALL METHOD cl_gui_frontend_services=>execute


EXPORTING
document = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
bad_parameter = 3
file_not_found = 4
path_not_found = 5
file_extension_unknown = 6
error_execute_failed = 7
synchronous_failed = 8
not_supported_by_gui = 9
OTHERS = 10.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDIF.

ENDIF.
ELSE.
GET REFERENCE OF gt_final_s_hc INTO lr_excel_structure.
lr_itab_services = cl_salv_itab_services=>create_for_table_ref( lr_excel
_structure ).
lr_source_table_descr ?= cl_abap_tabledescr=>describe_by_data_ref( lr_ex
cel_structure ).

lr_table_row_descriptor ?= lr_source_table_descr->get_table_line_type( )
.

"excel instantiate
lr_tool_xls = cl_salv_export_tool_ats_xls=>create_for_excel(
EXPORTING
r_data = lr_excel_structure ).

"Add columns to sheet


lr_config = lr_tool_xls->configuration( ).

LOOP AT gt_fieldcat INTO ls_fcat.


IF ls_fcat-scrtext_l CP 'Amount*'.
CONTINUE.
ELSE.
lv_heading = ls_fcat-scrtext_l.
lv_fieldname = ls_fcat-fieldname.

lr_config->add_column(
EXPORTING
header_text = lv_heading
field_name = lv_fieldname
display_type = if_salv_bs_model_column=>uie_text_view ).
ENDIF.
ENDLOOP.

"get excel in xstring


TRY.
lr_tool_xls->read_result( IMPORTING content = lv_content ).
CATCH cx_root.
ENDTRY.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_content
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_binary_tab.

CONCATENATE TEXT-011 sy-datum sy-uzeit INTO lv_filename1 SEPARATED BY '_


'.

CALL METHOD cl_gui_frontend_services=>file_save_dialog


EXPORTING
"window_title = text-012
default_extension = 'XLSX'
default_file_name = lv_filename1
CHANGING
filename = lv_filename1
path = lv_path
fullpath = lv_fullpath.

IF lv_fullpath IS NOT INITIAL.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
bin_filesize = lv_length
filename = lv_fullpath
filetype = 'BIN'
TABLES
data_tab = lt_binary_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.

IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.

CALL METHOD cl_gui_frontend_services=>execute


EXPORTING
document = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
bad_parameter = 3
file_not_found = 4
path_not_found = 5
file_extension_unknown = 6
error_execute_failed = 7
synchronous_failed = 8
not_supported_by_gui = 9
OTHERS = 10.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDIF.

ENDIF.
ENDIF.
ENDIF.

ENDFORM.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy