Quantcast
Channel: SCN : All Content - SAP Business Process Management
Viewing all 887 articles
Browse latest View live

how to export NW BPM history and context?

$
0
0

Hi,

 

We have some process instances which are pretty big, and have a Medium History with thousands of lines (>3000), and have contexts with many data objects with many fields.

 

Is it possible to export an individual process (in whatever state (completed, suspended) to an external file (xls, txt, xml)?

This includes the history and data context as we now see in NWA->Manage Processes.

Or is Archiving the only way?

 

Cheers.


Two flat files (different structure) to BPM

$
0
0

Hi there,

 

System: SAP PO 7.3.1 SP6 AS JAVA only.

 

Hopefully someone could point to the right direction for me.

 

I have a requirement here to receive two flat files from customer, and header and details file for sales order.

For example,

Header file

order 1

order 2

order 3

 

Details file

item 1 for order 1

item 2 for order 1

item 1 for order 2

item 1 for order 3

 

What I need to do is to create IDoc in ECC.

 

The way that I would implement is

1. Receive both files and convert to XML in PI

2. PI sends these two files to BPM, the correlation is the filename. The start event in BPM is set to message trigger (header file)

3. BPM combines both files together and sends back to PI

4. PI maps the combined file to IDoc and sends to ECC

 

The issue for the scenarios above is that BPM expect header file to come first. If details file gets sent to BPM first then it is ignored by BPM

 

 

Is there a way that the BPM can be start by different type of messages? For my case, either header or line file can start the BPM process?

 

Thanks in advance.

 

Will.

How to count days without weekend and holidays in Process Development?

$
0
0

Hi Gurus,

 

I need to count the days excluding the weekends and holidays. How can I manage to do that?

 

I'm using SAP Process Development do NWDS version 7.30 SP000 and I'm going to run it on SAP PO NetWeaver 7.3 with Ehp 1.

 

I'm new to NWDS software so I'm having some trouble with it.

 

Best Regards

NWDS Installation just doesn't work

$
0
0

Hi,

 

Never had so many issues with the NWDS installation. I am on Windows 7 and I wanted to download NWDS 7.1. I tried various download links

https://nwds.sap.com/swdc/downloads/updates/netweaver/nwds/ce/index.html

https://nwds.sap.com/swdc/downloads/updates/netweaver/nwds/nw/711/NWDS_platform.html

 

When I try to run IDESetup.exe from the downloaded copy, it always fail with error

"the installer cannot run in the 32-bit subsystem on a 64-bit architecture"

 

When I try the SapNetweaverDeveloperStudio.exe directly (or in compatibility mode), the 'Software Updates' always fail due to internet connection issue. We don't have any proxy in use and the policy.xml URL is reachable from the browser:

https://nwds.sap.com/swdc/downloads/updates/netweaver/nwds/ce/711/policy.xml

 

What all I tried and didn't work:

- I tried it in 3 computers in 3 different networks.

- I installed both x86 and 64bit versions of JDK.

- I tried latest as well as older versions of NWDS.

- Adding the following to SapNetweaverDeveloperStudio.ini -> "-clean" at the beginning and "-Dos.name=Windows XP" "-Dos.version=5.1" at the end.

- Google and SCN search.

 

Using a big full installation (7.0) was such a life saver.

 

Thanks,

Prateek

Question about integration of BPM and Solution Manager

$
0
0

What is the SAP "out of the box" method for integrating Business Project Management entries into Solution Manager?

Open UI integration in SAP BPM

$
0
0

Hi Expert,

 

Can any one provide ant step by step guide for using Open UI integration in SAP BPM.

 

Best Regards,

Sunil

BPM API Limiting

$
0
0

I'm currently building my own task list in WDJ.  I have found the BPM api to be very limiting.

 

A simple thing like displaying the process initiator User is not possible.  In the base "private" api, this is available. Unfortunately if has not been made available in the public facade.

 

I was wondering if there is a way to get to this user.  I have added my initiator user to my task context and get around this issue in that way. 

 

I just hope that SAP would be enhancing the BPM api soon!

 

regards

bpm api to start exception or boundary event?

$
0
0

When the approval step is Looping, Parallel for Each.

Anyone rejects, it will stop the loop, and go to final step.

As I'm using UI5 as UI, how to use api to start exception or boundary event?

I find task api: 

void fail(URI taskInstanceId, Fault fault) throws BPMException

But I'm not sure how it works.

How to customized exception, or how to make boundary event work?

 

Thanks very much.


JPA vs CAF : Pros and Cons

$
0
0

Dear All

 

We are planning a new BPM application development based on the JPA model

We already have one application using the CAF based setup.

Would you have any  comparative case study in terms of performance and other pros/cons with JPA / CAF based  implementations

Is JPA more flexible and better performant than CAF?

 

Another topic that comes together with JPA is the need for a staging database. What is the general strategy to setup a staging database?

 

a)Is it acceptable to create a new schema on the same SAP CE database and use it as a staging database ?

b) I have seen other implementations where a NEW standalone staging database was installed . Is this for performance or are there any other reasons to this?  If its not about performance, would you know what are the major benefits of putting such a staging database on a standalone server?

 

Would you already know if SAP supports the use with a) ? That is using a SAP database with a new schema for a staging database (from licensing and general supportability point of view)?

 

Many thanks in advance

Chandrakanth

Process Observer Discussion

$
0
0

This thread is dedicated to questions and discussions around the Process Observer component that is part of Business Suite.

Process Observer is used in different scenarios, including and prominently with Operational Process Intelligence.

For details on what Process observer is see here.

Nominating owner of a bpm task by random ?

$
0
0

Hi`

 

I need help to implement my customer's request with BPM.

 

I am implementing a process with Netweaver PO 7.31 SP6.

And, my customer want to assign the owner of a task  automatically by random in a pool of possible employees (not potential owners).

 

For example,

Task "Approval" has 5 possible employees with employee id 10001, 1002, 1003, 1004, 1005.

 

When the process instance arrives at task "Approval",

the Process should assign one of  5 possible employees by random as the task owner automatically.

for example, let's assume employee 1002 is assigned in this process instance.

 

When another process instance arrives at task "Approval",

the task owner should be one of 4 possible employee except employee 1002 by random.

 

Do you have any idea ?

Please help me ;;;

Process Observer

$
0
0

Process Observer (POB) allows customers to monitor and optimize core processes based on SAP Business Suite’s built-in processes and supports insight to actions. It closes a major gap from process management lifecycle perspective.

 

process_observer_big_picture.png

Important Documents about Process Observer:

 

Upcoming Events on Process Observer: 

  • 27 February 2013: DSAG Technologietage in track Business Process Management at 15:30Prozesssichtbarkeit für Suite Prozesse covering Process Observer
  • 13 May 2012: At ASUG/Sapphire our lecture sessions featuring Process Observer are “Process Orchestration - An Outlook” and “An Overview to Process Observer Capabilities and Use-Cases.”
  • 26 April 2012: CubeServ Webinar on Process Observer

 

News:

SAP Operational Process Intelligence Powered by SAP HANA Is Now in Ramp-Up: SAP Operational Process Intelligence Powered by SAP HANA is a new application that provides real-time, actionable intelligence about your company's business processes, spanning SAP Business Suite leveraging Process Observer, SAP Business Workflow, and SAP NetWeaver Process Orchestration. The application is now in ramp-up. Find out more in this blog post by Peter McNulty and this document by Stephan Schluchter, and watch the overview video.

 

View TechED 2011 Recordings on Process Observer:

View the recording of PMC212 "Big Picture Process Orchestration from an Application Point of View" from TechED Las Vegas. The presentation is a bit more general, but still has a focus on Process Observer.

 

View our SDN Blog on Process Observer:

 

Process Observer Discussion:

  • For Q&A feel free to post in our Process Observer Discussion. And of course you're free to start a new discussion or add comments to any of our articles, too.

 

External Content on Process Observer:

 

Related SAP Content

 

Online Documentation on Process Observer:

How to skip the last page of BPM

$
0
0

Hi,

 

We've developed a BPM project and everything is working fine.

 

However, every time when we completed a process, it always shows a page about the task worked success or not.

My question is How can I skip this page or Can I close the web browser after task finished.

 

Is there anyone has done something like this before? It will be so kind if someone give me a example or some hints.

 

Allen

BPM Intermediate Events not being triggered on parallel sub process tasks

$
0
0

This warning is appearing in our traces for location com.sap.glx.core.resource.impl.j2ee.J2EEResourceImpl.Sessionizer.run()


The thread pool provided a thread that the context class loader is not null. This might lead later to some BPM process execution errors especially the execution of automated activities (thread = <Application [251] (22706)>, classloader = <service:com.sap.glx.core.svc@com.sap.engine.boot.loader.ResourceMultiParentClassLoader@17ff3f5d@alive>)

We see this every minute and sometimes more frequently during process execution.

Could this be related to the fact that sometimes intermediate events are not responding to triggers? E.g. we have parallel sub-process tasks which should be ended when an intermediate event is triggered, and from time to time, these are not being ended. This happens completely intermittently

Running CE 7.3 SP5

Custom Task UI - remote location

$
0
0

Hi there,

 

i'm using Netweaver BPM 7.3 EHP1 and try my first steps with BPM.

After completing the "MyNameAge"-Tutorial vom SCN and creating my own aproval-process i want to use custom user interfaces.

 

And here is my Question:

Is it also possible, to refer to a location on a different host? So i want to enter a absolute path instead of a relative path.

 

I like to do so, because we are using a IBM Websphere Portal for our Employee-Portal and i want the BPM to interact with that portal.

How would you do that? Any ideas?

 

Best regards,

 

Patrick

 

P.S: Is there any information (e.g. Tutorial) about creating custom UIs and how to access process data from context?


hello every one

$
0
0

     I'm very new to SAP BPC 10.0 , could you please suggest me some good materials to start learning bpc , and even other tips and suggestions .....

 

 

Thanks in advance

Problem with buildin sort function while mapping

$
0
0

Dear Experts,

 

I am tryng to use default sort function an an array list with the following type:

 

    <complexType name="sortingObjectType">

          <sequence>

            <element maxOccurs="unbounded" minOccurs="0" name="waitingTime">

              <complexType>

                <sequence>

                  <element name="appointmentID" type="string"/>

                  <element name="waitingTimeExam" type="int"/>

                  <element name="waitingTimeOp" type="int"/>

                </sequence>

              </complexType>

            </element>

          </sequence>

    </complexType>

 

In my process I have two data objects. DO_IN and DO_OUT are both from type sortingObjectType. My goal is sorting the input and delivering a sorted list as output. Example:

 

Input:

         <star:waitingTime>

            <star:appointmentID>zz</star:appointmentID>

            <star:waitingTimeExam>4</star:waitingTimeExam>

            <star:waitingTimeOp>4</star:waitingTimeOp>

         </star:waitingTime>

         <star:waitingTime>

            <star:appointmentID>aa</star:appointmentID>

            <star:waitingTimeExam>3</star:waitingTimeExam>

            <star:waitingTimeOp>3</star:waitingTimeOp>

         </star:waitingTime>

Output:

         <star:waitingTime>

            <star:appointmentID>aa</star:appointmentID>

            <star:waitingTimeExam>3</star:waitingTimeExam>

            <star:waitingTimeOp>3</star:waitingTimeOp>

         </star:waitingTime>

         <star:waitingTime>

            <star:appointmentID>zz</star:appointmentID>

            <star:waitingTimeExam>4</star:waitingTimeExam>

            <star:waitingTimeOp>4</star:waitingTimeOp>

         </star:waitingTime>

 

 

I am using following mapping script  between DO_IN and DO_OUT in my BPM process

 

sort(DO_IN/waitingTime,"appointmentID",true)

 

I could only find one documentation about the buildin functions but it didn't help me further. Would be really happy if someone could help me out. Worst case scenario I am planing to write an EJB function which sorts the array.

 

Thanks a lot,

Koray

 

I am getting following Mapping error.

 

Mapping failed

java.lang.NullPointerException: while trying to invoke the method java.lang.String.compareTo(java.lang.String) of an object returned from com.sap.mapping.lib.execution.implementation.function.builtin.generic.NodeContentReader.read(com.sap.mapping.lib.execution.api.data.SourceNode)

com.sap.mapping.lib.execution.api.exception.TExecutionException

at GenericSort( StandardInvocation:invoker )

at ( DeepExpression )

at http://www.insel.org/StartSortingService/:waitingTime( TerminalPart:expression )

at example.org/insel_test_0/pr/pm/prc_sorting_service/Pool_0:DO_OUT( BroadPart:child )

at ( NarrowMapping )

at com.sap.mapping.lib.execution.implementation.rule.invocation.StandardInvocation.step(StandardInvocation.java:132)

at com.sap.mapping.lib.execution.implementation.rule.expression.DeepExpression$Resolver.resolve(DeepExpression.java:46)

at com.sap.mapping.lib.execution.implementation.rule.expression.DeepExpression$Resolver.<init>(DeepExpression.java:28)

at com.sap.mapping.lib.execution.implementation.rule.expression.DeepExpression.internalExpress(DeepExpression.java:78)

at com.sap.mapping.lib.execution.implementation.rule.expression.AbstractExpression.express(AbstractExpression.java:45)

at com.sap.mapping.lib.execution.implementation.rule.part.AbstractPart.processExpression(AbstractPart.java:131)

at com.sap.mapping.lib.execution.implementation.rule.part.AbstractPart.partake(AbstractPart.java:92)

at com.sap.mapping.lib.execution.implementation.rule.part.BroadPart.processChildren(BroadPart.java:43)

at com.sap.mapping.lib.execution.implementation.rule.part.AbstractPart.partake(AbstractPart.java:96)

at com.sap.mapping.lib.execution.implementation.rule.mapping.NarrowMapping.internalMap(NarrowMapping.java:40)

at com.sap.mapping.lib.execution.implementation.rule.mapping.AbstractMapping.map(AbstractMapping.java:44)

at com.sap.mapping.lib.execution.implementation.Runner.transform(Runner.java:66)

at com.sap.mapping.lib.execution.implementation.Runner.transform(Runner.java:43)

at com.sap.glx.core.internaladapter.Transformer$TransformerTemplateAccessor$MapperTemplate$ImplementedInvocationHandler.map(Transformer.java:3089)

at com.sap.glx.core.internaladapter.Transformer$TransformerTemplateAccessor$MapperTemplate$ImplementedInvocationHandler.invoke(Transformer.java:3070)

at com.sap.glx.core.internaladapter.Transformer$TransformerInvocationHandler.invoke(Transformer.java:3356)

at com.sap.glx.core.dock.impl.DockObjectImpl.invokeMethod(DockObjectImpl.java:543)

at com.sap.glx.core.kernel.trigger.config.Script$MethodInvocation.execute(Script.java:248)

at com.sap.glx.core.kernel.trigger.config.Script.execute(Script.java:798)

at com.sap.glx.core.kernel.execution.transition.ScriptTransition.execute(ScriptTransition.java:78)

at com.sap.glx.core.kernel.execution.transition.Transition.commence(Transition.java:138)

at com.sap.glx.core.kernel.execution.LeaderWorkerPool$Follower.run(LeaderWorkerPool.java:135)

at com.sap.glx.core.resource.impl.common.WorkWrapper.run(WorkWrapper.java:58)

at com.sap.glx.core.resource.impl.j2ee.J2EEResourceImpl$Sessionizer.run(J2EEResourceImpl.java:249)

at com.sap.glx.core.resource.impl.j2ee.ServiceUserManager$ServiceUserImpersonator$1.run(ServiceUserManager.java:152)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:337)

at com.sap.glx.core.resource.impl.j2ee.ServiceUserManager$ServiceUserImpersonator.run(ServiceUserManager.java:149)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)

Caused by: java.lang.NullPointerException: while trying to invoke the method java.lang.String.compareTo(java.lang.String) of an object returned from com.sap.mapping.lib.execution.implementation.function.builtin.generic.NodeContentReader.read(com.sap.mapping.lib.execution.api.data.SourceNode)

at com.sap.mapping.lib.execution.implementation.function.builtin.generic.DescendingSorter$1.compare(DescendingSorter.java:17)

at com.sap.mapping.lib.execution.implementation.function.builtin.generic.DescendingSorter$1.compare(DescendingSorter.java:15)

at java.util.Arrays.mergeSort(Arrays.java:1270)

at java.util.Arrays.sort(Arrays.java:1210)

at java.util.Collections.sort(Collections.java:159)

at com.sap.mapping.lib.execution.implementation.function.builtin.generic.AbstractSorter.execute(AbstractSorter.java:19)

at com.sap.mapping.lib.execution.implementation.function.builtin.generic.GenericSortFunction.invokeNative(GenericSortFunction.java:34)

at com.sap.mapping.lib.execution.implementation.rule.invocation.StandardInvocation.step(StandardInvocation.java:129)

... 31 more

Process Composer DC deployment error

$
0
0

Dear Team,

 

When i try to deploy a BPM DC(Process Composer) in CE 7.31 05 I am getting the below error. Can anyone tell me how to solve this error.

 

I am able to buld the dc successfully.

 

com.sap.engine.services.dc.api.deploy.DeployException: [ERROR CODE DPL.DCAPI.1027] DeploymentException.
Reason: ASJ.dpl_dc.001085 Operation [deploy] of [DCNAME] failed

at com.sap.engine.services.dc.api.deploy.impl.DeployProcessorImpl.deployItems(DeployProcessorImpl.java:862)

at com.sap.engine.services.dc.api.deploy.impl.DeployProcessorImpl.deploy(DeployProcessorImpl.java:259)

at com.sap.ide.eclipse.deployer.dc.deploy.DeployProcessor70.deploy(DeployProcessor70.java:105)

at com.sap.ide.tools.services.dc.EngineDcDeployService.deployFiles(EngineDcDeployService.java:257)

at com.sap.ide.tools.services.dc.EngineDcDeployService.deploy(EngineDcDeployService.java:135)

at com.sap.ide.dii05.ui.internal.actions.dc.DcDeployAction$5$1.run(DcDeployAction.java:282)

at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Caused by: com.sap.engine.services.dc.cm.deploy.DeploymentException: ASJ.dpl_dc.001085 Operation [deploy] of [DCNAME] failed

at com.sap.engine.services.dc.cm.deploy.impl.OnlineDeployProcessor.performDelivery(OnlineDeployProcessor.java:246)

at com.sap.engine.services.dc.cm.deploy.impl.BulkOnlineDeployProcessor.deploy(BulkOnlineDeployProcessor.java:67)

at com.sap.engine.services.dc.cm.deploy.impl.AbstractDeployProcessor$DeployProcessorHelper.visit(AbstractDeployProcessor.java:282)

at com.sap.engine.services.dc.cm.deploy.impl.DeploymentItemImpl.accept(DeploymentItemImpl.java:84)

at com.sap.engine.services.dc.cm.deploy.impl.AbstractDeployProcessor.deploy(AbstractDeployProcessor.java:100)

at com.sap.engine.services.dc.cm.deploy.impl.DeployThread.run(DeployThread.java:39)

at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)

at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)

at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)

Caused by: com.sap.engine.services.dc.gd.DeliveryException: [ERROR CODE DPL.DC.3297] Operation [update] of [sdu id: [DCNAME]
sdu file path: [/usr/sap/XX/J02/j2ee/cluster/server0/temp/tc~bl~deploy_controller/archives/75575/DCNAME.sda]
version status: [HIGHER]
deployment status: [Admitted]
description: []
] failed

at com.sap.engine.services.dc.gd.impl.ApplicationDeployer.update(ApplicationDeployer.java:100)

at com.sap.engine.services.dc.gd.impl.InitialApplicationDeployer.performDeployment(InitialApplicationDeployer.java:141)

at com.sap.engine.services.dc.gd.impl.InitialGenericDeliveryImpl.deploy(InitialGenericDeliveryImpl.java:57)

at com.sap.engine.services.dc.cm.deploy.impl.OnlineDeployProcessor.performDelivery(OnlineDeployProcessor.java:213)

... 8 more

Caused by: com.sap.engine.services.deploy.server.utils.DSRemoteException: ASJ.dpl_ds.006193 Operation [update] of [/usr/sap/XX/J02/j2ee/cluster/server0/temp/tc~bl~deploy_controller/archives/75575/DC.sda] failed

at com.sap.engine.services.deploy.server.DeployServiceImpl.catchDeploymentExceptionWithDSRem(DeployServiceImpl.java:3374)

at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:489)

at com.sap.engine.services.dc.gd.impl.ApplicationDeployer.update(ApplicationDeployer.java:74)

... 11 more

Caused by: com.sap.engine.services.deploy.container.DeploymentException: Failed to update application DCNAME

at com.sap.esi.esp.service.server.deploy.cfgar.ConfigurationsDeployManager.makeUpdate(ConfigurationsDeployManager.java:255)

at com.sap.engine.services.deploy.server.utils.container.ContainerWrapper.makeUpdate(ContainerWrapper.java:408)

at com.sap.engine.services.deploy.server.application.UpdateTransaction.makeComponents(UpdateTransaction.java:478)

at com.sap.engine.services.deploy.server.application.DeployUtilTransaction.commonBegin(DeployUtilTransaction.java:182)

at com.sap.engine.services.deploy.server.application.UpdateTransaction.begin(UpdateTransaction.java:234)

at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:421)

at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:473)

at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:1836)

at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:582)

at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:487)

... 12 more

Caused by: com.sap.esi.esp.service.server.deploy.ActionException: Matching AuthenticationProfile for name [noAuthentication] is not found. AuthenticationProfile is searched in following namespaces:  {DCNAME}

at com.sap.esi.esp.service.server.deploy.cfgar.actions.InitializeAuthTypeAction.getAuthProfile(InitializeAuthTypeAction.java:76)

at com.sap.esi.esp.service.server.deploy.cfgar.actions.InitializeAuthTypeAction.perform(InitializeAuthTypeAction.java:38)

at com.sap.esi.esp.service.server.deploy.CompositeAction.perform(CompositeAction.java:46)

at com.sap.esi.esp.service.server.deploy.ActionsManipulator.performAction(ActionsManipulator.java:29)

at com.sap.esi.esp.service.server.deploy.cfgar.ConfigurationsDeployManager.makeUpdate(ConfigurationsDeployManager.java:253)

... 21 more

 

Regards,

Shamila S

Tracking Field Changes Using the Process Observer (POB) Direct Event API

$
0
0

Hi again,

 

In one of my last blog postings about Process Observer, I introduced the Direct Event API as an alternative to using BOR events for logging. The implementation sample given at the end of that posting can easily be extended to perform the tracking of changes that are made to orders on field level. This information is then available for process monitoring and analysis.

 

Tracking of Field Changes

 

First we need to add the changes we want to track to the process definition. The best practice is to create your own task types for each event to be tracked. To do so, you create corresponding entries in the task type table of the process façade (transaction POC_FACADE).

task_type_fields.png

[To work in the customer namespace, you enter task type IDs starting with Z here.]

 

You combine the task type with the corresponding task, thereby defining a new task:

task_field.png

Then you can create one or more new activities in the process definition and assign the new task for monitoring (transaction POC_MODEL). In our example, we create just one new activity for ‘Change Purchase Order’ and add the different change tasks. As a result, the activity will be logged when any of the tasks is being observed. Item level tasks are flagged.

process_def_fields.png

In the process monitor, you can see which tasks have actually been executed (see below).

 

In the application instrumentation, you have to add the creation of the field change events. To identify the change, you compare the new value with the old value as provided by the interface. The new coding is highlighted here:

 

METHOD IF_EX_ME_PURCHDOC_POSTED~POSTED.

 

* data definitions

   FIELD-SYMBOLS: <fs_ekpo> TYPE uekpo.
 
DATA ls_event             TYPE poc_s_event.
 
DATA lt_event             TYPE poc_t_event.
 
DATA ls_pre_bo            TYPE poc_s_pre_bo_event.
 
DATA lv_time              TYPE poc_execution_time.
 
DATA lv_transaction_id    TYPE poc_transaction_id.

 

* loop at purchase order items
  LOOP AT im_ekpo ASSIGNING <fs_ekpo> WHERE bstyp = 'F'"Purchase Orders
    "Check the field MEMORY to see if the PO document is COMPLETE.   

      IF im_ekko-memory = 'X'. "ABAP_TRUE
        "Incomplete Document. Do not proceed
        CONTINUE.
     ENDIF.

 

* compose event
    CLEAR ls_event.
    ls_event-bo_id = im_ekko-ebeln.     " Purchase Order ID
    ls_event-item_id = <fs_ekpo>-ebelp. " item ID

    ls_event-bo_type = '001'.       

              " BO Type ID (001 = Purchase Order)
    CALL FUNCTION 'TH_GET_TRANSACTION_ID'       " Kernel Transaction ID
         IMPORTING
            transaction_id = lv_transaction_id.   

    ls_event-transaction_id = lv_transaction_id.

    GET TIME STAMP FIELD lv_time.                " Execution Date/time
    ls_event-executed_at = lv_time.              " Execution Date/time
    ls_event-executed_by = sy-uname.             " user

    IF sy-tcode IS NOT INITIAL.
        ls_event-cbe_category = '01'.   

             " Callable Business Entity: cat ‘01’ = Transaction
        ls_event-cbe_type = sy-tcode.              " tcode
    ENDIF.        

"Predecessor Business Objects (document flow) – loop over schedule line items
    ls_pre_bo-pre_bo_type = '108'.

           " BO Type ID (108 = Purchase Requisition)
    LOOP AT im_eket INTO ls_pre_bo_pr WHERE ebeln = <fs_ekpo>-ebeln
         AND ebelp = <fs_ekpo>-ebelp.       

                   ls_pre_bo-pre_bo_id = ls_pre_bo_pr-banfn.
         ls_pre_bo-pre_item_id = ls_pre_bo_pr-bnfpo.                                  

                     APPEND ls_pre_bo TO ls_event-previous_bo.
         CLEAR ls_pre_bo .

        ENDLOOP.

 

* check the change type of thepurchase order item

     CASE <fs_ekpo>-kz.

       WHEN 'I'.                    

                   " purchase order item was created
        ls_event-event_type = '901'.     

                   " task type ID (901 = Create item)
       WHEN 'U'.                     

                   " purchase order item was updated

          IF im_ekko_old-memory = 'X'.
                   "we need to consider this as a new CREATE.
             ls_event
-event_type = '901'.                " Create item
            
APPEND ls_event TO lt_event.
         
ELSE.

                           READ TABLE im_ekpo_old INTO ls_ekpo_old

                              WITH KEY banfn = <fs_ekpo>-banfn

            bnfpo = <fs_ekpo>-bnfpo.         

                          IF <fs_ekpo>-menge <> ls_ekpo_old-menge OR

                           <fs_ekpo>-meins <> ls_ekpo_old-meins.
               
ls_event-event_type = '912'.               

                                        " Line Item Quantity Changed
               
APPEND ls_event TO lt_event.
            ENDIF.

                          IF <fs_ekpo>-netpr <> ls_ekpo_old-netpr OR

                             <fs_ekpo>-peinh <> ls_ekpo_old-peinh.
               ls_event
-event_type = '913'.               

                                         " Change of Net Amount

                            APPEND ls_event TO lt_event.

                          ENDIF.         

           ENDIF.

       WHEN OTHERS.

         …

         APPEND ls_event TO lt_event.
    ENDCASE.
  ENDLOOP.

* finally raise list of events to Process Observer
  IF lt_event[] IS NOT INITIAL.
    CALL FUNCTION 'POC_RAISE_EVENT'
      EXPORTING
        it_event  = lt_event
        iv_commit = abap_false.
  ENDIF.
  CLEAR lt_pre_bo_pr.
ENDMETHOD.

 

Note: Predecessor information has to be filled only if the predecessor is a different business object (item).

  

After you have created a Process Requisition (ME51N) and a corresponding Purchase Order item (ME21N), you change the observed ‘Purchasing Group’ field. When you have saved the change, you find the following entries in the process monitor (transaction POC_MONITOR).  The information about the
actual observed task - which field was changed – can be found in the ‘Related Activities’ section.

  process_monitor_fields.png

To further operationalize this, that is, to be informed or to automatically react to such field changes, you create a counter KPI which counts the corresponding field changes (transaction POC_MODEL). In addition to the article ‘Create KPI definitions for Process Observer’, it is important to know that KPIs can also be defined on task level. This means that instead of defining an activity for counting, you specify the BO type and the task type.

KPI_def_field.png

Then you set a threshold value (same transaction). You can set the threshold to the value when you want to be informed. If you want to be informed about any changes that are taking place in a field, just set the field value to 1. You will then be informed when the first change to the field is made.

threshold_field.png

Note: A BAdI and a BRF+ function that allow you to set thresholds specific to a process instance during process runtime are also available.

 

You can then use the threshold event created by Process Observer to create notifications and actions as it is described in blog Using Thresholds and Alerting in Process Observer.

To analyze field changes, you perform a BI analysis using the data source ‘Process KPIs’ (see also BI Content for Process Observer) or aggregate data contained in table POC_D_KPI in a SAP HANA system, for example, by using SAP Operational Process Intelligence.

report_fields.png

[Screenshot taken from Bex report on changes in Sales Orders]

 

Related Use Cases (Exception Tracking)

 

Instead of just tracking simple field changes, you can combine the tracking with more complex calculations. You may, for example, want to evaluate whether a quantity within an order is within a predefined limit. If it is not, you want to be informed of this.

  

If this is the case, you define a new task type and the ‘Quantity Exceeds Limits’ task as described above and add it to the process definition.  Here it may make sense to have a separate activity for the event that is considered to be the exception:

task_exception.png

In the application BAdI, you first check whether the quantity was changed. If so, calculate whether the quantity is still within the limit, if not, add the ‘Quantity Exceeds Limits’ event.

    

     IF <fs_ekpo>-menge > lv_qty_upper_limit

   OR <fs_ekpo>-menge < lv_qty_lower_limit

     …

           " Schedule Line Quantity Exceeds Limits

           ls_event-event_type = 'Z001'.               

           …

           APPEND ls_event TO lt_event.

     ENDIF.

     …

  

You have seen how easy it is to leverage Process Observer for tracking field changes in your documents or for monitoring related issues such as exceptions.

 

Stay tuned for more tips and tricks about Process Observer!

problem with BPM custom UI

$
0
0

When session time out in portal ,

refresh the browser,

login again.  But open the task in UWL, always get error :

A possible Cross-Frame Scripting attack has been prevented. Please contact your system administrator or refer to SAP Note 1651004 for more information.

It seems some check is done,

but no problem with WDJ UI.

If I logout and login again, it's OK.

 

But it is not convenient for the users.

 

Someone can help?

 

Thanks

Viewing all 887 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>