Persistent Virtual Attribute?

Hi All,
The spec says we want to extend the USER object (with delegated child) giving a new virtual multiline attribute to contain a list of staff forming members of a team (as pernrs).  BUT, the customer has asked that no custom tables be created.
Has anyone managed to gain persistence (for the life of the BO Instance) for a virtual attribute without having a database object to refer to the attribute?
My thought was to link the attribute to a new workflow and keep the object reference and attribute buffers in the workflow runtime container and refresh as the list is increased.
Interested in any ideas.
Regards
Gareth

Yeah, perfect excuse to jump into OO
Seriously though, easily done with classes as attributes behave like variables which you can set from outside of the class. ZCL_WF_USER is a nice example/test case to get into OO if you have the time...
If you want to stick with BOR you can however also use a private attribute. Declare it at the top of the BO code where it says "insert private attribute code". In your virtual attrib, read object-private-yourattribute. You still need to change it in a method though, or alternatively you can do a sneaky hack via a programmed binding.
Have fun,
Mike

Similar Messages

  • How to debug virtual attribute

    Hi experts,
    I would like know if it's possible to debug a virtual attribute used during replication between CRM - ISU ?
    A external break point or a session break point doesn't work.
    The only way to do it is :
    Modify the abap source code of the virtual attribute in order to make an error.
    Then, we correct the source code
    Finally, we can restart the process by transaction ECRMREPL (ISU) and enter in debug mode.
    Do you another solution for debug virtual attribute who's faster ?
    Many thanks.
    Mathieu.

    Hi Mathieu,
            If you want to debug the virtual attribute in ISU you first can Deregister the inbound que with transaction SMQS...You should deregister your correct destination...
    Then make the necessary changes to the Object IE CRM contract in CRM, this will create the outbound BDOC to ISU, after this then go back to transaction SMQS in ISU, check the QRFC monitor, Your object you changed should appear in the que...Double click the object and the que name you should get to FM -> BAPI_CRM_SAVE...
    There is a debug icon in the upper screen u can debug from there, before u do so make sure u placed a break point in either FM -> ISU_PRODUCT_IMPLEMENT which will in turn call your Virtual attribute FM that u have attached in the MDG...
    Hope that helps...
    regards
    Mish

  • Virtual attribute in workflow template

    Hi all,
    I have crated a single line virtual attribute in BOR. When I test this virtual attribute at BOR level, its getting filled.
    I am using this virtual element to pass from workflow container to task container. But I don't see it filled in workflow container.
    Do i need to do anything explicitly to get the vauie of virtual attribute in workflow template?
    Kr,
    Vithalprasad

    Hi,
    But I don't see it filled in workflow container.
    Check the binding, Re-generate and test it again.
    Regards,
    Surjith

  • Supply values to virtual attributes via plug-in?

    Hi All,
    is it possible, to write a plug-in, that creats values on the fly for a virtual attribute, i.e. when a search ocurs and all the attribute values are returned to a client, one ore more of the values a calculated by the plug-in depending on the dn of the returned record.
    Which type of plug-in would that be? The documentation is a bit unclear on that ...
    Any help and thoughts appreciated!
    Cheers, Stefan!

    Hi Lucas,
    CoS won't help you out on this, as it does not allow you to branch-/reach-out of your local server, but -
    yep - I finally managed to create virtual attributes on the fly via a preoperation plug-in. Basically I extended the testpreop_send()-funtion of the testpreop.c example. This plug-in intercepts just before results get send to the client. You then have to check, whether it is a non-internal operation and the result of a search, then analyze the matching dn, whether this a resulkt you want to modify and finally use e.g. slapi_entry_add_values_sv() to add any Slapi_Entry you have created.
    Be aware - the docs are somewhat sparse, crappy and often misleading ... you have been warned ;-)
    Cheers, Stefan!

  • Virtual Attribute  - Is this possible

    Hi Friends,
      Is it possible to create a virtual attribute without mentioning a reference table and reference field. In my case the value of the virtual attribute is of type char32 and it doesn't have any reference to any table.

    >
    sapient wrote:
    >   I have only one such field, do you still suggest me to create a structure for this.
    Yes, I suggested something generic because over time it will gather a few more such elements. This is quite common for the exact same reasons as yours.
    Otherwise have a look in the data dictionary, a lot of the time there's stuff there that's close to what you're after. Either start from a data type and do a where used list in structures or the othe way around. It's just for definition purposes, nothing more....
    Cheers,
    Mike

  • JSF Portlet - custom persisted user attributes

    I will be developing a JSF Portlet (JSR 168) for Sun Portal Server 7.0, is there any way to persist a custom attribute value in the portal? The user can set up some values on the EDIT page and I'd like to persist them without using a database. Is it possible?

    Looks like I can use customizationId. The documentation states "This attribute is deprecated. The 'id' attribute should be used when applying persistent customizations. This attribute will be removed in the next release." I'm gonna call their bluff. But I'd still be up for an alternative if anyone's got one.

  • Persisting an attribute of a relation

    I'm developing an app that has a many to many relation between Contacts and ContactLists. The contacts on each contact list can be arranged in an arbitrary order which needs to be persisted, so the relationship between them has an index attribute indicating where in the list they belong. I've put the index in the table mapping the many-to-many and created an entity class specifically to represent this. Unfortunately, I can't seem to find a way to add a contact to a list and set an index in a single transaction. I'm hoping some one here has run across this issue and can recommend a solution.
    Here's where I'm at:
    <pre>
    @Entity
    @Table(name = "Contacts")
    public class Contact implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="ContactID")
    Long id;
    @ManyToMany(mappedBy = "contacts")
    List<ContactList> contactLists;
    @OneToMany(mappedBy="contact")
    List<ContactMapping> mappings;
    @Entity
    @Table(name = "ContactLists")
    public class ContactList implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ContactListID")
    Long id;
    @ManyToMany
    @JoinTable(name = "ContactMapping",
    joinColumns = @JoinColumn(name ="RefContactListID", referencedColumnName = "ContactListID"),
    inverseJoinColumns = @JoinColumn(name= "RefContactID", referencedColumnName = "ContactID")
    List<Contact> contacts;
    @OneToMany(mappedBy="contactList")
    List<ContactMapping> mappings;
    @Entity
    @Table(name = "ContactMapping")
    @IdClass(ContactMappingPK.class)
    public class ContactMapping implements Serializable {
    @Id
    @Column(name = "RefContactID", insertable=false, updatable=false)
    Long refContactID;
    @Id
    @Column(name = "RefContactListID", insertable=false, updatable=false)
    Long refContactListID;
    @Basic(optional = false)
    @Column(name = "ContactIndex")
    int index;
    @ManyToOne
    @JoinColumn(name="RefContactID")
    public Contact contact;
    @ManyToOne
    @JoinColumn(name="RefContactListID")
    public ContactList contactList;
    public ContactMapping(Long refContactID, Long refContactListID) {
    this.refContactID = refContactID;
    this.refContactListID = refContactListID;
    public class ContactMappingPK implements Serializable {
    private Long refContactID;
    private Long refContactListID;
    public ContactMappingPK() {
    </pre>
    Then to use it, I've tried several things:
    (1)
    <pre>
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public Long createContact(Contact contact) {
    try {
    em.persist(contact);
    //for each list the contact is in, persist a mapping object
    for(ContactList l : contact.getContactLists()) {
    ContactMapping mapping = new ContactMapping(contact.getId(), l.getId());
    mapping.setIndex(getNextIndex(l));
    em.merge(mapping);
    } catch (Exception e) {
    ctx.setRollbackOnly();
    e.printStackTrace();
    em.flush();
    em.refresh(contact);
    return contact.getId();
    </pre>
    This results in
    [#|2009-08-31T18:32:04.418-0500|FINE|sun-appserver2.1|oracle.toplink.essentials.session.file:/opt/glassfish/domains/internal/applications/j2ee-modules/NewtPersistence/-NewtPU.sql|_ThreadID=18;_ThreadName=httpSSLWorkerThread-8080-1;ClassName=null;MethodName=null;_RequestID=1bb8126e-1763-4b27-91f1-bbadbe2bfe83;|INSERT INTO ContactMapping (ContactIndex, RefContactID, RefContactListID) VALUES (?, ?, ?)  bind => [6, null, null]|#]
    Which fails since RefContactID and RefContactListID can't be null.
    (2)
    <pre>
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public Long createContact(Contact contact) {
    try {
    em.persist(contact);
    em.flush();
    //for each list the contact is in, persist a mapping object
    for(ContactList l : contact.getContactLists()) {
    ContactMapping mapping = (ContactMapping) em.createQuery(
    "SELECT m FROM ContactMapping m " +
    "WHERE m.refContactID = :contactId AND m.refContactListID = :listId")
    .setParameter("contactId", contact.getId())
    .setParameter("listId", l.getId())
    .getSingleResult();
    mapping.setIndex(getNextIndex(l));
    em.merge(mapping);
    } catch (Exception e) {
    ctx.setRollbackOnly();
    e.printStackTrace();
    em.flush();
    em.refresh(contact);
    return contact.getId();
    </pre>
    This one fails because getSingleResult throws a NoResultException. I guess the flush is ignored till the end of the transaction?
    (3)
    <pre>
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public Long createContact(Contact contact) {
    try {
    em.persist(contact);
    em.flush();
    //for each list the contact is in, persist a mapping object
    for(ContactList l : contact.getContactLists()) {
    for(ContactMapping m : l.getMappings()) {
    if (m.contact == contact) {
    m.setIndex(getNextIndex(l));
    em.merge(m);
    facade.logSevere("Saved the mapping:" + m.toString());
    mapping.setIndex(getNextIndex(l));
    em.merge(mapping);
    } catch (Exception e) {
    ctx.setRollbackOnly();
    e.printStackTrace();
    em.flush();
    em.refresh(contact);
    return contact.getId();
    </pre>
    This fails with "Exception [TOPLINK-7242] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.ValidationException
    Exception Description: An attempt was made to traverse a relationship using indirection that had a null Session."
    So I suppose my problem is that I want to get my hands on the mapping object, but it doesn't exist yet. It seems to me that solution 1 should get around this, but it doesn't, I'm guessing because of the insertable=false, updatable=false on the id's which are required to map the relationships to contacts.
    Any ideas?
    Thanks,
    Loren

    Hello,
    In attempt 1, you have not set the ContactMapping->Contact and ContactMapping-> ContactList relationships that control the RefContactId and RefContactListID database fields, which is why they get inserted with Null. Either set the relationships before the persist/merge, or change it so the relationships are insertable/updatable=false and the ID mappings are writable to avoid inserting null into these fields.
    In attempt 2, Flush does flush all required statements immediately. The problem is that ContactMapping hasnt been persisted - only the Contact has been, so only Contact will exist in the database. Assuming you have correctly set all the relationships from the Contact to new ContactMapping and ContactList objects (and their back relationships that control the mappings) when you call persist on Contact, you can get around this problem by having the relationships from Contact to the others set to cascade persist. This will cause the ContactMapping objects referenced from Contact to also be persisted, and then inserted when flush is called. I am not sure why you would attempt to query for the ContactMapping's using the JPQL query when you can just get it from the contact directly, but if you do, the query returns managed instances so the merge is unneccessary.
    In attempt 3, I can't say for sure where the problem is, though it is likely that you are associating a detached ContactList to the Contact object you are calling persist on. This detached contactList was read somewhere else where the context is no longer available (ie it was closed or the contactList was serialized) - hence the exception when you trigger a lazy relationship on it. Trigger required lazy relationships before serializing objects away from their contexts will help resolve the problem, but in this case, calling merge on contact instead of persist (and having the Contact->ContactList relationship marked cascade=merge) will cause the CascadeList to be a managed copy preventing the problem as well.
    Best Regards,
    Chris

  • Persistant Transient VO Attributes

    I'm experiencing some problems related to persistant transient attributes in view objects under 9.0.4 on Windows (yes I understand it's a preview release, but wanted verify this problem to see if anyone as seen anything similiar).
    I have a view object based on an entity object, everything works as expected, I can create a new row add it to the VO and it persists through multiple modifications.
    When I add a transient attribute and set it as persistant the record is not stored in the ps_txn table and the following error appears in the debug log:
    oracle.jbo.PCollException: JBO-28039: Root node for collection TXN is invalid,
    Has anyone encountered this, am I doing something I shouldn't?
    Thank you.

    By adding the TransTest transient attribute to the underlying EO object and using this new EO attribute in the VO the update via the master VO's detail accessor now results in the page rendering the new value for each display of the detail VO record.
    I would still like to know why the VO transient attribute behaves the way I describe above.

  • Can I write to a BO attribute straight from BO method-skipping container ?

    hi,
    We have created a single character virtual attribute in BO, we have created a method that will set the attribute to X if its blank and blank if its X.
    I have tried working with  object-attribute name but it does not set the values. I am trying to remove the container binding between method->task and task-->BO out of question by writing straight to BO.
    Is it possible ?
    thanks,
    GV

    You can code for Virtual attribute.
    You can call method using
    SWC_CALL_METHOD
    SWC_GET_PROPERTY
    Thanks
    Arghadip

  • 2nd try - DPS 7 dpadm add-virtual-transformation not working as expected

    I use DPS 7.0 B2009.1104.2146 on RHEL 4 update 8. (32 bits)
    I have an LDAP back-end where X509 user certificates are stored in either the usercertificate;binary attribute or the certAuth;binary attribute.
    I want my DPS to authenticate users thanks to their personal certificate, with SASL external BIND method. So, I need DPS 7 to be able to
    search the user certificate in two different attributes.
    Since it's not possible, (the cert-search-user-attr property is single-valued, unfortunately ), I 've tried to setup a virtual transformation, to
    have both physical attribute values in a single virtual attribute.
    The problem is that both physical attributes have the ";binary" qualifier and DPS doesn't seem to like it.
    When searching for the virtual attribute through DPS, DPS creates and return it, but I get garbage/wrong values:
    Transformation configuration:
    -bash-3.00$ dpconf get-virtual-transformation-prop vue-P0 mapping_add-attr_certauth
    action : add-attr
    attr-name : certauth;binary
    internal-value : none
    model : mapping
    view-value : ${usercertificate;binary}
    LDAP search straight to the LDAP back-end:
    -bash-3.00$ ldapsearch -p myport -h myldaphost -b "dc=my namingcontext" cn=sslconnect
    version: 1
    dn: cn=sslconnect.gip-cps.fr,......
    objectClass: top
    cn: sslconnect
    userCertificate;binary:: MIIC/zCCAmigAwIBAgIQMDAwMTIwNzkwMEDUnWNGsjANBgkqhkiG
    9w0BAQUFADA/MQswCQYDVQQGEwJGUjEVMBMGA1UEChMMR0lQLUNQUy1URVNUMRkwFwYDVQQLExBB
    Qy1DTEFTU0UtNC1URVNUMB4XDTA5MDUyODA4NDMyOFoXDTEyMDUyODA4NDMyOFowazELMAkGA1UE
    LDAP search through the DPS 7 server:
    -bash-3.00$ ldapsearch -p 1389 -b "dc=my namingcontext" cn=sslconnect
    version: 1
    dn: cn=sslconnect
    objectClass: top
    cn: sslconnect
    userCertificate;binary:: MIIC/zCCAmigAwIBAgIQMDAwMTIwNzkwMEDUnWNGsjANBgkqhkiG
    9w0BAQUFADA/MQswCQYDVQQGEwJGUjEVMBMGA1UEChMMR0lQLUNQUy1URVNUMRkwFwYDVQQLExBB
    Qy1DTEFTU0UtNC1URVNUMB4XDTA5MDUyODA4NDMyOFoXDTEyMDUyODA4NDMyOFowazELMAkGA1UE
    certauth;binary:: MO+/vQLvv70w77+9Amjvv70DAgECAhAwMDAxMjA3OTAwQNSdY0bvv70wDQY
    JKu+/vUjvv73vv70NAQEFBQAwPzELMAkGA1UEBhMCRlIxFTATBgNVBAoTDEdJUC1DUFMtVEVTVDE
    ZMBcGA1UECxMQQUMtQ0xBU1NFLTQtVEVTVDAeFw0wOTA1MjgwODQzMjhaFw0xMjA1MjgwODQzMjh
    aMGsxCzAJBgNVBAYTAkZSMQ0wCwYDVQQKEwRURVNUMRMwEQYDVQQHFApQYXJpcyAoNzUpMRgwFgY
    DVQQLEw8zMTgwMDMwMDA5MDAwMzkxHjAcBgNVBAMTFXNzbGNvbm5lY3QuZ2lwLWNwcy5mcjDvv73
    vv70wDQYJKu+/vUjvv73vv70NAQEBBQAD77+977+9ADDvv73vv70C77+977+9AO+/vQAW77+9VC7
    vv71Bfe+/vRjvv71JNHIELu+/vSB+77+9Pu+/vTbvv73vv71R77+9Fm9ic++/ve+/vSVgS++/vUz
    vv71M77+9NO+/vQrvv71Yae+/vTgv77+9dw0+77+9cO+/vSLvv71wPCrvv71YUu+/vTEbYe+/ve+
    /vTlK77+9Pu+/vci477+9dmo8T++/ve+/ve+/ve+/vRxU77+9K++/vRjvv73vv73vv71J77+977+
    9CwXvv73vv70xdCIc35rvv73vv73vv73Iku+/ve+/vWbvv73vv73vv71n77+977+9AgMBAAHvv73
    ...

    Hi there
    I'm having exactly the same problem here (AIR 3.6, Flash Builder 4.7). But somehow I don't really feel comfortable to write my own LocalizationManager when there's a built-in solution around. So I'm still trying to find the problem.
    I noticed that when I update the compiler argument (-locale=en_US,de_DE ), the ResourceManager *sometimes* switches the language, but somehow randomly and definitely not based the value set for localeChain.
    Furthermore, ResourceManager.getInstance().getLocales() does not return anything.
    The strange thing: Even when I do not include the localization resources ('locale/{locale}' in ActionScript Build Path -> Source Path) the resources in 'locale/en_US' or 'locale/de_DE' are available to the ResourceManager.
    Anyone with similar experiences?
    I'm grateful for any hint!

  • Attributes in object BOR

    Hi,
    i need to know if it is possible to set an attributes in object bor after your creation.
    So, i create an object with the instruction swc_create_object and after i want to value an attributes with an other variable, is it possible and how?
    Thanks and regards.
    Antonella

    hi,
           In order to achieve this openness, SAP provides a technical infrastructure for the R/3 product, the Business Object Repository (BOR), which provides a simple yet powerful mechanism for external systems to trigger core business processes (such as placing an order) without concern for the underlying data structure. This level of abstraction is beneficial because it decouples R/3 from the external system. Either system is therefore free to change its internal business processes without affecting the other. SAP provides this technical infrastructure using a component-based view of its system. Each component or object provides a view of the data and the business processes that interact with that data. External systems can access this data via BAPI methods, which in turn access the underlying data structures of the system. It is the responsibility of the object and the BAPI to ensure the integrity of the data. This encapsulation of the data not only lends itself to external interfaces, but by using objects from within SAP, you can greatly reduce implementation, testing, and maintenance effort via the promotion of code reuse.
    Business Objects
    A business object is a problem-domain entity that you model in the SAP system, such as SalesOrder, BillingDocument, and Employee. The BOR stores all the objects in the R/3 system. The repository is a group of all the objects in the R/3 system. If the focus of objects is to model atomic business processes then it can be said that the BOR provides an enterprisewide view of business processes. By designing your ABAP code to fit your business processes you increase the ability of that code to flex when those processes are altered or integrated with external systems. This had made the object-oriented approach, which the BOR provides, essential to developing inter-business or e-business functionality.
    Attributes
    A business object is primarily represented by its attributes. You perform actions, such as create, update, or delete on the attributes by calling the methods of the object.
    1.Attribute NetValue of Object BUS2032 (SalesOrder).
    The majority of attributes are data-dictionary fields (for example, the NetValue attribute is defined by VBAK-NETWR). When you access an attribute of an object, you execute a SQL statement that retrieves the corresponding field in the database.
    2.Definition of attribute NetValue.
    You can also define attributes that do not exist in the data dictionary. These attributes are called virtual attributes. For example, a business partner has an attribute called BirthDate that is stored in the data dictionary. You can add a virtual attribute to the BusinessPartner object called Age. The age of a business partner is not stored in the database, but you can calculate it using the current date and the birth date of the business partner. If you implement the ABAP code that calculates Age, every time you access the Age attribute, the code executes and returns the business partners age.
    3.Definition of virtual attribute Age.
    This is an excellent example of one of the tools that a component-based approach provides. The external system does not need to concern itself with how to gather the data that it requires. The calling program needs only to access the attribute for the data to be returned. This is how business objects decouple the calling program (whether it be in R/3 or external to R/3) from the internals of R/3.
    The BOR lets you define multi-line attributes. These attributes define one-to-many relationships between an object and other fields. These objects can be defined in the data dictionary or can also be virtual attributes.
    An attribute that uniquely defines an object in the system is called a key attribute. In the case of a SalesOrder, the key attribute is VBAK-VBELN (the TableName and FieldName). It is not uncommon for an object to have several key fields. An example of this is object is the SalesArea (BUS000603) object type which has SalesOrganization (TVTA-VKORG), DistributionChannel (TVTA-VTWEG) and Division (TVTA-SPARTE) as key fields
    Regards

  • Attribute in BO ?

    Hi Experts,
    I want to fetch the purchase group. iam using bus2105. i create a Virtual attribute. but iam not getting the Purchase group value.
    i write the code as below.
    Please Correct me.
    Attribute = PurGroup
    -> Virtual Attribute
    ABAP Dictionary:
    Reference table : EBAN
    Ref field: BANFN
    GET_PROPERTY PURGROUP CHANGING CONTAINER.
    data:Purgroup type eban-ekgrp,
         lv_banfn type eban-banfn.  
    select single ekgrp from eban into purgroup where banfn = lv_banfn.    
    SWC_SET_ELEMENT CONTAINER 'PurGroup' object-PURGROUP.
    END_PROPERTY.

    Hi AK,
    GET_PROPERTY PURGROUP CHANGING CONTAINER.
    data: purgroup type eban-ekgrp,
             lv_banfn type eban-banfn.
    lv_banfn = object-key-number.
    select single ekgrp from eban into purgroup where banfn = lv_banfn.
    SWC_SET_ELEMENT CONTAINER 'PURGROUP' purgroup.
    END_PROPERTY.
    Hope it helps.
    Aditya
    Edited by: Aditya Varrier on Jul 8, 2010 11:00 AM

  • Attributes Problem in Business Object

    Hi,
    We had a requirement of creating a new Business Object with a couple of attributes(both Database and Virtual Attributes)
    So, as per the requirement, I created my Business Object with all the required attributes. And I have coded the required Business Logic for my Virtual Attributes.
    Now, I created my Business Object's method's using these attributes(OBJECT-ATTRIBUTE_NAME) in my methods wherever required.
    Finally, I tested the Business Object in SWO1(Business Object Builder), here are my observations...
    1) The Database attributes is getting created properly and I can see the values for the required
    2) The Virtual Attributes are getting created as per the Business Logic and I can see the desired result for this also.
    3) The methods are giving desired results.
    Now, my doubt is, when I trigger one of this Business Object's method from workflow, the attribute values(OBJECT-ATTRIBUTE_VALUE) are not visible inside the method. But if I test the same BO using SWO1, I can see all the Attribute values(OBJECT-KEYFIELDS).
    I can only see the KEY FIELDS of the Business Object in Debug mode, I mean, I can view OBJECT-KEY-KEYFIELD value, but not the OBJECT-ATTRIBUTENAME inside the BO'S method in Debug mode-when triggered from Workflow.
    Well, I am triggering the Workflow using the SWUD transaction and infact I am creating the required Instances in the first screen of SWUD.
    Can anyone make me clear why this is happening?
    Regards,
    <i><b>Raja Sekhar</b></i>

    Hi people,
    Thanks for immediate reply.
    Well, I think I didnt explain my problem clearly...
    Well, here is my clear explanation.
    I created a new Business Object named ZOBJECT say...
    It has 3 key fields...
    PERNR(Employee Number),BEGDA(Start Date) and ENDDA(End Date)
    It has 2 attributes...
    One is a Databsase Attribute - ENAME which gets populated from database PA0001.
    Another is a Virtual Attribute - EMAILID which gets populated from some Business Logic.
    And it has one Event...ZEVENT
    It has one method...
    SENDMAIL - Which sends the email to the EMAILID Attribute.So my coding looks something like this...
    METHOD SENDMAIL.
      DATA : W_FROMEMAIL TYPE PA0105-USRID_LONG,
             W_TOEMAIL TYPE PA0105-USRID_LONG,
             W_SUBJECT(100),
            IT_TEXT TYPE STANDARD TABLE OF SOLI.
      W_FROMEMAIL = '[email protected]'.
      W_TOEMAIL = OBJECT-EMAILID.
      W_SUBJECT = 'Test Mail'.
    Populate the mail content into IT_TEXT Internal table
      call function 'YHSENDEMAIL'
          EXPORTING
            FROMEMAIL = W_FROMEMAIL
            TOEMAIL   = W_TOEMAIL
            SUBJECT   = W_SUBJECT
          TABLES
            IT_TEXT   = IT_TEXT.
    ENDMETHOD.
    So as shown above I designed my Business Object.
    And I tested this Business Object from SWO1(Business Object Builder) Transaction itself. I am able to get the desired result. Everything seems perfect till now.
    Now, I created my workflow with ZOBJECT-ZEVENT as the Start Event.
    I created one Standard Task to send EMail which in turn calls up my ZOBJECT-SENDEMAIL Method.
    So when I called this method, I found that OBJECT-EMAIL inside the method is not populated, ultimately, no mail is going.
    I dont understand why the attribute values are not populated when I call the same method from workflow.
    When I checked the workflow log, I can see my attribute values for the ZOBJECT. But in the Method, I cant access the attribute values as such...But I am able to access the Key fields of the method...
    Can anybody explain me the reason for this behavior?
    I checked the BINDING, Everthing seems perfect from this side...So I dont think it's a binding problem.
    Regards,
    <i><b>Raja Sekhar</b></i>
    Message was edited by: Raja Sekhar

  • Mapping object attributes to ArrayField widget

    Is there a way to specify get/set methods for fields within an
    ArrayField widget instead of public attributes of the mapped type?
    We are trying to enforce strict encapsulation of our data objects, but
    it seems that the only way to display our data objects in an ArrayField
    widget is to bind each field in the ArrayField to a PUBLIC attribute of
    our object. I was hopeful that the virtual attribute would take care of
    this but apparently, the virtual attributes can only access public
    attributes on our class.
    An obvious solution to this is to retrieve the private attributes of our
    objects via their Get methods and then manually adding them to the
    ArrayField widget, but this seems to be a lot of wasted processing.
    Any thought would be greatly appreciated. Send replies directly to me at
    [email protected]
    Thanks,
    Van

    Hi,
    Refer your suggestion
    Confirm that
    4. The datatype for the field is same as the data type of the vo attribute.
    This is what I need to Solve.The datatypes are not similar
    I want to show Students Number in the table column
    DataType for the field in the Table is selected as "Number"
    In the View Object there is no datatype called "Number".So, I selcted "Integer".
    Now, how can I show VO attribute of type "Integer" in a table column of type "Number"..
    thanks,
    Gowtam

  • SET several attributes at once

    hai all..
    I have function module which gives me values for 3 of my attributes....Now my problem is..Do i have any way by which i can call the functionmodule only once and set the values to all three attributes(instead of calling FM for three times).I dont want to use a method to do this...
    Will be rewarded if Helpful...
    Thanks and regards,
    Jhansi

    Hmmmm..... I am lacking some context. Is this in a BOR object and virtual attributes?
    What you <b>can</b> do is use a form which calls your function and sets the object-xxx values. In each of your virtual attribute implementations you call the form (fire and forget) and then update the container from the object-xxx value. Not sure if that is close to what you had in mind, but it lets you centralize the code regarding your attributes. Your form can then do whatever is needed to avoid calling the function module unnecessarily.

Maybe you are looking for

  • ATP Issue in Sales Order change

    Hi Experts, I have implemented ATP exit "EXIT_SAPLATPC_002" for Sales Order. Every thing is fine and working as per my logic. There are two tables from the exit and they are T_ATPCSX and T_MDVEX. This is coming into the exit with some values. Based o

  • Problem with instaling CS5 wersion

    Hello, I can not install Adobe CS5. After entering the serial number the program does not allow me to continue with the installation. I changed the computer. From the previous computer I'he uninstalled Adobe and installed on new hardware. The first t

  • I can't update my mobile software whit my E71

    Hi everybody, Since this morning i've tried to update the software of my Nokia E71 with Nokia Ovi Suite. So first i save my old things (pictures, messages, ....) and then when i want to start the update i get ALWAYS this message: http://i54.tinypic.c

  • Fan Noise, is it a leopard thing?

    Increasingly over the past 6 months my machine has been struggling well at least the fan seems to go 10 to the dozen and beach ball has become a far more regular friend than ever before. I thought it was to do with the warm summer and the machine try

  • Add Internal Hard Disk?

    Hello, I have a running Windows 7 installation on my Mac Pro and recently added another internal hard disk. It is formatted in HFS+. However, Windows 7 does not allow me to add a letter to the new hard disk - whereas the third HFS+ hard disk already