BAQ Combo customization - how to convert from Classic to Kinetic

Other fields are bound to KeyFields and LaborDtl. I tried both and get a little farther in that the DMR # is no longer grayed out but when I select it I get “No Data Found” . Wondering if now something needs to change in the BAQ?

1 Like

Try this in the browser:
Preview your layer.
Press F12 to open Dev Tools.
Drop down your BAQ combo box.
Go to the network tab of the Dev Tools and look for an Execute By ID (or something similar).
Click on that event–does it give you any clues?

Additionally, when you run the BAQ in the BAQ editor, it pulls back data, yeah?

Looking at your query, it looks like you’re filtering on Job/Asm/Op–are you doing that in the BAQ? Via parameters? In App Studio?

It’s the BAQ as for the Classic customization I use the where (DMRHead.OpenDMR = 1 and DMRHead.JobNum = ‘[Like:JobHead.JobNum]’ and DMRHead.AssemblySeq = [Like:JobAsmbl.AssemblySeq] and DMRHead.OprSeq = [Like:JobOper.OprSeq] and the drop down list only returns the open DMR #'s for the Job/Asm/Op I entered/selected on the Start Rework Activity screen

So, what I would do is remove this stuff from the BAQ:

‘[Like:JobHead.JobNum]’ and DMRHead.AssemblySeq = [Like:JobAsmbl.AssemblySeq] and DMRHead.OprSeq = [Like:JobOper.OprSeq]

Then add those to the where clause in App Studio to filter the results based on the fields KeyFields.JobNum, LaborDtl.AssemblySeq, and LaborDtl.OperSeq.

Do you have any examples of writing the Where Clause as I tried several combination that were in various post but nothing seems to be working

So, looking back at my notes, it turns out the where clause is bugged.
There are a couple methods you can go from here.
You can set up the filters/filtersParams.

Filters:

QuoteHed_QuoteNum=?{QuoteNumCol},QuoteDtl_QuoteLine=?{QuoteLineCol}

FiltersParams:

QuoteNumCol=?[QuoteNum],QuoteLineCol=?[QuoteLine]

(No spaces in these lines)

One thing to note about the bold items in this line: QuoteNumCol=?[QuoteNum],QuoteLineCol=?[QuoteLine] is that the combo only knows about the fields within the dataview its bound to. In my example, the combo is bound to QuoteDtl.Character01, so it will only know about fields within the QuoteDtl table. This is why you only need to write it as [QuoteNum] vs [QuoteDtl.QuoteNum]. That being said, it’s also a limitation if you need filters from multiple views. If you do, then I suggest following the below method and bind them to a BAQ View.

OR

You can create a BAQ View to load your data, then hook into an action (like AfterGetByID) to create an event to filter your view based on the loaded Job/Asm/Op, which is a bit more complex.

Here are some snips of the BAQ View version.

Another edit–you could also probably use the REST widget to call your BAQ and populate the filters or parameters that way and then plop that into a view and bind that view to your combo.

1 Like

Aaron - Do you know if the where clause bug has been reported to Epicor and if they are working on it?

We had a similar and I got referred by Epi support to a help doc on using Filters in BAQ Combos and it worked for us

image

1 Like

For some reason my help does not have the Component Reference and Examples
image

Try setting the Filters and Filter Params which are in the Reusable Combo section.

Filter field syntax is: Table_Fieldname = ‘?{FilterName}’.
Filter Params field syntax: FilterName = ?[fieldname]

I finally have victory using the Reusable Combo Section Filter and Filter Params fields. THANK YOU for the help!!! It was not the easiest to figure out the syntax that I required as I had 3 fields from my BAQ that I needed to filter based on the Job/Assembly/Operation selected on the MES Start Rework Activity screen.
Here are the filters I ended up getting to work…
Filters: DMRHead_JobNum = ‘?{JobNumColumn,’’}’,DMRHead_AssemblySeq = ‘?{AsmSeqColumn}’,DMRHead_OprSeq = ‘?{OprSeqColumn}’

Filters Params: OprSeqColumn=?[OprSeq],AsmSeqColumn=?[AssemblySeq],JobNumColumn=?[JobNum]

I also discovered I had the EpBinding in the Erp-Comb-Box wrong (was using Keyfields.JobNum and changed to LaborDtl.JobNum). I am now able to filter and return open DMR #'s for only the Job/Assembly/Operation selected - like I was doing in Classic.

3 Likes

Great job!

I am back…while this solution returns the expected DMR #'s once I click OK to continue working the Rework I get errors - Asm reference invalid value & Opr reference invalid Value.
Any thoughts?

Are those sequences valid rework operations?

Yes they are valid rework operations. I have the same type of customization in Classic mode that works find for the same Job/Asm/Opr. The issue is in trying to convert the prior Classic customization to work in Kinetic.

I think what is happening is once I select a DMR # from my new custom Combo, the Assembly and OprSeq I selected prior is lost so when I click OK and the ValidateReferentialIntegrity is executed the Assembly and OprSeq are null. Just not sure what in my custom Reusable Combo is causing this or what to do to resolve.

What do you have set for “display” and “value” waaaay at the bottom of the reusable combo?

Here is what I have under the Reusable Combo.
image



image
In the Advanced section I have:
image

That looks fine.
What’s the flow of your customization?

Fill out the job/asm/op and it filters the list of the DMRs?
Or are you selecting a DMR and having the job/asm/op populate from the selected DMR?

Fill out the Job/Asm/Op and it filters the list of the DMRs. Then I select a DMR from the list.