Dynamic Function Module call (Handling Table types)
Hi Experts,
I am new to SAP NW RFC.
Actually I am developing a wrapper,which in fact an RFC enabled Function Module,which accepts a standard FM and its parameters. I am stuck up if the input parameters are associated with Table types.
Regards,
SAM
Hi Rama,
Yes, I'm not passing value to the table parameter, but that parameter is where I want to retrieve data from FM, not pass value to, so I don't assign any value to ptab_line-value for that parameter.
BTW, I just did some test to pass value to the parameter using the following code and still got CALL_FUNCTION_PARM_MISSING exception:
FM: ZLEAD_CONTACT
parameters:
IMPORT: I_PARTNER TYPE BUT000-PARTNER mandatory
TABLES: OT_CONT LIKE ZLEAD_INFO_S optional (here ZLEAD_INFO_S is a flat structure)
ptab_line-name = ls_import_para-PARAMETER.
ptab_line-kind = abap_func_tables.
create data ref_type type table of (ls_import_para-STRUCTURE).
ptab_line-tables_wa = ref_wa.
ptab_line-value = ref_type.
The detail of ptab:
VALUE
TABLES_WA
KIND
NAME
->2000000025
{A:initial}
10
2000000025
->Standard Table[0x10(588)]
->Structure: flat & not charlike
30
OT_CONT
And the same error if I set parameter using below code:
create data ref_wa type RS38L_TYP.
assign ref_wa->* to <fs>.
<fs> = ls_import_para-STRUCTURE.
ptab_line-tables_wa = ref_wa.
The detail of ptab:
VALUE
TABLES_WA
KIND
NAME
->2000000025
{A:initial}
10
2000000025
->Standard Table[0x10(588)]
->ZLEAD_INFO_S
30
OT_CONT
Regards,
Jeff
Similar Messages
-
Dynamic Function Module call with table parameter?
Hi All,
I'm trying to call FMs dynamically with PARAMETER-TABLE. These FMs are mainly about searching data from inputs and returning internal table as outputs. I managed to pass data into import parameters as query conditions, but still failed to set tables parameter. The code is like below, could you please help me check what's the problem? Thank you very much!!
data: lv_val type RS38L_TYP value 'ls_service_para-fmparam'.
data: lt_interface TYPE rsfbintfv,
ls_import_para TYPE rsfbpara,
ptab TYPE abap_func_parmbind_tab,
ptab_line TYPE abap_func_parmbind,
ref_wa type ref to data.
Field-symbols: <fs> type any,
CALL METHOD cl_fb_function_utility=>meth_get_interface
EXPORTING
im_name = LV_FM "FM name
IMPORTING
ex_interface = lt_interface
EXCEPTIONS
error_occured = 1
object_not_existing = 2
OTHERS = 3.
***loop IMPORT parameters and fill in data from lt_params***
loop at lt_interface-import into ls_import_para.
read table lt_params into ls_param with key key = ls_import_para-parameter. "check if exists query value
if sy-subrc = 0 and ls_param-value is not initial.
assign (lv_val) to <fs>.
<fs> = ls_param-value.
create data ref_wa type (ls_import_para-STRUCTURE).
assign ref_wa->* to <fs2>.
<fs2> = <fs>. UNASSIGN: <fs>,<fs2>.
ptab_line-name = ls_import_para-PARAMETER.
ptab_line-value = ref_wa.
ptab_line-kind = abap_func_exporting.
insert ptab_line into table ptab.
endif.
endloop.
***loop at TABLE parameters to retrieve data from FM***
loop at lt_interface-TABLES into ls_import_para.
create data ref_wa type (ls_import_para-STRUCTURE).
ptab_line-tables_wa = ref_wa. "set data type
ptab_line-name = ls_import_para-PARAMETER.
ptab_line-kind = abap_func_tables.
insert ptab_line into table ptab. "if commented, no exception occurs,but I cannot get any dataset.
endloop.
CALL FUNCTION LV_FM PARAMETER-TABLE ptab.
if I execute the code, when there has TABLES parameter defined in the FM, I get CX_SY_DYN_CALL_PARAM_MISSING exception with runtime error DATREF_NOT_ASSIGNED. But in debug mode, as shown in the screen shot attached, I did see the field TABLES_WA has correct type. So maybe I misunderstand the usage of PARAMETER-TABLE. Does anyone has experience on it?
Best Regards,
JeffHi Rama,
Yes, I'm not passing value to the table parameter, but that parameter is where I want to retrieve data from FM, not pass value to, so I don't assign any value to ptab_line-value for that parameter.
BTW, I just did some test to pass value to the parameter using the following code and still got CALL_FUNCTION_PARM_MISSING exception:
FM: ZLEAD_CONTACT
parameters:
IMPORT: I_PARTNER TYPE BUT000-PARTNER mandatory
TABLES: OT_CONT LIKE ZLEAD_INFO_S optional (here ZLEAD_INFO_S is a flat structure)
ptab_line-name = ls_import_para-PARAMETER.
ptab_line-kind = abap_func_tables.
create data ref_type type table of (ls_import_para-STRUCTURE).
ptab_line-tables_wa = ref_wa.
ptab_line-value = ref_type.
The detail of ptab:
VALUE
TABLES_WA
KIND
NAME
->2000000025
{A:initial}
10
2000000025
->Standard Table[0x10(588)]
->Structure: flat & not charlike
30
OT_CONT
And the same error if I set parameter using below code:
create data ref_wa type RS38L_TYP.
assign ref_wa->* to <fs>.
<fs> = ls_import_para-STRUCTURE.
ptab_line-tables_wa = ref_wa.
The detail of ptab:
VALUE
TABLES_WA
KIND
NAME
->2000000025
{A:initial}
10
2000000025
->Standard Table[0x10(588)]
->ZLEAD_INFO_S
30
OT_CONT
Regards,
Jeff -
Hi,
I need to call few function modules dynamically.The exporting and importing parameters are also known only at run time.
Can somebody help me out in this regard,
Thanks and regards,
Archnahi ,
Create Function module according to your requirment and call the same
such as
Create functi0n module where you are passing PLant runtime and get data related to Plant
write code in function according to requirment .
FUNCTION zrfc_test.
""Local interface:
*" IMPORTING
*" VALUE(ZWERKS) TYPE MARC-WERKS OPTIONAL
*" EXPORTING
*" VALUE(RETURN) LIKE BAPIRET2 STRUCTURE BAPIRET2
*" TABLES
*" ZIT_DATA STRUCTURE MARC
IF zwerks IS NOT INITIAL.
SELECT *
FROM marc
INTO CORRESPONDING FIELDS OF TABLE zit_data
WHERE werks = zwerks .
ELSE.
SELECT *
FROM marc
INTO CORRESPONDING FIELDS OF TABLE zit_data.
ENDIF.
IF sy-subrc = 0 .
MESSAGE ' Selected ' TYPE 'I' .
ENDIF.
ENDFUNCTION.
Suppose at runtime you get Plant 7100
types : begin of w_marc .
include structure marc .
types : end of w_marc .
data : it_data type standard table of w_marc with header line .
p_plant = 7100 .
Call to function module
CALL FUNCTION 'ZRFC_TEST'
EXPORTING
ZWERKS = 'p_plant
IMPORTING
RETURN =
TABLES
zit_data = it_data .
You will get result in it_data .
Note : if you don't know how to create Function Module then search on SDN you will get lots of Forum .
Regards
Deepak. -
Datasources with function module which uses table type
hi..
I am creating a datasource which extracts data using a function module from xRPM to BW. When creating the function module it gives an error " TABLES parameters are obsolete!" while trying to specify the extract structure. I searched in SDN and learnt that we need to use table types and use that in the changing tab.Not sure how that works and where we need to use the extract structure for this.
Could someone please explain this to me and let me know how i can create my datasource using this type of function module.Hi,
in your case you need the tables parameter, as the service api expects the result of the fm in a table called e_t_data. Of course table parameters are obsolet but you can just ignore the warning and it will work.
regards
Siggi
PS: Extraction fm must follow a strict interface definition.
Message was edited by:
Siegfried Szameitat -
Getting values from a function module called in a WDA method
Friends,
I am trying to execute a function module from WDA.
I have created a service call for the function module. The function module takes values from the user, looks up the corresponding values of another field and returns the values in an internal table.
I am using the "Method Call in Used Controller" of WD Code wizard to call the function module.
When the event handler method containing the call to the function module is executed, nothing happens.
I am not sure how to pass values to the function module and to get the return values from the function module.
I am new to using function modules from WDA. Please help me out.
Thanks and Regards.Rashmi,
Is the function module intended to collect input data from the UI and process it? - Yes
If yes, then the input (importing parameter) to the Function Module is a table of values (which should be ideally from the context mapped to the Table UI Element). - The importing parameter is a single value NOT a table and is mapped to the view context.
Now this table UI Element is bound to the view controller context , which in turn is mapped to the component controller context. And you are indeed being able to read the value of this internal table in the component controller method where the function module is being called by means of get_static_attributes_table (Is this right? - Yes, I am able to read the table of values that is passed from the component controller view to form view context by using get_static_attributes_table.
Or are you being able to read it in the event handler method of the view controller and not being able to read it in the component controller method) -
The function module takes a single value as import parameter and returns a table of values as return value.
It works fine when no importing parameter is being used and returns the table of values that is getting passed from component controller context to form view context when i am able to read it using get_static_attributes_table.
Now the question is: how to pass the import parameter value to the function module. I assumed since the importing parameter is a context node (like the return values are), i should set the value ( captured when the user enters the value in the form) to the importing parameter context attribute using set_attribute method. Since it is mapped to the component controller context, i assumed it will get passed and the method will take it as input parameter.
Let me know if my assumptions are correct regarding passing the import parameters and what is missing here.
Thanks and Regards. -
Function module to get table description
Is there any function module to get table description on passing table name
Hi,
We need to use : 'G_RW_TABLE_DESCRIPTION_GET' function module.
we pass the table name and the language.
call function 'G_RW_TABLE_DESCRIPTION_GET'
exporting
rw_table = p_table
langu = sy-langu
importing
tab_text = l_tabtext
exceptions
others = 1.
thanx. -
Function module call with destination
Hi,
how can check if a function module call with destination works or not ?
How can I debug.
What can be the reason if it is not calles
regards
ertas* to chcek the rfc Destination By pass RFC destination name and Connection Type..
RFC_CHECK_DESTINATION
or
RFC_CHECK_DESTINATION_ID
or
You can use this FM RFC_VERIFY_DESTINATION if your release is greater than 4.6C.
Check this sample code from Craig Cmehil's weblog.
CALL FUNCTION 'RFC_VERIFY_DESTINATION'
EXPORTING
DESTINATION = TMP
TIMEOUT = 10
EXCEPTIONS
INTERNAL_FAILURE = 1
TIMEOUT = 2
DEST_COMMUNICATION_FAILURE = 3
DEST_SYSTEM_FAILURE = 4
UPDATE_FAILURE = 5
NO_UPDATE_AUTHORITY = 6
OTHERS = 7.
IF SY-SUBRC EQ '0'.
"* Do code here
ENDIF.
Prabhu -
Problem with function module calling
Hi,
I have two questions here
i have a function moduel 'Z_GET_MATL_BALANCE'
in my code it called in the below said way
CALL FUNCTION 'Z_GET_MATL_BALANCE'
DESTINATION 'NONE'
STARTING NEW TASK 'A'
PERFORMING f_back ON END OF TASK
EXPORTING
ref_dte = s_datum-low
str_dte = s_datum-high
end_dte = s_datum-high
i_werks = p_werks
i_past = 'X'
i_future = 'X'
verselem = p_mrpver
plscn = p_scenar
r_outrec = r_outrec
supstk = p_supstk
days_ahead = w_days_ahead
shipnt = p_shipnt
TABLES
mat_bals = w_zmat_bals_a
i_zdatum = i_datum
mat_movmts = w_mat_movmts_a
mat_ship = i_mat_ship_a.
IF sy-subrc NE 0.
MESSAGE e005(ZMIM) WITH
text-009 text-166 text-054 sy-subrc.
ENDIF.
FORM f_back USING task.
CASE task.
WHEN 'A' .
RECEIVE RESULTS FROM FUNCTION 'Z_GET_MATL_BALANCE'
TABLES
mat_bals = w_zmat_bals_a
mat_movmts = w_mat_movmts_a
mat_ship = i_mat_ship_a
EXCEPTIONS
call_material_lesen_fail = 1
call_t450n_fail = 2
call_t399d_fail = 3
call_aufbauen_mdpsx_fail = 4
call_mdezx_aufbauen_fail = 5
call_t001w_fail = 6
call_zmrpelem_failed = 7
call_aufbauen_mdpsx_sim_fail = 8
OTHERS = 9.
IF SY-SUBRC NE 0.
RET_CODE1 = SY-SUBRC.
ENDIF.
now my first question is what is the difference between function modules calling normally and in the above said way
and the second question is
under tables parameter i have four internal tables defined where as while calling the same function module using recive results i have three internal tables. is this correct?
i am asking this because i am getting an error message while using this funciton module
please do not give generic answers, all the helpful answers will get a def rewardCall function starting new task is used to make Asynchronus RFC Call. In this case your function module will be called in a NEW SESSION and it will exceute independently from the Main program which is calling the FM. Also, the main program will continue its own processing and it will not wait for the RFC FM to complete.
Its not mandatory to have all the TABLES parameters in the RETURN Perform (..Receive results from ...) -
Idoc - Error Status 51: Incorrect function module called up
Hi,
In the receiver system for the custom message type, I got this error.
Incorrect function module called up
Can any one pls help me to solve this one.
Regards,
Bala RajaHi Bala,
Check the inbound function module attached to process code in receiving system. Generally in every inbound function module first check is coded for checking message type or for checking funciton module like below.In the receiving system go to WE20 and then select the partner and select inbound message type. in that double click on assigned process code.then you have to double click on displayed FM. In that fm check first few lines. You will find this error message.
LOOP AT IDOC_CONTRL.
IF IDOC_CONTRL-IDOCTP(6) <> 'DESADV'.
MESSAGE ID 'E0' TYPE 'E' NUMBER '029'
WITH IDOC_CONTRL-IDOCTP ' ' 'IDOC_INPUT_DESADV'
RAISING WF_ERROR_PROCESS.
ENDIF.
ENDLOOP.
Thanks & Regards,
Kalyan. -
Function module related to procurement type and special procurement type
Hi Gurus,
Is there any function module related to procurement type and special procurement type?
Regards
RajibDear Rajib,
What is your exact requirment?do you want to find out the list of materials based on procurement type
and special procurement type?
You can get the details from the table MARC.
Regards
Mangalraj.S -
How to connect our outbound function module to the message type
how to connect our outbound function module to the message type any transcation code exits to assign the message type with the function module .
Thank in advance .
A. ThiruHi Thiru,
Standard Transaction Codes, have their own Function Modules for generating Outbound/Indbound Idocs. Where these Function Modules will be configured to a particular Process Codes.
For E.g for PO's
Process code : ME10 - IDOC_OUTPUT_ORDERS - for creation
In case if its a Z Function Module, It depends on the case how you use IDOC types. either directly through Z Program or through Inbound/Outbound Process codes with respective Function modules.
Regards,
Anbalagan -
Rfc function module call error
Hi Abaper,
I'm doing upgrade from 4.7 to ecc 6.0 currently and encounter problem in one of the rfc function module that we used. I've tested the connection to destination using sm59 and the connection is successful.
As an information, in the rfc setting, the target system is not Unicode system.
When I test using se37 and put the rfc destination in my function module call, I always encountered system_error exception. There's no issue with this rfc call before in 4.7 system.
Please help me on this. Thank you.
Edited by: Abraham Bukit on Sep 3, 2008 2:36 AMHi,
I had the same issue in the past and solved it in the following way.
If the destination system is not Unicode please try to set the password for the communication user set in SM59 using only upper-case characters and taking into account that the password shouldn't be longer than 8 characters.
Hope this will help. -
BAPI function module to get condition type and its values based on delivery number?
Hi All,
I would like to have the BAPI function module to get condition type value based on delivery number before invoice is created.please provide detail program for as a reference .please reply as soon as possible its urgent.
Regards,
saaikumar.If you haven't already, you may first need to search via the SAP transaction "BAPI" in the area this is applicable to. Failing that I do hope you get an answer.
-
Need to track Function modules called when executing a transaction
Hi All,
Is there a way through which i can track function modules called, while executing a Transaction. Kindly provide pointers to it.
Thanks in advance.
Regards,
Navin.Goto SE80 Transaction and use Program name for corresponding Transaction Use Find operation like Call Function .. then you will get list of FM ..
There is no other option .
reward Points if it is helpful
Thanks
Seshu -
Is there any function module getting the cpu type?
Is there any function module getting the cpu type?
I guess the database server...
I would like to get the SAP system cpu type as done in transaction st06 under system information.
Thanks.
Maybe you are looking for
-
When i connect my ipad to the laptop ,it doesnt get connected
when i coonect my ipad 2 to da laptop its doesnt get connected but wen i connect it to my pc it gets connected hence wt m i supposed to do to coonect ym ipad to the laptop
-
Hello, Is there a way to display the image of the navigation bar entry on the top instead of in line with the text? I tried several things with my moderate html knowledge but didn't get it working. Denes Kubicek
-
Excess quantaty in Goods Receipt PO
Dear All, Its really surprising that the receiving quantity can be increase in Goods Receipt PO from Purchase Order quantity. Any one guide me to stop for more receiving then PO thax
-
We have 2 PC's that need to run only one Web Site Link for all Students. We have a default user name and login profile for the PC's, but we would like to perform the following: Bypass the Login and go directly to IE opening the Web Site Link and all
-
Re-assign a different role to a lot of users
Hi, I need to change the assigned role for a large number of users >5000. I know I can do this using bulk actions eg command,user,waveset.roles Update,user1,|Remove|oldRole update,user1,|Merge|newRole Update,user2,|Remove|oldRole update,user2,|Merge|