Differences in behavior of Extended Code between 2007A and 8.82
Heiko Merz
Hey,we plan to migrate from SAP B1 2007A to 8.82.
On our new 64bit-Citrix-Farm, we have installed the new version of SAP and the latest versions of Coresuite modules.
Now I found out that for some CoCu-Rules, it takes much longer in 8.82 than in 2007A.
Example: We have a rule when leaving the field itemcode in Sales Orders, the rule should fill some fields with calculated values. This happens by using the extended code.
In 2007A, after entering the itemcode and pressing Tab, it takes 3 seconds. In 8.82, it takes 8 seconds.
We just copied over all rules from 2007A to 8.82.
Can anyone help me with this ? Do we have to modify anything in 8.82 to get this running "normally" ?
Thanks.
Heiko
Heiko Merz
Update:I found out that in my extended code, I fill many fields with values from a SQL - Query. (16 fields at the moment)
The more filling statement I delete, the faster the function is running.
I have one special one which makes the function running 2 seconds faster when canceling this special SetValue.
As I wrote above, in 2007A it's the same number of fields being filled, running much fast.
Any ideas ?
The code look like this:
Matrix m = Matrix.GetFromUID(form, "38");
SqlCommand cmdAdditional = new SqlCommand();
cmdAdditional.CommandText = @"
SELECT
OITM.U_JRS_LOADM,
JRS.U_JRS_CUIT,
JRS.U_JRS_CUDE,
JRS.U_JRS_BRANCH,
JRS.U_JRS_SPVME,
BRANCH.Code,
JRS.U_JRS_SLPCDE,
SLP.SlpName,
JRS.U_JRS_PR1VAL,
SLP.SlpCode,
JRS.U_JRS_TEXT1,
JRS.U_JRS_TEXT2,
JRS.U_JRS_TEXT3,
JRS.U_JRS_TEXT4,
JRS.U_JRS_TEXT5,
JRS.U_JRS_TEXT,
OITM.Usertext,
OITM.SalFactor1 AS 'Factor1',
OITM.SalFactor2 AS 'Factor2',
OITM.SalFactor3 AS 'Factor3',
OITM.SalFactor4 AS 'Factor4'
FROM OITM
LEFT OUTER JOIN [@JRS_C_I] JRS ON
OITM.ItemCode=JRS.U_JRS_ITMCDE
AND JRS.U_JRS_VALIDF<GETDATE()
AND (JRS.U_JRS_VALIDT>=DATEADD(DAY,-1,GETDATE()) or JRS.U_JRS_VALIDT is null)
AND JRS.U_JRS_ACTIV='1'
AND U_DeletedF<>'Y'
AND [email="JRS.U_JRS_BPCDE=@cardCode"]JRS.U_JRS_BPCDE=@cardCode[/email]
AND [email="JRS.U_JRS_ITMCDE=@itemCode"]JRS.U_JRS_ITMCDE=@itemCode[/email]
LEFT OUTER JOIN [@JRS_BRANCH] BRANCH ON
JRS.U_JRS_BRANCH=BRANCH.U_JRS_BR
LEFT OUTER JOIN OSLP SLP ON
JRS.U_JRS_PR1SLP = SLP.SlpCode
WHERE [email="OITM.ItemCode=@itemCode"]OITM.ItemCode=@itemCode[/email]
";
cmdAdditional.Parameters.AddWithValue("@cardCode", cardCode);
cmdAdditional.Parameters.AddWithValue("@itemCode", itemCode);
using(SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(cmdAdditional))
{
if(sdr.Read())
{
double fact1 = double.Parse(sdr["Factor1"].ToString(), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.CurrentInfo);
double fact2 = double.Parse(sdr["Factor2"].ToString(), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.CurrentInfo);
double fact3 = double.Parse(sdr["Factor3"].ToString(), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.CurrentInfo);
// FILL VALUES TO DOCUMENT LINE
m.SetValue("U_JRS_CUIT", row, sdr["U_JRS_CUIT"].ToString());
m.SetValue("U_JRS_CUDE", row, sdr["U_JRS_CUDE"].ToString());
// m.SetValue("U_JRS_BRANCH", row, sdr["Code"].ToString());
m.SetValue("U_JRS_SPVME", row, sdr["U_JRS_SPVME"].ToString());
if (sdr["U_JRS_SLPCDE"].ToString() != "") { m.SetValue("27", row, sdr["U_JRS_SLPCDE"].ToString()); }
if (sdr["SlpCode"].ToString() != "-1") { m.SetValue("U_JRS_PR1SLP", row, sdr["SlpName"].ToString()); }
m.SetValue("U_JRS_PR1VAL", row, sdr["U_JRS_PR1VAL"].ToString());
string palString = sdr["U_JRS_LOADM"].ToString();
double palDouble = double.Parse(sdr["U_JRS_LOADM"].ToString(),System.Globalization.NumberStyles.Any,System.Globalization.NumberFormatInfo.CurrentInfo);
m.SetValue("U_JRS_LDMPAL", row, palDouble.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
m.SetValue("U_JRS_TEXT1", row, sdr["U_JRS_TEXT1"].ToString());
m.SetValue("U_JRS_TEXT2", row, sdr["U_JRS_TEXT2"].ToString());
m.SetValue("U_JRS_TEXT3", row, sdr["U_JRS_TEXT3"].ToString());
m.SetValue("U_JRS_TEXT4", row, sdr["U_JRS_TEXT4"].ToString());
m.SetValue("U_JRS_TEXT5", row, sdr["U_JRS_TEXT5"].ToString());
m.SetValue("U_JRS_Fact1", row, fact1.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
m.SetValue("U_JRS_Fact2", row, fact2.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
m.SetValue("U_JRS_Fact3", row, fact3.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
m.SetValue("U_JRS_BRANCH", row, sdr["Code"].ToString());
0
Please sign in to leave a comment.
Comments
0 comments