Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Query Regarding SAP Scrpt..................

Former Member
0 Kudos

Hi Guys

Hope doing great,

Here is a query regarding Sap Script

If you go to VF02 you can enter a billing document number.

Than go to billingdocument->Issue Output to->Screen

It ll show you a sapscript screen.

This is the data i have.and i have the format of sapscript.

I developed the sapscript screen

I have deveoping the driver program

Here i am getting cofused,that how to select the data from the VF02 and display it into the sapscript form.

It is a Invoice Report.

If anybody have face same kind of prob plz help me out, or else if there is any starndard program which is satisfying this criteria plz send it to me.

Thanks a Lot

Mrutyun^

10 REPLIES 10

Former Member
0 Kudos

go to nace...

v3--billing type.

output type rd00

.

now u can assiegn ur sapscript form and driver program to that output.

or alternative is just copy the output type rd00 into another name and assiegn ur sapscript and driver program to that.

Former Member
0 Kudos

issuing the output to Scrren or printer means u are calling the Driver program ,I dont y u got this doubt.

check setting or put a break-point in the Form/driver program which is currently executing this layout.

i think u know the seettings in NACE,Application V3.

Regards

Prabhu

Former Member
0 Kudos

Hello,

I have devloped a script using the SAME tcode VF02.

Now i did not understand ur problem correctly.

But I am pasting the code of my print program.

REPORT z08v3_xt_uz .

INCLUDE rvadtabl.

INCLUDE z08v3_xt_uz_top.

DATA: retcode LIKE sy-subrc, "Returncode

xscreen(1) TYPE c. "Ausgabe Printer/Screen

DATA: c TYPE i.

DATA: j TYPE c.

DATA:k TYPE c.

DATA:

*FLAG TYPE C,

  • FLAG1 TYPE C,

z TYPE i,

d(3) TYPE c,

b TYPE i.

DATA:f(8) TYPE c.

DATA:dnumber(10) TYPE c.

----


  • FORM entry *

----


  • ........ *

----


  • --> return_code *

  • --> us_screen *

----


FORM entry_123 USING return_code us_screen.

CLEAR retcode.

xscreen = us_screen.

PERFORM processing USING xscreen.

IF retcode NE 0.

return_code = 1.

ELSE.

return_code = 0.

ENDIF.

ENDFORM.

&----


*& Form PROCESSING

&----


  • text

----


  • -->P_XSCREEN text

----


FORM processing USING proc_screen.

PERFORM clear.

PERFORM get_data.

PERFORM item_print_text.

PERFORM form_open USING proc_screen vbdkr-land1.

PERFORM write_data.

PERFORM form_close.

ENDFORM. " PROCESSING

&----


*& Form GET_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_data.

CLEAR no_deliv.

CALL FUNCTION 'RV_PRICE_PRINT_REFRESH'

TABLES

tkomv = tkomv.

CLEAR komk.

CLEAR komp.

IF nast-objky+10(6) NE space.

vbco3-vbeln = nast-objky+16(10).

ELSE.

vbco3-vbeln = nast-objky.

ENDIF.

vbco3-mandt = sy-mandt.

vbco3-spras = nast-spras.

IF nast-parvw = 'SP'.

SELECT SINGLE kunnr INTO vbco3-kunde FROM vbpa

WHERE vbeln = vbco3-vbeln

AND posnr = 0

AND parvw = 'RE'.

vbco3-parvw = 'RE'.

ELSE.

vbco3-kunde = nast-parnr.

vbco3-parvw = nast-parvw.

ENDIF.

CALL FUNCTION 'RV_BILLING_PRINT_VIEW'

EXPORTING

comwa = vbco3

IMPORTING

kopf = vbdkr

TABLES

pos = tvbdpr

EXCEPTIONS

terms_of_payment_not_in_t052 = 1

error_message = 5

OTHERS = 4.

IF NOT sy-subrc IS INITIAL.

IF sy-subrc = 1.

syst-msgty = 'I'.

PERFORM protocol_update.

ENDIF.

ENDIF.

  • fill address key --> necessary for emails

addr_key-addrnumber = vbdkr-adrnr.

addr_key-persnumber = vbdkr-adrnp.

addr_key-addr_type = vbdkr-address_type.

*TO GET SHIPTO PARTY ADDRESS

READ TABLE vbdkr.

SELECT SINGLE * FROM kna1 INTO tkna1 WHERE kunnr = vbdkr-kunrg.

*To get the address

CLEAR address_field.

adrsrc = 'V'.

REFRESH it_addr_prttab.

CASE adrsrc.

WHEN 'W'.

READ TABLE tvbdpr.

SELECT SINGLE * FROM t001w WHERE werks = tvbdpr-werks.

IF sy-subrc = 0.

CALL FUNCTION 'ADDRESS_INTO_PRINTFORM'

EXPORTING

address_type = '1'

address_number = t001w-adrnr

number_of_lines = 10

IMPORTING

address_printform_table = it_addr_prttab.

ENDIF.

WHEN 'V'.

SELECT SINGLE * FROM tvko WHERE vkorg = vbdkr-vkorg.

IF sy-subrc = 0.

CALL FUNCTION 'ADDRESS_INTO_PRINTFORM'

EXPORTING

address_type = '1'

address_number = tvko-adrnr

number_of_lines = 10

IMPORTING

address_printform_table = it_addr_prttab.

ENDIF.

WHEN 'T'.

ENDCASE.

*read table it_addr_prttab.

CASE adrsrc.

WHEN 'W'.

PERFORM adresse_lesen USING 'CA01' t001w-adrnr.

WHEN 'V'.

PERFORM adresse_lesen USING 'CA01' tvko-adrnr.

WHEN OTHERS.

SELECT SINGLE adrnr FROM t001 INTO t001-adrnr

WHERE bukrs EQ vbdkr-bukrs.

PERFORM adresse_lesen USING 'CA01' t001-adrnr.

ENDCASE.

**********

*To get the Transport No

READ TABLE tvbdpr INDEX 1.

SELECT SINGLE * FROM vttp INTO g_t_vttp WHERE vbeln = tvbdpr-vbeln_vl.

IF NOT tvbdpr[] IS INITIAL.

SELECT * FROM t005 INTO TABLE g_t_iegland FOR ALL ENTRIES IN tvbdpr

WHERE land1 = tvbdpr-herkl.

ENDIF.

*GET THE MATERIAL DESCRIPTION AND the EXIDV field

IF NOT tvbdpr[] IS INITIAL.

SELECT * FROM vepo INTO TABLE g_t_vepo FOR ALL ENTRIES IN tvbdpr

WHERE vbeln = tvbdpr-vbeln_vl AND posnr = tvbdpr-posnr.

ENDIF.

IF NOT g_t_vepo[] IS INITIAL.

SELECT * FROM vekp INTO TABLE g_t_vekp FOR ALL ENTRIES IN g_t_vepo

WHERE venum = g_t_vepo-venum.

ENDIF.

IF NOT g_t_vekp[] IS INITIAL.

SELECT * FROM makt INTO TABLE G_T_MAKT FOR ALL ENTRIES IN g_t_vekp

WHERE matnr = g_t_vekp-vhilm.

ENDIF.

LOOP AT tvbdpr.

LOOP AT g_t_iegland WHERE land1 = tvbdpr-herkl.

it_tvbdpr-land1 = g_t_iegland-land1.

it_tvbdpr-xegld = g_t_iegland-xegld.

it_tvbdpr-vbeln = tvbdpr-vbeln_vl.

it_tvbdpr-posnr = tvbdpr-posnr.

APPEND it_tvbdpr.

ENDLOOP.

ENDLOOP.

*Moving the exidv delivery and item no to single internal table(

*g_t_tb1)

LOOP AT g_t_vepo.

LOOP AT g_t_vekp WHERE venum = g_t_vepo-venum..

g_t_tb1-exidv = g_t_vekp-exidv.

g_t_tb1-brgew = g_t_vekp-brgew.

g_t_tb1-vbeln_vl = g_t_vepo-vbeln.

g_t_tb1-posnr = g_t_vepo-posnr.

APPEND g_t_tb1.

ENDLOOP.

ENDLOOP.

*Moving all the details along with the country details into single

*internal table(jtab)

LOOP AT g_t_tb1.

LOOP AT it_tvbdpr WHERE vbeln = g_t_tb1-vbeln_vl AND posnr =

g_t_tb1-posnr.

g_t_tb2-vbeln_vl = g_t_tb1-vbeln_vl.

g_t_tb2-posnr = g_t_tb1-posnr.

g_t_tb2-exidv = g_t_tb1-exidv.

g_t_tb2-herkl = it_tvbdpr-land1.

g_t_tb2-brgew = g_t_tb1-brgew.

g_t_tb2-xegld = it_tvbdpr-xegld.

APPEND g_t_tb2.

ENDLOOP.

ENDLOOP.

LOOP AT g_t_tb2.

MOVE-CORRESPONDING g_t_tb2 TO g_t_tab.

APPEND g_t_tab.

MOVE-CORRESPONDING g_t_tb2 TO g_t_tab1.

APPEND g_t_tab1.

dtab-posnr = g_t_tb2-posnr.

dtab-herkl = g_t_tb2-herkl.

APPEND dtab.

ENDLOOP.

*Sort the countries and pass them into variable

*DTAB CONSISTS THE COUNTRIES AND ITEM NO'S

SORT dtab BY herkl.

DELETE ADJACENT DUPLICATES FROM dtab COMPARING herkl.

IF NOT dtab[] IS INITIAL.

SELECT land1 landx FROM t005t INTO CORRESPONDING FIELDS OF TABLE ltab

FOR ALL ENTRIES IN dtab WHERE spras = nast-spras AND land1 = dtab-herkl

.

ENDIF.

*CONCATENATE ALL THE COUNTRIES AND THEIR DESCRIPTION

LOOP AT dtab.

b = b + 1.

ENDLOOP.

CLEAR string.

  • J = ','.

LOOP AT ltab.

IF b = 1 OR b < 1.

j = '.'.

CONCATENATE string ltab-land1 '=' ltab-landx j INTO string SEPARATED BY

space.

ELSEIF b > 1.

j = ','.

CONCATENATE string ltab-land1 '=' ltab-landx j INTO string SEPARATED BY

space.

b = b - 1.

ENDIF.

ENDLOOP.

*Sorting the data in the required format

SORT g_t_tab BY exidv.

LOOP AT g_t_tab.

AT NEW exidv.

g_t_op-vbeln_vl = g_t_tab-vbeln_vl.

g_t_op-exidv = g_t_tab-exidv.

ENDAT.

LOOP AT g_t_tab1 WHERE exidv = g_t_tab-exidv AND herkl = 'DE' AND

flag = space.

g_t_tab1-flag = 'X'.

MODIFY g_t_tab1 INDEX sy-tabix.

g_t_op-posnr = g_t_tab1-posnr.

g_t_op-herkl = g_t_tab1-herkl.

g_t_op-brgew = g_t_tab1-brgew.

g_t_op-xegld = g_t_tab1-xegld.

APPEND g_t_op.

ENDLOOP.

IF g_t_tab-herkl <> 'DE'.

g_t_op-posnr = g_t_tab-posnr.

g_t_op-herkl = g_t_tab-herkl.

g_t_op-brgew = g_t_tab-brgew.

g_t_op-xegld = g_t_tab-xegld.

APPEND g_t_op.

CLEAR g_t_op.

ENDIF.

CLEAR g_t_tab.

ENDLOOP.

*Getting the material description based on the delivery no

LOOP AT G_T_MAKT.

G_T_MTX-maktx = G_T_MAKT-maktx.

G_T_MTX-n = 1.

APPEND G_T_MTX.

ENDLOOP.

CLEAR G_T_MTX1.

  • CLEAR EX.

SORT G_T_MTX BY maktx.

LOOP AT G_T_MTX.

AT NEW maktx.

G_T_MTX1-matx = G_T_MTX-maktx.

ENDAT.

AT END OF maktx.

SUM.

G_T_MTX1-count = G_T_MTX-n.

APPEND G_T_MTX1.

CLEAR G_T_MTX1.

ENDAT.

  • CLEAR EX.

ENDLOOP.

ENDFORM. " GET_DATA

&----


*& Form PROTOCOL_UPDATE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM protocol_update.

CHECK xscreen = space.

CALL FUNCTION 'NAST_PROTOCOL_UPDATE'

EXPORTING

msg_arbgb = syst-msgid

msg_nr = syst-msgno

msg_ty = syst-msgty

msg_v1 = syst-msgv1

msg_v2 = syst-msgv2

msg_v3 = syst-msgv3

msg_v4 = syst-msgv4

EXCEPTIONS

OTHERS = 1.

ENDFORM. " PROTOCOL_UPDATE

----


  • FORM FORM_OPEN *

----


  • Start of printing the form *

----


  • --> US_SCREEN Output on screen *

  • ' ' = Printer *

  • 'X' = Screen *

  • --> US_COUNTRY County for telecommunication and SET COUNTRY *

----


FORM form_open USING us_screen us_country.

INCLUDE rvadopfo.

ENDFORM.

&----


*& Form FORM_CLOSE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM form_close.

CALL FUNCTION 'CLOSE_FORM'

EXCEPTIONS

OTHERS = 1.

IF sy-subrc NE 0.

PERFORM protocol_update.

retcode = 1.

ENDIF.

SET COUNTRY space.

ENDFORM. " FORM_CLOSE

----


  • FORM adresse_lesen *

----


  • ........ *

----


  • --> adrgr *

  • --> adrnr *

----


FORM adresse_lesen USING adrgr adrnr.

TABLES: addr1_val.

CLEAR addr1_sel.

addr1_sel-addrnumber = adrnr.

CALL FUNCTION 'ADDR_GET'

EXPORTING

address_selection = addr1_sel

address_group = adrgr

IMPORTING

address_value = addr1_val

sadr = sadr

EXCEPTIONS

OTHERS = 4. "SADR40A

IF sy-subrc NE 0.

CLEAR sadr.

ENDIF.

MOVE-CORRESPONDING sadr TO vbadr.

ENDFORM.

&----


*& Form WRITE_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_data.

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

**TO BUILD DOCUMENT NO'S

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

CLEAR:t_uz,p_uz,f,dnumber.

*Checking wether initially table has z08v3_uz_numbers has record

SELECT SINGLE * FROM z08v3_uz_numbers INTO t_uz.

IF sy-subrc <> 0.

t_uz-lastnum = '400000'.

INSERT INTO z08v3_uz_numbers VALUES t_uz .

ENDIF.

SELECT SINGLE * FROM z08v3_uz_printed WHERE fknum = vbco3-vbeln.

*Check first wether the No exists in z08v3_uz_printed

IF sy-subrc = 0.

p_uz-fknum = z08v3_uz_printed-fknum.

p_uz-uznum = z08v3_uz_printed-uznum.

dnumber = z08v3_uz_printed-uznum .

ELSEIF sy-subrc <> 0.

SELECT SINGLE * FROM z08v3_uz_numbers INTO t_uz.

f = t_uz-lastnum.

f = f + 1.

p_uz-fknum = vbco3-vbeln.

p_uz-uznum = t_uz-lastnum.

dnumber = t_uz-lastnum.

INSERT INTO z08v3_uz_printed VALUES p_uz.

UPDATE z08v3_uz_numbers SET lastnum = f.

ENDIF.

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

PERFORM z_form_write USING 'HEADER' 'HEADER' .

PERFORM z_form_write USING 'NUMBER' 'WINDOW1' .

PERFORM z_form_write USING 'HEADER1' 'HEADER1' .

PERFORM z_form_write USING 'SHIP-TO' 'WINDOW2' .

PERFORM z_form_write USING 'COUNTRY' 'WINDOW3' .

PERFORM z_form_write USING 'TEXT' 'WINDOW5' .

PERFORM z_form_write1 USING 'AUTOMOTIVE' 'MAIN' 'SET' 'BODY'.

PERFORM z_form_write1 USING 'AUTOMOTIVE1' 'BOADY' 'SET' 'BODY'.

LOOP AT g_t_op.

c = c + 1.

CLEAR z.

AT NEW vbeln_vl.

z = z + 1.

d = d + 1.

PERFORM z_form_write1 USING 'DELIVERIES' 'MAIN' 'SET' 'BODY'.

ENDAT.

IF z = 1.

IF g_t_op-xegld = 'X'.

k = '*'.

ELSE.

CLEAR k.

ENDIF.

READ TABLE g_t_vekp WITH KEY exidv = g_t_op-exidv.

PERFORM z_form_write1 USING 'ITEMS' 'MAIN' 'SET' 'BODY'.

CLEAR g_t_vekp.

ELSE.

IF g_t_op-xegld = 'X'.

k = '*'.

ELSE.

CLEAR k.

ENDIF.

PERFORM z_form_write1 USING 'ITEMS1' 'MAIN' 'SET' 'BODY'.

ENDIF.

AT LAST.

PERFORM z_form_write1 USING 'LAST' 'MAIN' 'SET' 'BODY'.

LOOP AT G_T_MTX1.

PERFORM z_form_write1 USING 'LAST1' 'MAIN' 'SET' 'BODY'.

ENDLOOP.

ENDAT.

ENDLOOP.

ENDFORM. " WRITE_DATA

----


  • FORM CLEAR *

----


  • ........ *

----


FORM clear.

*Clear the Varibles

CLEAR:f,z,c,j,k,d,b,dnumber .

*CLEAR INTERNAL TABLES

CLEAR:p_uz,

t_uz,

g_t_tb2,

g_t_tab,

g_t_tab1,

g_t_op,

dtab,

ltab,

g_t_vepo,

g_t_vekp,

G_T_MAKT,

  • DMAKT,

G_T_MTX.

ENDFORM. " CLEAR

----


  • FORM item_print_text *

----


  • ........ *

----


FORM item_print_text.

CLEAR:g_f_tdname,g_f_obj,g_f_langu.

g_f_tdname = vbco3-vbeln.

g_t_id = 'Z022'.

g_f_obj = 'VBBK'.

g_f_langu = 'DE'.

REFRESH g_t_lines.

CLEAR g_t_lines.

CALL FUNCTION 'READ_TEXT'

EXPORTING

id = g_t_id

language = g_f_langu

name = g_f_tdname

object = g_f_obj

TABLES

lines = g_t_lines

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 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.

IF g_t_lines[] IS INITIAL.

g_f_langu = 'EN'.

CALL FUNCTION 'READ_TEXT'

EXPORTING

id = g_t_id

language = g_f_langu

name = g_f_tdname

object = g_f_obj

TABLES

lines = g_t_lines

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 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.

ENDIF.

LOOP AT g_t_lines.

CONCATENATE g_f_var g_t_lines-tdline INTO g_f_var SEPARATED BY

space.

ENDLOOP.

CONDENSE:g_f_var.

ENDFORM. " ITEM_PRINT_TEXT

----


  • FORM z_form_write *

----


  • ........ *

----


  • --> p_element *

  • --> p_window *

----


FORM z_form_write USING p_element

p_window.

DATA: window(08), element(20).

CLEAR:window,element.

window = p_window.

element = p_element.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = element

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.

PERFORM protocol_update.

ENDIF.

ENDFORM.

----


  • FORM z_form_write1 *

----


  • ........ *

----


  • --> p_element *

  • --> p_window *

  • --> p_function *

  • --> p_type *

----


FORM z_form_write1 USING p_element

p_window

p_function

p_type.

DATA: window(08), element(20),function(20),type(20).

CLEAR:window,element,function,type.

window = p_window.

element = p_element.

type = p_type.

function = p_function.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = element

function = function

type = type

window = window

  • IMPORTING

  • PENDING_LINES =

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.

Please check the code and let me know if u face any problem.

Regards

0 Kudos

hi

thanks

In my case ,i have to write a driver program and display the data into sapscript similar to the the screen that we ll get if we enter the billing documents no in VF02.

Can you plz clarify wht your driver progam does.

Thanks

Mrutyun^

0 Kudos

Hello,

According to my driver program,

1.From tcode VF02 we are viewing the script.

2.So in my driver program i am extracting the data using the function module.

CALL FUNCTION 'RV_BILLING_PRINT_VIEW'

EXPORTING

comwa = vbco3

IMPORTING

kopf = vbdkr

TABLES

pos = tvbdpr

EXCEPTIONS

terms_of_payment_not_in_t052 = 1

error_message = 5

OTHERS = 4.

IF NOT sy-subrc IS INITIAL.

IF sy-subrc = 1.

syst-msgty = 'I'.

PERFORM protocol_update.

ENDIF.

ENDIF.

3.So using the data from this function module I am displaying in the form created by me.

Initialy My driver program and form name is assigned to OUtput type in the NACE tocode.

Let me know if I am not clear.

Regards

0 Kudos

hi

thanks

I got it , just one clarification,

my screen is something like this

leftside righthandside

-


-


logo invoice no

leftside righthand side

-


-


bill to address Payer accnt no

righthand side

-


Customer Order Detail

middle

-


Invoice Summary

middle

-


Invoice Detail

can you plz give me some details wheather your sapscript have the similar structure as i mentioned , or something diff.

thanks

mrutyun^

0 Kudos

The structure is different.

Let me know what u want exactly from the script structure.

Regards

0 Kudos

hi

can you send me your id ,

So that i can send you exactly wht i want in the sapscript structure.

thanks

mrutyun^

0 Kudos

ravindranath.k@in.bosch.com

Former Member
0 Kudos

Hi,

Search NAST table for the particular Output type and assign the Output type to the SAP SCript.

Go to NACE and go to V3 (billing) and assign the corresponding Driver program and Script.