My problem was that the tt tables are just not populated for whatever reason when the BPM is called. I'm not an experienced Epicor developer, but should have noticed the parameters in the trace that were prefixed with the letters "ip" (input paramters to the method):
<tracePacket>
<businessObject>Epicor.Mfg.BO.EngWorkBench</businessObject>
<methodName>CheckIn</methodName>
<returnType>Epicor.Mfg.BO.EngWorkBenchDataSet</returnType>
<localTime>02/06/2015 10:11:49:6430894 AM</localTime>
<executionTime>546.8925</executionTime>
<parameters>
<parameter name='ipGroupID' type='System.String' ><![CDATA[MPMGR]]></parameter>
<parameter name='ipPartNum' type='System.String' ><![CDATA[ccc]]></parameter>
<parameter name='ipRevisionNum' type='System.String' ><![CDATA[yytt]]></parameter>
<parameter name='ipAltMethod' type='System.String' ><![CDATA[]]></parameter>
<parameter name='ipAsOfDate' type='System.DateTime' ><![CDATA[02/06/2015 00:00:00]]></parameter>
<parameter name='ipCompleteTree' type='System.Boolean' ><![CDATA[False]]></parameter>
<parameter name='ipValidPassword' type='System.Boolean' ><![CDATA[False]]></parameter>
<parameter name='ipReturn' type='System.Boolean' ><![CDATA[True]]></parameter>
<parameter name='ipGetDatasetForTree' type='System.Boolean' ><![CDATA[True]]></parameter>
<parameter name='ipUseMethodForParts' type='System.Boolean' ><![CDATA[False]]></parameter>
<parameter name='ipAuditText' type='System.String' ><![CDATA[ECO Group MPMGR material planning manager]]></parameter>
<parameter name='opMessage' type='System.String' ><![CDATA[]]></parameter>
</parameters>
</tracePacket>
I had to keep the "Conditions" empty, and add custom ABL (using the input param variables) to both check the conditions, and to exit the method if they were met:
/* Do not allow a part to be checked-in if: 1) it's part.typecode is M (manufactured) and 2) if it doesn't have any BOM materials attached to it (EcoMtl) */
Define variable MyMsg as character no-undo.
assign MyMsg = 'Problem: MyMsg is not set'.
find first part where part.company = cur-comp and part.partnum = ipPartNum and part.typecode = 'M' no-lock no-error.
if available part then do:
find first ecomtl where ecomtl.company = cur-comp and ecomtl.partnum = ipPartNum and ecomtl.revisionnum = ipRevisionNum no-lock no-error.
if not available ecomtl then do:
assign MyMsg = ipPartNum + ' is a manufactured part, so before you can check it in, its BOM must first be loaded in the "Method of Manufacturing->Materials" tab. '.
{lib\PublishEx.i &exMsg = MyMsg} {&THROW_PUBLIC}.
end.
end.
Hopefull, this might help someone else down the road,
Mark
--------------------------------------------
On Thu, 2/5/15, sergio prieto s_a_prieto@... [vantage] <vantage@yahoogroups.com> wrote:
Subject: Re: [Vantage] Epicor 9.04 Method Directive: tt fields inserted in "Design Exception Template" don't display data when BPM fires
To: "vantage@yahoogroups.com" <vantage@yahoogroups.com>
Date: Thursday, February 5, 2015, 7:02 PM
Â
I would
suggest at least adding a single ocndition
i.e.  "there is already one updated row in
tabe¡le..." when you don't use any conditions on
the BPMs sometimes Epicor generates trash-empty temp tables,
which then could make you think the temp table its
empty.  Kind Regards,Sergio P. CTO, Sr. PartnerKind Regards,Sergio P.
Mayan Technologies USA,
Inc.
(858) 900.1555sprieto@...
On Thursday,
February 5, 2015 1:55 PM, "Lb Lb lb_epicor99@...
[vantage]" <vantage@yahoogroups.com> wrote:
Â
Hi,
I must be
missing something obvious. Â Trying to add a BPM that fires
whenever a revision is "checked-in" from the
Engineering Workbench.
I've
got a pre-Processing Method Directive on
EngWorkBench.CheckIn with no conditions so it fires every
time a revision is checked in, and I've got an Action to
"raise exception" with a Design Exception Template
that contains just some informative text for the user along
with some tt fields that I've "inserted" using
both the "table" and "field" query
options (with all 4 filter checkboxes checked), but when the
BPM fires, the message window displays with the text from
the template, but all of the tt fields are blank (eg.
ttECORev.Partnum). Â The message window does however display
the AssemblyName from ttCallContextClient.
I'm
trying to create a BPM to prevent users from checking-in a
manufactured part when no "Method of
Manufacturing" data has been set up (operations,
materials, etc.).
I've
just double-checked my trace and all I see is
EngWorkBench.CheckIn. Â I'm assuming the ttEcoRev table
is empty at this point in the process, but not clear
why.
Any
info/suggestions would be greatly appreciated,Mark
#yiv2553373462 #yiv2553373462 --
#yiv2553373462ygrp-mkp {
border:1px solid #d8d8d8;font-family:Arial;margin:10px
0;padding:0 10px;}
#yiv2553373462 #yiv2553373462ygrp-mkp hr {
border:1px solid #d8d8d8;}
#yiv2553373462 #yiv2553373462ygrp-mkp #yiv2553373462hd {
color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}
#yiv2553373462 #yiv2553373462ygrp-mkp #yiv2553373462ads {
margin-bottom:10px;}
#yiv2553373462 #yiv2553373462ygrp-mkp .yiv2553373462ad {
padding:0 0;}
#yiv2553373462 #yiv2553373462ygrp-mkp .yiv2553373462ad p {
margin:0;}
#yiv2553373462 #yiv2553373462ygrp-mkp .yiv2553373462ad a {
color:#0000ff;text-decoration:none;}
#yiv2553373462 #yiv2553373462ygrp-sponsor
#yiv2553373462ygrp-lc {
font-family:Arial;}
#yiv2553373462 #yiv2553373462ygrp-sponsor
#yiv2553373462ygrp-lc #yiv2553373462hd {
margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}
#yiv2553373462 #yiv2553373462ygrp-sponsor
#yiv2553373462ygrp-lc .yiv2553373462ad {
margin-bottom:10px;padding:0 0;}
#yiv2553373462 #yiv2553373462actions {
font-family:Verdana;font-size:11px;padding:10px 0;}
#yiv2553373462 #yiv2553373462activity {
background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}
#yiv2553373462 #yiv2553373462activity span {
font-weight:700;}
#yiv2553373462 #yiv2553373462activity span:first-child {
text-transform:uppercase;}
#yiv2553373462 #yiv2553373462activity span a {
color:#5085b6;text-decoration:none;}
#yiv2553373462 #yiv2553373462activity span span {
color:#ff7900;}
#yiv2553373462 #yiv2553373462activity span
.yiv2553373462underline {
text-decoration:underline;}
#yiv2553373462 .yiv2553373462attach {
clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}
#yiv2553373462 .yiv2553373462attach div a {
text-decoration:none;}
#yiv2553373462 .yiv2553373462attach img {
border:none;padding-right:5px;}
#yiv2553373462 .yiv2553373462attach label {
display:block;margin-bottom:5px;}
#yiv2553373462 .yiv2553373462attach label a {
text-decoration:none;}
#yiv2553373462 blockquote {
margin:0 0 0 4px;}
#yiv2553373462 .yiv2553373462bold {
font-family:Arial;font-size:13px;font-weight:700;}
#yiv2553373462 .yiv2553373462bold a {
text-decoration:none;}
#yiv2553373462 dd.yiv2553373462last p a {
font-family:Verdana;font-weight:700;}
#yiv2553373462 dd.yiv2553373462last p span {
margin-right:10px;font-family:Verdana;font-weight:700;}
#yiv2553373462 dd.yiv2553373462last p
span.yiv2553373462yshortcuts {
margin-right:0;}
#yiv2553373462 div.yiv2553373462attach-table div div a {
text-decoration:none;}
#yiv2553373462 div.yiv2553373462attach-table {
width:400px;}
#yiv2553373462 div.yiv2553373462file-title a, #yiv2553373462
div.yiv2553373462file-title a:active, #yiv2553373462
div.yiv2553373462file-title a:hover, #yiv2553373462
div.yiv2553373462file-title a:visited {
text-decoration:none;}
#yiv2553373462 div.yiv2553373462photo-title a,
#yiv2553373462 div.yiv2553373462photo-title a:active,
#yiv2553373462 div.yiv2553373462photo-title a:hover,
#yiv2553373462 div.yiv2553373462photo-title a:visited {
text-decoration:none;}
#yiv2553373462 div#yiv2553373462ygrp-mlmsg
#yiv2553373462ygrp-msg p a span.yiv2553373462yshortcuts {
font-family:Verdana;font-size:10px;font-weight:normal;}
#yiv2553373462 .yiv2553373462green {
color:#628c2a;}
#yiv2553373462 .yiv2553373462MsoNormal {
margin:0 0 0 0;}
#yiv2553373462 o {
font-size:0;}
#yiv2553373462 #yiv2553373462photos div {
float:left;width:72px;}
#yiv2553373462 #yiv2553373462photos div div {
border:1px solid
#666666;height:62px;overflow:hidden;width:62px;}
#yiv2553373462 #yiv2553373462photos div label {
color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}
#yiv2553373462 #yiv2553373462reco-category {
font-size:77%;}
#yiv2553373462 #yiv2553373462reco-desc {
font-size:77%;}
#yiv2553373462 .yiv2553373462replbq {
margin:4px;}
#yiv2553373462 #yiv2553373462ygrp-actbar div a:first-child {
margin-right:2px;padding-right:5px;}
#yiv2553373462 #yiv2553373462ygrp-mlmsg {
font-size:13px;font-family:Arial, helvetica, clean,
sans-serif;}
#yiv2553373462 #yiv2553373462ygrp-mlmsg table {
font-size:inherit;font:100%;}
#yiv2553373462 #yiv2553373462ygrp-mlmsg select,
#yiv2553373462 input, #yiv2553373462 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}
#yiv2553373462 #yiv2553373462ygrp-mlmsg pre, #yiv2553373462
code {
font:115% monospace;}
#yiv2553373462 #yiv2553373462ygrp-mlmsg * {
line-height:1.22em;}
#yiv2553373462 #yiv2553373462ygrp-mlmsg #yiv2553373462logo {
padding-bottom:10px;}
#yiv2553373462 #yiv2553373462ygrp-msg p a {
font-family:Verdana;}
#yiv2553373462 #yiv2553373462ygrp-msg
p#yiv2553373462attach-count span {
color:#1E66AE;font-weight:700;}
#yiv2553373462 #yiv2553373462ygrp-reco
#yiv2553373462reco-head {
color:#ff7900;font-weight:700;}
#yiv2553373462 #yiv2553373462ygrp-reco {
margin-bottom:20px;padding:0px;}
#yiv2553373462 #yiv2553373462ygrp-sponsor #yiv2553373462ov
li a {
font-size:130%;text-decoration:none;}
#yiv2553373462 #yiv2553373462ygrp-sponsor #yiv2553373462ov
li {
font-size:77%;list-style-type:square;padding:6px 0;}
#yiv2553373462 #yiv2553373462ygrp-sponsor #yiv2553373462ov
ul {
margin:0;padding:0 0 0 8px;}
#yiv2553373462 #yiv2553373462ygrp-text {
font-family:Georgia;}
#yiv2553373462 #yiv2553373462ygrp-text p {
margin:0 0 1em 0;}
#yiv2553373462 #yiv2553373462ygrp-text tt {
font-size:120%;}
#yiv2553373462 #yiv2553373462ygrp-vital ul li:last-child {
border-right:none !important;
}
#yiv2553373462