‎2006 Jul 12 1:56 PM
Hi All,
I need top modify a script with out distributing driver program. I need to fetch some relevant data from database and fill it in one window.
can any one help in this regard.
Best Regards,
Mahesh.
‎2006 Jul 12 1:59 PM
hello,
you can do this by creating an subrouting pool and using the ITCSY structures.
In your layouut you can call this extenal subroutine as follows,
perform form in program pname changig itcsy.
Reward if it helps.
Regards,
krishna
‎2006 Jul 12 2:00 PM
Hello Mahes,
U can do this with the help of perform stmt.
Ex:
PERFORM GET_VEND_NAME_MOD IN PROGRAM /RB17/YV_FORMS_PUTAWAY_LIST
USING <AK-VBELN&
USING <AP-POSNR&
USING <AK-LGNUM&
USING <AK-BWART&
USING <AK-BWLVS&
USING <AK-MBLNR&
USING <AK-MJAHR&
CHANGING &VEND_NAME&
CHANGING &TRAID&
CHANGING &SHIPPING_UNIT&
CHANGING &VEKP_VKORG&
CHANGING &VEKP_VTWEG&
FORM get_vend_name_mod TABLES in_tab STRUCTURE itcsy
out_tab STRUCTURE itcsy .
DATA : z_vbeln LIKE ltak-vbeln,
z_lgnum LIKE ltak-lgnum,
z_bwart LIKE ltak-bwart,
z_bwlvs LIKE ltak-bwlvs,
z_mblnr LIKE ltak-mblnr,
z_mjahr LIKE ltak-mjahr,
z_posnr LIKE ltap-posnr,
l_f_handle LIKE vevw-handle,
l_f_werks LIKE mseg-werks,
l_f_objkey(14) TYPE c,
l_f_stock1(35) TYPE c.
CONSTANTS : l_f_stock(35) TYPE c VALUE 'Stock Transfer from Plant 9060'.
CLEAR : likp,lfa1.
Get the delivery number
READ TABLE in_tab WITH KEY name = 'LTAK-VBELN'.
CHECK sy-subrc = 0.
z_vbeln = in_tab-value.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = z_vbeln
IMPORTING
output = z_vbeln.
position number
READ TABLE in_tab WITH KEY name = 'LTAP-POSNR'.
CHECK sy-subrc = 0.
z_posnr = in_tab-value.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = z_posnr
IMPORTING
output = z_posnr.
Warehouse number
READ TABLE in_tab WITH KEY name = 'LTAK-LGNUM'.
IF sy-subrc = 0.
z_lgnum = in_tab-value.
ENDIF.
Movement type
READ TABLE in_tab WITH KEY name = 'LTAK-BWART'.
IF sy-subrc = 0.
z_bwart = in_tab-value.
ENDIF.
READ TABLE in_tab WITH KEY name = 'LTAK-BWLVS'.
IF sy-subrc = 0.
z_bwlvs = in_tab-value.
ENDIF.
Material document number and year
READ TABLE in_tab WITH KEY name = 'LTAK-MBLNR'.
IF sy-subrc = 0.
z_mblnr = in_tab-value.
ENDIF.
READ TABLE in_tab WITH KEY name = 'LTAK-MJAHR'.
IF sy-subrc = 0.
z_mjahr = in_tab-value.
ENDIF.
CONCATENATE z_mblnr z_mjahr INTO l_f_objkey.
IF ( z_lgnum = 'A11' AND z_bwart = '301' AND z_bwlvs = '302' ).
SELECT SINGLE handle INTO l_f_handle FROM vevw
WHERE object = 'MM' AND
objkey = l_f_objkey.
IF sy-subrc EQ 0 AND
NOT l_f_handle IS INITIAL.
SELECT SINGLE * FROM vekp
WHERE handle = l_f_handle.
g_f_exidv = vekp-exidv.
ENDIF.
SELECT SINGLE werks INTO l_f_werks FROM mseg
WHERE
mblnr = z_mblnr AND
mjahr = z_mjahr AND
shkzg = 'H'.
IF sy-subrc EQ 0
AND l_f_werks EQ '9060'.
l_f_stock1 = l_f_stock.
ENDIF.
SELECT SINGLE * FROM likp
WHERE vbeln = z_vbeln .
IF sy-subrc EQ 0 .
SELECT SINGLE * FROM lfa1
WHERE lifnr = likp-lifnr.
ENDIF.
ELSE.
SELECT SINGLE * FROM likp
WHERE vbeln = z_vbeln .
IF sy-subrc EQ 0 .
SELECT SINGLE * FROM lfa1
WHERE lifnr = likp-lifnr.
l_f_stock1 = lfa1-name1.
ENDIF.
SELECT SINGLE vbeln FROM vbfa
INTO vbfa-vbeln
WHERE vbtyp_n = 'X'
AND vbelv = z_vbeln.
SELECT SINGLE * FROM vepo
WHERE venum = vbfa-vbeln.
IF sy-subrc EQ 0 .
SELECT SINGLE * FROM vekp
WHERE venum = vepo-venum.
ENDIF.
IF vekp-exidv IS INITIAL.
SELECT SINGLE * FROM vekp
WHERE vpobj IN ('01','03')
AND vpobjkey = z_vbeln.
g_f_exidv = vekp-exidv.
ENDIF.
ENDIF.
READ TABLE out_tab WITH KEY name = 'VEND_NAME'.
CHECK sy-subrc = 0.
out_tab-value = l_f_stock1.
SHIFT out_tab-value LEFT DELETING LEADING space.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'TRAID'.
CHECK sy-subrc = 0.
out_tab-value = likp-traid.
SHIFT out_tab-value LEFT DELETING LEADING space.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'SHIPPING_UNIT'.
CHECK sy-subrc = 0.
out_tab-value = g_f_exidv.
SHIFT out_tab-value LEFT DELETING LEADING space.
SHIFT out_tab-value LEFT DELETING LEADING '0'.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'VEKP_VKORG'.
CHECK sy-subrc = 0.
out_tab-value = vekp-vkorg.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'VEKP_VTWEG'.
CHECK sy-subrc = 0.
out_tab-value = vekp-vtweg.
MODIFY out_tab INDEX sy-tabix.
*} INSERT
ENDFORM. "get_vend_name_mod
If useful reward points.
Regards,
Vasanth
‎2006 Jul 12 2:08 PM
hi,
Use Perform statement in this way...
i.e,
PERFORM GET_VENDOR <b>IN PROGRAM VENDOR_LIST</b>
USING &VBAK-VBELN&
USING &VBAK-POSNR&
CHANGING &V_VBELN&
CHANGING &V_POSNR&.
‎2006 Jul 12 2:06 PM
‎2006 Jul 12 2:14 PM
so copy your current layout to a new Z layout.
then in that window use the variables to print like
&LFA1-LAND1& etc..
to get the values for those fields you should add up the logic to fetch either in driver program or write a z program for that & in that write a FORM routine & call that form routine in the script editor.
/: PERFORM F_GET_HEADER_DETAILS IN PROGRAM
ZPRG_FORMS(YOUR new Z program)
/: USING &LFA1-LIFNR&
/: CHANGING &LFA1-LAND1&.
FORM F_GET_HEADER_DETAILS TABLES ITAB STRUCTURE ITCSY
OTAB STRUCTURE ITCSY.
VENDOR NO
CLEAR V_LIFNR.
READ TABLE ITAB WITH KEY NAME = 'LFA1-LIFNR'
TRANSPORTING VALUE.
V_LIFNR = ITAB-VALUE.
THEN USE YOUR SELECT TO FETCH LAND1.
select single land1
into v_land1
from lfa1
where lifnr = v_lifnr.
OTAB-VALUE = V_LAND1.
MODIFY OTAB with key name = 'LFA1-LAND1'.
the value will be populated to your variable LAND1 & which will printed onthe layout
regards
srikanth
‎2006 Oct 05 8:46 AM
write this perform statement in ur script window( on which window u r doing changes)
/: PERFORM COUNTRY_CODE IN PROGRAM 'Z_MM_R_MMPO'
/: USING &LFA1-LAND1& " availa ble field in ur program.
/: USING &LFA1-SPRAS& " availa ble field in ur program.
/: CHANGING &COUNTRY& " field added to ur script.
/: CHANGING &ANRED& " field added to ur script.
/: CHANGING &NAME1& " field added to ur script.
/: CHANGING &STREET& " field added to ur script.
/: CHANGING &STR_SUPPL3& " field added to ur script.
/: CHANGING &LOCATION& " field added to ur script.
/: CHANGING &STRSUPPL1& " field added to ur script.
/: CHANGING &NAME3& " field added to ur script.
/: CHANGING &NAME4& " field added to ur script.
/: CHANGING &CITY1& " field added to ur script.
/: CHANGING &CITY2& " field added to ur script.
create exc program with z_mm_r_mmpo . this is we r using in our perform statement.
FORM country_code TABLES in_tab STRUCTURE itcsy
out_tab STRUCTURE itcsy. "#EC CALLED
DATA : land1 TYPE lfa1-land1, "plant
spras TYPE lfa1-spras, "LANGUAGE
landx TYPE t005t-landx, "company code
werks TYPE ekpo-werks, "#EC *
adrnr TYPE lfa1-adrnr, "ADDRESS
lifnr TYPE lfa1-lifnr, "VENDOR CODE
anred TYPE lfa1-anred, "M/S
name1 TYPE adrc-name1, "NAME
name3 TYPE lfa1-name3,
name4 TYPE lfa1-name4,
city1 TYPE adrc-city1, "CITY1
city2 TYPE adrc-city2, "CITY2
street TYPE adrc-street, "STREET
str_suppl1 TYPE adrc-str_suppl1, "#EC *
str_suppl2 TYPE adrc-str_suppl2, "#EC *
adrnr1 TYPE t001w-adrnr, "#EC *
str_suppl3 TYPE adrc-str_suppl3, "STR_SUPPL3
location TYPE adrc-location, "LOCATION
post_code1 TYPE adrc-post_code1, "POSTCODE
region TYPE adrc-region,
bezei TYPE t005u-bezei,
email TYPE adr6-smtp_addr, "#EC *
fax TYPE adrc-fax_number. "FAX NUMBER
READ TABLE in_tab WITH KEY name = 'LFA1-LAND1'.
CHECK sy-subrc = c_zero.
land1 = in_tab-value.
READ TABLE in_tab WITH KEY name = 'LFA1-SPRAS'. "LFA1-SPRAS
CHECK sy-subrc = c_zero.
spras = in_tab-value.
*get COUNTRY NAME
SELECT SINGLE landx
INTO landx
FROM t005t
WHERE land1 = land1
AND spras = spras+0(1).
READ TABLE out_tab WITH KEY name = 'COUNTRY'. "COUNTRY
CHECK sy-subrc = c_zero.
out_tab-value = landx.
TRANSLATE landx TO UPPER CASE.
MODIFY out_tab INDEX sy-tabix.
READ TABLE in_tab WITH KEY name = 'EKKO-LIFNR'. "EKKO-LIFNR
CHECK sy-subrc = c_zero.
lifnr = in_tab-value.
*GET THE ADDRESS
SELECT SINGLE adrnr anred name3 name4
INTO (adrnr,anred,name3,name4)
FROM lfa1
WHERE lifnr = lifnr.
READ TABLE out_tab WITH KEY name = 'ANRED'. "M/S
CHECK sy-subrc = c_zero. "#EC *
out_tab-value = anred.
MODIFY out_tab INDEX sy-tabix.
SELECT SINGLE name1 city1 city2 post_code1 street location str_suppl3
region fax_number
INTO (name1, city1, city2, post_code1, street, location, str_suppl3,
region, fax)
FROM adrc
WHERE addrnumber = adrnr. "#EC *
GET STATE NAME.
SELECT SINGLE bezei FROM t005u INTO bezei WHERE spras = 'EN'
AND land1 = land1
AND bland = region.
TRANSLATE bezei TO UPPER CASE.
READ TABLE out_tab WITH KEY name = 'LANDX'. "COUNTRY
CHECK sy-subrc = c_zero.
out_tab-value = landx.
TRANSLATE landx TO UPPER CASE.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'BEZEI'. "STATE
CHECK sy-subrc = c_zero.
out_tab-value = bezei.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'NAME1'. "NAME1
CHECK sy-subrc = c_zero.
out_tab-value = name1.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'NAME3'. "NAME1
CHECK sy-subrc = c_zero.
out_tab-value = name3.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'NAME4'. "NAME1
CHECK sy-subrc = c_zero.
out_tab-value = name4.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'STREET'. "STREET
CHECK sy-subrc = c_zero.
out_tab-value = street.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'LOCATION'. "LOCATION
CHECK sy-subrc = c_zero.
out_tab-value = location.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'STRSUPPL3'. "STRSUPPL3
CHECK sy-subrc = c_zero.
out_tab-value = str_suppl3.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'CITY1'. "CITY1
CHECK sy-subrc = c_zero.
out_tab-value = city1.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'CITY2'. "CITY2
CHECK sy-subrc = c_zero.
out_tab-value = city2.
MODIFY out_tab INDEX sy-tabix.
READ TABLE out_tab WITH KEY name = 'POSTCODE'. "POSTCODE
CHECK sy-subrc = c_zero.
out_tab-value = post_code1.
MODIFY out_tab INDEX sy-tabix.
ENDFORM.