Call subroutine in sap script
how can i call subroutine in SAP Script?& where?
hi,
refer d links
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/calling%2ba%2bsub-routine%2bin%2bsap%2bscripts
subroutine in script. REWARDED
abput subroutines in scripts
How to call a subroutine in a script ?
How to call subroutine in a sap script
Similar Messages
-
HOw can we Call Subroutine in Sap Script?
HOw can we Call Subroutine in Sap Script?
Hi
*You have to call sub routine from script like this.
/: PERFORM DATE_FORMAT IN PROGRAM &SY-REPID&
/: USING &RM06P-LFDAT&
/: USING &PEKKO-LFDAT&
/: CHANGING &VALUE_OLD&
/: CHANGING &VALUE_NEW&
/: ENDPERFORM
*In print program write code.
FORM date_format TABLES in_tab STRUCTURE itcsy
out_tab STRUCTURE itcsy.
DATA : date TYPE char10.
DATA : date2 TYPE char10.
DATA : l_dmbtr TYPE char10.
READ TABLE in_tab WITH KEY 'RM06P-LFDAT'.
IF sy-subrc = 0.
"Your code goes here
CLEAR l_dmbtr.
ENDIF.
READ TABLE in_tab WITH KEY 'PEKKO-LFDAT'.
IF sy-subrc = 0.
l_dmbtr = in_tab-value.
"Your code goes here
CLEAR l_dmbtr.
ENDIF.
READ TABLE out_tab WITH KEY 'VALUE_NEW'.
IF sy-subrc EQ 0.
out_tab-value = date2.
MODIFY out_tab INDEX sy-tabix.
ENDIF.
READ TABLE out_tab WITH KEY 'VALUE_OLD'.
IF sy-subrc = 0.
out_tab-value = l_dmbtr.
MODIFY out_tab INDEX sy-tabix.
ENDIF.
ENDFORM. "DATE_FORMAT -
Calling subroutine from SAP script
I am using the below code within my SAP script form that prints GR/GI Slips but its not working. And the only way I can issue the output is from MB02 whcih doesn't seem to allow to call the debuger, so I'm at a lost as to what to do.
Code in SAP script
/: PERFORM GET_BINS IN PROGRAM ZMM_SAPSCRIPT_FORMS
USING &MSEG-MATNR&
/: USING &MSEG-LGNUM&
/: CHANGING &MABDR-LGPBE&
/: ENDPERFORM
CODE from my subroutine program:
FORM get_bins TABLES input_table STRUCTURE itcsy
output_table STRUCTURE itcsy.
DATA: lc_matnr TYPE matnr,
lc_lgnum TYPE lgnum,
lc_lgpla TYPE lgpla,
lc_index TYPE sy-tabix.
* Material no
READ TABLE input_table WITH KEY name = 'MSEG-MATNR'.
MOVE input_table-value TO lc_matnr.
* Warehouse number
READ TABLE input_table WITH KEY name = 'MSEG-LGNUM'.
MOVE input_table-value TO lc_lgnum.
* Get BIN
SELECT SINGLE lgpla INTO lc_lgpla
FROM mlgt
WHERE matnr = lc_matnr
AND lgnum = 'CPT' "lc_lgnum
AND lgtyp = '001'.
IF sy-subrc = 0.
READ TABLE output_table WITH KEY name = 'MABDR-LGPBE'.
lc_index = sy-tabix.
MOVE lc_lgpla TO output_table-value.
MODIFY output_table INDEX lc_index.
ENDIF./: PERFORM GET_BINS IN PROGRAM ZMM_SAPSCRIPT_FORMS
/: USING &MSEG-MATNR&
/: USING &MSEG-LGNUM&
/: CHANGING &MABDR-LGPBE&
/: ENDPERFORM
FORM get_bins TABLES input_table STRUCTURE itcsy
output_table STRUCTURE itcsy.
DATA: lc_matnr TYPE matnr,
lc_lgnum TYPE lgnum,
lc_lgpla TYPE lgpla,
lc_index TYPE sy-tabix.
Material no
READ TABLE input_table WITH KEY name = 'MSEG-MATNR'.
MOVE input_table-value TO lc_matnr.
Warehouse number
READ TABLE input_table WITH KEY name = 'MSEG-LGNUM'.
MOVE input_table-value TO lc_lgnum.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = lc_matnr
IMPORTING
OUTPUT = lc_matnr .
Get BIN
SELECT SINGLE lgpla INTO lc_lgpla
FROM mlgt
WHERE matnr = lc_matnr
AND lgnum = 'CPT' "lc_lgnum
AND lgtyp = '001'.
IF sy-subrc = 0.
READ TABLE output_table WITH KEY name = 'MABDR-LGPBE'.
lc_index = sy-tabix.
MOVE lc_lgpla TO output_table-value.
MODIFY output_table TRANSPORTING VALUE WHERE NAME = 'MABDR-LGPBE'.
ENDIF. -
How to call a subroutine from sap script
hi friends,
Can anybody tell me How to call a subroutine from sap script .
thanks n regards .
Maheshhi..
Calling ABAP Subroutines: PERFORM
You can use the PERFORM command to call an ABAP subroutine (form) from any program, subject to the normal ABAP runtime authorization checking. You can use such calls to subroutines for carrying out calculations, for obtaining data from the database that is needed at display or print time, for formatting data, and so on.
PERFORM commands, like all control commands, are executed when a document is formatted for display or printing. Communication between a subroutine that you call and the document is by way of symbols whose values are set in the subroutine.
The system does not execute the PERFORM command within SAPscript replace modules, such as TEXT_SYMBOL_REPLACE or TEXT_INCLUDE_REPLACE. The replace modules can only replace symbol values or resolve include texts, but not interpret SAPscript control commands.
Syntax in a form window:
/: PERFORM <form> IN PROGRAM <prog>
/: USING &INVAR1&
/: USING &INVAR2&
/: CHANGING &OUTVAR1&
/: CHANGING &OUTVAR2&
/: ENDPERFORM
INVAR1 and INVAR2 are variable symbols and may be of any of the four SAPscript symbol types.
OUTVAR1 and OUTVAR2 are local text symbols and must therefore be character strings.
The ABAP subroutine called via the command line stated above must be defined in the ABAP report prog as follows:
FORM <form> TABLES IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY.
ENDFORM.
The values of the SAPscript symbols passed with /: USING... are now stored in the internal table IN_TAB . Note that the system passes the values as character string to the subroutine, since the field Feld VALUE in structure ITCSY has the domain TDSYMVALUE (CHAR 80). See the example below on how to access the variables.
The internal table OUT_TAB contains names and values of the CHANGING parameters in the PERFORM statement. These parameters are local text symbols, that is, character fields. See the example below on how to return the variables within the subroutine.
From within a SAPscript form, a subroutine GET_BARCODE in the ABAP program QCJPERFO is called. Then the simple barcode contained there (First page, Next page, Last page) is printed as local variable symbol.
Definition in the SAPscript form:
/: PERFORM GET_BARCODE IN PROGRAM QCJPERFO
/: USING &PAGE&
/: USING &NEXTPAGE&
/: CHANGING &BARCODE&
/: ENDPERFORM
/ &BARCODE&
Coding of the calling ABAP program:
REPORT QCJPERFO.
FORM GET_BARCODE TABLES IN_PAR STUCTURE ITCSY
OUT_PAR STRUCTURE ITCSY.
DATA: PAGNUM LIKE SY-TABIX, "page number
NEXTPAGE LIKE SY-TABIX. "number of next page
READ TABLE IN_PAR WITH KEY PAGE.
CHECK SY-SUBRC = 0.
PAGNUM = IN_PAR-VALUE.
READ TABLE IN_PAR WITH KEY NEXTPAGE.
CHECK SY-SUBRC = 0.
NEXTPAGE = IN_PAR-VALUE.
READ TABLE OUT_PAR WITH KEY BARCODE.
CHECK SY-SUBRC = 0.
IF PAGNUM = 1.
OUT_PAR-VALUE = |. "First page
ELSE.
OUT_PAR-VALUE = ||. "Next page
ENDIF.
IF NEXTPAGE = 0.
OUT_PAR-VALUE+2 = L. "Flag: last page
ENDIF.
MODIFY OUT_PAR INDEX SY-TABIX.
ENDFORM.
regards,
veeresh -
ABAP Subroutines in SAP Script forms
Hi Friends,
Can any give an example on using ABAP Subroutines in SAP Scripts
how to call ABAP subroutine IN FORM and how to define form statement in abap program
thanks in advance
Points for sure
Regards
VijayaHi,
you have to write
perform formname in program zprogram
using &var1&
using &var2&
changing &var3&
endperform
in se38 create program zprogram of subroutine pool ttype
and
write the
form
endform there
egcode for a subroutne for changing the amount into indian words
PROGRAM ZFII_SR_PAYMNT_CHCK.
declaring the variables which are necessary
DATA:
G_AMOUNT TYPE PC207-BETRG, " having amount value
G_SPELL_AMOUNT(60) TYPE C, " LIKE SPELL-WORD, " amount in words
G_SPELL_AMOUNT1(60) TYPE C, " spell structure
G_WHTAX TYPE BSAK-QBSHB, "
G_QBSHB TYPE BSAK-QBSHB, " FOR COLLECTING THE WITH HOLDING TAX
G_ZUMSK TYPE BSAK-ZUMSK.
*DECLARING THE INTERNAL TABLES FOR THE OUTPUT TO BE DISPLAYED.
TYPES : BEGIN OF T_INPUT_TABLE.
INCLUDE STRUCTURE ITCSY.
TYPES : END OF T_INPUT_TABLE.
TYPES : BEGIN OF T_OUTPUT_TABLE.
INCLUDE STRUCTURE ITCSY.
TYPES: END OF T_OUTPUT_TABLE.
DATA: GWA_INPUT_TABLE TYPE T_INPUT_TABLE.
DATA: GWA_OUTPUT_TABLE TYPE T_OUTPUT_TABLE.
DATA: GIT_INPUT_TABLE TYPE STANDARD TABLE OF T_INPUT_TABLE.
DATA: GIT_OUTPUT_TABLE TYPE STANDARD TABLE OF T_OUTPUT_TABLE.
TYPES : BEGIN OF T_ITEM,
BUKRS TYPE BUKRS,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
WT_WITHCD TYPE WT_WITHCD,
WT_QBSHB TYPE WT_WT1,
END OF T_ITEM,
IT_T_ITEM TYPE STANDARD TABLE OF T_ITEM.
DATA : GIT_ITEM TYPE IT_T_ITEM,
GWA_ITEM TYPE T_ITEM.
GET_SPELL_AMOUNT
FORM GET_SPELL_AMOUNT TABLES INPUT STRUCTURE ITCSY
OUTPUT STRUCTURE ITCSY. "#EC CALLED
CLEARING OFF THE VARIABLE USED IN PROGRAM.
CLEAR: G_AMOUNT,
G_SPELL_AMOUNT.
*clearing the internal tables which we have used.
CLEAR:
GIT_INPUT_TABLE,
GIT_OUTPUT_TABLE.
*REFRESHING THE INTERNAL TABLES.
REFRESH:
GIT_INPUT_TABLE,
GIT_OUTPUT_TABLE.
*initially assigning the memory vaules to our internal tables.
GIT_INPUT_TABLE[] = INPUT[].
GIT_OUTPUT_TABLE[] = OUTPUT[].
*reading the table input to get the amount value.
READ TABLE GIT_INPUT_TABLE INTO GWA_INPUT_TABLE INDEX 1.
IF GWA_INPUT_TABLE-VALUE CA 'X'.
REPLACE ALL OCCURRENCES OF 'X' IN GWA_INPUT_TABLE-VALUE WITH '0'.
ENDIF.
*THIS IS IMPORTANT PART AS IT IS CONVERTING THE
*CHARACTER FIELD INTO CURRENCY FIELD.
SHIFT GWA_INPUT_TABLE-VALUE LEFT DELETING LEADING SPACE.
TRANSLATE GWA_INPUT_TABLE-VALUE USING ', '.
CONDENSE GWA_INPUT_TABLE-VALUE NO-GAPS.
G_AMOUNT = GWA_INPUT_TABLE-VALUE.
*calling the function moudle which will
*covert amount into words (indian format ).
*i.e in crores, lakhs, thousands
DATA: L_SPELLAMOUNT(255) TYPE C,
L_ONLY(255) TYPE C.
CLEAR: L_SPELLAMOUNT, L_ONLY.
*here the amount should not be more than
99,99,99,999.99 . if it is greater than
*this amount this function module will not work
*so give the amount which is lessthan or equal to
*above said amount.
IF G_AMOUNT LT '1000000000'.
CALL FUNCTION 'HR_IN_CHG_INR_WRDS'
EXPORTING
AMT_IN_NUM = G_AMOUNT
IMPORTING
AMT_IN_WORDS = L_SPELLAMOUNT
EXCEPTIONS
DATA_TYPE_MISMATCH = 1
OTHERS = 2.
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.
CONDENSE L_SPELLAMOUNT.
TRANSLATE L_SPELLAMOUNT TO UPPER CASE.
CONCATENATE L_SPELLAMOUNT 'ONLY' INTO L_ONLY SEPARATED BY SPACE.
*moivng the field name into table field.
GWA_OUTPUT_TABLE-NAME = 'G_SPELL_AMOUNT'.
*assigning the amount in words to the variable.
*the reason behind splitting the word into two parts
*is--- in the scripts the whole string is not getting
*printed. So we are splitting it into two parts so that
*it will print the whole string.
G_SPELL_AMOUNT = L_ONLY+0(60).
G_SPELL_AMOUNT1 = L_ONLY+60(60).
G_SPELL_AMOUNT = L_SPELLAMOUNT.
*MOVING THE AMOUNT IN WORDS TO FINAL WORK AREA.
MOVE G_SPELL_AMOUNT TO GWA_OUTPUT_TABLE-VALUE.
*MODIFYING THE INTERNAL TABLE FORM THE WORK AREA.
MODIFY GIT_OUTPUT_TABLE FROM GWA_OUTPUT_TABLE INDEX 1.
*FOR THE SECOND RECORD I.E FOR THE NEXT 60characters
GWA_OUTPUT_TABLE-NAME = 'G_SPELL_AMOUNT1'.
MOVE G_SPELL_AMOUNT1 TO GWA_OUTPUT_TABLE-VALUE.
MODIFY GIT_OUTPUT_TABLE FROM GWA_OUTPUT_TABLE INDEX 2.
*assigning the total output table to the memory .
OUTPUT[] = GIT_OUTPUT_TABLE[].
ENDFORM. "GET_COMPADDR
thanks & regards,
Venkatesh -
How 2 debug a Perform subroutine in sap script
Hi,
I have a perform endperform in Script. But tht is not working in some case. i m trying to debug but i m not able to go inside the routine and see wht it is doing? . can any one help me how to debug a subroutine in sap script.Hi Panigrahi,
1) Put a break point in your perform.
2) YOu should change the dispatch option in your Output screen of the transaction which triggers your sap script. The dispatch option should be 1 (Send with a periodically scheduled job).
Then save your transaction.
3) Go to se38 and run the program RSNAST00.
Give the Object Key as the Document Number for which you are triggering the script output.
The control will stop in your perform.
Regards,
Ravi -
Using Subroutines in SAP script
Hi Experts,
I am trying to get value of Z variables from a subroutine pool program using Perform ... EndPerform in my sap script form.
In my form window i have written
PERFORM ITEM_LINE_2F IN PROGRAM ZMEPRINTFORMS
USING &EKPO-MENGE&
CHANGING &V_EKPO_MENGE&
ENDPERFORM
and in my subroutine pool program i have written:
FORM ITEM_LINE_2F TABLES IN_PAR STRUCTURE ITCSY
out_par structure itcsy.
data : ZLV_ekpo_menge(17),
v_ekpo_menge(17),
ZLV_temp_split_1(14),
ZLV_temp_split_2(3),
ZLV_temp_menge(8) type p.
constants: zc_menge type TDTPRGNAME value 'EKPO-MENGE'.
field-symbols: <tab> type itcsy.
loop at in_par assigning <tab>.
case <tab>-name.
when zc_menge.
zlv_ekpo_menge = <tab>-value.
when others.
endcase.
endloop.
unassign <tab>.
V_EKPO_MENGE = zlv_ekpo_menge.
SPLIT V_EKPO_MENGE AT '.' INTO ZLV_TEMP_SPLIT_1 ZLV_TEMP_SPLIT_2.
IF ZLV_TEMP_SPLIT_2+0(3) = '000'.
ZLV_TEMP_MENGE = zlv_ekpo_menge.
WRITE ZLV_TEMP_MENGE TO V_EKPO_MENGE.
ELSE.
WRITE zlv_ekpo_MENGE TO V_EKPO_MENGE.
ENDIF.
loop at out_par assigning <tab>.
case <tab>-name.
when V_EKPO_MENGE.
<tab>-value = v_ekpo_menge.
when others.
Modify out_par.
endcase.
endloop.
unassign <tab>.hi,
FORM ITEM_LINE_2F TABLES IN_PAR STRUCTURE ITCSY
out_par structure itcsy.
data : ZLV_ekpo_menge(17),
v_ekpo_menge(17),
ZLV_temp_split_1(14),
ZLV_temp_split_2(3),
ZLV_temp_menge(8) type p.
read table in_par index 1.
V_EKPO_MENGE = zlv_ekpo_menge = in_par-value.
SPLIT V_EKPO_MENGE AT '.' INTO ZLV_TEMP_SPLIT_1 ZLV_TEMP_SPLIT_2.
IF ZLV_TEMP_SPLIT_2+0(3) = '000'.
ZLV_TEMP_MENGE = zlv_ekpo_menge.
WRITE ZLV_TEMP_MENGE TO V_EKPO_MENGE.
ELSE.
WRITE zlv_ekpo_MENGE TO V_EKPO_MENGE.
ENDIF.
read table out_par index 1.
out_par-value = v_ekpo_menge.
Modify out_par.
but frankly speaking... i dint understand your logic... finally you are passing the same value ????????
regards
padma -
How to call Report from SAP Script
Hi,
I want to know how can we call a report from a SAPscript .
Regards,
Ramanjithe best u can do is
write a perform
perform sub_XXX in program ZXXX.
endperform.
se38...
report zXXX.
form sub_XXX.
submit ZXXX1.
endform.
santhosh -
EXPERTS PLZ HELP ME IN SAP SCRIPT URGENT
Hi experts
plz help me
i m very new in sap scripts
i have a script WESCHEINVERS1 and the driver prog is SAPM07DR
i ill have to copy this script and have to add two more feild in the text element W1LGMAT
fields are :
CAWNT-ATWTB
EKPO-REVLV
now wat i think i cannot make changes to standard driver prog so it wud be better to call a subroutine 4 it
so plz guide me how i ill have to fetch data nd pass to the script
plz write the code if possible 4 u
FYI:
MSEG : Document Segment Material
MANDT Client
MBLNR Number of material Document
MJAHR Material Document Year
ZEILE Item in Material Document
MATNR Material Number
LIFNR Account number or vendor
EBELN Purchase order number
EBELP Item number of PO
EKPO : Purchasing document item
MANDT Client
EBELN Purchase order number
EBELP Item number of PO
MATNR Material Number
REVLV Revision Level
LFA1 : Vendor Master (General section)
MANDT Client
LIFNR Account number of vendor or creditor MSEG-LIFNR
SPRAS Language key
AUSP : Characteristic Values
MANDT Client
OBJEK Key of object to be classified MSEG-MATNR
ATINN Internal characteristic ZO-QUALITY-LEVEL
ATZHL Internal counter
ATWRT Characteristic Value
CAWNT : Value texts
MANDT Client
ATINN Internal characteristic ZO-QUALITY-LEVEL
ATZHL Internal counter AUSP-ATZHL
SPRAS Language Key LFA1-SPRAS
ATWTB Characteristic Value Description
thanks in advanceRefer the links to know about calling subroutines ins cript -
subroutine in script
How to call a subroutine in a script ?
EXTERNAL SUBROUTINE IN SAP SCRIPT
Regards,
Amit
Reward all helpful replies. -
Long Text printing in SAP SCRIPT
Hi Experts,
I have a requirement of printing long text in sapscript.
There are 15 condition types for each item in sales order and one long text for each condition record.
Each long text has multiple lines i.e. for one long text it may have 2 lines and other may have 1 or 3 lines or etc.
My trials :
I used read_text() function mudule in a routine which is being called from the sap script to get the whole long text which has 5 lines and is stored in an internal table.
Now is there a way to transfer the whole internal_table data as a whole into the script i.e. is there a way to transfer the table from the routine to the sapscript.
Thanks in advance.
kalikonda.Hi
In addition of my include solution.
you ofcourse can use a perform statement if you havea maximum of lines which is possible.
like (if you have a maximum of 5 lines
define &line_1& := ' '
define &line_2& := ' '
define &line_3& := ' '
define &line_4& := ' '
define &line_5& := ' '
Perform getsomedate in program abcxyz
using orderno
using itemno
changing &line_1&
changing &line_2&
changing &line_3&
changing &line_4&
changing &line_5&
Endperform
when printing the data
/: if &line_1& NE ' '
IL &line_1&
/: endif
/: if &line_2& NE ' '
IL &line_2&
/: endif
/: if &line_3& NE ' '
IL &line_3&
/: endif
/: if &line_4& NE ' '
IL &line_4&
/: endif
/: if &line_5& NE ' '
IL &line_5&
/: endif
Gr., Frank -
Hi,
Can you please let me know the steps to upload the logo and to call it from SAP Script. I have the logo in the Word Document.
Thanks in advance,
Ishaq.Hi,
Use TCode SE78 and import logo to R/3.
Select GRAPHICS> BMP, select ur logo on Legacy sys.> Transport.
Now ur logo has been transfrred to R/3 which is on desktop/legacy.
NOw in logo window, in script editor, under menu options, INSERT--> LOGO.
Activate and execute.
Revert back if any issues.
Reward with points if helpful
Regards
Naveen -
I have a normal report output with a field "HIDE" to make it interactive. When clicked on any of the values of this field(s), the value (say VBELN) has to be passed to SAP SCRIPT and all the SELECT QUERIES needs to be written in SAP SCRIPT to get the desired output.
How do i get this feature?hi
U have to call perform in SAP script '/:'.
In that u have to pass parameter and get(changing) parameter.
FORM get_value TABLES inpar STRUCTURE itcsy
outpar STRUCTURE itcsy.
u have to read value from inpar and append value in outpar into the form.
Hope thiw will be useful.
regards
vinod -
Subroutine call from SAP Script
Hi,
I need to calculate required/outstanding qty. hence am passing existing values of reservation#/item# and issued qty.
both req/out qty are returned blank by the code. please help.
Following is my code segment for a external routine call from SAP Script.
/: PERFORM P_GET_QTY IN PROGRAM ZTEST
/: USING &MSEG-RSNUM&
/: USING &MSEG-RSPOS&
/: CHANGING &REQ_QTY&
/: CHANGING &MSEG-MENGE&
/: CHANGING &OUT_QTY&
/: ENDPERFORM
REPORT ztest .
TABLES resb.
DATA: wa_resb TYPE resb,
req_qty TYPE resb-bdmng,
isd_qty TYPE mseg-menge,
out_qty TYPE resb-bdmng.
FORM p_get_qty TABLES input STRUCTURE itcsy
output STRUCTURE itcsy.
DATA: avlbl TYPE resb-bdmng.
READ TABLE input WITH KEY 'MSEG-RSNUM'.
CHECK sy-subrc = 0.
wa_resb-rsnum = input-value.
READ TABLE input WITH KEY 'MSEG-RSPOS'.
CHECK sy-subrc = 0.
wa_resb-rspos = input-value.
READ TABLE input WITH KEY 'REQ_QTY'.
CHECK sy-subrc = 0.
req_qty = input-value.
READ TABLE input WITH KEY 'MSEG-MENGE'.
CHECK sy-subrc = 0.
isd_qty = input-value.
SELECT SINGLE * INTO wa_resb
FROM resb
WHERE rsnum = wa_resb-rsnum
AND rspos = wa_resb-rspos.
CHECK sy-subrc = 0.
avlbl = wa_resb-bdmng - wa_resb-enmng.
req_qty = avlbl - out_qty.
out_qty = req_qty - isd_qty.
output-name = 'REQ_QTY'.
output-value = req_qty.
MODIFY output TRANSPORTING name value WHERE name = 'REQ_QTY'.
APPEND output.
output-name = 'OUT_QTY'.
output-value = out_qty.
MODIFY output TRANSPORTING name value WHERE name = 'OUT_QTY'.
APPEND output.
ENDFORM.
Thanks,
Ram.Hi Ram,
I think you have to use MODIFY instead of append for the OUTPUT table.
MOdify the table with KEY. This should resolve the problem.
Ram, you can check this code and see how the MODIFY is to be used.
REPORT YLSD999A.
DATA W_LENGTH TYPE I.
* GENERAL PURPOSE SUBROUTINES FOR CALLING FROM SAPSCRIPTS
FORM DISPLAY_POUND TABLES IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY.
DATA: COUNT TYPE P VALUE 16.
DATA: W_VALUE(17) TYPE C. "defined as 7 chars to remove pence
DATA: W_CHAR TYPE C.
DATA: W_DUMMY TYPE C.
DATA: W_CURR(3) TYPE C.
* Get first parameter in input table.
READ TABLE IN_TAB INDEX 1.
WRITE IN_TAB-VALUE TO W_VALUE .
* get second parameter in input table
READ TABLE IN_TAB INDEX 2.
MOVE IN_TAB-VALUE TO W_CURR.
IF W_CURR = 'GBP'.
W_CURR = '£'.
ENDIF.
W_LENGTH = STRLEN( W_CURR ).
* look for first space starting at right.
WHILE COUNT > -1.
W_CHAR = W_VALUE+COUNT(1).
* W_CHAR = IN_TAB-VALUE+COUNT(1).
IF W_CHAR = ' '.
COUNT = COUNT - W_LENGTH + 1.
W_VALUE+COUNT(W_LENGTH) = W_CURR.
COUNT = -1.
ELSE.
* W_VALUE+COUNT(1) = W_CHAR.
COUNT = COUNT - 1.
ENDIF.
ENDWHILE.
* read only parameter in output table
READ TABLE OUT_TAB INDEX 1.
OUT_TAB-VALUE = W_VALUE.
MODIFY OUT_TAB INDEX SY-TABIX.
ENDFORM.
Cheers
VJ -
Calling different pages in a single sap script based on conditions?
Hi All,
Can anyone please give me an example of how to call different pages in a single sap script based on condition. Eg., i need to call 5 differnet pages from a single sap script based on 5 company codes.
Please help
Regards
PriyaThis approach to make call from SAPscript. Its concept is similar to make call to a subroutine in another program. I would presume you understand how to use USING and CHANGING parameter. =)
SAPscript -
/: Perform get_date in program z_at_date
/: using &p_year&
/: changing &new_date&
/: endperform.
program z_at_date -
form get_date TABLES rec_in STRUCTURE itcsy
rec_out STRUCTURE itcsy..
DATA:
v_year type char10.
sap script and subroutine uses itcsy structure to transmit parameters
first parameter is incoming while second parameter is out going
their function is like an internal table with header line
all data types between SAPscript and subroutine are string.
so, you might need additional conversion.
read incoming parameter with exact name from SAPscript
READ TABLE rec_in WITH KEY name = 'P_YEAR'.
IF sy-subrc EQ 0.
v_year = rec_in-value.
ENDIF.
to return value, use the exact name on the second structure
CONCATENATE v_year v_year INTO v_year.
READ TABLE rec_out WITH KEY name = 'NEW_DATE'.
IF sy-subrc EQ 0.
rec_out-value = v_year.
MODIFY rec_out TRANSPORTING value WHERE name = 'NEW_DATE'.
ENDIF.
endform.
Hope this helps =) -
Calling SAP script program in BAPI and want to display in html format
Dear All,
I am writing bapi and calling sap script program in it.
I want output in html format pl suggest me
same coding is working for report giving error in sapscript only.
types: begin of tt_html,
html type w3html,
end of tt_html.
data: list_tab type standard table of abaplist.
SELTAB-SELNAME = 'S_INVNO'.
SELTAB-KIND = 'S'.
SELTAB-SIGN = 'I'.
SELTAB-OPTION = 'EQ'.
SELTAB-LOW = INVOICE_NUM1.
SELTAB-HIGH = INVOICE_NUM2.
APPEND SELTAB.
submit ZSDRDINVPNBRPT with selection-table seltab
exporting list to memory and return.
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = MTAB_REPORT_LIST
EXCEPTIONS
not_found = 1
OTHERS = 2.
CALL FUNCTION 'WRITE_LIST'
EXPORTING
WRITE_ONLY = 'X'
TABLES
listobject = MTAB_REPORT_LIST
EXCEPTIONS
EMPTY_LIST = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'WWW_LIST_TO_HTML'
TABLES
HTML = MTAB_REPORT_HTML
EXCEPTIONS
OTHERS = 1.
LOOP AT MTAB_REPORT_HTML.
ENDLOOP.For displaying output in html format,
u can either use BSP ( Business Server Pages)
or Webdynpro.
Reward if helpful.
Maybe you are looking for
-
I have a new Unity server (MCS-7825-I2) that I began to load Unity on when I encountered a hardware error on the server. I pulled the cover and all the fan error LEDs are lit... Fan 1-5. I found this odd that all would fail. Is tehre a reset of these
-
Still images not sharp . . .
I have a sharp, still image I made with my Canon 5D. After I add it to FCE, and rendere it, it looses a great deal of sharpness, it's barely acceptable. And when mixed with my AVCHD footage, it definitely looks inferior. when I add the same image to
-
Itunes store is saying my network is not connected even though it is. I tunes opens but when I go to the store I get that error. Help. I am using windows XP.
-
Order of update rules execution of multiple key figures
Can anyone explain the order in which update rules execute if I have 10 key figures and defined one update routine for each key figure?
-
Required HUs could not be found
Hi Gurus, Whn iam going to delievry, system is giving this below information message, *Required HUs could not be found* *Message no. HUDIALOG 014* We have configartion setting to not to display this information message? or how to go about it ? We hav