PROTECT-ENDPROTECT IN SAP SCRIPT
HOW DO WE USE PROTECT-ENDPROTECT TO MAKE SURE THAT THE OUTPUT DISPLAYED IN A VARIABLE WINDOW IS EITHER COMPLETE OR NOT PRINTED AT ALL.
Check this Documentation,
I have this full document if you want i will mail you..
<b>PROTECT: Protect from page break</b>
You can determine that a paragraph must not be separated by a page break in the style or layout set. If the attribute page protection is set, then all the lines of this paragraph are always output together on one page. This attribute is linked to the respective paragraph.
It certainly does not make sense, to provide all the paragraphs with a page protection attribute to neutralize an unwanted page break. This event is much too dynamic for this and only results from the current text. Furthermore, it can also happen that you only want to protect parts of a paragraph from a page break. In principle, you could solve this problem using the command NEW-PAGE, by explicitly starting a new page before the affected parts of the text. However, this procedure is not very easy to make changes to. Assume that you have formatted your text using the NEW-PAGE command so that you have no unwanted
page breaks. If you now insert new lines or delete existing ones, you would have to check all the NEW-PAGE commands inserted after this point in the text, as changes can result in the movement of page breaks. With the command pair PROTECT. ENDPROTECT, SAPscript offers you the option of individually defining protection from a page break. If you parenthesize the text in question using these commands, SAPscript automatically guarantees that all the lines it contains are printed together on one page. If the lines fit on the current output page, they are output there, in exactly the same way as if the PROTECT
command was not used. If, however, the space is not sufficient, the PROTECT command then works as a NEW-PAGE and generates a form feed .For this reason, you can view PROTECT/ENDPROTECT as a conditional NEW-PAGE command, whose condition consists of whether the included lines fit into the current window MAIN or not.
Similar Messages
-
How to limit the number of rows in a smart form , sap script.
Can anyone tell me how to limit the number of rows in the output of a sap script/smart form. I have tried "protect/endprotect" in sap script but have no idea of how to do in smart form. In sap script the only way it has happened is by reducing the size of the main window.
Hi,
In Smartform also, why dont you try reducing the size of the window if you want to limit the rows in it. Also if you are printing Line Items in a LOOP, you can write
LOOP AT T_ITAB FROM 1 TO N in the LOOP Node if you know how many records exactly you want to display in 1 Page processing.
regards,
Mahesh -
Usage of protect endprotect in smartforms
To control the Paragraph in a page we use protect endprotect in SAP SCRIPT. how to go about it in smartorms
Syntax:
/: PROTECT
/: ENDPROTECT
The lines to be protected lie between the two commands.
An ENDPROTECT command without a preceding PROTECT command is ineffective.
If the last ENDPROTECT is missing, it is implicitly assumed at the end of the text.
PROTECT .. ENDPROTECT commands cannot be nested. If a second PROTECT command is recognized while another is active, the second is ignored.
If the text between PROTECT and ENDPROTECT is so extensive that it would not fit on an empty page, then only one form feed is generated and the text is normally output. Thus, in this case, the section to be protected is separated by a page break. -
PROTECT-ENDPROTECT problem in SAP Script
In SAP Script MAIN Window I have 10 different elements to print differet stuff related with each delivery line item.
Like Material Number
Material Description
Long text [Has formatted text and I am reading that text and printed in some format some lines under material number and some under materail desc.]
and other information required by client.
Loop at Delivery item table.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command = 'PROTECT'.
Print differnt elements.
Loop at lond text internal table.
print in proper format as I mentioned.
endloop.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command = 'ENDPROTECT'.
ENDLOOP.
My problem is PROTECT ENDPROTECT is not working properly.
It is printing only 1 item with other info on first page as there are enough space left to print minimum three items with details.
on next page it is priting only 3-4 items as there are enough sapce to ptint at lease 10 items with details.
The only good thing is it is not spliting the Item details and other text.[Main window on next page has bigger size]
Any idea why PROTECT - ENDPOTECT not behaving properly.
Thanks
Aman
Message was edited by: Amandeep SinghHello,
Try to do like, Put PROTECT and ENDPROTECT in the SAPScript itself.
Like
Element 1
Protect
..matnr....
element 2
...desc....
element 3 (long text)
...text
....text
element 4
endprotect
call the element 4 in the loop statment, whenever required.
Hope it will work.
Regards,
Naimesh. -
What is the diff b/w Sap Scripts and Smart Forms
Hi,
Whats the diff b/w SAP Scripts and Smart Forms..
I need the internal explanation for both Smart Forms and SAP Scripts mean when we execute what happens whether Print Program r Forms starts execution 1st and SIMILARLY FOR SMARTFORMS WHETHER FM'S R FORMS.
Thanks & Regards,
Gopi.Hi
Difference with SMARTFORMS vs. SapScript(SE71)
The Following are the differences :-
a) Multiple page formats are possible in smartforms which is not the case in SAPScripts
b) It is possible to have a smartform without a main window .
c) Labels cannot be created in smartforms.
d) Routines can be written in smartforms tool.
e) Smartforms generates a function module when activated.
f) Unlike sapscripts (RSTXSCRP), you cannot upload/download Smartform to your local harddisk.
It was said that it was provided in CRM 3.0 version, but not available in R/3. You can download smartforms into Local PC in a XML format. In the same way you can upload this XML format into Smartform. From the smartform editor itself you can call download option, if you are working in CRM 3.0 environment.
In R3 also, you can download into XML format. However, it's not sure about uploading. Refer to the program 'SF_XSF_DEMO'.
In 4.7 Enterprise, other have seen this utlity which is completey missing in 4.6c. There is functionality to downlaod a complete form or only a particular node. (Utilities -> Download form). It will create a XML file and save it in the hard disk.
For others, if you want to download/upload the Smartforms source, you will need the help from the Basis people. What you can do is to create a Transport and then FTP down to your local harddisk. When you need the Smartform source in another system, you have FTP up the Smartforms file back to the SAP server. Finally, the Basis team, will tp it into your system.
g) The protect and endprotect command in sapscript doesn't work with smartforms. For example on a invoice: First data of position no 80. is printed on page one, other data of position no 80 is printed on page 2. And there's nothing you can do about it. Actually, there is something you can do about it. By using a folder node and checking the 'protect' checkbox, everything in that folder will be page protected.
check out this link:
http://www.sap-img.com/smartforms/sap-smart-forms.htm
Reward points if helpful.
Regards,
Swathi. -
Problem in Sap Script while printing
HI,
This report calling when I print billing document .this report getting data and call some sap script form but it prints 20 pages in place of only one page. Please
Guide me to finding the exact problem.the code is below..
REPORT zsd_excinv LINE-SIZE 110 LINE-COUNT 100 MESSAGE-ID vn.
TABLES: vbco3, "Keyfelder Vertriebsbeleg: Dokumentendruck
tvko, "Verkaufsorganisation
sadr, "Adressen
komk, "Communicationarea for conditions
komp, "Communicationarea for conditions
komvd, "Communicationarea for conditions
vbdkr, "Druck Rechnung: Kopfdaten
vbdpr, "Druck Rechnung: Positionsdaten
conf_out, "Configuration data
vbpla, "Druck Packliste : allgemeine Daten
vbplk, "Druck Packliste : Versandelementkopfdaten
vbplp, "Druck Packliste : Versandelementinhaltsdaten
vbpls. "Druck Packliste : Summendaten Verpackung
TABLES : j_1iexchdr, j_1iexcdtl, vbrk,eikp,j_1imocust,likp,
j_1iregset, itcpp,kna1, t001w.
*PARAMETER : p_grp LIKE j_1iexchdr-exgrp.
*SELECT-OPTIONS : so_num FOR j_1iexchdr-exnum.
*PARAMETERS : p_num LIKE j_1iexchdr-exnum.
DATA : wa_j_1iexchdr TYPE j_1iexchdr,
it_j_1iexchdr TYPE TABLE OF j_1iexchdr.
DATA : wa_j_1iexcdtl TYPE j_1iexcdtl,
it_j_1iexcdtl TYPE TABLE OF j_1iexcdtl.
DATA : wa_vbrk TYPE vbrk,
wa_vbrp TYPE vbrp,
wa_lips TYPE lips,
wa_j_1iregset TYPE j_1iregset,
wa_j_1iwrkcus TYPE j_1iwrkcus,
wa_j_cust TYPE j_1imocust,
it_vbrp TYPE TABLE OF vbrp.
DATA : BEGIN OF wa_header,
exnum TYPE j_1iexchdr-exnum ,
exdat TYPE j_1iexchdr-exdat ,
exccd TYPE j_1iregset-j_1iexccd,
excrg TYPE j_1iregset-j_1iexcrg,
excd1 TYPE j_1iregset-j_1iexcdi,
bstnk_vf TYPE vbrk-bstnk_vf,
zterm TYPE vbrk-zterm,
iever TYPE eikp-iever,
btgew TYPE likp-btgew,
chapid TYPE j_1iexcdtl-chapid,
traid TYPE likp-traid,
rdoc TYPE j_1iexchdr-rdoc,
maktx TYPE j_1iexcdtl-maktx,
meins TYPE likp-gewei,
END OF wa_header.
*DATA : BEGIN OF wa_header,
exnum TYPE j_1iexchdr-exnum ,
exdat TYPE j_1iexchdr-exdat ,
exccd TYPE j_1iregset-j_1iexccd,
excrg TYPE j_1iregset-j_1iexcrg,
excd1 TYPE j_1iregset-j_1iexcdi,
bstnk_vf TYPE vbrk-bstnk_vf,
zterm TYPE vbrk-zterm,
iever TYPE eikp-iever,
btgew TYPE likp-btgew,
ntgew TYPE likp-ntgew,
chapid TYPE j_1iexcdtl-chapid,
traid TYPE likp-traid,
rdoc TYPE j_1iexchdr-rdoc,
maktx TYPE j_1iexcdtl-maktx,
meins TYPE likp-gewei,
END OF wa_header.
*DATA : BEGIN OF wa_detail,
zeile TYPE j_1iexcdtl-zeile,
matnr TYPE j_1iexcdtl-matnr,
maktx TYPE j_1iexcdtl-maktx,
menge TYPE j_1iexcdtl-menge,
rate TYPE konv-kbetr,
amount TYPE konv-kwert,
fob TYPE konv-kwert,
meins TYPE j_1iexcdtl-meins,
*END OF wa_detail.
*DATA : BEGIN OF wa_duties,
zpr0 TYPE konv-kbetr,
jadc TYPE konv-kbetr,
st1 TYPE konv-kwert,
jexp TYPE konv-kbetr,
jecs TYPE konv-kbetr,
st2 TYPE konv-kwert,
jetc TYPE konv-kbetr,
st3 TYPE konv-kwert,
jsad TYPE konv-kbetr,
st4 TYPE konv-kwert,
st5 TYPE konv-kwert,
vat TYPE konv-kbetr,
st6 TYPE konv-kwert,
zint TYPE konv-kbetr,
jead TYPE konv-kbetr,
zect TYPE konv-kbetr,
zsad TYPE konv-kbetr,
vat_per TYPE konv-kbetr,
vat_val TYPE konv-kwert,
total TYPE konv-kwert,
remtime TYPE j_1iexchdr-remtime,
exdat TYPE j_1iexchdr-exdat,
*END OF wa_duties.
*DATA : wa_t618t TYPE t618t.
*DATA : in_words TYPE spell,
word TYPE spell-word,
decword TYPE spell-decword,
gv_plant_adrnr TYPE t001w-adrnr,
lv_iever TYPE eikp-iever,
lv_btgew TYPE likp-btgew,
lv_ntgew TYPE likp-ntgew,
lv_traid TYPE likp-traid,
lv_regid TYPE j_1iregset-j_1iregid,
gv_cust_adrnr TYPE kna1-adrnr,
gv_ecsduty TYPE konv-kbetr,
gv_tot_cen_amt TYPE konv-kwert,
gv_zterm TYPE tvzbt-vtext,
gv_tot_amt TYPE konv-kwert,
lv_ins TYPE konv-kbetr,
lv_fre TYPE konv-kbetr.
*CONSTANTS : c_ecs TYPE j_1iexcdtl-ecsrate VALUE '0.368'.
*SELECT-OPTIONS : so_num FOR j_1iexchdr-exnum.
DATA : BEGIN OF wa_detail,
zeile TYPE j_1iexcdtl-zeile,
matnr TYPE j_1iexcdtl-matnr,
maktx TYPE j_1iexcdtl-maktx,
menge TYPE j_1iexcdtl-menge,
rate TYPE konv-kbetr,
amount TYPE konv-kwert,
fob TYPE konv-kwert,
meins TYPE j_1iexcdtl-meins,
END OF wa_detail.
DATA : BEGIN OF wa_duties,
zpr0 TYPE konv-kwert,
jadc TYPE konv-kwert,
st1 TYPE konv-kwert,
jexp TYPE konv-kwert,
jecs TYPE konv-kwert,
st2 TYPE konv-kwert,
jetc TYPE konv-kwert,
st3 TYPE konv-kwert,
jsad TYPE konv-kwert,
st4 TYPE konv-kwert,
st5 TYPE konv-kwert,
vat TYPE konv-kwert,
st6 TYPE konv-kwert,
zint TYPE konv-kwert,
jead TYPE konv-kwert,
jeap TYPE konv-kwert,
jeap_per TYPE konv-kbetr,
zect TYPE konv-kwert,
zect_per TYPE konv-kbetr,
zecs TYPE konv-kwert,
zsad TYPE konv-kwert,
vat_per TYPE konv-kwert,
vat_val TYPE konv-kwert,
zlst_per TYPE konv-kwert,
zlst_val TYPE konv-kwert,
zcst_per TYPE konv-kwert,
zcst_val TYPE konv-kwert,
zeap TYPE konv-kwert,
zeap_per TYPE konv-kbetr,
total TYPE konv-kwert,
remtime TYPE j_1iexchdr-remtime,
exdat TYPE j_1iexchdr-exdat,
END OF wa_duties.
DATA : wa_t618t TYPE t618t.
DATA : temp TYPE konv-kwert VALUE 0,
cen_amt TYPE konv-kbetr VALUE 0.
DATA : in_words TYPE spell,
word TYPE spell-word,
decword TYPE spell-decword,
gv_plant_adrnr TYPE t001w-adrnr,
lv_iever TYPE eikp-iever,
lv_btgew TYPE likp-btgew,
lv_traid TYPE likp-traid,
lv_regid TYPE j_1iregset-j_1iregid,
gv_cust_adrnr TYPE kna1-adrnr,
gv_ecsduty TYPE konv-kbetr,
gv_tot_cen_amt TYPE konv-kwert,
gv_zterm TYPE tvzbt-vtext,
gv_tot_amt TYPE konv-kwert,
gv_amount TYPE konv-kwert,
lv_ins TYPE konv-kbetr,
lv_fre TYPE konv-kbetr.
CONSTANTS : c_ecs TYPE j_1iexcdtl-ecsrate VALUE '0.368',
rdocyr TYPE j_1iexchdr-docyr VALUE 2006.
DATA : wa_t685t TYPE t685t.
DATA : gv_zint TYPE t685t-vtext,
gv_vat TYPE t685t-vtext,
gv_zect TYPE t685t-vtext,
gv_jetc TYPE t685t-vtext,
gv_jeap TYPE t685t-vtext,
gv_jecs TYPE t685t-vtext,
gv_zlst TYPE t685t-vtext,
gv_zcst TYPE t685t-vtext,
gv_zeap TYPE t685t-vtext,
gv_jadc TYPE t685t-vtext.
INCLUDE rvadtabl.
DATA: BEGIN OF lvbplk OCCURS 0.
INCLUDE STRUCTURE vbplk. "Packlistenkopf
DATA: END OF lvbplk.
DATA: BEGIN OF lvbplp OCCURS 0.
INCLUDE STRUCTURE vbplp. "Packlistenposition
DATA: END OF lvbplp.
DATA: BEGIN OF lvbpls OCCURS 0.
INCLUDE STRUCTURE vbpls. "Packlistenstruktur
DATA: END OF lvbpls.
DATA: BEGIN OF tvbdpr OCCURS 0. "Rechnungspositionen
INCLUDE STRUCTURE vbdpr.
DATA: END OF tvbdpr.
DATA: BEGIN OF tvbplp OCCURS 10. "Packlistenposition
INCLUDE STRUCTURE vbplp.
DATA: END OF tvbplp.
DATA: BEGIN OF tkomv OCCURS 50.
INCLUDE STRUCTURE komv. "Kommunikation
DATA: END OF tkomv.
DATA: BEGIN OF tkomvd OCCURS 50.
INCLUDE STRUCTURE komvd. "Kommunikation
DATA: END OF tkomvd.
DATA: BEGIN OF *tkomvd OCCURS 50.
INCLUDE STRUCTURE komvd.
DATA: END OF *tkomvd.
DATA: BEGIN OF hkomvd OCCURS 50.
INCLUDE STRUCTURE komvd.
DATA: END OF hkomvd.
DATA: BEGIN OF tkomcon OCCURS 50.
INCLUDE STRUCTURE conf_out.
DATA: END OF tkomcon.
DATA: retcode LIKE sy-subrc. "Returncode
DATA: repeat(1) TYPE c.
DATA: xscreen(1) TYPE c. "Output on printer or screen
DATA: pr_kappl(01) TYPE c VALUE 'V'. "Application für Preisfindung
DATA: print_mwskz. "Mehrwertsteuer-Kz drucken
data for access to central address maintenance
INCLUDE sdzavdat.
FORM ENTRY *
Einstieg für Nachrichtensteuerung *
--> RETURN_CODE *
--> US_SCREEN *
FORM entry USING return_code us_screen.
CLEAR retcode.
xscreen = us_screen.
Formular öffnen, aufbereiten und schließen
PERFORM formular_invoice USING us_screen.
CASE retcode.
WHEN 0.
return_code = 0.
WHEN 3.
return_code = 3.
WHEN OTHERS.
return_code = 1.
ENDCASE.
ENDFORM. "ENTRY
FORM FORMULAR_INVOICE *
Formular abarbeiten *
FORM formular_invoice USING proc_screen.
Werte aufbauen
PERFORM get_data.
Beleg unvollständig
IF vbdkr-uvall NE space OR
vbdkr-uvals NE space OR
vbdkr-uvprs NE space.
IF proc_screen = space.
retcode = 3.
IF vbdkr-uvall NE space OR vbdkr-uvals NE space.
syst-msgno = '201'.
syst-msgid = 'VN'.
syst-msgty = 'I'.
PERFORM protocol_update.
ENDIF.
IF vbdkr-uvprs NE space.
syst-msgno = '200'.
syst-msgid = 'VN'.
syst-msgty = 'I'.
PERFORM protocol_update.
ENDIF.
ELSE.
IF vbdkr-uvall NE space OR vbdkr-uvals NE space.
MESSAGE i201.
ENDIF.
IF vbdkr-uvprs NE space.
MESSAGE i200.
ENDIF.
ENDIF.
ENDIF.
CHECK retcode = 0.
SAP-SCRIPT STEUERUNG festlegen
PERFORM form_open USING proc_screen vbdkr-land1.
CHECK retcode = 0.
Formular aufbereiten
PERFORM sd_invoice_suppl.
CHECK retcode = 0.
Formular schließen
PERFORM form_close.
CHECK retcode = 0.
ENDFORM. "FORMULAR_INVOICE
FORM GET_DATA *
Daten besorgen *
FORM get_data.
PERFORM vbdkr_data. "Rechnungskopf und -liste
PERFORM vbpla_data. "Packliste
ENDFORM. "GET_DATA
FORM FORM_OPEN *
Formular öffnen *
--> US_SCREEN Output on screen *
' ' = printer *
'X' = screen *
--> US_COUNTRY County for telecommunication and SET COUNTRY *
FORM form_open USING us_screen us_country.
DATA: xdevice(8) TYPE c.
SET LANGUAGE nast-spras.
CLEAR itcpo.
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.
IF us_screen NE space.
itcpo-tdpreview = 'X'.
itcpo-tdnoprint = 'X'.
ENDIF.
IF sy-tcode EQ 'J1IP'.
itcpo-tdpreview = 'X'.
ENDIF.
CASE nast-nacha.
WHEN '1'.
xdevice = 'PRINTER'.
WHEN '2'.
xdevice = 'TELEFAX'.
itcpo-tdtelenum = nast-telfx.
IF nast-tland IS INITIAL.
itcpo-tdteleland = us_country.
ELSE.
itcpo-tdteleland = nast-tland.
ENDIF.
WHEN '3'.
xdevice = 'TELETEX'.
itcpo-tdtelenum = nast-teltx.
IF nast-tland IS INITIAL.
itcpo-tdteleland = us_country.
ELSE.
itcpo-tdteleland = nast-tland.
ENDIF.
WHEN '4'.
xdevice = 'TELEX'.
itcpo-tdtelenum = nast-telx1.
IF nast-tland IS INITIAL.
itcpo-tdteleland = us_country.
ELSE.
itcpo-tdteleland = nast-tland.
ENDIF.
WHEN OTHERS.
xdevice = 'PRINTER'.
ENDCASE.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
form = tnapr-fonam
language = nast-spras
OPTIONS = itcpo
archive_index = toa_dara
archive_params = arc_params
device = xdevice
dialog = ' '
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
retcode = sy-subrc.
PERFORM protocol_update.
ENDIF.
SET COUNTRY us_country.
ENDFORM. "FORM_OPEN
FORM FORM_CLOSE *
Formular schließen *
FORM form_close.
CALL FUNCTION 'CLOSE_FORM' "...Ende Formulardruck
EXCEPTIONS OTHERS = 1.
IF sy-subrc NE 0.
retcode = 1.
PERFORM protocol_update.
ENDIF.
SET COUNTRY space.
SET LANGUAGE space.
ENDFORM. "FORM_CLOSE
FORM SD_INVOICE_SUPPL *
Rechnung aufbereiten *
FORM sd_invoice_suppl.
CLEAR : wa_j_1iexchdr, wa_j_1iexcdtl, wa_lips, wa_duties,
gv_tot_amt.
get data from excise header
SELECT * FROM j_1iexchdr INTO TABLE it_j_1iexchdr
WHERE exgrp = '31'
AND rdoc = nast-objky
AND trntyp = 'DLFC'
AND lifnr = space
AND docyr = rdocyr.
AND exdat IN so_dat.
SORT it_j_1iexchdr BY exdat exnum.
READ TABLE it_j_1iexchdr INTO wa_j_1iexchdr INDEX 1.
SELECT * FROM j_1iexcdtl INTO TABLE it_j_1iexcdtl
FOR ALL ENTRIES IN it_j_1iexchdr
WHERE exnum = it_j_1iexchdr-exnum
AND trntyp = 'DLFC'
AND docno = it_j_1iexchdr-docno.
SORT it_j_1iexcdtl BY exdat exnum.
LOOP AT it_j_1iexchdr INTO wa_j_1iexchdr.
*open form
PERFORM open_form USING 'ZSD_EXCINV' 1
'printer' 'X'.
MOVE : wa_j_1iexchdr-exnum TO wa_header-exnum,
wa_j_1iexchdr-exdat TO wa_header-exdat,
wa_j_1iexchdr-rdoc TO wa_header-rdoc.
get plant details
SELECT SINGLE * FROM j_1iwrkcus INTO wa_j_1iwrkcus
WHERE j_1iwerks = wa_j_1iexchdr-werks.
SELECT SINGLE * FROM j_1iregset INTO wa_j_1iregset
WHERE j_1iregid = wa_j_1iwrkcus-j_1iregid.
SELECT adrnr INTO gv_plant_adrnr FROM t001w
WHERE werks = wa_j_1iexchdr-werks.
ENDSELECT.
MOVE : wa_j_1iregset-j_1iexccd TO wa_header-exccd,
wa_j_1iregset-j_1iexcrg TO wa_header-excrg,
wa_j_1iregset-j_1iexcdi TO wa_header-excd1.
get order no. from vbrk
SELECT * INTO wa_vbrk FROM vbrk
WHERE vbeln = wa_j_1iexchdr-rdoc.
ENDSELECT .
MOVE : wa_vbrk-bstnk_vf TO wa_header-bstnk_vf,
wa_vbrk-zterm TO wa_header-zterm.
SELECT vtext FROM tvzbt INTO gv_zterm
WHERE zterm = wa_vbrk-zterm
AND spras = 'EN'.
ENDSELECT.
get nature of removal
SELECT iever INTO lv_iever FROM eikp
WHERE refnr = wa_vbrk-vbeln.
ENDSELECT.
SELECT SINGLE * FROM t618t INTO wa_t618t
WHERE expvz = lv_iever
AND spras = 'E'.
MOVE : lv_iever TO wa_header-iever.
*get consignment weight.
SELECT SINGLE * FROM vbrp INTO wa_vbrp
WHERE vbeln = wa_vbrk-vbeln.
READ TABLE it_j_1iexcdtl INDEX 1 INTO wa_j_1iexcdtl.
SELECT btgew traid gewei INTO (lv_btgew, lv_traid, wa_header-meins) FROM likp
WHERE vbeln = wa_j_1iexcdtl-rdoc1.
ENDSELECT.
MOVE : lv_btgew TO wa_header-btgew,
lv_traid TO wa_header-traid.
lv_weight to wa_header-meins.
*get chapter id
READ TABLE it_j_1iexcdtl INTO wa_j_1iexcdtl WITH KEY exnum = wa_j_1iexchdr-exnum .
IF sy-subrc = 0.
MOVE : wa_j_1iexcdtl-chapid TO wa_header-chapid,
wa_j_1iexcdtl-maktx TO wa_header-maktx.
ENDIF.
*get customer details.
SELECT adrnr FROM kna1 INTO gv_cust_adrnr
WHERE kunnr = wa_j_1iexchdr-kunag.
ENDSELECT.
SELECT SINGLE * FROM j_1imocust INTO wa_j_cust
WHERE kunnr = wa_j_1iexchdr-kunag.
*write invoice header details
PERFORM write_form USING '' 'APPEND' 'BODY' 'LOCCODE' .
*get data from excise details.
LOOP AT it_j_1iexcdtl INTO wa_j_1iexcdtl.
MOVE : wa_j_1iexcdtl-zeile TO wa_detail-zeile,
wa_j_1iexcdtl-matnr TO wa_detail-matnr,
wa_j_1iexcdtl-maktx TO wa_detail-maktx,
wa_j_1iexcdtl-menge TO wa_detail-menge,
wa_j_1iexcdtl-meins TO wa_detail-meins.
SELECT SINGLE * FROM vbrp INTO wa_vbrp
WHERE vbeln = wa_vbrk-vbeln
AND matnr = wa_j_1iexcdtl-matnr.
SELECT kbetr kwert FROM konv
INTO (wa_detail-rate, wa_detail-amount)
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZPR0'.
ENDSELECT.
SELECT kwert FROM konv
INTO lv_ins
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZINS'.
ENDSELECT.
SELECT kwert FROM konv
INTO lv_fre
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZFRE'.
ENDSELECT.
wa_detail-fob = wa_detail-amount + lv_ins + lv_fre.
gv_tot_amt = gv_tot_amt + wa_detail-amount.
gv_amount = gv_amount + wa_detail-amount.
write item details
PERFORM write_form USING 'LINE_ITEMS' 'SET' 'BODY' 'MAIN' .
ENDLOOP.
**get insurance .
SELECT kwert INTO lv_ins FROM konv
WHERE knumv = wa_vbrk-knumv
AND kschl = 'ZINS'.
ENDSELECT.
**get freight .
SELECT kwert INTO lv_fre FROM konv
WHERE knumv = wa_vbrk-knumv
AND kschl = 'ZFRE'.
ENDSELECT.
**get net value .
MOVE wa_vbrk-netwr TO wa_costs-grandtot.
**calculate netvalue(fobvalue)
wa_costs-fobval = wa_costs-grandtot + wa_costs-insurance + wa_costs-freight.
gv_tot_amt = gv_tot_amt + lv_ins + lv_fre.
*get values for different condition types.
SELECT kbetr INTO wa_duties-zpr0 FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZPR0'.
ENDSELECT.
SELECT kwert INTO wa_duties-jadc FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'JADC'.
temp = temp + wa_duties-jadc.
CLEAR : wa_duties-jadc.
ENDSELECT.
MOVE : temp TO wa_duties-jadc.
CLEAR : temp.
wa_duties-st1 = wa_duties-zpr0 + wa_duties-jadc.
SELECT kwert INTO wa_duties-jexp FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'JEXP'.
temp = temp + wa_duties-jexp.
CLEAR : wa_duties-jexp.
ENDSELECT.
MOVE : temp TO wa_duties-jexp.
CLEAR : temp.
SELECT kwert INTO wa_duties-jecs FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'JECS'.
temp = temp + wa_duties-jecs.
CLEAR : wa_duties-jecs.
ENDSELECT.
MOVE : temp TO wa_duties-jecs.
CLEAR : temp.
wa_duties-st3 = gv_tot_amt + wa_j_1iexchdr-exbed + wa_j_1iexchdr-ecs.
SELECT kwert INTO wa_duties-jetc FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'JETC'.
temp = temp + wa_duties-jetc.
CLEAR : wa_duties-jetc.
ENDSELECT.
MOVE : temp TO wa_duties-jetc.
CLEAR : temp.
wa_duties-st3 = wa_duties-zpr0 + wa_duties-st2 + wa_duties-jetc.
SELECT kwert INTO wa_duties-jsad FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'JSAD'.
temp = temp + wa_duties-jsad.
CLEAR : wa_duties-jsad.
ENDSELECT.
MOVE : temp TO wa_duties-jsad.
CLEAR : temp.
SELECT kbetr kwert INTO (wa_duties-jeap_per, wa_duties-jeap) FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'JEAP'.
temp = temp + wa_duties-jeap.
CLEAR : wa_duties-jeap.
ENDSELECT.
MOVE : temp TO wa_duties-jeap.
CLEAR : temp.
wa_duties-jeap_per = wa_duties-jeap_per / 10.
SELECT kbetr kwert INTO (wa_duties-zeap_per, wa_duties-zeap) FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZEAP'.
temp = temp + wa_duties-zeap.
CLEAR : wa_duties-zeap.
ENDSELECT.
MOVE : temp TO wa_duties-zeap.
CLEAR : temp.
wa_duties-zeap_per = wa_duties-zeap_per / 10.
(st2jetcjsad)
wa_duties-st4 = wa_duties-st2 + wa_duties-jetc + wa_duties-jsad.
(zpr0+st4)
wa_duties-st5 = wa_duties-zpr0 + wa_duties-st4 .
SELECT kbetr INTO wa_duties-vat FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'VAT'.
ENDSELECT.
SELECT kbetr kwert INTO (wa_duties-vat_per, wa_duties-vat_val) FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZVAT'.
temp = temp + wa_duties-vat_val.
CLEAR : wa_duties-vat_val.
ENDSELECT.
MOVE : temp TO wa_duties-vat_val.
CLEAR : temp.
wa_duties-vat_per = wa_duties-vat_per / 10.
SELECT kbetr kwert INTO (wa_duties-zcst_per, wa_duties-zcst_val) FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZCST'.
temp = temp + wa_duties-zcst_val.
CLEAR : wa_duties-zcst_val.
ENDSELECT.
MOVE : temp TO wa_duties-zcst_val.
CLEAR : temp.
wa_duties-zcst_per = wa_duties-zcst_per / 10.
SELECT kbetr kwert INTO (wa_duties-zlst_per, wa_duties-zlst_val) FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZLST'.
temp = temp + wa_duties-zlst_val.
CLEAR : wa_duties-zlst_val.
ENDSELECT.
MOVE : temp TO wa_duties-zlst_val.
CLEAR : temp.
wa_duties-zlst_per = wa_duties-zlst_per / 10.
(st5+vat)
wa_duties-st6 = wa_duties-vat_val + wa_duties-st5 .
SELECT kwert INTO wa_duties-zint FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZINT'.
temp = temp + wa_duties-zint.
CLEAR : wa_duties-zint.
ENDSELECT.
MOVE : temp TO wa_duties-zint.
CLEAR : temp.
SELECT kwert INTO wa_duties-jead FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'JEAD'.
temp = temp + wa_duties-jead.
CLEAR : wa_duties-jead.
ENDSELECT.
MOVE : temp TO wa_duties-jead.
CLEAR : temp.
SELECT kbetr kwert INTO (wa_duties-zect_per, wa_duties-zect) FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZECT'.
temp = temp + wa_duties-zect.
CLEAR : wa_duties-zect.
ENDSELECT.
MOVE : temp TO wa_duties-zect.
CLEAR : temp.
wa_duties-zect_per = wa_duties-zect_per / 10.
SELECT kwert INTO wa_duties-zsad FROM konv
WHERE knumv = wa_vbrk-knumv
AND kposn = wa_vbrp-posnr
AND kschl = 'ZSAD'.
temp = temp + wa_duties-zsad.
CLEAR : wa_duties-zsad.
ENDSELECT.
MOVE : temp TO wa_duties-zsad.
CLEAR : temp.
IF wa_vbrk-kalsm = 'ZINSCR'.
wa_duties-total = gv_tot_amt
+ wa_duties-jexp
+ wa_duties-jecs
+ wa_duties-zlst_val
+ wa_duties-zint
+ wa_duties-jead
+ wa_duties-vat_val
+ wa_duties-zcst_val.
+ wa_duties-jecs
+ wa_duties-zeap
+ wa_duties-zecs
+ wa_duties-zsad
+ wa_duties-jadc.
ELSEIF wa_vbrk-kalsm = 'ZINFAC'.
wa_duties-total = gv_tot_amt
+ wa_duties-jexp
+ wa_duties-jecs
+ wa_duties-zlst_val
+ wa_duties-zint
+ wa_duties-jeap
+ wa_duties-vat_val
+ wa_duties-zcst_val
+ wa_duties-jecs
+ wa_duties-zeap
+ wa_duties-zect.
+ wa_duties-zsad
+ wa_duties-jadc.
ENDIF.
Get Condition descriptions.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'ZVAT' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_vat.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'ZVAT' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_vat.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'ZLST' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_zlst.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'ZCST' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_zcst.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'ZECT' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_zect.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'ZEAP' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_zeap.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'JETC' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_jetc.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'JEAP' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_jeap.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'JECS' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_jecs.
CLEAR wa_t685t.
SELECT SINGLE * FROM t685t INTO wa_t685t
WHERE kschl = 'JADC' AND spras = 'EN'.
MOVE wa_t685t-vtext TO gv_jadc.
CLEAR wa_t685t.
gv_ecsduty = wa_j_1iexchdr-exbed * ( c_ecs / 100 ).
cen_amt = wa_duties-jexp + wa_duties-jeap.
gv_tot_cen_amt = cen_amt + wa_duties-jecs.
MOVE wa_j_1iexchdr-remtime TO wa_duties-remtime.
MOVE wa_j_1iexchdr-exdat TO wa_duties-exdat.
Convert amount to words.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = wa_duties-total
currency = 'INR '
filler = space
language = sy-langu
IMPORTING
in_words = in_words
EXCEPTIONS
not_found = 1
too_large = 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.
MOVE : in_words-word TO word,
in_words-decword TO decword.
write duty details
IF wa_vbrk-kalsm = 'ZINSCR'.
PERFORM write_form USING 'ZINSCR' 'APPEND' 'BODY' 'GRANDTOT' .
ELSEIF wa_vbrk-kalsm = 'ZINFAC'.
PERFORM write_form USING 'ZINFAC' 'APPEND' 'BODY' 'GRANDTOT' .
ENDIF.
*close form
PERFORM close_form.
ENDLOOP.
ENDFORM. "SD_INVOICE_SUPPL
FORM FORM_TITLE_PRINT *
Formulartitel entsprenchend des Feldes VBTYP drucken *
FORM form_title_print.
CASE vbdkr-vbtyp.
WHEN 'M'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE_M'
window = 'HEADER'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
WHEN 'N'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE_N'
window = 'TITLE'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
WHEN 'O'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE_O'
window = 'TITLE'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
WHEN 'P'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE_P'
window = 'TITLE'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
WHEN 'S'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE_S'
window = 'TITLE'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
WHEN 'U'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE_U'
window = 'TITLE'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
WHEN OTHERS.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TITLE_M'
window = 'TITLE'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
ENDCASE.
IF repeat NE space.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'REPEAT'
window = 'REPEAT'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
ENDIF.
ENDFORM. "FORM_TITLE_PRINT
FORM REFERENCE_NUMBER *
Referenznummer ausgeben *
FORM reference_number.
CHECK vbdkr-vbtyp CA 'MUN'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
window = 'INVOICE'
EXCEPTIONS
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
ENDFORM. "REFERENCE_NUMBER
FORM HEADER_TEXT_PRINT *
Kopftexte ausgeben *
FORM header_text_print.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'HEADER_TEXT'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
PERFORM protocol_update.
ENDIF.
ENDFORM. "HEADER_TEXT_PRINT
FORM ITEM_PRINT *
Rechnungsposition ausgeben *
FORM item_print.
Kopieren LVBPLP für direkt Zugriff
LOOP AT lvbplp.
MOVE-CORRESPONDING lvbplp TO tvbplp.
APPEND tvbplp.
ENDLOOP.
LOOP AT tvbdpr.
vbdpr = tvbdpr.
IF tvbdpr-charg IS INITIAL.
PERFORM get_item_prices.
PERFORM get_item_characteristics.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command = 'PROTECT'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'ITEM_LINE'.
PERFORM item_price_print.
PERFORM item_characteristics_print.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command = 'ENDPROTECT'.
PERFORM different_consignee.
PERFORM different_order_no.
PERFORM different_delivery_no.
PERFORM different_extern_no.
PERFORM different_purchase_order_no.
PERFORM item_packing_print.
ELSE.
IF NOT tvbdpr-fkimg IS INITIAL.
PERFORM get_item_prices.
PERFORM item_price_print.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. "ITEM_PRINT
FORM ITEM_PACKING_PRINT *
Verpackung zu einer Position ausgeben *
FORM item_packing_print.
DATA: count LIKE sy-index.
DATA: BEGIN OF hvbplp OCCURS 0,
stufe TYPE i.
INCLUDE STRUCTURE vbplp.
DATA: END OF hvbplp.
DATA: vs_element LIKE vbplp-venum.
CLEAR hvbplp.
REFRESH hvbplp.
Aufbau Versandelementstruktur für Ausgabe
LOOP AT tvbplp WHERE vbeln = vbdkr-vbeln AND posnr = tvbdpr-posnr.
hvbplp-stufe = 1.
MOVE-CORRESPONDING tvbplp TO hvbplp.
APPEND hvbplp.
vs_element = tvbplp-venum.
IF vs_element EQ ' '. EXIT. ENDIF. "unverpackt
CLEAR lvbplk.
WHILE lvbplk-kzobe NE 'X'. "nicht oberstes VS-Ele
suchen übergeordnetes Versandelement
LOOP AT lvbplp WHERE unvel = vs_element.
hvbplp-stufe = hvbplp-stufe + 1.
MOVE-CORRESPONDING lvbplp TO hvbplp.
APPEND hvbplp.
EXIT.
ENDLOOP.
vs_element = lvbplp-venum.
lesen übergeordnetes Versandelement
READ TABLE lvbplk WITH KEY vs_element.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ENDWHILE.
ENDLOOP.
SORT hvbplp BY stufe venum.
CLEAR vbplp.
LOOP AT hvbplp.
lesen Versandelement
CLEAR vbplk.
CLEAR vbpls.
IF hvbplp-venum EQ ' '.Hi,
SAPScript addresses are formated by postal standards...irrespective of the data populated....
In line
/: ADDRESS PARAGRAPH LZ
change to
/: ADDRESS DELIVERY PARAGRAPH LZ
that should bring the street into the address
Regards
Stu -
Problem in displaying the data of columns into rows in sap script
hi,
i am working on a sap script and i have to display the dat which is displayed in column into rows but it is not displaying it properly.
eg, C
12.1
Si
5.5
it is displaying the data right now like this but i want to display the data like this:-
eg, C Si
12.1 5.5
plzzprovide me guidelines how to solve this problem.hi,
i am using this code to display the data:-
plzz provide me guidelines where i am getting wrong?
TOPparCOMPONENT DESP,,,,,, INS. LOT #, , , , , , MIC,,,,,,,,,, MIC VALUEparENDTOPparFINAL
PROTECT
IF &I_FINAL-PRUEFLOS& NE '000000000000'
&I_FINAL-MAKTX(23)&&i_final-prueflos(12Z)&
&I_FINAL-kurztext(25)&
&I_FINAL-original_input(8)&
ELSE
&I_FINAL-MAKTX(23)&
&I_FINAL-kurztext(25)&
&I_FINAL-original_input(8)&
ENDIF
ENDPROTECT
ITEMHEAD
POSITION WINDOW
SIZE WIDTH +0 . 4 CH HEIGHT +1 LN
BOX FRAME 10 TW
BOX HEIGHT '1.35' LN INTENSITY 20
IF &PAGE& = '1'
BOX XPOS '0' CH YPOS '0' CM WIDTH '0' CM HEIGHT '43' LN FRAME '10' TW
For horizontal line at top
BOX XPOS '0' CH YPOS '0' CM WIDTH '75' CH HEIGHT '0' LN FRAME '10' TW
COLUMN LINES...
END OF COLUMN LINES...
BOX XPOS '0' CH YPOS '43' LN WIDTH '75' CH HEIGHT '0' LN FRAME '10'TW
BOX XPOS '75' CH YPOS '0' LN WIDTH '0' CH HEIGHT '43' LN FRAME '10'TW
ELSE
COLUMN LINES...
END OF COLUMN LINES...
BOX XPOS '0' CH YPOS '0' CM WIDTH '0' CM HEIGHT '47' LN FRAME '10' TW
BOX XPOS '0' CH YPOS '0' CM WIDTH '75' CH HEIGHT '0' LN FRAME '10' TW
BOX XPOS '0' CH YPOS '0' CM WIDTH '45' CM HEIGHT '0' LN FRAME '10' TW
BOX XPOS '20' CH YPOS '0' CM WIDTH '0' CM HEIGHT '47' LN FRAME '10' TW
BOX XPOS '0' CH YPOS '47' LN WIDTH '75' CH HEIGHT '0' LN FRAME '10'TW
BOX XPOS '75' CH YPOS '0' LN WIDTH '0' CH HEIGHT '47' LN FRAME '10'TW
ENDIF
LINEFEED
NEWPAGE
NEW-PAGE
provide me guidelines to solve this problem.
Edited by: ricx .s on Mar 13, 2009 5:58 AM -
Dear Experts,
In printing of MB23n , I need to print STR_SUPPL1 and STR_SUPPL2 from ARDC table. I already have ADDRNUMBER.
We are using SAP SCRIPT.
Please guide me how to insert the following query in SAP SCRIPT.
tables: lfa1, adrc.
data: begin of it_test occurs 0 ,
str_suppl1 like adrc-str_suppl1,
str_suppl2 like adrc-str_suppl2,
end of it_test.
select str_suppl1 str_suppl2 into corresponding fields of table it_test from adrc addrnumber = lfa1-adrnr.
Please hekp me to solve the issue.
Thanks in advance.
Regards
AnkurHi,
In Script - Page Window -
PERFORM <form name> IN PROGRAM <Program Name>
USING &VBDKR-VBELN_VL&
USING &VBDKR-VBELN_VAUF&
CHANGING &ADDR_LINE1&
CHANGING &ADDR_LINE2&
CHANGING &ADDR_LINE3&
CHANGING &ADDR_LINE4&
CHANGING &ADDR_LINE5&
ENDPERFORM
&ADDr_line1&&ADDR_LINE3& &ADDr_line2&
&ADDR_LINE4&
PROTECT
&ADDR_LINE5&
ENDPROTECT
In SE38 - Create Prog as Subroutine pool --> Write a Form with same name
SELECT SINGLE adrnr INTO twlad-adrnr FROM twlad WHERE werks = lips-werks AND
lgort = lips-lgort.
IF sy-subrc = 0.
CALL FUNCTION 'ADDRESS_INTO_PRINTFORM'
EXPORTING
address_type = '1'
address_number = twlad-adrnr
IMPORTING
address_printform_table = lt_address. -
Why last 4 lines of every page in sap script are not coming ,it is not o
pls give some solution why last 4 lines of every page in sap script are not coming ,it is not over flowing to next page even? it is any page format related problem or coding problem?
Hi,
Use PROTECT ENDPROTECT statement it displays hole paragraph in to the single page and also to over come this issue.
Regards
Md.MahaboobKhan -
Problem with sap script table in main window
hi all,
i have created a sap script for which output is in 7 pages.
except first page all the remaining pages are giving the correct output.
the problem with the first page is iam not not getting vertical lines in the table which is in the main window of page 1.
iam getting the vertical lines correctly in the mainwindow table of all the remaining pages.Hi,
It's simple,
Pre- U should had declared a second page for the same window with header, main & footer.
now
First when u r looping the internal table provide no of rows eg Row 1 TO 10. in the Loop ( Data Tab)
or
when defing TEXT Go to PC Editor and mention all the fields Under PROTECT - ENDPROTECT.
This would solve the issue.
Thanks
Ravi -
Hi!
can any one help me regarding SAP SCRIPT. i unable to write a print program for sap script . can any one can send me sample code using ITCSY structure.
Thanks in advance.
Thanks & Regads,
DurgaPrasad.kHi,
refer this to write print program:
<b>The Print Program</b>
Structure of a print program
OPEN_FORM function
CLOSE_FORM function
WRITE_FORM
START_FORM function
END_FORM function
CONTROL_FORM function
The print program is used to print forms. The program retieves the necesary data from datbase
tables, defines the order of in which text elements are printed, chooses a form for printing and
selects an output device and print options.
<b>Function modules in a printprogram:</b>
When you print a form you must used the staments OPEN_FORM and CLOSE_FORM. To combine
forms into a single spool request use START_FORM and END_FORM.
To print textelements in a form use WRITE_FORM. The order in which the textelements are printed,
is determined by the order of the WRITE_FORM statements. Note: for printing lines in the body, you
can also use the WRITE_FORM_LINES function module.
To transfer control command to a form use CONTROL_FORM.
<b>Structure of a print program</b>
Read data
Tables: xxx.
SELECT *
FROM xxx.
Open form printing - Must be called before working with any of the other form function modules.
Must be ended with function module CLOSE FORM
call function 'OPEN_FORM'.....
To begin several indentical forms containing different data within a single spool request, begin each
form using START_FORM, and end it using END_FORM
call funtion 'START_FORM'.....
Write text elements to a window of the form
call function 'WRITE_FORM'.....
Ends spool request started with START_FORM
call funtion 'END_FORM'.....
Closes form printing
call function 'CLOSE_FORM'...
OPEN_FORM function
Syntax:
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = ' '
LANGUAGE = SY-LANGU
OPTIONS =
MAIL_SENDER =
MAIL_RECIPIENT =
MAIL_APPL_OBJECT =
RAW_DATA_INTERFACE = '*'
IMPORTING
LANGUAGE =
NEW_ARCHIVE_PARAMS =
RESULT =
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
SPOOL_ERROR = 10
OTHERS = 11
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
<b>Some important parameters:</b>
FORM Name of the form
DEVICE PRINTER : Print output using spool
TELEFAX: Fax output
SCREEN: Output to screen
OPTIONS Used to control attrubutes for printing or faxing (Number of copies, immediate output....
The input for the parameter is structure ITCPO.
CLOSE_FORM function
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT =
RDI_RESULT =
TABLES
OTFDATA =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Paramerters:
RESULT Returns status information and print/fax parameters after the form has been printed.
RESULT is of structure ITCPP.
WRITE_FORM function
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = ' '
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
OTHERS = 9
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Some important parameters:
ELEMENT Specifies which textelement is printed
WINDOW Specifies which window is printed
TYPE Specifies the output area of the main window. This can be:
TOP - Used for headers
BODY
BOTTOM - Used for footers
FUNCTION Specifies whether text is to be appended, replaced or added
Example of how to use the WRITE_FORM function module together with a script.
Form layout of the MAIN window
/E INTRODUCTION
Dear Customer
/E ITEM_HEADER
IH Carrier, Departure
/E ITEM_LINE
IL &SBOOK-CARRID&, &SPFLI-DEPTIME&
/E CLOSING_REMARK
<b>The print program</b>
Writing INTRODUCTION
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'INTRODUCTION'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Writing ITEM_HEADER
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Set ITEM_HEADER into TOP area of main window for subsequent pages
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'SET'
TYPE = 'TOP'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Write ITEM_LINE
LOOP AT .....
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_LINE'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8.
ENDLOOP.
Delete ITEM_HEADER from TOP area of main window
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'DELETE'
TYPE = 'TOP'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Print CLOSING_REMARK
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'CLOSING_REMARK'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
START_FORM function
CALL FUNCTION 'START_FORM'
EXPORTING
ARCHIVE_INDEX =
FORM = ' '
LANGUAGE = ' '
STARTPAGE = ' '
PROGRAM = ' '
MAIL_APPL_OBJECT =
IMPORTING
LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
SPOOL_ERROR = 6
OTHERS = 7
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
END_FORM function
CALL FUNCTION 'END_FORM'
RESULT =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SPOOL_ERROR = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CONTROL_FORM function
The CONTROL_FORM function module alows you to create SapScript control statements from within
an APAB program.
Syntax:
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command =
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.
Example:
Protecting the text element ITEM_LINE
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
TEXELEMENT = 'ITEM_LINE'.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'.
rgds,
latheesh
Message was edited by: Latheesh Kaduthara -
Hi friends
What's the functionality of 'CONTROL_FORM' function module in SAP-scripts.
Thanks
SurenHi
CONTROL_FORM function
The CONTROL_FORM function module alows you to create SapScript control statements from within
an APAB program.
Syntax:
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command =
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.
Example:
Protecting the text element ITEM_LINE
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
TEXELEMENT = 'ITEM_LINE'.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'. -
What are the different functions used in sap script?
Hi,
What are the different functions used in sap script? What are the parameters used in each Function?
Regards,
Maheshhe print program is used to print forms. The program retieves the necesary data from datbase tables, defines the order of in which text elements are printed, chooses a form for printing and selects an output device and print options.
Function modules in a printprogram:
When you print a form you must used the staments OPEN_FORM and CLOSE_FORM. To combine forms into a single spool request use START_FORM and END_FORM.
To print textelements in a form use WRITE_FORM. The order in which the textelements are printed, is determined by the order of the WRITE_FORM statements. Note: for printing lines in the body, you can also use the WRITE_FORM_LINES function module.
To transfer control command to a form use CONTROL_FORM.
Structure of a print program
Read data
Tables: xxx.
SELECT *
FROM xxx.
Open form printing - Must be called before working with any of the other form function modules.
Must be ended with function module CLOSE FORM
call function 'OPEN_FORM'.....
To begin several indentical forms containing different data within a single spool request, begin each form using START_FORM, and end it using END_FORM
call funtion 'START_FORM'.....
Write text elements to a window of the form
call function 'WRITE_FORM'.....
Ends spool request started with START_FORM
call funtion 'END_FORM'.....
Closes form printing
call function 'CLOSE_FORM'...
OPEN_FORM function
Syntax:
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = ' '
LANGUAGE = SY-LANGU
OPTIONS =
MAIL_SENDER =
MAIL_RECIPIENT =
MAIL_APPL_OBJECT =
RAW_DATA_INTERFACE = '*'
IMPORTING
LANGUAGE =
NEW_ARCHIVE_PARAMS =
RESULT =
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
SPOOL_ERROR = 10
OTHERS = 11
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Some important parameters:
FORM Name of the form
DEVICE
PRINTER : Print output using spool
TELEFAX: Fax output
SCREEN: Output to screen
OPTIONS Used to control attrubutes for printing or faxing (Number of copies, immediate output....
The input for the parameter is structure ITCPO.
CLOSE_FORM function
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT =
RDI_RESULT =
TABLES
OTFDATA =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
OTHERS = 5
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Paramerters:
RESULT Returns status information and print/fax parameters after the form has been printed. RESULT is of structure ITCPP.
WRITE_FORM function
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = ' '
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
OTHERS = 9
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Some important parameters:
ELEMENT Specifies which textelement is printed
WINDOW Specifies which window is printed
TYPE Specifies the output area of the main window. This can be:
TOP - Used for headers
BODY
BOTTOM - Used for footers
FUNCTION Specifies whether text is to be appended, replaced or added
Example of how to use the WRITE_FORM function module together with a script.
Form layout of the MAIN window
/E INTRODUCTION
Dear Customer
/E ITEM_HEADER
IH Carrier, Departure
/E ITEM_LINE
IL &SBOOK-CARRID&, &SPFLI-DEPTIME&
/E CLOSING_REMARK
The print program
Writing INTRODUCTION
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'INTRODUCTION'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Writing ITEM_HEADER
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Set ITEM_HEADER into TOP area of main window for subsequent pages
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'SET'
TYPE = 'TOP'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Write ITEM_LINE
LOOP AT .....
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_LINE'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8.
ENDLOOP.
Delete ITEM_HEADER from TOP area of main window
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM_HEADER'
FUNCTION = 'DELETE'
TYPE = 'TOP'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
Print CLOSING_REMARK
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'CLOSING_REMARK'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8
START_FORM function
CALL FUNCTION 'START_FORM'
EXPORTING
ARCHIVE_INDEX =
FORM = ' '
LANGUAGE = ' '
STARTPAGE = ' '
PROGRAM = ' '
MAIL_APPL_OBJECT =
IMPORTING
LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
SPOOL_ERROR = 6
OTHERS = 7
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
END_FORM function
CALL FUNCTION 'END_FORM'
IMPORTING
RESULT =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SPOOL_ERROR = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CONTROL_FORM function
The CONTROL_FORM function module alows you to create SapScript control statements from within an APAB program.
Syntax:
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
command =
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.
Example:
Protecting the text element ITEM_LINE
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
TEXELEMENT = 'ITEM_LINE'.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'. -
Hi all,
Can anyone tell me the which command i use in sap script for &itab-kunnr&.
so many command are there so please suggest me...........
and give command tutorial or link also....
Zenithi.hi
good
check out all these SAP SCRIPT commands
New-page <page name> Prints the text following this command on a new page (when a page name is specified then that page is taken as the next page)
Protect .. Endprotect This acts like a conditional page break. Putting the text within this command prevents the breaking of the text across multiple pages. If there is not enough space for the entire paragraph to be printed in the space remaining on the page, then the entire paragraph is printed on the next page
Box <xpos> <ypos> <width> <height> <frame> <intensity>
Position <xorigin> <yorigin> <window> <page>
Size <width> <height> <window> <page>
The BOX command draws a box as per the specifications. The x y co-ordinates are for the upper left corner relative to the values in the position command.
POSITION command is used to set the x y co-ordinates with respect to the start position of the window.
SIZE command is used to specify the size of the box that we need to draw.
Varying these parameters also helps to draw a line instead of a box.
IF .. END IF This allows the conditional printing of the text on the output document. The various conditional operators that can be used are as follows
= EQ Equal to
< LT Less than
> GT Greater than
<= LE Less than or equal to
>= GE greater than or equal to
<> NE not equal to
The logical operators that can be used are as follows
NOT, AND, OR
reward point if helpful.
thanks
mrutyun^ -
Text is broken in two pages is sap script
hi all,
the text is broken in two pages is sap script also total is also breaking. how to fix the problem?
sanjayHi,
First in your window goto the text elements. There choose goto->change editor. Now you will be getting a line editor. Here you have to specify protect endprotect and write your code within it.
Regards,
Deepthi.
Maybe you are looking for
-
Hi Im doign xslt mapping in XI bw two structures..while doing htis i have come across a requirment, where i have to map different values to nodes which are repeating in different sub structures. Ex: source structure and target structure are same..
-
I've had my iPod for over six months and I haven't been able to access FaceTime or iMessage...not to mention my camera stopped working for no reason!
-
I lost my password and can not unlock my ipod
How can I unlock my ipod, I forgot my password
-
Guidelines · DO NOT post full resolution screenshots! You can use the "mogrify" command (pacman -S imagemagick) to make a thumbnail of your screenshot: $ cp screenie.png thumb-screenie.png $ mogrify -resize 20% thumb-screenie.png Twenty percent of t
-
Unable to backup my iPhone 4S to the iCloud - Receive a message, "there was a problem enabling iCloud backup". Also the following message is displayed at the top of storage screen, "iCloud storage details are currently unavailable. Try again later."