Cube Values....??
Hi All,
My cube is having 2 datasources,loading from 2 diff infopacks.
DS1- Emp.sal.data
Ds2- Emp.Work Data
It shows in cube:
<b>ENO SAL A/CNO Attendence WorkOffice City</b>
E011 45k 300006 30days
E011 Wrkarea01 Newyork
I want to see it in a single record.
In BEx But it shows Not assigned # for A/c no of 2nd record for E011
What is the reason?
How to resolve it? Is the cube compress does solve my prob?
Cheers,
Sri
Sri,
SAP recommens compressing those requests in the InfoCube that are not likely to be deleted as soon as possible. Also compress aggregates as soon as possible. The InfoCube content is likely to be reduced in size, so DB-time for queries should improve.Compression only aids in query performance. <u><b>It adds another step to the overall data load process and takes up resources.</b></u>
Compression prevents the F-table (which is partitioned by request ID) from containing too many partitions. The DB-internal administration of some thousands (as a rule of thumb) partitions <b>decreases the overall performance for an InfoCube</b>.
Individual requests cannot be accessed and deleted any more after compressing.
Solution:
I recommand ODS, better load the data into ODS first then from ODS to Cube which will solve your problem.
Let me know for further clarifications.
Thanks
Ramu
Similar Messages
-
Cube values not getting populated in the report
Hi,
I have done the selective deletion of Purchase orders and done the repair load, the set of records are there in the cube but unable to see in the report.. the records in the cube satisfies the selection criteria also.
expecting the early response,
Points will be rewarded for the any information and solution also if any body face the same problem pls share the information.
regards,
vishali.Hi,
i have already activated the cube and that repair full request is available for reporting that icon has come in the cube and if it is reg. aggregates there are not aggregates present so .... what might be the problem pls let me know....
regards,
vishali. -
MDX Testeditor - How to bring in the Catalog and Cube values??
Hello Experts,
Is there a way to create new 'Catalog' and new 'Cube' where in I can add the Multiprovider name in the Catalog section and 5 queries in the multiprovider under Cube section.
I have a problem bringing in the new queries under the Cube list and therefore not able to create any MDX statements.
Please let me know.
NikkiHello Prakash,
I did release it for OLEDB OLAP but still when I select that particular query from the Multiprovider it doesn't show up in the system, it still says 'no query_cube selected'.
Let me know what I am missing,
Called you twice, will call you tomm.
Thanks,
Sree -
Getting Double values in Purchasing cube
hi experts,
I m getting double values for 0po_items and ocontr_item in purchasing data cube 0pur_c01.
i have also applied the test rule in routine ,that values are fine.
but in cube values are getting double.
please help..........Hi,
It seems like you are loading data into cube using 2 DataSource and there is no (consolidated) dso in between.
If the KF say (qty) you are mapping from both the datasource to the cube, it is going to be doubled in report as 2 records will be found in cube.
I suggest try to load a single valid record (PO and lien item) one by one into the cube and do check the values in cube for each process. You will get good idea how cube behave while loading data from diff. sources.
Also try to bring in the one dso where you consolidate the data as per report requirement and then move that data into Cube, will give you required output.
Thank-You.
Vinod -
Is there a way to change the LUt extension form .CUBE to .cube. on export with this script in photoshop For MAC:
Chris Cox wrote:
The file extensions are written by the export plugin. (which incidentally has a comment that two studios wanted all caps extensions, but I failed to write down which ones in the comments)
To change the filenames, you'd want to add something at the end of doExportLUTs() that uses the supplied path and substitutes the desired extensions, then renames the file.
Thank you
// Export Color Lookup Tables automation in JavaScript
// IN_PROGRESS - why can't ColorSync Utility open any profile with a grid of 160 or larger?
// 150 works, 160 fails -- sent samples in email to Apple on Nov 8, 2013; they are investigating
// DEFERRED - right to left filenames (Arabic) come out wrong because of appending "RGB" and file extensions
// This seems to be a bug in JavaScript's handing of strings, not sure we can solve it easily.
// It might possibly be handled by checking bidi markers in UTF8 stream and adding custom handling for appending text/extensions.
@@@BUILDINFO@@@ ExportColorLookupTables.jsx 1.0.0.0
// BEGIN__HARVEST_EXCEPTION_ZSTRING
<javascriptresource>
<name>$$$/JavaScripts/ExportColorLookupTables/Menu=Color Lookup Tables...</name>
<menu>export</menu>
<enableinfo>true</enableinfo>
<eventid>9AA9D7D6-C209-494A-CC01-4E7D926DA642</eventid>
</javascriptresource>
// END__HARVEST_EXCEPTION_ZSTRING
#target photoshop
const appUIState = app.displayDialogs;
app.displayDialogs = DialogModes.NO; // suppress all app dialogs
app.bringToFront(); // make Photoshop the frontmost app, just in case
// on localized builds we pull the $$$/Strings from a .dat file
$.localize = true;
// from Terminology.jsx
const classApplication = app.charIDToTypeID('capp');
const classProperty = app.charIDToTypeID('Prpr');
const enumTarget = app.charIDToTypeID('Trgt');
const eventGet = app.charIDToTypeID('getd');
const eventSet = app.charIDToTypeID('setd');
const kcolorSettingsStr = app.stringIDToTypeID("colorSettings");
const kDither = app.charIDToTypeID('Dthr');
const keyTo = app.charIDToTypeID('T ');
const typeNULL = app.charIDToTypeID('null');
const typeOrdinal = app.charIDToTypeID('Ordn');
const kFloatWindowStr = app.stringIDToTypeID("floatWindow");
const typePurgeItem = app.charIDToTypeID('PrgI');
const enumClipboard = app.charIDToTypeID('Clpb');
const eventPurge = app.charIDToTypeID('Prge');
const keyExportLUT = app.charIDToTypeID( "lut " );
const keyFilePath = app.charIDToTypeID( 'fpth' );
const keyDescription = app.charIDToTypeID( 'dscr' );
const keyCopyright = app.charIDToTypeID( 'Cpyr' );
const keyDataPoints = app.charIDToTypeID( 'gPts' );
const keyWriteICC = app.charIDToTypeID( 'wICC' );
const keyWrite3DL = app.charIDToTypeID( 'w3DL' );
const keyWriteCUBE = app.charIDToTypeID( 'wCUB' );
const keyWriteCSP = app.charIDToTypeID( 'wCSP' );
const kScriptOptionsKey = "9AA9D7D6-C209-494A-CC01-4E7D926DA642"; // same as eventID above
const sGridMin = 7; // these must match the slider range defined in the dialog layout
const sGridMax = 256;
const sGridDefault = 32;
// our baseline UI configuration info
var gSaveFilePath = ""; // overwritten by document path
var gDescription = ""; // overwritten by document name
var gCopyright = ""; // "Adobe Systems Inc., All Rights Reserved";
var gGridPoints = sGridDefault;
var gDoSaveICCProfile = true;
var gDoSave3DL = true;
var gDoSaveCUBE = true;
var gDoSaveCSP = true;
gScriptResult = undefined;
// start doing the work...
main();
app.displayDialogs = appUIState; // restore original dialog state
gScriptResult; // must be the last thing - this is returned as the result of the script
function readOptionsFromDescriptor( d )
if (!d)
return;
if (d.hasKey(keyFilePath))
gSaveFilePath = d.getString( keyFilePath ); // will be overridden by UI
if (d.hasKey(keyDescription))
gDescription = d.getString( keyDescription ); // will be overridden always
if (d.hasKey(keyCopyright))
gCopyright = d.getString( keyCopyright );
if (d.hasKey(keyDataPoints))
var temp = d.getInteger( keyDataPoints );
if (temp >= sGridMin && temp <= sGridMax)
gGridPoints = temp;
if (d.hasKey(keyWriteICC))
gDoSaveICCProfile = d.getBoolean( keyWriteICC );
if (d.hasKey(keyWrite3DL))
gDoSave3DL = d.getBoolean( keyWrite3DL );
if (d.hasKey(keyWriteCUBE))
gDoSaveCUBE = d.getBoolean( keyWriteCUBE );
if (d.hasKey(keyWriteCSP))
gDoSaveCSP = d.getBoolean( keyWriteCSP );
function createDescriptorFromOptions()
var desc = new ActionDescriptor();
desc.putString( keyFilePath, gSaveFilePath ); // will be overridden by UI
desc.putString( keyDescription, gDescription ); // will always be overridden by document name
desc.putString( keyCopyright, gCopyright );
desc.putInteger( keyDataPoints, gGridPoints );
desc.putBoolean( keyWriteICC, gDoSaveICCProfile );
desc.putBoolean( keyWrite3DL, gDoSave3DL );
desc.putBoolean( keyWriteCUBE, gDoSaveCUBE );
desc.putBoolean( keyWriteCSP, gDoSaveCSP );
return desc;
function doExportUI()
// DEFERRED - it might be nice to be able to run without UI
// Right now we can't, but someone could modify the script if they so desire
const sDescription = localize("$$$/AdobeScript/Export3DLUT/Description=Description:");
const sCopyright = localize("$$$/AdobeScript/Export3DLUT/Copyright=Copyright:");
const sQuality = localize("$$$/AdobeScript/Export3DLUT/Quality=Quality");
const sGridPoints = localize("$$$/AdobeScript/Export3DLUT/GridPoints=Grid Points:");
const sFormatsToSave = localize("$$$/AdobeScript/Export3DLUT/Formats=Formats");
const sOpenButton = localize("$$$/JavaScripts/psx/OK=OK");
const sCancelButton = localize("$$$/JavaScripts/psx/Cancel=Cancel");
const strTextInvalidType = localize("$$$/JavaScripts/Export3DLUT/InvalidType=Invalid numeric value. Default value inserted.");
const strTextInvalidNum = localize("$$$/JavaScripts/Export3DLUT/InvalidNum=A number between 7 and 256 is required. Closest value inserted.");
const strNoExportsSelected = localize("$$$/JavaScripts/Export3DLUT/NoExportTypesSelected=No export types were selected.");
const strExportPrompt = localize("$$$/JavaScripts/Export3DLUT/ExportColorLookup=Export Color Lookup");
const strUntitledLUT = localize("$$$/JavaScripts/Export3DLUT/UntitledLUTFilename=untitled.lut");
const sSaveICC = localize("$$$/AdobeScript/Export3DLUT/ICCProfile=ICC Profile");
// these are not localized, since they refer to file format extensions
const sSave3DL = "3DL";
const sSaveCUBE = "CUBE";
const sSaveCSP = "CSP";
// strings similar to JPEG quality
const sPoor = localize("$$$/AdobeScript/Export3DLUT/Poor=Poor");
const sLow = localize("$$$/AdobeScript/Export3DLUT/Low=Low");
const sMedium = localize("$$$/AdobeScript/Export3DLUT/Medium=Medium");
const sHigh = localize("$$$/AdobeScript/Export3DLUT/High=High");
const sMaximum = localize("$$$/AdobeScript/Export3DLUT/Maximum=Maximum");
const ui = // dialog resource object
"dialog { \
orientation: 'row', \
gp: Group { \
orientation: 'column', alignment: 'fill', alignChildren: 'fill', \
description: Group { \
orientation: 'row', alignment: 'fill', alignChildren: 'fill', \
st: StaticText { text:'Description:' }, \
et: EditText { characters: 30, properties:{multiline:false}, text:'<your description here>' } \
copyright: Group { \
orientation: 'row', alignment: 'fill', alignChildren: 'fill', \
st: StaticText { text:'Copyright:' }, \
et: EditText { characters: 30, properties:{multiline:false}, text:'<your copyright here>' } \
qual: Panel { \
text: 'Quality', \
orientation: 'column', alignment: 'fill', alignChildren: 'fill', \
g2: Group { \
st: StaticText { text:'Grid Points:' }, \
et: EditText { characters:4, justify:'right' } \
drp: DropDownList {alignment:'right'} \
sl: Slider { minvalue:7, maxvalue:256, value: 32 }, \
options: Panel { \
text: 'Formats', \
orientation: 'column', alignment: 'fill', alignChildren: 'left', \
ck3DL: Checkbox { text:'3DL', value:true }, \
ckCUBE: Checkbox { text:'CUBE', value:true } \
ckCSP: Checkbox { text:'CSP', value:true } \
ckICC: Checkbox { text:'ICC Profile', value:true } \
gButtons: Group { \
orientation: 'column', alignment: 'top', alignChildren: 'fill', \
okBtn: Button { text:'Ok', properties:{name:'ok'} }, \
cancelBtn: Button { text:'Cancel', properties:{name:'cancel'} } \
const titleStr = localize("$$$/AdobeScript/Export3DLUT/DialogTitle/ExportColorLookupTables=Export Color Lookup Tables");
var win = new Window (ui, titleStr ); // new window object with UI resource
// THEORETICALLY match our dialog background color to the host application
win.graphics.backgroundColor = win.graphics.newBrush (win.graphics.BrushType.THEME_COLOR, "appDialogBackground");
// poor, low, medium, high, max
var MenuQualityToGridPoints = [ 8, 16, 32, 64, 256 ];
function GridPointsToQualityMenuIndex( num )
var menu = MenuQualityToGridPoints;
var menuItems = menu.length;
if (num <= menu[0])
return 0;
if (num >= menu[ menuItems-1 ])
return (menuItems-1);
for (var i = 0; i < (menuItems-1); ++i)
if ((num >= menu[i]) && (num < menu[i+1]))
return i;
return 0; // just in case of a logic failure
// insert our localized strings
var drop = win.gp.qual.g2.drp; // for easier typing
drop.add('item', sPoor ); // 0
drop.add('item', sLow ); // 1
drop.add('item', sMedium ); // 2
drop.add('item', sHigh ); // 3
drop.add('item', sMaximum ); // 4
drop.selection = drop.items[2]; // Medium
win.gp.description.st.text = sDescription;
win.gp.copyright.st.text = sCopyright;
win.gp.qual.text = sQuality;
win.gp.qual.g2.st.text = sGridPoints;
win.gp.options.text = sFormatsToSave;
win.gp.options.ck3DL.text = sSave3DL;
win.gp.options.ckCUBE.text = sSaveCUBE;
win.gp.options.ckCSP.text = sSaveCSP;
win.gp.options.ckICC.text = sSaveICC;
win.gButtons.okBtn.text = sOpenButton;
win.gButtons.cancelBtn.text = sCancelButton;
// set starting parameters
win.gp.description.et.text = gDescription;
win.gp.copyright.et.text = gCopyright;
win.gp.options.ckICC.value = gDoSaveICCProfile;
win.gp.options.ck3DL.value = gDoSave3DL;
win.gp.options.ckCUBE.value = gDoSaveCUBE;
win.gp.options.ckCSP.value = gDoSaveCSP;
// global flag/hack to keep the UI pretty
var gGlobalPreventChanges = false;
with (win.gp.qual)
sl.value = gGridPoints;
g2.et.text = gGridPoints;
drop.selection = drop.items[ GridPointsToQualityMenuIndex(gGridPoints) ];
// global flag is ugly, but recursive change calls are uglier
g2.et.onChange = function () { if (gGlobalPreventChanges) { return; }
gGlobalPreventChanges = true;
var val = Number(this.text);
this.parent.parent.sl.value = val;
drop.selection = drop.items[ GridPointsToQualityMenuIndex(val) ];
gGlobalPreventChanges = false; };
sl.onChanging = function () { if (gGlobalPreventChanges) { return; }
gGlobalPreventChanges = true;
var val = Math.floor(this.value);
this.parent.g2.et.text = val;
drop.selection = drop.items[ GridPointsToQualityMenuIndex(val) ];
gGlobalPreventChanges = false; };
// DEFERRED - we should also set the value if the same menu item is selected again (reset)
// but the JSX toolkit doesn't support that
drop.onChange = function()
if (gGlobalPreventChanges) { return; }
gGlobalPreventChanges = true;
var theSelection = this.selection.text;
if (theSelection != null) { // only change if selection made
var theSelectionIndex = this.selection.index;
var newGridPoints = MenuQualityToGridPoints[ theSelectionIndex ];
win.gp.qual.g2.et.text = newGridPoints;
win.gp.qual.sl.value = newGridPoints;
gGlobalPreventChanges = false;
win.onShow = function ()
this.qual.sl.size.width = 128;
this.layout.layout(true);
win.gButtons.cancelBtn.onClick = function () { this.window.close(2); };
// validate inputs when the user hits OK
var gInAlert = false;
win.gButtons.okBtn.onClick = function ()
if (gInAlert == true)
gInAlert = false;
return;
var gridText = win.gp.qual.g2.et.text;
var w = Number(gridText);
var inputErr = false;
if ( isNaN( w ) )
if ( DialogModes.NO != app.playbackDisplayDialogs )
gInAlert = true;
alert( strTextInvalidType );
gInAlert = false;
win.gp.qual.g2.et.text = sGridDefault;
win.gp.qual.sl.value = sGridDefault;
drop.selection = drop.items[ GridPointsToQualityMenuIndex(sGridDefault) ];
return false;
if ( (w < sGridMin) || (w > sGridMax) )
if ( DialogModes.NO != app.playbackDisplayDialogs )
gInAlert = true;
alert( strTextInvalidNum );
gInAlert = false;
if ( w < sGridMin)
inputErr = true;
drop.selection = drop.items[ GridPointsToQualityMenuIndex(sGridMin) ];
win.gp.qual.g2.et.text = sGridMin;
win.gp.qual.sl.value = sGridMin;
return false;
if ( w > sGridMax)
inputErr = true;
drop.selection = drop.items[ GridPointsToQualityMenuIndex(sGridMax) ];
win.gp.qual.g2.et.text = sGridMax;
win.gp.qual.sl.value = sGridMax;
return false;
if (inputErr == false)
win.close(true);
return;
win.center(); // move to center the dialog
var ret = win.show(); // dialog display
if (2 == ret)
return false; // user cancelled
// user hit OK, copy values from dialog
gDescription = win.gp.description.et.text;
gCopyright = win.gp.copyright.et.text;
gGridPoints = win.gp.qual.sl.value;
gDoSave3DL = win.gp.options.ck3DL.value;
gDoSaveCUBE = win.gp.options.ckCUBE.value;
gDoSaveCSP = win.gp.options.ckCSP.value;
gDoSaveICCProfile = win.gp.options.ckICC.value;
// if no files are going to be saved, then we have zero work to do
if ((false == gDoSaveICCProfile) && (false == gDoSave3DL) &&
(false == gDoSaveCUBE) && (false == gDoSaveCSP) )
// tell the user that no formats were selected
alert( strNoExportsSelected );
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return false;
// prompt user for directory and output base filename
// default to directory and filename of current document
var currentDocumentPath
try
// if the file has no path (not saved), then this throws
var documentPath = app.activeDocument.fullName.fsName; // Get the OS friendly file path and name
documentPath = documentPath.replace(/\....$/,''); // remove extension, if there is one
documentPath = documentPath + ".lut"; // add dummy extension
currentDocumentPath = File ( documentPath );
catch (e)
// if there was no document path, default to user's home directory
var defaultName = "~/" + strUntitledLUT;
currentDocumentPath = File(defaultName);
var fname = currentDocumentPath.saveDlg(strExportPrompt);
if (fname == null)
return false;
gSaveFilePath = fname.fsName;
return true;
function doExportLUTs( path )
const keyUsing = charIDToTypeID( 'Usng' );
const eventExport = charIDToTypeID( 'Expr' );
var desc = new ActionDescriptor();
var desc2 = new ActionDescriptor();
desc2.putString( keyFilePath, path );
desc2.putString( keyDescription, gDescription );
desc2.putInteger( keyDataPoints, gGridPoints );
// assemble the full copyright string, if needed
var copyrightAssembled = gCopyright;
if (gCopyright != "")
var theDate = new Date();
// the year is from 1900 ????
var theYear = (theDate.getYear() + 1900).toString();
// Localization team says to just use the year
var dateString = theYear;
copyrightAssembled = localize("$$$/JavaScripts/Export3DLUT/Copyright=(C) Copyright ") + dateString + " " + gCopyright;
desc2.putString( keyCopyright, copyrightAssembled );
// select output format
desc2.putBoolean( keyWriteICC, gDoSaveICCProfile );
desc2.putBoolean( keyWrite3DL, gDoSave3DL );
desc2.putBoolean( keyWriteCUBE, gDoSaveCUBE );
desc2.putBoolean( keyWriteCSP, gDoSaveCSP );
desc.putObject( keyUsing, keyExportLUT, desc2 );
try
var resultDesc = executeAction( eventExport, desc, DialogModes.NO );
catch (e)
if ( e.number != 8007 ) { // don't report error on user cancel
var str = localize("$$$/JavaScripts/Export3DLUT/ExportLUTFailed=Unable to run the Export Color Lookup plugin because ");
alert( str + e + " : " + e.line );
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return false;
return true;
function doRenderGrid( points )
// call the grid rendering plugin to do the work
const keyRenderGrid = charIDToTypeID( "3grd" );
const keyDataPoints2 = charIDToTypeID( 'grdP' );
var args = new ActionDescriptor();
args.putInteger( keyDataPoints2, points);
try
var result = executeAction( keyRenderGrid, args, DialogModes.NO );
catch (e)
if ( e.number != 8007 ) { // don't report error on user cancel
var str = localize("$$$/JavaScripts/Export3DLUT/RenderGridFailed=Unable to render color grid because ");
alert( str + e + " : " + e.line );
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return false;
return true;
function resizeDocumentInPixels( width, height )
var myDocument = app.activeDocument;
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
myDocument.resizeCanvas( width, height, AnchorPosition.MIDDLECENTER)
app.preferences.rulerUnits = originalRulerUnits;
function GetColorSettings()
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putProperty( classProperty, kcolorSettingsStr );
ref1.putEnumerated( classApplication, typeOrdinal, enumTarget );
desc1.putReference( typeNULL, ref1 );
var result = executeAction( eventGet, desc1, DialogModes.NO );
var desc2 = result.getObjectValue( kcolorSettingsStr );
return desc2;
function GetColorConversionDitherState()
var settings = GetColorSettings();
if (settings.hasKey(kDither))
return settings.getBoolean( kDither );
else
return null;
function ConvertTo16Bit()
const eventConvertMode = charIDToTypeID( 'CnvM' );
const keyDepth = charIDToTypeID( 'Dpth' );
var modeDesc16Bit = new ActionDescriptor();
modeDesc16Bit.putInteger( keyDepth, 16 );
var result = executeAction( eventConvertMode, modeDesc16Bit, DialogModes.NO );
// state = true or false
function SetColorConversionDither( state )
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putProperty( classProperty, kcolorSettingsStr );
ref1.putEnumerated( classApplication, typeOrdinal, enumTarget );
desc1.putReference( typeNULL, ref1 );
var desc2 = new ActionDescriptor();
desc2.putBoolean( kDither, state );
desc1.putObject( keyTo, kcolorSettingsStr, desc2 );
executeAction( eventSet, desc1, DialogModes.NO );
function PurgeClipboard()
var desc1 = new ActionDescriptor();
desc1.putEnumerated( typeNULL, typePurgeItem, enumClipboard );
var result = executeAction( eventPurge, desc1, DialogModes.NO );
// This helps us avoid resizing existing document views in tabbed document mode.
// This is new functionality, and will not work in older Photoshop versions.
function MoveDocumentToNewWindow()
var desc1 = new ActionDescriptor();
var result = executeAction( kFloatWindowStr, desc1, DialogModes.NO );
function main()
try
var tempDoc = null;
var tempDoc2 = null;
// do basic troubleshooting first
// make sure there is a document
if (!app.activeDocument)
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return;
// check the document mode
var mode = app.activeDocument.mode;
if (mode != DocumentMode.RGB
&& mode != DocumentMode.LAB
&& mode != DocumentMode.CMYK)
var str = localize("$$$/JavaScripts/Export3DLUT/UnsupportedColorMode=Could not export Color Lookup Tables because only RGB, LAB, and CMYK color modes are supported.");
alert(str);
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return;
// check the document depth, for safety
var depth = app.activeDocument.bitsPerChannel; // an object, not a number - why? I have no idea...
var bitsPerChannel = 1;
if (depth == BitsPerChannelType.EIGHT)
bitsPerChannel = 8;
else if (depth == BitsPerChannelType.SIXTEEN)
bitsPerChannel = 16;
else if (depth == BitsPerChannelType.THIRTYTWO)
bitsPerChannel = 32;
else
var str = localize("$$$/JavaScripts/Export3DLUT/UnsupportedImageDepth=Could not export Color Lookup Tables because only 8, 16, and 32 bits/channel are supported.");
alert(str);
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return;
// Check layer types: background plus adjustments only
// For now, don't check each layer - a multiply solid layer still works as a color adjustment, as does selective blending
// Users will get odd results from other layer types (layer masks, pixel layers, etc.)
try
app.activeDocument.backgroundLayer.visible = true;
catch (e)
if (activeDocument.layers.length == 1)
alert( localize("$$$/JavaScripts/Export3DLUT/NoAdjustmentLayers=Could not export Color Lookup Tables because this document has no adjustment layers.") );
else
alert( localize("$$$/JavaScripts/Export3DLUT/NoBackground=Could not export Color Lookup Tables because this document has no background.") );
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return;
// look for last used params via Photoshop registry, getCustomOptions will throw if none exist
try
var desc = app.getCustomOptions(kScriptOptionsKey);
readOptionsFromDescriptor( desc );
catch(e)
// it's ok if we don't have any existing options, continue with defaults
// set some values from the document
gDescription = app.activeDocument.name;
// ask the user for options, bail if they cancel at any point
if ( doExportUI() == false)
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
return;
// we're good to go, so save our parameters for next time
app.putCustomOptions(kScriptOptionsKey, createDescriptorFromOptions() );
// remove file extension from filePath, if there is one
gSaveFilePath = gSaveFilePath.replace(/\....$/,'');
// calculate the size of image we need
var width = gGridPoints * gGridPoints;
var height = gGridPoints;
if (mode == DocumentMode.CMYK)
height = gGridPoints*gGridPoints;
// duplicate the user document so we don't mess it up in any way
tempDoc = app.activeDocument.duplicate("temporary");
// make the temporary document active
app.activeDocument.name = tempDoc;
// to avoid resizing existing document views in tabbed mode
MoveDocumentToNewWindow();
// convert 8 bit documents to 16 bit/channel for improved quality of merged adjustments
if (bitsPerChannel == 8)
ConvertTo16Bit();
depth = BitsPerChannelType.SIXTEEN;
// resize the temporary canvas to our target size
resizeDocumentInPixels( width, height )
// select background layer
tempDoc.activeLayer = tempDoc.backgroundLayer;
// render lookup base grid
var worked = doRenderGrid( gGridPoints );
if (worked != true)
tempDoc.close( SaveOptions.DONOTSAVECHANGES );
return; // error should have already been shown, and there is not much we can do
// do not flatten here -- the export automatically gets flattened data
// and we may need layers for LAB->RGB conversion below
// export the chosen formats
worked = doExportLUTs( gSaveFilePath );
if (worked != true)
tempDoc.close( SaveOptions.DONOTSAVECHANGES );
return; // error should have already been shown, and there is not much we can do
// for LAB documents to export 3DLUT (which are inherently RGB), we have to do additional work
// As a bonus, this works for CMYK as well!
if ( mode != DocumentMode.RGB )
var filePath = gSaveFilePath + "RGB";
var oldDitherState = GetColorConversionDitherState();
try
SetColorConversionDither(false);
const targetProfileName = "sRGB IEC61966-2.1";
// new document temp2 in sRGB, matching depth of original
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
tempDoc2 = app.documents.add( width, gGridPoints, 72, "temp2",
NewDocumentMode.RGB, DocumentFill.WHITE,
1.0, depth, targetProfileName );
app.preferences.rulerUnits = originalRulerUnits;
// make the new doc active
app.activeDocument.name = tempDoc2;
// to avoid resizing existing document views in tabbed mode
MoveDocumentToNewWindow();
// insert grid
worked = doRenderGrid( gGridPoints );
if (worked == true)
tempDoc2.selection.selectAll();
tempDoc2.activeLayer = tempDoc2.backgroundLayer;
tempDoc2.selection.copy();
tempDoc2.close( SaveOptions.DONOTSAVECHANGES );
tempDoc2 = null;
// make sure temp1 is active
app.activeDocument.name = tempDoc;
// resize for RGB grid
resizeDocumentInPixels( width, gGridPoints );
tempDoc.selection.selectAll();
tempDoc.paste(true);
PurgeClipboard(); // so we don't leave an odd, large item on the clipboard
tempDoc.selection.deselect();
tempDoc.flatten();
// convert temp1 to sRGB
tempDoc.convertProfile( targetProfileName, Intent.RELATIVECOLORIMETRIC, true, false );
// export the chosen formats
worked = doExportLUTs( filePath );
// at this point we still have to clean up, even if the call failed, so fall through
else
tempDoc2.close( SaveOptions.DONOTSAVECHANGES );
catch (e)
if ( e.number != 8007 ) { // don't report error on user cancel
var str = localize("$$$/JavaScripts/Export3DLUT/UnableToConvertRGB=Unable to convert image to RGB because ");
alert( str + e + " : " + e.line );
if (tempDoc2 != null) tempDoc2.close( SaveOptions.DONOTSAVECHANGES );
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
// always reset the dither state
SetColorConversionDither( oldDitherState );
PurgeClipboard(); // so we don't leave an odd, large item on the clipboard
} // if not RGB
// always close temp document without saving
tempDoc.close( SaveOptions.DONOTSAVECHANGES );
catch (e)
if ( e.number != 8007 ) { // don't report error on user cancel
var str = localize("$$$/JavaScripts/Export3DLUT/UnableToExport=Unable to export LUT because ");
alert( str + e + " : " + e.line );
// always close temp document without saving
if (tempDoc != null) tempDoc.close( SaveOptions.DONOTSAVECHANGES );
gScriptResult = 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our scriptHi blabla12345,
(untested and without warranty)
replace this line:
const sSaveCUBE = "CUBE";
with this:
const sSaveCUBE = "cube";
Have fun -
Aggregation at the lowest level in the cube
Hi guys
I designed very simple test cube with one dimension (both MOLAP driven).
The dimension PRODUCT consists of three levels:
- Group
- Category
- Product_detail
PRODUCT_SRC table to load PRODUCT dimension:
PR_GROUP_NAME PR_GROUP_ID PR_CATEGORY_NAME PR_CATEGORY_ID PR_DETAIL_NAME PRODUCT_DETAIL_ID
dairy 1000 yoghurts 1000000 yoghurt_1 1000000000
dairy 1000 yoghurts 1000000 yoghurt_2 1000000001
dairy 1000 yoghurts 1000000 yoghurt_3 1000000002
candy 1001 cookies 1000001 cookies_1 1000000003
candy 1001 cookies 1000001 cookies_2 1000000004
candy 1001 cookies 1000001 cookies_3 1000000005
beverages 1002 juices 1000002 juice_1 1000000006
beverages 1002 mineral water 1000003 mineral_water_1 1000000007
beverage 1002 energy drink 1000004 energy_drink_1 1000000008
The cube SALES has one measure:
- Value_of_sales (sum aggr)
SALES_SRC table to load SALES cube:
VALUE PROD_ID ID
1236 1000000002 2
115 1000000006 3
1697 1000000005 4
12 1000000004 5
168 1000000008 6
1984 1000000005 7
9684 1000000004 8
84 1000000002 9
8 1000000007 10
498 1000000006 11
4894 1000000008 12
4984 1000000004 13
448 1000000003 14
4489 1000000004 15
13 1000000001 16
879 1000000004 17
896 1000000006 18
4646 1000000007 20
I created the dimension PRODUCT and a mapping which loaded the data into the dimension. It worked perfectly. The hierarchy was created as I expected.
Then I created cube SALES and a mapping which should load the data into the cube. It is very very simple mapping - there were just only two items on the canvas:
- SALES_SRC table
and
- SALES cube
and two lines:
- from SALES_SRC.VALUE to SALES.VALUE_OF_SALES
- from SALES_SRC.PROD_ID to SALES.PRODUCT_NAME
Then I deployed everything and ran mapping, which loaded cube. But in my opinion the cube was not populated in a proper way, because it was no aggregation performed at the lowest level of product hierarchy - there was only a value of the first occurence of certain product. I mean:
In SALES.SRC we have for instance:
VALUE PROD_ID ID
1236 1000000002 2
84 1000000002 9
For me the the value in the cube should be 1236 + 84 = 1320, but the value in the cube at PRODUCT_DETAIL_LEVEL for yoghurt_3 is only 1236 - first occurence of this product in SALES.SRC.
Why hasn't been the data aggregated at lowest level of PRODUCT dimension hierarchy - is it the way OWB does such things?
Should I manually aggregate the data before loading to cube (just to use Aggregator to aggregate the data at lowest level)? If yes - what about incremental loading of data to cube (the old value value is simply replaced by new one and not summed in the cube)
In data warehouse solutions of other vendors the cube in such situation is loaded as I expected here.
I really don't know what to do. I do really appreciate any help from you.
Thank you in advance
PeterHi David
Thank you very much.
Now I'm sure that I have to aggregate facts by myself at the lowest level of hierarchy in a dimension.
Regards
Peter -
Monthly Aggregate Values are Not matching between Two Reports
Hi,
I have two custom reports (Pivot Table View)
_1) National Report_ This report renders data for the 10/11 Season (From 04/01/2010 To 03/31/2011). It includes Monthly Aggregate as well as 10/11 Season Grand Total. This report shows the correct information. We don't have to do any changes.
_2) YOYOY Report_
This report renders data for the 10/11, 09/10, 08/09 Season (From 04/01/2008 To 03/31/2011). It includes Monthly Aggregate for each of the three seasons as well as Grand Total for each Season.
Issue:
Monthly Aggregate Total for the YOYOY Report is not matching with the National Report Monthly Aggregate Total.
Technical Background:
- For 10/11 Season, the expressions used to arrive at the Monthly Aggregate Total is the same.
- Filter Criteria for (1) Report is specific to 10/11 Season (Rest of the criteria is similar)
- Filter Criteria for (2) Report is for 08/09, 09/10, 10/11 Season (Rest of the criteria is similar)
- In Report (1), Date Expressions are based on the following Attributes
Column Name: Month
Expression: MONTHNAME(Activity."Created Date")
Column Name: Sort on Created Month
Expression: CASE MONTH(Activity."Created Date") WHEN 4 THEN 1 WHEN 5 THEN 2 WHEN 6 THEN 3 WHEN 7 THEN 4 WHEN 8 THEN 5 WHEN 9 THEN 6 WHEN 10 THEN 7 WHEN 11 THEN 8 WHEN 12 THEN 9 WHEN 1 THEN 10 WHEN 2 THEN 11 WHEN 3 THEN 12 END
Column Name: 10/11 Season
Expression: /* Metric column name: # of high risk infants identified since last visit */ CASE WHEN "- Activity Custom Metrics".S_INT_10 IS NULL THEN 0 ELSE "- Activity Custom Metrics".S_INT_10 END
Aggregation Rule: Sum
- In Report (2), Date Expressions are based on the following Attributes
Column Name: Month Column
Expression: Date."Calendar Month"
Column Name: Sort on Created Month
Expression: CASE Date."Calendar Month" WHEN 4 THEN 1 WHEN 5 THEN 2 WHEN 6 THEN 3 WHEN 7 THEN 4 WHEN 8 THEN 5 WHEN 9 THEN 6 WHEN 10 THEN 7 WHEN 11 THEN 8 WHEN 12 THEN 9 WHEN 1 THEN 10 WHEN 2 THEN 11 WHEN 3 THEN 12 END
Column Name: 10/11 Season
Expression: CASE WHEN Activity."Created Date" BETWEEN /* First Day of Current Season */ timestampadd(sql_tsi_day, -dayofmonth(current_date)+1, timestampadd(sql_tsi_month, -(month(current_date) - 4), Current_DATE)) AND Current_DATE THEN "- Activity Custom Metrics".S_INT_10 ELSE 0 END
Aggregation Rule: Sum
Key Information:
- For 10/11 Season, Activity."Created Date" attribute is used for all the calculations based on date.
- For 08/09 and 09/10 Season, Date.Date attribute is used for all the calculations based on date. This is because the data was migrated from Asset Record Type to Activity Record Type for these seasons.
I have tried variety of options and nothing seems to get the Monthly Aggregate matching. Kindly suggest what changes do we require.
Regards,
Muddessar Nadeem Alanji
+91-98456 13180Hi,
Are you saying that you loaded the same excel document to both planning area and cube but the data in both is not matching??
How did you load the excel data to planning area?
Can you give more details on what data is not matching? Is the cube value smaller than the value you see in planning book?
Secondly if you are looking at data, make sure your selections are right. In cube, you have to specify the characteristics and at the bottom of the screen you specify the number of records to be displayed. Increase that to some big number like 9999 so that you can see all the records. -
Incorrect value DMALL in RSMDATASTATE
Hello all.
For some cubes value dmall in table RSMDATASTATE is incorrect. Request already updates to next data target, but in RSMDATASTATE dmall not update. There is last compressed request, not last updated request.
And so cube is not compressed. How i can repair it?Hello Rajesh,
The so called validation of fields is usually done through the data dictionary. Therefore the most straightforward way would be to have a domain with either a fixed value input or a check table assigned to the corresponding data element. Therefore for each field an own data element with possibly an own domain should be utilized.
If you only do have text input fields, this does not help much. You would therefore want to change the type of the input field in the component configuration. Another way would be to have an explicit search help assigned to the field in the component configuration.
The whole validation is a bit hard to answer in generic terms, since it is dependent on the definition of wrong for a specific input field.
Additionally you may need to add a profile for the field control of the specific node in order to make some of these new fields mandatory.
Regards
Joachim -
Layout not retrieving the values correctly
Hi,
As per the requirement I need to get the AOP values from the cube for a particular fiscal year to be populated into one of the columns of the Layout,but the planning layout which I had designed retrives the AOP values only for the first period.I should be getting the total AOP for the Fiscal year in my layout.
Say I have the cube values as
Product Fiscal year/Period Value
P-01 2006001 100
P-01 2006008 500
P-02 2006001 200
P-03 2006005 300
My layout retrieves the values as follows
P-01 2006001 100
P-02 2006001 200
but I need the Layout values as
P-01 600
P-02 200
P-03 300.
Could anyone tell me what modifications I need to do in my layout inorder to achieve the above functionality.
Points will be assigned.
Thanks,
SubhaHi Mayank,
I have not restricted to 2006001,but in the layout I have posting period as an variable which contains 1 to 13 periods as the variable definition.I need this becoz I need to generate period1 to period 13 columns dynamically in the same layout.
As you said If I remove the Posting period then how will I be able to genearte the columns dynamically.
Thanks,
Subha
Edited by: subhashini reddy on Apr 10, 2008 9:33 PM -
Excel - Cube Set & Cube Ranked Member Filtering
Hi There,
I am trying to get something working in excel but for the life of me can not seem to make it work. I am trying to calculate measures on a list of top 10 countries. These countries must be filtered to international and also have additional filters applied
to them from related dimensions i.e. specific date, specific organisational unit etc. I can achieve this using a pivot table, however the top 10 list of countries need to dynamically change as the measures sums change.
I have tried to accomplish this by using the cubeset and cuberanked formulas but can not apply dimension filtering (like cube value) which will result in incorrect values and country listings.
Am I approaching this the wrong way or is it just not possible to do achieve this?
I can not use pivot tables as I need a custom formatting solution in excel.
Thanks.Hi shmick,
According to your description, you want to filter the top 10 countries based on some measure. Right?
In this scenario, I suggest you using TOPCOUNT() in MDX instead of using CUBESET and CUBERANKEDMEMBER in Excel. Please see my sample query below:
So you can define a named set to always call the top 10 countries.
WITH SET [Top10Countries] AS
TOPCOUNT([Geography].[Country].[Country],2,[Measures].[Internet Sales Amount])
If you have any question, please feel free to ask.
Simon Hou
TechNet Community Support -
Input Query with blanks when we press transfer values option
I have an input query with 12 restricted key figures, but when I enter data and press on 'Transfer Values' or 'Save Values', the cells are blanked out (i.e. the values dissapear) and the data is not updated into the cube. I have done the following:
In Query Designer, I have checked the attribute 'Start Query in Change Mode' and
For all restricted key figures that needs to be planned, I have marked as 'Data can be changed using user entries and planning functions...'
Can you please let me know your thoughts around this.
Thanks,
SriniMayank,
I have 10 characterstics(cost center, cost element, cost type, fiscal year period,fiscal year, version, value type, posting period, detail valye type, currency type+1kf(0amount)) in my aggregation level.
I have created 12 rkf for each month with the following restrictions
Plan rkf (sub rkf) with restrictions to
fiscal year(variable), inforprovider-real time cube, value type 20, kf-0amount,
jan plan rkf.....dec plan rkf has
kf--Plan rkf(sub rkf) + posting period 1...12(one for each month),
And i have created an input query with the following fields
unders rows
Cost type, cost element
under Columns
Jan paln rkf to Dec plan rkf
filters for controlling area EA
I have change the query defination to "start query change mode" and also set all the rkf properties to "change by user enteries and/or planning options"
So, is there anything i am missing here?
Do i have to all characterstics of my aggregation level in my input query? or do i have to restrct my rkf to any curreny/unit fields? Please shed some light in here....:)
Thanks for your help...
Srini -
Difference in SUMCT display and available values
Here is the Scenario for my problem,
I have Actual(A) and Plan(P) values compared in report in two KFs and Bias calculated as (P-A)/P and some other CKF which require result (SUMCT) of Actual.
Now my user wants me to force Actual value as zero for zero plan values. I created a CKF for A like,
A_New = COUNT(P)*A " return zero for A if P is zero". Now this works fine for individual Actual and Plan comparasion and Bias but at Result level(SUMCT "A_New") this still counts those forced to zero values as of original. This works for display purpose only. So there is no difference in A and A_New at Result or SUMCT level so my other calculations using SUMCT "A_New" getting wrong. Any other idea I can accomplish this?Thanks Anil,
You are right "Calculate result as" ..Summation, works to bring result as of new total but only for display purpose.
Any other idea I can globaly filter values based on Plan value = 0.
Or do you think if this is a critical requirement I should consider populating cube values into new cube forcing Actual values to zero on Plan value = 0 condition in Update rule. -
Problem with Report on Multiprovider
Hi All,
I am getting key fig value more than the expected value in the report output, Report is on Multiprovider, I have checked in to cubes, values in the cubes and reports are same,
I have checked in TR and UR there is no routines, But Data source is enhanced in the R/3 and extracting the data to BW.
How to find why we are getting more values in the report :?:
Plz give some inputs to solve this problem.
Thanks
SreeuHi
I have checked data in the Multiprovider, In the MP contain KF (No of days) values high (more then 365 days), thats the reason am getting KF values high in the report,
Actually report is used for analyzing the Premise (Char) values w, r to Number of days for one fiscal year, but report is showing Number of days more than the 365 days on one fiscal year .
Can any one plz advice why we are getting No .of days more then 365 days?
Thanks
Sreenu -
Exception currencies TCURX table, R3 - BW loading issue
Hello Friends,
I am facing issue in report values for amount in local currency key field. Its value not matching with R3 values. Decimal places are shifted in report.
We are on BI7 (RSDS data source).
There is data coming from R3 into one DSO from different different data sources (Sales, Billing, Purchasing etc) and then getting loaded to cube for reporting.
Few data sources are standard like LIS and few are Z data sources.
This issue must be related to exception currencies maintained in TCURX table. Becauase we are getting issues only for those currencies.
For Ex: See R3 and report value is different.
R3 value:71.230,00 KWD
Cube value:71.230,00 KWD
Report value: 7.123,000 KWD
BW report is showing discrepancy for KWD, CLP (TCURX) currencies for Actual amount in LC key figure.
Can you please explain how to handle fix here?
I have heard that the ECC to BW the respective customization needs to be considered into account in the source system itself.
So can we ask our R3 team to fix this issue for exceptional currencies on R3 side. And any particular information that we will have to share with R3 team to get this corrected?
Please share your inputs on this.
Thank You.Hi P.K,
We too have faced same issue in last project, we followed some procedure as I attached below.
Please go through the attached document and understand.
Issue description: SAP stores all Amount values of different currencies with a fixed interpretation of having two decimal places. There are few exceptions to this rule for the currencies which has no meaning for the decimal places like 'Chilean Peso', Japanese Yen, South Korean Won, Paraguayan Guarani and many other currencies which we talk in the below sections. For few Currencies the fractions are needs to be stored more than 2 decimals due to the currency values and this document describes the procedures that needs to be followed to have the right reporting.
Analysis provided: Kenya Sales KPI’s values display by multiple of 100.
This document describes the procedure to handle the currencies which has the decimal places other than 2 in the table TCURX.
About TCURX table:
Currencies which do not have two decimal places must be defined in table TCURX (decimal places for currency codes). The table determines the number of decimal places in the output according to the currency key. If the contents of currency exist in table TCURX as currency key CURRKEY, the system sets the number of decimal places according to the entry for the field CURRDEC in TCURX. You can maintain this table via the R/3 Implementation Guide (Global Settings -> Currencies, Transaction OY04).
If a currency is not defined in Table TCURX (decimal places for currency codes), this currency is regarded as currency with two decimal places.
Impact of TCURX in BW on data:
Currently in my present system the following currencies were listed in the TCURX Table:
Details of the Currencies
In the above table some of the Currencies are obsolete.
Data load from Source to BW:
In the Source I have the data like below:
For one of the company the total net Sales is present as 675772,43 CLP (Chilean Peso) in the source system for the period Jan’12.
When the data is loaded into BW:
The data in the Source and in the Cube is matching each other.
Data reported in the query looks like below:
The data in the query gets multiplied by 100 which results in 67577243.00 CLP this is due to the fact that when we execute the query, the query looks at the possible entry of the the currency in the table TCURX. If the entry is available as 0, then it will multiply by 100 as normally as per SAP, all Currencies are stored with two decimal places.
Corrective measures / steps which user should take before raising an issue:
This behavior is due to the fact that the Query always looks at the TCURX table while execution and if there is an entry in TCURX then it will be considered as below:
[Amount Value] * [10 ** (2- (CURRDEC entry in TCURX table))]
In present case as the entry is marked as 0 in TCURX table the result will be like below:
= Amount*10**(2-0) = Amount*10**2 = Amount * 100
This will be corrected as below:
All amount related entries at the data source level should be marked to ‘External Format’.
Earlier the same was like below with the internal format.
In 3.x we have the option to choose the same at the infopackage level with 'Currency Conversion for External Systems':
The above change in the data source will provide the below results:
During data loads: When we load the data into BW having amount fields in it, it checks the TCURX table for the currency entry. If the currency entry is present in TCURX table, it divides the amount value by 10** (2- (CURRDEC entry in TCURX table)).
Query Output: The exactly reverse happens while displaying such values in the report output. The amount value will be multiplied by 10** (2- (CURRDEC entry in TCURX table)) while displaying in the report output.
One of below example shows the results as below from the flat file when the format is changed to External.
From Flat file: Sample content from Flat file
In the Cube: Output from the Cube for the same entry
Values are divided by 100 as for Currency IDR the entry is marked as ‘ZERO’ in TCURX table for number of Decimal places.
In the Query: Out of the Query looks like below:
Values the source value matches with the target value where the values of the cube get multiplied by 100.
Points to be noted: This procedure is only with the amounts having CURR data type.
If the amounts are used as FLTP type then this issue can also be avoided.
All the currencies having entry other than 2 in the field CURRDEC of table TCURX will be affected by this phenomenon.
The division will be carried out at the time of loading while multiplication will be carried out at the time of report output display.
Mainly this needs to be considered when dealing with the Flat file data loads which holds the currencies and for the ECC to BW the respective customization needs to be considered into account in the source system side.
Regards,
Vijay -
Import script (SQL to FDM) - ConnectionRead error
Hi,
I have written an import script in FDM to load data from a SQL view. This script works fine when loading approx 5,000 rows, however, fails when trying to load 20k+ rows
The error message I am receiving is:
Detail: [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead (recv()).
At line: 72
Line 72 = rs.movenext 'moves to the next record in the SQL view.
I have tried ignoring a few columns in the import script (to reduce the data volume) - this works, however I need all columns.
Below is a copy of the script:
Function COG1_BrandPL(strLoc, lngCatKey, dblPerKey, strWorkTableName)
Dim cnSS 'ADO connection object
Dim strSQL 'SQL string
Dim rs 'Source (Cognos) recordset
Dim rsAppend 'FDM recordset
'Initialize ADO objects
Set cnSS = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
'Open FDM table recordset for appending
Set rsAppend = DW.DataAccess.farsTableAppend(strWorkTableName)
'Connect to SQL Server database
cnSS.open "Driver={SQL Server};Server=XXXXXXXXX;OLE DB Services =-2;Database=XXXXXX;Uid=USER;Pwd=PASSWORD;"
'Create SQL query string
strSQL = "Select * FROM Corporate_PLUOP_view"
'Open source recordset
rs.Open strSQL, cnSS
'Check for data in source system
If rs.bof AND rs.eof Then
RES.PlngActionType = 2
RES.PstrActionValue = "No records to load!"
COG1_BrandPL = False
Exit Function
End If
'Loop through source records and append to FDM table
If Not rs.bof And Not rs.eof Then
Do While Not rs.eof
rsAppend.AddNew
rsAppend.Fields("PartitionKey") = RES.PlngLocKey
rsAppend.Fields("CatKey") = lngCatKey
rsAppend.Fields("PeriodKey") = dblPerKey
rsAppend.Fields("DataView") = "YTD"
'From Cognos
rsAppend.Fields("UD3") = rs.fields("Cube").value
rsAppend.Fields("Entity") = rs.fields("Entity").value
rsAppend.Fields("UD1") = rs.fields("Custom1").value
rsAppend.Fields("Account") = rs.fields("Account").value
rsAppend.Fields("ICP") = rs.fields("ICP").value
rsAppend.Fields("UD2") = rs.fields("Custom2").value
rsAppend.Fields("Amount") = rs.fields("QPR_Value").value
rsAppend.Update
rs.movenext
Loop
End If
rs.close
cnSS.close
'Assign Return value
COG1_BrandPL = True
End Function
The only other thing I have tried is copying and pasting the script to Excel.... This works for ALL rows... so seems to be a communication issue between FDM and SQL?
Any ideas?Bit more info:
I am using FDM 9.3.1
SQL Server 2005 on Windows 2003 Enterprise x64
Here's a copy of the FDM error log:
** Begin FDM Runtime Error Log Entry [2010-01-13-12:14:55] **
ERROR:
Code......................................... -2147467259
Description.................................. [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead (recv()).
At line: 75
Procedure.................................... clsImpProcessMgr.fLoadAndProcessFile
Component.................................... upsWObjectsDM
Version...................................... 931
Thread....................................... 12432
IDENTIFICATION:
User......................................... HFM-Cognos1
Computer Name................................ DEFMDHY9A01
App Name..................................... CognosTest
Client App................................... WebClient
CONNECTION:
Provider..................................... ORAOLEDB.ORACLE
Data Server..................................
Database Name................................ HFM9UAT
Trusted Connect.............................. False
Connect Status.. Connection Open
GLOBALS:
Location..................................... COGNOS1
Location ID.................................. 750
Location Seg................................. 3
Category..................................... ACTUAL
Category ID.................................. 13
Period....................................... Jun - 2009
Period ID.................................... 30/06/2009
POV Local.................................... False
Language..................................... 1033
User Level................................... 1
All Partitions............................... False
Is Auditor................................... False
Edited by: PaulScrivens on 13-Jan-2010 03:26
Maybe you are looking for
-
How do I set up my app to display its name in Chinese?
Within my app-descriptor.xml <name> <text xml:lang="en">Appname</text> <text xml:lang="es">ESAppname</text> <text xml:lang="ch">背痛</text> <text xml:lang="zh_CN">背痛</text> <text xml:lang="zh_TW">背痛</text> </
-
Preview vs. Adobe Reader
I just installed Adobe because I thought I had to for school and now it's taken over my computer. When I first installed it, it asked me if I wanted it to be the default program for pdf files and I said no and to never ask me again. Regardless of tha
-
Using sql expression in filter
Hi Experts, I have a question using 'sql expression' in filters in answers. Let's say i have a date filter and i would like the value for that date as max(tablename.colname). Please tell me the syntax for passing this. One more question is i have a d
-
Activation of new Non leading ledger for IFRS- Challanges involved
HI Good Day. I am requesting this qwery on behalf of my company. We are working on SAP ECC 6.0 and the New G/L functionality is activated and additional non leding ledger have been defined for IFRS reporting for some of the company codes r
-
Download Lightroom 5.5.6 fails
Installing of Lightroom by Creative Cloud fails- error message as follows: Exit Code: 7 Please see specific errors below for troubleshooting. For example, ERROR: -------------------------------------- Summary -------------------------------------- -