Using BOR Object as Attribute In ABAP Class

Stevens, Seth Seth.Stevens at anadarko.com
Mon Apr 20 17:47:52 EDT 2009


Yeah, not sure what the issue is here.  Everything is marked as public
and the binding editor can see the object and display all the correct
attributes; however, the binding syntax check throws the error when you
choose one of the attributes.  At this point I'll probably look for a
work around but will send out an update if I figure out the issue.

Thanks again...

--Seth 

-----Original Message-----
From: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu] On Behalf
Of Mike Pokraka
Sent: Monday, April 20, 2009 4:34 PM
To: SAP Workflow Users' Group
Subject: RE: Using BOR Object as Attribute In ABAP Class

Hi Seth,

You're on the right track, but missing the bit that the binding editor
won't instantiate the class. If you make the constant public (so the
binding editor can see it) and specify it as the initial value for your
attribute it should be happy. I think. Not sure how/why it's working in
one instance but not the other - see if you can expand the attribute in
a regular binding.

Regarding a user class, I still say go for it. It's easier to work with
and far more flexible and there's nothing stopping you from mixing and
matching. I often end up with BOR and classes for the same object.
Basically I take an opportunistic approach: if I need to spend any time
working with a BOR object then it's a good excuse to add the
functionality to a class instead (provided it's not a major effort).
Regarding maintaining two code streams - just mark the BOR method
obsolete. If it needs changing then do it the other way around:
incorporate the class into your BOR object as a private attribute,
change the code in the class and replace your BOR method code to call
the class method. Although BOR doesn't understand classes as components,
you can instantiate and use a class internally because it's standard
ABAP.

Cheers,
Mike


On Mon, April 20, 2009 3:08 pm, Stevens, Seth wrote:
> Mike,
>
> Thanks for the reply.  I assume that you are talking about setting an 
> initial value in the class and not in the workflow container, if that 
> is the case I am already doing this.  I have created a constant with 
> "direct type entry" like below:
>
> BEGIN OF C_BOR_USR01,
>   INSTID TYPE SIBFBORIID VALUE IS INITIAL,
>   TYPEID TYPE SIBFTYPEID VALUE 'USR01',
>   CATID  TYPE SIBFCATID VALUE 'BO',
> END OF C_BOR_USR01.
>
> I then created an attribute called TRADER_BOR_USR01 of type SIBFLPORB 
> and placed the below code in the constructor.
>
> ME->TRADER_BOR_USR01-INSTID = 'MYUSERID'.
> ME->TRADER_BOR_USR01-TYPEID = 'USR01'.
> ME->TRADER_BOR_USR01-CATID = 'BO'.
>
> The binding editor in the workflow builder shows all the correct 
> attributes and structure of the USR01 business object so I assume the 
> editor is reading the correct BO type; however, if I select one of the

> attributes and try to use it I get the error.  If you see anything I'm

> missing please let me know.
>
> As far as creating a user class, this is something I would like to do.
> My only issue is this is our only class based workflow thus far and we

> have tons of BOR based workflows.  I don't want to have to maintain 
> all the custom code associated with the user object in two places.  I 
> guess I could create a wrapper class for the BO then maintain the code

> in the BOR until when/if we convert our old workflows to use the
class.
> Regardless, I'd still like to figure this problem out for use
elsewhere.
>
> Thanks in advance.
>
> --Seth
>
> ________________________________
>
> From: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu] On 
> Behalf Of Mike Pokraka
> Sent: Saturday, April 18, 2009 4:35 PM
> To: 'SAP Workflow Users' Group'
> Subject: RE: Using BOR Object as Attribute In ABAP Class
>
>
>
> Hmmm, reading my own post I notice a bit of confusion. Let's try that 
> second sentence again:
>
> The attribute needs to be populated with an initial value that 
> contains at least the object class and type.
>
>
>
>
>
> From: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu] On 
> Behalf Of Mike Pokraka
> Sent: 18 April 2009 20:12
> To: 'SAP Workflow Users' Group'
> Subject: RE: Using BOR Object as Attribute In ABAP Class
>
>
>
> Hi Seth,
>
>
>
> The problem is that the binding editor does not know the object type 
> of your attribute. It needs to have an initial value containing the 
> object class and type.
>
>
>
> However, an SAP user is one of the easiest and most useful objects to 
> implement as a class. I would suggest going with a ZCL_USER class 
> instead. Much easier to work with.
>
>
>
> Cheers,
>
> Mike
>
>
>
>
>
> From: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu] On 
> Behalf Of Stevens, Seth
> Sent: 15 April 2009 21:42
> To: SAP Workflow Users' Group
> Subject: RE: Using BOR Object as Attribute In ABAP Class
>
>
>
> As a side note, same thing happens if I try to use an attribute of the

> BOR in a binding.  Try to bind ZCL_MKT_TRADE . TRADER_BOR_OBJ . ZEMAIL

> to a sendmail step.
>
>
>
> --Seth
>
>
>
> ________________________________
>
> From: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu] On 
> Behalf Of Stevens, Seth
> Sent: Wednesday, April 15, 2009 3:26 PM
> To: SAP Workflow Users' Group
> Subject: Using BOR Object as Attribute In ABAP Class
>
> I am creating a custom workflow for our marketing group using ABAP 
> Classes.  The main class I am dealing with is called ZCL_MKT_TRADE.  
> We do not have HR implemented and subsequently use BOR object USR01 
> for agent assignments in many custom workflows and have a lot of 
> custom methods and attributes of use to this workflow.
>
> I need to use the trader (user) for several things in the workflow so 
> I created an attribute on ZCL_MKT_TRADE called TRADER_BOR_OBJ that is 
> of type BOR Object USR01 as outlined in Jocelyn's SDN BLOG.  I want to

> use the trader for the agent assignment on a given workitem.  I use 
> "Expression" and then select 
> &ZCL_MKT_TRADE.TRADER_BOR_OBJ.NAMEWITHLEADINGUS& as the expression.
> This is available in the dropdown but when I choose it I get an error 
> saying "NAMEWITHLEADINGUS is not a component of data object 
> TRADER_BOR_OBJ".
>
> Is it not possible to accomplish what I am trying to do here?  I can 
> always have the trader attribute on my class simply store the userid 
> of the trader and then instantiate a separate USR01 BOR Object in my 
> workflow container to host all the trader details; however, my first 
> idea seems like better design.
>
> Thanks,
> Seth
>
>         <<
>                 ATT1922862.txt  (0.2KB)
>
>                 (0.2KB)
>          >>
>
>
>
> _______________________________________________
> SAP-WUG mailing list
> SAP-WUG at mit.edu
> http://mailman.mit.edu/mailman/listinfo/sap-wug
>


_______________________________________________
SAP-WUG mailing list
SAP-WUG at mit.edu
http://mailman.mit.edu/mailman/listinfo/sap-wug




More information about the SAP-WUG mailing list