Function modules modification
Hi, when a function module is modified and saved, the system is asking for request number. What should be given there? Even if we do not have plans to transport this module, we need to provide the request number? Thanks
HI,
if u create that function module in different package other than that of local package it will ask u for the req number.save it in $tmp package or click on the create request number to get rid of that problem.
to change the package go to that function module and select goto->object directory entry.one pop-up will come.select change button there u can change the package.
rgds,
bharat.
Message was edited by:
Bharat Kalagara
Similar Messages
-
SAP Upgrade - Standard function modules & modifications
Hello everybody,
we are doing a SAP Upgrade to SAP ERP 6.0 and I need your help
Some SAP standard funcion modules were modified in the last years and some weeks ago the changes were undone. The last version of the function modules are the same than the original function modules, but the version manager shows that the last version belongs to the user FGZ583 (and not SAP).
The Problem is, that SAP deals with that function modules as a modification (because the last change was done by FGZ583?), but they are identical to the original SAP function modules.
When the Upgrade is done, the SPAU/SPDD/se95 show that function modules as "modifications", although they are the same that the original ones.
What could I do to avoid that SAP deals with that function modules as modifications?
Cheers
PrashadHello Prashad,
Its standard that once the object is changed the corresponding entry is recorded in different tables.Even if you roll back now system will treat as the modifications because corresponding change entries are present in the tables. You can try to activate the older versions but i don't think this will help you.
This is not a point of worry as in SPDD adn SPAU you can choose reset to original for all those objects.
Even if you can get those objects to move back to the source version they will get back to the standard in the new release.So my advise will be to let your upgrade run and then reset these objects to original.
Regards
Niraj -
Function module modification(z_hr_read_quali_texte)
when i execute the function module the result is a table with 10 lines(example)
i donot want these lines having in the exported table LINES of the function module
H2Notiz angelegt von daniela Schwaiger (sgd) am 14.07.2005 um 17:45:11
(cet)
H2Notiz angelegt von doosa sumitha (dss) am 23.03.2007 um 10:24:50 (cet)
H2Notiz angelegt von babu narendra (bnc) am 23.03.2007 um 10:26:21 (cet)
In this coding when can i change the logic( may be AFTER REFRESH LINES)
FUNCTION Z_HR_READ_QUALI_TEXTE.
""Lokale Schnittstelle:
*" IMPORTING
*" VALUE(PLVAR) TYPE PLVAR DEFAULT '10'
*" VALUE(OTYPE) TYPE OTYPE
*" VALUE(OBJID) TYPE HROBJID
*" VALUE(DATUM) TYPE DATUM DEFAULT SY-DATUM
*" VALUE(QUALI) TYPE HROBJID
*" TABLES
*" LINES STRUCTURE TLINE
*" EXCEPTIONS
*" NOT_FOUND
*" ILLEGAL_INFOTYPE
*" INTERNAL_ERROR
*" NOTE_NOT_FOUND
dieser fuba liest die qualifikation des quali-profil's
des bewerbers / der person
im qualiprofil kann eine notiz hinterlegt werden
wir lesen diesen text
Marcus Sieber; 23.01.2007
lokale datendefinition
data: wa_hrp1001 like hrp1001,
wa_hripkey like p1001.
DATA: local_name TYPE ttname,
local_info TYPE tninfo,
local_head TYPE tthead,
local_spras LIKE thead-tdspras, "XMK#693640
local_subrc TYPE tsubrc,
local_title LIKE ttxit-tdtext,
lines_tab TYPE ttline OCCURS 1 WITH HEADER LINE.
1. verknüpfung lesen
select single * from hrp1001
into wa_hrp1001
where otype = 'Q'
and objid = quali
and plvar = plvar
and rsign = 'B'
and relat = '032'
and istat = '1'
and sclas = otype
and sobid = objid
and begda <= datum
and endda >= datum.
if sy-subrc <> 0.
raise not_found.
endif.
PERFORM fgr_init(SAPLRHNT).
move-corresponding wa_hrp1001 to wa_hripkey.
PERFORM txt_compose_key(SAPLRHNT) USING wa_hripkey local_name local_info
local_subrc.
IF local_subrc <> 0.
RAISE illegal_infotype.
ENDIF.
PERFORM txt_get_spras(SAPLRHNT) USING
local_info-noteid "XMK#693640
local_name
local_info-noteobj
CHANGING local_spras
local_subrc.
*--- read text -
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = local_info-noteid
language = local_spras "XMK#693640
name = local_name
object = local_info-noteobj
IMPORTING
header = local_head
TABLES
lines = lines_tab
EXCEPTIONS
id = 1
language = 1
name = 2
not_found = 2
object = 1
reference_check = 1
wrong_access_to_archive = 1
OTHERS = 1.
CASE sy-subrc.
WHEN 1. RAISE internal_error.
WHEN 2. RAISE note_not_found.
ENDCASE.
refresh lines.
lines[] = lines_tab[].
ENDFUNCTION.add the following in the data declaration
data: w_str1(7) value 'H2N0tiz' ,
w_str2(5) value '(CET)'.
& this line of code after<i> refresh lines.</i>
delete lines_tab where ( tdline cs w_str1 or tdline cs w_str2 ).
~Suresh -
Function Module for REBDBU0012-BU Field Modification Criteria - Sample reqd
We are using three distinct type of Business Entities to look after three types of business of client. For this we have defined three number ranges for each such BE. Now, we wish to use Transaction code "REBDBU0012-BU Field Modification Criteria " and wish to define the field status of based in BE number range criteria.
I have discussed this in detail with my developer but he is unable to find any help/functional module. Is there any sample object available with in SAP library or if any member from SAP community could help us in it.
Regards
Rohit GoelHi Rohit,
function module that gets field status für BU in standard is REBU_REBU_EVENT_FMOD2.
There is no such function module that fulfills your requirement available yet.
For your requirement you have to develop your own function module with the same parameters and in the function module you have to insert the logic to determine the field status as you require it.
You may use REBU_GET_BUSOBJ to get the data of the object and so you should have all necessary information. As I already mentioned you can use RERO_RERO_EVENT_FMOD2_USAGE as an example.
Hope that helps.
Regards, Franz -
Modification of function module
Hi Experts,
This is the function module.
for "R3001" contract type (specified as WHEN 'R3001'),
the extended termination date should be end of the month ,for this we are aading 29 days to agent starting date, but in the case of february if we add 29 days it is going to the next month,(every year the problem appearing in the month of FEB only) for leap year also its creating problem in the month of february only,if it is moving to next month the checks are paying unnecessarily. My requirement is whatever the "ZAGENT_START" ,the extended termination should be last day of the month only.
How can we modify this ? Please suggest me ASAP.
FUNCTION zepc_get_extended_trm_dt_new.
""Local interface:
*" IMPORTING
*" REFERENCE(INSOBJECT) TYPE INSOBJECT_MD
*" REFERENCE(ZAGENT) TYPE ZAGENT_NO
*" REFERENCE(SUB_CHANNEL) TYPE ZSUB_CHANNEL
*" REFERENCE(ZCONT_CODE) TYPE ZCONTR_CODE
*" REFERENCE(ZAGENT_START) TYPE ZAGENTNUMSTDATE
*" REFERENCE(ZAGENT_REF) LIKE ZEPC_IO_AGENT STRUCTURE
*" ZEPC_IO_AGENT OPTIONAL
*" REFERENCE(ZAGENT_NEW) LIKE ZEPC_IO_AGENT STRUCTURE
*" ZEPC_IO_AGENT OPTIONAL
*" EXPORTING
*" REFERENCE(EXTENDED_TRM_DATE) TYPE ZAGENTNUMSTDATE
02/10/06 TMARVIN DV2K908222 TD #3181
08/09/06 APOT5 DV2K910117 Include status reason code
DATA: l_day TYPE p,
t_agent LIKE zepc_io_agent OCCURS 0 WITH HEADER LINE,
l_enddate LIKE sy-datum,
f_extend TYPE c.
CLEAR l_enddate.
IF zagent_ref IS INITIAL AND
zagent_new IS INITIAL.
Then derive the from DB.
SELECT * FROM zepc_io_agent INTO TABLE t_agent
WHERE insobject = insobject AND
zagent_no = zagent.
SORT t_agent BY zintrl_agt_no DESCENDING.
READ TABLE t_agent INDEX 2.
IF t_agent-zagent_stat = 'ACT' AND
( t_agent-zstat_reas = '010'
or t_agent-zstat_reas = '028' ) .
f_extend = 'X'.
ENDIF.
ELSE. "Compare structures.
Still to do.
ENDIF.
Processing Logic
IF f_extend IS INITIAL.
extended_trm_date = zagent_start - 1.
ELSE.
CASE zcont_code+0(5).
WHEN 'R3001'.
extended_trm_date = zagent_start + 29.
Set the comparison date to the end date of the active record
l_enddate = zagent_start - 1.
WHILE zagent_start4(2) = extended_trm_date4(2).
WHILE l_enddate4(2) = extended_trm_date4(2).
ADD 1 TO extended_trm_date.
ENDWHILE.
WHEN 'L2000' OR 'NYFS '.
extended_trm_date = zagent_start + 6.
CLEAR l_day.
CALL FUNCTION 'DAY_IN_WEEK'
EXPORTING
datum = extended_trm_date
IMPORTING
wotnr = l_day.
CALL FUNCTION 'DATE_CHECK_WORKINGDAY'
EXPORTING
date = extended_trm_date
factory_calendar_id = 'ZD'
message_type = 'I'
EXCEPTIONS
date_after_range = 1
date_before_range = 2
date_invalid = 3
date_no_workingday = 4
factory_calendar_not_found = 5
message_type_invalid = 6
OTHERS = 7.
If not a working day and it is Thursday, make it Friday.
IF sy-subrc = 4 AND
l_day = 4.
extended_trm_date = extended_trm_date + 1.
ENDIF.
WHEN OTHERS.
extended_trm_date = zagent_start - 1.
ENDCASE.
ENDIF.
ENDFUNCTION.
Regards,
Sam.>
asdf hgvbg wrote:
My requirement is whatever the "ZAGENT_START" ,the extended termination should be last day of the month only.
> Regards,
> Sam.
Hi sam,
Only since you asked as above i gave the solution, but now you are confusing.
What exactly you want?
If Zagent_start is 12th january and you add 29 days it will also go to next month, right?
Give some example zagent_start dates and what you expect in EXTENDED_TRM_DATE.
Regards
Karthik D -
Modification in SAP Function Module of ABUZ
Dear experts,
There is a Function Group ABUZ. In it, there is a Function Module fiaa_get_buzsm. In the FM I found that one line has to be modified. I would like to know if there is a possibility to use a user exit? How to check whether the user exit exists? What exactly I need to know / to have to write such an exit?
Thank you and regards
RafalHi
I don't believe there's an exit so you should change the std program.
Anyway try to check if there's a code line as CALL CUSTOMER-FUNCTION
Max -
Modifications to ACAC_DATA_TRANSFER_EXAMPLE_2 function module
Hi,
I have a requirement where ACAC_DATA_TRANSFER_EXAMPLE_2 this function module has to be copied in to some u2018Z_VEND_INVu2019 and make the changes as below mentioned-
-- The standard logic in selection method u2018Z_VEND_INVu2019u2019 only takes into consideration vendor invoices that have not yet been cleared. This restriction should be deleted, i.e. all vendor invoices that adhere to the selection criteria should be selected.
Here- in this FM which field refres to vendor invoices and what logic do i need to implement.
Pls help.Sample.....
call method cl_gui_frontend_services=>gui_download
exporting
* BIN_FILESIZE =
filename = your_file_path
* FILETYPE = 'ASC'
* APPEND = SPACE
* WRITE_FIELD_SEPARATOR = SPACE
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = SPACE
* WRITE_LF = 'X'
* COL_SELECT = SPACE
* COL_SELECT_MASK = SPACE
* IMPORTING
* FILELENGTH =
changing
data_tab = The_ALV_itab
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* others = 22
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
Regards,
Rich Heilman -
Required help on Function Modules and Bapis
Web portal publishing of ERS invoice letters. This involves modification in the BAPI screens to show the invoice PDF instead of printing??
can anyone help me in fixing this issue.hi Anjaneyulu,
open the t-code --> and go to menu system->status-->select the program and open the program-->
selct the tree structure----in the left side the includes screen and function module everthing will show..
or
open the t-code --> and go to menu system->status-->select the program and open the program-->
go to attributes and select the Package..
next----
go to se80--> enter the package --> and dispalay it shows the list of Program , include transaction function modules and bapi's under the pakage
Regards,
Prabhudas -
Function module to release a work permit attached to a service order.
Hi,
We have a requirement of automating the process of work permit release attached to service order.
I am looking for a function module / BAPI for releasing the work permit attached to a service order by passing service order number and permit ID/Name.
If any of you have come accrose such one please share.
Thanks
AchuthanandanHello Philip
The following function modules should be useful:
- CY_PRIMARY_SELECTION - Function module for selection of orders for the work center
- CY_SECONDARY_SELECTION - Check for additional criteria
- CR_CAPACITY_AVAILABLE_PERIODS - Reads the available capacity from work center
- HR_PERSON_READ_TIME_INFO - Reads the available capacity from person (modification)
- CY_GET_PART_CAPACITY - used only for the first period to read backlog
- CY_LOAD_DISTRIBUTION - Distribution key
Please observe that these are simple function modules, not BAPIs, That means, they were developed to be used on the SAP internal programs and they are not supported by SAP when used in custom programs.
BR
Caetano -
Calling New Function Module from JAVA ISA b2b
I need to call a new function module which accepts some parameters as input and
returns some result parameters back as output.
These returned value needs to be displayed on the JSP pages of ISA B2B applications.
Can someone please guide me and provide code snippet on how to do this?
Thanks in advance.
Points will be awarded for all relevant and helpful answers.Stride,
I did this on CRM ISA 4.0... I used the dev and extension guide as a basis - I think the ISA 5.0 guide has the examples and tutorials in a separate document that can also be downloaded from service.sap.com.
Heres some info on how to do it although I can't guarantee this is the full solution or that it will work the same for ISA 5.0, and I will probably forget a lot of stuff as its been a few years since I did it! I also cant guarantee it is the correct way to do it but it worked! Basically, we built a link into the order overview page to display urls to order tracking websites using an RFC on the backend CRM system. Hope it helps anyway.
1. Create RFC enabled function module in backend.
2. Edit file backendobject-config.xml in folder project_root\b2b_z\WEB-INF\xcm\customer\modification:-
[code] <backendobject
xmlns:isa="com.sapmarkets.isa.core.config"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xml="http://www.w3.org/XML/1998/namespace">
<configs>
<!-- customer changes in backendobject-config should be done here by extending/overwriting the base configuration-->
<xi:include
href="$
Template for backend object in customer projects
Concrete implementation of a backend object
This implemenation demonstrates how a backend object
is used to communicate with the CRM system
@see com.ao.isa.backend.boi.Z_AOFuncBackend#getOrderDeliveryTrackingData(java.lang.String)
Interface used to communicate with a backend object
The purpose of this interface is to hide backend implementation details
from the business objects
Returns a vector of Z_OrderDeliverTracking objects containing data to link
to external delivery tracking websites
@param orderNo The sales order document number
@return A vector of order tracking objects
@return
@return
@return
@return
@return
@param string
@param string
@param string
@param string
@param string
/modification/backendobject-config.xml#xpointer(backendobject/configs/*)"/>
<!-- This is an example customer extension. A new Backend Object is registered in the framework using XCM extension mechanism. -->
<!-- If you write customer extensions you should register your backend objects in the same way. -->
<!-- Please make sure that you use the correct base configuration (e.g. crmdefault for CRM or r3default, r3pidefault for R/3) -->
<config
isa:extends="../config[@id='crmdefault']">
<businessObject
type="Z_AO_Custom"
name="Z_AO_Custom"
className="com.ao.isa.backend.crm.Z_AOFuncCRM"
connectionFactoryName="JCO"
defaultConnectionName="ISAStateless"/>
</config>
</configs>
</backendobject>
[/code]
File com.ao.isa.backend.crm.Z_AOFuncCRM.java looks like this :-
[code] package com.ao.isa.backend.crm;
//jco imports
import java.util.Vector;
import com.ao.isa.backend.boi.Z_AOFuncBackend;
import com.ao.isa.businessobject.order.Z_OrderDeliveryTrackingItem;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.ParameterList;
import com.sapmarkets.isa.core.eai.BackendException;
import com.sapmarkets.isa.core.eai.sp.jco.BackendBusinessObjectBaseSAP;
import com.sapmarkets.isa.core.logging.IsaLocation;
public class Z_AOFuncCRM
extends BackendBusinessObjectBaseSAP
implements Z_AOFuncBackend
// initialize logging
private static IsaLocation log =
IsaLocation.getInstance(Z_AOFuncCRM.class.getName());
/* (non-Javadoc)
public Vector getOrderDeliveryTrackingData(String orderNo)
Vector urlData = new Vector();
try
// get Java representation of function module
JCO.Function func =
getDefaultJCoConnection().getJCoFunction(
"Z_BAPI_CRM_ORDER_TRACKING_URLS");
// provide export parameters
ParameterList params = func.getImportParameterList();
params.setValue(orderNo, "ORDER_NO");
func.setExportParameterList(params);
// execute function
getDefaultJCoConnection().execute(func);
// get result table
JCO.Table table =
func.getTableParameterList().getTable("TRACKING_DATA");
int numRows = table.getNumRows();
for (int i = 0; i < numRows; i++)
// get row
table.setRow(i);
// create a new Z_orderdeliverytracking object
Z_OrderDeliveryTrackingItem trackItem =
new Z_OrderDeliveryTrackingItem(
table.getString(0),
table.getString(1),
table.getString(2),
table.getString(3),
table.getString(4));
urlData.addElement(trackItem);
trackItem = new Z_OrderDeliveryTrackingItem();
return urlData;
catch (BackendException bex)
// The following key has to be added to WEB-INF/classes/ISAResources.properties
// in order to see the exception correctly
log.config("ao.b2b.order.error.getOrderTrackingURLs", bex);
return null;
[/code]
And file com.ao.isa.backend.boi.Z_AOFuncBackend.java looks like this:-
[code] package com.ao.isa.backend.boi;
//package java.ao.com.ao.isa.backend.boi;
import java.util.Vector;
import com.sapmarkets.isa.core.eai.sp.jco.JCoConnectionEventListener;
public interface Z_AOFuncBackend
public Vector getOrderDeliveryTrackingData(String orderNo);
[/code]
Whilst file com.ao.isa.businessobject.order.Z_OrderDeliveryTrackingItem.java looks like this:-
[code]
package com.ao.isa.businessobject.order;
// Referenced classes of package com.sapmarkets.isa.businessobject.order:
// PaymentType
public class Z_OrderDeliveryTrackingItem // extends SalesDocument implements OrderData
private String deliveryDocNo;
private String goodsIssuedDate;
private String consignmentNo;
private String status;
private String url;
public Z_OrderDeliveryTrackingItem()
public Z_OrderDeliveryTrackingItem(
String delDocNo,
String GIDate,
String consNo,
String status,
String url)
this.setDeliveryDocNo(delDocNo);
this.setGoodsIssuedDate(GIDate);
this.setConsignmentNo(consNo);
this.setStatus(status);
this.setUrl(url);
public String getConsignmentNo()
return consignmentNo;
public String getDeliveryDocNo()
return deliveryDocNo;
public String getGoodsIssuedDate()
return goodsIssuedDate;
public String getStatus()
return status;
public String getUrl()
return url;
public void setConsignmentNo(String string)
consignmentNo = string;
public void setDeliveryDocNo(String string)
deliveryDocNo = string;
public void setGoodsIssuedDate(String string)
goodsIssuedDate = string;
public void setStatus(String string)
status = string;
public void setUrl(String string)
url = string;
[/code]
3. Edit file bom-config.xml in folder project_root\b2b_z\WEB-INF\xcm\customer\modification :-
[code] <BusinessObjectManagers
xmlns:isa="com.sapmarkets.isa.core.config"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xml="http://www.w3.org/XML/1998/namespace">
<!-- customer changes in bom-config should be done here by extending/overwriting the base configuration-->
<xi:include
href="$/modification/bom-config.xml#xpointer(BusinessObjectManagers/*)"/>
<!-- This is an example Business Object Manager. It can act as template for customer written Business Object Managers -->
<BusinessObjectManager
name="Z_AO-BOM"
className="com.ao.isa.businessobject.Z_AOBusinessObjectManager"
/>
</BusinessObjectManagers>
[/code]
File com.ao.isa.businessobject.Z_AOBusinessObjectManager.java looks like this:-
[code] package com.ao.isa.businessobject;
// Internet Sales imports
import com.sapmarkets.isa.core.businessobject.management.BOManager;
import com.sapmarkets.isa.core.businessobject.management.DefaultBusinessObjectManager;
import com.sapmarkets.isa.core.businessobject.BackendAware;
Template for a custom BusinessObjectManager in customer projects
public class Z_AOBusinessObjectManager
extends DefaultBusinessObjectManager
implements BOManager, BackendAware {
// key used for the backend object in customer version of backendobject-config.xml
public static final String CUSTOM_BOM = "Z_AO-BOM";
// reference to backend object
private Z_AOFunc mCustomBasket;
constructor
public Z_AOBusinessObjectManager() {
Method is called by the framework before the session is invalidated.
The implemenation of this method should free any allocated resources
public void release() {
Returns custom business object
public Z_AOFunc getCustomBasket() {
if (mCustomBasket == null) {
mCustomBasket = new Z_AOFunc();
assignBackendObjectManager(mCustomBasket);
return mCustomBasket;
[/code]
And uses file com.ao.isa.businessobject.Z_AOFunc.java which looks like this:-
[code]
package com.ao.isa.businessobject;
// Internet Sales imports
import com.sapmarkets.isa.core.businessobject.BOBase;
import com.sapmarkets.isa.core.businessobject.BackendAware;
import com.sapmarkets.isa.core.eai.BackendObjectManager;
import com.sapmarkets.isa.core.eai.BackendException;
import com.sapmarkets.isa.core.logging.IsaLocation;
// custom imports
import com.ao.isa.backend.boi.Z_AOFuncBackend;
import java.util.Vector;
Template for business object in customer projects
public class Z_AOFunc extends BOBase implements BackendAware
// initialize logging
private static IsaLocation log =
IsaLocation.getInstance(Z_AOFunc.class.getName());
private BackendObjectManager bem;
private Z_AOFuncBackend backendAOBasket;
Returns a reference to the backend object. The backend object
is instantiated by the framework.
@return a reference to the backend object
private Z_AOFuncBackend getCustomBasketBackend()
if (backendAOBasket == null)
//create new backend object
try
backendAOBasket =
(Z_AOFuncBackend) bem.createBackendBusinessObject(
"Z_AO_Custom");
// the backend object is registered in customer version
// of backendobject-config.xml using the 'Z_AO_Custom' type
catch (BackendException bex)
// The following key has to be added to WEB-INF/classes/ISAResources.properties
// in order to see the exception correctly
log.config("ao.b2b.order.error.getOrderTrackingURLs", bex);
return backendAOBasket;
This method is needed when a business object has a corresponding
backend object.
public void setBackendObjectManager(BackendObjectManager bem)
this.bem = bem;
Returns a vector of url links for tracking
@return vector of urls
public Vector getOrderDeliveryTrackingData(String orderNo)
// the call is delegated to the CRM aware backend object
return getCustomBasketBackend().getOrderDeliveryTrackingData(orderNo);
[/code]
4. Edit file config.xml in folder project_root\b2b_z\WEB-INF to add custom actions (the section below is just the custom stuff added at the end of the file the Z_orderTracking is the relevant one) :-
[code] <!-- Begin of custom AO action definitions -->
<action path="/b2b/Z_orderTracking" type="com.ao.isa.order.actions.Z_OrderTrackingAction">
<forward name="success" path="/b2b/order/Z_orderTracking.jsp"/>
</action>
<action path="/catalog/Z_displaySVGPage" type="com.ao.isa.catalog.actions.Z_SVGPageAction">
<forward name="success" path="/catalog/Z_SVG_fs.jsp"/>
</action> [/code]
Which points at Java file com.ao.isa.order.actions.Z_OrderTrackingAction.java which looks like this :-
[code] package com.ao.isa.order.actions;
// internet sales imports
import com.sapmarkets.isa.core.BaseAction;
import com.sapmarkets.isa.core.UserSessionData;
// struts imports
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
// servlet imports
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
// Internet Sales imports
import com.ao.isa.businessobject.Z_AOBusinessObjectManager;
import java.util.Vector;
This action acts as a template for customer extensions
public class Z_OrderTrackingAction extends BaseAction
This method is called by the ISA Framework when the
action is executed
public ActionForward doPerform(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
// get user session data object
UserSessionData userSessionData =
UserSessionData.getUserSessionData(request.getSession());
// gettting custom BOM
Z_AOBusinessObjectManager myBOM =
(Z_AOBusinessObjectManager) userSessionData.getBOM(
Z_AOBusinessObjectManager.CUSTOM_BOM);
// get the order number being processed
String orderDocNumber = request.getParameter("orderNo");
// pass the order number back to the page
request.setAttribute("orderNo", orderDocNumber);
if (orderDocNumber != null)
// Get a vector of delivery tracking objects from lower layers (Business Object layer =>
// Business Logic Service Layer)
Vector trackingTable =
myBOM.getCustomBasket().getOrderDeliveryTrackingData(
orderDocNumber);
String error = "";
if (trackingTable != null)
if (trackingTable.size() == 0)
error = "true";
else
error = "false";
else
error = "true";
request.setAttribute("errorMessage", error);
request.setAttribute("trackingTable", trackingTable);
return mapping.findForward("success");
[/code]
5. I added the call to the function module for page orderstatusdetail.jsp in folder project_root\b2b_z\b2b\order to display a custom page Z_orderTracking.jsp in the same folder. To do this I added a link into the HTML to call a JavaScript function that passed the current order number to the /b2b/Z_orderTracking.do actionhandler mapped in the config.xml file.
So, in summary! Create an RFC; define business managers for it in the XML files; create a new Strut action and supporting Java class; create all the Java class for the managers.
I hope this makes some sense!
Gareth. -
Need of Changing Parameters in Function Module
Hi All,
Why we need sepearte Import and Export parameters in Function Module if the Changing Parameters
acts as both import and export parameters.
What is the use of using Changing Parametrs in Function Module.
Thanks in advance.
SundaresanHi,
EXPORT PARAMETERS: When u r passing some value to the function, and the parameter will not be changed in the function, we use export parameter. Example: u pass parameter (a : 10) to a function, even after the function has been executed, value of a will be 10 only.
IMPORT PARAMETER: When u require some value back from the function. u do not provide any initial value to the function. Example : u pass a parameter (b: <blank>) to the function, function returns the same import parameter as (b : 20).
CHANGING PARAMETER: When u pass some value to the function and that function may change that value inside function, then changing parameters are used. Example: u pass parameter ( c: 30) to the function as changing parameter and function modifies this variable and return ( c: 50).
Reward points if helpful.
Thanks & Regards
- Rishika Bawa -
ABAP Function Module where-used in BI-Transformations
Hi,
we have developed some ABAP-Z-Function-Modules. These are used in several BI-Data-Transformations and work fine and performant.
The problem we have now is to find out in which transformation a Function-Module is used.
The where-used-list in SE37 doesn't report any BI-Transformations althought I check all categories.
Got anyone a solution for our problem?
ChristianHi,
see this code for function module where used list only for transformation . i used the same code as bhaskar specified..but little modification..here u used "date_get_week" function module..
TYPE-POOLS slis.
DATA fcat1 TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF t_display OCCURS 0,
targetname LIKE rstran-targetname,
sourcename LIKE rstran-sourcename,
tranid LIKE rstran-tranid,
routine LIKE rstran-startroutine,
line_no LIKE rsaabap-line_no,
line LIKE rsaabap-line,
END OF t_display.
data : input(75) type c.
DATA : input_pattern1(75) TYPE c.
DATA : input_pattern2(75) TYPE c.
DATA : same_source(30) TYPE c.
**Internal table declerations**************************************
TYPES: BEGIN OF t_trans_lookup_finder,
targetname TYPE rstran-targetname,
sourcename TYPE rstran-sourcename,
tranid TYPE rstran-tranid,
routine TYPE rstran-startroutine,
line_no TYPE rsaabap-line_no,
line TYPE rsaabap-line,
END OF t_trans_lookup_finder.
DATA: i_lookup_finder TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_lookup_finder TYPE t_trans_lookup_finder,
i_trans_lookup_finder TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_trans_lookup_finder TYPE t_trans_lookup_finder,
i_trans_final TYPE STANDARD TABLE OF t_trans_lookup_finder,
wa_trans_final TYPE t_trans_lookup_finder.
DATA : i(7) TYPE n.
DATA old_cube(20) TYPE c VALUE ' '.
DATA old_source(20) TYPE c VALUE ' '.
**Selections for update rules**************************************
SELECT DISTINCT targetname sourcename tranid endroutine line_no line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rsaabap AS b ON aendroutine = bcodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
**Selections for Transformations(Expert routine)*******************
SELECT DISTINCT targetname sourcename tranid expert line_no line
INTO TABLE i_trans_lookup_finder FROM
rstran AS a INNER JOIN rsaabap AS b ON aexpert = bcodeid
WHERE
aobjvers = 'A' AND bobjvers = 'A'.
APPEND LINES OF i_trans_lookup_finder TO i_lookup_finder.
Edited by: Sakthi Jaganathan on May 20, 2009 6:25 PM -
BADI or function module for updating open purchase orders
Hi all,
Does anyone know of a BADI or function module which can be used for updating item prices in open purchase orders?
All helpful answers are highly appreciated!
Regards,
MV1 ) execute this program in se38 .enter the input as transaction code for which you want list of User
Exit.
REPORT z_find_userexit NO STANDARD PAGE HEADING.
*& Enter the transaction code that you want to search through in order
*& to find which Standard SAP® User Exits exists.
*& Tables
TABLES : tstc, "SAP® Transaction Codes
tadir, "Directory of Repository Objects
modsapt, "SAP® Enhancements - Short Texts
modact, "Modifications
trdir, "System table TRDIR
tfdir, "Function Module
enlfdir, "Additional Attributes for Function Modules
tstct. "Transaction Code Texts
*& Variables
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
*& Selection Screen Parameters
SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK a01.
*& Start of main program
START-OF-SELECTION.
Validate Transaction Code
SELECT SINGLE * FROM tstc
WHERE tcode EQ p_tcode.
Find Repository Objects for transaction code
IF sy-subrc EQ 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = tstc-pgmna.
MOVE : tadir-devclass TO v_devclass.
IF sy-subrc NE 0.
SELECT SINGLE * FROM trdir
WHERE name = tstc-pgmna.
IF trdir-subc EQ 'F'.
SELECT SINGLE * FROM tfdir
WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir
WHERE funcname = tfdir-funcname.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = enlfdir-area.
MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.
Find SAP® Modifications
SELECT * FROM tadir
INTO TABLE jtab
WHERE pgmid = 'R3TR'
AND object = 'SMOD'
AND devclass = v_devclass.
SELECT SINGLE * FROM tstct
WHERE sprsl EQ sy-langu
AND tcode EQ p_tcode.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) p_tcode,
45(50) tstct-ttext.
SKIP.
IF NOT jtab[] IS INITIAL.
WRITE:/(95) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
WRITE:/(95) sy-uline.
LOOP AT jtab.
SELECT SINGLE * FROM modsapt
WHERE sprsl = sy-langu AND
name = jtab-obj_name.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/1 sy-vline,
2 jtab-obj_name HOTSPOT ON,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
ENDLOOP.
WRITE:/(95) sy-uline.
DESCRIBE TABLE jtab.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No of Exits:' , sy-tfill.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'No User Exit exists'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'Transaction Code Does Not Exist'.
ENDIF.
Take the user to SMOD for the Exit that was selected.
AT LINE-SELECTION.
GET CURSOR FIELD field1.
CHECK field1(4) EQ 'JTAB'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
2) Second way is to go to transaction code SE93 .enter transaction code click on display.
There you will see the package. Copy that package name.
Go to transaction code se84
Enhancements -customer exits-enhancementsu2014enter package there and execute.
You will get list of exits.
3) BAPI for PO change is
BAPI_PO_CHANGE -
Function module to send mail from SAP
Can any one please tell the Function module to send mail from SAP. The scenario is like this,I have a file in local system that i have to send to a particular mail address like [email protected] through a report program.
Hi shafiq,
1. There is some trick involved
in the binary files.
2. I have made a program (and it works fantastic)
ONLY 6 LINES FOR EMAILING
BELIEVE ME
ITS A FANTASTIC PROGRAM.
IT WILL WORK LIKE OUTLOOK EXPRESS !
3. The user is provided with
a) file name
b) email address to send mail
and it sends ANY FILE (.xls,.pdf .xyz..)
Instantaneously !
4. Make two things first :
1. Include with the name : ZAMI_INCLFOR_MAIL
2. Report with the name : ZAM_TEMP147 (any name will do)
3. Activate both and execute (2)
4. After providing filename, email adress
5. Code for Include :
10.08.2005 Amit M - Created
Include For Mail (First Req F16)
Modification Log
Data
DATA: docdata LIKE sodocchgi1,
objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objhex LIKE solix OCCURS 10 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
DATA: tab_lines TYPE i,
doc_size TYPE i,
att_type LIKE soodk-objtp.
DATA: listobject LIKE abaplist OCCURS 1 WITH HEADER LINE.
FORM
FORM ml_customize USING objname objdesc.
Clear Variables
CLEAR docdata.
REFRESH objpack.
CLEAR objpack.
REFRESH objhead.
REFRESH objtxt.
CLEAR objtxt.
REFRESH objbin.
CLEAR objbin.
REFRESH objhex.
CLEAR objhex.
REFRESH reclist.
CLEAR reclist.
REFRESH listobject.
CLEAR listobject.
CLEAR tab_lines.
CLEAR doc_size.
CLEAR att_type.
Set Variables
docdata-obj_name = objname.
docdata-obj_descr = objdesc.
ENDFORM. "ml_customize
FORM
FORM ml_addrecp USING preceiver prec_type.
CLEAR reclist.
reclist-receiver = preceiver.
reclist-rec_type = prec_type.
APPEND reclist.
ENDFORM. "ml_customize
FORM
FORM ml_addtxt USING ptxt.
CLEAR objtxt.
objtxt = ptxt.
APPEND objtxt.
ENDFORM. "ml_customize
FORM
FORM ml_prepare USING bypassmemory whatatt_type whatname.
IF bypassmemory = ''.
Fetch List From Memory
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = listobject
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'LIST_FROM_MEMORY'.
ENDIF.
CALL FUNCTION 'TABLE_COMPRESS'
IMPORTING
COMPRESSED_SIZE =
TABLES
in = listobject
out = objbin
EXCEPTIONS
OTHERS = 1
IF sy-subrc <> 0.
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'TABLE_COMPRESS'.
ENDIF.
ENDIF.
Header Data
Already Done Thru FM
Main Text
Already Done Thru FM
Packing Info For Text Data
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'TXT'.
APPEND objpack.
Packing Info Attachment
att_type = whatatt_type..
DESCRIBE TABLE objbin LINES tab_lines.
READ TABLE objbin INDEX tab_lines.
objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = att_type.
objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = whatname.
APPEND objpack.
Receiver List
Already done thru fm
ENDFORM. "ml_prepare
FORM
FORM ml_dosend.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = docdata
put_in_outbox = 'X'
commit_work = 'X' "used from rel. 6.10
IMPORTING
SENT_TO_ALL =
NEW_OBJECT_ID =
TABLES
packing_list = objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
CONTENTS_HEX = objhex
OBJECT_PARA =
object_parb =
receivers = reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8
IF sy-subrc <> 0.
MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
WITH docdata-obj_name.
ENDIF.
ENDFORM. "ml_customize
FORM
FORM ml_spooltopdf USING whatspoolid.
DATA : pdf LIKE tline OCCURS 0 WITH HEADER LINE.
Call Function
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = whatspoolid
TABLES
pdf = pdf
EXCEPTIONS
err_no_otf_spooljob = 1
OTHERS = 12.
Convert
PERFORM doconv TABLES pdf objbin.
ENDFORM. "ml_spooltopdf
FORM
FORM doconv TABLES
mypdf STRUCTURE tline
outbin STRUCTURE solisti1.
Data
DATA : pos TYPE i.
DATA : len TYPE i.
Loop And Put Data
LOOP AT mypdf.
pos = 255 - len.
IF pos > 134. "length of pdf_table
pos = 134.
ENDIF.
outbin+len = mypdf(pos).
len = len + pos.
IF len = 255. "length of out (contents_bin)
APPEND outbin.
CLEAR: outbin, len.
IF pos < 134.
outbin = mypdf+pos.
len = 134 - pos.
ENDIF.
ENDIF.
ENDLOOP.
IF len > 0.
APPEND outbin.
ENDIF.
ENDFORM. "doconv
CODE FOR PROGRAM
5.
REPORT zam_temp147 .
INCLUDE zami_inclfor_mail.
DATA
DATA : itab LIKE tline OCCURS 0 WITH HEADER LINE.
DATA : file_name TYPE string.
data : path like PCFILE-PATH.
data : extension(5) type c.
data : name(100) type c.
SELECTION SCREEN
PARAMETERS : receiver TYPE somlreci1-receiver lower case.
PARAMETERS : p_file LIKE rlgrap-filename
OBLIGATORY.
AT SELECTION SCREEN
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CLEAR p_file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
START-OF-SELECTION
START-OF-SELECTION.
PERFORM ml_customize USING 'Tst' 'Testing'.
PERFORM ml_addrecp USING receiver 'U'.
PERFORM upl.
PERFORM doconv TABLES itab objbin.
PERFORM ml_prepare USING 'X' extension name.
PERFORM ml_dosend.
SUBMIT rsconn01
WITH mode EQ 'INT'
AND RETURN.
FORM
FORM upl.
file_name = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = file_name
filetype = 'BIN'
TABLES
data_tab = itab
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.
path = file_name.
CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME'
EXPORTING
complete_filename = path
CHECK_DOS_FORMAT =
IMPORTING
DRIVE =
EXTENSION = extension
NAME = name
NAME_WITH_EXT =
PATH =
EXCEPTIONS
INVALID_DRIVE = 1
INVALID_EXTENSION = 2
INVALID_NAME = 3
INVALID_PATH = 4
OTHERS = 5
ENDFORM. "upl
regards,
amit m. -
Function Module to get a work center's capacity requirements (load) within a given period
Hi all experts,
Currently I’m doing a capacity summary report similar to CM01, but with a summarized capacity availability and loading for a period.
Selection Parameters: Work center range from and to, Period from and to
List Format: Work Center, Avail Capacity, Loaded Capacity, Free Capacity, Load %
I have found a standard function module (FM) to get work center's available capacity for a period, but still facing the challenge to find a FM to get a work center’s capacity requirements (load) in a period.
I have read through all the related threads from the web, and tested the recommended FMs, but still cannot get a right result.
Please help to provide some leads for a FM or the logic.
Best Regards
PhilipHello Philip
The following function modules should be useful:
- CY_PRIMARY_SELECTION - Function module for selection of orders for the work center
- CY_SECONDARY_SELECTION - Check for additional criteria
- CR_CAPACITY_AVAILABLE_PERIODS - Reads the available capacity from work center
- HR_PERSON_READ_TIME_INFO - Reads the available capacity from person (modification)
- CY_GET_PART_CAPACITY - used only for the first period to read backlog
- CY_LOAD_DISTRIBUTION - Distribution key
Please observe that these are simple function modules, not BAPIs, That means, they were developed to be used on the SAP internal programs and they are not supported by SAP when used in custom programs.
BR
Caetano
Maybe you are looking for
-
Problem with opening doc. files in pages '09
Hello, can anybody help me, ever since i installed " snow leopard" v10.6.2, pages '09 doesn't open doc. files ( word ) anymore. Even documents produced in pages en ""saved as" a word document can't be opened again. Keep receiving pop up whit message
-
Return array value based on selection criteria
I have one data field that holds text data similar to below: "Meeting Room 1 (Projector), Meeting Room 2 (Whiteboard), Meeting Room 3 (Video Conferencing)" "Meeting Room 3 (LCD Display), Meeting Room 1 (Video Conferencing), Meeting Room 2 (Whiteboard
-
Error: Set type Z contains multiple-value attributes
Hi forum, I have a problem when i try to assign a set type with the same value but diferent name on another set type to the same product category. This is the detail of the error but i dont know where i have to set this indicator: If you set this ind
-
Edit and save without reencoding?
I have a bunch of lectures in mp4 format which I need to add to add identical intro/outro sections to. I do that in QTPro, and save - nice and quick and no reencoding. Unfortunately it saves it as a .mov instead of .mp4, and the only way I've found o
-
IBM OS ISSUE: SYSTEM HANG WITH JFS2 AND HEAVY LOAD
제품 : ORACLE SERVER 작성날짜 : 2004-11-24 IBM OS ISSUE: SYSTEM HANG WITH JFS2 AND HEAVY LOAD ================================================== PURPOSE 이 문서는 IBM AIX5L OS 상에서 Arch Process가 online redo log 를 release하지 못하고 OS의 kill 명령으로 kill조차 되지 않을 경우 조치 방