You are on page 1of 8

************************************************************************

* *
* Check print program ZRFFOUS_C *
* *
************************************************************************

*----------------------------------------------------------------------*
* Program includes: *
* *
* RFFORI0M Definition of macros *
* RFFORI00 international data definitions *
* RFFORI01 check *
* RFFORI06 remittance advice *
* RFFORI07 payment summary list *
* RFFORI99 international subroutines *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* report header *
*----------------------------------------------------------------------*
REPORT RFFOUS_C
LINE-SIZE 132
MESSAGE-ID F0
NO STANDARD PAGE HEADING.

*----------------------------------------------------------------------*
* segments and tables for prenumbered checks *
*----------------------------------------------------------------------*
TABLES:
REGUH,
REGUP.

*----------------------------------------------------------------------*
* macro definitions *
*----------------------------------------------------------------------*
INCLUDE RFFORI0M.

INITIALIZATION.

*----------------------------------------------------------------------*
* parameters and select-options *
*----------------------------------------------------------------------*
BLOCK 1.
SELECT-OPTIONS:
SEL_ZAWE FOR REGUH-RZAWE, "payment method
SEL_UZAW FOR REGUH-UZAWE, "payment method supplement
SEL_GSBR FOR REGUH-SRTGB, "business area
SEL_HBKI FOR REGUH-HBKID NO-EXTENSION NO INTERVALS, "house bank id
SEL_HKTI FOR REGUH-HKTID NO-EXTENSION NO INTERVALS. "account id
SELECTION-SCREEN:
BEGIN OF LINE,
COMMENT 01(30) TEXT-106 FOR FIELD PAR_STAP,
POSITION POS_LOW.
PARAMETERS:
PAR_STAP LIKE RFPDO-FORDSTAP. "check lot number
SELECTION-SCREEN:
COMMENT 40(30) TEXTINFO FOR FIELD PAR_STAP,
END OF LINE.
PARAMETERS:
PAR_RCHK LIKE RFPDO-FORDRCHK. "Restart from
SELECT-OPTIONS:
SEL_WAER FOR REGUH-WAERS, "currency
SEL_VBLN FOR REGUH-VBLNR. "payment document number
SELECTION-SCREEN END OF BLOCK 1.

BLOCK 2.
AUSWAHL: ZDRU Z, AVIS A, BEGL B.
AUSWAHL_ALV_LIST.
SPOOL_AUTHORITY. "Spoolberechtigung
SELECTION-SCREEN END OF BLOCK 2.

BLOCK 3.
PARAMETERS:
PAR_ZFOR LIKE RFPDO1-FORDZFOR, "different form
PAR_FILL LIKE RFPDO2-FORDFILL, "filler for spell_amount
PAR_ANZP LIKE RFPDO-FORDANZP, "number of test prints
PAR_MAXP LIKE RFPDO-FORDMAXP, "no of items in summary list
PAR_BELP LIKE RFPDO-FORDBELP, "payment doc. validation
PAR_ESPR LIKE RFPDO-FORDESPR, "texts in reciepient's lang.
PAR_ISOC LIKE RFPDO-FORDISOC, "currency in ISO code
PAR_NOSU LIKE RFPDO2-FORDNOSU, "no summary page
PAR_NOVO LIKE RFPDO2-FORDNOVO. "no voiding of checks
SELECTION-SCREEN END OF BLOCK 3.

SELECTION-SCREEN:
BEGIN OF BLOCK 4 WITH FRAME TITLE TEXT-100,
BEGIN OF LINE.
PARAMETERS:
PAR_NEUD AS CHECKBOX.
SELECTION-SCREEN:
COMMENT 03(70) TEXT-101 FOR FIELD PAR_NEUD,
END OF LINE,
BEGIN OF LINE,
COMMENT 01(31) TEXTCHKF FOR FIELD PAR_CHKF,
POSITION POS_LOW.
PARAMETERS:
PAR_CHKF LIKE PAYR-CHECF.
SELECTION-SCREEN:
COMMENT 52(05) TEXTCHKT FOR FIELD PAR_CHKT,
POSITION POS_HIGH.
PARAMETERS:
PAR_CHKT LIKE PAYR-CHECT.
SELECTION-SCREEN:
END OF LINE,
BEGIN OF LINE,
COMMENT 01(30) TEXT-107 FOR FIELD PAR_VOID,
POSITION POS_LOW.
PARAMETERS:
PAR_VOID LIKE PAYR-VOIDR.
SELECTION-SCREEN:
COMMENT 38(30) TEXTVOID FOR FIELD PAR_VOID,
END OF LINE,
END OF BLOCK 4.

PARAMETERS:
PAR_XDTA LIKE RFPDO-FORDXDTA NO-DISPLAY,
PAR_PRIW LIKE RFPDO-FORDPRIW NO-DISPLAY,
PAR_SOFW LIKE RFPDO1-FORDSOFW NO-DISPLAY,
PAR_DTYP LIKE RFPDO-FORDDTYP NO-DISPLAY,
PAR_UNIX LIKE RFPDO2-FORDNAMD NO-DISPLAY,
PAR_NENQ(1) TYPE C NO-DISPLAY,
PAR_VARI(12) TYPE C NO-DISPLAY,
PAR_SOFO(1) TYPE C NO-DISPLAY.

*----------------------------------------------------------------------*
* Default values for parameters and select-options *
*----------------------------------------------------------------------*
PERFORM INIT.
PERFORM TEXT(SAPDBPYF) USING 102 TEXTZDRU.
PERFORM TEXT(RFCHKL00) USING: TEXTCHKF 200, TEXTCHKT 201.
SEL_ZAWE-LOW = 'C'.
SEL_ZAWE-OPTION = 'EQ'.
SEL_ZAWE-SIGN = 'I'.
APPEND SEL_ZAWE.

PAR_BELP = SPACE.
PAR_ZDRU = 'X'.
PAR_XDTA = SPACE.
PAR_DTYP = SPACE.
PAR_AVIS = SPACE.
PAR_BEGL = 'X'.
PAR_FILL = SPACE.
PAR_ANZP = 2.
PAR_ESPR = SPACE.
PAR_ISOC = SPACE.
PAR_MAXP = 9999.

*----------------------------------------------------------------------*
* tables / fields / field-groups / at selection-screen *
*----------------------------------------------------------------------*
INCLUDE RFFORI00.

* AT SELECTION-SCREEN.

PERFORM SCHECKDATEN_EINGABE USING PAR_RCHK


PAR_STAP
TEXTINFO.

TEXTVOID = SPACE.
IF PAR_NEUD EQ 'X'. "Neu drucken / reprint
IF PAR_RCHK NE SPACE.
SET CURSOR FIELD 'PAR_RCHK'.
MESSAGE E561(FS). "kein Neu drucken bei Restart
ENDIF. "no reprint in restart mode
IF ZW_XVORL NE SPACE.
SET CURSOR FIELD 'ZW_XVORL'.
MESSAGE E561(FS). "kein Neu drucken bei Vorschlag
ENDIF. "no reprint if proposal run
IF PAR_CHKF EQ SPACE AND PAR_CHKT NE SPACE.
PAR_CHKF = PAR_CHKT.
ENDIF.
IF PAR_CHKT EQ SPACE.
PAR_CHKT = PAR_CHKF.
ENDIF.
IF PAR_CHKT LT PAR_CHKF.
SET CURSOR FIELD 'PAR_CHKF'.
MESSAGE E650(DB).
ENDIF.
IF PAR_CHKF NE SPACE OR PAR_VOID NE 0.
IF PAR_CHKF EQ SPACE.
SET CURSOR FIELD 'PAR_CHKF'.
MESSAGE E055(00).
ENDIF.
SELECT * FROM PAYR UP TO 1 ROWS "im angegebenen Intervall m�ssen
WHERE ZBUKR EQ ZW_ZBUKR-LOW "Schecks vorhanden sein
AND HBKID EQ SEL_HBKI-LOW "check interval is not allowed to
AND HKTID EQ SEL_HKTI-LOW "be empty
AND CHECF LE PAR_CHKT
AND CHECT GE PAR_CHKF
AND ICHEC EQ SPACE
AND VOIDR EQ 0
AND XBANC EQ SPACE.
ENDSELECT.
IF SY-SUBRC NE 0.
SET CURSOR FIELD 'PAR_CHKF'.
MESSAGE E509(FS).
ENDIF.
SELECT SINGLE * FROM TVOID WHERE VOIDR EQ PAR_VOID.
IF SY-SUBRC NE 0 OR TVOID-XSYSE NE SPACE.
SET CURSOR FIELD 'PAR_VOID'.
MESSAGE E539(FS).
ELSE.
SELECT SINGLE * FROM TVOIT
WHERE LANGU EQ SY-LANGU AND VOIDR EQ PAR_VOID.
TEXTVOID = TVOIT-VOIDT.
ENDIF.
ENDIF.
ELSE.
CLEAR:
PAR_CHKF,
PAR_CHKT,
PAR_VOID.
ENDIF.

AUSWAHL_ALV_LIST_F4_AND_CHECK.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 1.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
IF SCREEN-NAME EQ 'ZW_ZBUKR-HIGH' OR
SCREEN-NAME EQ '%_ZW_ZBUKR_%_APP_%-VALU_PUSH'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR PAR_STAP.


CALL FUNCTION 'F4_CHECK_LOT'
EXPORTING
I_XDYNP = 'X'
I_DYNP_PROGN = 'RFFOUS_C'
I_DYNP_DYNNR = '1000'
I_DYNP_ZBUKR = 'ZW_ZBUKR-LOW'
I_DYNP_HBKID = 'SEL_HBKI-LOW'
I_DYNP_HKTID = 'SEL_HKTI-LOW'
IMPORTING
E_STAPL = PAR_STAP
EXCEPTIONS
OTHERS = 0.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR PAR_ZFOR.


PERFORM F4_FORMULAR USING PAR_ZFOR.

AT SELECTION-SCREEN ON PAR_ZFOR.
IF PAR_ZFOR NE SPACE.
SET CURSOR FIELD 'PAR_ZFOR'.
CALL FUNCTION 'FORM_CHECK' EXPORTING I_PZFOR = PAR_ZFOR.
ENDIF.

*----------------------------------------------------------------------*
* batch heading (for the payment summary list) *
*----------------------------------------------------------------------*
TOP-OF-PAGE.

IF FLG_BEGLEITL EQ 1.
PERFORM KOPF_ZEILEN. "RFFORI07
ENDIF.

*----------------------------------------------------------------------*
* preparations *
*----------------------------------------------------------------------*
START-OF-SELECTION.
HLP_AUTH = PAR_AUTH. "spool authority
HLP_TEMSE = '----------'. "Keine TemSe-Verwendung
HLP_FILLER = PAR_FILL.
hlp_ep_element = '525'. " note 794910
perform vorbereitung.
PERFORM SCHECKDATEN_PRUEFEN USING PAR_RCHK
PAR_STAP.

IF ZW_XVORL EQ SPACE AND PAR_ZDRU NE SPACE AND PAR_NEUD NE SPACE.


IF PAR_CHKF NE SPACE.
FLG_NEUD = 1. "neu drucken durchs Druckprogramm
REFRESH TAB_CHECK. "print program reprints checks
TAB_CHECK-OPTION = 'EQ'.
TAB_CHECK-SIGN = 'I'.
TAB_CHECK-HIGH = SPACE.
SELECT * FROM PAYR
WHERE ZBUKR EQ ZW_ZBUKR-LOW
AND HBKID EQ SEL_HBKI-LOW
AND HKTID EQ SEL_HKTI-LOW
AND CHECF LE PAR_CHKT
AND CHECT GE PAR_CHKF
AND ICHEC EQ SPACE
AND VOIDR EQ 0
AND XBANC EQ SPACE.
TAB_CHECK-LOW = PAYR-CHECF.
APPEND TAB_CHECK.
ENDSELECT.
INSERT *PAYR INTO DATEN.
ELSE.
REFRESH TAB_CHECK.
FLG_NEUD = 2.
ENDIF.
SELECT SINGLE * FROM TVOID WHERE VOIDR EQ PAR_VOID.
ENDIF.

IF PAR_ZDRU EQ 'X'.
IF SY-CALLD EQ SPACE. "fremder Enqueue nur wenn
PAR_NENQ = SPACE. "Programm gerufen wurde
ENDIF. "foreign enqueue only if called
IF PAR_NENQ EQ SPACE.
PERFORM SCHECKNUMMERN_SPERREN. "RFFORI01
ELSE.
PAR_ANZP = 0. "sonst funktioniert die Umnumerierung nicht
ENDIF.
ENDIF.

*----------------------------------------------------------------------*
* check and extract data *
*----------------------------------------------------------------------*
GET REGUH.

CHECK SEL_ZAWE.
CHECK SEL_UZAW.
CHECK SEL_GSBR.
CHECK SEL_HBKI.
CHECK SEL_HKTI.
CHECK SEL_WAER.
CHECK SEL_VBLN.
PERFORM PRUEFUNG.
PERFORM SCHECKINFO_PRUEFEN. "RFFORI01
if reguh-kunnr <> space.
tables knb1.
data ls_kna1 like kna1.
data ld_remit like knb1-remit.
select single remit into ld_remit from knb1
where bukrs = reguh-absbu and kunnr = reguh-kunnr.
if sy-subrc = 0 and ld_remit <> space.
select single * from kna1 into ls_kna1 where kunnr = ld_remit.
if sy-subrc = 0.
reguh-zadnr = ls_kna1-adrnr.
reguh-zanre = ls_kna1-anred.
reguh-znme1 = ls_kna1-name1.
reguh-znme2 = ls_kna1-name2.
reguh-znme3 = ls_kna1-name3.
reguh-znme4 = ls_kna1-name4.
reguh-zpstl = ls_kna1-pstlz.
reguh-zort1 = ls_kna1-ort01.
reguh-zort2 = ls_kna1-ort02.
reguh-zstra = ls_kna1-stras.
reguh-zpfac = ls_kna1-pfach.
reguh-zpst2 = ls_kna1-pstl2.
reguh-zpfor = ls_kna1-pfort.
reguh-zland = ls_kna1-land1.
reguh-zspra = ls_kna1-spras.
reguh-zregi = ls_kna1-regio.
reguh-ztlfx = ls_kna1-telfx.
reguh-ztelf = ls_kna1-telf1.
reguh-ztelx = ls_kna1-telx1.
endif.
endif.
endif.
PERFORM EXTRACT_VORBEREITUNG.

GET REGUP.

PERFORM EXTRACT.
IF REGUH-ZBUKR NE REGUP-BUKRS.
TAB_UEBERGREIFEND-ZBUKR = REGUH-ZBUKR.
TAB_UEBERGREIFEND-VBLNR = REGUH-VBLNR.
COLLECT TAB_UEBERGREIFEND.
ENDIF.

*----------------------------------------------------------------------*
* print checks, remittance advices and lists *
*----------------------------------------------------------------------*
END-OF-SELECTION.

IF FLG_SELEKTIERT NE 0.

IF PAR_ZDRU EQ 'X'.
HLP_ZFORN = PAR_ZFOR.
HLP_CHECF_RESTART = PAR_RCHK.
IF PAR_NOVO NE SPACE.
FLG_SCHECKNUM = 2.
ENDIF.
PERFORM SCHECK. "RFFORI01
IF PAR_NENQ EQ SPACE.
PERFORM SCHECKNUMMERN_ENTSPERREN."RFFORI01
ENDIF.
ENDIF.

IF PAR_AVIS EQ 'X'.
FLG_SCHECKNUM = 1.
PERFORM AVIS. "RFFORI06
ENDIF.

IF PAR_BEGL EQ 'X' AND PAR_MAXP GT 0.


FLG_BANKINFO = 1.
PERFORM BEGLEITLISTE. "RFFORI07
ENDIF.

ENDIF.

PERFORM FEHLERMELDUNGEN.

PERFORM INFORMATION.

*----------------------------------------------------------------------*
* subroutines for check print and prenumbered checks *
*----------------------------------------------------------------------*
INCLUDE RFFORI01.

*----------------------------------------------------------------------*
* subroutines for remittance advices *
*----------------------------------------------------------------------*
INCLUDE RFFORI06.

*----------------------------------------------------------------------*
* subroutines for the payment summary list *
*----------------------------------------------------------------------*
INCLUDE RFFORI07.

*----------------------------------------------------------------------*
* international subroutines *
*----------------------------------------------------------------------*
INCLUDE RFFORI99.

You might also like