10-06-2007 9:48 AM
Hi,
Can anybody please help me regarding "printing sapscript label using zebra printer"?
i hav set the following print default settings in the transaction mb90:
output device :
NO01
YZZX_ZEB
"the respective sapscript form is not active ".
i hav also attached my print program for ur easy reference.
====================================================================*
FORM open_form_slv.
*
*' Description:
*' -
-
*' Add information for the SAP spooler
*' Change the name of the standard customized form for Zebra print
*'
*' Last Change Vers Programmer Reason
*' -
-
-
-
-
-
-
-
*'
*'
*'
*'----
-
*
*1
DATA: BEGIN OF print_infos.
INCLUDE STRUCTURE itcpo.
DATA: END OF print_infos.
*
DATA: form_name(16) TYPE c, char1(1) TYPE c, ind_beg TYPE i.
*
PERFORM itcpo_fuellen.
MOVE-CORRESPONDING itcpo TO print_infos.
WRITE sy-datum USING EDIT MASK '__.__.____'
TO print_infos-tdcovtitle+1.
WRITE sy-uzeit USING EDIT MASK '__:__:__'
TO print_infos-tdcovtitle+12.
CONCATENATE itcpo-tddest sy-uname ' PO'(001) ekpo-ebeln ' Doc.No'(002)
mseg-mblnr print_infos-tdcovtitle
INTO print_infos-tdcovtitle SEPARATED BY space.
*
form name from the table YZZM_GR_LABEL
IF NOT g_fonam IS INITIAL.
tnapr-fonam = g_fonam.
ENDIF.
if the used printer is a Zebra label printer, then the customized
layout set name ???_???_XXX will be changed to ???_???_ZP
SELECT SINGLE * FROM tsp03d WHERE padest = nast-ldest.
IF tsp03d-patype = 'YZZX_ZEB'.
ind_beg := 15.
WHILE ind_beg > -1.
char1 := tnapr-fonam+ind_beg. " substr(tnapr-fonam,ind_beg,1)
IF char1 = '_'.
form_name := tnapr-fonam(ind_beg).
CONCATENATE form_name '_ZP' INTO tnapr-fonam.
EXIT.
ENDIF.
ind_beg := ind_beg - 1.
ENDWHILE.
ENDIF.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
device = 'PRINTER'
language = language
OPTIONS = print_infos
form = tnapr-fonam
dialog = ' '.
x_open := x.
*
IF mseg-weanz = 0. mseg-weanz = 1. ENDIF.
*
IF syst-tcode <> 'MB90' AND NOT g_flag_popup IS INITIAL.
check for requirement of printing label and ask for gr-quantities (popup)
SELECT SINGLE * FROM yzzm_gr_quantity WHERE ebeln = mseg-ebeln.
CLEAR yzzm_gr_quantity-no_popup.
ELSE.
and ask not for gr-quantities
IF syst-tcode = 'MB90'.
yzzm_gr_quantity-erfmg := mseg-menge.
ELSE.
yzzm_gr_quantity-erfmg := mseg-menge / mseg-weanz.
ENDIF.
yzzm_gr_quantity-no_popup := x.
ENDIF.
*
determination inspection lot number
CLEAR qals-prueflos.
SELECT SINGLE * FROM qals WHERE mblnr = mseg-mblnr
AND zeile = mseg-zeile
AND mjahr = mseg-mjahr.
*
determination vendor batch
CLEAR mch1-licha.
SELECT SINGLE * FROM mch1 INTO mch1 WHERE matnr = mseg-matnr
AND charg = mseg-charg.
*
ENDFORM. "open_form_label
*
=================================================================== *
FORM we01_print_slv.
*
*' Description:
*' -
-
*' print out of hazardous symbol
*' controls the Zebra printer
*'
*' Last Change Vers Programmer Reason
*' -
-
-
-
-
-
-
-
*'
*'
*'
*'----
-
*
*
*****26.09.2007 Starts
DATA: l_objky TYPE nast-objky,"Object key
l_vstat TYPE nast-vstat. "Processing status of message
*****26.09.2007 Starts
TABLES: mgef, t300.
FIELD-SYMBOLS: .
*
DATA: aux_index LIKE sy-index.
*
DATA: count_haz_sym, position TYPE n, zw TYPE p DECIMALS 1.
DATA: aux_value(5) TYPE c.
DATA: txt(10) TYPE c, pos(5) TYPE c.
*
t001w-werks = r_werks.
t001w-name1 = r_name1.
PERFORM read_address.
*2
SELECT SINGLE * FROM ekpo WHERE ebeln = mseg-ebeln
AND ebelp = mseg-ebelp.
*
CLEAR mara-stoff.
SELECT SINGLE stoff INTO mara-stoff FROM mara WHERE matnr = mseg-matnr.
IF NOT mara-stoff IS INITIAL.
CLEAR t300.
SELECT SINGLE * FROM t300 WHERE lgnum = mseg-lgnum.
IF NOT sy-subrc IS INITIAL.
for plants without warehouses try to use the country code
CASE mseg-werks.
WHEN 'BUP'.
t300-regkz := 'US '.
ENDCASE.
ENDIF.
CLEAR mgef.
SELECT SINGLE * FROM mgef WHERE stoff = mara-stoff
AND regkz = t300-regkz.
ENDIF.
*
in case of more then one label, use for each a new output window
(not only for the first)
IF g_count > 1.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command = 'NEW-WINDOW'.
ENDIF.
*
Ausgabe Gefahrstoffsysmbole Neustadt, V.Hilgert 14.07.98
*
*For output type YNL7, the hazardous warning symbol has to be printed at the bottom of the label.So label is called before that.
IF tnapr-kschl = 'YNL7'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'LABEL'.
ENDIF.
count_haz_sym = 0. position = 0.
WHILE count_haz_sym = 'XN'.
For output type YNL7, the width of the standard text is small.
IF tnapr-kschl = 'YNL7'.
zw = position * '0.2' + '0.1'. pos = zw.
ELSE.
zw = position * '1.3' + '0.1'. pos = zw.
ENDIF.
*
IF tsp03d-patype = 'YZZX_ZEB'. " device type for ZEBRA label priter
aux_value := count_haz_sym.
ELSE.
aux_value := pos. " HP/Kyocera or other laser printer
ENDIF.
CALL FUNCTION 'TEXT_SYMBOL_SETVALUE'
EXPORTING
name = '&XPOS&'
value = aux_value
EXCEPTIONS
OTHERS = 1.
*
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element =
window = 'MAIN'
EXCEPTIONS
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
OTHERS = 7.
*
IF sy-subrc = 0.
*Varying the position for YNL7
IF tnapr-kschl = 'YNL7'.
position = position + 2.
ELSE.
position = position + 1.
ENDIF.
ENDIF.
ENDIF.
ENDWHILE.
IF NOT mseg-vfdat IS INITIAL.
am07m-mhtxt = text-105.
ENDIF.
IF NOT am07m-mhdat IS INITIAL.
am07m-mhztx = text-106.
ENDIF.
IF ekko-bsart = 'UB'.
am07m-litxt = text-101.
am07m-libzg = ekko-reswk.
ELSE.
am07m-litxt = text-100.
am07m-libzg = ekko-lifnr.
ENDIF.
belpos-mblnr = mkpf-mblnr.
belpos-zeile = mseg-zeile.
CONDENSE belpos NO-GAPS.
am07m-belpos = belpos.
IF t156-shkzg = h.
am07m-hdlne = text-020.
ELSE.
am07m-hdlne = text-010.
ENDIF.
*
Ausgabe der Etiketten mit den ind. Mengen
IF NOT g_flag_popup IS INITIAL.
SELECT SINGLE * FROM yzzm_gr_quantity WHERE ebeln = mseg-ebeln
AND weanz = g_count.
ELSE.
* print the number of labels is handeled by the Zebra printer
IF tsp03d-patype = 'YZZX_ZEB'. " device type for Zebra label prts
g_lbls_tot := mseg-weanz - g_count + 1.
g_break_print := x.
ENDIF.
ENDIF.
mseg-erfmg := yzzm_gr_quantity-erfmg.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDFORM. "GR_label_print
*&----
*
*& Form lesen
*&----
*
text
*----
*
-->OBJKY text
*----
*
FORM lesen USING objky.
nast_key = objky.
CLEAR retco.
SELECT SINGLE * FROM mkpf WHERE mblnr = nast_key-mblnr
AND mjahr = nast_key-mjahr.
SELECT SINGLE * FROM mseg WHERE mblnr = mkpf-mblnr
AND zeile = nast_key-zeile
AND mjahr = mkpf-mjahr.
IF sy-subrc NE 0.
retco = sy-subrc.
EXIT.
ENDIF.
PERFORM tab156_lesen.
xskkz = t156-rstyp.
PERFORM tab001w_lesen.
IF NOT mseg-evers IS INITIAL. "Versandvorschriften lesen.
PERFORM t027_lesen.
ENDIF.
PERFORM bestellung_lesen.
IF NOT ekpo-knttp IS INITIAL AND NOT
ekpo-weunb IS INITIAL.
PERFORM kontierung_lesen. "für multikontierte Bestellungen
ENDIF.
IF NOT mseg-ematn IS INITIAL.
PERFORM lesen_htn.
ELSE. "111277/PH
CLEAR am07m-mfrpn. "111277/PH
ENDIF.
IF mseg-matnr IS INITIAL.
mseg-menge = mseg-bpmng.
mseg-meins = mseg-bprme.
PERFORM bestelltext_lesen.
CLEAR mabdr.
ELSE.
PERFORM material_lesen.
ENDIF.
PERFORM tab024_lesen.
PERFORM t064b_lesen.
PERFORM ladr_lesen.
ENDFORM. "lesen
*----
Lesen für WE-Schein Fert.Auftrag -
*
FORM lesen_wf USING objky.
nast_key = objky.
CLEAR retco.
SELECT SINGLE * FROM mkpf WHERE mblnr = nast_key-mblnr
AND mjahr = nast_key-mjahr.
SELECT SINGLE * FROM mseg WHERE mblnr = mkpf-mblnr
AND zeile = nast_key-zeile
AND mjahr = mkpf-mjahr.
IF sy-subrc NE 0.
retco = sy-subrc.
EXIT.
ENDIF.
PERFORM tab156_lesen.
xskkz = t156-rstyp.
PERFORM tab001w_lesen.
PERFORM auftrag_lesen.
IF NOT mseg-matnr IS INITIAL.
PERFORM material_lesen.
ELSE.
mseg-menge = mseg-erfmg.
mseg-meins = mseg-erfme.
ENDIF.
PERFORM tab024d_lesen.
PERFORM t064b_lesen.
PERFORM ladr_lesen.
ENDFORM. "lesen_wf
*----
Lesen für Warenausgang -
*
FORM lesen_wa USING objky.
nast_key = objky.
CLEAR retco.
SELECT SINGLE * FROM mkpf WHERE mblnr = nast_key-mblnr
AND mjahr = nast_key-mjahr.
SELECT SINGLE * FROM mseg WHERE mblnr = mkpf-mblnr
AND zeile = nast_key-zeile
AND mjahr = mkpf-mjahr.
IF sy-subrc NE 0.
retco = sy-subrc.
EXIT.
ENDIF.
PERFORM tab156_lesen.
xskkz = t156-rstyp.
PERFORM tab001w_lesen.
IF NOT mseg-matnr IS INITIAL.
PERFORM material_lesen.
ENDIF.
PERFORM ladr_lesen.
ENDFORM. "lesen_wa
*----
Druck Vorbereiten -
*
FORM open_form.
PERFORM itcpo_fuellen.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
device = 'PRINTER'
language = language
OPTIONS = itcpo
dialog = ' '.
PERFORM lesen_t159p.
x_open = x.
ENDFORM. "open_form
*----
Druck Vorbereiten Sammelscheine -
*
FORM open_form_sammel.
PERFORM lesen_t159p.
PERFORM itcpo_fuellen.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
device = 'PRINTER'
language = language
OPTIONS = itcpo
form = tnapr-fonam
dialog = ' '.
x_open = x.
ENDFORM. "open_form_sammel
*----
Druck schließen -
*
FORM close_form.
CHECK NOT x_open IS INITIAL.
CALL FUNCTION 'CLOSE_FORM'.
CLEAR x_open.
ENDFORM. "close_form
*----
Hilfsfelder versorgen für Sammelscheindruck -
*
FORM helpdata1.
*mkpf = mkpf.
*mseg-lgort = mseg-lgort.
*ladr = ladr.
save_mkpf = *mkpf-usnam.
save_mblnr = *mkpf-mblnr.
save_budat = *mkpf-budat.
save_cpudt = *mkpf-cpudt.
save_ematn = *mseg-ematn.
save_lgort = *mseg-lgort.
save_ladr = *ladr.
*t001w = t001w.
save_werks = *t001w-werks.
save_name1 = *t001w-name1.
*ekko = ekko.
*am07m = am07m.
save_lifnr = *ekko-lifnr.
save_ebeln = *ekko-ebeln.
save_ekgrp = *ekko-ekgrp.
save_linam = *am07m-name1.
save_lina2 = *am07m-name2.
*t024 = t024.
save_eknam = *t024-eknam.
save_ektel = *t024-ektel.
*mkpf-usnam = old_mkpf.
*mkpf-mblnr = old_mblnr.
*mkpf-cpudt = old_cpudt.
*mkpf-budat = old_budat.
*mseg-ematn = old_ematn.
*mseg-lgort = old_lgort.
*ladr = old_ladr.
*t001w-werks = old_werks.
*t001w-name1 = old_name1.
*t024-eknam = old_eknam.
*t024-ektel = old_ektel.
*ekko-lifnr = old_lifnr.
*ekko-ebeln = old_ebeln.
*ekko-ekgrp = old_ekgrp.
*am07m-name1 = old_linam.
*am07m-name2 = old_lina2.
save_lfa1 = lfa1.
IF NOT old_lfa1 IS INITIAL.
lfa1 = old_lfa1.
ENDIF.
ENDFORM. "helpdata1
--- Versorgung der Hilfsfelder vor CLOSE_FORM bei Sammelscheindruck --
FORM helpdata2.
old_lfa1 = save_lfa1.
lfa1 = save_lfa1.
old_mkpf = save_mkpf.
old_lgort = save_lgort.
old_ladr = save_ladr.
old_budat = save_budat.
old_cpudt = save_cpudt.
old_werks = save_werks.
old_name1 = save_name1.
old_mblnr = save_mblnr.
old_lifnr = save_lifnr.
old_linam = save_linam.
old_lina2 = save_lina2.
old_ebeln = save_ebeln.
old_ekgrp = save_ekgrp.
old_eknam = save_eknam.
old_ektel = save_ektel.
old_ematn = save_ematn.
*mkpf-usnam = save_mkpf.
*mkpf-mblnr = save_mblnr.
*mkpf-budat = save_budat.
*mkpf-cpudt = save_cpudt.
*mseg-ematn = save_ematn.
*mseg-lgort = save_lgort.
*ladr = save_ladr.
*t001w-werks = save_werks.
*t001w-name1 = save_name1.
*t024-eknam = save_eknam.
*t024-ektel = save_ektel.
*ekko-lifnr = save_lifnr.
*ekko-ebeln = save_ebeln.
*ekko-ekgrp = save_ekgrp.
*am07m-name1 = save_linam.
*am07m-name2 = save_lina2.
ENDFORM. "helpdata2
*----
Form Lesen Warenausgang Lohnbearbeiter -
*
FORM lesen_wlb USING objky.
nast_key = objky.
CLEAR retco.
SELECT SINGLE * FROM mkpf WHERE mblnr = nast_key-mblnr
AND mjahr = nast_key-mjahr.
SELECT SINGLE * FROM mseg WHERE mblnr = mkpf-mblnr
AND zeile = nast_key-zeile
AND mjahr = mkpf-mjahr.
IF sy-subrc NE 0.
retco = sy-subrc.
EXIT.
ENDIF.
PERFORM tab156_lesen.
xskkz = t156-rstyp.
PERFORM tab001w_lesen.
IF NOT mseg-matnr IS INITIAL.
PERFORM material_lesen.
ENDIF.
ON CHANGE OF mseg-lifnr.
PERFORM read_address.
ENDON.
ENDFORM. "lesen_wlb
*eject
*----
Fuellen der ITCPO -
*
FORM itcpo_fuellen.
IF xscreen NE space.
*- Testausgabe auf Bildschirm -
-
itcpo-tdpreview = 'X'.
itcpo-tdnoprint = 'X'.
ELSE.
CLEAR: itcpo-tdpreview,
itcpo-tdnoprint.
ENDIF.
MOVE-CORRESPONDING nast TO itcpo.
itcpo-tdcover = nast-tdocover.
itcpo-tddest = nast-ldest.
itcpo-tddataset = nast-dsnam.
itcpo-tdsuffix1 = nast-dsuf1.
itcpo-tdsuffix2 = nast-dsuf2.
itcpo-tdimmed = nast-dimme.
itcpo-tddelete = nast-delet.
itcpo-tdcopies = nast-anzal.
itcpo-tdprogram = sy-repid.
ITCPO-TDTELELAND = US_COUNTRY.
itcpo-tdsenddate = nast-vsdat.
itcpo-tdsendtime = nast-vsura.
itcpo-tdnewid = x.
ENDFORM. "itcpo_fuellen
*eject.
------------ FORM lesen der Lagerortadr. ---------------------------*
FORM ladr_lesen.
DATA: BEGIN OF addr_sel.
INCLUDE STRUCTURE addr1_sel.
DATA: END OF addr_sel.
CLEAR ladr.
SELECT SINGLE * FROM twlad WHERE werks = mseg-werks
AND lgort = mseg-lgort
AND lfdnr = '001'.
IF NOT twlad-adrnr IS INITIAL AND sy-subrc IS INITIAL.
MOVE twlad-adrnr TO addr_sel-addrnumber.
ENDIF.
CALL FUNCTION 'ADDR_GET'
EXPORTING
address_selection = addr_sel
IMPORTING
sadr = ladr
EXCEPTIONS
OTHERS = 1.
ENDFORM. "ladr_lesen
**&----
*
**& Form REPRINT
**&----
*
text
**----
*
*FORM reprint.
TABLES : nase.
DATA : x TYPE string.
*
IF nase-vermo = 2.
x = 'REPRINT'.
ENDIF.
*
*
*
*
*ENDFORM. "REPRINT
Kindly do the needful.
Thanks in advance
Regards
Swarna
10-06-2007 9:52 AM
Hi Swarna,
First Check the whether your Form is Active or Not?
I thing still your form is In active.
Activate the Form and try Again.
Thanks,
Reward If Helpful.
10-06-2007 9:56 AM
hi Viji,
i forgot to mention that i am getting that error message even after activating the form.
Kindly help me...
Thanks
Preethi
10-06-2007 10:30 AM
Hi Swarna,
CALL FUNCTION 'OPEN_FORM'
EXPORTING
device = 'PRINTER'
language = language
OPTIONS = print_infos
<b>form = tnapr-fonam</b>
dialog = ' '.
x_open := x.
I thing its not a good way to pass the Form name to the Parameter.
Try like,
data : temp_form like tnapr-fonam.
<b>form = temp_form</b>
Thanks.