Handling errors nicely in logoff called procedure
I have a logoff trigger that calls an autonomous tx procedure which purpose is to collect program names and session stats (resource consumption) for some basic session profiling and accounting.
To catch any error that otherwise could lead to unclean logoff (and failing to collect data), this procedure has a call to ksdwrt, which dumps a trace file (and also posts to alert.log). This tracing can become a problem if there's a 'frequent' error e.g. usually a full tablespace - creating files and a couple of rows in alert.log each second or so...
I'm thinking I will remove the call in the handler, and dont know any better than to replace it with a null; call. Any ideas on how to do it differently?
Use an inner block to handle the exception.
CREATE OR REPLACE PROCEDURE p_mc_ips
(lDate IN DATE)
IS
BEGIN
FOR lrec IN (SELECT DISTINCT a.title title,b.machine_ip machine_ip
FROM job_list a,td b
WHERE a.jobnumber = b.jobno
AND b.act_date = TO_CHAR(ldate,'DD-MON-YYYY'))
LOOP
BEGIN
INSERT INTO net_address(p_inv,machine_ips)
VALUES(lrec.title, lrec.machine_ip);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE('DUPLICATE RECORDS EXISTS');
END;
END LOOP;
COMMIT;
END p_mc_ips;You'll have noticed that I've streamlined your code a bit. We'll save using FORALL and anti-joins for another day ;)
Cheers, APC
Similar Messages
-
Hi,
I have an Error Handling scenario that works this way:
1) All ORACLE errors that happens in a FUNCTION are stored in a table. With this code:
EXCEPTION
/* IF ORACLE error, then return PROCEDURE NAME and ORACLE error message
back to CALLING procedure (Parent) */
WHEN OTHERS THEN
IF SQLERRM IS NOT NULL THEN
INSERTERRORMSG(p_error_Message_ID, V_PROC_NAME, c_ORACLEERRORFAILURE, NULL, V_PROC_NAME||' '||SQLERRM);
RETURN FALSE;
END IF;
END;2) At the PARENT level (PROCEDURE), The content of the ERROR table is displayed with the help of a PROCEDURE.
My question is:
Will all the ORACLE errors be caught by the EXCEPTION identified at 1), even though there's ONLY an OTHERS defined?
Thanks in advance,
Marc.There's one thing that worries me about this piece of code:
EXCEPTION
/* IF ORACLE error, then return PROCEDURE NAME and ORACLE error message
back to CALLING procedure (Parent) */
When OTHERS then
IF SQLERRM is not null
THEN
INSERTERRORMSG(P_ERROR_MESSAGE_ID,v_proc_name,c_oracleErrorFailure,null,v_proc_name||' '||SQLERRM);
RETURN FALSE;
END IF;Could it be possible that SQLERRM is NULL, for whatever reason?
If that is the case, the INSERTERRORMSG and RETURN FALSE will never get executed !!!
Thanks,
Marc. -
Exception handling in calling procedure
Hi,
i have a package where currently am making calls to private procedures from public procedure.
and the senario is:-
create package body p_tst
is
ex_failed exception;
-- this is private proc
procedure p_private
is
begin
raise ex_failed;
exception
when ex_failed
then
raise;
end p_private;
procedure p_public
is
begin
-- nomaking call to private
-- procedure
p_private;
-- here i need to catch
-- the raised exception
-- passed from the called
-- procedure
when ex_failed
end p_public;
end;
basically i want to catch the exception being passed from called procedure to calling procedure, and raise the same exception in calling procdure.
is it possible to catch the same exception in the calling procedure?Yes, you can catch the same exception in the calling procedure, exceptions are propagated to the caller if they are not handled in the called procedure.
Is this what you are trying to do?
CREATE OR REPLACE PACKAGE p_tst
AS
PROCEDURE p_public;
ex_failed EXCEPTION;
END;
CREATE OR REPLACE PACKAGE BODY p_tst
IS
PROCEDURE p_private
IS
BEGIN
RAISE ex_failed;
END p_private;
PROCEDURE p_public
IS
BEGIN
p_private;
EXCEPTION
WHEN ex_failed
THEN
DBMS_OUTPUT.put_line ('error');
END p_public;
END;
SQL> set serveroutput on;
SQL> exec p_tst.p_public;
error
PL/SQL procedure successfully completed. -
In call transaction how can we handle error records.
hai..tellme how can we handle error records in call transaction..we can get error records into one flatfile ok...then we have to execute the same bdc program with dat flat file (error records) once again...is it wright ..
Hi,
check this program u will get idea
seee this prog. its will help u .
copy and run this prog.
TYPES : BEGIN OF t_disp ,
vendorno(9),
compcc(13),
purchorg(14),
accgroup(15),
title(7),
name(5),
country(8),
ordcurr(14),
END OF t_disp.
TYPES : BEGIN OF t_err,
msgtyp LIKE bdcmsgcoll-msgtyp,
l_mstring(250),
END OF t_err.
DATA: i_disp TYPE STANDARD TABLE OF t_disp,
wa_disp TYPE t_disp,
i_err TYPE STANDARD TABLE OF t_err,
wa_err TYPE t_err.
data definition
Batchinputdata of single transaction
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
messages of call transaction
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
error session opened (' ' or 'X')
DATA: e_group_opened.
message texts
TABLES: t100.
PARAMETER : p_file1 LIKE ibipparms-path,
p_cmode LIKE ctu_params-dismode DEFAULT 'N'.
"A: show all dynpros
"E: show dynpro on error only
"N: do not display dynpro
*selction screen.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file1.
AT SELECTION-SCREEN ON p_file1.
IF p_file1 IS INITIAL.
MESSAGE 'FILE IS NOT FOUND' TYPE 'E'.
ENDIF.
START-OF-SELECTION.
PERFORM f_disp_file1.
END-OF-SELECTION.
PERFORM f_disp_errs.
*& Form F_DISP_FILE1
text
--> p1 text
<-- p2 text
FORM f_disp_file1 .
DATA: l_filename1 TYPE string.
MOVE p_file1 TO l_filename1.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = l_filename1
filetype = 'ASC'
has_field_separator = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
data_tab = i_disp
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*? prepare BDC data
DELETE i_disp INDEX 1.
LOOP AT i_disp INTO wa_disp .
PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF02K-LIFNR'
wa_disp-vendorno.
'ztest_1'.
PERFORM bdc_field USING 'RF02K-BUKRS'
wa_disp-compcc.
'0001'.
PERFORM bdc_field USING 'RF02K-EKORG'
wa_disp-purchorg.
'0001'.
PERFORM bdc_field USING 'RF02K-KTOKK'
wa_disp-accgroup.
'0001'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_field USING 'LFA1-ANRED'
wa_disp-title.
'Mr.'.
PERFORM bdc_field USING 'LFA1-NAME1'
wa_disp-name.
'test name'.
PERFORM bdc_field USING 'LFA1-SORTL'
'TEST NAME'.
PERFORM bdc_field USING 'LFA1-LAND1'
wa_disp-country.
'in'.
PERFORM bdc_field USING 'LFA1-SPRAS'
'en'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0210'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB1-AKONT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0215'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB1-ZTERM'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0220'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB5-MAHNA'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0310'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFM1-WAERS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=UPDA'.
PERFORM bdc_field USING 'LFM1-WAERS'
wa_disp-ordcurr.
'inr'.
PERFORM bdc_transaction USING 'XK01'.
WRITE:/ WA_DISP-VendorNo,
WA_DISP-COMPCC,
WA_DISP-PURCHORG,
WA_DISP-ACCGROUP,
WA_DISP-title,
WA_DISP-name,
WA_DISP-country,
WA_DISP-ORDCURR.
CLEAR: wa_disp.
REFRESH bdcdata.
ENDLOOP.
ENDFORM. " F_DISP_FILE1
Start new screen *
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
Insert field *
FORM bdc_field USING fnam fval.
IF FVAL NODATA.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
*& Form bdc_transaction
text
-->P_0322 text
FORM bdc_transaction USING tcode.
DATA: l_mstring(480),
l_subrc LIKE sy-subrc.
REFRESH messtab.
CALL TRANSACTION tcode USING bdcdata
MODE p_cmode
UPDATE 'L'
MESSAGES INTO messtab.
l_subrc = sy-subrc.
IF SMALLLOG 'X'.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'returncode:'(I05),
L_SUBRC,
'RECORD:',
SY-INDEX.
LOOP AT messtab.
SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
AND arbgb = messtab-msgid
AND msgnr = messtab-msgnr.
IF sy-subrc = 0.
l_mstring = t100-text.
IF l_mstring CS '&1'.
REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
WRITE: / messtab-msgtyp, l_mstring(250).
*? Send this errors to err internal table
wa_err-msgtyp = messtab-msgtyp.
wa_err-l_mstring = l_mstring.
APPEND wa_err TO i_err.
ELSE.
WRITE: / messtab.
ENDIF.
CLEAR: messtab, wa_err.
ENDLOOP.
SKIP.
ENDIF.
ENDFORM. " bdc_transaction
*& Form f_disp_errs
text
--> p1 text
<-- p2 text
FORM f_disp_errs .
SORT i_err BY msgtyp.
LOOP AT i_err INTO wa_err.
AT FIRST.
WRITE : / text-002.
ULINE.
ENDAT.
AT NEW msgtyp.
IF wa_err-msgtyp = 'S'.
WRITE : / text-003.
ULINE.
ELSEIF wa_err-msgtyp = 'E'.
WRITE : / text-001.
ULINE.
ENDIF.
ENDAT.
WRITE : / wa_err-msgtyp, wa_err-l_mstring.
CLEAR wa_err.
ENDLOOP.
ENDFORM. " f_disp_errs
Regards -
Hi guys please give me sample code for call transaction that handles error
hi guys, please give me sample code for call transaction that handles error,
please send me the sample code in which there should be all decleration part and everything, based on the sample code i will develop my code.
please do help me as it is urgent.
thanks and regards.
prasadnn.Hi Prasad,
Check this code.
Source Code for BDC using Call Transaction
*Code used to create BDC
*& Report ZBDC_EXAMPLE *
*& Example BDC program, which updates net price of item 00010 of a *
*& particular Purchase order(EBELN). *
REPORT ZBDC_EXAMPLE NO STANDARD PAGE HEADING
LINE-SIZE 132.
Data declaration
TABLES: ekko, ekpo.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
waers TYPE ekko-waers,
netpr TYPE ekpo-netpr,
err_msg(73) TYPE c,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko,
it_error TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_error TYPE t_ekko,
it_success TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_success TYPE t_ekko.
DATA: w_textout LIKE t100-text.
DATA: gd_update TYPE i,
gd_lines TYPE i.
*Used to store BDC data
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.
*Used to stores error information from CALL TRANSACTION Function Module
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
*Screen declaration
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME
TITLE text-001. "Purchase order Num
SELECT-OPTIONS: so_ebeln FOR ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME
TITLE text-002. "New NETPR value
PARAMETERS: p_newpr(14) TYPE c obligatory. "LIKE ekpo-netpr.
SELECTION-SCREEN END OF BLOCK block2.
*START-OF-SELECTION
START-OF-SELECTION.
Retrieve data from Purchase order table(EKKO)
SELECT ekkoebeln ekkowaers ekpo~netpr
INTO TABLE it_ekko
FROM ekko AS ekko INNER JOIN ekpo AS ekpo
ON ekpoebeln EQ ekkoebeln
WHERE ekko~ebeln IN so_ebeln AND
ekpo~ebelp EQ '10'.
*END-OF-SELECTION
END-OF-SELECTION.
Check data has been retrieved ready for processing
DESCRIBE TABLE it_ekko LINES gd_lines.
IF gd_lines LE 0.
Display message if no data has been retrieved
MESSAGE i003(zp) WITH 'No Records Found'(001).
LEAVE TO SCREEN 0.
ELSE.
Update Customer master data (instalment text)
LOOP AT it_ekko INTO wa_ekko.
PERFORM bdc_update.
ENDLOOP.
Display message confirming number of records updated
IF gd_update GT 1.
MESSAGE i003(zp) WITH gd_update 'Records updated'(002).
ELSE.
MESSAGE i003(zp) WITH gd_update 'Record updated'(003).
ENDIF.
Display Success Report
Check Success table
DESCRIBE TABLE it_success LINES gd_lines.
IF gd_lines GT 0.
Display result report column headings
PERFORM display_column_headings.
Display result report
PERFORM display_report.
ENDIF.
Display Error Report
Check errors table
DESCRIBE TABLE it_error LINES gd_lines.
If errors exist then display errors report
IF gd_lines GT 0.
Display errors report
PERFORM display_error_headings.
PERFORM display_error_report.
ENDIF.
ENDIF.
*& Form DISPLAY_COLUMN_HEADINGS
Display column headings
FORM display_column_headings.
WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE.
SKIP.
WRITE:2 'The following records updated successfully:'(013).
WRITE:/ sy-uline(42).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(004), sy-vline,
(11) 'Old Netpr'(005), sy-vline,
(11) 'New Netpr'(006), sy-vline.
WRITE:/ sy-uline(42).
ENDFORM. " DISPLAY_COLUMN_HEADINGS
*& Form BDC_UPDATE
Populate BDC table and call transaction ME22
FORM bdc_update.
PERFORM dynpro USING:
'X' 'SAPMM06E' '0105',
' ' 'BDC_CURSOR' 'RM06E-BSTNR',
' ' 'RM06E-BSTNR' wa_ekko-ebeln,
' ' 'BDC_OKCODE' '/00', "OK code
'X' 'SAPMM06E' '0120',
' ' 'BDC_CURSOR' 'EKPO-NETPR(01)',
' ' 'EKPO-NETPR(01)' p_newpr,
' ' 'BDC_OKCODE' '=BU'. "OK code
Call transaction to update customer instalment text
CALL TRANSACTION 'ME22' USING bdc_tab MODE 'N' UPDATE 'S'
MESSAGES INTO messtab.
Check if update was succesful
IF sy-subrc EQ 0.
ADD 1 TO gd_update.
APPEND wa_ekko TO it_success.
ELSE.
Retrieve error messages displayed during BDC update
LOOP AT messtab WHERE msgtyp = 'E'.
Builds actual message based on info returned from Call transaction
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = messtab-msgid
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTING
message_text_output = w_textout.
ENDLOOP.
Build error table ready for output
wa_error = wa_ekko.
wa_error-err_msg = w_textout.
APPEND wa_error TO it_error.
CLEAR: wa_error.
ENDIF.
Clear bdc date table
CLEAR: bdc_tab.
REFRESH: bdc_tab.
ENDFORM. " BDC_UPDATE
FORM DYNPRO *
stores values to bdc table *
--> DYNBEGIN *
--> NAME *
--> VALUE *
FORM dynpro USING dynbegin name value.
IF dynbegin = 'X'.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-program,
value TO bdc_tab-dynpro,
'X' TO bdc_tab-dynbegin.
APPEND bdc_tab.
ELSE.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-fnam,
value TO bdc_tab-fval.
APPEND bdc_tab.
ENDIF.
ENDFORM. " DYNPRO
*& Form DISPLAY_REPORT
Display Report
FORM display_report.
FORMAT COLOR COL_NORMAL.
Loop at data table
LOOP AT it_success INTO wa_success.
WRITE:/ sy-vline,
(10) wa_success-ebeln, sy-vline,
(11) wa_success-netpr CURRENCY wa_success-waers, sy-vline,
(11) p_newpr, sy-vline.
CLEAR: wa_success.
ENDLOOP.
WRITE:/ sy-uline(42).
REFRESH: it_success.
FORMAT COLOR COL_BACKGROUND.
ENDFORM. " DISPLAY_REPORT
*& Form DISPLAY_ERROR_REPORT
Display error report data
FORM display_error_report.
LOOP AT it_error INTO wa_error.
WRITE:/ sy-vline,
(10) wa_error-ebeln, sy-vline,
(11) wa_error-netpr CURRENCY wa_error-waers, sy-vline,
(73) wa_error-err_msg, sy-vline.
ENDLOOP.
WRITE:/ sy-uline(104).
REFRESH: it_error.
ENDFORM. " DISPLAY_ERROR_REPORT
*& Form DISPLAY_ERROR_HEADINGS
Display error report headings
FORM display_error_headings.
SKIP.
WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE.
SKIP.
WRITE:2 'The following records failed during update:'(008).
WRITE:/ sy-uline(104).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(009), sy-vline,
(11) 'Netpr'(010), sy-vline,
(73) 'Error Message'(012), sy-vline.
WRITE:/ sy-uline(104).
FORMAT COLOR COL_NORMAL.
ENDFORM. " DISPLAY_ERROR_HEADINGS
Hope this resolves your query.
Reward all the helpful answers.
Regards -
Handling error messages in OOPs ALV
The question below is foolish.But I am a beginner so please excuse.
I have successfully displayed an OOPs ALV which displays the material, batch and plant.
A custom toolbar button(delete batches) has been appended to the standard toolbar.
Now when I do not select any rows from the ALV and click the button(delete batches) I have ensured that an error message flahes at the bottom of the screen.
If I repeat the same procedure without coming out of the program it exits from the program itself. i want to avoid this.
I want to flash the error message continually without coming out of the program till the user commits the mistake. Please note that I have not used any leave screen commands etc.
Can someone please help me..
Thanks in advanceI assume you have the ON TOOLBAR event regiistered and the ENTER event for example.
method constructor .
create object grid_container1
exporting
* container_name = 'CCONTAINER1'.
container_name = cfname.
create object grid1
exporting
i_parent = grid_container1.
set handler z_object->on_user_command for grid1.
set handler z_object->on_toolbar for grid1.
set handler z_object->handle_data_changed for grid1.
set handler z_object->handle_data_changed_finished for grid1.
set handler z_object->on_dubbelklik for grid1.
set handler z_object->on_hotspot for grid1.
call method grid1->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
endmethod.
So the easy way to do this is in your ON USER COMMAND routine when you can check to see if you selected any rows and the issue a popup warnimg message with the standard SAP MESSAGE statement.
For example in my TEST function here I call a method to get the selected cell.
If none are selected you can then issue your message and you will then be returned back to your GRID display after the user presses the OK button on the message popup.
the grid1 object refers to the class cl_gui_alv_grid.
in your case call a method that gets selected cells rather than selected cell. Use the standard method in cl_gui_alv_grid.
If nothing selected then issue your message.
(Note that your method ON DATA CHANGE / ON DATA CHANGED FINISHED might also be entered as well so insure that you haven't got any coding in these methods that will interfere with processing flow).
method on_user_command .
* FOR EVENT before_user_command OF cl_gui_alv_grid
* IMPORTING
* e_ucomm
* sender
case e_ucomm.
when 'EXIT'.
leave program.
when 'EXCEL'.
call method me->download_to_excel.
when 'SAVE'.
when 'PROC'.
call method me->process.
when 'REFR'.
call method me->refresh.
when 'SWITCH'.
call method me->switch.
when 'TEST'.
call method me->get_cell.
endcase.
method get_cell .
break-point 1.
call method grid1->get_current_cell
importing
e_row = ls_row
e_value = ls_value
e_col = ls_col
es_row_id = ls_row_id
es_col_id = ls_col_id
es_row_no = ls_row_no.
endmethod.
cheers
jimbo -
Cursor handle error in select query
Hello!
I'm having troubles with select query. I get the folowing error:
ODBC Error 'S1000', TimesTen Error 970, ODBC rc -1
ERROR in TTCommand.cpp, line 404: Error in TTCmd::Close() while closing cursor
[TimesTen][TimesTen 7.0.3.0.0 ODBC Driver][TimesTen]TT0970: Invalid cursor handle -- file "curAPI.c", lineno 1086, procedure "sb_curClose()"
*** ODBC Error/Warning = S1000, TimesTen Error/Warning = 970
*** Error in TTCmd::Close() for statement <SELECT 'alive' FROM DUAL>.
Error occures after aproximatelly 1000 request.
I' closing cursors and commiting after executing statement.
# ttisql -version
#TimesTen Release 7.0.3.0.0I use a code like described in sample.cpp in TimesTen demo directory.
First I prepare statement and function :
ControlData.Prepare(this, "SELECT 'alive' FROM DUAL", "", stat);
void
TTConnection::Control(TTStatus& stat)
TTStatus stat2;
try
ControlData.Execute(stat);
ControlData.Close(stat);
catch (TTStatus st)
cerr << "Error in SampleConnection::ContolData : " << st << endl;
ControlData.Close(stat2);
st.throwError() ;
In main function I use statement call like this (in endless loop)
try
conn.Control(stat);
conn.Commit(stat);
catch (TTError st)
cerr << "Error in CONTROL STATEMENT: " << st << endl;
Regards, Mitja -
How to call procedure from java
My database : oracle xe 10g
I develop my application by use jdeveloper
I call procedure following code :
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection c = (Connection)DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "shm", "shm");
CallableStatement cs = c.prepareCall("begin shm_increase_capital.ins_upd_tb_payment_rec_pc(:1,:2,:3,:4,:5,:6,:7);end;");
cs.setLong(1, shareHolderId);
cs.setString(2, companyCode);
cs.setString(3, lotYear);
cs.setLong(4, seqLot);
cs.setLong(5, allocateId);
cs.setLong(6, originateFrom);
cs.setString(7, curUser);
cs.execute();
cs.close();
c.close();
When I run my application several times I found error :
Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
localhost:1521:XE
Do you have another way for call procedure
Please recommend me
Thank you,
Ja-aeI can call procedure
but when I using my application too long
I found error :
Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
localhost:1521:XE
so, I think perhaps another way to call procedure for avoid this error -
How to display error message raised by stored procedure in ADF Faces ?
Hi all,
From my jspx page, I call a stored procedure wrapped by a custom service method in apps module.
Based on certain condition in the stored procedure, e.g : NO DATA FOUND EXCEPTION, I raised a custom error from the stored procedure :
RAISE_APPLICATION_ERROR(-20001, 'ERROR : No Data Tobe Processed !') ;
The question is : How to display that error nicely in the jspx page ?
Below is my backing beans code to call the stored procedure :
public String okButton1_action() {
try {
SalesAM service =
(SalesAM)JSFUtils.resolveExpression("#{data.SalesAMDataControl.dataProvider}");
createdInvoices = service.processInvoice(
soFr.getValue().toString().toUpperCase(),
soTo.getValue().toString().toUpperCase(), .....
currDateTime, "O") ;
} catch (JboException e) {
System.out.println("There is error raised by stored proc..!");
System.out.println(e.toString());
Thank you for your help,
xtantoYou can add a message to the page in the following way:
FacesMessage mess = new FacesMessage(FacesMessage.SEVERITY_ERROR, "title", e.getMessage());
FacesContext.getCurrentInstance().addMessage(null, mess); -
SOA DB Adapter - Calling procedure returning PL/SQL types
Hi All,
We have a Scenario where we are calling a Procedure from a SOA Composite using normal DB Adapter 'Call Procedure'.
This procedure is simply querying data from DB and returning a Oracle DB Object.
Since, the procedure returns a PL/SQL type which cannot be handled directly in SOA. So SOA creates a Wrapper Procedure on top of it.
This wrapper procedure is basically used to convert, during procedure calls, PL/SQL types to SQL and vice-versa.
The above said is a standard functionality provided by Oracle.
Now:
We are facing a peculiar issue while calling the procedure. Many of the Procedure calls return the expected result many are failing due to error - 'NO DATA FOUND'.
Out of 100 calls, 34 failed. All the 100 calls have same input, implies that we should expect the same output.
We also confirmed that there were no other changes done in DB at that time.
We generated the DB trace and found that for the failed calls we don't get anything in trace.
That implies the call doesn't even reaches the DB.
We tried shutting down and starting back our Weblogic datasource. Issue got resolved, all calls start executing successfully!!!
But again after executing 1000-2000 calls, we again face the same issue. Calls with same input start failing with - 'NO DATA FOUND'.
We certainly know that its an issue with caching on Weblogic level. But not yet able to prove it.
We suspect that this caching is done at JDBC level in JPublisher component... Not Sure!!!
We have done enough RnD to rule out anything on DB or SOA side. Its on Weblogic.
Anybody out there has any idea on how this Weblogic caching is done and how we can control it?
--InderAre you in a clustered environment and using coherence?
You can try to clear cache as mentioned below
soa_server1->System MBean Browser->Application Defined MBeans->oracle.mds.lcm->Server: soa_server1->Application: soa-infra->MDSAppRuntime->MDSAppRuntime->Operations tab->clearCache
You may also find this article useful
http://www.oracle.com/technetwork/articles/soa/data-tier-caching-for-soa-101753.html
Edited by: user5433411 on Apr 25, 2013 3:37 AM -
Error while executing java stored procedure from a pl/sql procedure
We have a requirement where we need to execute JAVA code stored in an Oracle database (Java Stored Procedure). This code uses some JAR files which we have already loaded without any errors in the database.
The class file was also loaded in the database without any errors. But when we execute the method of this class (JAVA code), it gives the following error:
ORA-29532: Java call terminated by uncaught Java exception:
java.lang.NoClassDefFoundError
Is there any way of debugging the code and getting to know where exactly the problem is? Or, any tool/software available for doing the same.
Any pointers would be of great help!
Thanks in advanceHi Uday,
My guess is that there is a problem with your java stored procedure that is causing the "ExceptionInInitializer" error to be thrown. According to the javadoc:
is thrown to indicate that an exception occurred during
evaluation of a static initializer or
the initializer for a static variable
Since I didn't see any of your code in your post, I can't help you much more, I'm afraid. Perhaps if you would provide some more details, I may be able to help you some more. I think the following details would be helpful:
1. Complete error message and stack trace you are getting.
2. The section of your java code that you think is causing the problem.
3. Oracle database version you are using.
Good Luck,
Avi. -
Smartform Printing : Error in spool C call: Error from TemSe
Hi! everybody,
I am stating my problem as follows : I have to print a bar-code sticker of size 10 X 7 cms. I have worked on bar-codes before this also. This time the output from a smartform is to be given to a ZEBRA TLP 2844 printer. I initially encountered problems in printing. The data does not fit on to the page.
After a lot of searching I found that ZEBRA was a partner of SAP and that a special device type needs to be created for output from a ZEBRA printer. I did this two times. Each time my steps were as described under.
To create the device type I did the following :
1. I finally found the driver from the ZEBRA website from http://www.zebra.com/id/products/global/en/utilities/sap_device_types.UtilityFile.File.tmp/Zebra_SAP_Device_Types.zip From this I uploaded the driver for 203 DPI zebra printer with IBM code 850 font file name "YZB200.PRI" into the transaction SA38.
2. Then I created a new device ZEB10 in SPAD after assigning my format to the device.
Thereafter, I tried to print my sticker. During this procedure, on selection of the new device type, the fonts automatically changed to ARIAL in the print preview. When I give the print command (Spool request : Print immed = X, Delete after output = X & New spool request = X) it gives an error message Error in spool C call: Error from TemSe.
Since the output had not been issued, I opened the spool request to view its TemSe characteristics. Here I found
Spool Attributes
Output Device ZEB10
Format ZTT Format
Doc. Category SMART
Recipient
Department
Deleted On 19.01.2011
Authorization
Output Attributes
No. of Copies 1
Priority 5
SAP Cover Page Do not print SAP cover page
OS Cover Sheet Print as set at printer
Requested 0
Processed 0 With Problem 0
With Error (Not Printed) 0
Storage Mode Print
TemSe Attributes
Object name SPOOL0000013836
Data type ????????????
Character set 0 -
> Character set of dev type = 1162
Number of parts 0
Record format
Size in bytes 0
Storage location
On seeing SP01
Spool no. Type Date Time Status Pages Title
13836 Smartforms(OTF) 11.01.2011 07:32 + 0 SMART LP01 USERID
I hope this data helps you help me. Please ask for more data if you wish. Also, I have searched vastly for this error on the net have already come across the link http://help.sap.com/saphelp_45b/helpdata/en/d9/4a8f9c51ea11d189570000e829fbbd/frameset.htm but to no use. On the SDN, I have not found a similar thread and that is why I decided to post this problem here, hoping to find a solution. Kindly help.
Regards,
ManasHi Manas,
I am facing the same issue for one of my clients.
Can you please share the solution with me if you have come out with it.
Regards,
Nirmal.K -
Strange error while executing a stored procedure: Incorrect syntax near '@p0'
All, I am getting a strange error while executing a stored procedure: Incorrect syntax near '@p0' using JDBC CallableStatment.
Here is my code...
CallableStatement cStmt = con.prepareCall("{call SET CHAINED ON EXEC <dbName>.<schemaName>.<SPName> (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
cStmt.setString(1, "2012005881");
cStmt.setString(2, "07");
cStmt.setString(3, "10");
cStmt.setString(4, "Case title");
cStmt.setString(5, "Open");
java.sql.Date dt1 = new java.sql.Date(2014,10,20);
cStmt.setDate(6, dt1);
cStmt.setString(7, "01");
cStmt.setString(8, "N");
cStmt.setString(9, "ADA Test");
cStmt.setString(10, "N");
cStmt.setString(11, "English");
cStmt.setString(12, "N");
cStmt.setString(13, "N");
cStmt.setString(14, "N");
cStmt.setString(15, "N");
cStmt.setString(16, "N");
cStmt.setString(17, "N");
cStmt.setString(18, "07");
cStmt.setString(19, "10");
cStmt.setString(20, "juache0");
java.sql.Date dt2 = new java.sql.Date(2014,10,20);
java.sql.Date dt3 = new java.sql.Date(2014,10,20);
cStmt.setDate(21, dt2);
cStmt.setDate(22, dt3);
cStmt.setString(23, "userid0");
cStmt.setString(24, "");
cStmt.setString(25, "");
cStmt.setString(26, "");
java.math.BigDecimal bg1 = new java.math.BigDecimal(10);
cStmt.setBigDecimal(27, bg1);
cStmt.setString(28, "userid");
cStmt.setString(29, "userid");
int hadResults = cStmt.executeUpdate();
Your help is greatly appreciated.
I am executing the above using Jconnect3.0 driver, inside WebSphere Application Server V8.0
Thanks
NagsNOTE: I don't work with JDBC/jConnect so (at this point) just some questions ...
1 - are you sending this to ASE, ASA, IQ, or some other RDBMS?
2 - what is the value of <schemaname>?
3 - do you have other prepareCall() instances that successfully call a stored proc? [would be interesting to see if there's a difference in the format of the calls]
A quick google search shows a couple ways to submit a stored proc execution to the RDBMS, with the format depending on the format expected by the target RDBMS.
I'm wondering if you really need/want the parentheses around the argument list, ie, what happens if you change
from
-- parentheses around args
EXEC <dbName>.<schemaName>.<SPName> ( ?,?,?,?,?,...,? )
to
-- no parentheses around args
EXEC <dbName>.<schemaName>.<SPName> ?,?,?,?,?,...,?
In ASE if I wrap the parameters in parentheses I get the same error you're getting:
================== w/ parentheses => error
1> sp_who (sa)
2> go
Msg 102, Level 15, State 1:
Server 'CC1_V1', Line 1:
Incorrect syntax near 'sa'. <<=== sa == @p0 ??
================== w/out parentheses => works
1> sp_who sa
2> go
fid spid status loginame origname ...
0 17 running sa sa ...
================== -
Error while running the stored procedure
hi , all
I am geeting the error when im trying to run any procedures, even a simple procedure. Plz help me.. the error is PLS-00306: wrong number or types of arguments in call to 'PROC2'While calling procedure 'PROC2' - passed number of arguments wrong or Datatype mismatch.
For Example.
1) passed number of arguments wrong
PROC2 have arguments - 5. but you passed 4 arguments then you will get this type of error.
2) Datatype mismatch
First arugument declared in procedure is Number, but you passed character then you will get this type of error. -
Error while executing Java Stored Procedure.
Hi,
When I'm trying to execute my java stored procedure i'm getting the following error:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.ExceptionInInitializerError
Does anybody has idea why this error comes and how can be resolved.
Thanks in advance.
UdayHi Uday,
My guess is that there is a problem with your java stored procedure that is causing the "ExceptionInInitializer" error to be thrown. According to the javadoc:
is thrown to indicate that an exception occurred during
evaluation of a static initializer or
the initializer for a static variable
Since I didn't see any of your code in your post, I can't help you much more, I'm afraid. Perhaps if you would provide some more details, I may be able to help you some more. I think the following details would be helpful:
1. Complete error message and stack trace you are getting.
2. The section of your java code that you think is causing the problem.
3. Oracle database version you are using.
Good Luck,
Avi.
Maybe you are looking for
-
I've been able to get a lot of this to work, but I've run into a problem I can't figure out. Here it is... I have a Microsoft Excel 2008 spreadsheet that includes titles, descriptions, and keywords for my JPEGs. I have the following Applescript for A
-
Acrobat Pro 9 Multi-page PDF Printing backwards thumbnails
Any time I create a multi-page PDF and ask it to print, it will print the first page correctly and then print every subsequent page as a mirror image thumbnail in the corner of the paper. If I print each page individually it prints fine. After doing
-
Synchronous and asynchronous processes communication in WLI 8.1
Hi all, I'm using workshop with WL 8.1 to design by business processes. I have created one process which is invoked synchronously via a client request with return. Than I call this process in web flow. The process publishes message in the MB, which c
-
Hi I'm trying to restore my iPod now for about a month but everytime iTunes shows me a message: An unknown error has occurred (Error: 9). Please help me
-
Is there a way i can "Backup" my site, so that i can format my Mac and then import my Site AS it is, back into iWeb? Or transfer it from one mac to another? I really cold do with this. I have published the site already and it is on the net, but i wan