Hi I have two arrays , one for the #MaterialCode and one for the #SerialNumbers

Hi I have two arrays , one for the #MaterialCode and one for the #SerialNumbers
Arrays are alrady sorted.
what I need to obtain is an array of [#MaterialCode,#ListofSerialNumber] list of serial Numbers for each #MaterialCode
Example:
#MaterialCode : {083813291400, 083813291400, 083813291400, 083816316600, 083816316600}
#SerialNumbers: {BB, DD, EE, XX, YY}

Desire Output should be:
{
{083813291400,"BB,DD,EE"},
{083816316600, "XX , YY"}
}
Thank you in advanced

OriginalPostID-153181

OriginalPostID-153181

  Discussion posts and replies are publicly visible

Parents
  • This can be done easily by creating two expression rules. Parent rule will have to do apply on other another rule to format material code and serial numbers. First thing, material codes are too big for an integer data type. So, I converted them into text data type and formatted them desired output that you need.

    Here is the code that you can take a look. You can add more exception handling, and pass different list of input to local variables.

    Main rule :
    load(
    local!materialCodes :{"083813291400", "083813291400", "083813291400", "083816316600", "083816316600"},
    local!serialNumbers:{"BB", "DD", "EE", "XX", "YY"},

    apply(

    rule!formatMaterialCodeAndSerialNumbers,{union(local!materialCodes,local!materialCodes)},local!materialCodes,local!serialNumbers)
    )

    Rule : formatMaterialCodeAndSerialNumbers

    {ri!int_materialCode,
    joinarray(
    index(ri!text_listOfSerialNumbers,
    fn!wherecontains(tostring(ri!int_materialCode),apply(fn!tostring,ri!int_listOfMaterialCodes)),""),",")
    }
Reply
  • This can be done easily by creating two expression rules. Parent rule will have to do apply on other another rule to format material code and serial numbers. First thing, material codes are too big for an integer data type. So, I converted them into text data type and formatted them desired output that you need.

    Here is the code that you can take a look. You can add more exception handling, and pass different list of input to local variables.

    Main rule :
    load(
    local!materialCodes :{"083813291400", "083813291400", "083813291400", "083816316600", "083816316600"},
    local!serialNumbers:{"BB", "DD", "EE", "XX", "YY"},

    apply(

    rule!formatMaterialCodeAndSerialNumbers,{union(local!materialCodes,local!materialCodes)},local!materialCodes,local!serialNumbers)
    )

    Rule : formatMaterialCodeAndSerialNumbers

    {ri!int_materialCode,
    joinarray(
    index(ri!text_listOfSerialNumbers,
    fn!wherecontains(tostring(ri!int_materialCode),apply(fn!tostring,ri!int_listOfMaterialCodes)),""),",")
    }
Children
No Data