BPM Issue getting JobOpDtl data

I have a BPM on erp.bo.jobentry.update.post-processing. I want to grab the JobOpDtlRow.OprSeq but it is giving me an error saying that data is not there. It feels like the JobOpDtl data is not there in the post. I would think it should be, but there has to be a way for me to grab and set it at that point. Any suggestions?

image

What does the trace show?

When customizing Update methods, you need to use a pre-proc BPM if you want the system to write your changes. Changes made to objects in post-proc aren’t saved (unless you do something dumpster-fiery like calling update again) because the code is executing after the DB write.

Update post-proc BPM’s are for, like, auto-printing stuff or sending the data out to another module after you know the write was good. Note that you can also use post-proc BPM’s on non-update methods depending on what the method actually does.

Finally, if ds.JobOpDtl isn’t working, you can also type “ds.” (or whatever Epicor or yourself are calling the data object) and then hit ctrl+space to bring up code completion suggestions.

image

You can also right click in the code box to bring up a menu that list the objects and variables in your scope. Though, I don’t recommend using the tt objects for anyone on E10 since they’re replaced in 11.

image

EDITED: because my original phasing was tortured and didn’t really explain why. Also, “fiery” is shouldn’t be the correct spelling, but it is apparently.

It is ds.JobOpDtl when I do control space and the only parameter that comes back is the ds. It does not change the data and I know it is following thru the code as I put a message box on the end to test.

image

Right, because it’s a post-proc BPM. See my post above. I might have edited it after you read it, so you might not have seen the full explanation.

1 Like

Oh sorry in a meeting while i’m doing this…squirel…
I moved it to pre-processing after your comments.

And it is still not changing the data in the database. It should be changing the B to an A.
image

Let’s see the code. Did you set the RowMod?


image
image

Add opDtl.RowMod = "U"; inside your ifs.

image
image

Still not changed :frowning:

Could I be missing a using statement?
I have these:
image

You shouldn’t need any use statements for something as simple as this.

1 Like

I’m just trying to see what it is Epicor is expecting I’m not doing.
I’ve tried adding an Updated in the if and that is not working either.
image

I’m sure it is something simple i’m missing as to why it is not updating the data.

That bo may not be designed to change the detail records on that method.

Client tracing can show if that table has any changed rows sent to server. If you only update header row for example, nothing in detail row will be sent

What if we mark the header row updated as well?

The tracing log isn’t showing me anything. I did track changes only.

Ice.Proxy.BO.ReportMonitorImpl GetRowsKeepIdleTimeWithBallonInfo https://kccwvtkntcapp01.kccinternational.local/KineticPilot/ Ice.Tablesets.ReportMonitorTableset 9/18/2023 14:41:00:0490953 PM 17 995e438e-85fa-4574-9f76-978dffa47ab5 0 '') OR (PrintDriver='SSRS' AND (AutoAction='PREVIEW' OR AutoAction='PRINT') AND LastAction='SSRSREADY')) AND (WorkStationID='LTG2008A-L5511 1' OR WorkStationID='web_TMAYFIELD')]]> 09/17/2023 and SubmitUser = 'TMAYFIELD']]>

There is not an option to do ds.JobHead.Updated() it throws an error at me.

This call is unrelated, search for your method

@tmayfield In your job creation processing when does the A get set? If it is before get details then post processing or in a data directive on added JobOpDtl records you can make the change. It just has to be in place before the job is scheduled.