Pages

Banner 468 x 60px

 
Showing posts with label AX Technical 2012. Show all posts
Showing posts with label AX Technical 2012. Show all posts

Thursday, April 19, 2018

Get workflow information using x++

0 comments
Hi Guys, I share how to Get Workflow Information AX using X++ :

Get workflow information using x++ :

Display str ApproveDate()
{
    WorkflowTrackingStatusTable     workflowTrackingStatus;
    WorkflowTrackingTable           workflowTrackingTable;
    WorkflowTrackingCommentTable    workflowTrackingCommentTable;
    UserInfo                        userInfo;
    Name                            _name;

    select firstFast RecId, User from workflowTrackingTable
    order by RecId desc
    join workflowTrackingCommentTable
    where workflowTrackingCommentTable.WorkflowTrackingTable == workflowTrackingTable.RecId
    join UserInfo
    where UserInfo.id == WorkflowTrackingTable.User
    exists join workflowTrackingStatus
    where workflowTrackingTable.WorkflowTrackingStatusTable == workflowTrackingStatus.RecId
    && workflowTrackingStatus.ContextRecId == _getPR.RecId
    && workflowTrackingStatus.ContextTableId == tableNum(PurchreqTable) //PurchTable
    && workflowTrackingTable.TrackingType == WorkflowTrackingType::Approval;
    if (workflowTrackingTable.RecId > 0)
    {
        return ": " + strFmt('Approve Date : %1 - Approve Name : %2',  datetime2str(workflowTrackingCommentTable.createdDateTime,123), userInfo.name);
    }
    else
    {
        return '';
    }
}

Ask me if you have a problem, please email to : adityomagnet@gmail.com
Read more...

Wednesday, April 18, 2018

Rename Product Name in EcoresProductTranslation AX 2012

0 comments
  1. Hai guys, I want to share how to Rename Product Name in EcoresProductTranslation Table AX 2012 :


If you have problem, please email to me : adityomagnet@gmail.com

Thanks in advance
Read more...

throw error in x++

0 comments

throw error in x++ :

public void closeOk()
{
    List                ordersToUpdate = new List(typeName2Type(extendedTypeStr(RecId)));
    FormRun             callerForm = element.args().caller();
    MultiSelectionHelper selection = MultiSelectionHelper::createFromCaller(element.args().caller());
    SalesTable          salesTable = selection.getFirst();
    CustTrans           custTrans;
    BankPaymCancel      bankPaymCancel;
    Args                args;
    MCRCustPaymTable    mcrCustPaymTable;
    UserId              User1, User2;
    ABUUserParameter    ABUUserParameter;
    User2 = curUserId();
    User1 = ABUUserParameter::findUser(User2).User;   
    //if(curUserId() != User1)
    if(curUserId() == User1) // test
    {
        if(salesTable.DocumentStatus == DocumentStatus::PackingSlip ||
           salesTable.DocumentStatus == DocumentStatus::PickingList ||
           salesTable.DocumentStatus == DocumentStatus::Invoice ||
           salesTable.DocumentStatus == DocumentStatus::Confirmation) // test
        {
            throw error("Order sudah di packing / picking / invoice, silahkan konfirmasi ke gudang untuk cancel order");
        }
    }
    //end

    while (salesTable)
    {
        ordersToUpdate.addEnd(salesTable.RecId);
        salesTable = selection.getNext();
    }

    SalesUpdateRemain::cancelRemainderOnManySalesOrders(ordersToUpdate.pack());

    salesTable = selection.getFirst();
    while (salesTable && RetailPricingEngine::isMCROrder(salesTable.SalesId))
    {
        mcrCustPaymTable = MCRCustPaymTable::findByRefRecIDRefTableID(salesTable.RecId, salesTable.TableId);

        if(mcrCustPaymTable && mcrCustPaymTable.CustPaymType == MCRCustPaymType::GiftCard)
        {
            while select forUpdate custTrans
                where custTrans.MCRPaymOrderID == salesTable.SalesId
                      && custTrans.CancelledPayment == NoYes::No
            {
                bankPaymCancel = BankPaymCancel::newBankPaymCancel(custTrans, true);

                args = new Args();
                args.caller(bankPaymCancel);
                args.record(custTrans);
                BankPaymCancel::serverRun(args);
            }
        }

        salesTable = selection.getNext();
    }

    if (callerForm)
    {
        callerForm.dataSource().research(true);
    }

    super();
}

Read more...

create Purchase Requisitions using x++

0 comments
create Purchase Requisitions using x++ :

void clicked()
{
    PurchReqTable                   purchReqTable;
    PurchReqApprovalEventHandler    PurchReqApprovalEventHandler;
    PurchReqLine                    purchReqLine;

    // Get Procurement Category
    InventTable                     _inventTable;
    EcoResProduct                   _EcoResProduct;
    EcoResProductCategory           _EcoResProductCategory;

    ProjTable                       _projTable = projTable::find(RUM_MasterProjectHeader.Value);

    // Get Clicked
    RUM_MasterProjectLines          GetClicked_RUM_MasterProjectLines;

    // Get UnitID
    EcoResProductName               _productName;
    EcoResProductTranslation        _EcoResProductTranslation;


    // get defaultdimension
    DimensionAttribute              _DimensionAttribute;
    DimensionAttributeValue         _DimensionAttributeValue;
    DimensionFinancialTag           _DimensionFinancialTag;
    DimensionAttributeValueSetItem  _DimensionAttributeValueSetItem;
 
    purchReqLine                    _purchReqLine;

    ;

    ttsBegin;
    purchReqTable.clear();
        purchReqTable.initValue();
        purchReqTable.PurchReqId        = NumberSeq::newGetNum(PurchReqTable::numRefPurchReqId()).num();
        purchReqTable.PurchReqName      = RUM_MasterProjectHeader.Description;
        PurchReqTable.ProjId            = RUM_MasterProjectHeader.Value;
        purchReqTable.ProjIdDataArea    = RUM_MasterProjectHeader.dataAreaId;
        PurchReqTable.RequisitionStatus = RUM_MasterProjectHeader.Status;
    purchReqTable.insert();
    ttsCommit;

     for(GetClicked_RUM_MasterProjectLines = getFirstSelection(RUM_MasterProjectLines_ds); GetClicked_RUM_MasterProjectLines; GetClicked_RUM_MasterProjectLines = RUM_MasterProjectLines_ds.getNext() )
    {
           ttsbegin;
           purchReqLine.clear();
                purchReqLine.LineType = PurchReqLineType::Item;
                purchReqLine.initValue();
                purchReqLine.InventDimId                      = GetClicked_RUM_MasterProjectLines.InventDimId;
                purchReqLine.initFromPurchReqTable(purchReqTable);

                //_inventTable = InventTable::find(GetClicked_RUM_MasterProjectLines.itemnumber);
               // select _EcoResProduct where _EcoResProduct.RecId == _inventTable.Product;
               // select _EcoResProductCategory where _EcoResProductCategory.Product == _EcoResProduct.RecId;

                purchReqLine.BuyingLegalEntity                = CompanyInfo::find().RecId;
                purchReqLine.ItemId                           = GetClicked_RUM_MasterProjectLines.ItemNumber;
                purchReqLine.InventDimIdDataArea              = curext();

                // purchReqLine.ProcurementCategory              = _EcoResProductCategory.Category;
                //  purchReqLine.ActivityNumber = salesLine.ActivityNumber;
                //  purchReqLine.ReceivingOperatingUnit = 22565423099;
                //  purchReqLine.DefaultDimension = str2int64("22565466744");
     
                _DimensionAttribute = DimensionAttribute::findByName(RUM_MasterProjectHeader_dimensionlist.text(PurchParameters::find().BITDimensionlist));
                select firstOnly _DimensionAttributeValue where _DimensionAttributeValue.DimensionAttribute == _DimensionAttribute.RecId;
                select firstOnly _DimensionAttributeValueSetItem where _DimensionAttributeValueSetItem.DimensionAttributeValue ==_DimensionAttributeValue.RecId;
             
                purchReqLine.DefaultDimension = _DimensionattributeValueSetItem.DimensionAttributeValueSet;//_DimensionattributeValueSetItem.DimensionAttributevalue;


                purchReqLine.PurchQty           = GetClicked_RUM_MasterProjectLines.QtyPlan;
                purchReqLine.PurchPrice         = GetClicked_RUM_MasterProjectLines.PricePlan;
                purchReqLine.LineAmount         = GetClicked_RUM_MasterProjectLines.QtyPlan * GetClicked_RUM_MasterProjectLines.PricePlan;
                purchReqLine.CurrencyCode       = GetClicked_RUM_MasterProjectLines.CurrencyCode;
                PurchReqLine.RequisitionStatus  = GetClicked_RUM_MasterProjectLines.Status;


                purchReqLine.initFromInventTable(InventTable::find(GetClicked_RUM_MasterProjectLines.itemnumber), true , false);

                //purchReqLine.initFromProjTable(_projTable);
            purchReqLine.insert();
            ttsCommit;
    }

                if (purchReqLine.CurrencyCode != purchReqLine.orig().CurrencyCode && purchReqLine.orig().CurrencyCode)
                {
                    purchReqLine.write();
                }
                if (PurchReqWFStatusTransitionHelper::setPurchReqTable2InReview(purchReqTable.RecId))
                {
                    Workflow::activateFromWorkflowType("PurchReqReview", purchReqTable.RecId, "Auto-Submitted into workflow", false, curUserId() );
                }
                PurchReqWFStatusTransitionHelper::setPurchReqTable2Approved(purchReqTable.RecId,false);

    info(strFmt('Purchase Requisition has been created : %1', purchReqTable.PurchReqId));
}





















void clicked()
{
    PurchReqTable                   purchReqTable;
    PurchReqApprovalEventHandler    PurchReqApprovalEventHandler;
    PurchReqLine                    purchReqLine;

    // Get Procurement Category
    InventTable                     _inventTable;
    EcoResProduct                   _EcoResProduct;
    EcoResProductCategory           _EcoResProductCategory;

    // Get Clicked
    RUM_MasterProjectLines          GetClicked_RUM_MasterProjectLines;

    // Get UnitID
    EcoResProductName               _productName;
    EcoResProductTranslation        _EcoResProductTranslation;

    // get defaultdimension
    DimensionAttribute              _DimensionAttribute;
    DimensionAttributeValue         _DimensionAttributeValue;
    DimensionAttributeValueSetItem  _DimensionAttributeValueSetItem;
    ;

    ttsBegin;
    purchReqTable.clear();
        purchReqTable.initValue();
        purchReqTable.PurchReqId        = NumberSeq::newGetNum(PurchReqTable::numRefPurchReqId()).num();
        purchReqTable.PurchReqName      = RUM_MasterProjectHeader.Description;
        PurchReqTable.ProjId            = RUM_MasterProjectHeader.Value;
        purchReqTable.ProjIdDataArea    = RUM_MasterProjectHeader.dataAreaId;
        PurchReqTable.RequisitionStatus = RUM_MasterProjectHeader.Status;
    purchReqTable.insert();
    ttsCommit;

     for(GetClicked_RUM_MasterProjectLines = getFirstSelection(RUM_MasterProjectLines_ds); GetClicked_RUM_MasterProjectLines; GetClicked_RUM_MasterProjectLines = RUM_MasterProjectLines_ds.getNext() )
    {
           ttsbegin;
           purchReqLine.clear();
                purchReqLine.initValue();
                purchReqLine.initFromPurchReqTable(purchReqTable);

                purchReqLine.InventDimId                      = GetClicked_RUM_MasterProjectLines.InventDimId;

                _inventTable = InventTable::find(GetClicked_RUM_MasterProjectLines.itemnumber);
                select _EcoResProduct where _EcoResProduct.RecId == _inventTable.Product;
                select _EcoResProductCategory where _EcoResProductCategory.Product == _EcoResProduct.RecId;
                select _EcoResProductTranslation where _EcoResProductTranslation.Product == _EcoResProduct.RecId;
                purchReqLine.ProcurementCategory              = _EcoResProductCategory.Category;

                purchReqLine.BuyingLegalEntity                = CompanyInfo::find().RecId;
                purchReqLine.ItemId                           = GetClicked_RUM_MasterProjectLines.ItemNumber;
                purchReqLine.InventDimIdDataArea              = curext();

                //  purchReqLine.ActivityNumber = salesLine.ActivityNumber;
                //  purchReqLine.ReceivingOperatingUnit = 22565423099;

                _DimensionAttribute = DimensionAttribute::findByName(RUM_MasterProjectHeader_dimensionlist.text(PurchParameters::find().BITDimensionlist));
                select firstOnly _DimensionAttributeValue where _DimensionAttributeValue.DimensionAttribute == _DimensionAttribute.RecId;
                select firstOnly _DimensionAttributeValueSetItem where _DimensionAttributeValueSetItem.DimensionAttributeValue ==_DimensionAttributeValue.RecId;
                purchReqLine.DefaultDimension = _DimensionattributeValueSetItem.DimensionAttributeValueSet;

                purchReqLine.PurchQty                       = GetClicked_RUM_MasterProjectLines.QtyPlan;
                purchReqLine.PurchPrice                     = GetClicked_RUM_MasterProjectLines.PricePlan;
                purchReqLine.LineAmount                     = GetClicked_RUM_MasterProjectLines.QtyPlan * GetClicked_RUM_MasterProjectLines.PricePlan;
                purchReqLine.CurrencyCode                   = GetClicked_RUM_MasterProjectLines.CurrencyCode;
                PurchReqLine.RequisitionStatus              = GetClicked_RUM_MasterProjectLines.Status;
                purchReqLine.initFromInventTable(InventTable::find(GetClicked_RUM_MasterProjectLines.ItemNumber), true, false);

            purchReqLine.insert();
            ttsCommit;
    }


                if (purchReqLine.CurrencyCode != purchReqLine.orig().CurrencyCode && purchReqLine.orig().CurrencyCode)
                {
                    purchReqLine.write();
                }
                if (PurchReqWFStatusTransitionHelper::setPurchReqTable2InReview(purchReqTable.RecId))
                {
                    Workflow::activateFromWorkflowType("PurchReqReview", purchReqTable.RecId, "Auto-Submitted into workflow", false, curUserId() );
                }
                PurchReqWFStatusTransitionHelper::setPurchReqTable2Approved(purchReqTable.RecId,false);

    info(strFmt('Purchase Requisition has been created : %1', purchReqTable.PurchReqId));
}
Read more...

Display item name product from product number using x++

0 comments
Display item name product from product number using x++ :

display SalesLineShowItemName itemnameproduct()
{
    return EcoResProductTranslation::findByProductLanguage(this.inventTable().Product,"en-us").Name;
}
Read more...

Monday, April 16, 2018

X++ code for check license Microsoft Dynamics AX 2012 R3

0 comments
Hi Everybody,

I want to share X++ code  for check license Microsoft Dynamics AX 2012 R3 :

static void ABUCheckLisense(Args _args)
{

    SysSecRoleEntryPointsTmp    srepTbl;
    SysUserLicenseMetadataTmp   slsaTmp;
    SecurityRole                securityRole;
    CommaTextIo                 commaTextIo;
    FileIOPermission            permission;
    MenuFunction                menuFunction;
    str                         menuLabel;
    str                         fileName = @"C:\Temp\TEST.csv";
    //str                         fileName = "C:\Temp\.csv";
    FromTime                    startTime = timeNow();
    #File

    //delete_from srepTbl;
    //delete_from slsaTmp;

    SysUserLicenseMiner::BuildLicenseMetadataTable(slsaTmp);
    SysUserLicenseMiner::BuildRoleToUserTypeInfo(slsaTmp, srepTbl);

    permission = new FileIOPermission(fileName,#io_write);
    permission.assert();
    commaTextIo = new CommaTextIo(fileName,#io_write);

    //Header
    commaTextIo.write(
        "Entry type",
        "Entry point AOT name",
        "Entry point label",
        "Role AOT name",
        "Role name",
        "License type");

    while select srepTbl
    /*    join securityRole
        where srepTbl.RoleRecId == 1085499//srepTbl.RoleRecId
        && securityRole.RecId == srepTbl.RoleRecId*/
    {
        menuFunction    = null;
        menuLabel       = '';
        switch (srepTbl.EntryPointType)
        {
            case EntryPointType::MenuItemAction:
                menuFunction = new MenuFunction(srepTbl.EntryPointName, MenuItemType::Action);
                break;

            case EntryPointType::MenuItemDisplay:
                menuFunction = new MenuFunction(srepTbl.EntryPointName, MenuItemType::Display);
                break;

            case EntryPointType::MenuItemOutput:
                menuFunction = new MenuFunction(srepTbl.EntryPointName, MenuItemType::Output);
                break;
        }

        if (menuFunction)
        {
            menuLabel = menuFunction.label();
        }

        commaTextIo.write(
            strFmt("%1",srepTbl.EntryPointType),
            srepTbl.EntryPointName,
            menuLabel,
            srepTbl.RoleAotName,
            SysLabel::labelId2String(securityRole.Name),
            strFmt("%1",srepTbl.UserLicType)
            );
    }
    CodeAccessPermission::revertAssert();

    info(strFmt("Total time: %1", timeConsumed(startTime, timeNow())));

}
Read more...

Wednesday, February 21, 2018

FormCtrl using x++ :

0 comments

FormCtrl using x++ :



void clicked()
{
    ABUTallyHeader  _abutallyheader;
    ABUTallyLine    _abutallyline;

    super();

    while select _abutallyheader where
    _abutallyheader.RefRecId == WMSOrderTrans.RecId
    {

        select count(RecId), sum(Qty) from _abutallyline where _abutallyline.RefRecIdRouteLine == _abutallyheader.recid;

        WMSOrderTrans.qty       = _abutallyline.Qty;
        WMSOrderTrans.QtyBOX    = _abutallyline.RecId;

        if (formCtrl)
        {
            formCtrl.fieldModified(fieldNum(WMSOrderTrans, Qty));
            formCtrl.fieldModified(fieldNum(WMSOrderTrans, QtyBOX));
            wmsOrderTrans_ds.refresh();
        }

        info(strFmt("Update qty : %1 And Box : %2",_abutallyline.Qty,_abutallyline.RecId));
    }

}


Read more...

Creating Financial Dimension in General Journals in AX 2012 in X++

0 comments

Creating Financial Dimension in General Journals in AX 2012 in X++ :

AxLedgerJournalTable header = new AxLedgerJournalTable();

AxLedgerJournalTrans trans = new AxLedgerJournalTrans();
container ledgerDimensions, offsetDimensions;

header.parmJournalName("GenJrn");
header.save();

trans.parmAccountType(LedgerJournalACType::Ledger);
trans.parmJournalNum(header.ledgerJournalTable().JournalNum);
ledgerDimensions = ["131100-USA","131100", 1, "COUNTRY","USA"];
trans.parmLedgerDimension(AxdDimensionUtil::getLedgerAccountId(ledgerDimensions));
trans.parmAmountCurDebit(230);
offsetDimensions = ["0103-USA","0103", 1, "COUNTRY", "USA"];
trans.parmOffsetLedgerDimension(AxdDimensionUtil::getLedgerAccountId(offsetDimensions));
trans.save();

Read more...

Thursday, February 8, 2018

Update Default Financial Dimension in AX 2012 using X++

0 comments

Update Default Financial Dimension in AX 2012 using X++ 


static void ABUDefaultFinancialDim_AP(Args _args)
{
    DimensionAttributeValue             dimAttrBUValue,dimAtrrCCValue,dimAtrrDepValue,dimAttrIGValue,dimAtrrProjValue;
    DimensionAttribute                  dimAttrBU,dimAtrrCC,dimAtrrDep,dimAttrIG,dimAtrrProj;
    DimensionAttributeValueSetStorage   davss;
    RecId                               defaultDimension;
    AssetBook                           Assetbook;
    AssetId                             AssetId;
    str                                 A_SITES, B_BRANCHES, C_DEPARTMENTS;

    SysExcelApplication         application;
    SysExcelWorkbooks           workbooks;
    SysExcelWorkbook            workbook;
    SysExcelWorksheets          worksheets;
    SysExcelWorksheet           worksheet;
    SysExcelCells               cells;
    COMVariantType              type1;
    Name                        name;
    HcmWorker                   HCMWorker;
    HcmPersonnelNumberId        HcmPersonnelNumberId;
    FileName                    filename;
    CustTable                   CustTable;
    CustAccount                 CustAccount;
    DirPartyName                DirPartyName;
    CustPriceGroup              PriceGroup;
    DirPartyTable               dirPartyTable1;
    LogisticsPostalAddress      postalAddress;
    LogisticsLocation           location;
    LogisticsLocationRole       locationRole;
    DirPartyLocationRole        partyLocationRole;
    DirPartyLocation            partyLocation;


    int                         row;
    str                         currency;
    str                         site,warehouse,payterid,paymode;
    str  100                    Address,Description;
    Dialog                      _dialog;
    DialogField                 _file;

     str COMVariant2Str(COMVariant _cv, int _decimals = 0,int _characters = 0,int _separator1 = 0,int _separator2 = 0)
       {
            switch(_cv.variantType())
            {
                case (COMVariantType::VT_BSTR):
                    return _cv.bStr();
                case (COMVariantType::VT_R4):
                    return num2str(_cv.float(),_characters,_decimals, _separator1,_separator2);
                case (COMVariantType::VT_R8):
                    return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
                case (COMVariantType::VT_DECIMAL):
                    return num2str(_cv.decimal(),_characters,_decimals, _separator1, _separator2);
                case (COMVariantType::VT_DATE):
                    return date2str(_cv.date(),123,2,1,2, 1,4);
                case (COMVariantType::VT_EMPTY):
                    return "";
                default:
                    throw error(strfmt("@SYS26908",_cv.variantType()));
            }
            return "";
        }
    ;

    _dialog = new Dialog("Please select the file to load");
    _dialog.addText("Select file:");
    _file = _dialog.addField(ExtendedTypeStr("FilenameOpen"));
    _dialog.run();

    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    filename = _file.value();
    try
    {
        workbooks.open(filename);
    }
    catch (Exception::Error)
    {
        throw error("File cannot be opened.");
    }
    workbook = workbooks.item(1);
    worksheets = workbook.worksheets();
    worksheet = worksheets.itemFromNum(1);
    cells = worksheet.cells();
    row = 1;
    do
    {
        row++;

        Assetid                      = cells.item(row, 1).value().bStr();
        A_SITES                      = cells.item(row, 2).value().bStr();
        B_BRANCHES                   = cells.item(row, 3).value().bStr();
        C_DEPARTMENTS                = cells.item(row, 4).value().bStr();
       
        davss = DimensionAttributeValueSetStorage::find(AssetBook::find(Assetid, 'Commercial').DefaultDimension);

        dimAttrBU = DimensionAttribute::findByName('A_SITES');
        dimAtrrCC = DimensionAttribute::findByName('B_BRANCHES');
        dimAtrrDep = DimensionAttribute::findByName('C_DEPARTMENTS');

        dimAttrBUValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttrBU, A_SITES, false, true);
        dimAtrrCCValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAtrrCC, B_BRANCHES, false, true);
        dimAtrrDepValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAtrrDep, C_DEPARTMENTS, false, true);   

        if(dimAttrBUValue || dimAtrrCCValue ||dimAtrrDepValue)
        {
            ttsBegin;
            davss.addItem(dimAttrBUValue);
            davss.addItem(dimAtrrCCValue);
            davss.addItem(dimAtrrDepValue); 
       
            select forUpdate Assetbook where Assetbook.AssetId == Assetid;
            Assetbook.DefaultDimension = davss.save();
            Assetbook.update();
            ttsCommit;
           
            info(strFmt('Asset id %1 - DefaultDimension %2', AssetId, Assetbook.DefaultDimension));
        }

        type1 = cells.item(row+1, 1).value().variantType();

    }
    while (type1 != COMVariantType::VT_EMPTY);

    application.quit();

}

This is template for update DefaultDimension fixed Asset (AssetTable) :




Read more...

Wednesday, November 22, 2017

Export Import data model AXutiL

0 comments
Export Import data model AXutiL :

cd C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\bin => letak folder untuk eksport

axutil export /model:"USR Model" /db:MicrosoftDynamicsAX_Model /file:JTC2012MOdel.axmodel

Read more...

controller in SSRS

0 comments
controller in SSRS :

protected void prePromptModifyContract()
{
#ISOCountryRegionCodes
DeliveryOrderContract contract;
TECDeliveryOrderTable TECDeliveryOrderTable;
FormDataSource fds;
str range;
;

contract = this parmReportContrat().parmRDPContract() as TECDeliveryOrderTable;
TECDeliveryOrderTable = args.record();
fds = args.record().datasource();

contract
}


How does your class look like?

Just to be sure, I'll show you a step by step

1. You create a class which extends from SrsReportRunController. Then you define a macro with the report name and the Data Contract class.

class forecastController extends SrsReportRunController
{
   #define.ReportName("Report.DesignName")
   forecastContract   dataContract;
}

2. Next you create a main method

public static client void main(args _args)
{
   forecastController controller = new forecastController();

   controller.parmReportName(#ReportName);
   controller.parmArgs(_args);
   controller.startOperation();
}

3. Now you override the prePromptModifyContract method

protected void prePromptModifyContract()
{
   args   Args;

   super();

   Args = this.parmArgs();

   dataContract = this.parmReportContract().parmRdpContract();
   dataContract.parmProjid(Args.record().(fieldnum(forecastTable, Projid)));
}

4. Then you create a Menu Item and choose the Controller class as the object

5. On the form you create a new Menut Item button and set the property "CopyCallerQuery" to "Yes". Then you choose the created Menu Item as the MenuItemName for the button.

That should make it work then.
Read more...

A financial dimension value is based on the record and has been used on a transaction. You cannot delete the record

  SOLUTION delete in table DimensionAttributeLevelValue base on Bank Account  :  and Delete the Bank Account FINISH