Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 29

*&---------------------------------------------------------------------*

*& Include ZFI_R002_F01


*&---------------------------------------------------------------------*
*& Form f_get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_data .

PERFORM f_get_vf_kred.

CHECK NOT t_kred[] IS INITIAL.

PERFORM f_get_bsik.

PERFORM f_get_bsak.

*-Customer Items
CHECK p_box3 EQ 'X'.

PERFORM f_check_vendor.

CHECK NOT t_kred_cust[] IS INITIAL.

PERFORM f_get_bsid.

PERFORM f_get_bsad.

ENDFORM. " f_get_data

*&---------------------------------------------------------------------*
*& Form f_man_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_man_data .

PERFORM f_progress_msg USING text-m01.

PERFORM f_man_bsak.

PERFORM f_man_bsik.

IF p_box3 EQ 'X'.

PERFORM f_man_bsad.

PERFORM f_man_bsid.

ENDIF.

IF t_man[] IS INITIAL.
d_error = 'X'.
MESSAGE i003(aq) WITH 'No Data Found !!'.
ELSE.
SORT t_man BY ktokk lifnr.

ENDIF.

ENDFORM. " f_man_data


*&---------------------------------------------------------------------*
*& Form f_dis_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_dis_data .
DATA lt_tot LIKE t_man.
DATA ld_tabix LIKE sy-tabix.
DATA ld_ktokk TYPE i.
DATA lt_man LIKE t_man OCCURS 0 WITH HEADER LINE.

CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO TRANSACTION 'ZRFI09'.
ENDCASE.

ADD 1 TO d_display.
sy-lsind = 0.

lt_man[] = t_man[].
SORT lt_man BY ktokk.
DELETE ADJACENT DUPLICATES FROM lt_man COMPARING ktokk.
DESCRIBE TABLE lt_man LINES ld_ktokk.

PERFORM f_progress_msg USING text-d01.

CLEAR t_man.

LOOP AT t_man.
ld_tabix = sy-tabix.

ADD 1 TO d_ktokk_index.

SET LEFT SCROLL-BOUNDARY COLUMN c_left_scroll.

IF ld_ktokk EQ 1.
IF ld_tabix EQ 1.
PERFORM f_dis_on_change.
ENDIF.
ELSE.

ON CHANGE OF t_man-ktokk.

PERFORM f_dis_on_change.

ENDON.
ENDIF.

PERFORM f_dis_data_main.

AT END OF ktokk.

SUM.
PERFORM f_dis_data_subtotal.
*-----Collect Grandtotal

t_grand_tot = t_man.
CLEAR : t_grand_tot-ktokk ,t_grand_tot-lifnr,t_grand_tot-name1.
COLLECT t_grand_tot.
CLEAR t_grand_tot.

ENDAT.

ENDLOOP.

PERFORM f_dis_data_grandtotal.

CLEAR : t_grand_tot,t_grand_tot[],d_top_count.

CHECK d_display EQ 1.
CALL SCREEN 2000.

ENDFORM. " f_dis_data


*&---------------------------------------------------------------------*
*& Form f_top_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_top_of_page .
DATA ld_pages(20).
DATA ld_top_count(10).
DATA ld_page(10).

sy-lsind = 0.

ADD 1 TO d_top_count.

IF d_display EQ 1.
d_pages = d_top_count.
ENDIF.

WRITE : / p_butxt,
/ 'Overdue Payments Report'.

SKIP.

IF d_display EQ 1.

WRITE : / 'As per : ', p_augdt.


ELSE.
CLEAR : ld_pages,ld_page,ld_top_count.
WRITE d_pages TO ld_page.
SHIFT ld_page LEFT DELETING LEADING space.
WRITE d_top_count TO ld_top_count.
SHIFT ld_top_count LEFT DELETING LEADING space.

CONCATENATE 'Page:' ld_top_count 'of' ld_page INTO ld_pages


SEPARATED BY space.

WRITE : / 'As per : ', p_augdt,


AT c_w_page ld_pages.

ENDIF.

WRITE : / sy-uline(c_w_max).
SKIP.

IF d_rem_rows LT 10 AND d_ktokk_index EQ 1.

ELSE.

CHECK d_top_count GT 1.
IF d_ktokk_index LT d_ktokk_rows.
* IF p_brk1 EQ 'X'.
* CHECK d_ktokk_index GT 1.
* ENDIF.

PERFORM f_header.

ENDIF.

ENDIF.

IF d_uline_f EQ 'X' AND d_uline_total_f EQ ''.


WRITE : / sy-uline(c_w_max).
ENDIF.

CLEAR d_uline_f .

ENDFORM. " f_top_OF_PAGE


*&---------------------------------------------------------------------*
*& Form f_sel_screen_bukrs
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_sel_screen_bukrs .
SELECT SINGLE butxt FROM t001
INTO p_butxt
WHERE bukrs EQ p_bukrs.
IF sy-subrc NE 0.
MESSAGE e033(zmap) WITH 'Company Code doesnt exist !'.
ENDIF.

ENDFORM. " f_sel_screen_bukrs


*&---------------------------------------------------------------------*
*& Form f_sel_screen_output
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_sel_screen_output .
DATA : restrict TYPE sscr_restrict,
optlist TYPE sscr_opt_list,
ass TYPE sscr_ass.

LOOP AT SCREEN.
IF screen-name CP '*P_BUTXT*'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

optlist-name = 'OBJECTKEY1'.
optlist-options-eq = 'X'.
APPEND optlist TO restrict-opt_list_tab.

ass-kind = 'S'.
ass-name = 'S_BLART'.
ass-sg_main = 'I'.
ass-sg_addy = space.
ass-op_main = 'OBJECTKEY1'.
APPEND ass TO restrict-ass_tab.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'


EXPORTING
program = sy-repid
restriction = restrict
* DB = ' '
EXCEPTIONS
too_late = 1
repeated = 2
selopt_without_options = 3
selopt_without_signs = 4
invalid_sign = 5
empty_option_list = 6
invalid_kind = 7
repeated_kind_a = 8
OTHERS = 9.

* IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.

ENDFORM. " f_sel_screen_output


*&---------------------------------------------------------------------*
*& Form f_initial
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_initial .

DATA ld_ova(5).
DATA ld_ovb(5).

*-Period
ld_ova = '0'.
ld_ovb = p_ov1.
SHIFT ld_ovb LEFT DELETING LEADING space.
CONCATENATE '0' '-' ld_ovb INTO d_ov_1 SEPARATED BY space.

CLEAR : ld_ova,ld_ovb.
d_ov11 = p_ov1 + 1.
ld_ova = d_ov11.
ld_ovb = p_ov2.
SHIFT ld_ova LEFT DELETING LEADING space.
SHIFT ld_ovb LEFT DELETING LEADING space.
CONCATENATE ld_ova '-' ld_ovb INTO d_ov_2 SEPARATED BY space.

CLEAR : ld_ova,ld_ovb.
d_ov21 = p_ov2 + 1.
ld_ova = d_ov21.
ld_ovb = p_ov3.
SHIFT ld_ova LEFT DELETING LEADING space.
SHIFT ld_ovb LEFT DELETING LEADING space.
CONCATENATE ld_ova '-' ld_ovb INTO d_ov_3 SEPARATED BY space.

CLEAR : ld_ova,ld_ovb.
d_ov31 = p_ov3 + 1.
ld_ova = d_ov31.
ld_ovb = 'Prior'.
SHIFT ld_ova LEFT DELETING LEADING space.
SHIFT ld_ovb LEFT DELETING LEADING space.
CONCATENATE ld_ova '-' ld_ovb INTO d_ov_4 SEPARATED BY space.

IF p_ov2 LE p_ov1.
d_error = 'X'.

MESSAGE i033(zmap) WITH


'Overdue II value must be greater than Overdue I!'.

ENDIF.

IF p_ov3 LE p_ov2.
d_error = 'X'.

MESSAGE i033(zmap) WITH


'Overdue III value must be greater than Overdue II!'.

ENDIF.
* CHECK p_rad2 EQ 'X'.

* d_ktokk_y = 'OTH'.
*
* d_ktokk_z = 'CUST'.

ENDFORM. " f_initial


*&---------------------------------------------------------------------*
*& Form f_dis_data_main
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_dis_data_main .

* WRITE : / sy-uline(c_w_max).
WRITE : / sy-vline,
t_man-lifnr, sy-vline,
t_man-name1, sy-vline,
t_man-dmbtr_t CURRENCY t_man-waers, sy-vline,
t_man-dmbtr CURRENCY t_man-waers, sy-vline,
t_man-dmbtr-1 CURRENCY t_man-waers, sy-vline,
t_man-dmbtr-2 CURRENCY t_man-waers, sy-vline,
t_man-dmbtr-3 CURRENCY t_man-waers, sy-vline,
t_man-dmbtr-p CURRENCY t_man-waers, sy-vline.

ENDFORM. " f_dis_data_main


*&---------------------------------------------------------------------*
*& Form f_dis_data_subtotal
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_dis_data_subtotal .

WRITE : / sy-uline(c_w_max).
d_uline_f = 'X'.
* Inserted by MRK - hardcode - Temp solution
* 23 June 09
IF t_man-bukrs = '8888'.
WRITE : / sy-vline,
16(35) 'TOTAL', sy-vline,
t_man-dmbtr_t CURRENCY 'PHP', sy-vline,
t_man-dmbtr CURRENCY 'PHP', sy-vline,
t_man-dmbtr-1 CURRENCY 'PHP', sy-vline,
t_man-dmbtr-2 CURRENCY 'PHP', sy-vline,
t_man-dmbtr-3 CURRENCY 'PHP', sy-vline,
t_man-dmbtr-p CURRENCY 'PHP', sy-vline.
ELSE.
WRITE : / sy-vline,
16(35) 'TOTAL', sy-vline,
t_man-dmbtr_t CURRENCY c_waers_idr, sy-vline,
t_man-dmbtr CURRENCY c_waers_idr, sy-vline,
t_man-dmbtr-1 CURRENCY c_waers_idr, sy-vline,
t_man-dmbtr-2 CURRENCY c_waers_idr, sy-vline,
t_man-dmbtr-3 CURRENCY c_waers_idr, sy-vline,
t_man-dmbtr-p CURRENCY c_waers_idr, sy-vline.
ENDIF.
WRITE : / sy-uline(c_w_max).
d_uline_total_f = 'X'.

ENDFORM. " f_dis_data_subtotal


*&---------------------------------------------------------------------*
*& Form f_header
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_header .
WRITE : / sy-uline(c_w_max).
WRITE : / sy-vline,
(10) '', sy-vline,
(35) '', sy-vline,
(20) '', sy-vline,
(20) '' CENTERED, sy-vline,
(89) '<-------------------- Days Overdue -------------------->'
CENTERED, sy-vline.
* (20) '' CENTERED, sy-vline.

WRITE : / sy-vline,
(10) 'Vendor', sy-vline,
(35) '', sy-vline,
(20) '', sy-vline,
(20) '' CENTERED, sy-vline NO-GAP,
(91) sy-uline CENTERED NO-GAP, sy-vline.
* (20) '' CENTERED, sy-vline.

WRITE : / sy-vline,
(10) 'Code', sy-vline,
(35) 'Vendor Name', sy-vline,
(20) 'Total Balance' CENTERED, sy-vline,
(20) 'Current' CENTERED, sy-vline,
(20) d_ov_1 CENTERED, sy-vline,
(20) d_ov_2 CENTERED, sy-vline,
(20) d_ov_3 CENTERED, sy-vline,
(20) d_ov_4 CENTERED, sy-vline.
* (20) 'Credit Limit' CENTERED, sy-vline.

WRITE : / sy-uline(c_w_max).

ENDFORM. " f_header


*&---------------------------------------------------------------------*
*& Form f_get_bsik
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsik .

PERFORM f_progress_msg USING text-g01.

IF p_box2 EQ 'X' AND p_box3 EQ ''.


* umsks not blank
PERFORM f_get_bsik_3.
ELSEIF p_box2 EQ '' AND p_box3 EQ 'X'.
* umsks blank
PERFORM f_get_bsik_2.
ELSEIF p_box2 EQ 'X' AND p_box3 EQ 'X'.
* umsks all
PERFORM f_get_bsik_1.
ENDIF.

ENDFORM. " f_get_bsik


*&---------------------------------------------------------------------*
*& Form f_get_bsak
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsak .

PERFORM f_progress_msg USING text-g02.

IF p_box2 EQ 'X' AND p_box3 EQ ''.


* umsks not blank
PERFORM f_get_bsak_3.
ELSEIF p_box2 EQ '' AND p_box3 EQ 'X'.
* umsks blank
PERFORM f_get_bsak_2.
ELSEIF p_box2 EQ 'X' AND p_box3 EQ 'X'.
* umsks all
PERFORM f_get_bsak_1.
ENDIF.
ENDFORM. " f_get_bsak

*&--------------------------------------------------------------------*
*& Form f_progress_msg
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FU_TEXT text
*---------------------------------------------------------------------*
FORM f_progress_msg USING fu_text.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'


EXPORTING
text = fu_text.

ENDFORM. " f_progress_msg


*&---------------------------------------------------------------------*
*& Form f_get_bsik_1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsik_1 .

DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.


DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.

SELECT
bukrs
lifnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
shkzg
dmbtr
sgtxt
FROM bsik
APPENDING TABLE t_bsik
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_kred-lifnr
AND budat LE p_augdt.

CLEAR lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.

ENDFORM. " f_get_bsik_1


*&---------------------------------------------------------------------*
*& Form F_GET_BSIK_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_GET_BSIK_2 .
DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.
DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.

SELECT
bukrs
lifnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
shkzg
dmbtr
sgtxt
FROM bsik
APPENDING TABLE t_bsik
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_kred-lifnr
AND umsks EQ space
AND budat LE p_augdt.

CLEAR lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.
ENDFORM. " F_GET_BSIK_2
*&---------------------------------------------------------------------*
*& Form f_get_bsik_3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsik_3 .
DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.
DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.

SELECT
bukrs
lifnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
shkzg
dmbtr
sgtxt
FROM bsik
APPENDING TABLE t_bsik
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_kred-lifnr
AND umsks NE space
AND budat LE p_augdt.

CLEAR lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.
ENDFORM. " f_get_bsik_3
*&---------------------------------------------------------------------*
*& Form f_get_bsak_1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsak_1 .

DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.


DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.
SELECT
bukrs
lifnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
shkzg
dmbtr
sgtxt
FROM bsak
APPENDING TABLE t_bsak
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_kred-lifnr
AND augdt GT p_augdt
AND budat LE p_augdt.

CLEAR lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.

ENDFORM. " f_get_bsak_1


*&---------------------------------------------------------------------*
*& Form f_get_bsak_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsak_2 .

DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.


DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.

SELECT
bukrs
lifnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
shkzg
dmbtr
sgtxt
FROM bsak
APPENDING TABLE t_bsak
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_kred-lifnr
AND umsks EQ space
AND augdt GT p_augdt
AND budat LE p_augdt.

CLEAR lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.

ENDFORM. " f_get_bsak_2


*&---------------------------------------------------------------------*
*& Form f_get_bsak_3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsak_3 .
DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.
DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.

SELECT
bukrs
lifnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
shkzg
dmbtr
sgtxt
FROM bsak
APPENDING TABLE t_bsak
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND lifnr EQ lt_kred-lifnr
AND umsks NE space
AND augdt GT p_augdt
AND budat LE p_augdt.

CLEAR lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.

ENDFORM. " f_get_bsak_3


*&---------------------------------------------------------------------*
*& Form f_get_vf_kred
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_vf_kred .
DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.

PERFORM f_progress_msg USING text-g03.

*-Vendor Data
SELECT lifnr kunnr name1 xverr ktokk
***added by carito.sabar 17.05.2005
sortl
***end of added by carito.sabar 17.05.2005
FROM vf_kred
INTO TABLE t_kred
WHERE lifnr IN s_lifnr
AND bukrs EQ p_bukrs
AND akont IN s_akont
AND ktokk IN s_ktokk
***added by carito.sabar 17.05.2005
AND sortl IN s_sortl.
***end of added by carito.sabar 17.05.2005
IF sy-subrc NE 0.
ELSE.
SORT t_kred BY lifnr.

*-Vendor Account Group Descriptions


lt_kred[] = t_kred[].
SORT lt_kred BY ktokk.
DELETE ADJACENT DUPLICATES FROM lt_kred COMPARING ktokk.
DELETE lt_kred WHERE ktokk EQ space.

CHECK NOT lt_kred[] IS INITIAL.

SELECT * FROM t077y


INTO TABLE t_t077y
FOR ALL ENTRIES IN lt_kred
WHERE spras EQ sy-langu
AND ktokk EQ lt_kred-ktokk.

SORT t_t077y BY ktokk.

ENDIF.

ENDFORM. " f_get_vf_kred


*&---------------------------------------------------------------------*
*& Form f_get_bsid
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsid .

DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.


DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred_cust FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.

SELECT
bukrs
kunnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
kkber
shkzg
dmbtr
FROM bsid
APPENDING TABLE t_bsid
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND kunnr EQ lt_kred-kunnr
AND budat LE p_augdt.

CLEAR : lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.

ENDFORM. " f_get_bsid


*&---------------------------------------------------------------------*
*& Form f_get_bsad
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_get_bsad .

DATA lt_kred LIKE t_kred OCCURS 0 WITH HEADER LINE.


DATA : ld_from TYPE i,
ld_to TYPE i.

ld_from = 1.
ld_to = c_max_rows.

DO.
APPEND LINES OF t_kred_cust FROM ld_from TO ld_to TO lt_kred.
IF lt_kred[] IS INITIAL.EXIT.ENDIF.

SELECT
bukrs
kunnr
umsks
umskz
augdt
augbl
zuonr
gjahr
belnr
buzei
budat
zfbdt
zbd1t
zbd2t
zbd3t
rebzg
kkber
shkzg
dmbtr
FROM bsad
APPENDING TABLE t_bsad
FOR ALL ENTRIES IN lt_kred
WHERE bukrs EQ p_bukrs
AND kunnr EQ lt_kred-kunnr
AND augdt GT p_augdt
AND budat LE p_augdt.

CLEAR : lt_kred[].
ADD c_max_rows TO : ld_from,ld_to.

ENDDO.

ENDFORM. " f_get_bsad


*&---------------------------------------------------------------------*
*& Form f_check_vendor
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_check_vendor .

t_kred_cust[] = t_kred[].
DELETE t_kred_cust WHERE kunnr EQ space.
DELETE t_kred_cust WHERE xverr EQ space.

SORT t_kred_cust BY kunnr.

ENDFORM. " f_check_vendor


*&---------------------------------------------------------------------*
*& Form f_free_memory
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_free_memory .

FREE : t_bsik,t_bsak,t_bsid,t_bsad,t_kred,t_kred_cust,t_grand_tot,
d_ktokk_index,d_ktokk_rows,d_top_count,d_pages,d_display.

ENDFORM. " f_free_memory


*&---------------------------------------------------------------------*
*& Form f_man_bsak
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_man_bsak .

DATA ld_ov_days LIKE rfposx-verzn.

LOOP AT t_bsak.
CLEAR : t_man, t_kred,ld_ov_days.
READ TABLE t_kred WITH KEY lifnr = t_bsak-lifnr BINARY SEARCH.

t_man-bukrs = t_bsak-bukrs.
t_man-ktokk = t_kred-ktokk.
t_man-lifnr = t_bsak-lifnr.
t_man-name1 = t_kred-name1.
***added by carito.sabar 17.05.2005
t_man-sortl = t_kred-sortl.
***end of added by carito.sabar 17.05.2005
t_man-waers = c_waers_idr.

* Inserted by MRK - hardcode - Temp solution


* 23 June 09
IF t_man-bukrs = '8888'.
t_man-waers = 'PHP'.
ENDIF.

IF t_bsak-shkzg = 'H'.
t_bsak-dmbtr = t_bsak-dmbtr * ( - 1 ).
ENDIF.

t_man-dmbtr_t = t_bsak-dmbtr.

PERFORM f_overdue USING t_bsak-zfbdt


t_bsak-zbd1t
t_bsak-zbd2t
t_bsak-zbd3t
t_bsak-shkzg
t_bsak-rebzg
c_koart_vendor
CHANGING ld_ov_days.

IF ld_ov_days BETWEEN 0 AND p_ov1.


t_man-dmbtr-1 = t_bsak-dmbtr.

ELSEIF ld_ov_days BETWEEN d_ov11 AND p_ov2.


t_man-dmbtr-2 = t_bsak-dmbtr.

ELSEIF ld_ov_days BETWEEN d_ov21 AND p_ov3.


t_man-dmbtr-3 = t_bsak-dmbtr.

ELSEIF ld_ov_days GE d_ov31.


t_man-dmbtr-p = t_bsak-dmbtr.
ELSE.
t_man-dmbtr = t_bsak-dmbtr.
ENDIF.

COLLECT t_man.

ENDLOOP.

ENDFORM. " f_man_bsak


*&---------------------------------------------------------------------*
*& Form f_man_bsik
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_man_bsik .

DATA ld_ov_days LIKE rfposx-verzn.

LOOP AT t_bsik.

CLEAR : t_man, t_kred,ld_ov_days.

READ TABLE t_kred WITH KEY lifnr = t_bsik-lifnr BINARY SEARCH.

t_man-bukrs = t_bsik-bukrs.
t_man-ktokk = t_kred-ktokk.
t_man-lifnr = t_bsik-lifnr.
t_man-name1 = t_kred-name1.
***added by carito.sabar 17.05.2005
t_man-sortl = t_kred-sortl.
***end of added by carito.sabar 17.05.2005
t_man-waers = c_waers_idr.

* Inserted by MRK - hardcode - Temp solution


* 23 June 09
IF t_man-bukrs = '8888'.
t_man-waers = 'PHP'.
ENDIF.

IF t_bsik-shkzg = 'H'.
t_bsik-dmbtr = t_bsik-dmbtr * ( - 1 ).
ENDIF.

t_man-dmbtr_t = t_bsik-dmbtr.

PERFORM f_overdue USING t_bsik-zfbdt


t_bsik-zbd1t
t_bsik-zbd2t
t_bsik-zbd3t
t_bsik-shkzg
t_bsik-rebzg
c_koart_vendor
CHANGING ld_ov_days.

IF ld_ov_days BETWEEN 0 AND p_ov1.


t_man-dmbtr-1 = t_bsik-dmbtr.

ELSEIF ld_ov_days BETWEEN d_ov11 AND p_ov2.


t_man-dmbtr-2 = t_bsik-dmbtr.

ELSEIF ld_ov_days BETWEEN d_ov21 AND p_ov3.


t_man-dmbtr-3 = t_bsik-dmbtr.

ELSEIF ld_ov_days GE d_ov31.


t_man-dmbtr-p = t_bsik-dmbtr.
ELSE.
t_man-dmbtr = t_bsik-dmbtr.
ENDIF.
COLLECT t_man.

ENDLOOP.

ENDFORM. " f_man_bsik


*&---------------------------------------------------------------------*
*& Form f_man_bsad
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_man_bsad .

DATA ld_ov_days LIKE rfposx-verzn.

LOOP AT t_bsad.
CLEAR : t_man, t_kred_cust,ld_ov_days.

READ TABLE t_kred_cust WITH KEY kunnr = t_bsad-kunnr BINARY SEARCH.

t_man-bukrs = t_bsad-bukrs.
t_man-ktokk = t_kred_cust-ktokk.
t_man-lifnr = t_kred_cust-lifnr.
t_man-name1 = t_kred_cust-name1.
***added by carito.sabar 17.05.2005
t_man-sortl = t_kred_cust-sortl.
***end of added by carito.sabar 17.05.2005
t_man-waers = c_waers_idr.

* Inserted by MRK - hardcode - Temp solution


* 23 June 09
IF t_man-bukrs = '8888'.
t_man-waers = 'PHP'.
ENDIF.

IF t_bsad-shkzg = 'H'.
t_bsad-dmbtr = t_bsad-dmbtr * ( - 1 ).
ENDIF.

t_man-dmbtr_t = t_bsad-dmbtr.

PERFORM f_overdue USING t_bsad-zfbdt


t_bsad-zbd1t
t_bsad-zbd2t
t_bsad-zbd3t
t_bsad-shkzg
t_bsad-rebzg
c_koart_customer
CHANGING ld_ov_days.

IF ld_ov_days BETWEEN 0 AND p_ov1.


t_man-dmbtr-1 = t_bsad-dmbtr.

ELSEIF ld_ov_days BETWEEN d_ov11 AND p_ov2.


t_man-dmbtr-2 = t_bsad-dmbtr.
ELSEIF ld_ov_days BETWEEN d_ov21 AND p_ov3.
t_man-dmbtr-3 = t_bsad-dmbtr.

ELSEIF ld_ov_days GE d_ov31.


t_man-dmbtr-p = t_bsad-dmbtr.
ELSE.
t_man-dmbtr = t_bsad-dmbtr.
ENDIF.

COLLECT t_man.

ENDLOOP.

ENDFORM. " f_man_bsad


*&---------------------------------------------------------------------*
*& Form f_man_bsid
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_man_bsid .

DATA ld_ov_days LIKE rfposx-verzn.

LOOP AT t_bsid.
CLEAR : t_man, t_kred_cust,ld_ov_days.

READ TABLE t_kred_cust WITH KEY kunnr = t_bsid-kunnr BINARY SEARCH.

t_man-bukrs = t_bsid-bukrs.
t_man-ktokk = t_kred_cust-ktokk.
t_man-lifnr = t_kred_cust-lifnr.
t_man-name1 = t_kred_cust-name1.
***added by carito.sabar 17.05.2005
t_man-sortl = t_kred_cust-sortl.
***end of added by carito.sabar 17.05.2005
t_man-waers = c_waers_idr.

* Inserted by MRK - hardcode - Temp solution


* 23 June 09
IF t_man-bukrs = '8888'.
t_man-waers = 'PHP'.
ENDIF.

IF t_bsid-shkzg = 'H'.
t_bsid-dmbtr = t_bsid-dmbtr * ( - 1 ).
ENDIF.

t_man-dmbtr_t = t_bsid-dmbtr.

PERFORM f_overdue USING t_bsid-zfbdt


t_bsid-zbd1t
t_bsid-zbd2t
t_bsid-zbd3t
t_bsid-shkzg
t_bsid-rebzg
c_koart_customer
CHANGING ld_ov_days.

IF ld_ov_days BETWEEN 0 AND p_ov1.


t_man-dmbtr-1 = t_bsid-dmbtr.

ELSEIF ld_ov_days BETWEEN d_ov11 AND p_ov2.


t_man-dmbtr-2 = t_bsid-dmbtr.

ELSEIF ld_ov_days BETWEEN d_ov21 AND p_ov3.


t_man-dmbtr-3 = t_bsid-dmbtr.

ELSEIF ld_ov_days GE d_ov31.


t_man-dmbtr-p = t_bsid-dmbtr.
ELSE.
t_man-dmbtr = t_bsid-dmbtr.
ENDIF.

COLLECT t_man.

ENDLOOP.

ENDFORM. " f_man_bsid


*&---------------------------------------------------------------------*
*& Form f_dis_data_grandtotal
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_dis_data_grandtotal .

SKIP.

READ TABLE t_grand_tot INDEX 1.

WRITE : / sy-uline(c_w_max).
d_uline_f = 'X'.
WRITE : / sy-vline,
16(35) 'GRANDTOTAL', sy-vline,
t_grand_tot-dmbtr_t CURRENCY t_man-waers, sy-vline,
t_grand_tot-dmbtr CURRENCY t_man-waers, sy-vline,
t_grand_tot-dmbtr-1 CURRENCY t_man-waers, sy-vline,
t_grand_tot-dmbtr-2 CURRENCY t_man-waers, sy-vline,
t_grand_tot-dmbtr-3 CURRENCY t_man-waers, sy-vline,
t_grand_tot-dmbtr-p CURRENCY t_man-waers, sy-vline.
WRITE : / sy-uline(c_w_max).
d_uline_total_f = 'X'.

ENDFORM. " f_dis_data_grandtotal


*&---------------------------------------------------------------------*
*& Form f_end_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_end_of_page .

CHECK d_uline_f = ''.

CHECK d_ktokk_index GT 0.
CHECK d_ktokk_index LE d_ktokk_rows.

WRITE : / sy-uline(c_w_max).

ENDFORM. " f_end_of_page


*&---------------------------------------------------------------------*
*& Form f_dis_data_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_dis_data_alv .

DATA : ld_desc1 LIKE dd03p-scrtext_l,


ld_desc2 LIKE dd03p-scrtext_l,
ld_desc3 LIKE dd03p-scrtext_l,
ld_desc4 LIKE dd03p-scrtext_l.

PERFORM f_alv_build_print.

*-ALV Events
macro_alv_regevent 'TOP_OF_PAGE' 'F_ALV_TOP_OF_PAGE'.
* macro_alv_regevent 'TOP_OF_LIST' 'F_ALV_TOP_OF_LIST'.

PERFORM f_comment_build USING t_grid_top_of_page[].


*-ALV Catalog

"FName Reftb Refld Type Desc Out.Length Hotspot


PERFORM f_alv_catalog
USING t_alv_fieldcat 'T_MAN' :
'KTOKK' 'T077K' 'KTOKK' '' 'Vendor Group' '15' '' '' 'X',
'LIFNR' 'LFA1' 'LIFNR' '' 'Vendor Code' '10' '' '' '' ,
***added by carito.sabar 17.05.2005
'SORTL' 'LFA1' 'SORTL' '' 'Vend.Search term' '10' '' '' 'X' ,
***end of added by carito.sabar 17.05.2005
'NAME1' 'LFA1' 'NAME1' '' 'Vendor Name' '35' '' '' '' .

* CONCATENATE 'Period' d_monat-1+2 INTO ld_desc1 SEPARATED BY space.


* CONCATENATE 'Period' d_monat-2+2 INTO ld_desc2 SEPARATED BY space.
* CONCATENATE 'Period' d_monat-3+2 INTO ld_desc3 SEPARATED BY space.

ld_desc1 = d_ov_1.
ld_desc2 = d_ov_2.
ld_desc3 = d_ov_3.
ld_desc4 = d_ov_4.

PERFORM f_alv_catalog_curr
USING t_alv_fieldcat 'T_MAN' :
"field reftb reffild curr curr rjust desc lenth hotsp
'DMBTR_T' 'LFC1' 'UM01S' 'T_MAN' 'WAERS' 'R' 'X' 'Total Balance'
'21' '',
'DMBTR' 'LFC1' 'UM01S' 'T_MAN' 'WAERS' 'R' 'X' 'Current Period'
'21' '',

'DMBTR-1' 'LFC1' 'UM01S' 'T_MAN' 'WAERS' 'R' 'X' ld_desc1


'21' '',
'DMBTR-2' 'LFC1' 'UM01S' 'T_MAN' 'WAERS' 'R' 'X' ld_desc2
'21' '',
'DMBTR-3' 'LFC1' 'UM01S' 'T_MAN' 'WAERS' 'R' 'X' ld_desc3
'21' '',
'DMBTR-P' 'LFC1' 'UM01S' 'T_MAN' 'WAERS' 'R' 'X' ld_desc4
'21' ''.

*-ALV Lay Out


d_alv_layout-group_change_edit = 'X'.
" text for 1st col. in total line
d_alv_layout-subtotals_text = 'Total'.
d_alv_layout-totals_text = 'Grand Total'.
d_alv_layout-detail_popup = 'X'.

*-ALV Sort
PERFORM f_alv_sort USING :
'1' 'KTOKK' 'T_MAN' 'X' '' '*' 'X' '' '' ''.

*-ALV Display
* PERFORM f_alv_listdisplay
* TABLES t_man.

d_alv_repid = sy-repid.

IF p_rad1 EQ 'X'. "ALV GRID


PERFORM f_alv_griddisplay
TABLES t_man.
ELSEIF p_rad2 EQ 'X'.
PERFORM f_alv_listdisplay
TABLES t_man.
ENDIF.

ENDFORM. " f_dis_data_alv

*&--------------------------------------------------------------------*
*& Form f_alv_top_of_page
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM f_alv_top_of_page .

CLEAR t_t077y.
READ TABLE t_t077y WITH KEY ktokk = t_man-ktokk BINARY SEARCH.

WRITE : / 'Vendor Group : ', t_man-ktokk ,' - ', t_t077y-txt30.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
* i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = t_grid_top_of_page.
ENDFORM. "f_alv_top_of_page

*&--------------------------------------------------------------------*
*& Form f_alv_top_of_list
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM f_alv_top_of_list .

WRITE : / p_butxt,
/ 'Overdue Payment Report'.

SKIP.

WRITE : / 'As per : ', p_augdt.


WRITE : / sy-uline(c_w_max).
SKIP.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
* i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = t_grid_top_of_list.

ENDFORM. "f_alv_top_of_list
*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_2000 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
SUPPRESS DIALOG.
LEAVE TO LIST-PROCESSING.
PERFORM f_dis_data.

ENDMODULE. " STATUS_2000 OUTPUT


*&---------------------------------------------------------------------*
*& Form f_comment_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_LIST_TOP_OF_PAGE[] text
*----------------------------------------------------------------------*
FORM f_comment_build USING lt_top_of_page TYPE
slis_t_listheader.

DATA: ls_line TYPE slis_listheader.


DATA: ld_info LIKE ls_line-info.

* LIST HEADING LINE: TYPE H


CLEAR ls_line.
ls_line-typ = 'H'.
"LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = text-100.
APPEND ls_line TO lt_top_of_page.

* STATUS LINE: TYPE S


CLEAR : ls_line,ld_info.
WRITE p_augdt TO ld_info.
ls_line-typ = 'H'.
ls_line-key = ''.
ls_line-info = ''.
APPEND ls_line TO lt_top_of_page.

CLEAR : ls_line.
ls_line-typ = 'H'.
ls_line-info = text-101.
APPEND ls_line TO lt_top_of_page.

* STATUS LINE: TYPE S : As Per


CLEAR : ls_line,ld_info.
WRITE p_augdt TO ld_info.
ls_line-typ = 'S'.
ls_line-key = text-s01.
ls_line-info = ld_info.
APPEND ls_line TO lt_top_of_page.

*
* LS_LINE-KEY = TEXT-103.
* LS_LINE-INFO = TEXT-104.
* APPEND LS_LINE TO LT_TOP_OF_PAGE.
*
*
*
** ACTION LINE: TYPE A
* CLEAR LS_LINE.
* LS_LINE-TYP = 'A'.
** LS_LINE-KEY: NOT USED FOR THIS TYPE
* LS_LINE-INFO = TEXT-105.
* APPEND LS_LINE TO LT_TOP_OF_PAGE.

ENDFORM. " f_comment_build


*&---------------------------------------------------------------------*
*& Form f_dis_on_change
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_dis_on_change .

DATA lt_man LIKE t_man OCCURS 0 WITH HEADER LINE.

d_ktokk_index = 1.

lt_man[] = t_man[].
DELETE lt_man WHERE ktokk NE t_man-ktokk.
DESCRIBE TABLE lt_man LINES d_ktokk_rows.

* IF p_brk1 EQ 'X'.
* NEW-PAGE.
* ENDIF.

*-----Reserve for 10 lines


d_rem_rows = sy-linct - sy-linno.
IF d_rem_rows LT c_reserve_lines.
NEW-PAGE.
ENDIF.

SKIP 2.
CLEAR t_t077y.
READ TABLE t_t077y WITH KEY ktokk = t_man-ktokk BINARY SEARCH.
WRITE : / 'Vendor Group : ', t_t077y-txt30.
PERFORM f_header.

CLEAR d_uline_f.
CLEAR d_uline_total_f.

ENDFORM. " f_dis_on_change

*&--------------------------------------------------------------------*
*& Form f_overdue
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FU_ZFBDT text
* -->FU_ZBD1T text
* -->FU_ZBD2T text
* -->FU_ZBD3T text
* -->FU_SHKZG text
* -->FU_REBZG text
* -->FU_KOART text
* -->FC_OV_DAYS text
*---------------------------------------------------------------------*
FORM f_overdue USING fu_zfbdt
fu_zbd1t
fu_zbd2t
fu_zbd3t
fu_shkzg
fu_rebzg
fu_koart
CHANGING fc_ov_days.
DATA ld_faedt LIKE sy-datum.

CALL FUNCTION 'NET_DUE_DATE_GET'


EXPORTING
i_zfbdt = fu_zfbdt
i_zbd1t = fu_zbd1t
i_zbd2t = fu_zbd2t
i_zbd3t = fu_zbd3t
i_shkzg = fu_shkzg
i_rebzg = fu_rebzg
i_koart = fu_koart
IMPORTING
e_faedt = ld_faedt.

CHECK sy-subrc EQ 0.

CALL FUNCTION 'ITEM_OVERDUE_DAYS'


EXPORTING
key_date = p_augdt
* PAY_DATE =
due_date = ld_faedt
* CLEAR_DATE =
IMPORTING
* over_skonto1_days =
overdue_days = fc_ov_days.

ENDFORM. "F_DUE_DATE

----------------------------------------------------------------------------------
Extracted by Mass Download version 1.4.3 - E.G.Mellodew. 1998-2017. Sap Release 750

You might also like