the value is not comes into driver program(subroutine pool).and also it doesnt have internal table in program
*&---------------------------------------------------------------------*
*& Subroutine Pool Z_FI_DUNNING_SUBROUT
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& This is subroutine program to print script ZF150_BE_DUNN_01
*& for dunning letter.
*&---------------------------------------------------------------------*
PROGRAM Z_FI_DUNNING_SUBROUT.
*&---------------------------------------------------------------------*
*& Form GET_PO_DETAILS
*&---------------------------------------------------------------------*
* To get PO or ref and PO DATE
*----------------------------------------------------------------------*
* -->INPUT text
* -->OUTPUT text
*----------------------------------------------------------------------*
FORM GET_PO_DETAILS TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY.
DATA: L_BELNR(10), " billing doc/sales inv
L_VBELV TYPE VBELN_VON, " to get sales order no
L_BSTKD(15), "TYPE bstkd
L_BSTDK TYPE BSTDK,
EINDT2 TYPE STRING,
D1 TYPE STRING,
D2 TYPE STRING,
D3 TYPE STRING,
L_GJAHR(4),
L_BLART TYPE BLART,
L_REBZG TYPE REBZG,
V_AWKEY LIKE BKPF-AWKEY.
CLEAR : L_BELNR,L_VBELV,L_BSTKD,L_BSTDK,EINDT2,D1,D2,D3,L_BLART,L_REBZG.
READ TABLE INPUT WITH KEY NAME = 'MHND-BELNR'. " READ THE billling no
L_BELNR = INPUT-VALUE.
CLEAR INPUT.
READ TABLE INPUT WITH KEY NAME = 'MHND-GJAHR'.
L_GJAHR = INPUT-VALUE.
CLEAR INPUT.
SELECT SINGLE BLART
INTO L_BLART
FROM BKPF
WHERE BELNR EQ L_BELNR
AND GJAHR EQ L_GJAHR.
IF L_BLART NE 'RV'.
*checking for credit value
SELECT SINGLE REBZG
INTO L_REBZG
FROM BSEG
WHERE BELNR EQ L_BELNR
AND GJAHR EQ L_GJAHR
AND KOART EQ 'D'
AND SHKZG EQ 'H'.
MOVE L_REBZG TO L_BSTKD.
MOVE SPACE TO EINDT2.
ELSE.
*to get sales order number
SELECT SINGLE VBELV INTO L_VBELV
FROM VBFA
WHERE VBELN EQ L_BELNR
AND VBTYP_V EQ 'C'.
IF L_VBELV = ' '.
SELECT SINGLE AWKEY FROM BKPF
INTO V_AWKEY
WHERE BELNR = L_BELNR
AND GJAHR = L_GJAHR.
L_BELNR = V_AWKEY+0(10).
*to get sales order number
SELECT SINGLE VBELV INTO L_VBELV
FROM VBFA
WHERE VBELN EQ L_BELNR
AND VBTYP_V EQ 'C'.
ENDIF.
*to get PO number and date
IF SY-SUBRC EQ 0.
SELECT SINGLE BSTKD BSTDK
INTO (L_BSTKD , L_BSTDK)
FROM VBKD
WHERE VBELN EQ L_VBELV.
ENDIF.
MOVE L_BSTDK TO EINDT2.
D3 = EINDT2+0(4).
D2 = EINDT2+4(2).
D1 = EINDT2+6(2).
CONCATENATE D1 '.' D2 '.' D3 INTO EINDT2.
ENDIF.
READ TABLE OUTPUT WITH KEY NAME = 'G_PONO'.
OUTPUT-VALUE = L_BSTKD.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PONO'.
READ TABLE OUTPUT WITH KEY NAME = 'G_PODAT'.
OUTPUT-VALUE = EINDT2.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PODAT'.
ENDFORM. "GET_PO_DETAILS
*&---------------------------------------------------------------------*
*& Form GET_BILL_AMOUNT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->INPUT text
* -->OUTPUT text
*----------------------------------------------------------------------*
FORM GET_BILL_AMOUNT TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY.
DATA: L_BELNR1(10), " billing doc/sales inv
L_WRBTR TYPE SUFPF_F150,
L_GJAHR(4),
L_WRBTR1 TYPE STRING,
L_BLART TYPE BLART,
L_REBZG TYPE REBZG.
CLEAR : L_BELNR1,L_WRBTR,L_REBZG,L_BLART.
READ TABLE INPUT WITH KEY NAME = 'MHND-BELNR'. " READ THE billling no
L_BELNR1 = INPUT-VALUE.
CLEAR INPUT.
READ TABLE INPUT WITH KEY NAME = 'MHND-GJAHR'.
L_GJAHR = INPUT-VALUE.
CLEAR INPUT.
SELECT SINGLE BLART
INTO L_BLART
FROM BKPF
WHERE BELNR EQ L_BELNR1
AND GJAHR EQ L_GJAHR.
IF L_BLART NE 'RV'.
*checking for credit value
SELECT SINGLE REBZG
INTO L_REBZG
FROM BSEG
WHERE BELNR EQ L_BELNR1
AND GJAHR EQ L_GJAHR
AND KOART EQ 'D'
AND SHKZG EQ 'H'.
MOVE SPACE TO L_WRBTR1.
ELSE.
*to get invoice amount
SELECT SINGLE WRBTR INTO L_WRBTR
FROM BSEG
WHERE BELNR EQ L_BELNR1
AND BUZEI EQ '001'
AND GJAHR EQ L_GJAHR.
MOVE L_WRBTR TO L_WRBTR1.
ENDIF.
IF SY-SUBRC EQ 0.
READ TABLE OUTPUT WITH KEY NAME = 'G_BILLAMT'.
OUTPUT-VALUE = L_WRBTR1.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_BILLAMT'.
ENDIF.
ENDFORM. "GET_BILL_AMOUNT
*&---------------------------------------------------------------------*
*& Form GET_TERMDAYS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->INPUT text
* -->OUTPUT text
*----------------------------------------------------------------------*
FORM GET_TERMDAYS TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY.
DATA: L_KUNNR TYPE KUNNR, " billing doc/sales inv
L_ZTERM(4),
L_ZTAG1 TYPE DZTAGE,
L_ZTAG TYPE STRING.
CLEAR : L_KUNNR,L_ZTERM,L_ZTAG1.
READ TABLE INPUT WITH KEY NAME = 'F150D-KTONR'. " READ THE billling no
L_KUNNR = INPUT-VALUE.
CLEAR INPUT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_KUNNR
IMPORTING
OUTPUT = L_KUNNR.
*to get invoice amount
SELECT SINGLE ZTERM INTO L_ZTERM
FROM KNB1
WHERE KUNNR EQ L_KUNNR.
IF SY-SUBRC EQ 0.
SELECT SINGLE ZTAG1 INTO L_ZTAG1
FROM T052
WHERE ZTERM EQ L_ZTERM.
ENDIF.
IF L_ZTAG1+0(1) = '0'.
MOVE L_ZTAG1+1(2) TO L_ZTAG.
ELSE.
MOVE L_ZTAG1 TO L_ZTAG.
ENDIF.
IF SY-SUBRC EQ 0.
READ TABLE OUTPUT WITH KEY NAME = 'G_TERMDAY'.
OUTPUT-VALUE = L_ZTAG.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_TERMDAY'.
ENDIF.
ENDFORM. "GET_TERMDAYS
*&---------------------------------------------------------------------*
*& Form GET_CONTACT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->INPUT text
* -->OUTPUT text
*----------------------------------------------------------------------*
FORM GET_CONTACT TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY.
DATA: L_KUNNR TYPE KUNNR, " billing doc/sales inv
L_TELF1(16),
L_TELFX(31).
CLEAR : L_KUNNR,L_TELF1,L_TELFX.
READ TABLE INPUT WITH KEY NAME = 'F150D-KTONR'. " READ THE billling no
L_KUNNR = INPUT-VALUE.
CLEAR INPUT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_KUNNR
IMPORTING
OUTPUT = L_KUNNR.
*to get telephone number and fax
SELECT SINGLE TELF1 TELFX
INTO (L_TELF1 , L_TELFX)
FROM KNA1
WHERE KUNNR EQ L_KUNNR.
IF SY-SUBRC EQ 0.
READ TABLE OUTPUT WITH KEY NAME = 'G_TELNO'.
OUTPUT-VALUE = L_TELF1.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_TELNO'.
ENDIF.
IF SY-SUBRC EQ 0.
READ TABLE OUTPUT WITH KEY NAME = 'G_FAXNO'.
OUTPUT-VALUE = L_TELFX.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_FAXNO'.
ENDIF.
ENDFORM. "GET_CONTACT
*&---------------------------------------------------------------------*
*& Form GET_CONTACTPERSON
*&---------------------------------------------------------------------*
* To get contact person
*----------------------------------------------------------------------*
* -->INPUT text
* -->OUTPUT text
*----------------------------------------------------------------------*
FORM GET_CONTACTPERSON TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY.
DATA: L_KUNNR TYPE KUNNR, " billing doc/sales inv
L_PNAME(35).
CLEAR : L_KUNNR,L_PNAME.
READ TABLE INPUT WITH KEY NAME = 'F150D-KTONR'. " READ THE billling no
L_KUNNR = INPUT-VALUE.
CLEAR INPUT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_KUNNR
IMPORTING
OUTPUT = L_KUNNR.
*to get telephone number and fax
SELECT SINGLE NAME1
INTO (L_PNAME)
FROM KNVK
WHERE KUNNR EQ L_KUNNR.
IF SY-SUBRC EQ 0.
READ TABLE OUTPUT WITH KEY NAME = 'G_PNAME'.
OUTPUT-VALUE = L_PNAME.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PNAME'.
ENDIF.
ENDFORM. "GET_CONTACTPERSON
*&---------------------------------------------------------------------*
*& Form GET_FORMPAGE
*&---------------------------------------------------------------------*
* To get form page
*----------------------------------------------------------------------*
* -->INPUT text
* -->OUTPUT text
*----------------------------------------------------------------------*
FORM GET_FORMPAGE TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY.
DATA: L_PAGE TYPE TDFORMPAGS, " form page
L_TOTPAGE TYPE STRING. " string
CLEAR : L_PAGE,L_TOTPAGE.
READ TABLE INPUT WITH KEY NAME = 'SAPSCRIPT-FORMPAGES'. " READ THE billling no
L_PAGE = INPUT-VALUE.
CLEAR INPUT.
MOVE L_PAGE TO L_TOTPAGE.
READ TABLE OUTPUT WITH KEY NAME = 'G_PAGE'.
OUTPUT-VALUE = L_TOTPAGE.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_PAGE'.
ENDFORM. "GET_PO_DETAILS
* Commented by AGT, for Retreving the No. Days in payment term and adding to Over Due Days.
**&---------------------------------------------------------------------*
**& Form GET_ARREARS
**&---------------------------------------------------------------------*
** To get outstanding days
**----------------------------------------------------------------------*
** -->INPUT text
** -->OUTPUT text
**----------------------------------------------------------------------*
*FORM GET_ARREARS TABLES input STRUCTURE itcsy
* output STRUCTURE itcsy.
*
* DATA: l_WRSHB type string,
* l_verzn type verzn,
* l_verzn1 type string value ' '.
*
* CLEAR : l_WRSHB,l_verzn.
*
* READ TABLE input WITH KEY name = 'MHND-WRSHB'.
* l_WRSHB = input-value.
* CLEAR input.
*
* READ TABLE input WITH KEY name = 'MHND-VERZN'.
* l_VERZN = input-value.
* CLEAR input.
*
* FIND FIRST OCCURRENCE OF '-' IN l_WRSHB.
*
* if sy-subrc = 0.
* move space to l_verzn1.
* else.
* move l_verzn to l_verzn1.
* ENDIF.
*
* READ TABLE output WITH KEY name = 'G_VERZN'.
* output-value = l_verzn1.
* MODIFY output TRANSPORTING value WHERE name = 'G_VERZN'.
*
*ENDFORM.
* Commented by AGT, for Retreving the No. Days in payment term and adding to Over Due Days.
*&---------------------------------------------------------------------*
*& Form GET_ARREARS
*&---------------------------------------------------------------------*
* To get outstanding days
*----------------------------------------------------------------------*
FORM GET_ARREARS TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY.
DATA: L_WRSHB TYPE STRING,
L_VERZN TYPE VERZN,
L_VERZN1 TYPE STRING VALUE ' ',
LGJAHR(4),
LBELNR(10),
LBUKRS(4),
LZBD1T TYPE DZBD1T,
LZBD2T TYPE DZBD3T,
LZBD3T TYPE DZBD3T,
LBUZEI TYPE BUZEI.
CLEAR : L_WRSHB,L_VERZN,LGJAHR,LBELNR,LBUKRS,LZBD1T,LZBD2T,LZBD3T,LBUZEI.
READ TABLE INPUT WITH KEY NAME = 'MHND-WRSHB'.
L_WRSHB = INPUT-VALUE.
CLEAR INPUT.
READ TABLE INPUT WITH KEY NAME = 'MHND-VERZN'.
L_VERZN = INPUT-VALUE.
CLEAR INPUT.
READ TABLE INPUT WITH KEY NAME = 'MHND-BELNR'.
LBELNR = INPUT-VALUE.
CLEAR INPUT.
READ TABLE INPUT WITH KEY NAME = 'MHND-GJAHR'.
LGJAHR = INPUT-VALUE.
CLEAR INPUT.
READ TABLE INPUT WITH KEY NAME = 'MHND-BUKRS'.
LBUKRS = INPUT-VALUE.
CLEAR INPUT.
READ TABLE INPUT WITH KEY NAME = 'MHND-BUZEI'.
LBUZEI = INPUT-VALUE.
CLEAR INPUT.
FIND FIRST OCCURRENCE OF '-' IN L_WRSHB.
IF SY-SUBRC = 0.
MOVE SPACE TO L_VERZN1.
ELSE.
MOVE L_VERZN TO L_VERZN1.
ENDIF.
SELECT ZBD1T ZBD2T ZBD3T
FROM BSID
INTO (LZBD1T,LZBD2T,LZBD3T)
WHERE BELNR = LBELNR
AND GJAHR = LGJAHR
AND BUKRS = LBUKRS
AND BUZEI = LBUZEI.
IF LZBD3T IS NOT INITIAL.
L_VERZN1 = L_VERZN1 + LZBD3T.
ELSEIF LZBD3T IS INITIAL AND LZBD2T IS NOT INITIAL.
L_VERZN1 = L_VERZN1 + LZBD2T.
ELSEIF LZBD2T IS INITIAL AND LZBD1T IS NOT INITIAL.
L_VERZN1 = L_VERZN1 + LZBD1T.
ENDIF.
ENDSELECT.
READ TABLE OUTPUT WITH KEY NAME = 'G_VERZN'.
OUTPUT-VALUE = L_VERZN1.
MODIFY OUTPUT TRANSPORTING VALUE WHERE NAME = 'G_VERZN'.
ENDFORM. "GET_ARREARS