on 06-26-2008 1:29 PM
i am doing the SAP Script for US Check, i am copying the standard program RFFOUS_C to Z program and standard form F110_PRENUM_CHCK to Z form. To populate new data into the form , i am creating a subroutine pool program and i am writing the logic inside that, but i am not getting the output,
So if any body have the answers, u can replay to this in SDN
Hi ,
Go through this ,This is subroutine pool for check printing
PROGRAM zfir_check_printing.
TYPES : typ_tab TYPE STANDARD TABLE OF itcsy.
&----
*& Form get_vend_name
&----
FORM get_amount TABLES intab TYPE typ_tab
outab TYPE typ_tab. "#EC CALLED
BREAK-POINT.
****************Type Declaration**************
TYPES : BEGIN OF typ_bsak,
lifnr TYPE lifnr,
augbl TYPE augbl,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
buzei TYPE buzei,
blart TYPE blart,
dmbtr TYPE dmbtr,
hkont TYPE hkont,
qbshb TYPE qbshb,
END OF typ_bsak.
TYPES : BEGIN OF typ_bsis_ld,
lifnr TYPE lifnr,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
dmbtr TYPE dmbtr,
END OF typ_bsis_ld.
TYPES : BEGIN OF typ_bsis_oth,
hkont TYPE hkont,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
dmbtr TYPE dmbtr,
END OF typ_bsis_oth.
****************Internal Declaration**************
DATA : gt_bsis_ld TYPE STANDARD TABLE OF typ_bsis_ld.
DATA : gt_bsak_tds TYPE STANDARD TABLE OF typ_bsak.
DATA : gt_bsis_oth TYPE STANDARD TABLE OF typ_bsis_oth.
****************Structure Declaration**************
DATA : gw_bsis_ld TYPE typ_bsis_ld.
DATA : gw_bsak_tds TYPE typ_bsak.
DATA : gw_bsis_oth TYPE typ_bsis_oth.
****************STATICS Declaration**************
STATICS : lv_srno(3) TYPE n,
lv_ld_et1 TYPE dmbtr, "LD
lv_tds_et1 TYPE dmbtr, "TDS
lv_others_et1 TYPE dmbtr, "OTHERS
lv_bamt_et1 TYPE dmbtr, "BILL AMOUNt
lv_npay_et1 TYPE dmbtr. "net payable
****************Variable Declaration**************
DATA : lw_outab TYPE itcsy,
lw_intab TYPE itcsy.
DATA : lv_ccode_i(3) TYPE c, "Country Code
lv_dmbtr_i TYPE dmbtr, "ITEM WISE AMOUNT
lv_vblnr_i TYPE vblnr,
lv_gjahr_i TYPE gjahr,
lv_belnr_i TYPE belnr_d,
lv_lifnr_i TYPE lifnr,
lv_region_i(3) TYPE c, "State code
lv_waers_i TYPE waers, "Currency.
lv_rbetr_i TYPE rbetr, "Ceck about
lv_rbetr_i LIKE konv-kawrt,
lv_rbetr_is(21) TYPE c, "CHECK AMOUNT for star
lv_umskz_i TYPE c, "Special G/L Indicator
lv_qbshh_i TYPE QBSHH, "Withholding Tax Amount (in Local Currency)
*
lv_bukrs_i TYPE bukrs.
*
DATA : lv_ld_e(16) TYPE c, "LD
lv_tds_e(16) TYPE c, "TDS
lv_others_e(16) TYPE c, "OTHERS
lv_rmark_e(27) TYPE c, "remark
lv_bamt_e(16) TYPE c, "BILL AMOUNt
lv_pan_e TYPE j_1ipanno, "pan no
lv_cntry_e TYPE landx, "Country
lv_state_e TYPE bezei20, "State.
lv_rbetr_e(25) TYPE c, "CHECK AMOUNT
lv_uname_e TYPE usnam,
lv_ld_et(16) TYPE c, "LD
lv_tds_et(16) TYPE c, "TDS
lv_others_et(16) TYPE c, "OTHERS
lv_bamt_et(16) TYPE c, "BILL AMOUNt
lv_npay_et(16) TYPE c, "net payable total
lv_npay_e(16) TYPE c. "net payable
DATA : lv_ld_p TYPE dmbtr, "LD amount
lv_tds_p TYPE qbshb, "TDS amount
lv_others_p TYPE dmbtr, "OTHERS amount
lv_bamt_p TYPE dmbtr, "aMOUNT
lv_rbetr_p TYPE rbetr. "CHECK AMOUNT
DATA : r_hkont TYPE RANGE OF bsak-hkont,
rw_hkont LIKE LINE OF r_hkont.
rw_hkont-sign = 'I'.
rw_hkont-option = 'BT'.
rw_hkont-low = '0002210100'.
rw_hkont-high = '0002210800'.
APPEND rw_hkont TO r_hkont.
CLEAR: rw_hkont.
rw_hkont-sign = 'I'.
rw_hkont-option = 'NE'.
rw_hkont-low = '2001100'.
APPEND rw_hkont TO r_hkont.
CLEAR: rw_hkont.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUH-VBLNR'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_vblnr_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUP-GJAHR'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_gjahr_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUP-BELNR'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_belnr_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUH-LAND1'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_ccode_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUH-ZREGI'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_region_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUD-DMBTR'.
IF sy-subrc = 0.
TRANSLATE lw_intab-value USING ', '.
CONDENSE lw_intab-value NO-GAPS.
MOVE lw_intab-value TO lv_dmbtr_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUH-LIFNR'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_lifnr_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUH-RBETR'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_rbetr_is.
TRANSLATE lw_intab-value USING ', '.
CONDENSE lw_intab-value NO-GAPS.
MOVE lw_intab-value TO lv_rbetr_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUH-WAERS'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_waers_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUP-BUKRS'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_bukrs_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUP-UMSKZ'.
IF sy-subrc = 0.
MOVE lw_intab-value TO lv_umskz_i.
ENDIF.
CLEAR : lw_intab.
READ TABLE intab INTO lw_intab WITH KEY name = 'REGUP-QBSHH'.
IF sy-subrc = 0.
TRANSLATE lw_intab-value USING ', '.
CONDENSE lw_intab-value NO-GAPS.
MOVE lw_intab-value TO lv_qbshh_i.
ENDIF.
CLEAR : lw_intab.
*********Get State Name*************
SELECT SINGLE bezei
FROM t005u
INTO lv_state_e
WHERE spras = sy-langu AND
land1 = lv_ccode_i AND
bland = lv_region_i.
********end*************************
********Get Country Name************
SELECT SINGLE landx
FROM t005t
INTO lv_cntry_e
WHERE spras = sy-langu AND
land1 = lv_ccode_i.
***********end**********************
*************Get LD Amount**********
CLEAR : lv_ld_p, lv_ld_e.
SELECT hkont gjahr belnr dmbtr
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE gt_bsis_ld
FOR ALL ENTRIES IN gt_bsak_ld
WHERE hkont = '0002001200' AND
gjahr = lv_gjahr_i AND
belnr = lv_belnr_i AND
bschl = '50' .
LOOP AT gt_bsis_ld INTO gw_bsis_ld.
lv_ld_p = lv_ld_p + gw_bsis_ld-dmbtr.
ENDLOOP.
lv_ld_e = lv_ld_p.
lv_ld_et1 = lv_ld_et1 + lv_ld_p.
lv_ld_et = lv_ld_et1.
****************End*******************
*************Get TDS Amount***********
SELECT LIFNR AUGBL GJAHR BELNR BLART
DMBTR HKONT QBSHB
FROM BSAK
INTO CORRESPONDING FIELDS OF TABLE GT_BSAK_TDS
WHERE AUGBL = LV_VBLNR_I AND
GJAHR = LV_GJAHR_I AND
BELNR = LV_BELNR_I AND
BSCHL = '31'.
SELECT hkont gjahr belnr dmbtr
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE gt_bsak_tds
WHERE gjahr = lv_gjahr_i AND
belnr = lv_belnr_i AND
bschl = '50' AND
hkont IN r_hkont .
LOOP AT gt_bsak_tds INTO gw_bsak_tds.
lv_tds_p = lv_tds_p + gw_bsak_tds-dmbtr. "QBSHB
CLEAR gw_bsak_tds.
ENDLOOP.
CLEAR : lv_tds_e.
lv_tds_e = lv_tds_p.
*
lv_tds_et1 = lv_tds_et1 + lv_tds_p.
lv_tds_et = lv_tds_et1.
*
*************End*********************
**********Get Other Amount**********
CLEAR : lv_others_p, lv_others_e.
SELECT hkont gjahr belnr dmbtr
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE gt_bsis_oth
WHERE
gjahr = lv_gjahr_i AND
belnr = lv_belnr_i AND
bschl = '50' AND
hkont <> '0002001200' AND
hkont <> '0004401370' AND
hkont NOT BETWEEN '0002210100' AND '0002210800' AND
hkont not between '0004000100' AND '0004007100'.
LOOP AT gt_bsis_oth INTO gw_bsis_oth.
lv_others_p = lv_others_p + gw_bsis_oth-dmbtr.
ENDLOOP.
lv_others_e = lv_others_p.
*
lv_others_et1 = lv_others_et1 + lv_others_p.
lv_others_et = lv_others_et1.
*
*************End********************
********Get LINE NO*****************
IF lv_vblnr_i <> lv_belnr_i.
lv_srno = lv_srno + 1.
ENDIF.
*****END***************************
*********Get Remarks***************
DATA : lv_blart_p TYPE blart.
SELECT SINGLE blart lifnr "#EC *
FROM bsak INTO (lv_blart_p, lv_lifnr_i)
WHERE augbl = lv_vblnr_i AND
gjahr = lv_gjahr_i AND
belnr = lv_belnr_i.
CLEAR : lv_rmark_e.
IF lv_blart_p = 'RE'.
lv_rmark_e = 'Bill Amount after Retention'. "#EC NOTEXT
*Begin of Delete by IBMABAP on 8th DEC DI1K901696
ELSEIF lv_blart_p = 'KR'.
lv_rmark_e = 'Bill Amount after Retention'. "#EC NOTEXT
*End of Delete by IBMABAP on 8th DEC DI1K901696
ELSEIF lv_blart_p = 'KA'.
lv_rmark_e = 'Advance Payment'. "#EC NOTEXT
ENDIF.
************End***********************
*******Get PAN************************
SELECT SINGLE j_1ipanno FROM j_1imovend
INTO lv_pan_e
WHERE lifnr = lv_lifnr_i.
********end ****************************
*************Get Bill Amount*********
IF lv_blart_p = 'RE' or lv_blart_p = 'KR'.
lv_bamt_p = lv_ld_p + lv_tds_p + lv_others_p + lv_dmbtr_i.
CLEAR : lv_bamt_e.
lv_bamt_e = lv_bamt_p.
lv_bamt_et1 = lv_bamt_et1 + lv_bamt_p.
lv_bamt_et = lv_bamt_et1.
endif.
****************End*******************
**********Get Vendor Address**********
DATA : lv_adrnr_p TYPE adrnr,
lv_add_e TYPE ad_strspp1.
DATA : gs_lfa1 TYPE lfa1.
CLEAR : lv_adrnr_p, lv_add_e.
UNPACK lv_lifnr_i TO lv_lifnr_i.
SELECT SINGLE *
FROM lfa1
INTO gs_lfa1
WHERE lifnr = lv_lifnr_i.
SELECT SINGLE str_suppl1 "#EC *
INTO lv_add_e
FROM adrc
WHERE addrnumber = gs_lfa1-adrnr.
***************End********************
************GeT Check amount with '' **
SHIFT lv_rbetr_is LEFT BY 1 PLACES.
CONDENSE lv_rbetr_is NO-GAPS.
CONCATENATE '**' lv_rbetr_is '' INTO lv_rbetr_is.
************End************************
*************GeT Check amount in word **
DATA : ls_spell TYPE spell.
CLEAR : ls_spell.
DATA : lv_amt_txt LIKE rslinlmsg-message.
DATA : lv_amt_in_word LIKE rslinlmsg-message.
*
DATA : lv_amt1(80) TYPE c,
lv_amt2(80) TYPE c,
lv_amt3(80) TYPE c.
*
CALL FUNCTION 'ZSPELL_AMOUNT'
EXPORTING
amount = lv_rbetr_i
IMPORTING
amount_in_words = lv_amt_in_word.
IF sy-subrc = 0. "#EC *
SHIFT lv_amt_in_word BY 7 PLACES LEFT.
CONCATENATE '**' lv_amt_in_word '**' INTO lv_amt_txt SEPARATED BY space.
*
lv_amt1 = lv_amt_txt+0(80).
lv_amt2 = lv_amt_txt+80(80).
lv_amt3 = lv_amt_txt+160(80).
ENDIF.
************End************************
*************GeT User Name *********** **
*
CLEAR : lv_uname_e.
SELECT SINGLE usnam
FROM bkpf INTO lv_uname_e
WHERE bukrs = lv_bukrs_i AND
belnr = lv_vblnr_i AND
gjahr = lv_gjahr_i.
*
************End************************
***********Get Net payable*************
IF lv_umskz_i = 'A'.
lv_dmbtr_i = lv_dmbtr_i - lv_qbshh_i.
ENDIF.
lv_npay_e = lv_dmbtr_i.
lv_npay_et1 = lv_npay_et1 + lv_dmbtr_i.
lv_npay_et = lv_npay_et1.
****************End*********************
READ TABLE outab INTO lw_outab INDEX 1.
IF sy-subrc = 0.
lw_outab-value = lv_ld_e.
MODIFY outab FROM lw_outab INDEX 1 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 2.
IF sy-subrc = 0.
lw_outab-value = lv_tds_e.
MODIFY outab FROM lw_outab INDEX 2 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 3.
IF sy-subrc = 0.
lw_outab-value = lv_others_e.
MODIFY outab FROM lw_outab INDEX 3 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 4.
IF sy-subrc = 0.
lw_outab-value = lv_srno.
MODIFY outab FROM lw_outab INDEX 4 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 5.
IF sy-subrc = 0.
lw_outab-value = lv_rmark_e.
MODIFY outab FROM lw_outab INDEX 5 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 6.
IF sy-subrc = 0.
lw_outab-value = lv_pan_e.
MODIFY outab FROM lw_outab INDEX 6 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 7.
IF sy-subrc = 0.
lw_outab-value = lv_cntry_e.
MODIFY outab FROM lw_outab INDEX 7 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 8.
IF sy-subrc = 0.
lw_outab-value = lv_state_e.
MODIFY outab FROM lw_outab INDEX 8 .
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 9.
IF sy-subrc = 0.
lw_outab-value = lv_bamt_e.
MODIFY outab FROM lw_outab INDEX 9.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 10.
IF sy-subrc = 0.
lw_outab-value = lv_add_e.
MODIFY outab FROM lw_outab INDEX 10.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 11.
IF sy-subrc = 0.
lw_outab-value = lv_rbetr_is.
MODIFY outab FROM lw_outab INDEX 11.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 12.
IF sy-subrc = 0.
lw_outab-value = lv_amt_txt.
MODIFY outab FROM lw_outab INDEX 12.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 12.
IF sy-subrc = 0.
lw_outab-value = lv_amt1.
MODIFY outab FROM lw_outab INDEX 12.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 13.
IF sy-subrc = 0.
lw_outab-value = lv_amt2.
MODIFY outab FROM lw_outab INDEX 13.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 14.
IF sy-subrc = 0.
lw_outab-value = lv_amt3.
MODIFY outab FROM lw_outab INDEX 14.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 15.
IF sy-subrc = 0.
lw_outab-value = lv_uname_e.
MODIFY outab FROM lw_outab INDEX 15.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 16.
IF sy-subrc = 0.
lw_outab-value = lv_ld_et.
MODIFY outab FROM lw_outab INDEX 16.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 17.
IF sy-subrc = 0.
lw_outab-value = lv_tds_et.
MODIFY outab FROM lw_outab INDEX 17.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 18.
IF sy-subrc = 0.
lw_outab-value = lv_others_et.
MODIFY outab FROM lw_outab INDEX 18.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 19.
IF sy-subrc = 0.
lw_outab-value = lv_bamt_et.
MODIFY outab FROM lw_outab INDEX 19.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 20.
IF sy-subrc = 0.
lw_outab-value = lv_npay_e.
MODIFY outab FROM lw_outab INDEX 20.
CLEAR : lw_outab.
ENDIF.
READ TABLE outab INTO lw_outab INDEX 21.
IF sy-subrc = 0.
lw_outab-value = lv_npay_et.
MODIFY outab FROM lw_outab INDEX 21.
CLEAR : lw_outab.
ENDIF.
ENDFORM. "GET_AMOUNT
Thanks
Ankur Sharma
Edited by: Ankur Sharma on Jun 28, 2008 6:49 AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
In the SAPSCRIPTS library if you see the control commands you will find command to call a subroutine...
/: PERFORM.....
/: ENDPERFORM
the sample way is as follows...
Definition in the SAPscript form:
/: PERFORM GET_BARCODE IN PROGRAM QCJPERFO
/: USING &PAGE&
/: USING &NEXTPAGE&
/: CHANGING &BARCODE&
/: ENDPERFORM
/
/ &BARCODE&
Coding of the calling ABAP program:
REPORT QCJPERFO.
FORM GET_BARCODE TABLES IN_PAR STUCTURE ITCSY
OUT_PAR STRUCTURE ITCSY.
DATA: PAGNUM LIKE SY-TABIX, "page number
NEXTPAGE LIKE SY-TABIX. "number of next page
READ TABLE IN_PAR WITH KEY u2018PAGEu2019.
CHECK SY-SUBRC = 0.
PAGNUM = IN_PAR-VALUE.
READ TABLE IN_PAR WITH KEY u2018NEXTPAGEu2019.
CHECK SY-SUBRC = 0.
NEXTPAGE = IN_PAR-VALUE.
READ TABLE OUT_PAR WITH KEY u2018BARCODEu2019.
CHECK SY-SUBRC = 0.
IF PAGNUM = 1.
OUT_PAR-VALUE = u2018|u2019. "First page
ELSE.
OUT_PAR-VALUE = u2018||u2019. "Next page
ENDIF.
IF NEXTPAGE = 0.
OUT_PAR-VALUE+2 = u2018Lu2019. "Flag: last page
ENDIF.
MODIFY OUT_PAR INDEX SY-TABIX.
ENDFORM.
so go through it...
Hope it will help you..
Better go through in library for detail concept...
Regards
Narin Nandivada
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
if you can place your Sub routine program code and its corresponding script code some body can help you to resolve your issue.
Regards
Raj,D
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
GENERATE SUBROUTINE POOL <itab> NAME <prog> [<options>].
chk with the syntax
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The question is tooo vague. Pls specify what are you not getting. It wud help people to solve your problem in a better and efficient way. So tell me what r u not exactly able to print?
Nayan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
88 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.