CRM to BW extract - All Duration amounts are zero using 0CRM_SALES_ACT_1
Hello,
We are implementing the "CRM 4.0 Interaction Center with Winclient" and are using BW 3.1 for reporting. The problem we are encountering is we are getting "DURATION" and "Face to Face Duration" amounts that are ZERO when extracting call center activity data using the data source 0CRM_SALES_ACT_1. This data source feeds into the ODS 0SAL_DS01. We are expecting the "Duration" amounts to be non-zero and represent the time the call center agent worked on a particular activity. The data we are testing with has been entered manually and we are not yet connected using telephony server (so we cannot use the CTI data yet).
Any help regarding how I might solve this problem would greatly be appreciated. Possibly this is a CRM configuration issue but don't know.
Thanks and Regards,
David Schroeder
John Deere
(309)748-1724
Hi Silvio,
I've experienced a similar problem with this extractor. I attempted to Initialize Delta with Data Transfer to no avail. The job ran for 12+ hours and stayed in "yellow" status (0 records extracted). The following steps worked for me:
1. Initialize Delta without Data Transfer
2. Run Delta Update
3. Run Full Update and Indicate Request as Repair Request
Worked like a champ, data load finished in less than 2 minutes.
Hopefully this will help.
Regards.
Jason
Similar Messages
-
Forecasting: all historical values are zero
Hello,
I would like to execute forecast for a specific material.
Then I'm in MM02 in forecasting view, I filled all necessary parameters and I press "execute forecasts".
I received different pop ups, and one is "Between 11.2006 and 10.2011 all historical values are zero".
If I go out of this, and press on "Consumption vals", I have no data for unplanned consumption but if I click on "Total consumption", I got all values for each period of my historical periods.
So why do I have this message that historical values are zero? Then I have no chance to execute forecast with that behavior.
Same with several other materials.
Thanks for help.Dear Olivia,
In MM of forecasting view there is filed Hist. periods which you could have probably maintain more than 12 months say 60. So starting from current months it will go backward & search value for last 60 months. In your case it is not finding any past values. Have you maintain it in Additional data of material master Consumption tab ? Maintain some values for months & then try
Regards
Abhijit Gautam -
File creation for Generic Withholding Tax Reporting : amounts are zero
Hi,
I try to use the program RFIDYYWT to create the file for witholding tax reporting for France
The format tree DMEE IDWTFILE_FR_DAS2.
I have succeeded to create a file, with the correct format/layout (so a 10, 20, 210, 30, and 31 structure), but the amounts are all equal to zero in the fle generated compared to the result on the screen after execution of the program.
Does anybody knows the solution for this problem ?
Thanks a lot.Hi Wayne,
We opened a note with SAP and were told that a US 1042s copy could not be used within the standard system. Looking into it further we found that the form name was coded into a selection program. We had an ABAP developer add code that allows us to use a "Z_" copy form.
Regards,
Gregg -
How to list all the datatypes are being used in the database?
Is there any way you can list all the oracle datatypes are being used in the database?
Thanks,
ChauUse USER_TAB_COLUMNS or DBA_TAB_COLUMNS to determing various data type but USER_TAB_COLUMNS will show you what type being used by a schema user
-
All excise values are ZERO in Purchase order
Hello
We are using tax procedure TAXINJ procedure for Tax calculation.
Created the Purchase order for a material, entered the tax code in invoice tab system will not shown BED(JM01 condition) ECESS and SECESS values.
we have checked the Material and chapter id combination is correct available and Vendor excise details, here also vendor is excisable. checked the excise indicator for plant. plant also excisable.
maintained the excise tax rate infront of chapter id in J1ID....
But still PO is not showing any tax values in PO, all the values it is showing is ZERO.
Do the needful.
Regards
Sapman manDear,
Kindly check your VALIDITY PERIOD for ECXISE MASTER RECORDS in J1ID and check whether it is before P.O. date or not.
If it is OK then there is some problem in MASTER RECORD MAINTAINANCE for that do check following Master data are
maintained or not...
1) chapter id
2) material and chapter id combnation
3)CENVET determination
4) Vendor exsie detail
5) Excise indicator for PLANT
6) Excise tax rate
u must have left some MASTER RECORD.
Kindly see the warning messege coming just after u tick ITEM BOX mentioned below.
Regards
AJIT K SINGH
HAPPY TO HELP U
Edited by: AJIT K SINGH on Dec 2, 2009 10:46 AM -
Good morning all,
I took over as IT director for the school district in my town about 2 years ago, and we've had some techs come and go, all of which have had the domain administrator password (not my call, but my fault for not changing it by now). I am about to change
it, but before doing so I want to know how I can make sure what all this will break so I can quickly change the cached/saved password on whatever supporting services use this user/pass.
Can anyone help here?
Thank you!Hello,
In my point of view if I were in this situation I would Change the domain administrator password. By
Resetting the domain administrators all the services which use domain administrator as their logon user, will lose their functionality. I had this experience and I did change the domain administrator password with no problem. However do not
forget to have a account lockout tool or script for locating the place where the account was locked out.
But to keep it short most of the time. lockout problems are arise from mapped drives, credential manager and saved RDP sessions and etc.
Regards.
Mahdi Tehrani |
|
www.mahditehrani.ir
Please click on Propose As Answer or to mark this post as
and helpful for other people.
This posting is provided AS-IS with no warranties, and confers no rights.
How to query members of 'Local Administrators' group in all computers? -
Conditional suppress only if all column values are zero
I would like to suppress whole column if dbfield value is 0.00. I was able to suppress it in common tab of format field by using formula if dbfield =0.00 then true else false.
But i would like to suppress column value only when all the values in column are equal to 0.00. Otherwise I would like to retain those 0.00.
Let me know how I can do this?
Your response is appreciated
-Thanks
RaghuGo to "Format Field...", select the Common tab, and put something like the following in the Suppress formula.
Maximum({dbField}) = 0 -
Planning layout - If all KFs are Zero in Actual Cube
I have created two cubes, actuals and planning cubes. Created a planning layout in Multi planning area.
In the layout settings, i have selected , select from transactional Data option.
There are lot of entries in Actuals cube, for which all the Key figure values are zero.
However, i would like to show records also in the layout, so that users can enter the plan values.
Lets say, if the last year sales are zero ( from actual cube), still users would like to do the planning for future.
Is there any workaround to display those records from actuals cube for which all the key figure values are zero ?I know, where to make the setting. Since we have 200000 products and 5000 customers, we would not want to select all possible combinations.
I would be interested writing a FOX formula ( 2nd part of Andrey's solution).
Anyway, i have figured out the workaround. I have just increased the number of decimal places in one KF. If all the KFs are Zero, in the cube transformation, i am changing the zero to 0,0001.
In the layout, i am displaying only 2 decimals.
It is working as expected.
Thanks a lot..... -
Hello, i'm creating a very simple animation in ps cs5, but when I try to transform a smart object in a frame, all the frames are affected by it. What can I do ? Thanks, Ep
Ok, you are in frame animation mode. I thought cs5 had a timeline mode, but now I think I was wrong.
In frame animation mode what you do is in one frame you have the object rotated in one position, then select an other frame and rotate it. If it rotates the first frame, which I think it will. Create duplicate of the object in a new layer. Then rotate the second layer.
At this point in my example you would have two layers, one of which has a rotated object.
Clear the frames
Convert the two layers to frames.
You now have two frames, one for each layer.
Select both frames then click the tween button.
This will create the in between frames.
In the tween dialog box the higher the number of frames set here, will create a smoother animation but will result in a longer time frame for the animation to play.
Because Photoshop has no way of knowing which way the object should rotate, it is feasible for it to rotate the opposite direction or could look wonky. Just undo and add an in between layer showing how it should look in the middle, then continue on.
So your layers should be the following, a frame that shows all objects in their rest state.
All objects that remain in a rest state must be copied to the next layer (ctrl-j on Windows or cmd-j on Mac)
All subsequent layers are then used for rotating a duplicate of the object. (Ctrl j or cmd j)
You will find the commands to clear the frames, convert layers to frames and tweeting in the hidden menu found when you click the small icon in the upper right hand corner of the animation panel. -
I cannot get audio using this device all my HDMI ports are in use as well as my digital optical cable. Any solutions?
How exactly is the ATV connected if all HDMI ports are in use?
If connected directly to the TV, then audio is being sent to the TV speakers, not the receiver. -
Alright.
So I need to clear this up.
In the Edit>preferences>multithreading
We see the options:
RAM reserved for other apps:
Installed CPU's:
CPU's reserved for other apps:
and
Amount of CPU's actually used:
If I have 6 core processor and in the settings I set aside/reserve 2 CPU's for other applications.
I have a filter on top of my composition to try to make the render more CPU intensive since the rendering process will go faster if CPU is helping along with the render.
That means after Effects is using 4/6 cores. (HypterThreading is disabled) The 2 cores I set aside are to be used if I'm doing something outside of After Effects correct?
AND YET -- when you go into task manager it still says all 6 cores are being used, when I'm running nothing but After Effects?
Why is this?When you are reserving CPUs, all that you are doing is keeping After Effects from starting separate background processes on those CPUs. That does not mean that the processes that are running on other CPUs can't use threads on the reserved CPUs if they're not doing something else.
This video covers some of the basics, with the After Effects specifics starting about halfway through:
Optimizing CPUs - Lesson -
Crystal Report 2011 does not display when keyfigures are zero
I am using Crystal report 2011 with BEX Queries as Data Source. I am not able to see some of the characteristics values when keyfigures are zero or null. In BEX query there is a costCenter Characterstic, few costcenter characteristics values are zero for some months but BEX Query is designed to show as spaces even if the keyfigures are zero for those costcenters. When I am using the same Bex Query with Crystal report 2011 all the costcenters with keyfigures as zero are not showing up on the report. Can anybody suggest how I can show the characterstics values even if all the keyfigures are zero. (I have not selected any kind of suppression in section expert in crystal report), (In Bex Query CostCenter- Properties-Advanced----Access Type for Result values are set to Master Data)
Hi,
Have you made sure the correct Transport files have been loaded on the SAP system? Since you're using CR 2011, you need to make sure the Transports that come with this version of CR are present on the SAP system.
Could you see if the workaround mentioned in SAP Note: 1391673 works for you?
Here's a snippet of the SAP Note:
SAP Development team of BW BEX MDX Interface suggest the following implementation:
Since Crystal Reports is not correctly interpreting the character used to represent NULL values (by default the value: X) please use the Customizing transaction: RSCUSTV4 to change the sent value.
Please note, this is a Global setting, and will also modify the behaviour in BEx application.
WORKAROUND: Create a formula field based on the selection that always returns a number - converting null to 0.
Create a formula in BEx for the KF.
Edit the Selection
Edit the formula to behave like:
COUNT ('KF') * 'KF' + 0
('RKF' + 0) * 1
Not generally acceptable since it requires duplicating fields.
Also, business may not accept 0,00 for a NULL result.
Hope this helps!
-Abhilash -
ST06 showing all data with value Zero
Dear Friends,
In transaction code ST06 or OS06 it is not showing all data i.e. CPU utilization file system etc, it show only Physical memory data all other fields are Zero. SAPOSCOL is running.
So please help how can i retriew these fiels in ST06.
Thanks in advance.
Regards,
Sachin Jadhav
BASISReplace 0 with an empty string in a derived column transformation.
REPLACE(myColumn,"0","")
MCSE SQL Server 2012 - Please mark posts as answered where appropriate. -
SQL query to find all suites that are associated with automation
I trying to incorporate CodeUI tests into a Release Mangement deployment template ... As a developer, I want to be able to specify a sub-tree of a test plan & only execute those test suites that are associated with automation. Is there a way to
extract all automated workitems and associated them with their respective test suites?
Any assistance would be greatly appreciated!John,
I've partially resolved the issue of executing a sub-set of suites with the following powershell implementation:
1. Extract "potential" suite paths from a XML configuration file:
<?xml version="1.0"?>
<Configurations>
<Properties>
<Property key="DEFAULT" value="SuitePaths" />
<Property key="DatabaseServer" value="MYDBSERVER" />
<Property key="DatabaseInstance" value="Default" />
<Property key="DatabaseName" value="TFS_DefaultCollection" />
<Property key="ConfigurationName" value="US - Windows 7 and IE 10" />
</Properties>
<Notifications>
<Notification key="0" value="[email protected]" />
</Notifications>
<SuitePaths>
<SuitePath key="0" value="MyProject\WebProduct\Student\Features\Login" />
<SuitePath key="1" value="MyProject\WebProduct\Student\Features\Logout" />
</SuitePaths>
<AreaPaths>
<AreaPath key="0" value="MyProject\WebProduct\Student\Features\Login" />
</AreaPaths>
</Configurations>
2. Extract record set of suites from TFS via SQL query:
# FUNCTION: Retrieve-SuitePaths
# Parameters:
# (1.) LogFile -- Name of log file (e.g., C:\Temp or C:\Temp\DEPLOY_DatabaseServer_WebCMS2_DF06_20131031.6.log)
# (2.) Connection -- Database connection
# (3.) Paths -- Hash table of suite paths
Function Retrieve-SuitePaths
param
[Parameter(Mandatory=$True)][String]$LogFile,
[Parameter(Mandatory=$True)]$Connection,
[Parameter(Mandatory=$True)]$Paths
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
Write-Output "Retrieve suite(s): " | Out-File -FilePath $LogFile -Append
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
$SuitePaths = "("
$Counter = 0
foreach ($Key in $Paths.Keys)
if ($Counter -gt 0)
$SuitePaths = $SuitePaths + ", "
$SuitePaths = $SuitePaths + "'" + $Paths.Get_Item($Key) + "'"
$Counter += 1
$SuitePaths = $SuitePaths + ")"
# --DEBUG ONLY--> Write-Output "Paths: $SuitePaths" | Out-File -FilePath $LogFile -Append
$Command = New-Object System.Data.SqlClient.SqlCommand
$SQLStatement = "
WITH
cte_SuiteChildren
AS
-- Anchor definition to pull all certify modes
SELECT
S.[SuiteId],
S.[ProjectId],
PJ.ProjectName,
S.[PlanId],
P.[Name] AS PlanName,
S.[ParentSuiteId],
S.[SuitePath],
CONVERT(NVARCHAR(256), NULL) AS ParentTitle,
S.[Title],
0 AS RecurseLevel
FROM
[dbo].[tbl_Suite] AS S
INNER JOIN [dbo].[tbl_Plan] AS P ON S.PlanID = P.PlanID
INNER JOIN [dbo].[tbl_Project] AS PJ ON S.ProjectID = PJ.ProjectID
WHERE
S.ParentSuiteID = 0
UNION ALL
-- Recursive member to pull details of certify sessions
SELECT
S.[SuiteId],
S.[ProjectId],
PJ.ProjectName,
S.[PlanId],
P.[Name] AS PlanName,
S.[ParentSuiteId],
S.[SuitePath],
PS.[Title] AS ParentTitle,
S.[Title],
SC.[RecurseLevel] + 1 AS RecurseLevel
FROM
[dbo].[tbl_Suite] AS S
INNER JOIN cte_SuiteChildren AS SC on SC.SuiteID = S.ParentSuiteID
INNER JOIN [dbo].[tbl_Suite] AS PS ON SC.SuiteId = PS.SuiteId
INNER JOIN [dbo].[tbl_Plan] AS P ON S.PlanID = P.PlanID
INNER JOIN [dbo].[tbl_Project] AS PJ ON S.ProjectID = PJ.ProjectID
cte_SuiteLevel_0
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[ProjectName] + '\' + SC.[PlanName] AS Path,
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 0
cte_SuiteLevel_1
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 1
cte_SuiteLevel_2
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 2
cte_SuiteLevel_3
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 3
cte_SuiteLevel_4
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 4
cte_SuiteLevel_5
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 5
cte_SuiteLevel_6
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 6
cte_SuiteLevel_7
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 7
cte_SuiteLevel_8
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 8
cte_SuiteLevel_9
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 9
cte_SuiteLevel_10
AS
SELECT
SC.[ProjectId],
SC.[PlanId],
SC.[ParentSuiteId],
SC.[SuiteId],
SC.[ProjectName],
SC.[PlanName],
SC.[Title],
SC.[RecurseLevel]
FROM
cte_SuiteChildren AS SC
WHERE
SC.[RecurseLevel] = 10
cte_Suites
AS
SELECT
SL0.[ProjectId],
SL0.[PlanId],
CASE
WHEN SL2.ParentSuiteId IS NULL
THEN SL1.ParentSuiteId
ELSE CASE
WHEN SL3.ParentSuiteId IS NULL
THEN SL2.ParentSuiteId
ELSE CASE
WHEN SL4.ParentSuiteId IS NULL
THEN SL3.ParentSuiteId
ELSE CASE
WHEN SL5.ParentSuiteId IS NULL
THEN SL4.ParentSuiteId
ELSE CASE
WHEN SL6.ParentSuiteId IS NULL
THEN SL5.ParentSuiteId
ELSE CASE
WHEN SL7.ParentSuiteId IS NULL
THEN SL6.ParentSuiteId
ELSE CASE
WHEN SL8.ParentSuiteId IS NULL
THEN SL7.ParentSuiteId
ELSE CASE
WHEN SL9.ParentSuiteId IS NULL
THEN SL8.ParentSuiteId
ELSE CASE
WHEN SL10.ParentSuiteId IS NULL
THEN SL9.ParentSuiteId
ELSE SL10.ParentSuiteId
END
END
END
END
END
END
END
END
END AS [ParentSuiteId],
CASE
WHEN SL2.SuiteId IS NULL
THEN SL1.SuiteId
ELSE CASE
WHEN SL3.SuiteId IS NULL
THEN SL2.SuiteId
ELSE CASE
WHEN SL4.SuiteId IS NULL
THEN SL3.SuiteId
ELSE CASE
WHEN SL5.SuiteId IS NULL
THEN SL4.SuiteId
ELSE CASE
WHEN SL6.SuiteId IS NULL
THEN SL5.SuiteId
ELSE CASE
WHEN SL7.SuiteId IS NULL
THEN SL6.SuiteId
ELSE CASE
WHEN SL8.SuiteId IS NULL
THEN SL7.SuiteId
ELSE CASE
WHEN SL9.SuiteId IS NULL
THEN SL8.SuiteId
ELSE CASE
WHEN SL10.SuiteId IS NULL
THEN SL9.SuiteId
ELSE SL10.SuiteId
END
END
END
END
END
END
END
END
END AS [SuiteId],
SL0.ProjectName,
SL0.PlanName,
--SL0.Path,
--SL1.[Title],
CASE
WHEN SL2.Title IS NULL
THEN SL0.Path + '\' + SL1.Title
ELSE CASE
WHEN SL3.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title
ELSE CASE
WHEN SL4.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title
ELSE CASE
WHEN SL5.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title + '\' + SL4.Title
ELSE CASE
WHEN SL6.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title + '\' + SL4.Title + '\' + SL5.Title
ELSE CASE
WHEN SL7.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title + '\' + SL4.Title + '\' + SL5.Title + '\' + SL6.Title
ELSE CASE
WHEN SL8.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title + '\' + SL4.Title + '\' + SL5.Title + '\' + SL6.Title + '\' + SL7.Title
ELSE CASE
WHEN SL9.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title + '\' + SL4.Title + '\' + SL5.Title + '\' + SL6.Title + '\' + SL7.Title + '\' + SL8.Title
ELSE CASE
WHEN SL10.Title IS NULL
THEN SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title + '\' + SL4.Title + '\' + SL5.Title + '\' + SL6.Title + '\' + SL7.Title + '\' + SL8.Title + '\' + SL9.Title
ELSE SL0.Path + '\' + SL1.Title + '\' + SL2.Title + '\' + SL3.Title + '\' + SL4.Title + '\' + SL5.Title + '\' + SL6.Title + '\' + SL7.Title + '\' + SL8.Title + '\' + SL9.Title + '\' + SL10.Title
END
END
END
END
END
END
END
END
END AS Path,
CASE
WHEN SL2.RecurseLevel IS NULL
THEN SL1.RecurseLevel
ELSE CASE
WHEN SL3.RecurseLevel IS NULL
THEN SL2.RecurseLevel
ELSE CASE
WHEN SL4.RecurseLevel IS NULL
THEN SL3.RecurseLevel
ELSE CASE
WHEN SL5.RecurseLevel IS NULL
THEN SL4.RecurseLevel
ELSE CASE
WHEN SL6.RecurseLevel IS NULL
THEN SL5.RecurseLevel
ELSE CASE
WHEN SL7.RecurseLevel IS NULL
THEN SL6.RecurseLevel
ELSE CASE
WHEN SL8.RecurseLevel IS NULL
THEN SL7.RecurseLevel
ELSE CASE
WHEN SL9.RecurseLevel IS NULL
THEN SL8.RecurseLevel
ELSE CASE
WHEN SL10.RecurseLevel IS NULL
THEN SL9.RecurseLevel
ELSE SL10.RecurseLevel
END
END
END
END
END
END
END
END
END AS RecurseLevel
FROM
cte_SuiteLevel_0 AS SL0
LEFT OUTER JOIN cte_SuiteLevel_1 AS SL1 ON SL1.ParentSuiteId = SL0.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_2 AS SL2 ON SL2.ParentSuiteId = SL1.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_3 AS SL3 ON SL3.ParentSuiteId = SL2.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_4 AS SL4 ON SL4.ParentSuiteId = SL3.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_5 AS SL5 ON SL5.ParentSuiteId = SL4.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_6 AS SL6 ON SL6.ParentSuiteId = SL5.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_7 AS SL7 ON SL7.ParentSuiteId = SL6.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_8 AS SL8 ON SL8.ParentSuiteId = SL7.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_9 AS SL9 ON SL9.ParentSuiteId = SL8.SuiteId
LEFT OUTER JOIN cte_SuiteLevel_10 AS SL10 ON SL10.ParentSuiteId = SL9.SuiteId
SELECT
SS.[ProjectId],
SS.[PlanId],
SS.[ParentSuiteId],
SS.[SuiteId],
SS.[ProjectName],
SS.[PlanName],
SS.[Path],
SS.[RecurseLevel]
FROM
SELECT DISTINCT
S.[ProjectId],
S.[PlanId],
S.[ParentSuiteId],
S.[SuiteId],
S.[ProjectName],
S.[PlanName],
S.[Path],
S.[RecurseLevel]
FROM
cte_Suites AS S
WHERE
S.[RecurseLevel] IS NOT NULL
AND S.[Path] IN $($SuitePaths)
) AS SS
ORDER BY
SS.[Path]
$Command.CommandText = $SQLStatement
$Command.Connection = $Connection
$Command.CommandTimeout = 240
$DataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$DataAdapter.SelectCommand = $Command
$DataSet = New-Object System.Data.DataSet
$DataAdapter.Fill($DataSet) | Out-Null
Write-Output "$SQLStatement" | Out-File -FilePath $LogFile -Append
# --DEBUG ONLY--> $DataSet.Tables[0]
return $DataSet
3. Execute every suite in the record set via TCM
$DataSet = ( Retrieve-SuitePaths -LogFile:$LogFile -Connection:$Connection -Path:$Paths)
# --DEBUG ONLY--> $DataSet.Tables[0].Rows.Count
# --DEBUG ONLY--> $DataSet.Tables[0]
# Determine whether or not any test suites were retrieved from TFS....
if ( $DataSet.Tables[0].Rows.Count -gt 0 )
$ListTestRunID = $null
$SumFailed = 0
$SumInconclusive = 0
foreach ($Row in $DataSet.Tables[0].Rows)
# Set project, plan & suite variables....
[Int16]$ProjectID = $Row.Item('ProjectId')
[Int16]$PlanID = $Row.Item('PlanId')
[Int16]$ParentSuiteID = $Row.Item('ParentSuiteId')
[Int16]$SuiteID = $Row.Item('SuiteId')
$ProjectName = $Row.Item('ProjectName')
$PlanName = $Row.Item('PlanName')
$Path = $Row.Item('Path')
$RecurseLevel = $Row.Item('RecurseLevel')
# Set local build path variable....
switch -wildcard ($Path)
"*WebCMS*\Administration\*"
$CUITBuildPath = $CUITPathUNC + '\WebCMS\Administration'
"*WebCMS*\Instructor\*"
$CUITBuildPath = $CUITPathUNC + '\WebCMS\Instructor'
"*WebCMS*\Student\*"
$CUITBuildPath = $CUITPathUNC + '\WebCMS\Student'
"*WebProduct*\Instructor\*"
$CUITBuildPath = $CUITPathUNC + '\WebProduct\Instructor'
"*WebProduct*\Student\*"
$CUITBuildPath = $CUITPathUNC + '\WebProduct\Student'
default
$CUITBuildPath = $CUITPathUNC
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
Write-Output 'Test Suite:' | Out-File -FilePath $LogFile -Append
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
Write-Output " ID:" | Out-File -FilePath $LogFile -Append
Write-Output " Project: $ProjectID" | Out-File -FilePath $LogFile -Append
Write-Output " Plan: $PlanID" | Out-File -FilePath $LogFile -Append
Write-Output " Parent Suite: $ParentSuiteID" | Out-File -FilePath $LogFile -Append
Write-Output " Suite: $SuiteID" | Out-File -FilePath $LogFile -Append
Write-Output " Config: $ConfigurationID" | Out-File -FilePath $LogFile -Append
Write-Output " Name:" | Out-File -FilePath $LogFile -Append
Write-Output " Project: $ProjectName" | Out-File -FilePath $LogFile -Append
Write-Output " Plan: $PlanName" | Out-File -FilePath $LogFile -Append
Write-Output " Config: $ConfigurationName" | Out-File -FilePath $LogFile -Append
Write-Output " Path:" | Out-File -FilePath $LogFile -Append
Write-Output " Suite: $Path" | Out-File -FilePath $LogFile -Append
Write-Output " Build: $CUITBuildPath" | Out-File -FilePath $LogFile -Append
# --DEBUG ONLY--> Write-Output " Recursion: $RecurseLevel" | Out-File -FilePath $LogFile -Append
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
# Set TCM arguements....
$ArguementPlanID = "/planid:$PlanID"
$ArguementTitle = "/title:$Title - $Path (SuiteID: $SuiteID)"
$ArguementSuiteID = "/suiteid:$SuiteID"
$ArguementConfigurationID = "/configid:$ConfigurationID"
$ArguementTFSCollection = "/collection:$TFSCollection"
$ArguementTeamProject = "/teamproject:$TFSTeamProject"
if(![string]::IsNullOrEmpty($CUITBuildPath))
$ArguementBuildDirectory = "/builddir:$CUITBuildPath"
$ArguementBuild = ""
$ArguementBuildDefinition = ""
else
$ArguementBuildDirectory = ""
$ArguementBuild = "/build:$TFSBuild"
$ArguementBuildDefinition = "/builddefinition:$BuildDefinition"
$ArguementTestEnvironment = "/testenvironment:$WebServer"
$ArguementSettingsName = ""
if(![string]::IsNullOrEmpty($SettingsName))
$ArguementSettingsName = "/settingsname:$SettingsName"
# Create test run....
Write-Host "$TCMEXE 'run' '/create' $ArguementTitle $ArguementPlanID $ArguementSuiteID $ArguementConfigurationID $ArguementTFSCollection $ArguementTeamProject $ArguementBuild $ArguementBuildDefinition $ArguementBuildDirectory $ArguementTestEnvironment $ArguementSettingsName"
Write-Output " $TCMEXE 'run' '/create' $ArguementTitle $ArguementPlanID $ArguementSuiteID $ArguementConfigurationID $ArguementTFSCollection $ArguementTeamProject $ArguementBuild $ArguementBuildDefinition $ArguementBuildDirectory $ArguementTestEnvironment $ArguementSettingsName" | Out-File -FilePath $LogFile -Append
try
$TestRunID = & $TCMEXE 'run' '/create' $ArguementTitle $ArguementPlanID $ArguementSuiteID $ArguementConfigurationID $ArguementTeamProject $ArguementTFSCollection $ArguementBuild $ArguementBuildDefinition $ArguementBuildDirectory $ArguementTestEnvironment $ArguementSettingsName
catch
$ExitMessage = $_Exception.Message
# --DEBUG ONLY--> Write-Output "TestRunID: $TestRunID" | Out-File -FilePath $LogFile -Append
if ($TestRunID -match '.+\:\s(?<TestRunID>\d+)\.')
# The test run ID is identified as a property in the match collection so we can access it directly by using the group name from the regular expression (i.e. TestRunID).
$TestRunID = $matches.TestRunID
$ArguementID = "/id:$TestRunID"
$TestRunResultsFile = $TempDirectory + "\TestRunResults$TestRunID.trx"
$ArguementQueryText = "/querytext:SELECT * FROM TestRun WHERE TestRunID=$TestRunID"
$ArguementResultsFile = "/resultsfile:""$TestRunResultsFile"""
Write-Host " Waiting for test run to complete ..."
Write-Host $TCMEXE 'run' '/list' $ArguementTeamProject $ArguementTFSCollection $ArguementQueryText
Write-Output " $TCMEXE 'run' '/list' $ArguementTeamProject $ArguementTFSCollection $ArguementQueryText" | Out-File -FilePath $LogFile -Append
$WaitingForTestRunCompletion = $true
$WaitCount= 0
while ($WaitingForTestRunCompletion)
$WaitCount = $WaitCount + 1
Write-Output " Waiting ($WaitCount)...." | Out-File -FilePath $LogFile -Append
Start-Sleep -s $TestRunWaitDelay
$TestRunStatus = & $TCMEXE 'run' '/list' $ArguementTeamProject $ArguementTFSCollection $ArguementQueryText
$TestRunStatus
if ($TestRunStatus.Count -lt 3 -or ($TestRunStatus.Count -gt 2 -and $TestRunStatus.GetValue(2) -match '.+(?<DateCompleted>\d+[/]\d+[/]\d+)'))
$WaitingForTestRunCompletion = $false
Write-Host "Evaluating test run $TestRunID results..."
# Take small pause(s) since the results might not be published yet....
Start-Sleep -s $TestRunWaitDelay
# Export results....
Write-Host $TCMEXE 'run' '/export' $ArguementID $ArguementTeamProject $ArguementTFSCollection $ArguementResultsFile
Write-Output " $TCMEXE 'run' '/export' $ArguementID $ArguementTeamProject $ArguementTFSCollection $ArguementResultsFile" | Out-File -FilePath $LogFile -Append
$WaitingForTestRunExport = $true
$WaitCount= 0
while ($WaitingForTestRunExport -and $WaitCount -lt 5)
$WaitCount = $WaitCount + 1
Write-Output " Waiting ($WaitCount)...." | Out-File -FilePath $LogFile -Append
$ExportResult = & $TCMEXE 'run' '/export' $ArguementID $ArguementResultsFile $ArguementTFSCollection $ArguementTeamProject
if ([System.IO.File]::Exists($TestRunResultsFile))
$WaitingForTestRunExport = $false
if ([System.IO.File]::Exists($TestRunResultsFile))
# Load the XML document contents.
[xml]$TestResultsXML = Get-Content "$TestRunResultsFile"
# Extract the results of the test run.
$TotalTests = $TestResultsXML.TestRun.ResultSummary.Counters.total
$PassedTests = $TestResultsXML.TestRun.ResultSummary.Counters.passed
$FailedTests = $TestResultsXML.TestRun.ResultSummary.Counters.failed
$InconclusiveTests = $TestResultsXML.TestRun.ResultSummary.Counters.inconclusive
# Output the results of the test run.
Write-Host "========== Test: $TotalTests tests ran, $PassedTests succeeded, $FailedTests failed, $InconclusiveTests inconclusive =========="
Write-Output "--------------------------------------------------------------------------------" | Out-File -FilePath $LogFile -Append
Write-Output "Summary:" | Out-File -FilePath $LogFile -Append
Write-Output "--------------------------------------------------------------------------------" | Out-File -FilePath $LogFile -Append
Write-Output " Total: $TotalTests" | Out-File -FilePath $LogFile -Append
Write-Output " Passed: $PassedTests" | Out-File -FilePath $LogFile -Append
Write-Output " Failed: $FailedTests" | Out-File -FilePath $LogFile -Append
Write-Output " Inconclusive: $InconclusiveTests" | Out-File -FilePath $LogFile -Append
$SumFailed += $FailedTests
$SumInconclusive += $InconclusiveTests
# Remove the test run results file.
[System.IO.File]::Delete($TestRunResultsFile) | Out-Null
# Add "current" TestRunID to the list of TestRunID(s)....
if ($ListTestRunID -ne $null)
$ListTestRunID = $ListTestRunID + ', '
$ListTestRunID = $ListTestRunID + $TestRunID
# Next test suite....
4. Extract record set of test runs from TFS via SQL query:
# FUNCTION: Retrieve-TestRuns
# Parameters:
# (1.) LogFile -- Name of log file (e.g., C:\Temp or C:\Temp\DEPLOY_DatabaseServer_WebCMS2_DF06_20131031.6.log)
# (2.) Connection -- Database connection
# (3.) ListTestRunID -- List of test run identifiers
Function Retrieve-TestRuns
param
[Parameter(Mandatory=$True)][String]$LogFile,
[Parameter(Mandatory=$True)]$Connection,
[Parameter(Mandatory=$True)][String]$ListTestRunID
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
Write-Output "Retrieve test run(s): " | Out-File -FilePath $LogFile -Append
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
$TestRuns = '(' + $ListTestRunID + ')'
$Command = New-Object System.Data.SqlClient.SqlCommand
$SQLStatement = "
WITH
cte_State
AS
SELECT 0 AS [StateID], 'Unspecified' AS [StateName]
UNION ALL
SELECT 1 AS [OutcomeId], 'To Be Determined (1)' AS [StateName]
UNION ALL
SELECT 2 AS [StateID], 'In Progress' AS [StateName]
UNION ALL
SELECT 3 AS [StateID], 'Completed' AS [StateName]
UNION ALL
SELECT 4 AS [StateID], 'Aborted' AS [StateName]
UNION ALL
SELECT 5 AS [OutcomeId], 'To Be Determined (5)' AS [StateName]
UNION ALL
SELECT 6 AS [StateID], 'Needs Investigation' AS [StateName]
SELECT
TR.[ProjectId] AS [Project Id],
P.[ProjectName],
TR.[TestPlanId] AS [Plan Id],
TP.Name AS [TestPlanName],
TR.[TestRunId] AS [Run Id],
TR.[Title],
S.[StateID] AS [State Id],
S.[StateName] AS [State],
TR.[StartDate] AS [Date Started],
TR.[CompleteDate] AS [Date Completed],
DATEDIFF(SECOND, TR.[StartDate], TR.[CompleteDate]) AS Duration,
TR.[Type],
TR.[IsAutomated],
TR.[TotalTests] AS [Total],
TR.[PassedTests] AS [Passed],
TR.[IncompleteTests] AS [Incomplete],
TR.[UnanalyzedTests] AS [Unanalyzed],
TR.[NotApplicableTests] AS [Not Applicable]
FROM
[Tfs_DefaultCollection].[dbo].[tbl_TestRun] AS TR
INNER JOIN [Tfs_DefaultCollection].[dbo].[tbl_Project] AS P ON TR.ProjectId = P.ProjectId
INNER JOIN [Tfs_DefaultCollection].[dbo].[tbl_Plan] AS TP ON TR.TestPlanId = TP.PlanId
INNER JOIN cte_State AS S ON TR.[State] = S.[StateID]
WHERE
TR.TestRunId IN $($TestRuns)
ORDER BY
TR.[StartDate]
$Command.CommandText = $SQLStatement
$Command.Connection = $Connection
$Command.CommandTimeout = 30
$DataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$DataAdapter.SelectCommand = $Command
$DataSet = New-Object System.Data.DataSet
$DataAdapter.Fill($DataSet) | Out-Null
Write-Output "$SQLStatement" | Out-File -FilePath $LogFile -Append
# --DEBUG ONLY--> $DataSet.Tables[0]
return $DataSet
5. Extract record set of test results from TFS via SQL query:
# FUNCTION: Retrieve-TestRunResults
# Parameters:
# (1.) LogFile -- Name of log file (e.g., C:\Temp or C:\Temp\DEPLOY_DatabaseServer_WebCMS2_DF06_20131031.6.log)
# (2.) Connection -- Database connection
# (3.) ListTestRunID -- List of test run identifiers
Function Retrieve-TestRunResults
param
[Parameter(Mandatory=$True)][String]$LogFile,
[Parameter(Mandatory=$True)]$Connection,
[Parameter(Mandatory=$True)][String]$ListTestRunID
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
Write-Output "Retrieve test result(s): " | Out-File -FilePath $LogFile -Append
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
$TestRuns = '(' + $ListTestRunID + ')'
$Command = New-Object System.Data.SqlClient.SqlCommand
$SQLStatement = "
WITH
cte_Outcome
AS
SELECT 0 AS [OutcomeId], 'To Be Determined (0)' AS [OutcomeName]
UNION ALL
SELECT 1 AS [OutcomeId], 'In Progress' AS [OutcomeName]
UNION ALL
SELECT 2 AS [OutcomeId], 'Passed' AS [OutcomeName]
UNION ALL
SELECT 3 AS [OutcomeId], 'Failed' AS [OutcomeName]
UNION ALL
SELECT 4 AS [OutcomeId], 'Inconclusive' AS [OutcomeName]
UNION ALL
SELECT 5 AS [OutcomeId], 'To Be Determined (5)' AS [OutcomeName]
UNION ALL
SELECT 6 AS [OutcomeId], 'Aborted' AS [OutcomeName]
UNION ALL
SELECT 7 AS [OutcomeId], 'Blocked' AS [OutcomeName]
UNION ALL
SELECT 8 AS [OutcomeId], 'Not Executed' AS [OutcomeName]
UNION ALL
SELECT 10 AS [OutcomeId], 'Error' AS [OutcomeName]
UNION ALL
SELECT 11 AS [OutcomeId], 'Not Applicable' AS [OutcomeName]
UNION ALL
SELECT 12 AS [OutcomeId], 'Paused' AS [OutcomeName]
UNION ALL
SELECT 13 AS [OutcomeId], 'To Be Determined (13)' AS [OutcomeName]
UNION ALL
SELECT 255 AS [OutcomeId], 'Never Run' AS [OutcomeName]
cte_State
AS
SELECT 0 AS [StateID], 'None' AS [StateName]
UNION ALL
SELECT 1 AS [StateID], 'Ready' AS [StateName]
UNION ALL
SELECT 2 AS [StateID], 'Completed' AS [StateName]
UNION ALL
SELECT 3 AS [StateID], 'Not Ready' AS [StateName]
UNION ALL
SELECT 4 AS [StateID], 'In Progress' AS [StateName]
UNION ALL
SELECT 5 AS [StateID], 'To Be Determined' AS [StateName]
SELECT DISTINCT
TR.[TestRunId] AS [Run Id],
TR.[TestCaseId] AS [Case Id],
O.[OutcomeID] AS [Outcome Id],
O.[OutcomeName] AS [Outcome],
S.[StateID] AS [State Id],
S.[StateName] AS [State],
TR.[TestCaseTitle] AS [Title],
TR.[AutomatedTestName] AS [Automation Method],
TR.[DateStarted] AS [Date Started],
TR.[DateCompleted] AS [Date Completed],
DATEDIFF(SECOND, TR.[DateStarted], TR.[DateCompleted]) AS Duration,
TR.[FailureType] AS [Failure Type],
TR.[ErrorMessage] AS [Error]
FROM
[Tfs_DefaultCollection].[dbo].[tbl_TestResult] AS TR
INNER JOIN cte_Outcome AS O ON TR.Outcome = O.OutcomeID
INNER JOIN cte_State AS S ON TR.State = S.StateID
WHERE
TR.TestRunId IN $($TestRuns)
ORDER BY
TR.[TestRunId],
O.[OutcomeName],
TR.[TestCaseTitle]
$Command.CommandText = $SQLStatement
$Command.Connection = $Connection
$Command.CommandTimeout = 30
$DataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$DataAdapter.SelectCommand = $Command
$DataSet = New-Object System.Data.DataSet
$DataAdapter.Fill($DataSet) | Out-Null
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
Write-Output "SQL Statement: " | Out-File -FilePath $LogFile -Append
Write-Output '--------------------------------------------------------------------------------' | Out-File -FilePath $LogFile -Append
Write-Output "$SQLStatement" | Out-File -FilePath $LogFile -Append
# --DEBUG ONLY--> $DataSet.Tables[0]
return $DataSet
6. Email results to distribution list
Currently, I'm simplifying the extraction of suite path ... replacing hardcoded depth with STUFF() & XML PATH
Carl. -
Dear all,
Can anyone help me with how to paper about CRM Master Data Extraction? I need to know on how to extract Business Partner and its attributes (Relationship, Address and others), also on how to extract CRM Marketing Attributes for Business Partner.
Thanks for your help.
RickyHello Ricky,
I haven't found any conclusive document about loading Business Partner from CRM 4.0 to BW 3.5. If there is someone out there who knows about that documentation I would really appreciate it.
Here is what we did regarding BP relations, marketing attributes and addresses:
1. Marketing attributes:
These data type is difficult, because you have to build a special extractor for each marketing attribute group. And because Marketing attributes cannot be transported, you cannot transport the extractor. This poses a big problem in many projects. Therefore we solved it by creating some view extractors on the appropriate CRM tables: AUSP, CABN, KSML, KLAH. I can give you some more details, if this will help.
2. BP relations:
We build a view extractor for this too, because it was much easier to extract the data from BUT050 and BUT051 than trying to find out, how the business content extractors do their work. Using this extractor, we build some special ODS and InfoCubes for the relations we were interested in.
There is Business content for BP relations, but we kept to the generic extractors, because they were easier to verify.
3. BP adresses:
We use 0CRM_BPDEFADDR_ATTR to get the primary address.
We use 0CRM_BPART_ATTR to get BP master data
We use 0CRM_BPART_TEXT to get BP text.
We have only about 300.000 BP in CRM, so we do a full update everyday.
I am not sure, if these three data sources are part of the current BW 3.5 business content, because we started with BW 3.0 and did not check for BC updates.
Kind regards,
Jürgen
Message was edited by: Jürgen Kirsch
Maybe you are looking for
-
I think I clicked on something on when in the itunes store. Now I can't connect my iphone to the itunes store to update 38 apps. When I plug it in to my Mac, the section that says "connect to itunes store" is grayed out and I can't change it. What ca
-
I had about 100 folders w/bookmarks last week and by mistake I imported about 500 other folders dated over several months ago. I discovered I don't need those 500 folders. How do I get ride of all of them without doing it individually? I want to avoi
-
Multiple selection needed in Java webDynpro
In Java webDynpro, i need multiple selection to be performed in a combo or listbox. For that, what is the control that i have to add n what are the properties that i have to change. It is urgent. Pl help me in this.
-
Hi, I wanted to know in which tables is the information regarding the first and last approver of a PO stored. regards, Aditya
-
I have the trial version of Premiere Pro and I have been using it for about a week with no problems but today I was working and it gave me an error message that said that it had to shut down. After it shut down I reopened it and it told me to resave