How to create Support function for internal Class use
I have created a class to find the MoonRise and Set time. There is a java code available and I am translating it to Obj-C.
My problem is that for the calculation there are many support functions which is internally used. When I try to duplicate this as follows
-(double) frac:(double)x {
// returns the fractional part of x as used in minimoon and minisun
double a;
a = x - floor(x);
if (a < 0) a += 1;
return a;
-(void)minimoon:(double)t {
// takes t and returns the geocentric ra and dec in an array mooneq
// claimed good to 5' (angle) in ra and 1' in dec
// tallies with another approximate method and with ICE for a couple of dates
double L0, L, LS, F, D, H, S, N, DL, CB, L_moon, B_moon, V, W, X, Y, Z, RHO;
//var mooneq = new Array;
L0 = frac(0.606433 + 1336.855225 * t); // mean longitude of moon
At this point it gives an error implicit declaration of function frac,
My question is how to create such helper functions which are used internally, actually there are many such functions where functionA call B which calls C.
Thanks
Raj
Here's yet another approach (creating a private category):
@interface MYClass (Private)
- (double)frac:(double)x;
@end
@implementation MYClass
- (void)minimoon:(double)t {
// takes t and returns the geocentric ra and dec in an array mooneq
// claimed good to 5' (angle) in ra and 1' in dec
// tallies with another approximate method and with ICE for a couple of dates
double L0, L, LS, F, D, H, S, N, DL, CB, L_moon, B_moon, V, W, X, Y, Z, RHO;
//var mooneq = new Array;
L0 = [self frac:(0.606433 + 1336.855225 * t)]; // mean longitude of moon
- (double)frac:(double)x
// returns the fractional part of x as used in minimoon and minisun
double a;
a = x - floor(x);
if (a < 0) a += 1;
return a;
@end
<div class="jive-quote">rajkhand wrote:
I liked the first method as I don't have to change much of the java code.
I like it too. I use that very regularly (though I often use C++/Objective C++), since there is typically a lot of implementation in any class that does not need to be an ObjC instance method. This approach helps to reduce the object's interface to its essentials while keeping maintenance low.
I'll put all the helper functions above the implementation.
Is there a good book/web site where I can get such insight? I know C and Delphi/pascal
Well, Objective-C is a superset of C. If you're porting Java, you'll find protocols (ObjC) similar to interfaces (Java).
*Getting Started*
Apple's version of ObjC is different from others. For the language, Apple's docs are the standard (IMO):
Language:
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf
If you are comfortable with C, this guide will help learning Objective-C quickly, though it has not been updated for (Apple's) Objective-C 2.0:
http://www.amazon.com/Objective-C-Pocket-Reference-Andrew-Duncan/dp/0596004230/r ef=sr14?ie=UTF8&s=books&qid=1245404236&sr=8-4
There are a few books on the ObjC2 language, but I have not read them (I just read Apple's docs for this).
OOP/Design:
http://developer.apple.com/documentation/Cocoa/Conceptual/OOPObjC/OOPObjC.pdf
Research
Good site for archives of tips, tricks, and even some hacks:
http://www.cocoadev.com/
Apple's lists (Cocoa, Xcode, ObjC, and specific technologies):
http://lists.apple.com/mailman/listinfo
This one sees the most traffic for Cocoa, and ObjC topics :
http://lists.apple.com/mailman/listinfo/cocoa-dev
Online archive for aforementioned Xcode and Cocoa list submissions:
http://www.cocoabuilder.com/
There are a lot of good sites/blogs out there as well.
Questions
Apple's lists (linked above) will typically yield good answers in a short time, you can also try here.
Thanks a million
Raj
You're Welcome,
J
Similar Messages
-
How to create menu function for link to open file
Hi,
I need help how to create menu function for link to access file and allow user to save the file when click on it.
The file will keep inside server.
Thank you.
Regards,
WilsonI need help how to create menu function for link to access file and allow user to save the file when click on it.
The file will keep inside server.AFAIK, you have to write a custom code to achieve this and Oracle does not provide this functionality.
If you want to store the file as an attachment, please see (How to Store Image/PDF Attachments on the File System in 11i and R12 (like Attachment File Directory) [ID 294525.1]).
Thanks,
Hussein -
How to create an instance for RemoteSession without using create() method
How to create an instance for RemoteSession without using create() method?
What's RemoteSession? Not in the JDK. And does the question have anything to do with concurrency?
-
How To create Library Functions for Validate Items
Hi all,
My form Consists data block blk_user with two items
username and password
Both user name and Password are required Fields.
When user left these items Empty To show Alert
I Created Below Procedure and Called in Form_Level ON-ERROR Trigger.
PROCEDURE pcd_io_alert IS
itm_name VARCHAR2(20);
BEGIN
IF Error_type ='FRM' AND Error_code = 40202 THEN
Message(get_item_property(NAME_IN('SYSTEM.CURSOR_item'), PROMPT_TEXT )||' Should
Not Be Empty');
SET_ALERT_PROPERTY('ALT_IO',ALERT_MESSAGE_TEXT,
(get_item_property(NAME_IN('SYSTEM.CURSOR_item'), PROMPT_TEXT ))||' Should Not
Be Empty');
itm_name := Show_alert('ALT_IO');
RAISE FORM_TRIGGER_FAILURE;
END IF;
END;
It working fine.
Could You Tell how to call or create this procedure as Library functions and call the created library in form To SHow Alert. Actually I want to create library functions to Validate and Show Alert Mesages.
Regards
R.MaheshBabu.Hello,
Could you give Some examples or links related to how To create and call library functions For validate Items..For creation you already created one procedure and you called on error. So for creation and call it is clear. Now you are talking about validation for items. It depends on your requirement. As you check validation in items's triggers you can also check validation in function/procedure of library. You can use parameter to pass values and check the validations. And you can create the procedure/function in library like this...
PROCEDURE My_Proc(Parameter_Name IN DATATYPE) IS
Variables Declarations...
BEGIN
-- Here check the validation on the passed value.
EXCEPTION
-- Exception Handling part...
END;
FUNCTION My_Proc(Parameter_Name IN DATATYPE) RETURN DATATYPE IS
Variables Declarations...
BEGIN
-- Here check the validation on the passed value.
RETURN <ANY VALUE>;
EXCEPTION
-- Exception Handling part...
END;
Is it Possible to use system variable ':system.cursor_value' while creating PL/sql library functions?Yes, because it is clear as you used for CURRENT_ITEM like NAME_IN('SYSTEM.CURSOR_item') so you can use SYSTEM VARIABLES.
-Ammad -
How to create multiple function for each value
Hi, I'm new to LabVIEW.
I need some help. Attached is my LabVIEW file.
I want to change the Formula VI for the 'Air Velocity vs Time' waveform to another formula (or multiple formula (can I use MathNode Script for this?)) to let it handle multiple values from the data and then display the result on the waveform graph. Or how can I do this?
Another one is how to change the scale for the 'Measurement Flow' from sensor to pressure? Using pressure sensor 0V-10V to -500Pa-500Pa.
Thanks in advance.
Attachments:
Exhaust EBT Wind Tunnel 1.1.vi 399 KBFaruq wrote:
I want to change the Formula VI for the 'Air Velocity vs Time' waveform to another formula (or multiple formula (can I use MathNode Script for this?)) to let it handle multiple values from the data and then display the result on the waveform graph. Or how can I do this?
You could simply use a case structure around the Formula Express VI. When you say MathNode Script I'm assuming you're referring to MathScript? Or are you referring to the Formula Node. With either one you'd need to convert from dynamic data to arrays. With MathScrip you need to be aware that starting with LabVIEW 2009 MathScript requires a separate license.
Another one is how to change the scale for the 'Measurement Flow' from sensor to pressure? Using pressure sensor 0V-10V to -500Pa-500Pa.
You can create a custom scale for your measurement. You can do this in the DAQ Assistant.
Attachments:
DAQ_assistant.png 30 KB -
How to create a constructor for this class?
Hi everybody!
I have an applet which loads images from a database.
i want to draw the images in a textarea, so i wrote an inner class, which extends textarea and overrides the paint method.
but everytime i try to disply the applet in the browser this happens:
java.lang.NoClassDefFoundError: WohnungSuchenApplet$Malfl�che
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:1590)
at java.lang.Class.getConstructor0(Class.java:1762)
at java.lang.Class.newInstance0(Class.java:276)
at java.lang.Class.newInstance(Class.java:259)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:567)
at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1778)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:496)
at sun.applet.AppletPanel.run(AppletPanel.java:293)
at java.lang.Thread.run(Thread.java:536)
so my class has no own constructor, it just has the paint method overwritten.
my class looks like this:
public class Malfl�che extends javax.swing.JTextArea{
public void paint(Graphics g){
Color grey=new Color(220,220,220);
g.drawImage(img,10,10,null);
how should a constructor for this class look like?
sorry i am quite new to this, so i really dont have a clue!
my class does not have any attributes or requires any so it doesnt need a constructor, doesnt it?
thanks a lot
timIf you have no constructor you cant instanciate (I know i just murdered that spelling) the object.
Malfl�che thisHereThingie = new Malfl�che()assuming that you want to run that class by itself you will need a main method that has the preceeding code in it. If you are running it from another class you need to instanciate it... but anyway at the very least for a constructor you need.
public Malfl�che(){ -
How to create a cache for JPA Entities using an EJB
Hello everybody! I have recently got started with JPA 2.0 (I use eclipseLink) and EJB 3.1 and have a problem to figure out how to best implement a cache for my JPA Entities using an EJB.
In the following I try to describe my problem.. I know it is a bit verbose, but hope somebody will help me.. (I highlighted in bold the core of my problem, in case you want to first decide if you can/want help and in the case spend another couple of minutes to understand the domain)
I have the following JPA Entities:
@Entity Genre{
private String name;
@OneToMany(mappedBy = "genre", cascade={CascadeType.MERGE, CascadeType.PERSIST})
private Collection<Novel> novels;
@Entity
class Novel{
@ManyToOne(cascade={CascadeType.MERGE, CascadeType.PERSIST})
private Genre genre;
private String titleUnique;
@OneToMany(mappedBy="novel", cascade={CascadeType.MERGE, CascadeType.PERSIST})
private Collection<NovelEdition> editions;
@Entity
class NovelEdition{
private String publisherNameUnique;
private String year;
@ManyToOne(optional=false, cascade={CascadeType.PERSIST, CascadeType.MERGE})
private Novel novel;
@ManyToOne(optional=false, cascade={CascadeType.MERGE, CascadeType.PERSIST})
private Catalog appearsInCatalog;
@Entity
class Catalog{
private String name;
@OneToMany(mappedBy = "appearsInCatalog", cascade = {CascadeType.MERGE, CascadeType.PERSIST})
private Collection<NovelEdition> novelsInCatalog;
The idea is to have several Novels, belonging each to a specific Genre, for which can exist more than an edition (different publisher, year, etc). For semplicity a NovelEdition can belong to just one Catalog, being such a Catalog represented by such a text file:
FILE 1:
Catalog: Name Of Catalog 1
"Title of Novel 1", "Genre1 name","Publisher1 Name", 2009
"Title of Novel 2", "Genre1 name","Pulisher2 Name", 2010
FILE 2:
Catalog: Name Of Catalog 2
"Title of Novel 1", "Genre1 name","Publisher2 Name", 2011
"Title of Novel 2", "Genre1 name","Pulisher1 Name", 2011
Each entity has associated a Stateless EJB that acts as a DAO, using a Transaction Scoped EntityManager. For example:
@Stateless
public class NovelDAO extends AbstractDAO<Novel> {
@PersistenceContext(unitName = "XXX")
private EntityManager em;
protected EntityManager getEntityManager() {
return em;
public NovelDAO() {
super(Novel.class);
//NovelDAO Specific methods
I am interested at when the catalog files are parsed and the corresponding entities are built (I usually read a whole batch of Catalogs at a time).
Being the parsing a String-driven procedure, I don't want to repeat actions like novelDAO.getByName("Title of Novel 1") so I would like to use a centralized cache for mappings of type String-Identifier->Entity object.
Currently I use +3 Objects+:
1) The file parser, which does something like:
final CatalogBuilder catalogBuilder = //JNDI Lookup
//for each file:
String catalogName = parseCatalogName(file);
catalogBuilder.setCatalogName(catalogName);
//For each novel edition
String title= parseNovelTitle();
String genre= parseGenre();
catalogBuilder.addNovelEdition(title, genre, publisher, year);
//End foreach
catalogBuilder.build();
2) The CatalogBuilder is a Stateful EJB which uses the Cache and gets re-initialized every time a new Catalog file is parsed and gets "removed" after a catalog is persisted.
@Stateful
public class CatalogBuilder {
@PersistenceContext(unitName = "XXX", type = PersistenceContextType.EXTENDED)
private EntityManager em;
@EJB
private Cache cache;
private Catalog catalog;
@PostConstruct
public void initialize() {
catalog = new Catalog();
catalog.setNovelsInCatalog(new ArrayList<NovelEdition>());
public void addNovelEdition(String title, String genreStr, String publisher, String year){
Genre genre = cache.findGenreCreateIfAbsent(genreStr);//##
Novel novel = cache.findNovelCreateIfAbsent(title, genre);//##
NovelEdition novEd = new NovelEdition();
novEd.setNovel(novel);
//novEd.set publisher year catalog
catalog.getNovelsInCatalog().add();
public void setCatalogName(String name) {
catalog.setName(name);
@Remove
public void build(){
em.merge(catalog);
3) Finally, the problematic bean: Cache. For CatalogBuilder I used an EXTENDED persistence context (which I need as the Parser executes several succesive transactions) together with a Stateful EJB; but in this case I am not really sure what I need. In fact, the cache:
Should stay in memory until the parser is finished with its job, but not longer (should not be a singleton) as the parsing is just a very particular activity which happens rarely.
Should keep all of the entities in context, and should return managed entities form mehtods marked with ##, otherwise the attempt to persist the catalog should fail (duplicated INSERTs)..
Should use the same persistence context as the CatalogBuilder.
What I have now is :
@Stateful
public class Cache {
@PersistenceContext(unitName = "XXX", type = PersistenceContextType.EXTENDED)
private EntityManager em;
@EJB
private sessionbean.GenreDAO genreDAO;
//DAOs for other cached entities
Map<String, Genre> genreName2Object=new TreeMap<String, Genre>();
@PostConstruct
public void initialize(){
for (Genre g: genreDAO.findAll()) {
genreName2Object.put(g.getName(), em.merge(g));
public Genre findGenreCreateIfAbsent(String genreName){
if (genreName2Object.containsKey(genreName){
return genreName2Object.get(genreName);
Genre g = new Genre();
g.setName();
g.setNovels(new ArrayList<Novel>());
genreDAO.persist(t);
genreName2Object.put(t.getIdentifier(), em.merge(t));
return t;
But honestly I couldn't find a solution which satisfies these 3 points at the same time. For example, using another stateful bean with an extended persistence context (PC) would work for the 1st parsed file, but I have no idea what should happen from the 2nd file on.. Indeed, for the 1st file the PC will be created and propagated from CatalogBuilder to Cache, which will then use the same PC. But after build() returns, the PC of CatalogBuilder should (I guess) be removed and re-created during the succesive parsing, although the PC of Cache should stay "alive": shouldn't in this case an exception being thrown? Another problem is what to do when the Cache bean is passivated. Currently I get the exception:
"passivateEJB(), Exception caught ->
java.io.IOException: java.io.IOException
at com.sun.ejb.base.io.IOUtils.serializeObject(IOUtils.java:101)
at com.sun.ejb.containers.util.cache.LruSessionCache.saveStateToStore(LruSessionCache.java:501)"
Hence, I have no Idea how to implement my cache.. Can you please tell me how would you solve the problem?
Many thanks!
ByeHi Chris,
thanks for your reply!
I've tried to add the following into persistence.xml (although I've read that eclipseLink uses L2 cache by default..):
<shared-cache-mode>ALL</shared-cache-mode>
Then I replaced the Cache bean with a stateless bean which has methods like
Genre findGenreCreateIfAbsent(String genreName){
Genre genre = genreDAO.findByName(genreName);
if (genre!=null){
return genre;
genre = //Build new genre object
genreDAO.persist(genre);
return genre;
As far as I undestood, the shared cache should automatically store the genre and avoid querying the DB multiple times for the same genre, but unfortunately this is not the case: if I use a FINE logging level, I see really a lot of SELECT queries, which I didn't see with my "home made" Cache...
I am really confused.. :(
Thanks again for helping + bye -
How to create a ringtone for the Iphone using phonezoo?
Hi, I just got the Iphone 4 two days ago. I am used to using Phonezoo.com to create my own ringtones and such, because it just texts the created tone to the cell phone. It won't work when I have the Iphone. How do I save the rington from the message?
Ask phonezoo.
-
Creat transaction (se93) for Globa class in ABAP Objects
Hi experts,
Can any one tell me how to
creat transaction (se93) for Globa class(se24) in ABAP Objects
if ,please assest me how to do it or send me example docu on this
best Answer will be rewarded
regards
fareedashi
se93->give your transaction ->enter create.
check the radio button (Method of calss(OO class).press enter.
in next screen.
transaction text ;give your own description
tick the check box OO transaction model.
give the class name method name which u have created in se 24.which was activated successfully.it should be activated otherwise it will not work.
under GUI SUPPORT.
TICK the all 3 check boxes.
SAP GUI FOR HTML
JAVA
WINDOWS.
then save.
u should b saved in package(don't forget).
it was working.
i have already checked and did it succesfully.
reward points
if u have any queries let me know.
kiran jagana -
Tutorial or instruction s on how to create an extension for dreamweaver
Can some body please point me to a tutorial or instructions on how to create an extension for dreamweaver
I used to create extension for flash few years ago. It was quite straight forward, but not for dreamweaver any help will be appreciated.Take a look at:
Extending Dreamweaver Help - http://help.adobe.com/en_US/Dreamweaver/10.0_Extending/
API Documentation - http://help.adobe.com/en_US/Dreamweaver/10.0_API_Ref/index.html -
How to create an extension for generated type idoc
Hi all,
Can u please look into this
How to create an extension for generated type idoc ? for example Idoc type BATMAS02Enter transaction WE30 (ALE->Extension-> IDOC types->Maintain Idoc type)
- Type in your name of the extended IDOC type (usually starting with 'Z') and click on the Basic IDoc type, click the create icon.
- Click on Create new and enter a description and press enter.
- Click on ZIDOCTYPE01 and then on the Create icon.
- Enter ZIDOCTYPE as the segment type, click on Segment Editor.
- Enter a description for your segment type and create.
- Enter a description for your segment, enter each field required in your IDoc and press enter to validate.
- Save and generate, press back
- To release the segment choose Goto, Release from the menu.
- Check the box on the line of your segment.
- Save, back and enter.
- Your Idoc type structure should be displayed with your new segment.
- Save and back.
- To release the Idoc type choose Extras, Release type from the menu and Yes.
ALE FUNCTION MODULE ENHANCEMENTS
Having extended the IDOC type to contain additional fields for an inbound or outbound application, you now want to enhance ALE function modules for populating the additional segment on the outbound or applying the additional segment data on the inbound application.
The core working code for ALE processes for a given application area is always encapsulated in ABAP/4 function modules. These function modules are associated with such control information as message types and process codes. So the ALE process checks this control information and derives the name of the function module to invoke for that particular IDOC processing from certain database tables. These function modules contain objects known as customer functions, which can be considered SAP Enhanced user exits. A function module is called at a particular point during the processing of the main program or function module, and it can be used to influence data processing at that point by adding code to the customer function. The customer function behaves like a normal function module and has import and export parameters, tables (internal tables) statement, and exception processing. Unlike a conventional user exit, customer functions give you the ability to modify only data available to you by the function moduleâs parameters and internal tables. While most ALE/EDI function modules are supported by customer functions, there are ALE/EDI processes that still use conventional user exits. There are a few ways to determine which function module to enhance for a given message type/process code:
For master data distribution, from SALE go to Extensions -> Master data distribution -> Setup additional data for message types. Search for message type DEBMAS in this example. You see an entry for DEBMAS associated with function module MASTERIDOC_CREATE_SMD_DEBMAS. This data is stored on table TBDME. The function module names for all master data message types follow this pattern: MASTERIDOC_CREATE_SMD_messagetype. This function module calls another function module of name MASTERIDOC_CREATE_DEBMAS or MASTERIDOC_CREATE_messagetype. Search for the words customer function, and you find several hits that can be used to add code to the function module.
From WEDI got to Control -> Inbound process codes -> Inbound with ALE service -> Processing by function module (transaction WE42), or from WEDI go to Control -> Outbound process codes -> Outbound with ALE service -> With function module (transaction WE41). There will be function modules associated with the process codes. For inbound, the function modules usually follow this pattern: IDOC_INPUT_messagetype: for example, IDOC_INPUT_CHRMAS for inbound characteristics master.
Use transaction WE57 or from WEDI go to Development -> Message/Application Object. The entries list the function module, Business Object, message type, and IDOC type that are used for inbound ALE/EDI interfaces.
Customer functions are not specific only to ALE and EDI but also to all programs/modules in SAP R/3. Customer function is a SAP enhancement component; the other two types are menu and screen enhancements.
All customer function exits are maintained in SAP enhancements and are found by using transaction SMOD. After executing transaction SMOD, pull down (F4) on the enhancement name field, and execute again. This provides you with a list of all SAP enhancements available. SAP enhancements are grouped by development class pertaining to an application area. Choose Application development R/3 SD master data distribution for development class VSV to lead to a screen that lists VSV00001 as an enhancement (see Figure 5). Press Component +/- to display its function exit components. There are four possible components listed, all of which are function exits (and are function modules) that are called from the ALE function modules in the form Call Customer Function Î001â. This is a special occurrence of the ABAP statement Call. Go to item Exit_SAPLVV01_ 001, which you need to enhance for the Customer Master outbound example of an IDOC extension. In the ALE-function module MASTERIDOC_CREATE_DEBMAS, the statement CALL Customer Function 001 is translated in the background to call component EXIT_SAPLVV01_001. Although this function exit can be edited using transaction SE37, you will use a simpler approach.
When you use SAP enhancements and their components, you manage them with an SAP object known as a project, which is like an envelope containing the selected enhancements and their components. A project can be used to control the execution of components and to transport them to other clients and instances in SAP. Basically, the process involves creating a project, including enhancements and components that are to be enhanced, editing the components, and then activating the project. The following process creates a project for our example Customer Master IDOC extension:
Execute transaction CMOD.
Enter name of project, say CSTMAST1.
Click on Create.
Enter a description of the project.
Save.
Click on SAP Enhancements.
Enter VSV00001 for Enhancement.
Save.
Once youâve created the project, edit the function exit components and activate the project. Remember that the code in the function exit enhancement will execute only if the project is activated. In fact, this is a convenient SAP enhancements feature, whereby the work in progress (developing code in the customer function) will not affect users of that application. When the code is completed, the project can be activated so the enhanced functionality takes effect. It can also be deactivated for maintenance.
As mentioned earlier, customer functions (function exits) are embedded in ALE function modules and can be used to influence the creation and modification of IDOC data on an outbound application or to post additional or modified IDOC data to an inbound R/3 application. Function exits are similar to regular function modules, with import/export parameters, tables (internal tables), and exceptions.
The two important factors to consider while developing the customer function are:
1. The point in the ALE function module where the function exit occurs
2. The data made available by the customer function that can be modified or posted to the R/3 application, based on the direction.
Because some function modules have several customer functions, it is critical to choose the function exit best suited for that particular enhancement. Do not attempt to perform activities that the function exit is not designed for. The importance of this point is illustrated by the following description of enhancing function modules for outbound and inbound ALE interfaces.
Outbound interfaces. In an outbound ALE interface you use function exits (customer functions) to populate additional segments created by an IDOC extension or to modify the existing IDOC data segments as per business requirements. Previously, you identified that enhancement VSV00001 has a component EXIT_SAPLVV01_001 (function exit), which can be used for populating the additional data segment Z1SADRX that you created in the IDOC extension ZDEBMASX (IDOC type ZDEBMASZ, based on Basic IDOC type DEBMAS02). You also learned that the ALE function module that calls this function exit is MASTERIDOC_CREATE_DEBMAS, which has a statement Call Customer Function 001.
Browse the function module MASTERIDOC_CREATE_DEBMAS using transaction SE37. You will find that this customer function is invoked for every segment of IDOC type DEBMAS02. In fact, the function exit is called soon after the creation of an existing segment has been populated with data and appended to the IDOC data table (internal table). Also, the function exit is exporting the message type, IDOC type, and the segment name and is importing the IDOC extension type. It is also passing the IDOC data internal table. This indicates that the ALE function module is allowing you to populate additional segments for every existing segment and modify the existing segmentâs data.
Letâs write ABAP/4 code to accomplish the task of populating IDOC segment Z1SADRX with a contact personâs business address:
From SE37, display function module MASTERIDOC_CREATE_ DEBMAS.
Find Customer Function 001.
Double-click on 001.
The function EXIT_SAPLVV01_001 will be displayed.
Double-click on INCLUDE ZXVSVU01.
You will be asked to create a new include object. Proceed as desired.
Enter code (as in Listing 1).
Be sure to perform a main program check (Function Module -> Check -> main program) and extended program check (Function module -> Check -> Extended check).
Now that you have extended the IDOC and enhanced the ALE function module based on the requirements for the contact personâs business address on the Customer Master, letâs test the interface. You should create a logical system and define a port for this interface. You should also configure the Customer Distribution Model to indicate that message type DEBMAS is being distributed to this logical system. The only difference in configuration between a regular outbound ALE interface and an enhanced one is the partner profile definition. While maintaining the outbound parameters of the partner profile, make sure the IDOC type is ZDEBMASZ. The fields for Basic IDOC type and extension type are automatically populated with DEBMAS02 and ZDEBMASX, respectively.
To maintain the contact personâs business address of a customer:
Use transaction BD12 or from BALE go to Master Data ->Customer -> Send and send that Customer Master record by executing the transaction after filling in the relevant fields such as customer number, message type, and logical system.
Use transaction WE02 or WE05 to verify the IDOC created. You should see the new segment Z1SADRX populated with the correct data.
With SAP releases below 4.5B, you cannot capture changes to business address through change pointers because a change document object is not available for capturing business address changes, and also earlier releases have not been configured to write change documents for a contact personâs business address. If you would like this functionality, you can either create change document objects, generate function modules to create change documents, and perform ALE configuration to tie it in, or make a cosmetic change to the contact person screen data while changing the contact personâs business address so that it gets captured as a change to the Customer Master. Subsequently, the ALE enhancement that you performed captures the contact personâs business address.
Inbound interfaces. The process for enhancing inbound ALE interfaces is similar for outbound, with a few exceptions; specifically in the coding of customer functions (function exits) for the ALE/EDI function modules.
The first step is to create an IDOC extension for the specific Basic IDOC type by adding new segments at the appropriate hierarchy level: that is, associated to the relevant existing segment. Populate the data fields on the new segments with application data by the translator or external system/program before importing them into the R/3 System. Then, find the ALE function module that is invoked by the inbound processing. By browsing through the code or reading the documentation on the function exit enhancements using the SMOD transaction, identify the function exit in which you should place your code. The technique used in the code to post the additional or modified IDOC data to the application can vary based on the application rules and requirements, the data available at that point in processing, and the application function modules available to update the application tables. It is important to search first for application modules that process the data and see if they can be called within the function exit. If the additional data in the extended segments in specific to a custom table or resides in nonkey fields of a single or small set of tables, you may be able to update it directly by SQL statements in the function exit. This approach should be carefully evaluated and is certainly not highly recommended.
Another option is to use Call Transaction from within the function exit to process the additional data. For example, in the case of message type WMMBXY for inbound goods movements from a warehouse management system, the standard interface creates batches for materials, but does not update its characteristics. In such a case, you can use Call Transaction MSC1 to create the batch and assign characteristic values to it from within the function exit provided.
regards,
srinivas -
How to create Activex object for my Visual C++ object
Hi,
I am working on development on Acrobat 9.0 SDK. I am facing problem is that I can compiled Visual C++ source code to an api. I can test functions on this api on Acrobat 9.0 windows, but I could not test it on IE web browser, because I don't know how to create Activex object from my Visual C++ source code or its api.
I read Acrobat 9 SDK document and found under C:\Acrobat 9 SDK\Version 1\PluginSupport\Tools\Visual Studio App Wizard has two files: Acro9PIWizInstaller.msi and setup.exe. I am not very sure those file are the key to help me to create Activex objects for my api. Are they the one I need to create Activex object? If not, could you please advise me how to create Activex object for my api or C++ codes.
Thanks a lot for any of your comments or advices.
ThaiHi lrosenth,
Thanks a lot for your information.
My question is, on Javascript how do I call a function from .api. Below is my very simple test.
I got a function on BasicPlugin.cpp under C:\Acrobat 9 SDK\Version 1\PluginSupport\Samples\BasicPlugin. See below.
I added BasicPlugin.api on C:\Program Files\Adobe\Acrobat 9.0\Acrobat\plug_ins
ACCB1 int ACCB2 MyPluginCommand() {
int num = 5;
return num;
On my HTML file, I create an <Object> below:
<OBJECT id="acrobatapp"
classid="clsid:85DE1C45-2C66-101B-B02E-04021C009402">
</OBJECT>
<OBJECT id="acrobatpdf"
classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" >
<Param name="SRC" value="http://www.adobe.com/devnet/acrobat/pdfs/acrobat_digital_signature_appearances_v9.pdf">
</OBJECT>
On my Javascript. I call function MyPluginCommand() as below, but it is not working. How do I call function MyPluginCommand() on Javascript?
var acrobatapp= document.getElementById("acrobatapp");
var num= acrobatapp.MyPluginCommand();
alert(num);
Thanks for your support,
Thai -
How to create search function (af:query) using method in java
hi All..:)
i got problem with search custom (af:query), how to create search function/ af:query using method in java class?
anyone help me....
thx
agungdmtHi,
download the ADF Faces component demo sources from here: http://www.oracle.com/technetwork/testcontent/adf-faces-rc-demo-083799.html It also has an example for creating a custom af:query model
Frank -
Supporting jar for emailverifier class
i am posting my first message to this forums. where can i get supporting jar for
emailverifier class. could anyone help me please.
thanks in advance.
senthilThank you. I know the basic usage of ant - compiling the source, running the program, creating single jar from specified classes, ... But I have no idea how to make one jar file from each class... Is there somebody more experienced? Every advice is very welcomed.
Unfortunately, I have to hand over my project at monday and I have lot of work on other parts of the program... -
How to Create a Functiona Query
Dear all,
Could any body detail me how to create a functional query. Please give me step by step procedure to create a query.
I would appreciate if you can give me a material with screen shots. Your help will be highly appreciated.
Thank you
Raghu RamHi Raghu,
Go through this document it may help you,
SAP Query
Step 1: Create User Group SQ03
Follow the menu path SAP Menu > Tools > ABAP Workbench > Utilities > SAP Query > User Groups
a) In the User Group: Initial Screen -
Enter User Group Code (self named)
Click on Create
b) In the User Group (Code): Create or Change pop-up window -
Enter the User Group Description
Click on Save
c) In the Create Object Directory Entry pop-up window -
Ö Click on Local Object button
Ö The User Group Created is saved
Step 2: Create User Group SQ02
Follow the menu path SAP Menu > Tools > ABAP Workbench > Utilities > SAP Query > Infosets
a) In the Infoset: Initial screen -
Ö Enter Infoset Code (self named)
Ö Click on Create button
b) In the Infoset: Title & Database Screen -
Ö Enter Description of Infoset in the Name field
Ö In the Data Source selection: Select appropriate Data Source by clicking
the radio button
· Source the data can either be multiple tables OR single table. There are 4
options for the user to select from
Ö Click on Continue (Enter)
Ö Selected Table gets displayed in the Infoset : Initial Screen
c) In the Infoset: Initial Screen -
Ö Click on Insert Table button
d) In the Add Table Screen -
Ö Enter the Table Name that is to be inserted
Ö Click Continue (Enter)
e) In the Infoset: Initial Screen -
Ö Click on Back button
f) In the Field Group Defaults pop-up Screen -
Ö Select Appropriate Field Group Option by clicking on the radio button
· there are 3 options to select from. User can select Empty Field Group
option and then select the data fields in the steps explained further.
Alternatively, User can select an option which clubs all the data fields
From all the tables selected
Ö Click Continue (Enter)
g) In the Change Infoset Screen -
· the left side lists the Tables that the user has selected in step b, c & d
· In the right side, system creates field groups, one for each table listed in the
left part. Initially, the Field Groups are empty
Ö In the Left Side, Click on the arror next to the table name and expand and
display all the data fields in the table
Ö Select a Data Field from the expanded Table view, which is to be added to
the Field Group on the right.
Ö Select a Field Group on the right side, in which Data Field selected above
has to be added
Ö Right click on the Data Field selected and click on Add Field to Field Group
Ö The selected Data Field gets added to the selected Field Group, which is
indicated by an arrow next to the Field Group.
Ö Carry out the steps above to add the required Data Fields to the respective
Field Groups
Ö After transferring Data Fields to Field Groups click on Generate button
h) In the Create Object Directory Entry Screen -
Ö Click on Logical Object button to generate the infoset
i) In the Change Infoset Screen -
Ö Click on the Back button
j) User is taken back to the Infoset: Initial Screen which displays the
created Infoset record.
Step 3: Assigning User Group to Infoset SQ03
Follow the menu path SAP Menu > Tools > ABAP Workbench > Utilities > SAP Query > User Groups
a) In the User Groups: Initial screen -
Ö Enter the User Group for which Infoset is to be assigned
Ö Click on Assign Users & Infosets button
b) In the User Group: Assign Users Screen -
Ö Click on Assign Infosets button
c) In the next screen, select the Infoset, which needs to be attached to the
User Group selected
d) Click on the Back button
Step 4: Creating Query SQ00 & SQ01
Follow the menu path SAP Menu > Tools > ABAP Workbench > Utilities > SAP Query > Queries
a) In the Query from User Group: Initial Screen -
Ö Click on Other User Groups button
Ö In the pop-up screen, User Groups, select the User Group for which the
Query has to created. The pop-up screen closes.
Ö Enter the Query Code in the Query field
Ö Click on Create button
b) A pop-up screen Restrict Value Range shows the list of Infosets assigned to
the User Group
Ö Select the Infoset for which Query has to be created
c) In the new screen Create Query: Title, Format -
Ö Enter the Description of the Query in the Title field
Ö Click on the Next Screen button
d) In the Select Field Group screen
Ö Select the Field Groups from which Data Fields have to be selected for the
Output
Ö Click on the Next Screen button
e) In the Select Field screen -
Ö Select the Data Fields, which should appear in the output
Ö Click on the Next Screen button
f) In the Screen Selection -
Ö Select the Data Fields for the selection criteria
Ö Enter the sequence in which the selected fields would appear in the input
screen of the query.
Ö Define if the selection criteria should be Single Value or Multiple Value Range
by clicking in the appropriate check boxes
Ö Click on the Basic List button
g) In the screen Query Layout Design -
Ö Select the Output Fields from the Data Fields section by clicking the
appropriate check box
Ö Change the sequence of Data Field columns if required
Ö Click on the Test button to test the query created
h) On the Test Query screen click Continue
i) In the Query screen -
Ö Enter the selection criteria
Ö Click on Execute button
j) Save the Query created
Step 5: Running the Query SQ00
a) In the Query From User Group: Initial screen
b) Click on Other User Groups button to select the User Group
c) In the pop-up screen User Groups select the User Group
d) System lists all the queries created for the User Group
e) Select the appropriate Query
f) Click on Execute button
g) User is taken to the Selection screen
h) Enter the selection criteria and click on Execute button
i) System runs the query and gives the output
Regards,
Murali.
Maybe you are looking for
-
Using RFC adapter as TRFC call
Hi Folks, My requirement is to use the RFC adapter as a TRFC call. Can anyone guide me how to do that ? Regards, Santosh
-
Req Input on Creating report on SR without Activities
Hi I need to create a report wherein I need to find those SR's which donot have Activities.In SR subject area activities are not present and in Activities subject area I believe I cant get this output. Negative reporting is one option but not sure on
-
How to safely cut timeline ?
I have a project in CS4 (Premiere Pro) for which I wish to make a second version (music clip, 5 minutes). Ok : I saved the original under another name. I can safely modify, change, replace shots and it does not touch the original project. This part
-
Hi All, I am new to benefits, I have to develop an interface in which i need to send employee as well as dependents data for the plans for which they are enrolled on a particular date, Can anyone please tell me how to fetch the dependents(in infotype
-
Web galleries, albums, titles and ratings vanishing. Database corruption?
Hello! I'm using iPhoto '08, as included with my MBP. The library was originally used with iLife '06, and before that, iLife '05. It's around 11 GB, with about 6400 pics and videos, and I have about half a dozen web galleries and about two dozen albu