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 Script

madan_ullasa
Contributor
0 Likes
862

hi frnds,

im using a routine in my script.. im using the structure itcsy.... but the changed value is not getting reflected in the script. the test code is as below.

in Script :

PERFORM SAP_NAME IN PROGRAM ZMADAN_SAP_ROUTINE

USING &ITAB-MATNR&

USING &ITAB-MAKTX&

CHANGING &ITAB-MATNR&

CHANGING &ITAB-MAKTX&

ENDPERFORM

&itab-matnr&

&itab-matnr&

in program :

form sap_name tables in_par structure itcsy out_par structure itcsy .

read TABLE OUT_PAR with key name = 'ITAB-MATNR'.

out_par-value = 'MADAN'.

modify out_par index sy-tabix transporting value.

endform.

***********************************8

but the changed matnr is not getting reflected in my layout.

points assured to all replies.

regards,

Madan....

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
828

PERFORM SAP_NAME IN PROGRAM ZMADAN_SAP_ROUTINE

USING &ITAB-MATNR&

Changing &ITAB-MATNR&

Changing &ITAB-MAKTX&

ENDPERFORM

form sap_name tables in_par structure itcsy out_par structure itcsy .

READ TABLE IN_par WITH KEY 'ITAB-MATNR'.

IF SY-SUBRC = 0.

*---Get MAKTX

V_VBELN = IN_PAR-VALUE+0(18).

PERFORM GET_MAKTX USING ITAB-MATNR.

ENDIF.

read TABLE OUT_PAR with key name = 'ITAB-MATNR'.

IF SY-SUBRC = 0.

out_par-value = 'MADAN'.

modify out_par index sy-tabix .

endif.

endform.

Message was edited by: Ashok Parupalli

11 REPLIES 11
Read only

Former Member
0 Likes
828

Hi Madan,

Use INDEX to read and modify the itab.

read TABLE OUT_PAR INDEX 1.
 out_par-value = 'MADAN'.

modify out_par index 1 transporting value.

 Cheers
 VJ

Read only

0 Likes
828

hi,

that will not make much difference since by debugging i was able to find that the table is getting modified.

regards,

madan..

Read only

Former Member
0 Likes
828

Your code looks ok to me.

Check you have activated everything or check you have commented som eparts of your code?

Regards,

ravi

Read only

Former Member
0 Likes
828

Hi madan,

1. since your are changing the value subroutine,

2. just pass using CHANGING

thru your layout,

and not using USING.

USING &ITAB-MATNR& <==== remove

USING &ITAB-MAKTX& <===== remove

CHANGING &ITAB-MATNR&

CHANGING &ITAB-MAKTX

regards,

amit m.

Read only

0 Likes
828

Hi again,

1. Try with some other variable name

2. eg. MYMATNR

3. No need to declare this variable in your sapscript.

4. Just pass it

PERFORM XYZ IN PROG XYZ

CHANGING &MYMATNR&

ENDPERFORM.

&MYMATNR&

regards,

amit m.

Read only

Former Member
0 Likes
828

Have a look at this

Passing Xblnr to prog Z_RED_PO_NO to get "PONUM"

In Form:

/: DEFINE &PONUM&

/: PERFORM GET_PO IN PROGRAM Z_READ_PO_NO

/: USING &MHND-XBLNR&

/: CHANGING &PONUM&

/: ENDPERFORM

&PONUM&

In prog:

REPORT z_read_po_no .

TABLES : itcsy.

&----


*& Form Get_PO

&----


  • Description : Subroutine to get PO Number for the Corresponding

  • Invoice Number

----


  • -->L_XBLNR Invoice Number

  • -->L_BSTNK PO Number

  • -->ITCSY Structure to hold Name and value

----


FORM get_po TABLES in_xblnr STRUCTURE itcsy

out_bstnk STRUCTURE itcsy.

DATA : l_xblnr LIKE mhnd-xblnr,

l_bstnk LIKE vbak-bstnk,

wa_bstnk LIKE itcsy,

l_aubel LIKE vbrp-aubel.

CLEAR : l_xblnr,

in_xblnr,

out_bstnk,

l_aubel,

l_bstnk,

wa_bstnk.

REFRESH : out_bstnk.

READ TABLE in_xblnr WITH KEY name = 'MHND-XBLNR'.

IF sy-subrc EQ 0.

l_xblnr = in_xblnr-value.

ENDIF.

SELECT SINGLE aubel

FROM vbrp

INTO l_aubel

WHERE vbeln EQ l_xblnr.

IF sy-subrc EQ 0.

SELECT SINGLE bstnk

FROM vbak

INTO l_bstnk

WHERE vbeln = l_aubel.

IF sy-subrc EQ 0.

wa_bstnk-name = 'PONUM'.

wa_bstnk-value = l_bstnk.

INSERT wa_bstnk INTO out_bstnk INDEX 1.

ELSE.

wa_bstnk-name = 'PONUM'.

wa_bstnk-value = space.

INSERT wa_bstnk INTO out_bstnk INDEX 1.

ENDIF.

ELSE.

wa_bstnk-name = 'PONUM'.

wa_bstnk-value = space.

INSERT wa_bstnk INTO out_bstnk INDEX 1.

ENDIF.

ENDFORM. "GET_PO

Read only

Former Member
0 Likes
830

PERFORM SAP_NAME IN PROGRAM ZMADAN_SAP_ROUTINE

USING &ITAB-MATNR&

Changing &ITAB-MATNR&

Changing &ITAB-MAKTX&

ENDPERFORM

form sap_name tables in_par structure itcsy out_par structure itcsy .

READ TABLE IN_par WITH KEY 'ITAB-MATNR'.

IF SY-SUBRC = 0.

*---Get MAKTX

V_VBELN = IN_PAR-VALUE+0(18).

PERFORM GET_MAKTX USING ITAB-MATNR.

ENDIF.

read TABLE OUT_PAR with key name = 'ITAB-MATNR'.

IF SY-SUBRC = 0.

out_par-value = 'MADAN'.

modify out_par index sy-tabix .

endif.

endform.

Message was edited by: Ashok Parupalli

Read only

0 Likes
828

hi amit n ashok,

i did both the changes as suggested by you, but still the changes are not getting reflected ..

regads,

madan..

Read only

0 Likes
828

hi you do one thing declare one more matnr in itab like itab-matnr1 and do like this::

PERFORM SAP_NAME IN PROGRAM ZMADAN_SAP_ROUTINE

USING &ITAB-MATNR&

<b>Changing &ITAB-MATNR1&</b>

Changing &ITAB-MAKTX&

ENDPERFORM

form sap_name tables in_par structure itcsy out_par structure itcsy .

READ TABLE IN_par WITH KEY 'ITAB-MATNR'.

IF SY-SUBRC = 0.

*---Get MAKTX

V_VBELN = IN_PAR-VALUE+0(18).

PERFORM GET_MAKTX USING ITAB-MATNR.

ENDIF.

<b>read TABLE OUT_PAR with key name = 'ITAB-MATNR1'.</b>

IF SY-SUBRC = 0.

out_par-value = 'MADAN'.

modify out_par index sy-tabix .

endif.

endform.

Read only

0 Likes
828

hi Ashok,

IT worked !!!!

tanx!

regards,

madan..

Read only

Former Member
0 Likes
828

Hi Madan,

Can check this code...

FORM get_delitot TABLES in_tab STRUCTURE itcsy

out_tab STRUCTURE itcsy.

CLEAR v_delitot.

  • retrieve document number from standard program RVADDN01

READ TABLE in_tab WITH KEY name = 'VBDPL-VBELN'.

IF sy-subrc EQ 0.

CONDENSE in_tab-value NO-GAPS.

l_vbeln = in_tab-value.

UNPACK l_vbeln TO l_vbeln.

ENDIF.

*Fetch the delivery from delivery header

SELECT vbeln FROM likp

INTO CORRESPONDING FIELDS OF TABLE it_likp

WHERE vbeln = l_vbeln.

  • Get delivery , item, material , net value, Qty delivered.

IF NOT it_likp[] IS INITIAL.

SELECT vbeln posnr pstyv matnr netwr lfimg vgbel vgpos

FROM lips

INTO CORRESPONDING FIELDS OF TABLE it_lips

FOR ALL ENTRIES IN it_likp

WHERE vbeln EQ it_likp-vbeln

AND pstyv NE 'ZKIT'.

ENDIF.

*Get sales order quantity based on the delivery.

IF NOT it_lips[] IS INITIAL.

SELECT vbeln posnr matnr kwmeng netwr waerk

FROM vbap

INTO CORRESPONDING FIELDS OF TABLE it_vbap

FOR ALL ENTRIES IN it_lips

WHERE vbeln = it_lips-vgbel.

ENDIF.

LOOP AT it_lips.

READ TABLE it_vbap WITH KEY vbeln = it_lips-vgbel

posnr = it_lips-vgpos.

IF sy-subrc EQ 0.

it_final-lfimg = it_lips-lfimg. " Delivery Quantity

it_final-vbeln = it_lips-vbeln. " delivery

it_final-matnr = it_lips-matnr. " material

it_final-kwmeng = it_vbap-kwmeng." Cuml order quantity

it_final-netwr = it_vbap-netwr. " Net value of the order items.

it_final-waerk = it_vbap-waerk. " Document currency

APPEND it_final.

CLEAR it_final.

ENDIF.

ENDLOOP.

LOOP AT it_final.

IF it_final-lfimg EQ it_final-kwmeng.

v_netwr1 = it_final-netwr.

ELSEIF it_final-lfimg NE it_final-kwmeng.

v_netwr1 = ( it_final-netwr * it_final-lfimg ) / it_final-kwmeng.

ENDIF.

v_delitot = v_delitot + v_netwr1.

v_curr = it_final-waerk.

ENDLOOP.

  • populate delivery total to out_tab

READ TABLE out_tab WITH KEY name = 'V_DELITOT'.

IF sy-subrc EQ 0.

MOVE v_delitot TO out_tab-value.

SHIFT out_tab-value LEFT DELETING LEADING space.

<b>MODIFY out_tab INDEX sy-tabix.</b>

ENDIF.

  • populate currency to out_tab

READ TABLE out_tab WITH KEY name = 'V_CURR'.

IF sy-subrc EQ 0.

MOVE v_curr TO out_tab-value.

<b>MODIFY out_tab INDEX sy-tabix.</b>

ENDIF.

ENDFORM. "GET_DELITOT

Regards,

Raj