on ‎2007 Jul 31 7:44 AM
can anybody send me one sample program that is using all FI tables..
Regards,
pandu
Request clarification before answering.
Hi
Check the sample reports here it has used max number of FI tables
<u><b>Main Report</b></u>
REPORT Zj_1iewt_cert MESSAGE-ID 8i NO STANDARD PAGE HEADING.
*--------------------------------------------------------------
*
* SELECTION SCREEN
*
*--------------------------------------------------------------
* Data Include
INCLUDE zj_1iewt_cert_top.
*
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.
PARAMETERS : zbukrs LIKE bseg-bukrs ,
zyear LIKE bseg-gjahr .
SELECT-OPTIONS : zsecco FOR seccode-seccode . " Note 604606
PARAMETERS : zsect LIKE j_1iewtnumgr-qscod .
SELECTION-SCREEN END OF BLOCK 1.
SKIP.
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-002 .
SELECT-OPTIONS: zpdate FOR bkpf-budat ,
ZDOCTYPE FOR BKPF-BLART,
zchall FOR j_1iewtchln-j_1iextchln ,
zchdt FOR j_1iewtchln-j_1iextchdt ,
zvendor FOR lfb1-lifnr.
SELECTION-SCREEN END OF BLOCK 2 .
SKIP.
SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE text-003.
PARAMETERS : zcertdt LIKE with_item-j_1icertdt ,
zfname(30) TYPE c , " signatory
zfdsg(35) TYPE c , " Designation
zplace(20) TYPE c . " Place of Printing
SELECTION-SCREEN END OF BLOCK 3.
*** Added on 05June2007
SELECTION-SCREEN BEGIN OF BLOCK 4 WITH FRAME TITLE text-004.
PARAMETERS : zq1(15) type c,
zq2(15) type c,
zq3(15) type c,
zq4(15) type c.
SELECTION-SCREEN END OF BLOCK 4.
*** End of addition
* Dummy Variables declarations
DATA: zcertno LIKE j_1iewt_certif-ctnumber,
zcerdt LIKE sy-datum.
*--------------------------------------------------------------
* SELECTION SCREEN VALIDATIONS
*--------------------------------------------------------------
AT SELECTION-SCREEN.
PERFORM country_check.
PERFORM select_form USING zsecco-low CHANGING layout. " Note 604606
LOOP AT zsecco . " Note 604606
AUTHORITY-CHECK OBJECT 'J_1IEWTCER'
ID 'BUKRS' FIELD zbukrs
ID 'BUPLA' FIELD zsecco-low " Note 604606
ID 'ACTVT' FIELD '01'.
IF sy-subrc NE 0.
MESSAGE e000(8i) WITH
'No authorization for current action'.
ENDIF.
ENDLOOP.
AT SELECTION-SCREEN ON zbukrs.
PERFORM ewt_active.
AT SELECTION-SCREEN ON zsecco. " Note 604606
PERFORM check_bupla.
PERFORM check_secco. " Note 604606
AT SELECTION-SCREEN ON zsect.
PERFORM check_section.
AT SELECTION-SCREEN ON zchdt.
PERFORM check_challan.
AT SELECTION-SCREEN ON zvendor.
PERFORM check_vendor.
AT SELECTION-SCREEN ON zcertdt.
PERFORM check_dates.
*--------------------------------------------------------------
* START OF SELECTION
*--------------------------------------------------------------
START-OF-SELECTION.
* Select documents
*** Reverting note for testing
PERFORM select_bkpf.
*** Reverting note for testing
* Section
PERFORM select_section.
* Fill withholding tax data
PERFORM fill_withtab.
* Fill invtab and paytab and Modify signs and values in invtab
* for credit memos and invoices.
PERFORM modify_invtab.
* Process credit memos
PERFORM process_credit_memos.
* Process downpayments
PERFORM process_dp.
* Fill all records to one table
PERFORM fill_printtab.
* Select all vendors
PERFORM select_vendors.
* PERFORM SELECT_JV.
* Print the certificate
PERFORM print_routines.
END-OF-SELECTION.
*--------------------------------------------------------------
* FORM ROUTINES
*--------------------------------------------------------------
INCLUDE zj_1iewt_cert_f01.<b><u>INclude Report</u></b>
*&---------------------------------------------------------------------*
*& Include ZJ_1IEWT_CERT_F01 *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form COUNTRY_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM country_check.
CALL FUNCTION 'J_1BSA_COMPONENT_ACTIVE'
EXPORTING
bukrs = zbukrs
component = 'IN'
EXCEPTIONS
component_not_active = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e712.
ENDIF.
ENDFORM. " COUNTRY_CHECK
*&---------------------------------------------------------------------*
*& Form EWT_ACTIVE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ewt_active.
SELECT SINGLE * FROM t001
WHERE bukrs = zbukrs.
IF sy-subrc NE 0.
MESSAGE e128 .
ELSE.
CALL FUNCTION 'FI_CHECK_EXTENDED_WT'
EXPORTING
i_bukrs = zbukrs
EXCEPTIONS
component_not_active = 1
not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE e714 WITH zbukrs.
ENDIF.
ENDIF.
ENDFORM. " EWT_ACTIVE
*&---------------------------------------------------------------------*
*& Form CHECK_SECTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_section.
SELECT SINGLE * FROM t059o
WHERE land1 = 'IN'
AND wt_qscod = zsect.
IF sy-subrc <> 0.
MESSAGE e703 WITH zsect.
ENDIF .
ENDFORM. " CHECK_SECTION
*&---------------------------------------------------------------------*
*& Form CHECK_BUPLA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_bupla.
CLEAR j_1bbranch.
SELECT COUNT( * ) FROM j_1bbranch
WHERE bukrs = zbukrs
AND branch IN zsecco. " Note 604606
IF sy-subrc <> 0.
MESSAGE e707.
ENDIF .
ENDFORM. " CHECK_BUPLA
*&---------------------------------------------------------------------*
*& Form CHECK_VENDOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_vendor.
SELECT COUNT( * ) FROM lfb1
WHERE lifnr IN zvendor
AND bukrs = zbukrs.
IF sy-subrc <> 0.
MESSAGE e396 WITH zvendor+3(10).
ENDIF.
ENDFORM. " CHECK_VENDOR
*&---------------------------------------------------------------------*
*& Form CHECK_CHALLAN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_challan.
CLEAR challantab[].
IF NOT zchall IS INITIAL.
SELECT * FROM j_1iewtchln INTO TABLE challantab
WHERE bukrs = zbukrs
AND j_1iextchln IN zchall
AND j_1iextchdt IN zchdt.
ELSE.
SELECT * FROM j_1iewtchln INTO TABLE challantab
WHERE bukrs = zbukrs
AND j_1iextchdt IN zchdt.
ENDIF.
DELETE challantab WHERE j_1iextchln IS INITIAL.
* Check for entry in itab
CLEAR lin.
DESCRIBE TABLE challantab LINES lin.
IF lin = 0.
MESSAGE e729.
ENDIF.
ENDFORM. " CHECK_CHALLAN
*&---------------------------------------------------------------------*
*& Form CHECK_DATES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_dates.
IF zchdt-low GT zcertdt.
MESSAGE e754.
ELSEIF zchdt-high GT zcertdt.
MESSAGE e754.
ENDIF.
ENDFORM. " CHECK_DATES
*---------------------------------------------------------------------*
* FORM select_bkpf *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM select_bkpf.
SELECT * FROM bkpf INTO TABLE bkpftab
WHERE bukrs = zbukrs
AND gjahr = zyear
AND bstat IN (' ', 'A', 'B', 'D', 'M', 'S', 'V', 'W', 'Z')
AND budat IN zpdate " Note 804529
AND blart IN zdoctype.
******** Delete Reversed Documents ***********
* LOOP AT bkpftab WHERE NOT stblg IS INITIAL.
* bkpftab-rev_ind = 'X'.
* MODIFY bkpftab TRANSPORTING rev_ind WHERE
* belnr = bkpftab-stblg OR
* belnr = bkpftab-belnr.
* ENDLOOP.
* DELETE bkpftab WHERE rev_ind = 'X'.
DELETE bkpftab WHERE NOT stblg IS INITIAL.
ENDFORM. "select_bkpf
*---------------------------------------------------------------------*
* FORM select_section *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM select_section.
* Select all sections into itab.
SELECT * FROM t059z INTO CORRESPONDING FIELDS OF taxtab
WHERE land1 = 'IN'
AND qscod = zsect.
SELECT SINGLE * FROM t059p
WHERE land1 = taxtab-land1
AND witht = taxtab-witht.
IF t059p-wt_postm = 1.
taxtab-method = 'I'.
ELSE.
taxtab-method = 'P'.
ENDIF.
APPEND taxtab.
ENDSELECT.
ENDFORM. "select_section
*---------------------------------------------------------------------*
* FORM fill_withtab *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_withtab.
DATA : v_gjahr(4) TYPE n.
* fill table for JV documents.
SELECT * FROM with_item INTO TABLE jvtab
WHERE bukrs = zbukrs
AND gjahr = zyear
AND j_1iewtrec = 'B'.
*** Reverting note for testing
* -------- Start of note 887656
**OSS 891565-START
* callback_wa-ldbnode = 'BSIK'.
* callback_wa-get = 'X'.
** callback_wa-get_late = 'X'.
* callback_wa-cb_prog = sy-repid.
* callback_wa-cb_form = 'CALLBACK_BSIK'.
* APPEND callback_wa TO callback.
**OSS 891565-end
*
* callback_wa-ldbnode = 'BKPF'.
* callback_wa-get = 'X'.
** callback_wa-get_late = 'X'.
* callback_wa-cb_prog = sy-repid.
* callback_wa-cb_form = 'CALLBACK_BKPF'.
* APPEND callback_wa TO callback.
*
* callback_wa-ldbnode = 'BSEG'.
* callback_wa-get = 'X'.
** callback_wa-get_late = 'X'.
* callback_wa-cb_prog = sy-repid.
* callback_wa-cb_form = 'CALLBACK_BSEG'.
* APPEND callback_wa TO callback.
*
* callback_wa-ldbnode = 'WITH_ITEM'.
* callback_wa-get = 'X'.
** callback_wa-get_late = 'X'.
* callback_wa-cb_prog = sy-repid.
* callback_wa-cb_form = 'CALLBACK_WITH'.
* APPEND callback_wa TO callback.
*
**OSS 891565-START
* seltab_wa-selname = 'KD_AUGDT'.
* seltab_wa-kind = 'S'.
* seltab_wa-sign = 'I'.
* seltab_wa-option = 'EQ'.
* CLEAR seltab_wa-low.
* APPEND seltab_wa TO seltab.
*
* seltab_wa-selname = 'KD_AUGDT'.
* seltab_wa-kind = 'S'.
* seltab_wa-sign = 'I'.
* seltab_wa-option = 'NE'.
* CLEAR: seltab_wa-low, seltab_wa-high.
* APPEND seltab_wa TO seltab.
*
**OSS 891565-end
* seltab_wa-kind = 'S'.
* seltab_wa-selname = 'KD_BUKRS'.
* seltab_wa-option = 'EQ'.
* seltab_wa-sign = 'I'.
* seltab_wa-low = zbukrs.
* APPEND seltab_wa TO seltab.
*
* CLEAR seltab_wa.
* seltab_wa-kind = 'S'.
* seltab_wa-selname = 'KD_GJAHR'.
* seltab_wa-option = 'EQ'.
* seltab_wa-sign = 'I'.
* seltab_wa-low = zyear.
* APPEND seltab_wa TO seltab.
*
* CLEAR seltab_wa.
* seltab_wa-kind = 'S'.
* seltab_wa-selname = 'KD_BUDAT'.
* LOOP AT zpdate.
* MOVE-CORRESPONDING zpdate TO seltab_wa.
* APPEND seltab_wa TO seltab.
* ENDLOOP.
*
* CLEAR seltab_wa.
* seltab_wa-kind = 'S'.
* seltab_wa-selname = 'KD_LIFNR'.
* LOOP AT zvendor.
* MOVE-CORRESPONDING zvendor TO seltab_wa.
* APPEND seltab_wa TO seltab.
* ENDLOOP.
*
* CLEAR seltab_wa.
* seltab_wa-kind = 'S'.
* seltab_wa-selname = 'XBR_BLAR'.
* LOOP AT zdoctype.
* MOVE-CORRESPONDING zdoctype TO seltab_wa.
* APPEND seltab_wa TO seltab.
* ENDLOOP.
*
* CALL FUNCTION 'LDB_PROCESS'
* EXPORTING
* ldbname = 'KDF'
* variant = ' '
** EXPRESSIONS = TEXPR
** FIELD_SELECTION = FSEL
* TABLES
* callback = callback
* selections = seltab
* EXCEPTIONS
* ldb_not_reentrant = 1
* ldb_incorrect = 2
* ldb_already_running = 3
* ldb_error = 4
* ldb_selections_error = 5
* ldb_selections_not_accepted = 6
* variant_not_existent = 7
* variant_obsolete = 8
* variant_error = 9
* free_selections_error = 10
* callback_no_event = 11
* callback_node_duplicate = 12
* OTHERS = 13.
*
* IF sy-subrc <> 0.
* WRITE: 'Exception with SY-SUBRC', sy-subrc.
* ENDIF.
* -------- End of note 887656
LOOP AT bkpftab.
SELECT * FROM with_item
WHERE bukrs = bkpftab-bukrs
AND belnr = bkpftab-belnr
AND gjahr = bkpftab-gjahr
AND wt_stat = ' '
AND koart = 'K'
AND wt_acco IN zvendor
AND ctnumber = ' '
AND wt_opowtpd NE 'X'
AND wt_gruwtpd NE 'X'
AND j_1iewtrec NE 'B'.
* Validate for BUPLA here itself.
READ TABLE taxtab WITH KEY witht = with_item-witht
wt_withcd = with_item-wt_withcd.
CHECK sy-subrc = 0 .
CLEAR bsas.
SELECT SINGLE augbl augdt FROM bsas INTO (bsas-augbl,bsas-augdt)
WHERE bukrs = with_item-bukrs
AND hkont = with_item-hkont
AND gjahr = with_item-gjahr
AND belnr = with_item-belnr
AND buzei = with_item-j_1ibuzei.
CHECK sy-subrc = 0 .
SELECT SINGLE gjahr FROM bkpf INTO v_gjahr
WHERE bukrs = with_item-bukrs
AND belnr = bsas-augbl
AND budat = bsas-augdt.
* CALL FUNCTION 'J_1I6_DETERMINE_EXC_YEAR'
* EXPORTING
* I_BUKRS = with_item-bukrs
* I_BUDAT = bsas-augdt
* IMPORTING
* EXCISE_YEAR = v_gjahr
* EXCEPTIONS
* MISS_COMPANY = 1
* OTHERS = 2.
READ TABLE challantab WITH KEY bukrs = with_item-bukrs
belnr = bsas-augbl
gjahr = v_gjahr.
CHECK sy-subrc = 0 .
* Filter records not belonging to this BUPLA/SECCO " Note 604606
SELECT SINGLE secco FROM bseg INTO bseg-secco
WHERE bukrs = bkpftab-bukrs
AND belnr = bkpftab-belnr
AND gjahr = bkpftab-gjahr
AND buzei = with_item-j_1ibuzei
AND ktosl = 'WIT'.
IF sy-subrc NE 0 OR NOT bseg-secco IN zsecco.
SELECT SINGLE bupla FROM bseg INTO bseg-bupla
WHERE bukrs = bkpftab-bukrs
AND belnr = bkpftab-belnr
AND gjahr = bkpftab-gjahr
AND buzei = with_item-j_1ibuzei
AND ktosl = 'WIT'.
CHECK sy-subrc = 0 AND bseg-bupla IN zsecco.
ENDIF.
* Move data to withtab.
MOVE-CORRESPONDING with_item TO withtab.
MOVE: bkpftab-budat TO withtab-budat,
bseg-bupla TO withtab-bupla,
bseg-secco TO withtab-secco,
challantab-j_1iextchln TO withtab-j_1iextchln,
challantab-j_1iextchdt TO withtab-j_1iextchdt,
challantab-bankl TO withtab-bankl,
taxtab-method TO withtab-method.
* to adjust for JV documents where loss is recognized
READ TABLE jvtab WITH KEY wt_withcd = withtab-wt_withcd
augbl = withtab-belnr.
IF sy-subrc = 0.
withtab-wt_qbshh = withtab-wt_qbshh - jvtab-wt_qbshh.
withtab-wt_qbshb = withtab-wt_qbshb - jvtab-wt_qbshb.
withtab-wt_qszrt = ' '.
withtab-qsatz = ( withtab-wt_qbshh / withtab-wt_qsshh ) * 100.
ENDIF.
APPEND withtab.
ENDSELECT.
ENDLOOP.
*** Reverting Note for testing
ENDFORM. "fill_withtab
*---------------------------------------------------------------------*
* FORM modfy_invtab *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM modify_invtab.
* Certificate with multiple taxcodes
DATA : counter TYPE i.
LOOP AT withtab.
MOVE-CORRESPONDING withtab TO temp_withtab.
APPEND temp_withtab.
ENDLOOP.
* putting zero rates into temp_withtab table for transfer into withtab
SORT withtab BY belnr buzei.
SORT temp_withtab BY belnr buzei.
LOOP AT temp_withtab.
AT NEW belnr.
READ TABLE withtab WITH KEY
belnr = temp_withtab-belnr
buzei = 2.
IF sy-subrc = 0.
temp_withtab-qsatz = 0.
MODIFY temp_withtab TRANSPORTING qsatz WHERE
belnr = withtab-belnr.
ENDIF.
ENDAT.
ENDLOOP.
*Transfer the tax base amount per line number and the
* tax rates per line.
CLEAR counter.
*LOOP AT temp_withtab.
* at new buzei.
* sum.
* counter = 0.
* loop at withtab where belnr = temp_withtab-belnr and
* buzei = temp_withtab-buzei.
* counter = counter + 1.
* If counter = 1.
*****************************************************************
* Note 773106
* withtab-wt_qbshh = temp_withtab-wt_qbshh.
* If withtab-wt_basman = 'X'. "Note 692642 Begin
* withtab-wt_qsshh = temp_withtab-wt_qsshh.
* Endif. "Note 692642 End
* withtab-qsatz = temp_withtab-qsatz.
* modify withtab INDEX sy-tabix.
*****************************************************************
* else.
* MOVE 'X' TO withtab-no_print .
* MODIFY withtab.
* endif.
* endloop.
* endat.
*ENDLOOP.
*
CLEAR: temp_withtab, temp_withtab[].
SORT withtab BY belnr buzei.
* transferring the records not marked as not for printing into
* temp_withtab.
LOOP AT withtab WHERE no_print EQ space.
MOVE-CORRESPONDING withtab TO temp_withtab.
APPEND temp_withtab.
ENDLOOP.
* 1. summing up the lines in temp_withtab
* 2. Transferring base amounts and tax amount to the first line
* in withtab
* marking any remaining lines in withtab as no print
*sort temp_withtab by belnr.
*sort withtab by belnr no_print.
*clear counter.
*LOOP AT temp_withtab.
* at new belnr.
* sum.
* clear counter.
* counter = 0.
* loop at withtab where belnr = temp_withtab-belnr.
* counter = counter + 1.
* If counter = 1.
* withtab-wt_qsshh = temp_withtab-wt_qsshh.
* withtab-wt_qbshh = temp_withtab-wt_qbshh.
* modify withtab INDEX sy-tabix.
* else.
* MOVE 'X' TO withtab-no_print .
* MODIFY withtab.
* endif.
* endloop.
* endat.
*ENDLOOP.
* Certificate with multiple taxcodes
LOOP AT withtab.
IF withtab-method = 'I'.
invtab = withtab.
APPEND invtab.
ELSE .
paytab = withtab.
APPEND paytab.
ENDIF.
ENDLOOP.
* Only for invoices.
*Note 704757
LOOP AT invtab.
IF invtab-wt_qsshh < 0. " Invoice.
MOVE 'I' TO invtab-flag.
ELSE.
MOVE 'M' TO invtab-flag. " Credit Memo
ENDIF.
IF invtab-j_1iewtrec NE 'J'.
invtab-wt_qbshh = invtab-wt_qbshh * ( -1 ).
invtab-wt_qsshh = invtab-wt_qsshh * ( -1 ).
ENDIF.
MODIFY invtab.
ENDLOOP.
LOOP AT paytab.
SELECT SINGLE lifnr FROM bseg INTO paytab-lifnr WHERE
bukrs = paytab-bukrs
AND belnr = paytab-belnr
AND gjahr = paytab-gjahr
AND koart = 'K'
AND lifnr IN zvendor
AND buzei = paytab-buzei.
paytab-no_print = ' '.
MODIFY paytab.
ENDLOOP.
*Note 704757
* The subsequent process will be affected by flag in j_1iewtrec.
ENDFORM. "modify_invtab
*---------------------------------------------------------------------*
* FORM refresh_data *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM refresh_data.
REFRESH : withtab, invtab, paytab,
bkpftab, it_lfa1, printtab,it_summary.
CLEAR : withtab, invtab, paytab,
bkpftab, it_lfa1, printtab,it_summary,cnt_print_order.
ENDFORM. "refresh_data
*---------------------------------------------------------------------*
* FORM process_credit_memos *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM process_credit_memos.
DATA: invcopytab LIKE invtab OCCURS 0 WITH HEADER LINE.
invcopytab[] = invtab[].
LOOP AT invcopytab WHERE flag = 'M'
AND j_1ibuzei NE ' '
AND no_print NE 'X'.
SELECT SINGLE * FROM bseg
WHERE bukrs = invcopytab-bukrs
AND belnr = invcopytab-belnr
AND gjahr = invcopytab-gjahr
AND buzei = invcopytab-buzei.
IF sy-subrc = 0 AND bseg-shkzg = 'S'
AND bseg-koart = 'K'
AND bseg-rebzg NE space . " there is doc.ref
READ TABLE invtab WITH KEY
bukrs = bseg-bukrs
gjahr = bseg-rebzj
belnr = bseg-rebzg
buzei = bseg-rebzz
witht = invcopytab-witht
no_print = ''.
IF sy-subrc = 0.
* The reference invoice is also there for certificate Processing.
IF invtab-j_1iintchln = invcopytab-j_1iintchln
AND invtab-j_1iintchdt = invcopytab-j_1iintchdt .
* Both documents are cleared using same Challan.
invtab-wt_qsshh = invtab-wt_qsshh + invcopytab-wt_qsshh.
invtab-wt_qbshh = invtab-wt_qbshh + invcopytab-wt_qbshh.
invtab-print_order = cnt_print_order = cnt_print_order + 1.
* Invoice is net of credit memo values
MODIFY invtab INDEX sy-tabix.
READ TABLE invtab WITH KEY bukrs = invcopytab-bukrs
gjahr = invcopytab-gjahr
belnr = invcopytab-belnr
buzei = invcopytab-buzei
witht = invcopytab-witht.
* This step removes that credit memo item since it is already reduced
MOVE 'X' TO invtab-no_print .
MODIFY invtab INDEX sy-tabix.
* Do not print this credit memo line since it is already adjusted
* with invoice
ELSE.
* If challan number of invoice is different that of credit memo
invtab-wt_qsshh = invtab-wt_qsshh + invcopytab-wt_qsshh.
invtab-wt_qbshh = invtab-wt_qbshh + invcopytab-wt_qbshh.
invtab-print_order = cnt_print_order = cnt_print_order + 1.
* Now invoice is net of credit memo
MODIFY TABLE invtab.
* Read credit memo line in invtab.
READ TABLE invtab WITH KEY bukrs = invcopytab-bukrs
gjahr = invcopytab-gjahr
belnr = invcopytab-belnr
buzei = invcopytab-buzei
witht = invcopytab-witht.
invtab-wt_qsshh = 0.
invtab-wt_qbshh = 0.
invtab-budat = ' '.
invtab-qsatz = ' '.
invtab-print_order = cnt_print_order = cnt_print_order + 1.
MODIFY invtab INDEX sy-tabix.
* In case of Credit Memos paid with challan number other than that
* of invoice,It is necessary to show invoice net of credit memo,but
* to print the Challan number of credit memo as well
* There will be two Lines Printed. One for invoice- all fields filled,
* another for Credit Memo. Amount, base,date and tax rates will not be
* printed , only challan no and date will be printed under the invoice.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
REFRESH invcopytab.
ENDFORM. "process_credit_memos
*---------------------------------------------------------------------*
* FORM process_dp *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM process_dp.
DATA : cleartab LIKE invtab OCCURS 0 WITH HEADER LINE.
DATA : cleartab_buzei LIKE cleartab-buzei. "Note 826877
DATA : v_amt TYPE i. "Note 831817
LOOP AT paytab INTO cleartab
WHERE wt_downc = 'X'
AND j_1ibuzei NE '000'
AND j_1iewtrec = 'C'.
APPEND cleartab.
ENDLOOP.
LOOP AT cleartab WHERE no_print NE 'X'.
SELECT SINGLE * FROM bseg INTO bseg
WHERE bukrs = cleartab-bukrs
AND belnr = cleartab-belnr
AND gjahr = cleartab-gjahr
AND buzei = cleartab-buzei.
IF sy-subrc = 0 AND bseg-shkzg = 'S'
AND bseg-koart = 'K'
AND bseg-rebzg NE ' '. " invoice reference
READ TABLE invtab WITH KEY bukrs = bseg-bukrs
gjahr = bseg-rebzj
belnr = bseg-rebzg
buzei = bseg-rebzz
no_print = ''.
IF sy-subrc = 0.
* The parent invoice is also there for certificate Processing
IF invtab-j_1iintchln = cleartab-j_1iintchln
AND invtab-j_1iintchdt = cleartab-j_1iintchdt .
* Both documents are cleared using same Challan.
********************************************************************
* Note 773106
IF NOT cleartab_buzei IS INITIAL. "Note 826877
IF cleartab_buzei NE cleartab-buzei.
invtab-base_mod = ''.
ENDIF.
ENDIF.
IF invtab-base_mod NE 'X'.
invtab-wt_qsshh = invtab-wt_qsshh - cleartab-wt_qsshh.
invtab-base_mod = 'X'.
ENDIF.
********************************************************************
invtab-wt_qbshh = invtab-wt_qbshh - cleartab-wt_qbshh.
v_amt = TRUNC( invtab-wt_qsshh ). "Note 831817
IF v_amt = 0. "Note 826877 " Note 831817
DELETE invtab INDEX sy-tabix.
ELSE.
MODIFY invtab INDEX sy-tabix.
ENDIF.
* Now invoice is net of credit memo values
READ TABLE paytab WITH KEY bukrs = cleartab-bukrs
gjahr = cleartab-gjahr
belnr = cleartab-belnr
buzei = cleartab-buzei
no_print = ''. " Note 773106
* This step removes that DP clear item since it is already reduced
MOVE 'X' TO paytab-no_print .
MOVE 'X' TO cleartab-no_print. " Note 773106
MODIFY cleartab. " Note 773106
MODIFY paytab INDEX sy-tabix.
ELSE.
* If challan number of invoice is different that of DP clear.
* Note 773106
* invtab-wt_qsshh = invtab-wt_qsshh - cleartab-wt_qsshh.
invtab-wt_qbshh = invtab-wt_qbshh - cleartab-wt_qbshh.
invtab-print_order = cnt_print_order = cnt_print_order + 1.
MODIFY invtab INDEX sy-tabix.
* Now invoice is net of DP clear values
READ TABLE paytab WITH KEY bukrs = cleartab-bukrs
gjahr = cleartab-gjahr
belnr = cleartab-belnr
buzei = cleartab-buzei
no_print = ''. " Note 773106
* Read DP clearing line in invtab.
paytab-wt_qsshh = 0.
paytab-wt_qbshh = 0.
paytab-budat = ' '.
paytab-qsatz = ' '.
invtab-print_order = cnt_print_order = cnt_print_order + 1.
MODIFY paytab INDEX sy-tabix.
MOVE 'X' TO cleartab-no_print. " Note 773106
MODIFY cleartab. " Note 773106
* This step is executed so that in case of DP clear refunds with
* challan number other than that of invoice, it is necessary to show
* invoice net of refund but to print the Challan number of refund as
* well. There will be two or more lines printed. One for invoice - all
* fields filled, another for Clearing refund Amount, base, date & tax
* rates will not be printed, only challan no and date will be printed
* under the invoice.
ENDIF.
ELSE.
READ TABLE paytab WITH KEY bukrs = cleartab-bukrs
gjahr = cleartab-gjahr
belnr = cleartab-belnr
buzei = cleartab-buzei.
MOVE 'X' TO paytab-no_print .
MODIFY paytab INDEX sy-tabix.
ENDIF.
ENDIF.
cleartab_buzei = cleartab-buzei. "Note 826877
ENDLOOP.
ENDFORM. "process_dp
*---------------------------------------------------------------------*
* FORM open_form *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM open_form.
DATA : tmp_answer.
itcpo-tdimmed = 'X' .
CALL FUNCTION 'OPEN_FORM'
EXPORTING
form = layout
language = sy-langu
OPTIONS = itcpo
EXCEPTIONS
canceled = 1
device = 2
form = 3
OPTIONS = 4
unclosed = 5
mail_options = 6
archive_error = 7
invalid_fax_number = 8
more_params_needed_in_batch = 9
OTHERS = 10.
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. "open_form
*---------------------------------------------------------------------*
* FORM write_form *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM write_form USING element function p_type window.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = element
function = function
type = p_type
window = window
EXCEPTIONS
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
bad_pageformat_for_print = 7
OTHERS = 8.
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. "write_form
*---------------------------------------------------------------------*
* FORM close_form *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM close_form.
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
send_error = 3
OTHERS = 4.
IF sy-subrc EQ 0.
STOP.
ENDIF.
ENDFORM. "close_form
*---------------------------------------------------------------------*
* FORM select_data_for_layout *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM select_data_for_layout.
* commented by naim on 17-0707
PERFORM fill_adrc_for_bupla.
PERFORM select_adrc USING t001-adrnr CHANGING t_adrc.
PERFORM fill_nature_of_payment.
ENDFORM. "select_data_for_layout
*---------------------------------------------------------------------*
* FORM fill_adrc_for_bupla *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_adrc_for_bupla.
CLEAR adrc.
* commented by naim on 17-0707
SELECT SINGLE adrnr name FROM j_1bbranch
INTO (j_1bbranch-adrnr,j_1bbranch-name)
WHERE bukrs = zbukrs
AND branch = printtab-bupla.
CHECK NOT j_1bbranch-adrnr IS INITIAL.
PERFORM select_adrc USING j_1bbranch-adrnr CHANGING adrc.
** added by naim on 17-07-07
* perform select_adrc using t001-adrnr changing adrc.
ENDFORM. "fill_adrc_for_bupla
*---------------------------------------------------------------------*
* FORM select_adrc *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_adrnr *
* --> p_adrc *
*---------------------------------------------------------------------*
FORM select_adrc USING p_adrnr
CHANGING p_adrc STRUCTURE adrc.
SELECT * FROM adrc INTO p_adrc
WHERE addrnumber = p_adrnr.
EXIT.
ENDSELECT.
ENDFORM. "select_adrc
*---------------------------------------------------------------------*
* FORM select_vendors *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM select_vendors.
DATA: tmp_adrc LIKE adrc.
SORT printtab BY wt_acco.
LOOP AT printtab.
ON CHANGE OF printtab-wt_acco.
* Get vendor PAN NO
CLEAR j_1imovend.
SELECT SINGLE * FROM j_1imovend
WHERE lifnr = printtab-wt_acco.
SELECT SINGLE * FROM lfa1
INTO CORRESPONDING FIELDS OF it_lfa1
WHERE lifnr = printtab-wt_acco.
it_lfa1-one_time = it_lfa1-xcpdk.
it_lfa1-bupla = printtab-bupla.
it_lfa1-secco = printtab-secco. " Note 604606
PERFORM select_adrc USING it_lfa1-adrnr
CHANGING tmp_adrc.
MOVE :
tmp_adrc-str_suppl1 TO it_lfa1-str_suppl1,
tmp_adrc-str_suppl2 TO it_lfa1-str_suppl2,
tmp_adrc-street TO it_lfa1-street,
tmp_adrc-city1 TO it_lfa1-city1,
tmp_adrc-city2 TO it_lfa1-city2,
tmp_adrc-post_code1 TO it_lfa1-post_code1,
j_1imovend-j_1ipanno TO it_lfa1-pan.
APPEND it_lfa1.
ENDON.
ENDLOOP.
ENDFORM. "select_vendors
*---------------------------------------------------------------------*
* FORM get_qsatz *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_withcd *
* --> p_qsatz *
*---------------------------------------------------------------------*
FORM get_qsatz USING p_witht
p_withcd
CHANGING p_qsatz.
CHECK p_qsatz IS INITIAL.
SELECT SINGLE qsatz FROM t059z INTO p_qsatz
WHERE land1 = t001-land1
AND witht = p_witht
AND wt_withcd = p_withcd.
IF t059z-xqfor = 'X' .
SELECT qsatz FROM t059fb INTO p_qsatz
WHERE land1 = t001-land1
AND waers = t001-waers
AND witht = p_witht
AND wt_withcd = p_withcd
AND qland = t001-land1
AND wt_valid <= sy-datum.
EXIT.
ENDSELECT.
ENDIF .
ENDFORM. "get_qsatz
*---------------------------------------------------------------------*
* FORM select_bank *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_bank1 *
* --> p_banka *
* --> p_branch *
*---------------------------------------------------------------------*
FORM select_bank USING p_bank1 CHANGING p_banka p_ort01 p_branch
p_j_1itdbank.
SELECT SINGLE * FROM t012
WHERE bukrs = zbukrs
AND hbkid = p_bank1.
* SELECT SINGLE banka ort01 brnch FROM bnka
* INTO (p_banka, p_ort01, p_branch)
* WHERE banks = t001-land1
* AND bankl = t012-bankl.
*note 885104
SELECT SINGLE banka brnch bankl FROM bnka
INTO (p_banka, p_branch, p_j_1itdbank) "Note 912767
WHERE banks EQ t001-land1
AND bankl EQ t012-bankl.
*** Changes by Vivek 01-Jun-06
p_branch = p_j_1itdbank. "921787
p_branch = t012-stcd1. " Tax Number 1 is having the BSR Code
***End of Changes by Vivek 01-Jun-06
CLEAR p_ort01.
*end note 885104
ENDFORM. "select_bank
*---------------------------------------------------------------------*
* FORM convert_to_words *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_amount *
* --> p_word *
*---------------------------------------------------------------------*
FORM convert_to_words USING p_amount LIKE bseg-dmbtr CHANGING p_word
p_paise.
DATA: spell LIKE spell.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = p_amount
currency = t001-waers
filler = space
language = sy-langu
IMPORTING
in_words = spell
EXCEPTIONS
not_found = 01
too_large = 02.
MOVE spell-word TO p_word.
MOVE spell-decword TO p_paise.
ENDFORM. "convert_to_words
*---------------------------------------------------------------------*
* FORM print_certificate *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
*FORM print_certificate_old USING p_one_time.
*
* DATA : tmp_count LIKE sy-tabix ,
* flg_new_page,
* tmp_mod LIKE sy-tabix,
* tmp_lines LIKE sy-tabix.
*
*
* CLEAR tmp_amount.
* DESCRIBE TABLE printtab LINES tmp_lines.
*
* PERFORM select_pan.
* PERFORM print_header.
* SORT printtab BY print_order .
**Line item data
* LOOP AT printtab WHERE wt_acco = it_lfa1-lifnr .
*
**----address for one time vendors
* IF p_one_time = 'X' .
* PERFORM get_address_from_bsec USING printtab-belnr printtab-buzei
* CHANGING it_lfa1.
* ENDIF.
*
*
**---Calculation for new page
* tmp_mod = sy-tabix MOD 11.
* IF tmp_mod = tmp_count.
* flg_new_page = 'X'.
* tmp_count = tmp_count + 2.
* ENDIF.
*
*
** Printing headers and brought forward amount in new page
* IF flg_new_page = 'X' .
* PERFORM write_form USING 'MAIN_LINE' 'SET' 'BODY' 'MAIN'.
* PERFORM write_form USING 'CRFORWARD' 'SET' 'BODY' 'MAIN'.
* PERFORM new_page.
* PERFORM write_form USING 'MAIN_HEADING' 'SET' 'BODY' 'MAIN'.
* PERFORM write_form USING 'BRFORWARD' 'SET' 'BODY' 'MAIN'.
* flg_new_page = space.
* ENDIF.
*
** if it_lfa1-one_time = 'X' .
** PERFORM get_address_from_bsec USING printtab-belnr
*printtab-buzei
** CHANGING it_lfa1.
** endif.
*
** PERFORM select_bank USING printtab-bankl CHANGING printtab-banka
** printtab-ort01 printtab-brnch.
*
* PERFORM get_qsatz USING printtab-witht printtab-wt_withcd
* CHANGING printtab-qsatz.
* PERFORM write_form USING 'MAIN_DATA' 'SET' 'BODY' 'MAIN'.
*
** PERFORM write_form USING 'BANK' 'SET' 'BODY' 'CHALLAN'.
* tmp_amount = tmp_amount + printtab-wt_qbshh.
*
* ENDLOOP.
**Sum and footer data
*
* PERFORM append_summary.
*
*
*
* PERFORM print_footer.
** PERFORM write_form USING 'FOOTER' 'SET' 'BODY' 'FOOTER'.
*
*
*
*ENDFORM.
*---------------------------------------------------------------------*
* FORM fill_printtab *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_printtab.
REFRESH printtab.
LOOP AT invtab WHERE no_print <> 'X' .
MOVE-CORRESPONDING invtab TO printtab.
APPEND printtab.
ENDLOOP.
LOOP AT paytab WHERE no_print <> 'X' .
MOVE-CORRESPONDING paytab TO printtab.
APPEND printtab.
ENDLOOP.
LOOP AT printtab.
PERFORM select_bank USING printtab-bankl
CHANGING printtab-banka
printtab-ort01
printtab-brnch
printtab-j_1itdbank. " Note 912767
MODIFY printtab.
ENDLOOP.
PERFORM select_jv.
PERFORM filter_data.
CALL FUNCTION 'J_1I7_USEREXIT_CHEQUENO_CERT' " Note 912767
TABLES
i_printtab = printtab.
ENDFORM. "fill_printtab
*---------------------------------------------------------------------*
* FORM generate_number *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_number *
*---------------------------------------------------------------------*
FORM generate_number CHANGING p_number.
DATA : xyear LIKE bseg-gjahr.
CLEAR : xyear.
CALL FUNCTION 'J_1I6_DETERMINE_EXC_YEAR'
EXPORTING
i_bukrs = zbukrs
i_budat = zpdate-low
IMPORTING
excise_year = xyear
EXCEPTIONS
miss_company = 1
OTHERS = 2.
zyear = xyear.
IF con_reprint = 'X' .
p_number = zcertno.
ELSE.
CHECK sy-ucomm = 'PRNT'.
CLEAR: j_1iewt_cert,j_1iewt_certno.
IF sy-subrc NE 0.
MESSAGE e017.
ENDIF.
SELECT SINGLE * FROM j_1iewt_cert_n
WHERE bukrs = zbukrs
AND ( secco = save_printtab-secco " Note 604606
OR secco = save_printtab-bupla )
AND qscod = zsect.
IF sy-subrc NE 0 OR j_1iewt_cert_n-j_1inogroup IS INITIAL.
" Note 604606
MESSAGE e766.
ELSE.
SELECT SINGLE * FROM j_1iewt_certno
WHERE j_1inogroup = j_1iewt_cert_n-j_1inogroup.
" Note 604606
IF sy-subrc NE 0 OR j_1iewt_certno-numki IS INITIAL.
MESSAGE e766.
ENDIF.
ENDIF.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = j_1iewt_certno-numki
object = 'J_1ICERT'
subobject = zbukrs
toyear = xyear
IMPORTING
number = p_number
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE a166 .
ENDIF.
ENDIF.
ENDFORM. "generate_number
*---------------------------------------------------------------------*
* FORM get_address_from_bsec *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_belnr *
* --> p_buzei *
* --> p_lfa1 *
*---------------------------------------------------------------------*
FORM get_address_from_bsec USING p_belnr p_buzei CHANGING p_lfa1 LIKE
it_lfa1.
TABLES bsec.
*user exit for PAN number for one time vendors.
DATA : pan LIKE j_2icomm-c20.
CLEAR: pan.
*end of changes for PAN number for one time vendors
SELECT SINGLE * FROM bsec INTO bsec
WHERE bukrs = zbukrs
AND belnr = p_belnr
AND gjahr = zyear
AND buzei = p_buzei.
*user exit for PAN number for one time vendors
IF sy-subrc = 0.
CALL FUNCTION 'J_1I7_USEREXIT_ONETIME_PAN'
EXPORTING
y_bsec = bsec
IMPORTING
panno = pan.
.
IF pan NE ' ' .
p_lfa1-pan = pan.
ENDIF.
*end of changes for PAN number for one time vendors
MOVE :
bsec-name1 TO p_lfa1-name1 ,
bsec-name2 TO p_lfa1-str_suppl1,
*bsec-stras to p_lfa1-STR_SUPPL2
bsec-stras TO p_lfa1-street ,
bsec-ort01 TO p_lfa1-city1 ,
*p_lfa1-city2
bsec-pstlz TO p_lfa1-post_code1 .
*user exit for PAN number for one time vendors.
ENDIF.
ENDFORM. "get_address_from_bsec
*---------------------------------------------------------------------*
* FORM print_header *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_header.
IF NOT save_printtab-secco IS INITIAL. "Note 604606
SELECT SINGLE * FROM j_1iewt_cert_n
WHERE bukrs = zbukrs
AND secco = save_printtab-secco
AND qscod = zsect.
PERFORM select_data_for_layout_secco.
ELSE.
SELECT SINGLE * FROM j_1iewt_cert
WHERE bukrs = zbukrs
AND bupla = save_printtab-bupla
AND qscod = zsect.
PERFORM select_data_for_layout.
ENDIF.
move-corresponding t_adrc to adrc.
IF con_reprint IS INITIAL.
PERFORM write_form USING 'NUMBER' 'SET' 'BODY' 'NUMBER'.
ELSE.
PERFORM write_form USING 'REPRINT' 'SET' 'BODY' 'DUPNUM'.
ENDIF.
PERFORM write_form USING 'INFO1' 'SET' 'BODY' 'INFO1'.
PERFORM write_form USING 'INFO2' 'SET' 'BODY' 'INFO2'.
PERFORM write_form USING 'INFO3' 'SET' 'BODY' 'INFO3'.
PERFORM write_form USING 'MAIN_HEADING' 'SET' 'BODY' 'MAIN'.
ENDFORM. "print_header
*---------------------------------------------------------------------*
* FORM print_footer *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_footer.
PERFORM write_form USING 'MAIN_LINE' 'SET' 'BODY' 'MAIN'.
PERFORM convert_to_words USING tmp_amount CHANGING
printtab-word printtab-paise.
printtab-total_tax = tmp_amount . "Sapna 040507
PERFORM write_form USING 'TOTAL' 'SET' 'BODY' 'MAIN'.
PERFORM write_form USING 'SIGNATURE' 'SET' 'BODY' 'MAIN'.
ENDFORM. "print_footer
*---------------------------------------------------------------------*
* FORM select_pan *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM select_pan.
* for gir number
SELECT SINGLE * FROM t001z
WHERE bukrs = t001-bukrs
AND party = 'J_1I03' .
girno = t001z-paval.
* For PAN no
SELECT SINGLE paval FROM t001z INTO t001z-paval
WHERE bukrs = t001-bukrs
AND party = 'J_1I02'.
ENDFORM. "select_pan
*---------------------------------------------------------------------*
* FORM popup_to_decide *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> answer *
*---------------------------------------------------------------------*
FORM popup_to_decide CHANGING answer.
CALL FUNCTION 'POPUP_TO_DECIDE'
EXPORTING
* DEFAULTOPTION = '1'
textline1 = 'Please choose an option'
* TEXTLINE2 = ' '
* TEXTLINE3 = ' '
text_option1 = 'Print Certificate'
text_option2 = 'View Print preview only'
icon_text_option1 = 'ICON_PRINT'
* ICON_TEXT_OPTION2 = ' '
titel = 'Print Option'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
answer = answer
.
ENDFORM. "popup_to_decide
*---------------------------------------------------------------------*
* FORM new_page *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM new_page.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command = 'NEW-PAGE'
EXCEPTIONS
unopened = 1
unstarted = 2
OTHERS = 3.
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. "new_page
*---------------------------------------------------------------------*
* FORM print_summaries *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_summaries.
CHECK NOT printtab[] IS INITIAL AND con_reprint IS INITIAL.
* perform new_page.
* PERFORM end_form.
PERFORM start_form USING layout 'FNEXT'.
PERFORM print_challanwise_summary.
PERFORM end_form.
PERFORM start_form USING layout 'THIRD'.
PERFORM print_certificate_summary.
PERFORM end_form.
ENDFORM. "print_summaries
*---------------------------------------------------------------------*
* FORM start_form *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_layout *
* --> ppage *
*---------------------------------------------------------------------*
FORM start_form USING p_layout ppage.
CALL FUNCTION 'START_FORM'
EXPORTING
form = p_layout
startpage = ppage
EXCEPTIONS
form = 01
format = 02
unended = 03
unopened = 04
unused = 05.
ENDFORM. "start_form
*---------------------------------------------------------------------*
* FORM select_form *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_bupla *
* --> p_form *
*---------------------------------------------------------------------*
FORM select_form USING p_secco CHANGING p_form.
SELECT SINGLE tdform FROM j_1iewt_cert_n INTO p_form
WHERE bukrs = zbukrs
AND secco = p_secco
AND qscod = zsect.
IF layout = space.
MESSAGE e743.
ENDIF.
ENDFORM. "select_form
*---------------------------------------------------------------------*
* FORM print_challanwise_summary *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_challanwise_summary.
DATA : tmp_bankl LIKE bnka-bankl.
CLEAR: total_amt,total_challan_amt.
DATA : ls_belnr LIKE bseg-belnr,
ls_wrbtr LIKE bseg-wrbtr.
* Data
DATA : BEGIN OF printtab_loc OCCURS 5,
j_1iextchln LIKE printtab-j_1iextchln,
j_1iextchdt LIKE printtab-j_1iextchdt,
banka LIKE bnka-banka ,
wt_qbshh LIKE with_item-wt_qbshh,
END OF printtab_loc .
PERFORM select_company_name.
PERFORM write_form USING 'CHALLAN_SUMMARY' 'SET' 'BODY' 'SUMMARY2'.
SORT printtab BY j_1iextchdt j_1iextchln .
LOOP AT printtab.
MOVE-CORRESPONDING printtab TO printtab_loc .
COLLECT printtab_loc .
ENDLOOP .
CLEAR printtab .
LOOP AT printtab_loc WHERE
* no_print <> 'X' AND
NOT wt_qbshh IS INITIAL.
* on change of printtab-j_1iextchln.
MOVE-CORRESPONDING printtab_loc TO printtab .
SELECT SINGLE belnr INTO ls_belnr FROM j_1iewtchln
WHERE bukrs EQ zbukrs
AND gjahr EQ zyear
AND j_1iextchln EQ printtab_loc-j_1iextchln
AND j_1iextchdt EQ printtab_loc-j_1iextchdt.
IF sy-subrc = 0.
SELECT SINGLE wrbtr INTO ls_wrbtr FROM bseg
WHERE belnr EQ ls_belnr
AND gjahr EQ zyear
AND bukrs EQ zbukrs.
IF sy-subrc EQ 0.
ls_wrbtr = ABS( ls_wrbtr ).
printtab_loc-wt_qbshh = ls_wrbtr.
MODIFY printtab_loc.
ENDIF.
ENDIF.
PERFORM write_form USING 'CHALLAN_DATA' 'SET' 'BODY' 'MAIN'.
* endon.
total_challan_amt = total_challan_amt + printtab-wt_qbshh.
CLEAR printtab .
ENDLOOP.
total_amt = total_challan_amt.
PERFORM write_form USING 'CERT_SUM' 'SET' 'BODY' 'MAIN'.
ENDFORM. "print_challanwise_summary
*---------------------------------------------------------------------*
* FORM select_company_name *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM select_company_name.
SELECT SINGLE name1 FROM sadr INTO sadr-name1
WHERE adrnr = t001-adrnr" geting addresses
AND natio = ' ' .
ENDFORM. "select_company_name
*---------------------------------------------------------------------*
* FORM end_form *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM end_form.
CALL FUNCTION 'END_FORM'
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
OTHERS = 3.
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. "end_form
*---------------------------------------------------------------------*
* FORM print_certificate_summary *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_certificate_summary.
CLEAR total_amt.
DATA : ls_belnr LIKE bseg-belnr,
ls_wrbtr LIKE bseg-wrbtr,
wa_bseg LIKE bseg,
j_1iintchln LIKE j_1iewtchln-j_1iintchln,
j_1iintchdt LIKE j_1iewtchln-j_1iintchdt,
wa_withtab LIKE LINE OF withtab.
PERFORM write_form USING 'CERT_SUMMARY' 'SET' 'BODY' 'SUMMARY'.
CLEAR it_summary.
LOOP AT it_summary.
* CLEAR PRINTTAB.
* LOOP AT PRINTTAB WHERE BELNR EQ IT_SUMMARY-BELNR AND
* J_1IINTCHLN NE SPACE AND
* J_1IINTCHDT NE SPACE AND
* WT_ACCO EQ IT_SUMMARY-LIFNR AND
* GJAHR EQ IT_SUMMARY-GJAHR.
*
* J_1IINTCHLN = PRINTTAB-J_1IINTCHLN.
* J_1IINTCHDT = PRINTTAB-J_1IINTCHDT.
* EXIT.
* ENDLOOP.
*
* SELECT SINGLE BELNR FROM J_1IEWTCHLN INTO LS_BELNR
* WHERE BUKRS EQ ZBUKRS
* AND GJAHR EQ ZYEAR
* AND J_1IINTCHLN EQ J_1IINTCHLN
* AND J_1IINTCHDT EQ J_1IINTCHDT.
*
* IF SY-SUBRC EQ 0.
* SELECT SINGLE WRBTR INTO LS_WRBTR FROM BSEG
* WHERE BELNR EQ LS_BELNR
* AND GJAHR EQ ZYEAR
* AND BUKRS EQ ZBUKRS.
*
* LS_WRBTR = ABS( LS_WRBTR ).
* IT_SUMMARY-AMOUNT = LS_WRBTR.
* MODIFY IT_SUMMARY.
*
* ENDIF.
IF NOT it_summary-secco IS INITIAL.
PERFORM write_form USING 'CERT_DATA' 'SET' 'BODY' 'MAIN'.
total_amt = total_amt + it_summary-amount.
ELSE.
IF NOT it_summary-bupla IS INITIAL.
it_summary-secco = it_summary-bupla.
PERFORM write_form USING 'CERT_DATA' 'SET' 'BODY' 'MAIN'.
total_amt = total_amt + it_summary-amount.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM write_form USING 'CERT_SUM' 'SET' 'BODY' 'MAIN'.
ENDFORM. "print_certificate_summary
*---------------------------------------------------------------------*
* FORM append_summary *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM append_summary USING p_lifnr p_bupla p_amount p_belnr p_gjahr.
"Note 804529
it_summary-lifnr = p_lifnr.
it_summary-bupla = p_bupla.
it_summary-certno = cert_number.
it_summary-amount = p_amount.
it_summary-belnr = p_belnr. "Note 804529
it_summary-gjahr = p_gjahr. "Note 804529
APPEND it_summary.
ENDFORM. "append_summary
*---------------------------------------------------------------------*
* FORM update_tables *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_certno *
*---------------------------------------------------------------------*
FORM update_tables.
CHECK con_reprint IS INITIAL. "Update tables only for reprint
*USING p_certno.
*Update with_item table
* CHECK NOT p_certno IS INITIAL.
*Loop at the summary table. For each certificate printed, select ffrom
*invtab and paytab for vendor and bupla. Update certificate number there
*modify withitem table from this internal table.
REFRESH update_tab.
LOOP AT it_summary.
CHECK NOT it_summary-certno IS INITIAL.
READ TABLE it_lfa1 WITH KEY lifnr = it_summary-lifnr. "Note 837288
IF it_lfa1-one_time IS INITIAL. " Note 815118
LOOP AT invtab WHERE wt_acco = it_summary-lifnr
AND ( secco = it_summary-secco " Note 604606
OR bupla = it_summary-bupla )
* Belnr field has been removed " Note 815118
AND gjahr = it_summary-gjahr. " Note 804529
MOVE-CORRESPONDING invtab TO update_tab.
update_tab-ctnumber = it_summary-certno.
update_tab-j_1icertdt = zcertdt.
APPEND update_tab.
ENDLOOP.
ELSE. " Note 815118
LOOP AT invtab WHERE wt_acco = it_summary-lifnr
AND ( secco = it_summary-secco " Note 604606
OR bupla = it_summary-bupla )
AND belnr = it_summary-belnr " Note 804529
AND gjahr = it_summary-gjahr. " Note 804529
MOVE-CORRESPONDING invtab TO update_tab.
update_tab-ctnumber = it_summary-certno.
update_tab-j_1icertdt = zcertdt.
APPEND update_tab.
ENDLOOP.
ENDIF. " Note 815118
IF it_lfa1-one_time IS INITIAL. " Note 815118
LOOP AT paytab WHERE wt_acco = it_summary-lifnr
AND ( secco = it_summary-secco " Note 604606
OR bupla = it_summary-bupla )
* Belnr field has been removed " Note 815118
AND gjahr = it_summary-gjahr. " Note 804529
MOVE-CORRESPONDING paytab TO update_tab.
update_tab-ctnumber = it_summary-certno.
update_tab-j_1icertdt = zcertdt.
APPEND update_tab.
ENDLOOP.
ELSE. " Note 815118
LOOP AT paytab WHERE wt_acco = it_summary-lifnr
AND ( secco = it_summary-secco " Note 604606
OR bupla = it_summary-bupla )
AND belnr = it_summary-belnr " Note 804529
AND gjahr = it_summary-gjahr. " Note 804529
MOVE-CORRESPONDING paytab TO update_tab.
update_tab-ctnumber = it_summary-certno.
update_tab-j_1icertdt = zcertdt.
APPEND update_tab.
ENDLOOP.
ENDIF. " Note 815118
ENDLOOP.
CHECK NOT update_tab[] IS INITIAL.
*update_tab now contains all the records which have to be updated into
*with_item and certificate table
LOOP AT update_tab.
UPDATE with_item SET ctnumber = update_tab-ctnumber
j_1icertdt = update_tab-j_1icertdt
WHERE bukrs = update_tab-bukrs
AND belnr = update_tab-belnr
AND gjahr = update_tab-gjahr
AND buzei = update_tab-buzei
AND witht = update_tab-witht.
ENDLOOP.
LOOP AT it_summary.
IF NOT it_summary-secco IS INITIAL. " Note 604606
CLEAR j_1iewt_certif_n.
j_1iewt_certif_n-bukrs = zbukrs.
j_1iewt_certif_n-gjahr = zyear.
j_1iewt_certif_n-secco = it_summary-secco.
j_1iewt_certif_n-qscod = zsect.
j_1iewt_certif_n-ctnumber = it_summary-certno.
j_1iewt_certif_n-j_1icertdt = zcertdt.
j_1iewt_certif_n-wt_qbshh = it_summary-amount.
j_1iewt_certif_n-usnam = sy-uname.
j_1iewt_certif_n-cputm = sy-uzeit.
j_1iewt_certif_n-cpudt = sy-datum.
CALL FUNCTION 'J_1I7_USEREXIT_CERTPRINT'
EXPORTING
print_flag = 'X'
CHANGING
from_date = zpdate-low
to_date = zpdate-high
wa_j_1iewt_certif_n = j_1iewt_certif_n.
MODIFY j_1iewt_certif_n.
ELSE. " Note 604606
CLEAR j_1iewt_certif.
j_1iewt_certif-bukrs = zbukrs.
j_1iewt_certif-gjahr = zyear.
j_1iewt_certif-bupla = it_summary-bupla.
j_1iewt_certif-qscod = zsect.
j_1iewt_certif-ctnumber = it_summary-certno.
j_1iewt_certif-j_1icertdt = zcertdt.
j_1iewt_certif-wt_qbshh = it_summary-amount.
*insert to update user information 12.10.2000
j_1iewt_certif-usnam = sy-uname.
j_1iewt_certif-cputm = sy-uzeit.
j_1iewt_certif-cpudt = sy-datum.
* end of insert to update user information 12.10.2000
MODIFY j_1iewt_certif .
ENDIF. " Note 604606
ENDLOOP.
MESSAGE s749 .
ENDFORM. "update_tables
*---------------------------------------------------------------------*
* FORM print_routines *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_routines.
DATA : tmp_secco LIKE invtab-secco, "Note 604606
tmp_bupla LIKE invtab-bupla,
tmp_lifnr LIKE lfa1-lifnr,
loc_lifnr LIKE lfa1-lifnr,
rc LIKE sy-subrc,
loc_bupla LIKE zsecco,
loc_secco LIKE zsecco, "Note 604606
it LIKE printtab OCCURS 0 WITH HEADER LINE.
DATA : pyear LIKE bkpf-gjahr.
pyear = zyear.
DATA : wa_printtab LIKE printtab. "Note 837288
REFRESH: tmp_printtab, save_printtab.
IF printtab[] IS INITIAL.
MESSAGE e000 WITH 'No data selected' 'for printing'.
STOP.
ENDIF.
PERFORM open_form.
SORT it_lfa1 BY lifnr secco bupla. "Note 604606
SORT printtab BY wt_acco secco bupla. "Note 604606
* Since printtab is modified and taken for printing, another temporary
* internal table is created to store the values in printtab. At the time
* of printting, printtab is populated and passed to write_form_routines
SORT printtab BY wt_acco secco bupla belnr. " Start of 837288
DATA : var_wt_qsshh LIKE printtab-wt_qsshh,
zvar_wt_qsshh LIKE printtab-wt_qsshh,
var_wt_qbshh LIKE printtab-wt_qbshh,
sno LIKE printtab-sno.
LOOP AT printtab.
ON CHANGE OF printtab-wt_acco.
CLEAR sno.
ENDON.
sno = sno + 1.
wa_printtab = printtab.
wa_printtab-sno = sno.
SELECT SINGLE * FROM t059p
WHERE land1 = 'IN'
AND witht = printtab-witht
AND wt_wtdp = '00'
AND wt_inheritbase = ''.
IF sy-subrc = 0.
zvar_wt_qsshh = zvar_wt_qsshh + printtab-wt_qsshh.
ELSE.
IF zvar_wt_qsshh < printtab-wt_qsshh.
zvar_wt_qsshh = printtab-wt_qsshh.
ENDIF.
ENDIF.
var_wt_qbshh = var_wt_qbshh + wa_printtab-wt_qbshh.
AT END OF belnr.
IF it_lfa1-one_time = ''.
IF zvar_wt_qsshh = 0.
wa_printtab-qsatz = 0.
ELSE.
wa_printtab-qsatz = ( var_wt_qbshh / zvar_wt_qsshh ) * 100.
ENDIF.
ENDIF.
MOVE-CORRESPONDING wa_printtab TO save_printtab.
save_printtab-wt_qsshh = zvar_wt_qsshh.
save_printtab-wt_qbshh = var_wt_qbshh.
APPEND save_printtab.
CLEAR save_printtab.
CLEAR : zvar_wt_qsshh, var_wt_qbshh.
ENDAT.
ENDLOOP.
printtab[] = save_printtab[]. "End of 837288
LOOP AT save_printtab.
IF NOT save_printtab-secco IS INITIAL.
PERFORM read_next_line_secco USING sy-tabix
"Note 604606
CHANGING loc_lifnr
loc_secco
rc.
READ TABLE it_lfa1 WITH KEY lifnr = save_printtab-wt_acco
secco = save_printtab-secco.
IF it_lfa1-one_time IS INITIAL. "Normal vendor
IF loc_lifnr <> save_printtab-wt_acco
OR rc <> 0
OR loc_secco <> save_printtab-secco.
PERFORM fill_tmp_table_for_vendor.
PERFORM generate_number CHANGING cert_number.
PERFORM print_certificate USING it_lfa1-one_time.
REFRESH tmp_printtab.
ELSE.
PERFORM fill_tmp_table_for_vendor.
CONTINUE.
ENDIF.
ELSE. "One time Vendor
PERFORM generate_number CHANGING cert_number.
PERFORM print_certificate USING it_lfa1-one_time.
ENDIF.
ELSE.
PERFORM read_next_line USING sy-tabix
CHANGING loc_lifnr
loc_bupla
rc.
READ TABLE it_lfa1 WITH KEY lifnr = save_printtab-wt_acco
bupla = save_printtab-bupla.
IF it_lfa1-one_time IS INITIAL. "Normal vendor
IF loc_lifnr <> save_printtab-wt_acco
OR rc <> 0
OR loc_bupla <> save_printtab-bupla.
PERFORM fill_tmp_table_for_vendor.
PERFORM generate_number CHANGING cert_number.
PERFORM print_certificate USING it_lfa1-one_time.
REFRESH tmp_printtab.
ELSE.
PERFORM fill_tmp_table_for_vendor.
CONTINUE.
ENDIF.
ELSE. "One time Vendor
PERFORM generate_number CHANGING cert_number.
PERFORM print_certificate USING it_lfa1-one_time.
ENDIF.
ENDIF.
ENDLOOP.
zyear = pyear.
PERFORM print_summaries.
PERFORM update_tables .
PERFORM close_form.
ENDFORM. "print_routines
*---------------------------------------------------------------------*
* FORM print_certificate *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_one_time *
*---------------------------------------------------------------------*
FORM print_certificate USING p_one_time.
DATA:loc_printtab LIKE printtab OCCURS 0 WITH HEADER LINE.
IF p_one_time <> 'X' .
* Printtab is the internal table used in the layout for all the details.
* This is the case of a normal vendor. So, the table tmp_printtab will
* contain the details which has to be printed. Hence printtab is locally
* moved to another internal table and then it is filled with entries in
* tmp_printtab . After printing, printtab is restored with old entries.
*To print correct tax rate in certificate for exemptions
LOOP AT tmp_printtab .
IF tmp_printtab-qsatz = ' ' AND tmp_printtab-wt_qszrt = ' '.
* When rate & exemption % not updates like in cases of formulaee
IF tmp_printtab-wt_qsshh NE 0.
tmp_printtab-qsatz =
( tmp_printtab-wt_qbshh / tmp_printtab-wt_qsshh ) * 100.
ELSE.
tmp_printtab-qsatz = 0.
ENDIF.
* ELSEIF tmp_printtab-qsatz NE ' ' AND tmp_printtab-wt_qszrt NE '
*'.
** When rate & exemption % as been defined , actual rate calculated
* IF tmp_printtab-wt_qszrt NE 100.
* tmp_printtab-qsatz =
* tmp_printtab-qsatz * ( 100 - tmp_printtab-wt_qszrt ) / 100.
* ELSE.
* tmp_printtab-qsatz = 0.
* ENDIF.
ENDIF.
MODIFY tmp_printtab TRANSPORTING qsatz.
ENDLOOP.
* Perform start_form using layout 'FIRST'.
loc_printtab[] = printtab[].
REFRESH printtab. CLEAR tmp_amount.
printtab[] = tmp_printtab[].
PERFORM print_details_normal.
printtab[] = loc_printtab[].
ELSE.
MOVE save_printtab TO printtab.
* Address for one time vendors
PERFORM get_address_from_bsec USING printtab-belnr
printtab-buzei
CHANGING it_lfa1.
PERFORM print_details_one_time.
ENDIF.
ENDFORM. "print_certificate
*---------------------------------------------------------------------*
* FORM fill_tmp_table_for_vendor *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_tmp_table_for_vendor.
tmp_printtab = save_printtab.
APPEND tmp_printtab.
ENDFORM. "fill_tmp_table_for_vendor
*---------------------------------------------------------------------*
* FORM print_details_normal *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_details_normal.
DATA : tds_calc TYPE i,
sur_calc TYPE i,
ecs_calc TYPE i.
DATA : tmp_count LIKE sy-tabix ,
flg_new_page,
tmp_mod LIKE sy-tabix,
tmp_lines LIKE sy-tabix.
PERFORM start_form USING layout 'FIRST'.
DESCRIBE TABLE printtab LINES tmp_lines.
READ TABLE printtab INDEX 1.
PERFORM select_pan.
PERFORM print_header.
* SORT printtab BY print_order .
SORT printtab BY sno gjahr budat. "Note 891923
* SORT printtab BY gjahr budat.
LOOP AT printtab WHERE wt_qbshh NE ''.
* Calculation for new page
tmp_mod = sy-tabix MOD 11.
IF tmp_mod = tmp_count.
flg_new_page = 'X'.
tmp_count = tmp_count + 1.
ENDIF.
*** start sapna
* Logic for page numbering chngd
* Page no increment on customer change.
ON CHANGE OF it_lfa1-lifnr.
page_no = page_no + 1.
ENDON.
*** end sapna
* Printing headers and brought forward amount in new page
IF flg_new_page = 'X' .
PERFORM write_form USING 'MAIN_LINE' 'SET' 'BODY' 'MAIN'.
PERFORM write_form USING 'CRFORWARD' 'SET' 'BODY' 'MAIN'.
PERFORM new_page.
PERFORM write_form USING 'MAIN_HEADING' 'SET' 'BODY' 'MAIN'.
PERFORM write_form USING 'BRFORWARD' 'SET' 'BODY' 'MAIN'.
flg_new_page = space.
CLEAR tmp_count.
ENDIF.
PERFORM get_qsatz USING printtab-witht
printtab-wt_withcd
CHANGING printtab-qsatz.
*** Start of Changes made by Vivek for TDS, SURCHARGE, ECESS - 23Mar2007
*** Copied from J_1IEWT_CERT_F01
*** The rates are based on ZSECT and TaxType - WITHT & WT_WITHCD
*** 194A
IF zsect = '194A'.
*** A1 - AA
IF printtab-witht = 'A1' OR printtab-wt_withcd = 'AA'.
tds_calc = 10 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 0 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
*printtab-ecess_amount = 2 / 1000 * ( printtab-tds_amount +
*printtab-surc_amount ).
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** A2 - AB
IF printtab-witht = 'A2' OR printtab-wt_withcd = 'AB'.
tds_calc = 10 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** A3 - AC
IF printtab-witht = 'A3' OR printtab-wt_withcd = 'AC'.
tds_calc = 20 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** 194C
ELSEIF zsect = '194C'.
*** Z1 - CA
IF printtab-witht = 'Z1' OR printtab-wt_withcd = 'CA' OR
printtab-wt_withcd = 'C1'.
tds_calc = 2 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 0 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** Z2 - CB
IF printtab-witht = 'Z2' OR printtab-wt_withcd = 'CB' OR
printtab-wt_withcd = 'C2'.
tds_calc = 2 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** Z3 - ZC
IF printtab-witht = 'Z3' OR printtab-wt_withcd = 'CC' OR
printtab-wt_withcd = 'C3'.
tds_calc = 2 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
*printtab-ecess_amount = 2 / 100 * ( printtab-tds_amount +
*printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
ENDIF.
*** Z4 - CD
IF printtab-witht = 'Z4' OR printtab-wt_withcd = 'CD' OR
printtab-wt_withcd = 'C4'.
tds_calc = 1 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 0 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
.
ENDIF.
*** Z5 - CE
IF printtab-witht = 'Z5' OR printtab-wt_withcd = 'CE' OR
printtab-wt_withcd = 'C5'.
tds_calc = 1 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** Z6 - ZF
IF printtab-witht = 'Z6' OR printtab-wt_withcd = 'CF' OR
printtab-wt_withcd = 'C6'.
tds_calc = 1 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
ELSEIF zsect = '194H'.
*** Z7 - H1
IF printtab-witht = 'Z7' OR printtab-wt_withcd = 'H1' OR
printtab-wt_withcd = 'HA'.
tds_calc = 5 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 0 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** Z8 - H2
IF printtab-witht = 'Z8' OR printtab-wt_withcd = 'H2' OR
printtab-wt_withcd = 'HB'.
tds_calc = 5 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** Z9 - H3
IF printtab-witht = 'Z9' OR printtab-wt_withcd = 'H3' OR
printtab-wt_withcd = 'HC'.
tds_calc = 5 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
ELSEIF zsect = '194J'.
*** Y1-JA
IF printtab-witht = 'Y1' OR printtab-wt_withcd = 'JA' OR
printtab-wt_withcd = 'J1'.
tds_calc = 5 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 0 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** Y2 - JB
IF printtab-witht = 'Y2' OR printtab-wt_withcd = 'JB' OR
printtab-wt_withcd = 'J2'.
tds_calc = 5 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** Y3 - JC
IF printtab-witht = 'Y3' OR printtab-wt_withcd = 'JC' OR
printtab-wt_withcd = 'J3'.
tds_calc = 5 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
ELSEIF zsect = '194I'.
*** R1 - RA
IF printtab-witht = 'R1' OR printtab-wt_withcd = 'RA'.
tds_calc = 15 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 0 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
*** R2 - RB
IF printtab-witht = 'R2' OR printtab-wt_withcd = 'RB'.
tds_calc = 15 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR: tds_calc, sur_calc, ecs_calc.
ENDIF.
*** R3 - RC
IF printtab-witht = 'R3' OR printtab-wt_withcd = 'RC'.
tds_calc = 20 / 100 * printtab-wt_qsshh.
printtab-tds_amount = tds_calc.
sur_calc = 10 / 100 * printtab-tds_amount.
printtab-surc_amount = sur_calc.
ecs_calc = ( printtab-wt_qbshh ) - ( printtab-tds_amount +
printtab-surc_amount ).
printtab-ecess_amount = ecs_calc.
CLEAR : tds_calc, sur_calc, ecs_calc.
ENDIF.
ENDIF.
*** Added by Vivek K on 28-May-2007 for Cheque #
DATA: clrdoc LIKE bseg-augbl.
SELECT SINGLE augbl FROM bseg INTO clrdoc WHERE
bukrs = printtab-bukrs
AND belnr = printtab-belnr
AND gjahr = printtab-gjahr
AND koart = 'S' " GL Accounts
AND shkzg = 'H' " Only Credit
AND qsskz = printtab-WITHT.
" Withholding Tax Code Not equal to Blank
CLEAR printtab-cheque_no.
IF sy-subrc = 0 AND clrdoc <> ' '.
SELECT SINGLE chect FROM payr INTO printtab-cheque_no WHERE
zbukr = printtab-bukrs
AND vblnr = clrdoc.
ENDIF.
*** End of addition by Vivek K
MODIFY printtab .
CLEAR clrdoc.
*** End of Changes made by Vivek for TDS, SURCHARGE, ECESS - 23Mar2007
PERFORM write_form USING 'MAIN_DATA' 'SET' 'BODY' 'MAIN'.
tmp_amount = tmp_amount + printtab-wt_qbshh.
ENDLOOP.
* Sum and footer data
IF NOT printtab-secco IS INITIAL. "Note 604606
PERFORM append_summary_secco USING printtab-wt_acco
printtab-secco
tmp_amount
printtab-belnr " Note 804529
printtab-gjahr. " Note 804529
ELSE.
PERFORM append_summary USING printtab-wt_acco
printtab-bupla
tmp_amount
printtab-belnr " Note 804529
printtab-gjahr. " Note 804529
ENDIF.
PERFORM print_footer.
PERFORM end_form.
ENDFORM. "print_details_normal
*---------------------------------------------------------------------*
* FORM print_details_one_time *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_details_one_time.
CLEAR tmp_amount.
PERFORM start_form USING layout 'FIRST'.
PERFORM select_pan.
PERFORM print_header.
PERFORM get_qsatz USING printtab-witht
printtab-wt_withcd
CHANGING printtab-qsatz.
PERFORM write_form USING 'MAIN_DATA' 'SET' 'BODY' 'MAIN'.
tmp_amount = tmp_amount + printtab-wt_qbshh.
* Sum and footer data
IF NOT printtab-secco IS INITIAL. "Note 604606
PERFORM append_summary_secco USING printtab-wt_acco
printtab-secco
tmp_amount
printtab-belnr "Note 804529
printtab-gjahr. "Note 804529
ELSE.
PERFORM append_summary USING printtab-wt_acco
printtab-bupla
printtab-wt_qbshh
printtab-belnr "Note 804529
printtab-gjahr. "Note 804529
ENDIF.
PERFORM print_footer.
PERFORM end_form.
ENDFORM. "print_details_one_time
*---------------------------------------------------------------------*
* FORM read_next_line *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> p_index *
* --> p_lifnr *
*---------------------------------------------------------------------*
FORM read_next_line USING value(p_index)
CHANGING p_lifnr
p_bupla
p_rc.
DATA: loc_print LIKE printtab.
loc_print = printtab.
p_index = p_index + 1.
READ TABLE printtab INDEX p_index.
p_rc = sy-subrc.
p_lifnr = printtab-wt_acco.
p_bupla = printtab-bupla.
printtab = loc_print.
ENDFORM. "read_next_line
*---------------------------------------------------------------------*
* FORM filter_data *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM filter_data.
* Printtab contains the original data.
* If the following conditions apply, the records have to be filtered
* with the sum of tax amounts and only one record needs to be displayed.
* There is only one tax code for tax and surcharge .
* Document numbers, challan numbers and dates are same for the lines
DATA : hold_tab LIKE printtab OCCURS 0 WITH HEADER LINE,
tmp_sum LIKE bseg-dmbtr,
tmp_sum_wt_basam LIKE with_item-wt_qsshh, "Note 692642
tmp_tabix LIKE sy-tabix.
TYPES: BEGIN OF tp_index ,
start(4) TYPE n , "change from 2 to 4 Note 803806
end(4) TYPE n, "change from 2 to 4 Note 803806
END OF tp_index.
DATA : it_index TYPE STANDARD TABLE OF tp_index WITH HEADER LINE.
DATA: lv_wt_qsshh LIKE with_item-wt_qsshh. "Note 850802
TYPES: BEGIN OF rate_type , "Note 891923
witht LIKE with_item-witht,
wt_withcd LIKE with_item-wt_withcd,
rate LIKE j_1iewt_surc1-j_1isurrat,
END OF rate_type.
*---------------Declaration for legal change------------------------*
"Note 891923
DATA: surchtype_tab1 TYPE STANDARD TABLE OF rate_type WITH HEADER LINE
,
surchtype_tab2 TYPE STANDARD TABLE OF rate_type WITH HEADER LINE
,
ecesstype_tab1 TYPE STANDARD TABLE OF rate_type WITH HEADER LINE
,
ecesstype_tab2 TYPE STANDARD TABLE OF rate_type WITH HEADER LINE
.
DATA:surc_wt_qbshh LIKE with_item-wt_qbshh,
ecess_wt_qbshh LIKE with_item-wt_qbshh,
tds_wt_qbshh LIKE with_item-wt_qbshh.
"Change for Surcharge Error
DATA:surc_wt_qbshh_tmp LIKE with_item-wt_qbshh,
ecess_wt_qbshh_tmp LIKE with_item-wt_qbshh,
tds_wt_qbshh_tmp LIKE with_item-wt_qbshh.
*----------------End of declaration---------------------------------*
* SELECT SINGLE j_1isurc FROM j_1iewt_comp
* INTO j_1iewt_comp-j_1isurc
* WHERE bukrs = zbukrs.
* CHECK sy-subrc = 0
* AND j_1iewt_comp-j_1isurc = 'X'.
* Check for Surcharge as seperate taxcode
LOOP AT printtab.
* READ TABLE printtab WITH KEY BELNR = printtab-belnr. " Note 843833
* IF sy-tfill > 2.
printtab-qsatz = ( printtab-wt_qbshh / printtab-wt_qsshh )
* 100 .
MODIFY printtab TRANSPORTING qsatz.
* ELSE.
* CONTINUE.
* ENDIF. Note 856124
ENDLOOP.
SELECT SINGLE * FROM t001
WHERE bukrs = zbukrs.
* CHECK sy-subrc = 0 AND t001-surccm = 'X'.
CHECK sy-subrc = 0.
printtab_copy[] = printtab[]. "Note 826877
SORT printtab BY belnr j_1iextchln j_1iextchdt.
hold_tab[] = printtab[].
LOOP AT printtab.
CLEAR: it_index.
LOOP AT hold_tab WHERE belnr = printtab-belnr
AND wt_acco = printtab-wt_acco
AND buzei = printtab-buzei "Note 826877
AND j_1iextchln = printtab-j_1iextchln
AND j_1iextchdt = printtab-j_1iextchdt.
IF it_index-start IS INITIAL.
it_index-start = sy-tabix.
ENDIF.
tmp_tabix = sy-tabix.
ENDLOOP.
CHECK sy-subrc = 0 .
it_index-end = tmp_tabix.
CHECK NOT it_index-start IS INITIAL
AND NOT it_index-end IS INITIAL.
APPEND it_index.
ENDLOOP.
printtab[] = printtab_copy[]. "Note 826877
SORT it_index BY start end.
DELETE ADJACENT DUPLICATES FROM it_index.
*---------start of change for implementation of legal change--------*
"Note 891923
SELECT witht wt_withcd FROM j_1iewtsurc INTO TABLE surchtype_tab1.
SELECT witht wt_withcd FROM j_1iewtecess INTO TABLE ecesstype_tab1.
SELECT witht wt_withcd j_1isurrat FROM j_1iewt_surc1 INTO TABLE
surchtype_tab2.
SELECT witht wt_withcd j_1iecessrt FROM j_1iewt_ecess1 INTO TABLE
ecesstype_tab2.
*---------end of change for implementation of legal change--------*
LOOP AT it_index.
REFRESH hold_tab.
APPEND LINES OF printtab
FROM it_index-start TO it_index-end
TO hold_tab.
CLEAR:tmp_sum, surc_wt_qbshh, tds_wt_qbshh, ecess_wt_qbshh.
CLEAR: tmp_sum_wt_basam. "Note 792298
LOOP AT hold_tab.
tmp_sum = tmp_sum + hold_tab-wt_qbshh.
* Note 692642
lv_wt_qsshh = ABS( hold_tab-wt_qsshh ). "Note 850802
IF lv_wt_qsshh GT tmp_sum_wt_basam.
tmp_sum_wt_basam = lv_wt_qsshh.
ENDIF. "Note 792298
* Note 692642
*---------start of change for implementation of legal change--------*
"Note 891923
SELECT SINGLE * FROM t001 WHERE bukrs = hold_tab-bukrs AND surccm
= 'X'.
IF sy-subrc = 0.
READ TABLE surchtype_tab1 WITH KEY
witht = hold_tab-witht
wt_withcd = hold_tab-wt_withcd.
IF sy-subrc = 0 .
surc_wt_qbshh = surc_wt_qbshh + hold_tab-wt_qbshh.
ELSE. "Note 910865
SELECT SINGLE * FROM j_1iewt_ecflag WHERE bukrs =
hold_tab-bukrs AND
ecess_separate = 'X'.
IF sy-subrc = 0.
READ TABLE ecesstype_tab1 WITH KEY
witht = hold_tab-witht
wt_withcd = hold_tab-wt_withcd.
IF sy-subrc = 0 .
ecess_wt_qbshh = ecess_wt_qbshh + hold_tab-wt_qbshh.
ELSE.
tds_wt_qbshh = tds_wt_qbshh + hold_tab-wt_qbshh.
ENDIF.
ENDIF.
ENDIF.
ELSE.
SELECT SINGLE * FROM j_1iewt_ecflag WHERE bukrs = hold_tab-bukrs
AND ecess_separate = 'X'.
IF sy-subrc = 0.
READ TABLE ecesstype_tab1 WITH KEY
witht = hold_tab-witht
wt_withcd = hold_tab-wt_withcd.
IF sy-subrc = 0 .
ecess_wt_qbshh = ecess_wt_qbshh + hold_tab-wt_qbshh.
ELSE.
READ TABLE surchtype_tab2 WITH KEY
witht = hold_tab-witht
wt_withcd = hold_tab-wt_withcd.
IF sy-subrc = 0.
tds_wt_qbshh_tmp = ( hold_tab-wt_qbshh ) *
100 / ( 100 + surchtype_tab2-rate ).
surc_wt_qbshh_tmp = ( tds_wt_qbshh_tmp *
surchtype_tab2-rate
) / 100.
tds_wt_qbshh = tds_wt_qbshh + tds_wt_qbshh_tmp.
surc_wt_qbshh = surc_wt_qbshh + surc_wt_qbshh_tmp.
ENDIF.
ENDIF.
ELSE.
READ TABLE surchtype_tab2 WITH KEY
witht = hold_tab-witht
wt_withcd = hold_tab-wt_withcd.
IF sy-subrc = 0.
READ TABLE ecesstype_tab2 WITH KEY
witht = hold_tab-witht
wt_withcd = hold_tab-wt_withcd.
IF sy-subrc = 0 .
tds_wt_qbshh_tmp = ( hold_tab-wt_qbshh * 100 * 100 ) / (
10000 + ( 100 *
surchtype_tab2-rate ) + ( 100 + surchtype_tab2-rate ) *
ecesstype_tab2-rate ).
tds_wt_qbshh = tds_wt_qbshh + tds_wt_qbshh_tmp.
surc_wt_qbshh_tmp = ( tds_wt_qbshh_tmp *
surchtype_tab2-rate ) / 100.
surc_wt_qbshh = surc_wt_qbshh + surc_wt_qbshh_tmp.
ecess_wt_qbshh_tmp = ( ( tds_wt_qbshh_tmp +
surc_wt_qbshh_tmp ) *
ecesstype_tab2-rate ) / 100.
ecess_wt_qbshh = ecess_wt_qbshh + ecess_wt_qbshh_tmp.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
READ TABLE printtab INDEX it_index-start.
printtab-wt_qbshh = tmp_sum.
printtab-tds_amount = tds_wt_qbshh.
printtab-surc_amount = surc_wt_qbshh.
printtab-ecess_amount = ecess_wt_qbshh.
printtab-wt_qsshh = tmp_sum_wt_basam. "Note 850802
printtab-qsatz = ( printtab-wt_qbshh / printtab-wt_qsshh )
* 100 .
MODIFY printtab INDEX it_index-start
TRANSPORTING wt_qbshh qsatz wt_qsshh tds_amount surc_amount
ecess_amount."Note 792298/826877/856124
ENDLOOP.
*---------end of change for implementation of legal change--------*
REFRESH hold_tab.
LOOP AT it_index.
it_index-start = it_index-start + 1.
APPEND LINES OF printtab
FROM it_index-start TO it_index-end
TO hold_tab.
ENDLOOP.
LOOP AT hold_tab.
DELETE printtab
WHERE belnr = hold_tab-belnr
AND gjahr = hold_tab-gjahr
AND buzei = hold_tab-buzei
AND witht = hold_tab-witht
AND wt_withcd = hold_tab-wt_withcd.
ENDLOOP.
ENDFORM. "filter_data
*---------------------------------------------------------------------*
* FORM check_certificate *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM check_certificate.
CLEAR: bupla_cert, secco_cert.
SELECT * FROM j_1iewt_certif INTO j_1iewt_certif
WHERE bukrs = zbukrs
AND qscod = zsect
AND ctnumber = zcertno
AND j_1icertdt = zcerdt.
IF sy-subrc = 0.
bupla_cert = 'X'.
EXIT.
ENDIF.
ENDSELECT.
IF NOT bupla_cert = 'X'.
SELECT * FROM j_1iewt_certif_n INTO j_1iewt_certif_n
WHERE bukrs = zbukrs
AND qscod = zsect
AND ctnumber = zcertno
AND j_1icertdt = zcerdt.
IF sy-subrc = 0.
secco_cert = 'X'.
EXIT.
ENDIF.
ENDSELECT.
ENDIF.
CHECK sy-subrc <> 0.
MESSAGE e000 WITH 'No Certificates found'.
ENDFORM. "check_certificate
*---------------------------------------------------------------------*
* FORM fill_withtab *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_withtab_reprint.
SELECT * FROM with_item
WHERE bukrs = j_1iewt_certif-bukrs
AND gjahr = j_1iewt_certif-gjahr
AND wt_stat = ' '
AND koart = 'K'
AND ctnumber = j_1iewt_certif-ctnumber
AND wt_opowtpd NE 'X'
AND wt_gruwtpd NE 'X' .
* Validate for BUPLA here itself.
CHECK sy-subrc = 0 .
READ TABLE taxtab WITH KEY witht = with_item-witht
wt_withcd = with_item-wt_withcd.
CHECK sy-subrc = 0 .
SELECT SINGLE budat FROM bkpf INTO bkpftab-budat
WHERE bukrs = j_1iewt_certif-bukrs
AND belnr = with_item-belnr
AND gjahr = j_1iewt_certif-gjahr.
SELECT SINGLE bupla FROM bseg INTO bseg-bupla
WHERE bukrs = j_1iewt_certif-bukrs
AND belnr = with_item-belnr
AND gjahr = j_1iewt_certif-gjahr
AND buzei = with_item-j_1ibuzei
AND ktosl = 'WIT'.
CHECK sy-subrc = 0 .
PERFORM select_challan_reprint.
* Move data to withtab.
MOVE-CORRESPONDING with_item TO withtab.
MOVE: bkpftab-budat TO withtab-budat,
bseg-bupla TO withtab-bupla,
bseg-secco TO withtab-secco,
challantab-j_1iextchln TO withtab-j_1iextchln,
challantab-j_1iextchdt TO withtab-j_1iextchdt,
challantab-bankl TO withtab-bankl,
taxtab-method TO withtab-method.
APPEND withtab.
ENDSELECT.
ENDFORM. "fill_withtab_reprint
*---------------------------------------------------------------------*
* FORM check_dates *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> start_date *
* --> end_date *
*---------------------------------------------------------------------*
FORM check_dates_reprint USING start_date end_date .
CHECK start_date > end_date.
MESSAGE e000 WITH
'Certificate Reprint date should be' ' on or later than '
'Certificate date'.
ENDFORM. "check_dates_reprint
*---------------------------------------------------------------------*
* FORM select_challan_reprint *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM select_challan_reprint.
SELECT *
FROM j_1iewtchln INTO challantab
WHERE bukrs = with_item-bukrs
* AND belnr = with_item-belnr
* AND gjahr = with_item-gjahr
AND j_1iintchln = with_item-j_1iintchln
AND j_1iintchdt = with_item-j_1iintchdt.
EXIT.
ENDSELECT.
ENDFORM. "select_challan_reprint
*---------------------------------------------------------------------*
* FORM fill_nature_of_payment *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_nature_of_payment.
SELECT SINGLE text40 FROM t059ot INTO t059o-text40
WHERE land1 = t001-land1
AND spras = sy-langu
AND wt_qscod = zsect.
ENDFORM. "fill_nature_of_payment
*&---------------------------------------------------------------------*
*& Form check_secco
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_secco.
CLEAR seccode.
SELECT COUNT( * ) FROM seccode
WHERE bukrs = zbukrs
AND seccode IN zsecco.
IF sy-subrc <> 0.
MESSAGE e707.
ENDIF .
ENDFORM. " check_secco
*&---------------------------------------------------------------------*
*& Form read_next_line_secco
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SY_TABIX text
* <--P_LOC_LIFNR text
* <--P_LOC_SECCO text
* <--P_RC text
*----------------------------------------------------------------------*
FORM read_next_line_secco USING value(p_index)
CHANGING p_lifnr
p_secco
p_rc.
DATA: loc_print LIKE printtab.
loc_print = printtab.
p_index = p_index + 1.
READ TABLE printtab INDEX p_index.
p_rc = sy-subrc.
p_lifnr = printtab-wt_acco.
p_secco = printtab-secco.
printtab = loc_print.
ENDFORM. " read_next_line_secco
*&---------------------------------------------------------------------*
*& Form select_data_for_layout_secco
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_data_for_layout_secco.
PERFORM fill_adrc_for_secco.
PERFORM select_adrc USING t001-adrnr CHANGING t_adrc.
PERFORM fill_nature_of_payment.
ENDFORM. " select_data_for_layout_secco
*&---------------------------------------------------------------------*
*& Form fill_adrc_for_secco
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_adrc_for_secco.
CLEAR adrc.
SELECT SINGLE adrnr FROM seccode
INTO seccode-adrnr
WHERE bukrs = zbukrs
AND seccode = printtab-secco.
CHECK NOT seccode-adrnr IS INITIAL.
PERFORM select_adrc_secco USING seccode-adrnr CHANGING adrc.
ENDFORM. " fill_adrc_for_secco
*&---------------------------------------------------------------------*
*& Form select_adrc_secco
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SECCODE_ADRNR text
* <--P_ADRC text
*----------------------------------------------------------------------*
FORM select_adrc_secco USING p_adrnr
CHANGING p_adrc STRUCTURE adrc.
SELECT * FROM adrc INTO p_adrc
WHERE addrnumber = p_adrnr.
EXIT.
ENDSELECT.
ENDFORM. " select_adrc_secco
*&---------------------------------------------------------------------*
*& Form append_summary_secco
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PRINTTAB_WT_ACCO text
* -->P_PRINTTAB_SECCO text
* -->P_TMP_AMOUNT text
*----------------------------------------------------------------------*
FORM append_summary_secco USING p_lifnr p_secco p_amount p_belnr
p_gjahr. " Note 804529
it_summary-lifnr = p_lifnr.
it_summary-secco = p_secco.
it_summary-certno = cert_number.
it_summary-amount = p_amount.
it_summary-belnr = p_belnr. " Note 804529
it_summary-gjahr = p_gjahr. " Note 804529
APPEND it_summary.
ENDFORM. " append_summary_secco
*&---------------------------------------------------------------------*
*& Form select_form_bupla
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ZBUPLA_LOW text
* <--P_LAYOUT text
*----------------------------------------------------------------------*
FORM select_form_bupla USING p_bupla CHANGING p_form.
SELECT SINGLE tdform FROM j_1iewt_cert INTO p_form
WHERE bukrs = zbukrs
AND bupla = p_bupla
AND qscod = zsect.
IF layout = space.
MESSAGE e743.
ENDIF.
ENDFORM. " select_form_bupla
*&---------------------------------------------------------------------*
*& Form fill_withtab_reprint_secco
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_withtab_reprint_secco.
SELECT * FROM with_item
WHERE bukrs = j_1iewt_certif_n-bukrs
AND gjahr = j_1iewt_certif_n-gjahr
AND wt_stat = ' '
AND koart = 'K'
AND ctnumber = j_1iewt_certif_n-ctnumber
AND wt_opowtpd NE 'X'
AND wt_gruwtpd NE 'X' .
* Validate for BUPLA here itself.
CHECK sy-subrc = 0 .
READ TABLE taxtab WITH KEY witht = with_item-witht
wt_withcd = with_item-wt_withcd.
CHECK sy-subrc = 0 .
SELECT SINGLE budat FROM bkpf INTO bkpftab-budat
WHERE bukrs = j_1iewt_certif_n-bukrs
AND belnr = with_item-belnr
AND gjahr = j_1iewt_certif_n-gjahr.
SELECT SINGLE secco FROM bseg INTO bseg-secco
WHERE bukrs = j_1iewt_certif_n-bukrs
AND belnr = with_item-belnr
AND gjahr = j_1iewt_certif_n-gjahr
AND buzei = with_item-j_1ibuzei
AND ktosl = 'WIT'.
CHECK sy-subrc = 0 .
PERFORM select_challan_reprint.
* Move data to withtab.
MOVE-CORRESPONDING with_item TO withtab.
MOVE: bkpftab-budat TO withtab-budat,
bseg-bupla TO withtab-bupla,
bseg-secco TO withtab-secco,
challantab-j_1iextchln TO withtab-j_1iextchln,
challantab-j_1iextchdt TO withtab-j_1iextchdt,
challantab-bankl TO withtab-bankl,
taxtab-method TO withtab-method.
APPEND withtab.
ENDSELECT.
ENDFORM. " fill_withtab_reprint_secco
*&---------------------------------------------------------------------*
*& Form callback_bsik
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*------------------------------------------------------------------
FORM callback_bsik USING name TYPE ldbn-ldbnode
wa TYPE bsik
evt TYPE c
check TYPE c.
CLEAR wa_bsik.
MOVE-CORRESPONDING wa TO wa_bsik.
* insert wa_bkpf into table bkpftab.
APPEND wa_bsik TO bsiktab.
ENDFORM. "callback_bsik
* ---------- Note 887656 ----------------------------------------------
*&---------------------------------------------------------------------*
*& Form callback_bkpf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
*----------------------------------------------------------------------*
FORM callback_bkpf USING name TYPE ldbn-ldbnode
wa TYPE bkpf
evt TYPE c
check TYPE c.
CLEAR wa_bkpf.
MOVE-CORRESPONDING wa TO wa_bkpf.
* insert wa_bkpf into table bkpftab.
IF wa_bkpf-stblg IS INITIAL.
APPEND wa_bkpf TO bkpftab.
ENDIF.
ENDFORM. "callback_bkpf
*&---------------------------------------------------------------------*
*& Form callback_bseg
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
*----------------------------------------------------------------------*
FORM callback_bseg USING name TYPE ldbn-ldbnode
wa TYPE bseg
evt TYPE c
check TYPE c.
CLEAR wa_bseg.
MOVE-CORRESPONDING wa TO wa_bseg.
* insert wa_bseg into table bsegtab.
APPEND wa_bseg TO bsegtab.
ENDFORM. "callback_bseg
*&---------------------------------------------------------------------*
*& Form callback_with
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->NAME text
* -->WA text
* -->EVT text
* -->CHECK text
*----------------------------------------------------------------------*
FORM callback_with USING name TYPE ldbn-ldbnode
wa TYPE with_item
evt TYPE c
check TYPE c.
DATA : v_gjahr(4) TYPE n.
READ TABLE taxtab WITH KEY witht = wa-witht
wt_withcd = wa-wt_withcd.
CHECK sy-subrc = 0.
IF wa-wt_stat = ' ' AND wa-koart = 'K' AND wa-wt_acco IN
zvendor
AND wa-ctnumber = ' ' AND wa-wt_opowtpd NE 'X' AND wa-wt_gruwtpd NE
'X' AND wa-j_1iewtrec NE 'B'.
SELECT SINGLE augbl augdt FROM bsas INTO (bsas-augbl,bsas-augdt)
WHERE bukrs = wa-bukrs
AND hkont = wa-hkont
AND gjahr = wa-gjahr
AND belnr = wa-belnr
AND buzei = wa-j_1ibuzei.
CHECK sy-subrc = 0 .
SELECT SINGLE gjahr FROM bkpf INTO v_gjahr
WHERE bukrs = wa-bukrs
AND belnr = bsas-augbl
AND budat = bsas-augdt.
* CALL FUNCTION 'J_1I6_DETERMINE_EXC_YEAR'
* EXPORTING
* I_BUKRS = with_item-bukrs
* I_BUDAT = bsas-augdt
* IMPORTING
* EXCISE_YEAR = v_gjahr
* EXCEPTIONS
* MISS_COMPANY = 1
* OTHERS = 2.
READ TABLE challantab WITH KEY bukrs = wa-bukrs
belnr = bsas-augbl
gjahr = v_gjahr.
CHECK sy-subrc = 0 .
IF NOT wa_bseg-secco IN zsecco.
CHECK wa_bseg-bupla IN zsecco.
ENDIF.
MOVE-CORRESPONDING wa TO withitem_wa.
withitem_wa-budat = wa_bkpf-budat.
withitem_wa-bupla = wa_bseg-bupla.
withitem_wa-secco = wa_bseg-secco.
withitem_wa-j_1iextchln = challantab-j_1iextchln.
withitem_wa-j_1iextchdt = challantab-j_1iextchdt.
withitem_wa-bankl = challantab-bankl.
withitem_wa-method = taxtab-method.
READ TABLE jvtab WITH KEY wt_withcd = withitem_wa-wt_withcd
augbl = withitem_wa-belnr.
IF sy-subrc = 0.
withitem_wa-wt_qbshh = withitem_wa-wt_qbshh - jvtab-wt_qbshh.
withitem_wa-wt_qbshb = withitem_wa-wt_qbshb - jvtab-wt_qbshb.
withitem_wa-wt_qszrt = ' '.
withitem_wa-qsatz = ( withitem_wa-wt_qbshh / withitem_wa-wt_qsshh
)
* 100.
ENDIF.
* insert withitem_wa into table withtab.
APPEND withitem_wa TO withtab.
CLEAR withitem_wa.
ENDIF.
ENDFORM. "fill_withtab
*&---------------------------------------------------------------------*
*& Form SELECT_JV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_jv .
DATA: BEGIN OF it_bkpf OCCURS 0.
INCLUDE STRUCTURE bkpf.
DATA : buzei LIKE bseg-buzei.
DATA : wrbtr LIKE bseg-wrbtr.
DATA : END OF it_bkpf.
DATA : it_bseg LIKE bseg OCCURS 0 WITH HEADER LINE,
xblnr LIKE bkpf-xblnr,
buzei LIKE bseg-buzei,
wa LIKE LINE OF it_bkpf.
DELETE printtab WHERE j_1iewtrec EQ 'J'.
IF sy-subrc EQ 0.
SELECT * FROM bkpf INTO CORRESPONDING FIELDS OF TABLE it_bkpf
WHERE bukrs = zbukrs
AND gjahr = zyear
AND tcode = 'J1INJV'
AND xblnr NE space
AND budat IN zpdate
AND blart IN zdoctype
AND stgrd NE space.
LOOP AT it_bkpf INTO wa.
SPLIT wa-xblnr AT '-' INTO xblnr buzei.
IF sy-subrc = 0.
REPLACE ALL OCCURRENCES OF '*' IN xblnr WITH space.
CONDENSE xblnr NO-GAPS.
CONDENSE buzei NO-GAPS.
wa-xblnr = xblnr.
wa-buzei = buzei.
MODIFY it_bkpf FROM wa TRANSPORTING xblnr buzei.
ENDIF.
ENDLOOP.
SELECT * FROM bseg INTO TABLE it_bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs = it_bkpf-bukrs
AND belnr = it_bkpf-belnr
AND gjahr = it_bkpf-gjahr.
LOOP AT it_bkpf.
CLEAR printtab.
READ TABLE printtab WITH KEY bukrs = it_bkpf-bukrs
belnr = it_bkpf-xblnr
gjahr = it_bkpf-gjahr
j_1ibuzei = it_bkpf-buzei.
IF sy-subrc = 0.
CLEAR it_bseg.
READ TABLE it_bseg WITH KEY bukrs = it_bkpf-bukrs
belnr = it_bkpf-belnr
gjahr = it_bkpf-gjahr
koart = 'S'
hkont = printtab-hkont.
IF sy-subrc = 0.
IF it_bseg-shkzg = 'S'.
printtab-wt_qbshh = printtab-wt_qbshh - it_bseg-dmbtr.
printtab-wt_qbshb = printtab-wt_qbshb - it_bseg-wrbtr.
ELSE.
printtab-wt_qbshh = printtab-wt_qbshh + it_bseg-dmbtr.
printtab-wt_qbshb = printtab-wt_qbshb + it_bseg-wrbtr.
ENDIF.
MODIFY TABLE printtab.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " SELECT_JV<u><b>Inculde Report for Table declaration</b></u>
*----------------------------------------------------------------------*
* INCLUDE ZJ_1IEWT_CERT_TOP *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TABLES *
*----------------------------------------------------------------------*
TABLES: bkpf,
bseg,
bsas,
with_item,
j_1iewtchln,
j_1iewt_cert,
j_1iewt_certno,
j_1iewt_certif,
j_1imovend,
j_1imocust,
t059z,
t059p,
t001,
j_1bbranch,
t059ot,
t059o,
t001z,
t059fb,
t059c,
skb1,
adrc,
sadr,
itcpo,
lfb1,
knb1,
t012,
seccode, " Note 604606
j_1iewt_cert_n, " Note 604606
j_1iewt_certif_n, " Note 604606
j_1iewt_ecflag. " Note 910865
*----------------------------------------------------------------------*
* DATA *
*----------------------------------------------------------------------*
DATA : lin TYPE i,
cert_number LIKE inrdp-fromnumber,
flg_first_time TYPE c VALUE 'X' ,
tmp_amount LIKE bseg-dmbtr,
layout LIKE itcta-tdform,
bankname LIKE bnka-banka,
bankbrnch LIKE bnka-brnch,
bankcity LIKE bnka-ort01,
total_challan_amt LIKE bseg-dmbtr,
total_amt LIKE bseg-dmbtr,
cnt_print_order LIKE sy-tabix,
rc LIKE sy-subrc,
con_reprint TYPE c VALUE space, "Set as X for reprint program
girno like t001z-paval.
*----------------------------------------------------------------------*
* INTERNAL TABLES *
*----------------------------------------------------------------------*
DATA : BEGIN OF withtab OCCURS 0.
INCLUDE STRUCTURE with_item.
DATA: budat LIKE bkpf-budat,
bupla LIKE bseg-bupla,
secco LIKE bseg-secco, " Note 604606
j_1iextchln LIKE j_1iewtchln-j_1iextchln,
j_1iextchdt LIKE j_1iewtchln-j_1iextchdt,
bankl LIKE j_1iewtchln-bankl,
flag TYPE c,
no_print TYPE c,
method type c, "I- Invoice, P- Downpayment
print_order LIKE sy-tabix,
lifnr LIKE bseg-lifnr, "Note 704757
END OF withtab.
DATA: begin of bkpftab OCCURS 0.
include structure bkpf .
data : rev_ind(1).
data : end of bkpftab.
data : challantab LIKE j_1iewtchln OCCURS 0 WITH HEADER LINE.
data: BEGIN OF taxtab OCCURS 0 .
INCLUDE STRUCTURE t059z .
DATA: method , "I-Invoice and P-Payment
END OF taxtab.
*Note 773106
*DATA: invtab LIKE withtab OCCURS 0 WITH HEADER LINE,
DATA: paytab LIKE withtab OCCURS 0 WITH HEADER LINE.
data: begin of invtab occurs 0.
include structure withtab.
data : base_mod type c.
data : end of invtab.
data: bEGIN OF it_lfa1 OCCURS 0.
INCLUDE STRUCTURE lfa1.
DATA : one_time ,
bupla LIKE bseg-bupla,
secco like bseg-secco, " Note 604606
str_suppl1 LIKE adrc-str_suppl1, " Street 2
str_suppl2 LIKE adrc-str_suppl2, " Street 3
street LIKE adrc-street ,
city1 LIKE adrc-city1,
city2 LIKE adrc-city2 , "District
post_code1 LIKE adrc-post_code1, " Post code
pan LIKE j_1imovend-j_1ipanno,
END OF it_lfa1.
*data for reprint program
DATA: it_cert LIKE j_1iewt_certif OCCURS 0 WITH HEADER LINE,
t_adrc LIKE adrc.
DATA: BEGIN OF temp_withtab OCCURS 0.
DATA: belnr LIKE withtab-belnr,
buzei like withtab-buzei,
wt_qsshh LIKE withtab-wt_qsshh,
wt_qbshh LIKE withtab-wt_qbshh,
qsatz LIKE withtab-qsatz.
DATA: END OF temp_withtab.
data : BEGIN OF printtab OCCURS 0 .
INCLUDE STRUCTURE invtab.
DATA : sno LIKE sy-tabix, "Note 891923
tds_amount LIKE bseg-wrbtr,
surc_amount LIKE bseg-wrbtr,
ecess_amount LIKE bseg-wrbtr,
cheque_no like inrdp-fromnumber,
banka LIKE bnka-banka,
ort01 LIKE bnka-ort01,
*** Changes by Vivek 01-Jun-06
brnch LIKE bnka-brnch,
* brnch LIKE t012-stcd1,
***END OF Changes by Vivek 01-Jun-06
j_1itdbank like J_1ICERTIF-j_1itdbank, " Note 912767
word LIKE spell-word,
paise LIKE spell-decword,
total_tax LIKE bseg-dmbtr, "sapna 040507
END OF printtab.
DATA : BEGIN OF it_summary OCCURS 0,
lifnr LIKE lfa1-lifnr,
bupla LIKE bseg-bupla,
secco LIKE bseg-secco, " Note 604606
certno LIKE inrdp-fromnumber,
amount LIKE bseg-wrbtr,
belnr LIKE bseg-belnr, " Note 804529
gjahr LIKE bseg-gjahr, " Note 804529
END OF it_summary.
DATA: tmp_printtab LIKE printtab OCCURS 0 WITH HEADER LINE,
save_printtab LIKE printtab OCCURS 0 WITH HEADER LINE,
printtab_copy LIKE printtab OCCURS 0 WITH HEADER LINE."Note 826877
DATA : BEGIN OF update_tab OCCURS 0.
INCLUDE STRUCTURE with_item.
DATA : END OF update_tab.
data: JVTAB like with_item occurs 10 with header line.
DATA: BUPLA_CERT TYPE C,
SECCO_CERT TYPE C.
DATA : BEGIN OF with_tab OCCURS 0. "Note 887656
INCLUDE STRUCTURE with_item.
DATA : END OF with_tab.
DATA: BEGIN OF bsegtab OCCURS 0.
INCLUDE STRUCTURE bseg .
DATA : END OF bsegtab.
DATA: wa_bkpf like line of bkpftab,
wa_bseg like line of bsegtab.
DATA: callback TYPE TABLE OF ldbcb,
callback_wa LIKE LINE OF callback.
DATA: seltab TYPE TABLE OF rsparams,
seltab_wa LIKE LINE OF seltab.
DATA: withitem_wa LIKE LINE OF withtab.
*Note 891565
DATA : BEGIN OF BSIKTAB OCCURS 0.
INCLUDE STRUCTURE BSIK.
DATA: END OF BSIKTAB.
DATA: WA_BSIK LIKE LINE OF BSIKTAB.
data : PAGE_NO TYPE N.Reward all helpfull answers
Regards
Pavan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 59 | |
| 30 | |
| 21 | |
| 11 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.