When are function modules written?
Hai All,
FIRST OF ALL, HAPPY NEW YEAR.
For custom extractions, when do we need to write function modules? Is it for Master data or anything in particular... I know this is very general and vague question. But can somebody give me some examples to help understand.
Thank you very much.
Hi,
mostly you use function modules for extraction in case the data cannot easily be extracted by a view or from the table directly.
1st example: If you need to read the change documents (cdhdr, cdpos) to get the new/changed/deleted data of one or more tables within a specific time frame (delta).
2nd example: Your table contains a creation and a change date. You want to extract (via generic delta) all records created or changed in a specific time frame. As the change date is only populated after a change, you need to do a select on both date fields to get the delta.
Hope this helps!
regards
Siggi
Similar Messages
-
Error BT616 when calling function module SXPG_COMMAND_EXECUTE in background
Hi All,
We use function module SXPG_COMMAND_EXECUTE with a custom command we defined in SM69 to move files in unix (mv command).
The function module call has worked fine for almost a year and recently we have been seeing an error (BT616) in our job lob (SM37) when the program is run in background. We have not been able to reproduce the error in foreground mode and it seems to be occuring only periodically in the background. (The appropriate SAP authorization objects where assigned to the batch job ID and the steps on the batch job.) We are in the process of setting up the trace flag and performing analysis on the trace log via ST11 to help identify the issue.
After perform analysis on SXPG_COMMAND_EXECUTE, the error is occurring when calling function module SAPXPG_END_XPG for exception 2, system failure, yet function module SAPXPG_END_XPG does not exist. I assume this is a program at the operating system level and is just a signature of the parameters to be passed to the operating system program.
Below is part of the SAP function module SXPG_COMMAND_EXECUTE that is failing.
* Now we have to wait for the termination of the external
* command if the caller wants us to.
IF TERMINATIONWAIT = 'X'.
CALL FUNCTION 'SAPXPG_END_XPG'
DESTINATION DESTINATION
IMPORTING EXITSTAT = STATUS
EXITCODE = EXITCODE
TABLES LOG = LOG
EXCEPTIONS COMMUNICATION_FAILURE = 1 MESSAGE MSG
SYSTEM_FAILURE = 2 MESSAGE MSG.
I performed a where used on function module SXPG_COMMAND_EXECUTE, and most of SAP programs call the function module with the parameter TERMINATIONWAIT = 'X', so I assume we should pass X as well.
Any ideas on what could be causing this issue?
Mike VondranI also remember I have this kind of issue, as I have some UNIX script at OS( UNIX) level . The problem was with the ID , as it dont have proper authorization at OS level ( UNIX ) . Please check this ID authorization. This could be the one of reasons if youre sure from SAP standpoint.
Hope thisll give you some guide line..
Thanks
Bye -
How to capture errors when a Function module is called as BACKGROUND TASK
How to capture errors when a Function module is called as BACKGROUND TASK?.Please advise.
FUNCTION ZRPM_DELETE_PROJECT_DATA_API.
""Local interface:
*" IMPORTING
*" VALUE(IV_EXTERNAL_ID) TYPE RPM_TV_EXTID OPTIONAL
*" VALUE(IV_PROJECT_GUID) TYPE RPM_TV_GUID OPTIONAL
*" VALUE(FLAG) TYPE BOOLEAN OPTIONAL
*" EXPORTING
*" VALUE(EV_RC) TYPE I
*" VALUE(EV_MSG) TYPE STRING
*" VALUE(ET_MSG) TYPE RPM_TT_MESSAGES
IF flag = cl_rpm_co=>sc_true.
Call function 'RPM_DELETE_PROJECT_DATA' IN BACKGROUND TASK
EXPORTING
IV_EXTERNAL_ID = IV_EXTERNAL_ID
IV_PROJECT_GUID = IV_PROJECT_GUID
IMPORTING
EV_RC = EV_RC
EV_MSG = EV_RC
ET_MSG = ET_MSG.
COMMIT WORK.
ELSE.
CALL FUNCTION 'RPM_DELETE_PROJECT_DATA'
EXPORTING
IV_EXTERNAL_ID = IV_EXTERNAL_ID
IV_PROJECT_GUID = IV_PROJECT_GUID
IMPORTING
EV_RC = EV_RC
EV_MSG = EV_MSG
ET_MSG = ET_MSG.
ENDIF.
ENDFUNCTION.
In above code how to capture 'EV_RC' when FM is called as background task.Prakash,
CALL FUNCTION IN BACKGROUND TASK allows no IMPORTING parameters, so that your code will produce a syntax error.
The calling program can only handle errors of remote function calls (RFC) if these are either
- synchronous RFC (that is CALL FUNCTION ... DESTINATION ...) or
- asynchronous RFC (that is CALL FUNCTION STARTING NEW TASK ... DESTINATION ...).
Both synchronous and asynchronous RFC allow the capturing of errors by means of exceptions. But that is a different topic. -
What are function modules used in alv,and its explanation
what are function modules used in alv,and its explanation
hi..
The important function modules are
Reuse_alv_fieldcatalog_merge
Reuse_alv_list_display
Reuse_alv_events_get
Reuse_alv_grid_display
Reuse_alv_commentary_write.
<b>REUSE_ALV_FIELDCATALOG_MERGE</b>
This function module is used to populate a field catalog which is essential to display the data in ALV.
If the output data is from a single dictionary table and all the columns are selected, then we need not exclusively create the field catalog. Its enough to mention the table name as a parameter (I_structure_name) in the REUSE_ALV_LIST_DISPLAY. But in other cases we need to create it.
Note : Fieldcatalog can be filled manually also by filling up all the required details into the internal table
The important parameters are:
1. Export:
a. I_program_name : report id
b. I_internal_tabname : the internal output table
c. I_inclname : include or the report name where all
the dynamic forms are handled.
2. Changing
ct_fieldcat : an internal table with the type
SLIS_T_FIELDCAT_ALV which is declared in the
type pool SLIS.
<b>REUSE_ALV_LIST_DISPLAY</b>
This is the function module which prints the data.
The important parameters are:
1. Export:
I_callback_program : report id
I_bypassing_buffer : X
I_buffer_active :
I_callback_pf_status_set : routine where a user can set
his own pf status or change the
functionality of the existing pf status.
I_callback_user_command : routine where the function codes are
handled.
I_structure name : name of the dictionary table
Is_Layout : structure to set the layout of the report
It_fieldcat : internal table with the list of all fields and their
attributes which are to be printed (this table
can be populated automatically by the function
REUSE_ALV_FIELDCATALOG_MERGE
It_events : internal table with a list of all possible events
of ALV and their corresponding form names.
2. Tables:
a. t_outtab : internal table with the data to be output
<b>REUSE_ALV_EVENTS_GET: </b>
Returns table of possible events for a a list type
1. Import:
Et_Events :
The event table is returned with all possible CALLBACK events for the specified list type (column NAME). For events to be processed by the Callback, their FORM field must be filled. If the field is initialized, the event is ignored. The entry can be read from the event table, the field FORM filled and the entry modified using constants from the type pool SLIS.
2. Export:
I_list_type:
0 = simple list REUSE_ALV_LIST_DISPLAY
1 = hierarchical-sequential list
REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = simple block list REUSE_ALV_BLOCK_LIST_APPEND
3 = hierarchical-sequential block list
REUSE_ALV_BLOCK_LIST_HS_APPEND
<b>REUSE_ALV_GRID_DISPLAY</b>
A new function from 4.6 version, to display the results in grid rather than a
preview.
Parameters : same as reuse_alv_list_display
<b>REUSE_ALV_COMMENTARY_WRITE</b>
This is used in the Top-of-page event to print the headings and other
comments for the list.
It_list_commentary : Internal table with the headings of the type
slis_t_listheader.
This internal table has three fields:
Typ : H - header, S - selection, A - action
Key : only when typ is S.
Info : the text to be printed
<b>plz reward pts if helpful.</b>
regards
vijay. -
Problem when calling function module CV120_DOC_CHECKOUT_VIEW in background
Hi ,
I'm currently developping an abap program which extract document from KPRO for printing into a windows Folder.
For this I use standard function module CV120_DOC_CHECKOUT_VIEW.
When i run my program in foreground task there's no problem, but when i run it in background task the extract doesn't work. It seems that the system cannot connect to the Windows Network.
Whe the program is running in foreground task, the function module user SAPHHTP RFC destination, when it runs in background task it use SAPFTP destination .
Does somebody can help me ?
thanks in advanceHi Ajay,
The program extract document into a folder on Windows Network that means on a server not on a PC .
I know that in background task ther's no connection with sapgui.
For example when i want to create a file on network n background task i use OPEN_DATASET instruction and that works fine.
My problem is the use of the standard function module CV120_DOC_CHECKOUT_VIEW in background task because when this function module is running in background task it use the SAPFTP rfc destination instead of SAPHHTP rfc destination in foreground task . I check the RFC destination , thoses works both . SO i think the problem comes from parameters given to the function module.
Regards. -
Which are function modules used to convert into XML format in SAP 4.6c Ver
which are function modules used to convert into XML format in SAP 4.6c Ver
Hi,
check this program , I think this will help you
TYPE-POOLS: ixml.
TYPES: BEGIN OF xml_line,
data(256) TYPE x,
END OF xml_line.
data : itab like catsdb occurs 100 with header line.
data : file_location type STRING.
data : file_name like sy-datum.
data : file_create type STRING.
file_name = sy-datum .
file_location = 'C:\xml\'.
concatenate file_location file_name into file_create.
concatenate file_create '.XML' into file_create.
DATA: l_xml_table TYPE TABLE OF xml_line,
l_xml_size TYPE i,
l_rc TYPE i.
select * from catsdb into table itab.
append itab .
CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT'
EXPORTING
I_FIELD_SEPERATOR =
I_LINE_HEADER =
I_FILENAME =
I_APPL_KEEP = ' '
I_XML_DOC_NAME =
IMPORTING
PE_BIN_FILESIZE = l_xml_size
TABLES
i_tab_sap_data = itab
CHANGING
I_TAB_CONVERTED_DATA = l_xml_table
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 24
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = file_create
filetype = 'BIN'
CHANGING
data_tab = l_xml_table
EXCEPTIONS
OTHERS = 24.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
write : 'INTERNAL TABLE DATA IS SUCCESSFULLY DOWNLOADED TO LOCATION', file_create .
Thanks. -
Error message when using function module HRIQ_TESTRESULTS_CREATE
Hi,
I need your help, I'm trying to use function module HRIQ_TESTRESULTS_CREATE to create external test results, I've used this function before without subscores, now I need to create subscores, but I get the message: "Grading scale UBID applies".
The test type EXAM_UB_ING has assigned the UBID academic scale, which has a range from 1 to 677. Test type EXAM_UB_ING has 3 subtests (grammar, listening and reading) which also have the UBID academic scale assigned.
I think this isn't a customizing problem because I can create test results with subscores using the PIQST00 transaction, the error message happens just when using the function module.
I'm using this import parameters:
STUDENT:
PL: 01
OT: ST
OBJID: Student ID
TESTRESULTS_HEADER:
ISSUEDATE 08.02.2010
VALIDDATE 30.04.2010
TEST_GUID
TESTEO 50000269
TRANSEO 00000000
TESTTYPE EXAM_UB_ING
SESSIONID T1
SESSIONYEAR 2010
ENTRYDATE 08.02.2010
TESTPASSFAIL
TESTTOTRES 458
TESTSCALE_ID
TOTALPERCENT1 0,00
TOTALPERCENT2 0,00
ENTRYMODE
SUBTY
Table TESTRESULTS_SUBSCORES:
SUBTESTID GRAMMAR
SUBTESTTRES GRAMMAR
SUBT 203
SUBTESTID READING
SUBTESTTRES READING
SUBT 120
Does anybody know which could be the error? Or any other function module which I can use? (with HRIQ_TESTRESULTS_PROCESS_DATA I get the same error message).
Thanks in advance!
AraceliAraceli,
I just noticed. You are populating SUBTESTSCALE_ID in subtest result structure.That's the reason it's throwing this error. it is trying to match Scale ID from test with value in sub test result scale ID.
Prabhat Singh -
NO Authorization error when accessing Functional module RH_CUT_OBJECT
Hi,
I am getting NO AUTHORIZATIOn error when I am executing SE37-->FUNCTIONAL OBJECT-RH_CUT_OBJECT.
I also checked SU53 screenshot which says AUTHORIZATION CHECK SUCCESSFUL and there are no errors or missing authorizations highlighted in SU53.
I switched on the TRACE-ST01 then also the error is not captured.
I would like to know WHY am I getting NO AUTHORIZATION error.
I am already having access to T-CODE SE37, SE11, SE80, SMARTFORMS and authorization object S_DEVELOP.
I need to know this ASAP on why I am getting NO AUTHORIZATION error when I am trying to access the FUNCTIONAL MODULE RH_CUT_OBJECT whereas I am having all the required authorization required for ABAP Developer including SE37.
Is it something I need change at ABAP code level.
Please advise ASAP.The reason is ..You do not have acess to see/acess the data this FM is trying to acess ...Debug the function module keep a breakpoint at The Raise statement see which authorization you do not have ....BTW this is my guess you are trying to demilit certain objects /infotypes using this FM and delimit basically makes that object non-usable in that system .So it is quite evident that every one will not have authorization for that .Please post in detail that what is it that you are trying to achieve using this function module .....
Also you can check with debugging which authority object is being checked before raising the message and can ask security team to get that added to your profile ....
Thanks,
Anjaneya -
Doubt in export, import and table para when creating Function Module
Dear fellow ABAPers,
I have a doubt in defining export, import and table parameter while creating a function module.
I am calling a function module inside a user exit. Now in the user exit the SAP fills an internal table called i_lfa1 with all the data user has eneterd.
Now I want to pass this whole internal table to function module and the perform some checks on the values of internal table.
After that function module fills an error structure with values depending on some check.
1)
How do I pass this internal table to function module ?
When I am creating function module in se37 where do I define this iternal table type ? Is it in Import or Table parameter during function module creation?
2)
Where do I define error structure type (which is returned by function module to main program)? Is it in Export or table parameter during function module creation?
Please clear my doubt..
Relevant points will be awarded.
Regards,
Tushar.Hi Tushar,
1. How do I pass this internal table to function module ?
I assume u are creating your own Y/Z FM.
Pass it thru TABLES parameter.
2. When I am creating function module in se37 where do I define this iternal table type
Define this in TABLES interface.
What Type ?
THE SAME TYPE WHICH HAS BEEN DEFINED
WHILE PASSING IN THE USER-EXIT FUNCTION MODULE.
IF U SEE THE FM OF THE USER-EXIT,
U WILL COME TO KNOW.
3.
Where do I define error structure type (which is returned by function module to main program)? Is it in Export or table parameter during function module creation?
Define it in TABLES interace. (not in export, import)
(Since what u are going to return is an internal table)
U can take for eg. BDCMSGCOLL.
OR u can create your own Y/Z structure
for the same purpose.
(or u can use the structure type T100)
I hope it helps.
Regards,
Amit M. -
ABAP Dump when calling Function Module Starting New Task
Hi all. I have a tricky situation now, I am doing a POC on parallel processing.
I am getting an ABAP dump on the following Call Function line which is in class lcl_steer_114numc (See below for full program):
METHOD start.
CALL FUNCTION 'Z_ZZCLS_STEER_114NUMC'
STARTING NEW TASK me->id
CALLING me->finish ON END OF TASK.
ENDMETHOD. "start
However I get the following ABAP dump:
Short text
Statement "CALL FUNCTION .. DESTINATION/STARTING NEW TASK/IN BACKGROUND TASK"
The function module only contains a wait statement to simulate parallel processing. It is strange that it dumps here, because when I change the FM call to another call that has been triggered successfully from other classes, it still produces the same ABAP dump.
The background of the Proof Of Concept is to see if I can get an event to trigger the next process that depends on the outcome of the previous process. Parallel processes are run in the start methods by calling RFC.
<Garbled code removed>
Moderator Message: Please post relevant portions of the code only.
Edited by: Suhas Saha on Jul 17, 2011 1:17 PMWell, the thing is I did manage to run 3 other Function Modules asynchronously succeesfully prior to that function call, with the same exact function call syntax. Further more, I have tried editing it with your suggestion but I get the exact same dump.
The complete function group can be downloaded here (slinkee file):
https://docs.google.com/leaf?id=0B3sua1Bw4XK4ZmFhNzcwMTgtYzQ0Mi00NzQ4LTg5YTMtNDNlNWUxYTM2NTg3&hl=en_US
The complete program can be downloaded here (slinkee file):
https://docs.google.com/leaf?id=0B3sua1Bw4XK4YWJmNjU3ODYtODRmMy00Nzg2LThkNTUtZjNkNDRhZGQ3MTUw&hl=en_US
The complete ST22 dump can be found here:
https://docs.google.com/leaf?id=0B3sua1Bw4XK4ZDU1YmFkZDAtOTU5MS00ZTgwLWFlZTktNWZhMDUxMzJlZWNl&hl=en_US
Basically I ST22 gives me the following:
Runtime Errors RPERF_ILLEGAL_STATEMENT
Date and Time 17.07.2011 05:29:54
|Short text |
| Statement "CALL FUNCTION .. DESTINATION/STARTING NEW TASK/IN BACKGROUND TASK" |
|What happened? |
| Error in the ABAP Application Program |
| |
| The current ABAP program "Z_ZZB1_CLOSE_PERIOD_TEST2" had to be terminated |
| because it has |
| come across a statement that unfortunately cannot be executed. |
And it explains it here (but is not helpful / relevant at all) as I ran the program from SE38.
|Error analysis |
| There is probably an error in the program |
| "Z_ZZB1_CLOSE_PERIOD_TEST2". |
| The program was probably called in a conversion exit |
| or in a field exit. These are implemented by |
| function modules called CONVERSION_EXIT_xxxxx_INPUT/OUTPUT or |
| USER_EXIT_xxxxx_INPUT. |
| Conversion exits are triggered during screen field transports or |
| WRITE statements, field exits during field transports from the |
| screen to the ABAP/4 program. |
| In this connection, the following ABAP/4 statements are not allowed: |
| |
I hope you try to download the slinkee files and you will notice the call function I performed was no different than the other call function RFC calls that really are working. -
What are functional modules? why we use them?
HI all,
Please explain what are the functional modules? why we use them? I am talking in reference to SAP HR.
Thanks,
RashmiHi SAP Gurus,
as now i got some idea that SAP has provided lot of funtional modules and also we can create our own function modules,
1, can any one tell with an example when and at what cases this funtional modules are made use of, and how will we come to know which funtional module has to be made use of and for which specific purposes.
2, do you mean to say SAP has provided many funtional modules but they are in Dormant stage untill activated or made use of.
3. Is developing funtional module mainly ABAPers work or could be done by Funtional person alltogether (in case of using the existing FMs
4, When and how this FMs work, what is the trigger point do we have to run this when required, if so how
5, what is the difference Between FMs and UserExits
Can anyone throw some light on this with an example,
Points for sure for Suitable answers
Thanks and Regards
Sathish
Edited by: sathish kumar on May 5, 2008 7:43 PM -
How to reduce size of popupbox when using function module POPUP_TO_CONFIRM
hi all,
i have one doubt. when i use POPUP_TO_CONFIRM function module it is showing the message in a popup. this popupbox size is constant. now i want to change the size of the window. is there any function module exist. i refered old threads but i unable to find the suitable function module.
thanks,
maheedhar.tYou cannot by using the POPUP_TO_CONFIRM.
You can try one of the following function modules :
POPUP_TO_CONFIRM_STEP
POPUP_TO_CONFIRM_WITH_MESSAGE
POPUP_TO_CONFIRM_WITH_VALUE
POPUP_TO_DECIDE
POPUP_TO_DISPLAY_TEXT
POPUP_TO_GET_VALUE
regards,
Hans
Please reward all helpful answers !!!!! -
Syntax Error with Table Parameter (type: ANY) when Creating Function Module
Hello experts,
I want to create a function module with a table parameter and table type is ANY. But when I check (Ctrl+F7) this function module, syntax error occurs - "In this statement, the internal table "MSG_TABLE_ITEM" must have the type "STANDARD TABLE"."
Could anyone tell me what the wrong is? And how can I fix it?
Thanks,
ShelwinHi,
For table parameters, you can only pass
MSG_TABLE_ITM TYPE STANDARD TABLE
or
MSG_TABLE_ITM ( don't fill other columns TYPING ASSOCIATED TYPE ).
For reference check FM 'GUI_UPLOAD' - Table parameters
Regards,
DPM -
Problem when using function module : SO_NEW_DOCUMENT_SEND_API1
hi,all
when i use this function module to send external email ,a strange problem has been encountered. After executing this FM,i find that the return parameters SY-SUBRC = 0 . but when i use tcode SCOT to check the email in SAP email box,nothing has been found.
could anyone please give me a clue about where the error occur ?you can try using commit work fter sy-subrc check.
and also Try calling this Function module SO_DEQUEUE_UPDATE_LOCKS
if sy-subrc eq 0.
commit work.
call function 'SO_DEQUEUE_UPDATE_LOCKS'.
endif. -
When change Function Module, how to ensure JAVA sees it
I added a new TABLE to a remotely-callable Function Module. I added a new table to the "TABLES" tab of the function module. The table is then populated by the code in the FM.
I now want the JAVA code to be able to access this new TABLE. I am using the "adaptive RFC" model to make calls to SAP.
After making a change such as this, do I need to
1. stop and start the JRA factories?
2. stop and start the J2EE java application?
3. stop and start the whole server?
Thanks,
Kevin1. stop and start the JRA factories? <b>If you are working ARFC then nothing to do with JRA factory.</b>
2. stop and start the J2EE java application? <b>If you have used Enterprise Connector then Re Impor the Model </b>
3. stop and start the whole server?<b>After re import you need to restart the server</b>
Regards
Abhilash
Maybe you are looking for
-
hello can anyone help me with this problem atm i'm making a project which uses EJBs (with JPA) and some fields in the EJBs get auto generated when persisting an EJB entity to the database Writing to the database and reading out of it works perfectly,
-
Bapi to move Quality inspection stock to unrestricted stock
Hi All, I am developing a report where the material batches should be distributed to other storage locations within a plant (as we do it in MB1B with movement type 311).But if that material is in QI stock( inspection lots) then that should be forci
-
Two Coherence instances with same JVM
Hi all, I have a special case need your advice. we have an architecture platform build on top coherence to support some system data (session persistence data...etc). and we are building applications on top the platform, the applications also need coe
-
BB 8900 cosmetic problem on my phone
recently i have bought a BB 8900 Curve. To my surprise in less than 5 months the outer jacket of the phone (steel like plated jacket) is peeling of from various places spoling the entire look of the phone. What is more surprising that I am clueless o
-
My computer is SO SLOW - what can I do?
My Mac Book is running very slowly...what can I do?