I have my Sandbox environment as below:
Details of the Sandbox as below:
Connecting VS code to above environment.
When you try to Publish the extension, it will ask you to authenticate.
Copy the Link and open in the browser and paste the code in the box as shown below.
Next it will ask for your Online Instance User Id & Password provide it and on confirmation close the page. It will start deploying the extension.
In this walkthrough I am using below scenario:
Requirement is we need to be able to define some code for dimension combinations. Let me say it will be Sales Code, you can choose name of your choice, this is not Salesperson code.
I am assuming these dimensions will follow the sequence as defined on my General Ledger Setup as below:
On Sales Order & Invoice user should be able to select this Sales Code and dimensions should be populated on order accordingly.
For tracking purpose this Sales Code should flow to Posted Sales Invoice and Customer Ledger.
So, Let’s Start with the development process:
Step-1 We will Create the Table
Here is the code for LookupDimValue Function, it will set filter for Dimension Code on Dimension Value table, as per the Dimension No passed. (1 is for Shortcut Dimension defined on General Ledger Setup, similarly for other 8 dimensions)
Step-2 Next, we will create the Page for this Setup
Step-3 Next, we will add the Sales Code field to all required Tables & Pages
Here is the code for AddDim Function. It is assumed that only combination provided in Sales Code Setup will be used. If you have defined Default dimensions or Combinations, those need to be preserved else this code will overwrite them. You will have to find the Data Set Entry, store them in temporary table used in below code and then add all the dimensions from the setup.
When you Select Sales Code on the Order or Invoice it will populate all the dimensions defined in the Setup.
Code for other Tables & Pages
Step-4 Next, we need to take care to flow the Sales Code to the Ledger and Posted documents.
For posted documents we need not to worry it will flow automatically provided we have defined the fields on same Id.
However, for ledger we will require to use Events to pass the data to their destinations. In this case we are only passing to Customer Ledger Entry. For this we will create a Codeunit.
To Add Event Subscriptions, Use the new Shift+Alt+E shortcut in the AL code editor to invoke a list of all events.
Search for the even you are looking for.
When pressing Enter to select an event entry, an event subscriber for the event will be inserted at the cursor position in the active AL code editor window.
Here is the Codeunit Code:
This is not the final code; much more can be done or need to be done before it can be delivered to customer for their use. Purpose of this walkthrough was to demo the way we can customize the solution using extensions and publishing to Online tenant in Sandbox.
Hope you enjoyed the information. Will come with more similar information in my next posts. Till then keep exploring, learning and sharing your knowledge with others.
Remain safe, take care of your loved ones, put your mask, maintain safe distance and don’t forget to get vaccinated.