Application Development and Automation 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: 
Read only

SAP-SCRIPTS

Former Member
0 Likes
630

Hi,

My problem is that i am using a standard sap program which call a sap-script Form. In this form I want to use an internal table by subroutine Perform.

plz, help!

5 REPLIES 5
Read only

Former Member
0 Likes
594

ya u can use like that...

<b>ex--</b>

:PERFORM get_date IN PROGRAM zreport 
/:USING &SALESORDER&
/:CHANGING &S_DATE&
/:ENDPERFORM 

Now you can print S_DATE.

Write this code in the new ABAP program would be

REPORT zreport.

FORM get_date TABLES in_tab STRUCTURE ITCSY

out_tab STRUCTURE ITCSY .

READ TABLE in_tab INDEX 1.

SELECT some_date FROM ztab

WHERE salesorder = in_tab-value.

IF sy-subrc EQ 0.

READ TABLE out-tab INDEX 1.

MOVE ztab-somedate TO out_tab-value

MODIFY out_tab INDEX 1.

ENDIF.

ENDFORM.

Read only

Former Member
0 Likes
594

You could use this way..

In Layout Set:

DEFINE &X& = ...

DEFINE &Y& = ...

DEFINE &Z& = ...

PERFORM XXXXXX IN Zxxxxxxx

USING &X&

USING &Y&

CHANGING &Z&

In ABAP program Zxxxxxx

FORM XXXXXX TABLES INPUT1 STRUCTURE ITCSY

OUTPUT1 STRUCTURE ITCSY

*get input parameters

LOOP AT INPUT1.

CASE INPUT1-NAME.

WHEN 'X'.

INPUT_X = INPUT1-VALUE.

WHEN 'Y'.

INPUT_Y = INPUT1-VALUE.

ENDCASE.

ENDLOOP.

{logic to use program variable input_x and input_y to set say program variable output_z}

*set output variables:

REFRESH OUTPUT1.

OUTPUT1-NAME = 'Z'.

OUTPUT1-VALUE = OUTPUT_Z.

APPEND OUTPUT1.

hope this helps you.

~thomas

Read only

Former Member
0 Likes
594

hi

good

you can write the subroutine like this

**************SapScriptSTART*****************************

/:define &Var1& = 10

/:define &Var2& = 20

/:define &Var1& = 0

/:perform in program

/: using &var1&

/: using &var2&

/: changing &var3&

/:endperform

**************SapScriptend*****************************

thanks

mrutyun^

Read only

Former Member
0 Likes
594

Hi dinesh,

1. while calling subroutines from sapscripts,

there is a special technique,

which has got its own limitations.

2.

FORM abc

TABLES

in_tab STRUCTURE itcsy

out_tab STRUCTURE itcsy.

ENDFORM.

3. The perform in se38 program should be of the

above format only.

4.<b> We cannot pass internal tables.</b>

<b>5. Rather we need to pass

VARIABLE NAME

VARIABLE VALUE</b>

(see the structure of itcsy in se11)

6. In this form, we have to read

the internal table in_tab

to capture the variable name and its value.

7. Similary, to return the values,

we have to put one record (for each variable)

in out_tab.

regards,

amit m.

Read only

Former Member
0 Likes
594

Hello,

1.The first thing is u should have program consisting of subroutines, from where u are extracting or doing some manipulation.

2.The sytax in the form goes like this.

PERFORM READ_TEXTS IN PROGRAM 'Z08M1_FORM_EKFORM1'

USING &EKKO-EKORG&

USING &EKPO-WERKS&

USING &EKKO-EKGRP&

USING &EKKO-BSTYP&

CHANGING &COMPNAME&

CHANGING &SENDADR&

CHANGING &INVCADR&

CHANGING &COMPADR&

CHANGING &COVERLTR&

CHANGING &SHIPADR&

CHANGING &REMINDER&

CHANGING &REJECTION&

CHANGING &POSTADR&

CHANGING &LOGO&

ENDPERFORM

3.Sytax in the program(Z08M1_FORM_EKFORM1) is like this

FORM READ_TEXTS TABLES IN_PAR STRUCTURE ITCSY

OUT_PAR STRUCTURE ITCSY.

DATA : L_EKORG TYPE EKORG,

L_WERKS TYPE WERKS_D,

L_BSTYP TYPE BSTYP,

L_EKGRP TYPE BKGRP.

READ TABLE IN_PAR WITH KEY 'EKKO-EKORG' .

CHECK SY-SUBRC = 0.

L_EKORG = IN_PAR-VALUE.

READ TABLE IN_PAR WITH KEY 'EKPO-WERKS' .

CHECK SY-SUBRC = 0.

L_WERKS = IN_PAR-VALUE.

READ TABLE IN_PAR WITH KEY 'EKKO-EKGRP' .

CHECK SY-SUBRC = 0.

L_EKGRP = IN_PAR-VALUE.

READ TABLE IN_PAR WITH KEY 'EKKO-BSTYP' .

CHECK SY-SUBRC = 0.

L_BSTYP = IN_PAR-VALUE.

CLEAR Z08M1_ORG_TEXTS.

SELECT SINGLE * FROM Z08M1_ORG_TEXTS WHERE EKORG = L_EKORG

AND WERKS = L_WERKS

AND EKGRP = L_EKGRP

AND BSTYP = L_BSTYP.

IF SY-SUBRC NE 0.

SELECT SINGLE * FROM Z08M1_ORG_TEXTS WHERE EKORG = L_EKORG

AND WERKS = L_WERKS

AND EKGRP = L_EKGRP

AND BSTYP = SPACE.

ENDIF.

READ TABLE OUT_PAR WITH KEY 'COMPNAME'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_COMP.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'SENDADR'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_ADRS.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'INVCADR'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_INVC.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'COMPADR'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_CPAD.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'COVERLTR'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_COVR.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'SHIPADR'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_SHIP.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'REMINDER'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_RMDR.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'REJECTION'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_RJCT.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'POSTADR'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_POST.

MODIFY OUT_PAR INDEX SY-TABIX.

READ TABLE OUT_PAR WITH KEY 'LOGO'.

OUT_PAR-VALUE = Z08M1_ORG_TEXTS-TXT_LOGO.

MODIFY OUT_PAR INDEX SY-TABIX.

ENDFORM.

Regards