一些我工作中经常使用的C4C ABSL代码片段

164 阅读1分钟

(1) 和query相关的

Query Related

import AP.Common.GDT;
import AP.CRM.Global;
var SalesOrderquery = SalesOrder.QueryByElements;
var queryParameter = SalesOrderquery.CreateSelectionParams();
var queryResult;
queryParameter.Add(SalesOrderquery.ID.Content,"I", "EQ","1686");
queryResult = SalesOrderquery.Execute(queryParameter);
foreach( item in queryResult )
     item.ext_test_for_lock = "change by Service Order";

(2) 如何定义集合 - collectionof的用法

import ABSL;
import AP.Common.GDT
var mycollection : collectionof SalesOrder.BuyerID; // internal table

(3) elementof的用法,集合类型的基本操作

var mycollection: collectionof SalesOrder.BuyerID;
var result: collectionof SalesOrder.BuyerID;

var item_one: elementof SalresOrder.BuyerID;
var item_two: elementof SalresOrder.BuyerID;
var collection: collectionof SalesOrder.SystemAdministrativeData;

item_one.content = "A";
mycollection.Add( item_one);

item_one.content = "B";
mycollection.Add( item_one);
mycollection.Count();
item_two = mycollection.getFirst();
item_two.Clear();
item_two = mycollection.getLast();
item_two.Clear();
collection.OrderBy( time=>time.LastChangeDateTime);
result = mycollection.Where( test=>test.content == "A" );

(4) BO retrieve的用法

var SalesOrderID : elementsof SalesOrder.ID; 
SalesOrderID.content = "12";
SalesOrder.Retrieve( SalesOrderID );

<node Instance> = <BusinessObject>.Retrieve(<alternativeKey>);
<Collection of node instances> = <BusinessObject>.Retrieve(<collection of alternativeKeys>);

(5) ABSL里字符串的用法

import ABSL;
var test;
test = String.Substring("Test",2,2);

(6) C4C后台一些reuse service的用法

import ABSL;
var time;
time = Context.GetCurrentGlobalDateTime( );

(7) 集合类型的查询操作

var mySearchValues : elementsof myBO.Item;
var collectionA;  
mySearchValues.ItemID.content = "Bill";
collectionA = this.Where(n => n.ItemID == mySearchValues.ItemID || !(n.ItemID.content < 1000 && n.ItemID.content == "Fred")); 

(8) DistinctBy操作

<Collection>.DistinctBy(<anonymous function>).ThenBy(<anonymous function>);

The DistinctBy statement deletes duplicate lines in collections by comparing content of defined components.
An anonymous function (lambda expression) is used to refer to the components of the collection line type.

collection.DistinctBy(n => n.BUYER_NAME.CONTENT).ThenBy(n => n.STATUS).ThenBy(n => n.TYPE_CODE); 

count操作:

= .Count();

(9) 如何用BODL(Business Object Definition Language)显式定义BO的DU - deployment unit

[DeploymentUnit(CustomerRelationshipManagement)] businessobject BonusPlan {
    element ID : Identifier;
}

[DeploymentUnit(CustomerRelationshipManagement)]
[Extension]
businessobject BonusPlan {
                     element ID : Identifier;
}

(10) 如何定义DO - Dependent objec

[DependentObject(TextCollection)] node ItemTextCollection;

(11) BODL里一些常用的注解

  1. [AlternativeKey] element AssigmentDate : Date;
  2. [CrossDeploymentUnit] association toBusinessPartner to BusinessPartner;
  3. [RelevantForAccessControl] association toBusinessPartner to BusinessPartner;
  4. [DependentObject(TextCollection)] node TextCollection;
  5. [Extension] businessobject SalesOrder { … }
  6. [DeploymentUnit(CRM)] businessobject SunnyDay { … }
  7. [DependentObject(TextCollection)] [MultipleTexts] node TextCollection; //second annotation