<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How do I retrieve ResponsibleParties for Report.BI Objects in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/How-do-I-retrieve-ResponsibleParties-for-Report-BI-Objects/m-p/737506#M80451</link>
    <description>&lt;P&gt;I've resolved this myself by using a working version of another piece of code (used for obtaining DI Job information) and injecting the same ResponsibleParty functions, which now works in this context.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data MDIDs;
	length Server_Uri rp_uri Metadata_ID Name _Name TypeName Path Location _Location MetadataCreated MetadataUpdated CreatedBy ModifiedBy $256;
 	length Created Modified 8.;
  	format Created Modified datetime19.;
   	nobj = 1;
    n=1;
    call missing(Metadata_ID, _Name, MetadataCreated, MetadataUpdated, Created, Modified, TypeName, Path, Server_Uri, _location, CreatedBy, ModifiedBy);
 
    do while(n le nobj);
		nobj=metadata_getnobj("omsobj:Transformation?@PublicType = 'Report.BI'",n,Server_Uri);
		rc=metadata_getattr(Server_Uri,'Id',Metadata_ID);
		rc=metadata_getattr(Server_Uri,'Name',_Name);
		rc=metadata_getattr(Server_Uri,"MetadataCreated",MetadataCreated);
		rc=metadata_getattr(Server_Uri,"MetadataUpdated",MetadataUpdated);
		name=translate(translate(translate(translate(_name,"-","–"),"£","£"),"%","%"),"+","+");
		Created=input(MetadataCreated,anydtdtm.);
		Modified=input(MetadataUpdated,anydtdtm.);
		rc=metadata_getattr(Server_Uri,"PublicType",TypeName);
		numrp=metadata_getnasn(Server_Uri,"ResponsibleParties",1,rp_uri);
		if numrp&amp;gt;0 then do;
			numrp=metadata_getnasn(Server_Uri,"ResponsibleParties",1,rp_uri);
			rc=metadata_getattr(rp_uri,"name",CreatedBy);
			numrp=metadata_getnasn(Server_Uri,"ResponsibleParties",2,rp_uri);
			rc=metadata_getattr(rp_uri,"name",ModifiedBy);
		end;

		TreesCount=metadata_getnasn(Server_Uri,"Trees",1,Server_Uri);
		rc=metadata_getattr(Server_Uri,"Name",Path);
		_tree=1;
		do while (_tree&amp;gt;0);
			_tree=metadata_getnasn(Server_Uri,"ParentTree",1,Server_Uri);
			if _tree &amp;gt; 0 then do;
				_rc=metadata_getattr(Server_Uri,"Name",_location);
				Path=catx('/',_location,Path);
			end;
		end;

		Location = '/'||Path;
		output;
		n=n+1;
	end;

	keep Metadata_ID Name TypeName Location Created Modified CreatedBy ModifiedBy;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 28 Apr 2021 08:47:31 GMT</pubDate>
    <dc:creator>_Dan_</dc:creator>
    <dc:date>2021-04-28T08:47:31Z</dc:date>
    <item>
      <title>How do I retrieve ResponsibleParties for Report.BI Objects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-do-I-retrieve-ResponsibleParties-for-Report-BI-Objects/m-p/736930#M80441</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've found a code snippet online to get most of what I require in regards to Report.BI Metadata properties, however, the code to get ResponsibleParty information was answered elsewhere in a separate context, and I can't cobble together the two pieces of code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My issue is understanding how to utilise the&amp;nbsp;&lt;CODE class=" language-sas"&gt;metadata_getnasn&lt;/CODE&gt;&lt;SPAN style="font-family: inherit;"&gt;command and whether it's right to do so within the getnobj loop. The query does return two usernames based on my ask, but, it can return those 1...2...even 7 times over. Same record, just many duplicates.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Does anyone know (specifically regarding ResponsibleParties) how I obtain the creator/last modified names and dates, please?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data MDIDs (drop=_: label="SAS VA Report List");
  length id $17 _uri name _name _modified _created location _location createdby modifiedby name person $256; 
  length created modified 8; 
  format created modified datetime19.;
  _nobj=1; 
  _n=1; 
  call missing(id, _uri, _uri2, name, role, person, createdby, modifiedby, _name, _modified, _created, _location);

  do while(_n le _nobj);
    _nobj=metadata_getnobj("omsobj:Transformation?@PublicType = 'Report.BI'",_n,_uri);
    _rc=metadata_getattr(_uri,"Id",id);
    _rc=metadata_getattr(_uri,"Name",_name);
    _rc=metadata_getattr(_uri,"MetadataCreated",_created);
    _rc=metadata_getattr(_uri,"MetadataUpdated",_modified);

	created=input(_created,anydtdtm.);
    modified=input(_modified,anydtdtm.);
	name=translate(translate(translate(translate(_name,"-","–"),"£","£"),"%","%"),"+","+");

	/*	Get creator / last modified. Doesn't work properly.	*/
	passn=metadata_getnasn(_uri,"ResponsibleParties",1,Respuri);
	_rc=metadata_getattr(Respuri, "Name", CreatedBy);
	output;
	passn=metadata_getnasn(_uri,"ResponsibleParties",2,Respuri);
	_rc=metadata_getattr(Respuri, "Name", ModifiedBy);
	output;

	* Get folder object the current Report is in *;
    _rc=metadata_getnasn(_uri,"Trees",1,_uri);
    * Get folder name the current Report is in *;
    _rc=metadata_getattr(_uri,"Name",location);
    _tree=1; 
    * Loop up the folder hierarchy *;
    do while (_tree&amp;gt;0);
      * Get the parent folder object *;
      _tree=metadata_getnasn(_uri,"ParentTree",1,_uri);
      if _tree &amp;gt; 0 then do; 
        * If there was a parent folder, get the name *;
        _rc=metadata_getattr(_uri,"Name",_location);
        * Construct the path *;
        location=catx('/',_location,location);
      end; 
    end; * Folder Hierachy *;

    location = '/'||location;

    output; 
    _n=_n+1; 
  end; 
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Apr 2021 09:38:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-do-I-retrieve-ResponsibleParties-for-Report-BI-Objects/m-p/736930#M80441</guid>
      <dc:creator>_Dan_</dc:creator>
      <dc:date>2021-04-26T09:38:23Z</dc:date>
    </item>
    <item>
      <title>Re: How do I retrieve ResponsibleParties for Report.BI Objects</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-do-I-retrieve-ResponsibleParties-for-Report-BI-Objects/m-p/737506#M80451</link>
      <description>&lt;P&gt;I've resolved this myself by using a working version of another piece of code (used for obtaining DI Job information) and injecting the same ResponsibleParty functions, which now works in this context.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data MDIDs;
	length Server_Uri rp_uri Metadata_ID Name _Name TypeName Path Location _Location MetadataCreated MetadataUpdated CreatedBy ModifiedBy $256;
 	length Created Modified 8.;
  	format Created Modified datetime19.;
   	nobj = 1;
    n=1;
    call missing(Metadata_ID, _Name, MetadataCreated, MetadataUpdated, Created, Modified, TypeName, Path, Server_Uri, _location, CreatedBy, ModifiedBy);
 
    do while(n le nobj);
		nobj=metadata_getnobj("omsobj:Transformation?@PublicType = 'Report.BI'",n,Server_Uri);
		rc=metadata_getattr(Server_Uri,'Id',Metadata_ID);
		rc=metadata_getattr(Server_Uri,'Name',_Name);
		rc=metadata_getattr(Server_Uri,"MetadataCreated",MetadataCreated);
		rc=metadata_getattr(Server_Uri,"MetadataUpdated",MetadataUpdated);
		name=translate(translate(translate(translate(_name,"-","–"),"£","£"),"%","%"),"+","+");
		Created=input(MetadataCreated,anydtdtm.);
		Modified=input(MetadataUpdated,anydtdtm.);
		rc=metadata_getattr(Server_Uri,"PublicType",TypeName);
		numrp=metadata_getnasn(Server_Uri,"ResponsibleParties",1,rp_uri);
		if numrp&amp;gt;0 then do;
			numrp=metadata_getnasn(Server_Uri,"ResponsibleParties",1,rp_uri);
			rc=metadata_getattr(rp_uri,"name",CreatedBy);
			numrp=metadata_getnasn(Server_Uri,"ResponsibleParties",2,rp_uri);
			rc=metadata_getattr(rp_uri,"name",ModifiedBy);
		end;

		TreesCount=metadata_getnasn(Server_Uri,"Trees",1,Server_Uri);
		rc=metadata_getattr(Server_Uri,"Name",Path);
		_tree=1;
		do while (_tree&amp;gt;0);
			_tree=metadata_getnasn(Server_Uri,"ParentTree",1,Server_Uri);
			if _tree &amp;gt; 0 then do;
				_rc=metadata_getattr(Server_Uri,"Name",_location);
				Path=catx('/',_location,Path);
			end;
		end;

		Location = '/'||Path;
		output;
		n=n+1;
	end;

	keep Metadata_ID Name TypeName Location Created Modified CreatedBy ModifiedBy;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Apr 2021 08:47:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-do-I-retrieve-ResponsibleParties-for-Report-BI-Objects/m-p/737506#M80451</guid>
      <dc:creator>_Dan_</dc:creator>
      <dc:date>2021-04-28T08:47:31Z</dc:date>
    </item>
  </channel>
</rss>

