Problem in FM DYNP_VALUES_UPDATE
Here is my COde:
report ZTEST_POOL.
tables : d020s,mara.
data: begin of dynpfields occurs 0.
include structure dynpread.
data: end of dynpfields.
selection-screen : begin of block b1 with frame title text-011.
select-options: p_list for mara-matnr.
selection-screen: end of block b1.
dynpfields-fieldname = 'P_LIST-LOW'.
dynpfields-fieldvalue = 'MATERIAL1'.
append dynpfields.
dynpfields-fieldname = 'P_LIST-HIGH'.
dynpfields-fieldvalue = 'MATERIAL2'.
append dynpfields.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = sy-cprog
dynumb = sy-dynnr
tables
dynpfields = dynpfields
exceptions
invalid_abapworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
Wheni Execute this... My screen Fields P_LIST-LOW and P_LIST-HIGH are not updating.
they are still empty.
plz let me know whats wrong in my code.
Clemens Li wrote:
Usually we use PBO (in report: AT SELECTIO-SCREEN OUTPUT) or PAI (in report: AT SELECTIO-SCREEN) to change values of screen fields.
here is my code after making some changes..
now i m calling this FM at This event.
*at selection-screen output.*
dynpfields-fieldname = 'P_LIST-LOW'.
dynpfields-fieldvalue = 'MATERIAL1'.
append dynpfields.
dynpfields-fieldname = 'P_LIST-HIGH'.
dynpfields-fieldvalue = 'MATERIAL2'.
append dynpfields.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = sy-cprog
dynumb = sy-dynnr
tables
dynpfields = dynpfields
exceptions
invalid_abapworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
Still i m not getting my fields P_LIST-LOW and P_LIST-HIGH with values.
Cant we use this FM other than this event:
at selection screen on value request for p_list-low.
Event INITIALIZATION is the point where you pre-set default values of screen fields.
thnks for this New information.
Also i can set their default values like this
select-options: p_list for mara-matnr default 'MATERIAL1' .
Similar Messages
-
Problem with FM "DYNP_VALUES_UPDATE"
Hi gurus
I am using a table control containg 2 columns. I have used a f4 help in the first column by the fm "F4IF_INT_TABLE_VALUE_REQUEST" . And the corresponding second column i am displaying a value for which i have used the fm "DYNP_VALUES_UPDATE" . It's working fine but after the values upadted in the second column , the value in the first column vanishes.It becomes balnk .
so please help me . thanks in advance .
regards
AmarendraHI,
Check this Code ..
PARAMETES : p_werks type ...
PARAMETES : p_plnnr type ....
PARAMETES : p_plnal type....
AT SELECTION-SCREEN ON P_PLNNR.
data:
lg_condition type string.
data:
lwa_ddshretval type ddshretval,
lwa_dselc type dselc,
lwa_dynpread type dynpread.
data:
li_f4_insp type standard table of t_f4_insp,
li_ddshretval type standard table of ddshretval,
li_dselc type standard table of dselc,
li_dynpread type standard table of dynpread.
lwa_dynpread-fieldname = 'P_WERKS'.
append lwa_dynpread to li_dynpread.
clear lwa_dynpread.
* Read Screen Field Values.
call function 'DYNP_VALUES_READ'
exporting
dyname = sy-repid
dynumb = sy-dynnr
tables
dynpfields = li_dynpread.
* Read the first record as only one record will be present
read table li_dynpread into lwa_dynpread index 1.
p_werks = lwa_dynpread-fieldvalue.
if p_werks is initial.
move 'PLNTY EQ ''Q''' to lg_condition.
else.
move 'WERKS EQ P_WERKS AND PLNTY EQ ''Q''' to lg_condition.
endif.
* Fetch Data
select werks
plnnr
plnal
plnty
ktext
into table li_f4_insp
from plko
where (lg_condition).
lwa_dselc-fldname = 'F0002'.
lwa_dselc-dyfldname = 'PLNNR'.
append lwa_dselc to li_dselc.
clear lwa_dselc.
lwa_dselc-fldname = 'F0003'.
lwa_dselc-dyfldname = 'PLNAL'.
append lwa_dselc to li_dselc.
clear lwa_dselc.
* FM For F4 Help
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'PLNNR'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'PLNNR'
value_org = 'S'
tables
value_tab = li_f4_insp
return_tab = li_ddshretval
dynpfld_mapping = li_dselc
exceptions
parameter_error = 1
no_values_found = 2
others = 3.
if sy-subrc eq 0.
refresh li_dynpread.
read table li_ddshretval into lwa_ddshretval index 1.
if sy-subrc eq 0.
move lwa_ddshretval-fieldval to p_plnnr.
lwa_dynpread-fieldname = 'P_PLNNR'.
lwa_dynpread-fieldvalue = lwa_ddshretval-fieldval.
append lwa_dynpread to li_dynpread.
clear lwa_dynpread.
endif. " IF sy-subrc EQ 0.
read table li_ddshretval into lwa_ddshretval index 2.
if sy-subrc eq 0.
move lwa_ddshretval-fieldval to p_plnal.
lwa_dynpread-fieldname = 'P_PLNAL'.
lwa_dynpread-fieldvalue = lwa_ddshretval-fieldval.
append lwa_dynpread to li_dynpread.
clear lwa_dynpread.
endif. " IF sy-subrc EQ 0.
endif. " IF sy-subrc EQ 0.
* Set Screen Field Values.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = sy-repid
dynumb = sy-dynnr
tables
dynpfields = li_dynpread
exceptions
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
others = 8.
check sy-subrc eq 0. -
DYNP_VALUES_UPDATE not Updating the Field on my Dynpro
Hi.
I want to create a dynpro where two fields are. Field 1 allows the user to enter a customer number, field two shall come up with a number that is calculated somehow. The calculation can last up to 20 seconds, so I dont want to make the user waite for this number.. .he shall be able to work with the rest of the dynpro.
Therefore I called the function that does the calcuiation like that:
MODULE user_command_0100 INPUT.
DATA: lv_guid_16 TYPE guid_16.
IF kna1-kunnr IS NOT INITIAL AND kna1-kunnr <> gv_kunnr
CALL FUNCTION 'GUID_CREATE'
IMPORTING
ev_guid_16 = lv_guid_16.
gv_taskid = lv_guid_16+8(8).
CALL FUNCTION 'YDETERMINE_DEPOTDISTANCE'
STARTING NEW TASK gv_taskid
PERFORMING receive_depent ON END OF TASK
EXPORTING
i_kunnr = kna1-kunnr.
ENDIF.
ENDMODULE.
The next piece of code shall get the returning value if the function wants to return its results.
FORM receive_depent USING i_task TYPE clike.
TABLES: d020s.
DATA: dyname LIKE d020s-prog,
dynumb LIKE d020s-dnum.
DATA: BEGIN OF dynpfields OCCURS 1.
INCLUDE STRUCTURE dynpread.
DATA: END OF dynpfields.
IF i_task = gv_taskid.
RECEIVE RESULTS FROM FUNCTION 'YDETERMINE_DEPOTDISTANCE'
IMPORTING
e_depent = kna1-yydepent
e_accuracy = gv_accuracy.
MOVE 'KNA1-YYDEPENT' TO dynpfields-fieldname.
MOVE kna1-yydepent TO dynpfields-fieldvalue.
APPEND dynpfields.
dyname = sy-cprog.
dynumb = '0100'.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = dyname
dynumb = dynumb
TABLES
dynpfields = dynpfields
EXCEPTIONS
invalid_abapworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
undefind_error = 07.
ASSERT sy-subrc = 0.
ENDIF.
Problem is: The DYNP_VALUES_UPDATE does not update the field on my dynpro at all. If I hit enter another time, then the field is provided by the value as another PBO will be processed. What is my mistake here?
Regards
Manfred
Edited by: Rob Burbank on Oct 29, 2010 12:07 PMHi Manfred,
Replace all the DYNP_VALUES_UPDATE-related content by the following statement:
SET USER-COMMAND 'xxx'.
While DYNP_VALUES_UPDATE does update the fields, a roundtrip is not triggered so the content of the fields will not be refreshed. The SET USER-COMMAND does that.
Hope this helps you!
Cheers, Roel -
Hi gurus,
Im making a search help using FM F4IF_INT_TABLE_VALUE_REQUEST with multiple choice and it's working fine, my problem it's passing the values choosed from this FM to the screen...
I've declare a select option, and what i want it's to pass the choosen values from the search help to the screen but it's not working fine... i already tried the FM DYNP_VALUES_UPDATE to update the screen field but still yhe same...
Below goes my code, just in case...
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ZLINHA'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'SO_NUM'
window_title = 'Programa'
value_org = 'S'
multiple_choice = 'X'
TABLES
value_tab = it_values
return_tab = return_tab.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
LOOP AT return_tab.
* CLEAR r_num.
so_num-option = 'EQ'.
so_num-sign = 'I'.
MOVE 'SO_NUM' TO dynpfields-fieldname.
MOVE return_tab-fieldval TO dynpfields-fieldvalue.
APPEND dynpfields.
* so_num-low = return_tab-fieldval.
* APPEND so_num.
ENDLOOP.
ENDIF.
CLEAR dynpfields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = progname
dynumb = dynnum
TABLES
dynpfields = dynpfields.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
If anyone has any idea, feel free to speak
Thanks in advance,
Best RegardsHi Martins,
You have used the select options that means you have to use the function module for the <select-option >-low and <select-option>-high.
I am giving you a code snippet in which the selection screen has select-options and with the help of function module it shows F4 help and pass the values.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
SELECT-OPTIONS:S_PIDNUM FOR ZMST_PERMIT-ZPIDNUM ,
S_ENGDSC FOR ZMST_PERMIT-ZENGDSC NO INTERVALS LOWER CASE,
S_ARBDSC FOR ZMST_PERMIT-ZARBDSC NO INTERVALS LOWER CASE,
S_TARIFF FOR ZMST_PERMIT-ZTARIFF NO INTERVALS,
S_PERNUM FOR ZMST_PERMIT-ZPERNUM NO INTERVALS,
S_ARRPRT FOR ZMST_PERMIT-ZARRPRT NO INTERVALS MATCHCODE OBJECT ZMST_PORTS.
PARAMETER:P_PERTYP(2) TYPE C AS LISTBOX VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-LOW.
W_NAME2 = 'S_PIDNUM-LOW'.
W_NAME1 = 'ZPIDNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-HIGH.
W_NAME2 = 'S_PIDNUM-HIGH'.
W_NAME1 = 'ZPIDNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ENGDSC-LOW.
W_NAME2 = 'S_ENGDSC'.
W_NAME1 = 'ZENGDSC'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ARBDSC-LOW.
W_NAME2 = 'S_ARBDSC'.
W_NAME1 = 'ZARBDSC'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_TARIFF-LOW.
W_NAME2 = 'S_TARIFF'.
W_NAME1 = 'ZTARIFF'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PERNUM-LOW.
W_NAME2 = 'S_PERNUM'.
W_NAME1 = 'ZPERNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
*& Form F4_HELP
text
--> p1 text
<-- p2 text
FORM F4_HELP USING: W_VAR TYPE DFIES-FIELDNAME
W_VAR1 TYPE HELP_INFO-DYNPROFLD .
Fetching data from zmst_permit for F4 help on PERMIT ID No.--
IF IT_PERMIT[] IS INITIAL.
SELECT ZPIDNUM
ZENGDSC
ZARBDSC
ZTARIFF
ZPERNUM
ZARRPRT
ZEFFDT
ZEXPDT
FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_PERMIT.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = W_NAME1 " 'ZPIDNUM'
DYNPPROG = 'ZMSTR0022'
DYNPNR = SY-DYNNR
DYNPROFIELD = W_NAME2 "'S_PIDNUM'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_PERMIT
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 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.
ENDFORM. " F4_HELP
I hope this will help you.
Help children of U.N World Food Program by rewarding points and encourage others to answer your queries. -
DYNP_VALUES_UPDATE, uppercase problems
Hello,
On a screen, i'm using the function DYNP_VALUES_UPDATE, to update a field with an other field. It's works but this function put my field in UPPER CASE.
[Screen of my problem|http://img407.imageshack.us/img407/4043/sap.jpg]
The DYNP_VALUES_UPDATE is call on a process on value-request for the first field.
PROCESS ON VALUE-REQUEST.
FIELD zstress MODULE f4_stress.
Someone have an idea ?
Best Regards,
Nicolas
Edited by: Nicolas Couret on Apr 30, 2009 12:35 PMI have found, in the layout of the screen I haven't seen the check box Upper/Lower case
[link|http://img142.imageshack.us/img142/4043/sap.jpg]
Thanks !
Edited by: Nicolas Couret on Apr 30, 2009 1:04 PM
Edited by: Nicolas Couret on Apr 30, 2009 1:05 PM -
Using DYNP_VALUES_UPDATE with a Maintenance View
Hi,
I am using a maintenance view to insert values into a table. When user creates a new entry, based on the value provided for a field,I need to fill a read-only field. In PAI, when user enters a value for one field, I am using FM 'DYNP_GET_STEPL' to get the current line and then DYNP_VALUES_UPDATE to fill the contents to the read-only field. But this does not seem to work. Any idea?
Regards
RachanaHi Tamas,
I tried both the options suggested by you.
I am updating the underlying structure, still its not visible when the screen loads again. But if you see the same field gets filled with DYNP_VALUES_UPDATE if an F4 help is used for teh first(editable) field and then my read-only field is also filled in the PROCESS ON VALUE REQUEST module.
So my guess is that, since it is a table control, it loops through the rest of the table control which is empty and my underlying structure gets cleared. So the problem could be where I am actually filling the field.
Is it possible to somehow fill the <EXTRACT> table so that teh value is not lost?
Regards
Rachana -
Screen Fields Not getting Updated with DYNP_VALUES_UPDATE
Hi All,
I am using FM DYNP_VALUES_READ to read the screen field values and then modifying those values and passing the modified table to DYNP_VALUES_UPDATE. But the problem is screen fields are not populated with these values . The values I wish to populate are footer values . I am using OO ALV for this wherein I am handling an event for filter of records and accordingly I need to modify my footer. Any Suggestions??
*& Form footer
Caslculate Total items, number of hits/Miss and percent MSP
--> p1 text
<-- p2 text
FORM footer .
CLEAR : io_totitems,
io_tothit,
io_totmiss,
io_permiss.
IF NOT l_flag EQ 1.
Get total items
DESCRIBE TABLE i_outdata LINES io_totitems.
LOOP AT i_outdata INTO wa_outdata.
calculate number of hits
IF wa_outdata-hit_miss = 'HIT'.
io_tothit = io_tothit + 1.
ENDIF.
calculate number of Miss
IF wa_outdata-hit_miss = 'MISS'.
io_totmiss = io_totmiss + 1.
ENDIF.
CLEAR wa_outdata.
ENDLOOP.
calculate percent MSP
io_permiss = ( ( io_totitems - io_totmiss ) / io_totitems ) * 100 .
IF l_flag EQ 1.
wa_dynpread-fieldname = 'IO_TOTITEMS'.
APPEND wa_dynpread TO t_dynpread.
wa_dynpread-fieldname = 'IO_TOTHIT'.
APPEND wa_dynpread TO t_dynpread.
wa_dynpread-fieldname = 'IO_TOTMISS'.
APPEND wa_dynpread TO t_dynpread.
wa_dynpread-fieldname = 'IO_PERMISS'.
APPEND wa_dynpread TO t_dynpread.
CLEAR wa_dynpread.
d020s-prog = sy-repid.
d020s-dnum = sy-dynnr.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = d020s-prog
dynumb = d020s-dnum
translate_to_upper = 'X'
REQUEST = ' '
TABLES
dynpfields = t_dynpread.
MOVE io_totitems TO io_totitem.
CONDENSE io_totitem NO-GAPS.
MOVE io_tothit TO io_tothits.
CONDENSE io_tothits NO-GAPS.
MOVE io_totmiss TO io_totmis.
CONDENSE io_totmis NO-GAPS.
MOVE io_permiss TO io_permis.
CONDENSE io_permis NO-GAPS.
LOOP AT t_dynpread INTO wa_dynpread.
CASE: wa_dynpread-fieldname.
WHEN 'IO_TOTITEMS'.
wa_dynpread-fieldvalue = io_totitem .
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_TOTHIT'.
wa_dynpread-fieldvalue = io_tothits.
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_TOTMISS'.
wa_dynpread-fieldvalue = io_totmis.
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_PERMISS'.
wa_dynpread-fieldvalue = io_permis .
MODIFY t_dynpread FROM wa_dynpread.
ENDCASE.
CLEAR wa_dynpread.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = d020s-prog
dynumb = d020s-dnum
TABLES
dynpfields = t_dynpread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
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.
Get all fotter details in a internal table
this is used to download footer in Excel
wa_footer-fldname = 'Total Items '.
wa_footer-value = io_totitems.
APPEND wa_footer TO i_footer.
wa_footer-fldname = 'Number of HIT'.
wa_footer-value = io_tothit.
APPEND wa_footer TO i_footer.
wa_footer-fldname = 'Number of MISS'.
wa_footer-value = io_totmiss.
APPEND wa_footer TO i_footer.
wa_footer-fldname = 'Percentage MISS '.
wa_footer-value = io_permiss.
APPEND wa_footer TO i_footer.
CLEAR wa_footer.
ENDFORM. " footerdata: t_dynfields1 type table of dynpread with header line.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = d020s-prog
dynumb = d020s-dnum
translate_to_upper = 'X'
REQUEST = ' '
TABLES
dynpfields = t_dynfields1.
<b>read table t_dynfields1 index 1</b> I hope this is missing
I will be selecting from a list .
Because once the value is read we need to update the screen field with that value .
Here the selected value will be in the first place
Now
Your operation is to populate the fields with some variables .
In the same when I do this there is only one value then
Im expecting only one entry here
LOOP AT t_dynpread INTO wa_dynpread.
CASE: wa_dynpread-fieldname.
WHEN 'IO_TOTITEMS'.
wa_dynpread-fieldvalue = io_totitem .
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_TOTHIT'.
wa_dynpread-fieldvalue = io_tothits.
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_TOTMISS'.
wa_dynpread-fieldvalue = io_totmis.
MODIFY t_dynpread FROM wa_dynpread.
WHEN 'IO_PERMISS'.
wa_dynpread-fieldvalue = io_permis .
MODIFY t_dynpread FROM wa_dynpread.
ENDCASE.
CLEAR wa_dynpread.
ENDLOOP. */
Comment this for a while and
Change the code as
t_dynfields1-fieldname = ' '. "<--- header name
t_dynfields1-fieldvalue = ' '."<----val
append t_dynfields1.
t_dynfields1-fieldname = ' '.
t_dynfields1-fieldvalue = ' '.
append t_dynfields1.
t_dynfields1-fieldname = ' '.
t_dynfields1-fieldvalue = ' '.
append t_dynfields1.
And check .
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = d020s-prog
dynumb = d020s-dnum
TABLES
dynpfields = t_dynfields1.
regards,
vijay -
Field Exit with DYNP_VALUES_UPDATE
Hello, I am trying to develop a validation in a SAP transaction (XD01) to check some field values and if them are right then fill automatically the rest of the field in the screen, using a Function Modulo and the FM DYNP_VALUES_READ I am able to retrieve the field values correctly, my problem is when a try to fill the rest of the screen's fields with FM DYNP_VALUES_UPDATE it doesn't work. Does anybody have used this FM? is possible what I am trying to do?
Thanks in advice for your help.Hi Fernando,
Using Field exit we can't populate multiple fileds, One filed exit is applicable for only one input filed.If you want to implement the
filed exit for multiple fileds you have to implement the one exit for one filed.
Regards,
Mahender Reddy -
AT SELECTION SCREEN OUTPUT ON VALUE REQUESt problem
hi I am fetching the values into second field based on first field by reading them like this
<b>
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ST_NAME.
CLEAR: FIELD_VALUE, DYNPRO_VALUES.
REFRESH DYNPRO_VALUES.
FIELD_VALUE-FIELDNAME = 'EXCH'.
APPEND FIELD_VALUE TO DYNPRO_VALUES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TRANSLATE_TO_UPPER = 'X'
TABLES
DYNPFIELDS = DYNPRO_VALUES.
READ TABLE DYNPRO_VALUES INDEX 1 INTO FIELD_VALUE.
IF FIELD_VALUE-FIELDVALUE IS NOT INITIAL.
IF SY-SUBRC = 0 AND FIELD_VALUE-FIELDVALUE = 1.
FIELD_VALUE-FIELDVALUE = 'BSE'.
ELSEIF SY-SUBRC = 0 AND FIELD_VALUE-FIELDVALUE = 2.
FIELD_VALUE-FIELDVALUE = 'NSE'.
ENDIF.
SELECT STOCK ST_NAME
FROM
ZEXCH
INTO TABLE TEMP_ITAB
WHERE EXCH = FIELD_VALUE-FIELDVALUE.
IF SY-SUBRC = 0.
FLAG = 'X'.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'ST_NAME'
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR
DYNPROFIELD = 'ST_NAME'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = TEMP_ITAB.
ENDIF.
</b>
This is working fine, now my requirement is to fetch a value into 3rd field from database table when the user selects a value through 'F4IF_INT_TABLE_VALUE_REQUEST'
Please help me with this, hope u got my problem, i want to know how to continue and fill value into third field after filling the field ST_NAME
points guaranteedHi,
If you have two parameters, you want to display values(f4) in parameter 2
depending on the values entered in parameter 1.
REPORT Z_SRI_HELP_VALUE_FOR_TABLES .
tables tcurt.
DATA DYFIELDS LIKE DYNPREAD OCCURS 1 WITH HEADER LINE.
PARAMETERS: P_WAERS LIKE TCURT-WAERS, "Currency
P_LTEXT LIKE TCURT-LTEXT, "Long Text
P_KTEXT LIKE TCURT-KTEXT. "Short Text
*--- Example of updating value of another field on the screen -
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_WAERS.
CLEAR: DYFIELDS[], DYFIELDS.
*--- select currency
CALL FUNCTION 'HELP_VALUES_GET'
EXPORTING
fieldname = 'WAERS'
tabname = 'TCURT'
IMPORTING
SELECT_VALUE = P_WAERS.
*--- get long text for the selected currency
SELECT SINGLE LTEXT FROM TCURT
INTO DYFIELDS-FIELDVALUE
WHERE SPRAS = SY-LANGU
AND WAERS = P_WAERS.
IF SY-SUBRC <> 0.
CLEAR DYFIELDS-FIELDVALUE.
ENDIF.
*--- update another field
DYFIELDS-FIELDNAME = 'P_LTEXT'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
tables
dynpfields = DYFIELDS .
*--- Example of reading value of another field -
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_KTEXT.
*--- read another field
CLEAR: DYFIELDS[], DYFIELDS.
DYFIELDS-FIELDNAME = 'P_WAERS'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYFIELDS .
READ TABLE DYFIELDS INDEX 1.
*--- get short text and update current field
SELECT SINGLE KTEXT FROM TCURT
INTO P_KTEXT
WHERE SPRAS EQ SY-LANGU
AND WAERS EQ DYFIELDS-FIELDVALUE.
How to add F4 functionality to a paramter variable? Say P_name ie Parameters: P_name like dbtab-fieldname
in At selection-screen on value-request for p_name. How should I add the values john, abraham, linga etc so that these values appear when f4 is pressed on the field in the selection screen?
PARAMETERS: p_name(10).
DATA: BEGIN OF value_tab OCCURS 0,
name(10),
END OF value_tab.
DATA :field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE. DATA : x TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_name.
REFRESH value_tab[].
REFRESH field_tab[].
REFRESH return_tab[].
field_tab-fieldname = 'ERNAM'.
field_tab-tabname = 'VBAK'.
APPEND field_tab.
value_tab-name = 'John'.
APPEND value_tab.
value_tab-name = 'Abraham'.
APPEND value_tab.
value_tab-name = 'Lingam'.
APPEND value_tab.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = field_tab-fieldname
TABLES
value_tab = value_tab
field_tab = field_tab
return_tab = return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
p_name = return_tab-fieldval.
ENDIF.
Regards
Sudheer -
In search help i am facing problem
created search help using below function module . here element list is like this
in search help 2 fields is there and data is like this
arbpl werks
y 1
y 2
x 1
x 2
x 3
z 1
z 3
a 1
b 1
if i select x and 2 it taking the value as x and 1 how to solve this problem
would any body solve this problem?
i write the code like this
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arbpl.
select arbpl werks from zpces into corresponding fields of table
itab .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = 'CRHD'
retfield ='ARBPL'
PVALKEY = ' '
DYNPPROG = sy-repid
DYNPNR = sy-dynnr
DYNPROFIELD = 'P_ARBPL'
STEPL = 0
WINDOW_TITLE = 'title'
VALUE = ' '
VALUE_ORG = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = 'F'
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
tables
value_tab = itab
FIELD_TAB = dynfields
RETURN_TAB = return
DYNPFLD_MAPPING = dynmap
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 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.
read table return with key fieldname = 'P_ARBPL'.
dynfields-fieldname = return-retfield.
dynfields-fieldvalue = return-fieldval.
append dynfields.
itab-arbpl = return-fieldval.
read table itab from itab.
read table itab with key arbpl = return-fieldval.
dynfields-fieldname = 'P_WERKS'.
dynfields-fieldvalue = itab-werks.
append dynfields.
Update the dynpro values.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = sy-cprog
dynumb = sy-dynnr
tables
dynpfields = dynfields
exceptionsChange your code as below.
dynfields-fieldname = return-retfield.
dynfields-fieldvalue = return-fieldval.
append dynfields.
* itab-arbpl = return-fieldval.
* read table itab from itab.
<b>read table itab index return-recordpos.</b>
dynfields-fieldname = 'P_WERKS'.
dynfields-fieldvalue = itab-werks.
append dynfields.
Hope this helps.
Manoj -
Search help multiple values selection problem
Hello Friends,
I am using FM f4_if_int_table_value_request FM to display multiple values on selection screen
in AT-selection-screen on value request event.
Multiple values are getting displayed perfectly .
Then after that I am using DYNP_VALUES_UPDATE FM to return the values back to screen.
But the problem is in the select-option field . It only picks the last value selected.
I have a row:
I EQ 'last value selected from F4 help screen''.
Is there a way to update multiple rows in the select option selection screen field.
Thanks.Hi Suhas,
you may try the following:
TABLES spfli.
SELECT-OPTIONS: s_carrid FOR spfli-carrid.
SELECTION-SCREEN: PUSHBUTTON /1(20) but1 USER-COMMAND carr.
INITIALIZATION.
but1 = 'Choose CARRID(s)'.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'CARR'.
TYPES: t_return_tab TYPE ddshretval.
TYPES: BEGIN OF ty_line,
carrid TYPE spfli-carrid,
carrname TYPE scarr-carrname,
END OF ty_line.
DATA: it_list TYPE STANDARD TABLE OF ty_line,
wa_return_tab TYPE t_return_tab,
i_return_tab TYPE STANDARD TABLE OF t_return_tab,
v_repid TYPE sy-repid,
v_dynnr TYPE sy-dynnr.
v_repid = sy-repid.
v_dynnr = sy-dynnr.
SELECT carrid carrname
FROM scarr
INTO TABLE it_list.
IF sy-subrc = 0.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CARRID'
dynpprog = v_repid
dynpnr = v_dynnr
* dynprofield = 'S_CARRID-LOW'
value_org = 'S'
multiple_choice = 'X'
TABLES
value_tab = it_list
return_tab = i_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
s_carrid-sign = 'I'.
s_carrid-option = 'EQ'.
LOOP AT i_return_tab INTO wa_return_tab.
s_carrid-low = wa_return_tab-fieldval.
APPEND s_carrid.
ENDLOOP.
READ TABLE s_carrid INDEX 1.
ENDIF.
ENDIF.
ENDCASE.
What I have done is:
- not linking the result of the F4 search to field S_CARRID-LOW
- inserting this F4 search into event AT SELECTION SCREEN. This allows to see the select-options filled when its contents are actually populated.
I hope this helps. Kind regards,
Alvaro -
Problem with Radio Buttons: At Selection-Screen
Hi,
i have two radio-buttons in my screen with coding
PARAMETERS:
ST RADIOBUTTON GROUP rad1 DEFAULT 'X', "stock transport
PR RADIOBUTTON GROUP rad1. "purchase return
at selection-screen output.
if PR = 'X'.
perform f_selection_request_po_ret.
endif.
if ST = 'X'.
perform f_selection_request_stck_trans.
endif.
at selection-screen on value-request for s_ebeln-low.
perform f_f4_values.
at selection-screen on value-request for s_ebeln-high.
perform f_f4_values.
I need to provide different values in drop-down of select-options according to the radio-button selected.
Like if PR is selected s_ebeln-low and s_ebeln-high displayed will be different.
and if ST is selected s_ebeln-low and s_ebeln-high displayed will be different.
My problem is that the program is taking the values of that radio button which is set to Default. While running the program, if I click on the other radio-button, it is showing the same values, not different.
Kindly, tell me where I am going wrong in the coding.
Regards,
Priyanka.Hi,
For this requirement you have to use the following FM's
<b>DYNP_VALUES_READ </b> and DYNP_VALUES_UPDATE
The one highlighted is the one you need to call in the selection screen events to get the values. Do a where used list on this FM and see how its being used.
DATA : W_REPID LIKE D020S-PROG,
W_DYNNR LIKE D020S-DNUM,
I_DYNPREAD LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
REFRESH: I_DYNPREAD.
CLEAR : I_DYNPREAD,
W_FILE .
I_DYNPREAD-FIELDNAME = C_UXPATH.
APPEND I_DYNPREAD.
CLEAR : I_DYNPREAD.
W_REPID = SY-REPID.
W_DYNNR = C_1000.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = W_REPID
DYNUMB = W_DYNNR
TABLES
DYNPFIELDS = I_DYNPREAD
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
INVALID_PARAMETER = 7
UNDEFIND_ERROR = 8
DOUBLE_CONVERSION = 9
OTHERS = 10.
IF SY-SUBRC EQ 0.
Successfully read screen. GET the values
LOOP AT I_DYNPREAD.
CASE I_DYNPREAD-FIELDNAME.
WHEN C_UXPATH .
W_FILE = I_DYNPREAD-FIELDVALUE.
ENDCASE.
ENDLOOP. "LOOP AT i_dynpread.
ENDIF. "IF sy-subrc EQ 0.
Cheers
VJ
Message was edited by:
Vijayendra Rao -
I am trying to implement some kind of a server listening for requests. The listener part of the app, is a daemon thread that listens for connections and instantiates a handling daemon thread once it gets some. However, my problem is that i must be able to kill the listening thread at the user's will (say via a sto button). I have done this via the Sun's proposed way, by testing a boolean flag in the loop, which is set to false when i wish to kill the thread. The problem with this thing is the following...
Once the thread starts excecuting, it will test the flag, find it true and enter the loop. At some point it will LOCK on the server socket waiting for connection. Unless some client actually connects, it will keep on listening indefinatelly whithought ever bothering to check for the flag again (no matter how many times you set the damn thing to false).
My question is this: Is there any real, non-theoretical, applied way to stop thread in java safely?
Thank you in advance,
LeftyThis was one solution from the socket programming forum, have you tried this??
public Thread MyThread extends Thread{
boolean active = true;
public void run(){
ss.setSoTimeout(90);
while (active){
try{
serverSocket = ss.accept();
catch (SocketTimeoutException ste){
// do nothing
// interrupt thread
public void deactivate(){
active = false;
// you gotta sleep for a time longer than the
// accept() timeout to make sure that timeout is finished.
try{
sleep(91);
}catch (InterruptedException ie){
interrupt();
} -
A problem with Threads and MMapi
I am tring to execute a class based on Game canvas.
The problem begin when I try to Play both a MIDI tone and to run an infinit Thread loop.
The MIDI tone "Stammers".
How to over come the problem?
Thanks in advance
Kobi
See Code example below:
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
public class MainScreenCanvas extends GameCanvas implements Runnable {
private MainMIDlet parent;
private boolean mTrucking = false;
Image imgBackgound = null;
int imgBackgoundX = 0, imgBackgoundY = 0;
Player player;
public MainScreenCanvas(MainMIDlet parent)
super(true);
this.parent = parent;
try
imgBackgound = Image.createImage("/images/area03_bkg0.png");
imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
imgBackgoundY = this.getHeight() - imgBackgound.getHeight();
catch(Exception e)
System.out.println(e.getMessage());
* starts thread
public void start()
mTrucking = true;
Thread t = new Thread(this);
t.start();
* stops thread
public void stop()
mTrucking = false;
public void play()
try
InputStream is = getClass().getResourceAsStream("/sounds/scale.mid");
player = Manager.createPlayer(is, "audio/midi");
player.setLoopCount(-1);
player.prefetch();
player.start();
catch(Exception e)
System.out.println(e.getMessage());
public void run()
Graphics g = getGraphics();
play();
while (true)
tick();
input();
render(g);
* responsible for object movements
private void tick()
* response to key input
private void input()
int keyStates = getKeyStates();
if ((keyStates & LEFT_PRESSED) != 0)
imgBackgoundX++;
if (imgBackgoundX > 0)
imgBackgoundX = 0;
if ((keyStates & RIGHT_PRESSED) != 0)
imgBackgoundX--;
if (imgBackgoundX < this.getWidth() - imgBackgound.getWidth())
imgBackgoundX = this.getWidth() - imgBackgound.getWidth();
* Responsible for the drawing
* @param g
private void render(Graphics g)
g.drawImage(imgBackgound, imgBackgoundX, imgBackgoundY, Graphics.TOP | Graphics.LEFT);
this.flushGraphics();
}You can also try to provide a greater Priority to your player thread so that it gains the CPU time when ever it needs it and don't harm the playback.
However a loop in a Thread and that to an infinite loop is one kind of very bad programming, 'cuz the loop eats up most of your CPU time which in turn adds up more delays of the execution of other tasks (just as in your case it is the playback). By witting codes bit efficiently and planning out the architectural execution flow of the app before start writing the code helps solve these kind of issues.
You can go through [this simple tutorial|http://oreilly.com/catalog/expjava/excerpt/index.html] about Basics of Java and Threads to know more about threads.
Regds,
SD
N.B. And yes there are more articles and tutorials available but much of them targets the Java SE / EE, but if you want to read them here is [another great one straight from SUN|http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html] .
Edited by: find_suvro@SDN on 7 Nov, 2008 12:00 PM -
Hi all,
I would like to ask you for a help. I need to write a small program at my university. I started to write a midlet which function would be to countdown time for sports activities. I woul like to start a new thread - the one that counts down - and at the same time make the main thread sleep. After the "countdown" thread finishes, the main thread wakes up and waits for user input. The problem is that when the "countdown" thread finishes his work, I've got Uncaught exception java/lang/NullPointerException. error and the midlet halts.
Below you can find the code
import java.lang.*;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class intervals extends MIDlet implements CommandListener
public Display ekran;
private SweepCanvas sweeper;
private Form rundy;
private TextField round0, round1, round2, round3, round4, round5, round6, round7, round8;
private long czas,x;
private Command exitCommand;
private Command addRound;
private Command delRound;
private Command start;
private TextField repeat;
private Form odliczanie;
private Alert ostrz;
Licznik thread;
String test;
StringItem test1;
int parz,i,j,k;
static int l;
int ilrund;
int ilpowt;
Item sec;
long sec1;
public intervals()
rundy = new Form("Interwały sportowe");
exitCommand = new Command("Wyjście", Command.EXIT, 2);
addRound = new Command("Dodaj","Dodaj rundę", Command.ITEM,1);
delRound = new Command("Usuń","Usuń ostatnią rundę", Command.ITEM,1);
start = new Command("Start", Command.ITEM,1);
odliczanie = new Form("Odliczanie");
TextField dodaj(TextField kolej)
kolej=new TextField("Podaj czas (s) rundy "+parz,null, 4, TextField.NUMERIC);//stworzenie nowej instancji do wybierania czasu trwania rundy
if(rundy.size()==0)
rundy.insert(rundy.size(),kolej);
else
rundy.insert(rundy.size()-1, kolej);
return kolej;
void odliczanie(TextField round)
monitor m=new monitor();
k=Integer.parseInt(round.getString());
ekran.setCurrent(odliczanie);
thread=new Licznik(k,odliczanie);
thread.start();
ekran.setCurrent(rundy);
public void startApp()// throws MIDletStateChangeException
rundy.deleteAll();
repeat = new TextField("Podaj ilość powtórzeń",null,1,TextField.NUMERIC);
rundy.addCommand(addRound);
rundy.addCommand(exitCommand);
rundy.setCommandListener(this);
Canvas obrazek = new MyCanvas();
ekran = Display.getDisplay(this);
ekran.setCurrent(obrazek);
czas=System.currentTimeMillis();
while (System.currentTimeMillis()<czas+1000)
continue;
ekran.setCurrent(rundy);
public void pauseApp()
public void destroyApp(boolean unconditional)
notifyDestroyed();
public void commandAction(Command c, Displayable s)
if (c == exitCommand)
destroyApp(false);
notifyDestroyed();
else if(c==addRound)
if(rundy.size()==0)//Sprawdzenie ilości elementów w celu poprawnego wyświetlania liczby rund w formie
parz=1;
else
parz=rundy.size();
switch(parz)
case 1:
round0=dodaj(round0);break;
case 2:
round1=dodaj(round1);break;
case 3:
round2= dodaj(round2);break;
case 4:
round3=dodaj(round3);break;
case 5:
round4=dodaj(round4);break;
default:
ostrz=new Alert("Uwaga","Maksymalna liczba rund wynosi 9", null, AlertType.INFO);
ostrz.setTimeout(3000);
ekran.setCurrent(ostrz);
if(rundy.size()==1)
rundy.append(repeat);
rundy.addCommand(start);
rundy.addCommand(delRound);
else if(c==delRound)
if(rundy.size()!=0)
rundy.delete(rundy.size()-2);
if (rundy.size()==1)
rundy.deleteAll();
if(rundy.size()==0)
rundy.removeCommand(delRound);
rundy.removeCommand(start);
else if(c==start)
ilrund=rundy.size()-1;
if(this.repeat.size()>0)
ilpowt=Integer.parseInt(this.repeat.getString());
ekran = Display.getDisplay(this);
for (i=1; i<=ilpowt;i++)
odliczanie= new Form("Odliczanie");
for (j=0;j<ilrund;j++)
switch(j)
case 0:
odliczanie(round0);
break;
case 1:
odliczanie(round1);
break;
case 2:
odliczanie(round2);
break;
case 3:
odliczanie(round3);
break;
case 4:
odliczanie(round4);
break;
case 5:
odliczanie(round5);
break;
case 6:
odliczanie(round6);
break;
case 7:
odliczanie(round7);
break;
case 8:
odliczanie(round8);
break;
class Licznik extends Thread
int czas1,k;
Form forma;
monitor m;
public Licznik(int k,Form formap)
czas1=k;
forma=formap;
public synchronized void run()
while(czas1>0)
forma.deleteAll();
forma.append("Czas pozostały (s): "+czas1);
try{Thread.sleep(1000);} catch(InterruptedException e){e.printStackTrace();}
czas1--;
if(czas1<=0)
m.put();
}and monitor class
public class monitor
boolean busy=false;
synchronized void get()
if(!busy)
try
wait();
}catch(InterruptedException e){e.printStackTrace();}
notify();
synchronized void put()
if(busy)
try
wait();
}catch(InterruptedException e){e.printStackTrace();}
busy=true;
notify();
}Can anybody help me with this?Groovemaker,
Your Licznik class has a member m of type monitor, which has not been instantiated (in other words is null) hence, when calling m.put() you get NullPointerException. Please also mind, that using Thread.sleep(1000) is not an accurate way of measuring time.
If I may, please use recommended for Java class naming conventions - some of your names use lower case, while other don't which is confusing to the reader.
Daniel
Maybe you are looking for
-
How do i install more memory on my macbook ,2010 white version
I just purchased more memory for my macbook, 2010 version, should i attempt it myself, or make a appt with the gensius bar??? Thanks
-
My Ipod shuffle NOW thinks it has a 298.1 Gb storage capacity. Help, plz.
Good afternoon, I have a 512 MB Ipod Shuffle, that I have used successsfully for 9 months without a single glitch, until now. I'm using itunes 6.0.4.2, and the ipod shuffle is running software version 2006 03-23. I have a Dell PC running Windows XP P
-
Hi Gurus, I am loading data from extractor 0FI_AR_4 into the ODS 0FIAR_O03 using Full Update. It says: "Request IDoc : Application document not posted" How do I resolve this problem. Please help. Thanks NewBw
-
Are there any additional Captivate themes available?
I have been tasked with designed and producing a series of e-learning courses and although I have ID experience, I am not a graphics designer. There are a handful of themes available in Captivate 8, but I was hoping to have a wider selection. Are the
-
Call c++ dll from oracle 10g
can i know how to call a c++ dll from oracle or how to import a c++ dll from oracle any help plz??