Calling a Smartform from different driver programs
Hi everyone,
I have two driver programs and from both these programs i'm calling the same Smartform.
I have a field in smartform. and i want it to be printed for one program but not printed when the
smartform is called from the second program.
Pls. can anyone help me out about how this can be achieved.
Thanks in advance.
Regards
Tanu
Create an import parameter (flag) in your smartform interface and when you call your smartform from one of these drivers pass assume 'X' value to this flag. And add a condition for the field you want to hide. like below.
if flag = 'X'
show or don't show.
endif.
Edited by: Gungor Ozcelebi on Jul 3, 2009 5:08 PM
Similar Messages
-
Can we call multiple Smartforms from single Driver Prog?
Hi all,
Can we call multiple smartforms from single Driver Program. Here Driver program is custom Program.
I want to give Print Parameter only once and output should get printed one after the another smartform in same order of smarforms were called.
If yes, then how?
Thanks in advance.Yes, you can do this in your Smartform driver program.
Each time you call you Smartform function module you will need to change the values in structure OUTPUT_OPTIONS slightly.
On the first call set TDNEWID to X.
After this, set it to space
On the last form set TDFINAL to X.
This will put all of the output into one spool request, in the order they are called in the program.
Regards,
Nick -
Calling a Smartform through a driver program.
Hi ALL,
I had created a smart-form and executed it without any errors.
Since its create a FM, which can be called by driver Program,when i called the smart-form FM from the driver program I get a Pop-up asking for the OUTPUT DEVICE. When we enter a device name its executed properly and can see the print preview of the form.
My concern is to avoid that pop up, by giving the device value in the program itself. To do so it provided a options though which i can send the device type.
these are the values which i have passed.
outop-TDTITLE = 'testing for title'.
outop-xdfoutdev = 'LP01'. "output device type
cparam-getotf = 'X'.
cparam-no_dialog = 'X'.
cparam-preview = ' '.
CALL FUNCTION fm_name "FM for smart-form.
EXPORTING
control_parameters = cparam
output_options = outop
* user_settings = 'X'
*** IMPORTING
** job_output_info = tab_otf_data
* EXCEPTIONS
* formatting_error = 1
* internal_error = 2
* send_error = 3
* user_canceled = 4
* OTHERS = 5.
Can you tell where am I going wrong, so that can avoid that window.
Thanks,
Lalitkumar.Hi shivendran,
I tried the mentioned code by mentioned by you. but still the issue exists that is the popup for output device.
DATA:fm_name TYPE rs38l_fnam.
DATA: ls_control_pars TYPE ssfctrlop,
ls_output_opt TYPE ssfcompop.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'z_smartform_test'
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
ls_output_opt-tddest = 'LP01'.
ls_output_opt-tdimmed = 'X'.
ls_control_pars-no_dialog = 'X' .
CALL FUNCTION fm_name
EXPORTING
control_parameters = ls_control_pars
output_options = ls_output_opt
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
this is code which i tried to call my amartform from driver program.
I tried assigning the default output device by
open a session:
Clickon the system menu->user profile -> own data
then goto the defaults tab. in the spool control section maintain output device (your printer name where you want to print)
but still the problem exists.
Please help to resolve this issue.
Thanks,
Lalitkumar. -
Problem in Calling a smartform in a driver program(SE38)
Hi,
I created a report in SE38 and i have a 5 CHECK Boxes. i called a smartformsin that program.
My problem is if i check the 5 check boxes the layout should show 5 copies.
if i check 3 check boxes the layout should show 3 copies. e.t.c.
Edited by: vijay krishna on Jul 12, 2008 9:47 AMHi amit,
thanks for this code.
But i am using this code. i have 3 check boxes as vendor , gatepass , office copies
if i select this 3 check box i want the three copies of there repective copy heading like in first page Vendor copy , in 2nd copy gatepass copy e.t.c.
w_formname = 'Z_MM_REP_GATEPASS'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = w_formname
IMPORTING
fm_name = w_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
call function w_fm_name
exporting
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS =
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
OUTPUT_OPTIONS = tdcopies
USER_SETTINGS = 'X'
s_bukrs = v_bukrs
s_mblnr = p_mblnr
s_mjahr = p_mjahr
s_data = p_data
s_lifnr = v_lifnr
s_nrgp = r_nrgp
s_rgp = r_rgp
s_gp = r_gp
s_gpcc = r_gpcc
s_chal = r_chal
s_truck = p_truck
s_date = p_date
s_freight = p_freigh
coun = var
IMPORTING
DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO =
JOB_OUTPUT_OPTIONS =
tables
s_itab = ITAB[]
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
Edited by: vijay krishna on Jul 12, 2008 1:17 PM
Edited by: vijay krishna on Jul 12, 2008 2:37 PM -
Can we call a bdc from a report program?
hi
Can we call a bdc from a report program?
Thanks
RamaHello,
Yes..
Check this example:
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA : L_EBELN TYPE EKPO-EBELN,
L_EBELP TYPE EKPO-EBELP.
DATA : L_DATE1 TYPE SY-DATUM,
L_DATE2 TYPE SY-DATUM,
L_YEAR(4),
L_MONTH(2),
L_DATE(2).
DATA: L_AMOUNT1 LIKE RK40C-WTGBTR.
DATA: L_POSID_OLD TYPE PS_POSID.
DATA: L_POSID_NEW TYPE PS_POSID.
DATA: LS_COBK LIKE COBK.
DATA: LT_ITEMS LIKE RK40C OCCURS 0 WITH HEADER LINE,
LT_COEP LIKE COEP OCCURS 0 WITH HEADER LINE,
LT_COEPL LIKE COEPL OCCURS 0 WITH HEADER LINE,
LT_COEPR LIKE COEPR OCCURS 0 WITH HEADER LINE,
LT_MESG LIKE MESG OCCURS 0 WITH HEADER LINE.
DATA: LV_NUM TYPE POSNR_ACC VALUE '1'.
DATA: CD_SEND_REC_REL LIKE COHEADER-SEND_REC_REL,
LD_STATUS LIKE RK23F-STATUS.
DATA: L_DYNNR LIKE FELD-DYNNR.
CLEAR : L_DATE,L_DATE1,L_DATE2,L_YEAR,L_MONTH.
L_DATE1 = SY-DATUM.
L_YEAR = L_DATE1(4).
L_MONTH = L_DATE1+4(2).
L_DATE = L_DATE1+6(2).
CONCATENATE L_DATE L_MONTH L_YEAR INTO L_DATE2 .
CASE R_UCOMM.
WHEN '&IC1'. "doubleclick
CHECK RS_SELFIELD-FIELDNAME = 'EBELN'.
READ TABLE G_T_FINAL INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
READ TABLE G_T_TEMP WITH KEY LOGNUM = G_T_FINAL-LOGNUM.
IF SY-SUBRC = 0.
MESSAGE I899(KB) WITH TEXT-004.
ELSE.
CLEAR : L_EBELN,L_EBELP,LS_COBK,LT_ITEMS,G_T_BDC,G_T_MESSAGE,
CD_SEND_REC_REL,LD_STATUS.
REFRESH: LT_ITEMS,G_T_BDC,G_T_MESSAGE.
SET PARAMETER ID 'BES' FIELD G_T_FINAL-EBELN.
GET PARAMETER ID 'BES' FIELD L_EBELN.
SET PARAMETER ID 'BSP' FIELD G_T_FINAL-EBELP.
GET PARAMETER ID 'BSP' FIELD L_EBELP.
SORT G_T_FINAL BY EBELN EBELP.
READ TABLE G_T_FINAL WITH KEY EBELN = L_EBELN
EBELP = L_EBELP
BINARY SEARCH.
IF SY-SUBRC = 0.
LS_COBK-KOKRS = G_T_FINAL-KOKRS.
LS_COBK-GJAHR = SY-DATUM+0(4).
LS_COBK-VRGNG = 'RKU1'.
LS_COBK-PERAB = SY-DATUM+4(2).
LS_COBK-PERBI = SY-DATUM+4(2).
LS_COBK-BLDAT = SY-DATUM.
LS_COBK-BUDAT = SY-DATUM.
LS_COBK-CPUDT = SY-DATUM.
LS_COBK-USNAM = SY-UNAME.
LS_COBK-WSDAT = SY-DATUM.
LS_COBK-KURST = 'M'.
LS_COBK-VARNR = '05SAP'.
LS_COBK-KWAER = G_T_FINAL-WAERS.
LS_COBK-CPUTM = SY-UZEIT.
CLEAR : L_POSID_OLD,L_POSID_NEW.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
EXPORTING
INPUT = G_T_FINAL-POSID_NEW
IMPORTING
OUTPUT = L_POSID_NEW.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
EXPORTING
INPUT = G_T_FINAL-POSID_OLD
IMPORTING
OUTPUT = L_POSID_OLD.
L_AMOUNT1 = G_T_FINAL-AMOUNT.
LT_ITEMS-ZLENR = LV_NUM.
LT_ITEMS-EPSPNR = L_POSID_NEW.
LT_ITEMS-SPSPNR = L_POSID_OLD.
LT_ITEMS-KSTAR = G_T_FINAL-KSTAR.
LT_ITEMS-WAERS = G_T_FINAL-WAERS.
LT_ITEMS-WTGBTR = L_AMOUNT1.
LT_ITEMS-WKGBTR = L_AMOUNT1.
APPEND LT_ITEMS.
CLEAR: LT_ITEMS.
* For reposting the Cost
CHECK NOT LT_ITEMS[] IS INITIAL.
CALL FUNCTION 'K40C_COBK_CHECK_POST'
CHANGING
ITCOBK = LS_COBK
EXCEPTIONS
PERIOD_BLOCKED = 1
EXTERNAL_NUMBER_MISSING = 2
ERROR_OCCURED = 3.
IF SY-SUBRC IS INITIAL.
CALL FUNCTION 'K40C_DOCUMENT_LINE_CHECK'
EXPORTING
DOC_HEADER = LS_COBK
IGNORE_WARNINGS = 'X'
TABLES
DOC_ITEMS = LT_ITEMS.
*...Create Tables for database
CALL FUNCTION 'K40C_DOCUMENT_CREATE'
EXPORTING
DOC_HEADER = LS_COBK
TABLES
DOC_ITEMS = LT_ITEMS
ITCOEP = LT_COEP
ITCOEPL = LT_COEPL
ITCOEPR = LT_COEPR.
CALL FUNCTION 'K40C_DOCUMENT_POST'
TABLES
ITCOEP = LT_COEP
ITCOEPL = LT_COEPL
ITCOEPR = LT_COEPR
CHANGING
DOC_HEADER = LS_COBK.
ENDIF.
ENDIF.
IF SY-SUBRC = 0.
GET PARAMETER ID 'KBXXN_P_VAR_RKU1' FIELD CD_SEND_REC_REL.
GET PARAMETER ID 'KBXX_START_DYNPRO' FIELD LD_STATUS.
IF CD_SEND_REC_REL IS INITIAL AND LD_STATUS IS INITIAL.
CLEAR L_DYNNR.
L_DYNNR = '1220'.
PERFORM BDC_DYNPRO USING 'SAPLK23F1' '1200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COHEADER-SEND_REC_REL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PVAR'.
PERFORM BDC_FIELD USING 'COHEADER-SEND_REC_REL'
'05SAP'.
PERFORM BDC_FIELD USING 'RK23F-STATUS'
'L'.
PERFORM BDC_FIELD USING 'COHEADER-BLDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-BUDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-PERIO'
L_MONTH.
PERFORM BDC_DYNPRO USING 'SAPLK23F1' '1200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RK23F-STATUS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=LISI'.
PERFORM BDC_FIELD USING 'COHEADER-SEND_REC_REL'
'05SAP'.
PERFORM BDC_FIELD USING 'RK23F-STATUS'
'S'.
PERFORM BDC_FIELD USING 'COHEADER-BLDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-BUDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-PERIO'
L_MONTH.
PERFORM FILL_BDC_SCREEN USING L_DYNNR L_DATE2 L_MONTH.
ENDIF.
IF CD_SEND_REC_REL EQ '05SAP' AND LD_STATUS EQ 'S'.
CLEAR L_DYNNR.
L_DYNNR = '1220'.
PERFORM FILL_BDC_SCREEN USING L_DYNNR L_DATE2 L_MONTH.
ELSEIF CD_SEND_REC_REL EQ '05SAP' AND LD_STATUS EQ 'L'.
CLEAR L_DYNNR.
L_DYNNR = '1220'.
PERFORM BDC_DYNPRO USING 'SAPLK23F1' L_DYNNR.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RK23F-STATUS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=LISI'.
PERFORM BDC_FIELD USING 'COHEADER-SEND_REC_REL'
'05SAP'.
PERFORM BDC_FIELD USING 'RK23F-STATUS'
'S'.
PERFORM BDC_FIELD USING 'COHEADER-BLDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-BUDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-PERIO'
L_MONTH.
PERFORM FILL_BDC_SCREEN USING L_DYNNR L_DATE2 L_MONTH.
ELSEIF CD_SEND_REC_REL NE '05SAP' AND LD_STATUS EQ 'S'.
CASE CD_SEND_REC_REL.
WHEN '01SAP' OR '02SAP' OR '04SAP' OR '08SAP' OR '09SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1220'.
WHEN '03SAP' OR '07SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1230' .
WHEN '06SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1210'.
WHEN '10SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1270'.
ENDCASE.
PERFORM BDC_DYNPRO USING 'SAPLK23F1' L_DYNNR.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COHEADER-SEND_REC_REL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PVAR'.
PERFORM BDC_FIELD USING 'COHEADER-SEND_REC_REL'
'05SAP'.
PERFORM BDC_FIELD USING 'RK23F-STATUS'
'S'.
PERFORM BDC_FIELD USING 'COHEADER-BLDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-BUDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-PERIO'
L_MONTH.
PERFORM BDC_FIELD USING 'RK23F-WAERS'
'EUR'.
PERFORM FILL_BDC_SCREEN USING L_DYNNR L_DATE2 L_MONTH.
ELSEIF CD_SEND_REC_REL NE '05SAP' AND LD_STATUS EQ 'L'.
CASE CD_SEND_REC_REL.
WHEN '01SAP' OR '02SAP' OR '04SAP' OR '08SAP' OR '09SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1220'.
WHEN '03SAP' OR '07SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1230' .
WHEN '06SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1210'.
WHEN '10SAP'.
CLEAR L_DYNNR.
L_DYNNR = '1270'.
ENDCASE.
PERFORM BDC_DYNPRO USING 'SAPLK23F1' '1200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'COHEADER-SEND_REC_REL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PVAR'.
PERFORM BDC_FIELD USING 'COHEADER-SEND_REC_REL'
'05SAP'.
PERFORM BDC_FIELD USING 'RK23F-STATUS'
'L'.
PERFORM BDC_FIELD USING 'COHEADER-BLDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-BUDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-PERIO'
L_MONTH.
PERFORM BDC_DYNPRO USING 'SAPLK23F1' '1200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RK23F-STATUS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=LISI'.
PERFORM BDC_FIELD USING 'COHEADER-SEND_REC_REL'
'05SAP'.
PERFORM BDC_FIELD USING 'RK23F-STATUS'
'S'.
PERFORM BDC_FIELD USING 'COHEADER-BLDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-BUDAT'
L_DATE2.
PERFORM BDC_FIELD USING 'COHEADER-PERIO'
L_MONTH.
PERFORM FILL_BDC_SCREEN USING L_DYNNR L_DATE2 L_MONTH.
ENDIF.
CALL TRANSACTION 'KB11N' USING G_T_BDC MODE G_MODE MESSAGES
INTO G_T_MESSAGE.
IF NOT G_T_MESSAGE[] IS INITIAL.
READ TABLE G_T_MESSAGE WITH KEY MSGTYP = 'S'.
IF SY-SUBRC = 0.
DELETE FROM BALHDR WHERE LOGNUMBER = G_T_FINAL-LOGNUM AND
OBJECT = G_T_FINAL-OBJECT AND
SUBOBJECT = G_T_FINAL-SUBOBJECT.
COMMIT WORK.
G_T_TEMP = G_T_FINAL.
APPEND G_T_TEMP.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
CLEAR G_T_MESSAGE.
REFRESH G_T_MESSAGE.
*refresh g_t_bdc.
CLEAR G_T_BDC.
REFRESH G_T_BDC.
ENDIF.
ENDCASE.
ENDFORM. " USER_COMMAND
Vasanth -
Calling two smartforms in one Abap program
Hi ABAPers,
Can anybody know how to call 2 smartforms in 1 abap program?actually i used the FM SSF_FUNCTION_MODULE_NAME...and two smart forms are called...but my main problem is...the first smartforms is called and the print dialog box appeared...once i click the button back ...the second smartforms is called and print dialog box appeared again..
I want to correct this...i want this to be happen once i click the print button...the two smart forms will be combined in a one printing...meaning the first page is the first smartforms and the next page will be the second smart forms...no matter how many pages will be the first smartforms...the second smartforms will concatenate or will append to the last page of the first smartforms..how can i do this?
Please help...this is my sample code..kindly correct the error.
Will reward points...
suppressing the dialog box****************************
outop-tddest = 'LP01'.
cparam-no_dialog = 'X'.
cparam-preview = space.
cparam-getotf = 'X'.
Call the First Smartforms *******************
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSF_CHEQUE'
IMPORTING
fm_name = ly_formname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
CALL FUNCTION ly_formname
EXPORTING
prepared_by = p_prepb
approved_by = p_apprb
TABLES
it_cheque = it_final
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
Call the Second Smartforms *******************
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSF_TSHEET'
IMPORTING
fm_name = ly_formname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
CALL FUNCTION ly_formname
EXPORTING
prepared_by = p_prepb
approved_by = p_apprb
TABLES
it_cheque = it_final
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
Thanks in advance
aVaDuDzhi,
i never used these function but i've found this link.
[http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/62ae7fcd-0b01-0010-3e9d-a54f26944450]
[http://help.sap.com/saphelp_nw2004s/helpdata/en/64/bf2f12ed1711d4b655006094192fe3/content.htm]
[http://help.sap.com/saphelp_nw04/helpdata/en/64/bf2f12ed1711d4b655006094192fe3/frameset.htm]
[SMartform printing;
hope that is useful.
bye
Marco
Edited by: nicolai marco on Jan 14, 2008 12:36 AM -
I need to call main window from a Standard program
I need to call main window from a Standard program for SAP Script. I have wrote the code like this but it is not working. Kindly help me on that.
FORM OPEN_AND_START_FORM
FORM open_and_start_form.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
device = 'PRINTER'
dialog = space
form = 'ZOTC_SLI'
language = print_co-spras
OPTIONS = pr_options
EXCEPTIONS
canceled = 01
device = 02
form = 03
OPTIONS = 04
unclosed = 05.
CHECK sy-subrc IS INITIAL.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
window = 'MAIN'.
ENDFORM. "OPEN_AND_START_FORM
FORM CLOSE_AND_END_FORM_FORM *
FORM close_and_end_form.
CALL FUNCTION 'END_FORM'.
ENDFORM. "CLOSE_AND_END_FORMHi,
FORM CLOSE_AND_END_FORM_FORM *
FORM close_and_end_form.
CALL FUNCTION 'END_FORM'.
change this to CALL FUNCTION 'close_FORM'.
as you are not using the start_form
you can use End_form
i hope you understand now
ENDFORM. "CLOSE_AND_END_FORM
reward points if helpful.
thanks & regards,
venkatesh -
Possibility of calling standard actions from a java program
Hi ,
I am working for a project where customer wants to have option of saving orders as draft only and later convert to order if need be. However since we do not want many drafts to reside on server there is a need to delete these at a specified time. For draft orders I am using order templates since they stay in the database without getting converted to orders. Now I do not know how to go about the deletion part.
i need to write a program that would run on the server and which would fetch the templates (drafts) that have been created till a particular time and call the delete action of the template. Now the question is how do i call these actions from a java program where this java program will have to run on the server end (ie will be a backend process).
Please suggest.
Thanks
Roopalihello roopali,
you can create a separate thread that will run your
code that will check for stale drafts and delete them.
it is just like a session management program but here
we will be looking over the drafts and not the session
objects.
now if you want the invocation of the action from another
program, a socket program would suffice but opening ports
will cause you network connections thru firewall.
if you can make use of HTTP servlet as your service
provider e.g., you can then just pass some action params
to invoke it.
regards
jo -
Calling OCX Methods from a Java Program
Hi All,
Is it possible to call OCX methods from a Java program? If yes, can you please refer me to any documents or sample code to achieve this.
All inputs are highly appreciated.
Thanks
TarekJNI
http://java.sun.com/docs/books/tutorial/native1.1/index.html -
Call two smartforms from two different print programs
Hi Sapiens,
I have a requirement that there are two different smartforms and they have there independent print programs.
Just wanted to know weather is it possible in SAP to merge those to smartforms and there print programs so that first smartform is displayed first and second smartform is printed at its back(duplex printing).
Regards
MilindHi,
You can use submit program in the first program to call the second program and
fetch the required interface data related to the second smartform and once u have the interface data
for both the programs then u can merge the both smartforms data and display them as one layout instead of displaying the two layouts in different formats.
For merging of data of both the smartforms u can do :Convert the output of first smartform into OTF format data then convert the data of second smartform into OTF table and append it to the first table .
Now u have the data of both the smartforms in one table then convert this OTF data into PDF format and create a spool request with the combined forms data.
Thanks,
M.Naveen Kumar. -
Passing data to custom smartform from a custom program...
Hello Gurus,
Since, the function module gets generated dynamically at runtime when smartform is activated, I know that first I should use "SSF_FUNCTION_MODULE_NAME" and pass custom smartform name to it to get the name of function module. Then I have to use call function '/XXXXXXXXX'.
Now, I am writing a custom code and I want the data from my select program in custom program to be passed to smartform ? How can I pass the data from my custom program to smartform ? Do I pass it before using function module "SSF_FUNCTION_MODULE_NAME" ? If yes, how ?
Regards,
Rajesh.hi,
u have to declare ur structures in form interface and can retrive the data from custom program.
check this sample code.
declare structure in interface.
WA_MKPF TYPE MKPF.
write ur custom code lik this.
DATA: wahz TYPE zmemigo_form_header,
wa_mkpf TYPE mkpf.
DATA: t_itemz LIKE zmemigo_form_item OCCURS 0,
t_mseg TYPE mseg OCCURS 0,
waitemz TYPE zmemigo_form_item,
waitem TYPE mseg.
DATA : form_name TYPE tdsfname VALUE 'ZPS_STN'.
DATA : fnc_module TYPE rs38l_fnam.
SELECT SINGLE mblnr INTO wa_mkpf-mblnr FROM mseg
CLIENT SPECIFIED WHERE mandt EQ sy-mandt
AND mblnr EQ p_mblnr
AND mjahr EQ p_mjahr
AND bwart EQ '351'
AND shkzg EQ 'H'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = form_name
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
fm_name = fnc_module
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3
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 fnc_module
EXPORTING
wa_headz = wahz
wa_mkpf = wa_mkpf
TABLES
it_itemz = t_itemz
it_mseg = t_mseg
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. -
Reg : SMARTFORM name and DRIVER PROGRAM
Dear Gurus,
Can anybody help me out in providing standard SMARTFORM name and also driver Program for
'ANNUAL MAINTENANCE CONTRACT CONFIRMATION' in CS(Customer Service) module.
Cheers,
Loverboy KHi,
there is on a standard system no smartform for you. So you have to do your thing with the standard sapscript.
However there have been some BestPractices projects at SAP. There they have a lot of standard smartforms. Maybe you can download them from SAP somewhere the name will something
with MMCON or MMDLS in it.
you have to find out yourself because i do not have it here to send it to you.
Gr., Frank -
Passing Value from a Driver Program
Hi,
How can i send a specific field's value alone to the form from driver program ?
we normally use write_form in Loop & end loop.
if i wanna send a value from one flied alone wat shud i do??
Pls help me...
Thank You.Hi
See the sample code for Subroutines and do accordingly
How to call a subroutine form SAPscripts
The Form :
/:PERFORM CDE_CENT IN PROGRAM ZKRPMM_PERFORM_Z1MEDRUCK
/:USING &EKKO-EBELN&
/:CHANGING &CDECENT&
/:ENDPERFORM
The report :
REPORT zkrpmm_perform_z1medruck .
DATA : BEGIN OF it_input_table OCCURS 10.
INCLUDE STRUCTURE itcsy.
DATA : END OF it_input_table.
déclaration de la table output_table contenant les
variables exportées
DATA : BEGIN OF it_output_table OCCURS 0.
INCLUDE STRUCTURE itcsy.
DATA : END OF it_output_table.
DATA : w_ebeln LIKE ekko-ebeln,
w_vbeln LIKE vbak-vbeln,
w_zcdffa LIKE vbak-zcdffa.
FORM CDE_CENT
FORM cde_cent TABLES input output.
it_input_table[] = input[].
it_output_table[] = output[].
READ TABLE it_input_table INDEX 1.
MOVE it_input_table-value TO w_ebeln.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = w_ebeln
IMPORTING
output = w_ebeln.
SELECT SINGLE zcdffa FROM ekko
INTO w_zcdffa
WHERE ebeln = w_ebeln.
it_output_table-name = 'CDECENT'.
MOVE w_zcdffa TO it_output_table-value.
MODIFY it_output_table INDEX 1.
output[] = it_output_table[].
ENDFORM.
REPORT ZMPO1 .
form get_freight tables in_par structure itcsy out_par structure itcsy.
tables: ekko,konv,t685t.
data: begin of itab occurs 0,
ebeln like ekko-ebeln,
knumv like ekko-knumv,
end of itab.
data: begin of itab1 occurs 0,
knumv like konv-knumv,
kposn like konv-kposn,
kschl like konv-kschl,
kbetr like konv-kbetr,
waers like konv-waers,
kwert like konv-kwert,
end of itab1.
data: begin of iout occurs 0,
kschl like konv-kschl,
vtext like t685t-vtext,
kbetr like konv-kbetr,
kwert like konv-kwert,
end of iout.
data v_po like ekko-ebeln.
read table in_par with key 'EKKO-EBELN'.
if sy-subrc = 0.
v_po = in_par-value.
select
ebeln
knumv
from ekko
into table itab
where ebeln = v_po.
if sy-subrc = 0.
loop at itab.
select
knumv
kposn
kschl
kbetr
waers
kwert
into table itab1
from konv
where knumv = itab-knumv and
kappl = 'M'.
endloop.
loop at itab1.
if itab1-kposn <> 0.
select single * from t685t
where kschl = itab1-kschl
and kappl = 'M'
and spras = 'EN'.
iout-vtext = t685t-vtext.
iout-kschl = itab1-kschl.
iout-kbetr = itab1-kbetr.
iout-kwert = itab1-kwert.
append iout.
clear iout.
endif.
endloop.
sort itab1 by kposn.
loop at iout.
sort iout by kschl.
if ( iout-kschl eq 'GSDC' OR
iout-kschl eq 'GSFR' OR
iout-kschl eq 'GSIR' ).
at end of kschl.
read table iout index sy-tabix.
sum.
write:/ iout-kschl,iout-vtext,iout-kwert.
out_par-name = 'A1'.
out_par-value = iout-vtext.
append out_par.
out_par-name = 'A2'.
out_par-value = iout-kwert.
append out_par.
endat.
endif.
endloop.
endif.
endif.
endform.
IN THE FORM I AM WRITING THIS CODE.
/:DEFINE &A1& = ' '
/:DEFINE &A2& = ' '
/:PERFORM GET_FREIGHT IN PROGRAM ZMFORM_PO1
/:USING &EKKO-EBELN&
/:CHANGING &A1&
/:CHANGING &A2&
/:ENDPERFORM
&A1&
&A2&
This Code is to be written in the PO form under ADDRESS window.
/:DEFINE &A1& = ' '
/:DEFINE &A2& = ' '
/:DEFINE &A3& = ' '
/:DEFINE &A4& = ' '
/:DEFINE &A5& = ' '
/:DEFINE &A6& = ' '
/:PERFORM GET_VENDOR IN PROGRAM ZMFORM_PO
/:USING &EKKO-EBELN&
/:CHANGING &A1&
/:CHANGING &A2&
/:CHANGING &A3&
/:CHANGING &A4&
/:CHANGING &A5&
/:CHANGING &A6&
/:ENDPERFORM
&A1&
&A2&
&A3&
&A4&
&A5&
&A6&
Reward points for useful Answers
Regards
Anji -
Calling a report from module pool program
Hi all,
I had a requirement where I need to call a report from the module pool program where in when we click REPORT button, it should display the report output in the another screen.
Can we do by calling screen after pushing REPORT button. If so, where we should write that code ( In pbo or pai). Please give me an idea.
Thanking you,
Regards,
Murali Krishna TUse submit syntax.
Press F1 on submit, Donot use return statement with it.
If so, where we should write that code ( In pbo or pai).
Please understand about these two events before doing the requirement. -
Need to call OAF API from JAVA concurrent program
Hi Gurus,
I am trying invoke an OAF Application method which generate the Batch ID. I am trying the invoke the same from JAVA Concurrent program. Below is teh code used,
package oracle.apps.ego.item.cp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import oracle.apps.ego.item.common.server.EgoBatchHeader;
import oracle.apps.ego.item.itemimport.server.EgoImportBatchHeaderAMImpl;
import oracle.apps.fnd.cp.request.CpContext;
import oracle.apps.fnd.cp.request.JavaConcurrentProgram;
import oracle.apps.fnd.cp.request.LogFile;
import oracle.apps.fnd.cp.request.OutFile;
import oracle.apps.fnd.cp.request.ReqCompletion;
import oracle.jbo.ApplicationModule;
import oracle.jbo.ApplicationModuleCreateException;
import oracle.jbo.ApplicationModuleHome;
import oracle.jbo.JboContext;
import oracle.jbo.domain.Number;
import oracle.jdbc.internal.OracleCallableStatement;
public class XX_EGO_BATCH_CREATE implements JavaConcurrentProgram {
static LogFile log = null;
public void runProgram(CpContext ctx){
//Obtain the reference to the Output file for Concurrent Prog
OutFile out = ctx.getOutFile();
EgoBatchHeader v_header = new EgoBatchHeader();
//Obtain the reference to the Log file for Concurrent Prog
log = ctx.getLogFile();
log.writeln("Batch Number Creation", 0);
ApplicationModule am = null;
try{
//Write your logic here
log.writeln("Batch Number Creation", 0);
log.writeln("definition of batch num",0);
Number batch_num;
Number ssid = new Number(10000);
String jdbcUrl =
"jdbc:oracle:thin:apps/[email protected]:10201:ARERP4";
ApplicationModule am_Member = null;
log.writeln("Before Calling Create method",0);
am_Member =
create("oracle.apps.ego.item.itemimport.server.EgoImportBatchHeaderAMImpl",
jdbcUrl);
log.writeln("assigning ssid"+ssid,0);
EgoImportBatchHeaderAMImpl bheader = new EgoImportBatchHeaderAMImpl();
log.writeln("bheader object is :"+bheader,0);
log.writeln("calling getBatchObjectForCreate"+bheader,0);
v_header = bheader.getBatchObjectForCreate(ssid);
//System.out.println("v_header is :" + v_head);
log.writeln("calling createBatch"+v_header,0);
batch_num = bheader.createBatch(v_header);
log.writeln("Batch Number is :"+batch_num ,0);
out.writeln("This will be printed to the Output File");
log.writeln("This will be printed to the Log File", 0);
//Request the completion of this Concurrent Prog
//This step will signal the end of execution of your Concurrent Prog
ctx.getReqCompletion().setCompletion(ReqCompletion.NORMAL,"Completed.");
//Handle any exceptional conditions
catch(Exception e){
log.writeln("Exception2 occurred here !!"+e,0);
log.writeln("calling createBatch"+v_header,0);
public static ApplicationModule create(String amDefName,
String jdbcConnStr) throws ApplicationModuleCreateException, Exception {
ApplicationModule am = null;
try {
OracleCallableStatement conn = null;
// Setup the hashtable of JNDI initialization parameters
log.writeln("inside create method .. ",0);
Hashtable env = new Hashtable(2);
env.put(Context.INITIAL_CONTEXT_FACTORY,
JboContext.JBO_CONTEXT_FACTORY);
env.put(JboContext.DEPLOY_PLATFORM, JboContext.PLATFORM_LOCAL);
// Create an JNDI initial context
Context ic;
ic = new InitialContext(env);
// Lookup a home interface (factory) for the AppModule by name
ApplicationModuleHome home =
(ApplicationModuleHome)ic.lookup(amDefName);
if(home==null){
log.writeln("home is null... .",0);
}else{
log.writeln("home is not null"+home,0);
// Create an instance of the AppModule using the home/factory
am = home.create();
if(am!=null){
log.writeln("am is not null"+am,0);
}else{
log.writeln("am is null",0);
// Connect the application module to the database
am.getTransaction().connect(jdbcConnStr);
} catch (NamingException ex) {
log.writeln("NamingException occurred here !!"+ex.getMessage(),0);
ex.printStackTrace();
throw new ApplicationModuleCreateException(ex);
}catch(Exception ex){
log.writeln("Exception occurred here !!"+ex.getMessage(),0);
ex.printStackTrace();
throw new Exception(ex);
return am;
I am not able to call the web server and facing issues. Please let me know if you can help me to get a solution to this.
Thanks in advance
VeerendraHi Zafar,
I got an error saying :
Batch Number Creation
Batch Number Creation
definition of batch num
Before Calling Create method
inside create method ..
home is not nulloracle.jbo.server.ApplicationModuleHomeImpl@11d2572
Jul 9, 2008 5:04:21 AM oracle.adf.share.config.ADFConfigFactory findOrCreateADFConfig
INFO: oracle.adf.share.config.ADFConfigFactory No META-INF/adf-config.xml found
Exception occurred here !!JBO-25002: Definition oracle.apps.ego.item.itemimport.server.EgoImportBatchHeaderAMImpl of type ApplicationModule not found
oracle.jbo.NoDefException: JBO-25002: Definition oracle.apps.ego.item.itemimport.server.EgoImportBatchHeaderAMImpl of type ApplicationModule not found
at oracle.jbo.mom.DefinitionManager.findDefinitionObject(DefinitionManager.java:441)
at oracle.jbo.mom.DefinitionManager.findDefinitionObject(DefinitionManager.java:358)
at oracle.jbo.mom.DefinitionManager.findDefinitionObject(DefinitionManager.java:340)
at oracle.jbo.server.MetaObjectManager.findMetaObject(MetaObjectManager.java:700)
at oracle.jbo.server.ApplicationModuleDefImpl.findDefObject(ApplicationModuleDefImpl.java:232)
at oracle.jbo.server.ApplicationModuleImpl.createRootApplicationModule(ApplicationModuleImpl.java:401)
at oracle.jbo.server.ApplicationModuleHomeImpl.create(ApplicationModuleHomeImpl.java:91)
at oracle.apps.ego.item.cp.XX_EGO_BATCH_CREATE.create(XX_EGO_BATCH_CREATE.java:139)
at oracle.apps.ego.item.cp.XX_EGO_BATCH_CREATE.runProgram(XX_EGO_BATCH_CREATE.java:57)
at oracle.apps.fnd.cp.request.Run.main(Run.java:157)
Exception2 occurred here !!java.lang.Exception: oracle.jbo.NoDefException: JBO-25002: Definition oracle.apps.ego.item.itemimport.server.EgoImportBatchHeaderAMImpl of type ApplicationModule not found
calling [email protected]9c
Maybe you are looking for
-
I have old pictures in my external drive that I filled up. I would like to make another iphoto library in a new external drive and have this one for new pictures. Can I do that? And how will I be able to see my old pictures on my older external dri
-
Hi, I have to post the data from Flat File to SAP using IDOC. Please help me out with all the posibilities. Regards, Kiran.L
-
HT1918 Changing regions in iTunes
I recently moved so I was trying to change my region in iTunes but it said I had rentals that haven't expired. The last item I rented expired 6 days ago. How can I get rid of this error and try to change my region?
-
Notifications panel doesn't open on ZTE Open version B2G 1.3.0.0-prerelease
My Notification panel isn't opening. I'm running the latest version of FFOS, I updated today. A previous version of a few days ago had the same problem. The original version I got with the phone, I think it was v1.1 didn't have this problem. So is th
-
Test Stand Shut Down with no reason
Hello , I'm using Test Stand 4.2 & LabWindows CVI 9.0 . I'v created a program that checks 30 cards in Batch mode , using Test Stand as master that calls CVI functions from dll files i'v created . In the program there are no error nor warnings But i h