Profisee ZPack reference

I have been put in charge of helping Zimt integrate their SAP data access technology with a third party master data management solution called Profisee. If you’re not familiar with MDM, it is essnetially software the manages data across multiple data sources, for example keeping records in Salesforce up to date with records in a SQL databse or records in another third party application. The guys at Profisee have a pretty cool SDK that will allow us to take the ZPacks that we know and love and wrap them into connectors that fit right inside of the Profisee Intragrator software. The information below is some quick documentation I’ve put together mapping out the necessary zpack requests and responses that will make this system work.

Inside of SAP, master data is broken out into a series of objects, with each of those objects containing a series of subobjects, that hold the majority of the master data about each item.

ZIMT.ZPACK.MDM.PFS.OBJECTS (Get a list of all available objects in SAP)

This will show us all the available objects inside of SAP. Right now, we are particularly interested in KNA1 (Customers) and LFA1 (Vendors)

    (None)
    

   	{
  "JSON": {
    "RESPONSE": [
      {
        "PFS_NAME": "Cost Center",
        "SAP_NAME": "CSKS",
        "BUS_OBJECT": "BUS0012",
        "ENABLE": "",
        "FIST_LOAD_FLAG": "",
        "DATE_LOADED": "0000-00-00",
        "LAST_DELTA": "0000-00-00",
        "DELETED": ""
      },
      {
        "PFS_NAME": "Profit center",
        "SAP_NAME": "CEPC",
        "BUS_OBJECT": "BUS0015",
        "ENABLE": "",
        "FIST_LOAD_FLAG": "",
        "DATE_LOADED": "0000-00-00",
        "LAST_DELTA": "0000-00-00",
        "DELETED": ""
      },
      . . .

ZIMT.ZPACK.MDM.PFS.SUB.OBJECTS.FIELDS (Get metadata for available fields for a particular type of SAP object)

This call will be made to determine what fields are available for any supported subobject inside of SAP. We’ll use this metadata to set fields to their correct data type and set their display names in Maestro. We can also determine what fields are primary and foreign keys, required, etc.

{
  "PFS_NAME": "",
  "SAP_NAME": "KNA1",
  "FIEST_LOAD_FLAG": "",
  "DATE_LOADED": "0000-00-00",
  "LAST_DELTA": "0000-00-00"
}

{
  "JSON": {
    "RESPONSE": [
      {
        "FIELD_NAME": "KUNNR",
        "NAME": "KNA1-KUNNR",
        "LONG_NAME": "Customer Number",
        "DATA_TYPE": "CHAR",
        "LENGTH": "000020",
        "REF_TABLE": "",
        "REF_FIELD": "",
        "IS_MANDATORY": "",
        "DROPDOWN_TABLE": "",
        "DROPDOWN_HINT": "",
        "IS_KEY": "X",
        "FOREING_KEY": "",
        "FKY_TABLE": "",
        "READ_ONLY": "",
        "MIXED_CASE": "",
        "VALUE_IN": "",
        "VALUE_OUT": ""
      },
      {
        "FIELD_NAME": "LAND1",
        "NAME": "KNA1-LAND1",
        "LONG_NAME": "Country Key",
        "DATA_TYPE": "CHAR",
        "LENGTH": "000006",
        "REF_TABLE": "",
        "REF_FIELD": "",
        "IS_MANDATORY": "",
        "DROPDOWN_TABLE": "T005",
        "DROPDOWN_HINT": "Countries",
        "IS_KEY": "",
        "FOREING_KEY": "X",
        "FKY_TABLE": "T005",
        "READ_ONLY": "",
        "MIXED_CASE": "",
        "VALUE_IN": "",
        "VALUE_OUT": ""
      },
. . .

ZIMT.ZPACK.MDM.PFS.SUB.OBJECT.READER (Get all the values for a filtered subset of SAP objects)

There’s a lot of functionality built into this request. Setting the COUNT_ONLY flag to “X” will return just the count of records in the system that match the given FILTERS. The FILTERS array allows for multiple boolean operators to be passed to the zpack. The paging object allows you to set the page size to whatever you want, and pull pages based on a counter.

This is the big data dump. Every SAP subobject is an object in the LINES array. Each subobject has a FIELDS array that contains value and SAP field name.

	{
  "SUB_OBJECT": {
    "PFS_NAME": "",
    "SAP_NAME": "KNA1",
    "FIEST_LOAD_FLAG": "",
    "DATE_LOADED": "0000-00-00",
    "LAST_DELTA": "0000-00-00"
  },
  "COUNT_ONLY": "",
  "FILTERS": [
    {
      "FILTER_NAME": "",
      "FIELD_ONE": "",
      "OPERATOR": "",
      "FIELD_TWO": "",
      "BOOL_OPERATOR": ""
    }
  ],
  "PAGING": {
    "UP_TO": 0,
    "BLOCK_NUMBER": 0,
    "COUNTER": 0,
    "ENDED": ""
  }
}

	{
  "JSON": {
    "RESPONSE": {
      "COUNTER": 0,
      "LINES": [
        {
          "LINE_NO": 1,
          "FIELDS": [
            {
              "FIELD_NAME": "KUNNR",
              "VALUE_IN": "",
              "VALUE_OUT": "0000000001"
            },
            {
              "FIELD_NAME": "LAND1",
              "VALUE_IN": "",
              "VALUE_OUT": "US"
            },
            {
              "FIELD_NAME": "NAME1",
              "VALUE_IN": "",
              "VALUE_OUT": "B2B Demo Customer 1"
            },
            {
              "FIELD_NAME": "ORT01",
              "VALUE_IN": "",
              "VALUE_OUT": "PHILADELPHIA"
            },
            {
              "FIELD_NAME": "PSTLZ",
              "VALUE_IN": "",
              "VALUE_OUT": "19115"
            },
            {
              "FIELD_NAME": "REGIO",
              "VALUE_IN": "",
              "VALUE_OUT": "PA"
            },
. . .

Leave a Reply

Your email address will not be published. Required fields are marked *