Temporary Table Usage
Business Central allows the use of temporary tables for storing data in a session.
Problem
Using temporary tables with COSMO Mobile Solution is not possible because each request is handled by a different session. Even updating two fields on a card page is handled by two fully independent sessions.
Solution
When data has to be used in multiple sessions, save the data in a normal table and then clean it up when it is no longer needed.
Built-in Solution for Storing Temporary Data
COSMO Mobile Solution implements a table designed especially for storing temporary data called "CCS MS Web Service Helper". The following simple example shows how to use it for batch processing when a function is called from a list for two or more selected records.
- Extend the
"CCS MS Function Helper Type"enum with a new process identifier.
enumextension 50000 MyCustomProcessExtension extends "CCS MS Function Helper Type"
{
value(50000; "MyCustomProcess")
{
Caption = 'My Custom Process';
}
}
- Implement an unbound function in an already published codeunit.
internal procedure CustomBatchProcessForReceiptLines(serviceName: Text; recordId: RecordId; isFirst: Boolean; isLast: Boolean)
var
WebServiceHelper: Record "CCS MS Web Service Helper";
WarehouseReceiptLine: Record "Warehouse Receipt Line";
begin
if (serviceName = 'CCSMSWhseReceiptLineWS') and (RecordId.TableNo = Database::"Warehouse Receipt Line") then begin
if isFirst then
// clear the temporary data when the function is called on the first selected record
WebServiceHelper.DeleteRecordByType("CCS MS Function Helper Type"::MyCustomProcess);
// save the current selected record
WarehouseReceiptLine.Get(recordId);
WebServiceHelper.InsertRecord("CCS MS Function Helper Type"::MyCustomProcess, WarehouseReceiptLine."No.", '', WarehouseReceiptLine."Line No.");
if isLast then
begin
// collect all saved records and run the batch process when the function is called on the last selected record
WebServiceHelper.GetRecordsByType("CCS MS Function Helper Type"::MyCustomProcess);
repeat
WarehouseReceiptLine.Get(WebServiceHelper."Code 1", WebServiceHelper."Integer 1");
MarehouseReceiptLine.Mark(true);
until WebServiceHelper.Next() = 0;
WarehouseReceiptLine.MarkedOnly := true; //
WarehouseReceiptLine.FindSet();
DoBatchProcessOnSelectedReceiptLines(WarehouseReceiptLine);
end;
end;
end;
- Search for and add the newly created function as an unbound function to the
CCSMSItemsWSpage customization. - Search for and add this function to the list view.
- Define the caption for the unbound function in the required language.
- Specify an icon for the unbound function for visual clarity.
- After refreshing the schema in the mobile application, the unbound function will appear in the card view and be available for use.
Feedback
Submit feedback for this page .