NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

*&---------------------------------------------------------------------*
*& Include ZNMFICOR087_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data.

REFRESH: gt_output_sel, gt_output_sel_main.
REFRESH: gt_output_cur, gt_output_cur_main.
REFRESH: gt_output.

DATA: beginsdate TYPE d,
predate TYPE d,
ckunnr TYPE i,
clifnr TYPE i.

CLEAR: ckunnr, clifnr, lr_type, lr_type[], lr_const_racct, lr_const_racct[], lr_const_racct_def, lr_const_racct_def[].

beginsdate = s_bdate-low+0(4) && '01' && '01'.

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = s_bdate-low
days = '01'
months = '00'
signum = '-'
years = '00'
IMPORTING
calc_date = predate.

ckunnr = 0.

IF s_ptr[] IS INITIAL.
ckunnr = 1.
ENDIF.

IF s_ptr[] IS NOT INITIAL.
ckunnr = 1.
ENDIF.

CLEAR: lr_type, lr_type[], lr_const_racct, lr_const_racct[], lr_const_racct_def, lr_const_racct_def[].

lr_type = VALUE #( sign = 'I' option = 'EQ' low = 'D' ).
APPEND lr_type.
lr_const_racct = VALUE #( sign = 'I' option = 'EQ' low = '9990300001' ).
APPEND lr_const_racct.
lr_const_racct_def = VALUE #( sign = 'I' option = 'EQ' low = '3401010100' ).
APPEND lr_const_racct_def.

lr_type = VALUE #( sign = 'I' option = 'EQ' low = 'K' ).
APPEND lr_type.
lr_const_racct = VALUE #( sign = 'I' option = 'EQ' low = '9990300002' ).
APPEND lr_const_racct.
lr_const_racct_def = VALUE #( sign = 'I' option = 'EQ' low = '1202010100' ).
APPEND lr_const_racct_def.

SELECT a~racct,l~txt50 AS racctn,a~pprctr AS bpartner,b~ktext AS bpartnername,
CASE WHEN a~racct = '9990300002' THEN 'K' ELSE 'D' END AS bpartnertype,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~hsl ELSE 0 END ) AS slb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~hsl ELSE 0 END ) AS slcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~hsl ELSE 0 END ) AS sldebit,
SUM( a~hsl ) AS sle,
a~rtcur AS rcur, a~rtcur AS zmaincurr,
0 AS group
FROM acdoca AS a
LEFT OUTER JOIN skb1 AS k ON a~rbukrs = k~bukrs AND a~racct = k~saknr
LEFT OUTER JOIN bkpf AS h ON a~rbukrs = h~bukrs AND a~belnr = h~belnr AND a~gjahr = h~gjahr
LEFT OUTER JOIN skat AS l ON a~racct = l~saknr AND l~spras = @sy-langu AND l~ktopl = @c_chart_of_account
LEFT OUTER JOIN cepct AS b ON a~pprctr = b~prctr AND b~spras = @sy-langu AND b~kokrs = @c_chart_of_account AND b~datbi >= @sy-datum
WHERE ( ( a~budat BETWEEN @beginsdate AND @s_bdate-high ) OR ( a~gjahr = @beginsdate+0(4) AND a~bstat = 'C' ) )
AND a~prctr = @s_prctr
AND a~racct IN @lr_const_racct
AND a~rtcur = 'MNT'
AND a~rldnr EQ '0L'
* AND a~rbukrs IN @s_bukrs
AND a~rbukrs = @s_rbukrs
* AND ( @p_revers = 'X' OR ( a~xreversing <> 'X' AND a~xreversed <> 'X' ) )
AND ( @p_revers = 'X' OR ( ( h~xreversing IS NULL OR h~xreversing <> 'X') AND ( h~xreversed IS NULL OR h~xreversed <> 'X') ) )
GROUP BY a~racct, l~txt50, a~pprctr, b~ktext, a~rtcur
INTO CORRESPONDING FIELDS OF TABLE @gt_output_sel.

LOOP AT gt_output_sel.
COLLECT gt_output_sel INTO gt_output_sel_main.
CLEAR gt_output_sel.
ENDLOOP.

CLEAR: gt_output_sel, gt_output_sel[].

SELECT a~racct,l~txt50 AS racctn,a~pprctr AS bpartner,b~ktext AS bpartnername,
CASE WHEN a~racct = '9990300002' THEN 'K' ELSE 'D' END AS bpartnertype,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~tsl ELSE 0 END ) AS slb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~tsl ELSE 0 END ) AS slcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~tsl ELSE 0 END ) AS sldebit,
SUM( a~tsl ) AS sle,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~hsl ELSE 0 END ) AS hslb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~hsl ELSE 0 END ) AS hslcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~hsl ELSE 0 END ) AS hsldebit,
SUM( a~hsl ) AS hsle,
a~rtcur AS rcur
FROM acdoca AS a
LEFT OUTER JOIN skb1 AS k ON a~rbukrs = k~bukrs AND a~racct = k~saknr
LEFT OUTER JOIN bkpf AS h ON a~rbukrs = h~bukrs AND a~belnr = h~belnr AND a~gjahr = h~gjahr
LEFT OUTER JOIN skat AS l ON a~racct = l~saknr AND l~spras = @sy-langu AND l~ktopl = @c_chart_of_account
LEFT OUTER JOIN cepct AS b ON a~pprctr = b~prctr AND b~spras = @sy-langu AND b~kokrs = @c_chart_of_account AND b~datbi >= @sy-datum
WHERE ( ( a~budat BETWEEN @beginsdate AND @s_bdate-high ) OR ( a~gjahr = @beginsdate+0(4) AND a~bstat = 'C' ) )
AND a~prctr = @s_prctr
AND a~racct IN @lr_const_racct
AND a~rtcur <> 'MNT'
AND a~rldnr EQ '0L'
AND a~rbukrs = @s_rbukrs
* AND ( @p_revers = 'X' OR ( a~xreversing <> 'X' AND a~xreversed <> 'X' ) )
AND ( @p_revers = 'X' OR ( ( h~xreversing IS NULL OR h~xreversing <> 'X') AND ( h~xreversed IS NULL OR h~xreversed <> 'X') ) )
GROUP BY a~racct,l~txt50, a~pprctr, b~ktext, a~rtcur
INTO CORRESPONDING FIELDS OF TABLE @gt_output_cur.

LOOP AT gt_output_cur.
COLLECT gt_output_cur INTO gt_output_cur_main.
CLEAR gt_output_cur.
ENDLOOP.

DATA: lv_partner_code TYPE but000-partner,
lv_org_name TYPE but000-name_org1,
lv_name_first TYPE but000-name_first,
lv_name_last TYPE but000-name_last.

CLEAR: gt_output_cur, gt_output_cur[].

SELECT a~racct, l~txt50 AS racctn,
CASE WHEN a~racct = '1202010100' THEN a~lifnr ELSE a~kunnr END AS bpartner,
CASE WHEN a~racct = '1202010100' THEN 'K' ELSE 'D' END AS bpartnertype,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~hsl ELSE 0 END ) AS slb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~hsl ELSE 0 END ) AS slcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~hsl ELSE 0 END ) AS sldebit,
SUM( a~hsl ) AS sle,
a~rtcur AS rcur, a~rtcur AS zmaincurr,
0 AS group
FROM acdoca AS a
LEFT OUTER JOIN skb1 AS k ON a~rbukrs = k~bukrs AND a~racct = k~saknr
LEFT OUTER JOIN bkpf AS h ON a~rbukrs = h~bukrs AND a~belnr = h~belnr AND a~gjahr = h~gjahr
LEFT OUTER JOIN skat AS l ON a~racct = l~saknr AND l~spras = @sy-langu AND l~ktopl = @c_chart_of_account
WHERE ( ( a~budat BETWEEN @beginsdate AND @s_bdate-high ) OR ( a~gjahr = @beginsdate+0(4) AND a~bstat = 'C' ) )
AND a~prctr = @s_prctr
AND a~racct IN @lr_const_racct_def
AND a~rtcur = 'MNT'
AND a~rldnr EQ '0L'
AND a~rbukrs = @s_rbukrs
AND ( ( @ckunnr = 1 AND a~kunnr IN @s_ptr ) )
* AND ( @p_revers = 'X' OR ( a~xreversing <> 'X' AND a~xreversed <> 'X' ) )
AND ( @p_revers = 'X' OR ( ( h~xreversing IS NULL OR h~xreversing <> 'X') AND ( h~xreversed IS NULL OR h~xreversed <> 'X') ) )
GROUP BY a~racct, l~txt50, a~kunnr, a~lifnr, a~rtcur
INTO CORRESPONDING FIELDS OF TABLE @gt_output_sel.

LOOP AT gt_output_sel INTO DATA(ls_output_sel_main).
CLEAR: lv_partner_code, lv_org_name, lv_name_first, lv_name_last.

lv_partner_code = |{ ls_output_sel_main-bpartner ALPHA = IN }|.
SELECT SINGLE a~name_org1, a~name_first, a~name_last INTO (@lv_org_name, @lv_name_first, @lv_name_last)
FROM but000 AS a
WHERE a~partner = @lv_partner_code.

IF lv_org_name IS INITIAL.
ls_output_sel_main-bpartnername = lv_name_first && ' ' && lv_name_last.
ELSE.
ls_output_sel_main-bpartnername = lv_org_name.
ENDIF.

MODIFY gt_output_sel FROM ls_output_sel_main TRANSPORTING bpartnername.
CLEAR: ls_output_sel_main.
ENDLOOP.

LOOP AT gt_output_sel.
COLLECT gt_output_sel INTO gt_output_sel_main.
CLEAR gt_output_sel.
ENDLOOP.

CLEAR: gt_output_sel, gt_output_sel[].

SELECT a~racct, l~txt50 AS racctn,
CASE WHEN a~racct = '1202010100' THEN a~lifnr ELSE a~kunnr END AS bpartner,
CASE WHEN a~racct = '1202010100' THEN 'K' ELSE 'D' END AS bpartnertype,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~tsl ELSE 0 END ) AS slb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~tsl ELSE 0 END ) AS slcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~tsl ELSE 0 END ) AS sldebit,
SUM( a~tsl ) AS sle,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~hsl ELSE 0 END ) AS hslb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~hsl ELSE 0 END ) AS hslcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~hsl ELSE 0 END ) AS hsldebit,
SUM( a~hsl ) AS hsle,
a~rtcur AS rcur
FROM acdoca AS a
LEFT OUTER JOIN skb1 AS k ON a~rbukrs = k~bukrs AND a~racct = k~saknr
LEFT OUTER JOIN bkpf AS h ON a~rbukrs = h~bukrs AND a~belnr = h~belnr AND a~gjahr = h~gjahr
LEFT OUTER JOIN skat AS l ON a~racct = l~saknr AND l~spras = @sy-langu AND l~ktopl = @c_chart_of_account
WHERE ( ( a~budat BETWEEN @beginsdate AND @s_bdate-high ) OR ( a~gjahr = @beginsdate+0(4) AND a~bstat = 'C' ) )
AND a~prctr = @s_prctr
AND a~racct IN @lr_const_racct_def
AND a~rtcur <> 'MNT'
AND a~rldnr EQ '0L'
AND a~rbukrs = @s_rbukrs
AND ( ( @ckunnr = 1 AND a~kunnr IN @s_ptr ) )
* AND ( @p_revers = 'X' OR ( a~xreversing <> 'X' AND a~xreversed <> 'X' ) )
AND ( @p_revers = 'X' OR ( ( h~xreversing IS NULL OR h~xreversing <> 'X') AND ( h~xreversed IS NULL OR h~xreversed <> 'X') ) )
GROUP BY a~racct, l~txt50, a~kunnr ,a~lifnr, a~rtcur
INTO CORRESPONDING FIELDS OF TABLE @gt_output_cur.

LOOP AT gt_output_cur INTO DATA(ls_output_cur_main).
CLEAR: lv_partner_code, lv_org_name, lv_name_first, lv_name_last.

lv_partner_code = |{ ls_output_cur_main-bpartner ALPHA = IN }|.
SELECT SINGLE a~name_org1, a~name_first, a~name_last INTO (@lv_org_name, @lv_name_first, @lv_name_last)
FROM but000 AS a
WHERE a~partner = @lv_partner_code.

IF lv_org_name IS INITIAL.
ls_output_cur_main-bpartnername = lv_name_first && ' ' && lv_name_last.
ELSE.
ls_output_cur_main-bpartnername = lv_org_name.
ENDIF.

MODIFY gt_output_cur FROM ls_output_cur_main TRANSPORTING bpartnername.
CLEAR: ls_output_cur_main.
ENDLOOP.

LOOP AT gt_output_cur.
COLLECT gt_output_cur INTO gt_output_cur_main.
CLEAR gt_output_cur.
ENDLOOP.

CLEAR: gt_output_cur, gt_output_cur[].

SELECT a~racct, l~txt50 AS racctn,
CASE WHEN k~mitkz = 'K' THEN a~lifnr WHEN k~mitkz = 'D' THEN a~kunnr ELSE '0' END AS bpartner,
CASE WHEN b~name_org1 IS INITIAL THEN b~name_first && ' ' && b~name_last ELSE b~name_org1 END AS bpartnername,
CASE WHEN @p_glswap EQ 'X' AND w~zaccountnumber IS NOT NULL THEN w~zserialnumber ELSE CASE WHEN a~koart IS INITIAL THEN k~mitkz ELSE a~koart END END AS bpartnertype,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~tsl ELSE 0 END ) AS slb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~tsl ELSE 0 END ) AS slcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~tsl ELSE 0 END ) AS sldebit,
SUM( a~tsl ) AS sle,
a~rtcur AS rcur, a~rtcur AS zmaincurr,
0 AS group
FROM acdoca AS a
LEFT OUTER JOIN skb1 AS k ON a~rbukrs = k~bukrs AND a~racct = k~saknr
LEFT OUTER JOIN bkpf AS h ON a~rbukrs = h~bukrs AND a~belnr = h~belnr AND a~gjahr = h~gjahr
LEFT OUTER JOIN skat AS l ON a~racct = l~saknr AND l~spras = @sy-langu AND l~ktopl = @c_chart_of_account
LEFT OUTER JOIN but000 AS b ON a~kunnr = b~partner OR a~lifnr = b~partner
LEFT OUTER JOIN znmficot_vatacc AS w ON w~ztype = 'Z' AND a~racct = w~zaccountnumber
WHERE ( ( a~budat BETWEEN @beginsdate AND @s_bdate-high ) OR ( a~gjahr = @beginsdate+0(4) AND a~bstat = 'C' ) )
AND a~prctr = @s_prctr
AND a~rtcur = 'MNT'
AND a~rldnr EQ '0L'
AND a~rbukrs = @s_rbukrs
AND ( ( @ckunnr = 1 AND a~kunnr IN @s_ptr ) )
AND ( ( @p_glswap EQ 'X' AND w~zaccountnumber IS NOT NULL AND w~zserialnumber IN @lr_type ) OR ( ( @p_glswap EQ '' OR w~zaccountnumber IS NULL ) AND ( a~koart IN @lr_type OR k~mitkz IN @lr_type ) ) )
* AND ( @p_revers = 'X' OR ( a~xreversing <> 'X' AND a~xreversed <> 'X' ) )
AND ( @p_revers = 'X' OR ( ( h~xreversing IS NULL OR h~xreversing <> 'X') AND ( h~xreversed IS NULL OR h~xreversed <> 'X') ) )
GROUP BY a~racct,l~txt50, a~kunnr,a~lifnr,b~name_org1,k~mitkz, a~koart, b~name_first, b~name_last, a~rtcur, w~zaccountnumber, w~zserialnumber
INTO CORRESPONDING FIELDS OF TABLE @gt_output_sel.

LOOP AT gt_output_sel.
COLLECT gt_output_sel INTO gt_output_sel_main.
CLEAR gt_output_sel.
ENDLOOP.

CLEAR: gt_output_sel, gt_output_sel[].

SELECT a~racct, l~txt50 AS racctn,
CASE WHEN k~mitkz = 'K' THEN a~lifnr WHEN k~mitkz = 'D' THEN a~kunnr ELSE '0' END AS bpartner,
CASE WHEN b~name_org1 IS INITIAL THEN b~name_first && ' ' && b~name_last ELSE b~name_org1 END AS bpartnername,
CASE WHEN @p_glswap EQ 'X' AND w~zaccountnumber IS NOT NULL THEN w~zserialnumber ELSE CASE WHEN a~koart IS INITIAL THEN k~mitkz ELSE a~koart END END AS bpartnertype,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~tsl ELSE 0 END ) AS slb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~tsl ELSE 0 END ) AS slcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~tsl ELSE 0 END ) AS sldebit,
SUM( a~tsl ) AS sle,
SUM( CASE WHEN ( ( a~budat BETWEEN @beginsdate AND @predate ) OR ( a~bstat = 'C' ) ) THEN a~hsl ELSE 0 END ) AS hslb,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'H' THEN a~hsl ELSE 0 END ) AS hslcredit,
SUM( CASE WHEN a~budat BETWEEN @s_bdate-low AND @s_bdate-high AND a~drcrk = 'S' THEN a~hsl ELSE 0 END ) AS hsldebit,
SUM( a~hsl ) AS hsle,
a~rtcur AS rcur
FROM acdoca AS a
LEFT OUTER JOIN skb1 AS k ON a~rbukrs = k~bukrs AND a~racct = k~saknr
LEFT OUTER JOIN bkpf AS h ON a~rbukrs = h~bukrs AND a~belnr = h~belnr AND a~gjahr = h~gjahr
LEFT OUTER JOIN skat AS l ON a~racct = l~saknr AND l~spras = @sy-langu AND l~ktopl = @c_chart_of_account
LEFT OUTER JOIN but000 AS b ON a~kunnr = b~partner OR a~lifnr = b~partner
LEFT OUTER JOIN znmficot_vatacc AS w ON w~ztype = 'Z' AND a~racct = w~zaccountnumber
WHERE ( ( a~budat BETWEEN @beginsdate AND @s_bdate-high ) OR ( a~gjahr = @beginsdate+0(4) AND a~bstat = 'C' ) )
AND a~prctr = @s_prctr
AND a~rtcur <> 'MNT'
AND a~rldnr EQ '0L'
AND a~rbukrs = @s_rbukrs
AND ( ( @ckunnr = 1 AND a~kunnr IN @s_ptr ) )
AND ( ( @p_glswap EQ 'X' AND w~zaccountnumber IS NOT NULL AND w~zserialnumber IN @lr_type ) OR ( ( @p_glswap EQ '' OR w~zaccountnumber IS NULL ) AND ( a~koart IN @lr_type OR k~mitkz IN @lr_type ) ) )
* AND ( @p_revers = 'X' OR ( a~xreversing <> 'X' AND a~xreversed <> 'X' ) )
AND ( @p_revers = 'X' OR ( ( h~xreversing IS NULL OR h~xreversing <> 'X') AND ( h~xreversed IS NULL OR h~xreversed <> 'X') ) )
GROUP BY a~racct,l~txt50, a~kunnr,a~lifnr,b~name_org1,k~mitkz, a~koart, b~name_first, b~name_last, a~rtcur, w~zaccountnumber, w~zserialnumber
INTO CORRESPONDING FIELDS OF TABLE @gt_output_cur.

LOOP AT gt_output_cur.
COLLECT gt_output_cur INTO gt_output_cur_main.
CLEAR: gt_output_cur.
ENDLOOP.

CLEAR: gt_output_cur, gt_output_cur[].

DATA count TYPE i.
DATA order TYPE i.

LOOP AT gt_output_cur_main.
count = count + 1.
order = order + 1.
CLEAR gt_output_sel_main.
MOVE gt_output_cur_main-racct TO gt_output_sel_main-racct.
MOVE gt_output_cur_main-racctn TO gt_output_sel_main-racctn.
MOVE gt_output_cur_main-bpartner TO gt_output_sel_main-bpartner.
MOVE gt_output_cur_main-bpartnername TO gt_output_sel_main-bpartnername.
MOVE gt_output_cur_main-bpartnertype TO gt_output_sel_main-bpartnertype.
MOVE gt_output_cur_main-slb TO gt_output_sel_main-slb.
MOVE gt_output_cur_main-slcredit TO gt_output_sel_main-slcredit.
MOVE gt_output_cur_main-sldebit TO gt_output_sel_main-sldebit.
MOVE gt_output_cur_main-sle TO gt_output_sel_main-sle.
MOVE gt_output_cur_main-rcur TO gt_output_sel_main-rcur.
MOVE gt_output_cur_main-rcur TO gt_output_sel_main-zmaincurr.
MOVE count TO gt_output_sel_main-group.
MOVE order TO gt_output_sel_main-order.
APPEND gt_output_sel_main.
order = order + 1.
CLEAR gt_output_sel_main.
MOVE gt_output_cur_main-racct TO gt_output_sel_main-racct.
MOVE gt_output_cur_main-racctn TO gt_output_sel_main-racctn.
MOVE gt_output_cur_main-bpartner TO gt_output_sel_main-bpartner.
MOVE gt_output_cur_main-bpartnername TO gt_output_sel_main-bpartnername.
MOVE gt_output_cur_main-bpartnertype TO gt_output_sel_main-bpartnertype.
MOVE gt_output_cur_main-hslb TO gt_output_sel_main-slb.
MOVE gt_output_cur_main-hslcredit TO gt_output_sel_main-slcredit.
MOVE gt_output_cur_main-hsldebit TO gt_output_sel_main-sldebit.
MOVE gt_output_cur_main-hsle TO gt_output_sel_main-sle.
MOVE 'MNT' TO gt_output_sel_main-rcur.
MOVE gt_output_cur_main-rcur TO gt_output_sel_main-zmaincurr.
MOVE count TO gt_output_sel_main-group.
MOVE order TO gt_output_sel_main-order.
APPEND gt_output_sel_main.
CLEAR: gt_output_cur_main, gt_output_sel_main.
ENDLOOP.

DELETE gt_output_sel_main WHERE slb = 0 AND slcredit = 0 AND sldebit = 0 AND sle = 0.

LOOP AT gt_output_sel_main.
MOVE-CORRESPONDING gt_output_sel_main TO gt_output.
APPEND gt_output.
CLEAR: gt_output_sel_main, gt_output.
ENDLOOP.

LOOP AT gt_output.
gt_output-bpartner = |{ gt_output-bpartner ALPHA = OUT }| .
gt_output-zkoart = gt_output-bpartnertype.
IF gt_output-bpartnertype = 'D'.
gt_output-bpartnertype = 'Aвлага'.
ELSEIF gt_output-bpartnertype = 'K'.
gt_output-bpartnertype = 'Өглөг'.
ENDIF.

IF gt_output-rcur = 'MNT' AND gt_output-group = 0.
wa_cellcolor-fname = 'SLB'.
wa_cellcolor-color-col = 1.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '0'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
wa_cellcolor-fname = 'SLCREDIT'.
wa_cellcolor-color-col = 1.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '0'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
wa_cellcolor-fname = 'SLDEBIT'.
wa_cellcolor-color-col = 1.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '0'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
wa_cellcolor-fname = 'SLE'.
wa_cellcolor-color-col = 1.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '0'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
ELSEIF gt_output-rcur <> 'MNT'.
wa_cellcolor-fname = 'SLB'.
wa_cellcolor-color-col = 4.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '1'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
wa_cellcolor-fname = 'SLCREDIT'.
wa_cellcolor-color-col = 4.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '1'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
wa_cellcolor-fname = 'SLDEBIT'.
wa_cellcolor-color-col = 4.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '1'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
wa_cellcolor-fname = 'SLE'.
wa_cellcolor-color-col = 4.
wa_cellcolor-color-int = '0'.
wa_cellcolor-color-inv = '1'.
APPEND wa_cellcolor TO gt_output-cellcolor.
CLEAR: wa_cellcolor.
ENDIF.
MODIFY gt_output.
CLEAR: gt_output.
ENDLOOP.
SORT gt_output BY bpartner bpartnertype racct group order.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_result_show
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_result_show .
IF g_has_error EQ abap_true.
EXIT.
ENDIF.
PERFORM frm_build_alv.
PERFORM frm_display_screen.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_build_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_build_alv .
REFRESH gt_fieldcat.
DEFINE set_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-scrtext_l = &2.
gs_fieldcat-outputlen = &3.
gs_fieldcat-cfieldname = &4.
gs_fieldcat-do_sum = &5.
gs_fieldcat-lowercase = &6.

APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
END-OF-DEFINITION.

set_fieldcat 'BPARTNER' 'Харилцагч' '' '' '' ''.
set_fieldcat 'BPARTNERNAME' 'Харилцагч нэр' '40' '' '' 'X'.
set_fieldcat 'RCUR' 'Валют' '' '' '' ''.
set_fieldcat 'SLE' 'Авлага' '' 'RCUR' 'X' ''.
set_fieldcat 'SLDEBIT' 'Өглөг' '' 'RCUR' 'X' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_display_screen
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_screen .

REFRESH it_sort.
gs_layout-sel_mode = ''.
gs_layout-cwidth_opt = 'X'.
gs_layout-detailinit = 'X'.
gs_layout-stylefname = 'CELLSTYLE'.
gs_layout-ctab_fname = 'CELLCOLOR'.

CLEAR wa_sort.
wa_sort-spos = 1.
wa_sort-fieldname = 'BPARTNER'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
wa_sort-spos = 2.
wa_sort-fieldname = 'BPARTNERNAME'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_grid_settings = g_glay
i_callback_user_command = 'FRM_USER_COMMAND'
i_callback_pf_status_set = 'FRM_SET_STATUS'
i_callback_html_top_of_page = 'FRM_TOP_OF_PAGE'
i_html_height_top = 20
i_html_height_end = 8
is_layout_lvc = gs_layout
it_sort_lvc = it_sort
it_fieldcat_lvc = gt_fieldcat[]
i_save = 'X'
TABLES
t_outtab = gt_output
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: lo_grid TYPE REF TO cl_gui_alv_grid.

RANGES:lr_saknr FOR acdoca-racct.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lo_grid.

CALL METHOD lo_grid->check_changed_data.
rs_selfield-refresh = abap_true.
CASE r_ucomm.
WHEN 'ZREF'. " Report data refresh
PERFORM frm_get_data.
WHEN '&IC1'. " Double-click
READ TABLE gt_output INDEX rs_selfield-tabindex.
IF sy-subrc <> 0 OR gt_output-racct IS INITIAL.
EXIT.
ENDIF.

DATA: lv_preport TYPE c LENGTH 1,
lv_pdfopt TYPE c LENGTH 1,
lv_partner TYPE kunnr,
lv_ppctr TYPE acdoca-pprctr.

CLEAR: lv_ppctr, lv_partner.
lv_partner = gt_output-bpartner.
IF gt_output-racct IN lr_const_racct_def.
lv_preport = '2'.
ELSEIF gt_output-racct IN lr_const_racct.
lv_preport = '3'.
lv_ppctr = gt_output-bpartner.
CLEAR lv_partner.
ELSE.
lv_preport = '1'.
ENDIF.

IF lv_preport = '1'.
lv_pdfopt = 'D'.
ELSE.
lv_pdfopt = 'K'.
ENDIF.

SUBMIT znmfico001
WITH preport = lv_preport
WITH s_prctr = s_prctr
WITH s_bdate IN s_bdate
WITH s_racct = gt_output-racct
WITH s_pprctr = lv_ppctr
WITH s_kunnr = lv_partner
WITH s_lifnr = lv_partner
WITH pdfopt = lv_pdfopt
WITH p_glswap = p_glswap
WITH p_revers = p_revers
WITH p_group = ''
WITH p_detail = 'X'
AND RETURN.
WHEN '&XPA'. " Expand-click
PERFORM alv_exp_col_form USING ''.
rs_selfield-refresh = 'X'.

WHEN '&OMP'. " Collapse-click
PERFORM alv_exp_col_form USING 'X'.
rs_selfield-refresh = 'X'.

WHEN '&STO'.
PERFORM alv_subtotal_on_off_form.

WHEN '&ZREPORT'.
PERFORM frm_show_report.

ENDCASE.

rs_selfield-refresh = abap_true.
rs_selfield-col_stable = abap_true.
rs_selfield-row_stable = abap_true.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_STATUS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_set_status USING extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS' ."EXCLUDING extab.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_top_of_page
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_top_of_page USING document TYPE REF TO cl_dd_document.

DATA:lv_text TYPE sdydo_text_element,
lv_string TYPE string,
lv_position TYPE i.
lv_text = 'Харилцагчийн ерөнхий үлдэгдэл'.
CLEAR gv_report_group_title.
gv_report_group_title = lv_text.
lv_string = |<div style="text-align:center"><span><font size="5">{ gv_report_group_title }</font></span></div>|.

SEARCH document->html_table FOR document->cursor.
IF sy-subrc EQ 0.
lv_position = sy-tabix.
CALL METHOD document->html_insert
EXPORTING
contents = lv_string
CHANGING
position = lv_position.
ENDIF.

CLEAR lv_text.

CONCATENATE TEXT-t11 ' ' s_bdate-low+6(2) '.' s_bdate-low+4(2) '.' s_bdate-low+0(4) ' - ' ' ' s_bdate-high+6(2) '.' s_bdate-high+4(2) '.' s_bdate-high+0(4) INTO lv_text.
lv_string = |<div style="text-align:right"><span><font size="3">{ lv_text }</font></span></div>|.

SEARCH document->html_table FOR document->cursor.
IF sy-subrc EQ 0.

lv_position = sy-tabix.

CALL METHOD document->html_insert
EXPORTING
contents = lv_string
CHANGING
position = lv_position.

ENDIF.

CALL METHOD document->new_line.
CALL METHOD document->add_gap
EXPORTING
width = 2.

DATA: s_rbukrs TYPE acdoca-rbukrs,
s_bukrsname TYPE t001-butxt,
s_prctrname TYPE cepct-ktext.

CLEAR lv_text.

SELECT SINGLE bukrs FROM cepc_bukrs INTO s_rbukrs
WHERE prctr = s_prctr.

SELECT SINGLE butxt FROM t001 INTO s_bukrsname WHERE bukrs = s_rbukrs.

SELECT SINGLE ltext FROM cepct INTO s_prctrname
WHERE spras = sy-langu AND prctr = s_prctr.

lv_text = TEXT-t09 && `: ` && s_rbukrs && ` | ` && TEXT-t12 && `: ` && s_bukrsname.


CALL METHOD document->add_text
EXPORTING
text = lv_text
sap_style = 'Strong'.

CLEAR lv_text.

CALL METHOD document->new_line.
CALL METHOD document->add_gap
EXPORTING
width = 2.

lv_text = TEXT-t10 && `: ` && |{ s_prctr ALPHA = OUT }| && ` | ` && TEXT-t13 && `: ` && s_prctrname.

CALL METHOD document->add_text
EXPORTING
text = lv_text
sap_style = 'Strong'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form alv_exp_col_form
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p_expand
*&---------------------------------------------------------------------*
FORM alv_exp_col_form USING p_expand TYPE boolean.
DATA: lv_et_sort TYPE slis_t_sortinfo_alv.
CALL FUNCTION 'REUSE_ALV_GRID_LAYOUT_INFO_GET'
IMPORTING
et_sort = lv_et_sort
EXCEPTIONS
no_infos = 1
program_error = 2.

LOOP AT lv_et_sort INTO DATA(ls_alv_sort).
ls_alv_sort-expa = p_expand.
MODIFY lv_et_sort FROM ls_alv_sort.
ENDLOOP.

CALL FUNCTION 'REUSE_ALV_GRID_LAYOUT_INFO_SET'
EXPORTING
it_sort = lv_et_sort.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form alv_subtotal_on_off_form
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM alv_subtotal_on_off_form.
DATA: lv_et_sort TYPE slis_t_sortinfo_alv.
CALL FUNCTION 'REUSE_ALV_GRID_LAYOUT_INFO_GET'
IMPORTING
et_sort = lv_et_sort
EXCEPTIONS
no_infos = 1
program_error = 2.

LOOP AT lv_et_sort INTO DATA(ls_alv_sort).
IF ls_alv_sort-subtot = 'X'.
ls_alv_sort-subtot = ''.
ELSE.
ls_alv_sort-subtot = 'X'.
ENDIF.
MODIFY lv_et_sort FROM ls_alv_sort.
ENDLOOP.

CALL FUNCTION 'REUSE_ALV_GRID_LAYOUT_INFO_SET'
EXPORTING
it_sort = lv_et_sort.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_show_report
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_show_report .
TYPES: BEGIN OF ty_zusr,
name_first TYPE adrp-name_first,
name_last TYPE adrp-name_last,
name_text TYPE adrp-name_text,
END OF ty_zusr.

DATA: f_funcname TYPE funcname,
ls_header TYPE znmficosf086_hdr,
outoptions TYPE ssfcompop,
control_parameters TYPE ssfctrlop,
mesg TYPE string,
w_cx_root TYPE REF TO cx_root,
lv_printed_user TYPE char80,
lv_text TYPE string,
lv_begin_date TYPE string,
lv_end_date TYPE string.

DATA: lv_total_beginbal TYPE acdoca-wsl,
lv_total_income TYPE acdoca-wsl,
lv_total_outcome TYPE acdoca-wsl,
lv_total_endbal TYPE acdoca-wsl,
lv_empty_text TYPE char40.

DATA: lt_zusr TYPE ty_zusr,
lt_report_data TYPE STANDARD TABLE OF znmficos086_item WITH HEADER LINE.

control_parameters-langu = sy-langu.
outoptions-tdnewid = abap_true.
outoptions-tddest = 'LP01'.
outoptions-tdimmed = abap_true.
outoptions-tddelete = abap_true.

CLEAR: lv_begin_date, lv_end_date.
lv_begin_date = |{ s_bdate-low DATE = USER }|.
lv_end_date = |{ s_bdate-high DATE = USER }|.
ls_header-zdate_text = | { lv_begin_date } - { lv_end_date } |.
ls_header-zprctr_name = gv_prctr_name.

CLEAR lv_text.
SELECT SINGLE ltext FROM cepct INTO lv_text WHERE spras = sy-langu AND prctr = s_prctr.
ls_header-zprctr_name = |"{ lv_text }" салбар|.

lv_total_income = 0.
lv_total_outcome = 0.
lv_total_beginbal = 0.
lv_total_endbal = 0.

LOOP AT gt_output.
MOVE-CORRESPONDING gt_output TO lt_report_data.
lt_report_data-zorder = gt_output-order.
lt_report_data-zgroup = gt_output-group.
IF gt_output-rcur EQ 'MNT'.
lt_report_data-slb_local = gt_output-slb.
lt_report_data-sldebit_local = gt_output-sldebit.
lt_report_data-slcredit_local = gt_output-slcredit.
lt_report_data-sle_local = gt_output-sle.
ENDIF.
APPEND lt_report_data.
CLEAR: lt_report_data, gt_output.
ENDLOOP.

LOOP AT lt_report_data.
SUM.
lv_total_beginbal = lt_report_data-slb_local.
lv_total_income = lt_report_data-sldebit_local.
lv_total_outcome = lt_report_data-slcredit_local.
lv_total_endbal = lt_report_data-sle_local.
ENDLOOP.

ls_header-zbeginbal = lv_total_beginbal.
ls_header-zincome = lv_total_income.
ls_header-zoutcome = lv_total_outcome.
ls_header-zendbal = lv_total_endbal.

SELECT SINGLE a~name_first, a~name_last, a~name_text
INTO @lt_zusr
FROM adrp AS a INNER JOIN usr21 AS b ON a~persnumber = b~persnumber
WHERE b~bname = @sy-uname.

IF lt_zusr-name_text IS NOT INITIAL.
lv_printed_user = lt_zusr-name_text.
ELSEIF lt_zusr-name_first IS NOT INITIAL OR lt_zusr-name_last IS NOT INITIAL.
lv_printed_user = |{ lt_zusr-name_last } { lt_zusr-name_first }|.
ENDIF.
CLEAR lt_zusr.

lv_empty_text = |/ /|.
IF lv_printed_user IS NOT INITIAL.
ls_header-zprinted_user = |/ { lv_printed_user } /|.
ELSE.
ls_header-zprinted_user = lv_empty_text.
ENDIF.

ls_header-ztitle = gv_report_group_title.
ls_header-sldebit = lv_total_income.
ls_header-slcredit = lv_total_outcome.
CLEAR lv_printed_user.

SORT lt_report_data BY racct racctn.

TRY.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZNMFICOF086'
IMPORTING
fm_name = f_funcname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
CHECK sy-subrc = 0.

CALL FUNCTION f_funcname
EXPORTING
control_parameters = control_parameters
output_options = outoptions
user_settings = ''
head = ls_header
TABLES
gt_item = lt_report_data
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
CHECK sy-subrc = 0.

CATCH cx_root INTO w_cx_root.
mesg = w_cx_root->get_text( ).
MESSAGE mesg TYPE 'E'.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = 'ME'
msg_nr = syst-msgno
msg_ty = syst-msgty
msg_v1 = syst-msgv1
msg_v2 = syst-msgv2
msg_v3 = syst-msgv3
msg_v4 = syst-msgv4
EXCEPTIONS
OTHERS = 1.
EXIT.
ENDTRY.
ENDFORM.
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.