ZSD Cust Open Item-S4D
ZSD Cust Open Item-S4D
ZSD Cust Open Item-S4D
*&---------------------------------------------------------------------*
*& 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.
BEGIN OF lts_named_dref,
name TYPE string,
dref TYPE REF TO data,
END OF lts_named_dref ,
BEGIN OF lty_cust_latest,
customer TYPE kunnr,
amount TYPE fins_vhcur12,
END OF lty_cust_latest,
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.
( 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
( sign = 'I'
option = 'EQ'
low = 'UC' )
( sign = 'I'
option = 'EQ'
low = 'UD' ) ).
( sign = 'I'
option = 'EQ'
low = 'AB' )
( sign = 'I'
option = 'EQ'
low = 'DY' )
( sign = 'I'
option = 'EQ'
low = 'PJ' )
).
IF p_adsale = abap_true.
( 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' ) ).
( sign = 'I'
option = 'EQ'
low = 'ZC' )
( sign = 'I'
option = 'EQ'
low = 'AB' ) ).
( 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.
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.
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.
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.
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.
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.
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.
lv_count = lv_count + 1.
ENDWHILE.
IF p_adsale = abap_true OR
p_dist = abap_true.
IF p_ccurr = abap_true.
IF sy-subrc = 0.
IF p_adsale = abap_true.
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.
DATA(lt_final_db) = lt_final.
IF p_summ = abap_true.
lv_count = 16.
lv_count_cr = 16.
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.
ENDIF.
IF <lfs_summ> <= 0 .
WHILE lv_count >= 1.
lv_db = 'BUCKET' && lv_count.
IF lv_count = 0.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.
IF <lfs_summ> <= 0 .
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDIF.
ENDIF.
ENDWHILE.
ENDIF.
ENDLOOP.
ENDIF.
lv_count = 16.
lv_count_cr = 16.
UNASSIGN:<lfs_summ>,<lfs_cr>.
ENDLOOP.
IF sy-subrc = 0.
IF p_adsale = abap_true.
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.
DATA(lt_final_tc_db) = lt_final_tc.
IF p_summ = abap_true.
lv_count = 16.
lv_count_cr = 16.
IF lv_count = 0.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.
ENDIF.
IF <lfs_summ_tc> <= 0 .
WHILE lv_count >= 1.
lv_db = 'TBUCKET' && lv_count.
IF lv_count = 0.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.
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.
IF sy-subrc = 0.
IF p_adsale = abap_true.
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.
IF p_summ = abap_true.
lv_count = 16.
lv_count_cr = 16.
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.
ENDIF.
IF <lfs_summ_hc> <= 0 .
WHILE lv_count >= 1.
lv_db = 'HBUCKET' && lv_count.
IF lv_count = 0 .
lv_count = 16.
lv_count_cr = 16.
EXIT.
ENDIF.
IF <lfs_summ_hc> <= 0.
lv_count = lv_count - 1.
lv_count_cr = lv_count_cr - 1.
ENDIF.
ENDIF.
ENDWHILE.
ENDIF.
ENDLOOP.
lv_count = 16.
lv_count_cr = 16.
UNASSIGN:<lfs_summ_hc>,<lfs_cr_hc>.
ENDLOOP.
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
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
***INCLUDE ZSD_CUST_OPEN_ITEM_PBO.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
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 .
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 .
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 .
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'.
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.
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 ).
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.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
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 ).
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.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
ENDIF.
ENDIF.
ENDIF.
ELSEIF p_tcurr = abap_true.
IF p_det = abap_true.
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 ).
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.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
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 ).
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.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
ENDIF.
ENDIF.
ENDIF.
ELSEIF p_hcurr = abap_true.
IF p_det = abap_true.
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 ).
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.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
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 ).
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.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.