<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>ProgressiveInfo</title>
	<atom:link href="http://progressiveinfo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://progressiveinfo.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Oct 2009 03:07:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='progressiveinfo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>ProgressiveInfo</title>
		<link>http://progressiveinfo.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://progressiveinfo.wordpress.com/osd.xml" title="ProgressiveInfo" />
	<atom:link rel='hub' href='http://progressiveinfo.wordpress.com/?pushpress=hub'/>
		<item>
		<title>SAP Blue Ruby</title>
		<link>http://progressiveinfo.wordpress.com/2009/09/09/sap-blue-ruby/</link>
		<comments>http://progressiveinfo.wordpress.com/2009/09/09/sap-blue-ruby/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 02:04:42 +0000</pubDate>
		<dc:creator>Carlos Henrique Martineli</dc:creator>
				<category><![CDATA[Blue Ruby]]></category>
		<category><![CDATA[Blue Ruby File System]]></category>
		<category><![CDATA[Blue Ruby VM]]></category>
		<category><![CDATA[BSP]]></category>
		<category><![CDATA[Open ABAP]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on SAP]]></category>
		<category><![CDATA[SAP Blue Ruby]]></category>
		<category><![CDATA[SAP Research]]></category>

		<guid isPermaLink="false">http://progressiveinfo.wordpress.com/?p=57</guid>
		<description><![CDATA[The Ruby Way to communicate with SAP Applications Blue Ruby é um projeto ainda em desenvolvimento pela SAP Research que tem como finalidade criar um ambiente &#8220;enterprise-ready&#8221; para dar suporte &#224; linguagem Ruby, executando nativamente c&#243;digos Ruby dentro da ABAP Virtual Machine. Nas palavras de Juergen Schmerder, o projeto re&#250;ne &#8220;o melhor de ambos os [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=progressiveinfo.wordpress.com&amp;blog=7094441&amp;post=57&amp;subd=progressiveinfo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[
<div align="justify">
<h2><i> The Ruby Way to communicate with SAP Applications </i></h2>
<p>
<p>Blue Ruby é um projeto ainda em desenvolvimento pela <i>SAP Research</i> que tem como finalidade criar um ambiente <i>&ldquo;enterprise-ready&rdquo;</i> para dar suporte &agrave; linguagem Ruby, executando nativamente c&oacute;digos Ruby dentro da <i>ABAP Virtual Machine</i>. Nas palavras de Juergen Schmerder, o projeto re&uacute;ne &ldquo;o melhor de ambos os mundos&rdquo;. Isto &eacute;, o projeto visa integrar as caracter&iacute;sticas marcantes em Ruby, como: programa&ccedil;&atilde;o puramente orientada a objetos, portabilidade, produtividade, sintaxe limpa, tipagem din&acirc;mica e escalabilidade; com a robustez do SAP Web AS.</p>
<p>Para entender um pouco melhor sobre a complexidade, integra&ccedil;&atilde;o, status atual do projeto e objetivos, separei o assunto em t&oacute;pico, como podemos verificar a seguir:</p>
<p>
<h3>Um pouco de história: A Linguagem Ruby</h3>
</p>
<p>Como j&aacute; &eacute; de conhecimento da maioria dos profissionais da &aacute;rea de desenvolvimento web, a linguagem Ruby foi projetada e desenvolvida pelo japonês Yukihiro <i>&quot;Matz&quot;</i> Matsumoto, em 1995.</p>
<p>Ao projetar a linguagem, Matz reuniu os principais pontos de outras linguagens, como: as express&otilde;es regulares de Lisp, o lambda calculus de Eiffel, a orienta&ccedil;&atilde;o a objetos de Smalltalk, a tipagem din&acirc;mica de Perl; e outras caracter&iacute;sticas provenientes de Python, Ada e CLU.</p>
<p>Algumas da principais caracter&iacute;stica da linguagem a orienta&ccedil;&atilde;o a objetos pura, sintaxe limpa,  <i>mixins, iterators, closures, exception handling, automatic garbage collection</i>, metra-programa&ccedil;&atilde;o, introspec&ccedil;&atilde;o, reflex&atilde;o, <i>continuations, generators </i>e suporte a implementa&ccedil;&atilde;o de DSLs <i>(Domain Specific Languages)</i>.</p>
<p>Nos paradigmas de programa&ccedil;&atilde;o Ruby é caracterizada como linguagem funcional, imperativa, reflexiva e orientada a objetos.</p>
<p>A linguagem Ruby foi escrita em C. E, de acordo com seu criador, Ruby foi criada para ser uma linguagem de <i>scripting</i> mais poderosa que Perl e mais orientada a objeto que Python. A primeira vers&atilde;o da linguagem tornou-se de conhecimento p&uacute;blico no final de 1995, em sua vers&atilde;o 0.95.</p>
<p>Ainda de acordo com Matsumoto, Ruby foi criada visando n&atilde;o somente a produtividade mais a divers&atilde;o, isto &eacute;, a fluência e comunica&ccedil;&atilde;o programador/m&aacute;quina.</p>
<p><i><br />
<blockquote>&ldquo;Often people, especially computer engineers, focus on the machines. They think, &quot;By doing this, the machine will run faster. By doing this, the machine will run more effectively. By doing this, the machine will something something something.&quot; They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.&rdquo;<br />
<address>( <a href="http://en.wikipedia.org/wiki/Ruby_%28programming_language%29">Matsumoto</a> ).</address>
</blockquote>
<p></i></p>
<p>Um exemplo do cl&aacute;ssico &ldquo;Hello World&rdquo; escrito em Ruby:</p>
<p><code><strong>puts</strong> &ldquo;Hello World&rdquo; </code></p>
<p>
<h3>SAP Web Application Server</h3>
</p>
<p>O <i>SAP Web Application Server</i> faz parte da plataforma SAP NetWeaver. É um <i>middleware</i> utilizado para o desenvolvimento e execução de aplica&ccedil;&otilde;es web <i>server-side</i> e <i>client-side</i>. Estas aplica&ccedil;&otilde;es web pode conter desde código HTML est&aacute;ticos at&eacute; c&oacute;digos mais complexos, como c&oacute;digos din&acirc;micos (XHTML e JavaScript).</p>
<p>Outro exemplo de servidores de aplica&ccedil;&otilde;es web &eacute; o WebSphere AS, da IBM; WebLogic, da BEA Systems; Glasshfish, Apache, JBoss, etc.</p>
<p>Com o SAP WAS &eacute; poss&iacute;vel a implementa&ccedil;&atilde;o e execu&ccedil;&atilde;o de sistemas baseados em ABAP e JAVA. Os sistemas baseados em ABAP podem ser implementados por BSP (<i>Business Server Pages</i> &#8211; explicado no post anterior).<br />
	  J&aacute; os sistemas em Java podem ser implementados atrav&eacute;s de Servlets, JSP, JSPDynPages, etc.</p>
<p>Resumidamente, o SAP Web AS funciona da seguinte forma:</p>
<p>O usu&aacute;rio, atrav&eacute;s do web browser, envia uma solicita&ccedil;&atilde;o ao servidor: Efetuar uma busca por fornecedor, por exemplo:</p>
<ul>
<li>A solicita&ccedil;&atilde;o &eacute; recebida pelo componente ICM <i>(Internet Communication Manager) server</i>, j&aacute; dentro do servidor de aplica&ccedil;&atilde;o.</li>
<li>Posteriormente, dependendo do tipo de solicita&ccedil;&atilde;o (Abap ou Java) o ICM envia para o <i>dispatcher</i> correspondente.</li>
<li>Dentro da <i>engine</i> dos sistemas (ABAP ou Java), o mesmo executa os <i>work processes</i> necess&aacute;rios, realizando a consulta no banco de dados, se for o caso, envia informa&ccedil;&otilde;es ao servidor de mensagens.</li>
<li>Ao final do processamento, a <i>engine</i> devolve a resposta ao usu&aacute;rio (dados de exibi&ccedil;&atilde;o).</li>
</ul>
<p>
<h3>SAP Blue Ruby Virtual Machine</h3>
</p>
<p>O projeto Blue Ruby est&aacute; sendo implementado como uma <strong>extens&atilde;o da m&aacute;quina virtual ABAP</strong>. O <i>runtime</i> e as bibliotecas da m&aacute;quina virtual Blue Ruby est&atilde;o sendo, tamb&eacute;m, implementadas em ABAP para que haja compatibilidade dos aplicativos implementados em Ruby com o ambiente ABAP.</p>
<p>Blue Ruby é uma evolu&ccedil;&atilde;o organizada, onde &eacute; executada dentro do SAP n&atilde;o necessitando a utiliza&ccedil;&atilde;o de qualquer tipo de servidor adicional e possibilita a implementa&ccedil;&atilde;o de DSLs <i>(Domain Specific Languages)</i>.</p>
<p>Segundo os autores do projeto, o objetivo &eacute; dar ao desenvolvedor uma flexibilidade maior na constru&ccedil;&atilde;o de aplica&ccedil;&otilde;es e extens&otilde;es. As aplica&ccedil;&otilde;es em Ruby podem se comunicar com os programas em ABAP e vice-versa, isto &eacute;, programas em Ruby podem compartilhar informa&ccedil;&otilde;es com c&oacute;digos ABAP realizando <strong>chamadas nativas</strong> aos m&oacute;dulos de fun&ccedil;&otilde;es, BAPIs, Servi&ccedil;os, RFCs, etc. O mesmo deve acontecer no sentido oposto, onde programas ABAP podem ser capazes de realizar chamadas &agrave;s classes e m&eacute;todos Ruby. Outro desafio para a equipe desenvolvimento é estabelecer a comunica&ccedil;&atilde;o entre as linguagens com o m&iacute;nimo de <i>overhead</i>.</p>
<p>Ainda segundo eles, as aplica&ccedil;&otilde;es de miss&atilde;o cr&iacute;tica dentro do SAP continuar&atilde;o a ser implementadas em Java e ABAP, deixando o Blue Ruby como um recurso complementar.</p>
<p>Para executar um c&oacute;digo Ruby dentro do ambiente SAP, o c&oacute;digo primeiramente &eacute; compilado para uma linguagem intermedi&aacute;ria chamada BRIL <i>(Blue Ruby Intermediate Language)</i>. Esta convers&atilde;o é realizada toda vez em que uma aplica&ccedil;&atilde;o Ruby &eacute; gravada dentro da Blue Ruby VM; isto acontece para minimizar o impacto na performance em tempo de execu&ccedil;&atilde;o.</p>
<p>Para facilitar o entendimento deste conceito (BRIL), pode-se fazer uma compara&ccedil;&atilde;o com a linguagem Java, onde o c&oacute;digo Java &eacute; convertido em <i>bytecode</i> dentro da JVM para ser executado.</p>
<p>Compara&ccedil;&atilde;o entre os c&oacute;digos em Ruby e Bril:</p>
<div id="attachment_67" class="wp-caption aligncenter" style="width: 510px"><img src="http://progressiveinfo.files.wordpress.com/2009/09/ruby2bril2.png?w=450" alt="Ap&oacute;s a grava&ccedil;&atilde;o do c&oacute;digo Ruby na &lt;strong&gt;Blue Ruby VM&lt;/strong&gt;, o sistema converte o mesmo para c&oacute;igo &lt;strong&gt;BRIL&lt;/strong&gt; e o armazena no &lt;strong&gt;Blue Ruby File System&lt;/strong&gt;." title="Ruby2Bril"   class="size-full wp-image-67" /><p class="wp-caption-text">Ap&oacute;s a grava&ccedil;&atilde;o do c&oacute;digo Ruby na <strong>Blue Ruby VM</strong>, o sistema converte o mesmo para c&oacute;digo <strong>BRIL</strong> e o armazena no <strong><i>Blue Ruby File System</i></strong>.</p></div>
<p>Embora a proposta do projeto seja a integra&ccedil;&atilde;o 2 dois ambientes de programa&ccedil;&atilde;o. Um filtro e/ou permissão de acesso está sendo desenvolvido neste sentido.</p>
<p>Com o objetivo de dar flexibilidade ao desenvolvedor e ao mesmo tempo manter a consist&ecirc;ncia e integridade dos dados e do ambientes, a equipe de desenvolvedores estabelecer7aacute; algumas &lrquo;regras&rdquo; para a comunicação Ruby -&gt; ABAP. A comunicação entre Ruby e ABAP &eacute; feita por um t&uacute;nel bem definido chamado de pontes (&ldquo;bridges&rdquo;). Atrav&eacute;s desta ponte, programas em Ruby poder&atilde;o fazer uso de dados gerenciados por aplica&ccedil;&otilde;es em ABAP, <strong>mas n&atilde;o ser&aacute; permitida a atualiza&ccedil;&atilde;o de dados no banco atrav&eacute;s da linguagem, diretamente</strong>; evitando a possibilidade de c&oacute;digos Ruby maliciosos contornarem as autentica&ccedil;&otilde;es em ABAP do sistema.
<p>As chamadas de interfaces, classes, m&eacute;todos e atributos atrav&eacut;s de um programa ABAP &eacute; poss&iacute;vel atrav&eacute;s de <strong>BAdIs <i>Bridges</i></strong>.</p>
<p>Exemplo de programa Ruby chamando a Bapi de consulta ao endere&ccedil;o do parceiro de neg&oacute;cio &ldquo;BAPI_BUPA_ADDRESS_GETDETAIL&rdquo;:</p>
<p><code><br />
      <strong>Require</strong> ‘rfc’<br />
	  Bapi = rfc.<strong>new</strong> ‘BAPI_BUPA_ADDRESS_GETDETAIL’</kbd><br />
	  Bapi.businesspartner = ‘0000000001’<br />
	  Bapi.<strong>call!</strong><br />
	  <strong>puts</strong> bapi.addressdata.c_o_name<br />
	  <strong>puts</strong> bapi.addressdata.city<br />
	  <strong>puts</strong> bapi.addressdata.district<br />
	  <strong>puts</strong> bapi.addressdata.street<br />
	  <strong>puts</strong> bapi.addressdata.str_abbr<br />
	  <strong>puts</strong> bapi.addressdata.house_no<br />
	  . . .<br />
      </code></p>
<p>
<h3>Status do projeto</h3>
</p>
<p>De acordo com o site do projeto, pode-se perceber que o status do projeto, com a data de atualiza&ccedil;&atilde;o mais recente em 20/julho/2009:</p>
<ul>
<li>665 de 743 das especifica&ccedil;&otilde;es da linguagem (89.5%) &#8211; <i>Object, Class, Module, Block, Proc,</i> &#8230;</li>
<li>3031 de 4152 da especifica&ccedil;&atilde;o da biblioteca (73.0%) &#8211; <i>String, Fixnum, Array, Hash, Regexp,</i> &#8230;</li>
<li><strong>3696 de 4895 da especifica&ccedil;&atilde;o total (75.5%).</strong></li>
</ul>
<p>Vamos aguardar e testar este ambiente conforme o projeto vai evoluindo.<br />
         Vale lembrar que, por enquanto, o <i>framework</i> Rails e v&aacute;rios outros ficaram de fora.<br />
         SAP Blue Ruby, al&eacute;m de ser um projeto SAP, n&atilde;o &eacute; considerado <i>SAP Product</i>.<br />
         Para leitura complementar e estudos, segue os links de apresenta&ccedil;&otilde;es e artigos <a href="http://www.sdn.sap.com/irj/scn/elearn?rid=/library/uuid/901bedb0-5ff3-2b10-8494-a53d5dbf6302&amp;overridelayout=true" target="_blank">aqui</a>, <a href="http://www.sdn.sap.com/irj/scn/elearn?rid=/library/uuid/30166c0f-60f3-2b10-5cad-a7d6755afa66&amp;overridelayout=true" target="_blank">aqui</a>, <a href="http://fora.tv/2008/05/21/The_Ruby_Way_to_Talk_to_SAP_Business_Applications" target="_blank">aqui</a>, <a href="http://www.slideshare.net/schmerdy/blue-ruby-sdn-inside-track" target="_blank">aqui</a> e <a href="http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=%28J2EE3414700%29ID1969102750DB00464511989879676504End?blog=/pub/wlg/13661" target="_blank">aqui</a>.
     </p>
<p>At&eacute; a pr&oacute;xima&#8230;</p>
</div>
<br />Posted in Blue Ruby Tagged: Blue Ruby File System, Blue Ruby VM, BSP, Open ABAP, Ruby, Ruby on SAP, SAP Blue Ruby, SAP Research <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/progressiveinfo.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/progressiveinfo.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/progressiveinfo.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/progressiveinfo.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/progressiveinfo.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/progressiveinfo.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/progressiveinfo.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/progressiveinfo.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/progressiveinfo.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/progressiveinfo.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/progressiveinfo.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/progressiveinfo.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/progressiveinfo.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/progressiveinfo.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=progressiveinfo.wordpress.com&amp;blog=7094441&amp;post=57&amp;subd=progressiveinfo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://progressiveinfo.wordpress.com/2009/09/09/sap-blue-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dab44402c9df8c618a83c9101e5aeea0?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Carlos Henrique Martineli</media:title>
		</media:content>

		<media:content url="http://progressiveinfo.files.wordpress.com/2009/09/ruby2bril2.png" medium="image">
			<media:title type="html">Ruby2Bril</media:title>
		</media:content>
	</item>
		<item>
		<title>[Post-T&#233;cnico]: SAP CRM &#8211; Relacionando a data de cabe&#231;alho a partir da SLA do item.</title>
		<link>http://progressiveinfo.wordpress.com/2009/07/15/sap_crm_relacionando_sla_header_e_item/</link>
		<comments>http://progressiveinfo.wordpress.com/2009/07/15/sap_crm_relacionando_sla_header_e_item/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 06:07:06 +0000</pubDate>
		<dc:creator>Carlos Henrique Martineli</dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[BOL]]></category>
		<category><![CDATA[BSP]]></category>
		<category><![CDATA[Business Server Pages]]></category>
		<category><![CDATA[CRM_IC]]></category>
		<category><![CDATA[ICWC]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SLA]]></category>
		<category><![CDATA[WebClient]]></category>

		<guid isPermaLink="false">http://progressiveinfo.wordpress.com/?p=32</guid>
		<description><![CDATA[Atualizando a data de vencimento de um Service Ticket a partir da data do item. Ap&#243;s alguns meses ausente devido ao trabalho, volto ao meu blog tratando de um assunto n&#227;o muito comum no mercado SAP: IC WebClient. Confesso que n&#227;o tinha conhecimento sobre este framework at&#233;, claro, aparecer uma demanda para manuten&#231;&#227;o neste sistema. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=progressiveinfo.wordpress.com&amp;blog=7094441&amp;post=32&amp;subd=progressiveinfo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<br />
<h2>Atualizando a data de vencimento de um <i>Service Ticket</i> a partir da data do item.</h2>
<div align="justify">
<p>Ap&oacute;s alguns meses ausente devido ao trabalho, volto ao meu blog tratando de um assunto n&atilde;o muito comum no mercado SAP: <strong>IC WebClient</strong>.</p>
<p>Confesso que n&atilde;o tinha conhecimento sobre este <i>framework</i> at&eacute;, claro, aparecer uma demanda para manuten&ccedil;&atilde;o neste sistema. A principio, uma percepç&atilde;o da complexidade, posteriormente, a certeza! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bom, para iniciar, algumas coisas t&ecirc;m que estar claras para um melhor entendimento. SAP CRM 5.0, ICWC e BSP s&atilde;o os assuntos que trataremos aqui.</p>
<p><strong>SAP CRM</strong><br />
CRM  &#8211; <i>Customer Relationship Management</i> &#8211;  como o pr&oacute;prio nome sugere, CRM  é um sistema de gestão de relacionamento com o cliente. As &aacute;reas de atua&ccedil;&atilde;o deste sistema é voltado para maximizar a experi&ecirc;ncia e produtividade do cliente, atendendo as &aacute;reas de <i>service center, call center</i>, vendas, <i>marketing</i>, canais web, canais de parceiros, <i>suppliers</i>, etc. </p>
<p><strong>ICWC</strong><br />
<i>Interaction Center WebClient</i> &#8211; é uma aplicação <i>client-side</i> executada via web browser. Os dados transmitidos para o CRM WebClient s&atilde;o emitidos pelo SAP NetWeaver AS. O SAP NW <i>Application Server</i> possui dois ambientes: <strong>J2EE</strong> e <strong>ABAP</strong>; possui conex&otilde;es para diversos protocolos, como: SOAP/XML, HTTP/HTTPS, SMTP, RFC, etc.</p>
<p>A camada de UI (<i>user interface</i>) &eacute; baseada em BSP e para o AS realizar a comunica&ccedil;&atilde;o com o browser o mesmo possui um camada chamada <strong>ICM</strong> (<i>Internet Communication Manager</i>) que faz a interface (HTTP) entre o WebClient e o BSP runtime.<br />
A aplicação WebClient é divida em tr&ecirc;s camadas: <strong><i>Presentation Layer, Business Layer</i></strong> e <strong><i>Business Engine</i></strong>.</p>
<p>Na camada de apresentação se concentram os c&oacute;digos <strong>HTMLB</strong> e <strong>JavaScript</strong>.<br />
A camada de negócio consiste de duas sub-camadas: BOL (<i>Business Objet Layer</i>) e GenIL (<i>Generic Interaction Layer</i>). Na sub-camada BOL est&atilde;o concentradas os objetos de neg&oacute;cio, como: parceiro de neg&oacute;cio, ordens de servi&ccedil;o, ordens de venda, etc. GenIL &eacute; usada para a transfer&ecirc;ncia de informa&ccedil;&otilde;es (ou dar sustenta&ccedil;&atilde;o) entre a BOL e as APIs da camada de business engine.<br />
Na camada de <i>Business Engine</i> est&aacute; concentrada toda a base de dados, isto &eacute;, o SAP CRM .</p>
<div id="attachment_41" class="wp-caption aligncenter" style="width: 510px"><img src="http://progressiveinfo.files.wordpress.com/2009/07/ic_webclient.png?w=450" alt="Tela da inbox do IC WebClient" title="IC_WebClient"   class="size-full wp-image-41" /><p class="wp-caption-text">Tela da inbox do IC WebClient</p></div>
<p><strong>BSP</strong><br />
<i>Business Server Pages</i> &#8211; a grosso modo é uma mistura de código ABAP <i>Objects</i>, HTMLB (HTML-<i>Business</i>, se preferirem) e JavaScript. Atualmente, BSP implementa o <i>design pattern</i> MVC (<i>Model View Controller</i>).</p>
<p>Assim como o JSP (<i>Java ServerPages</i>), PHP e ASP (<i>Active ServerPages</i>); o BSP é uma aplicação <i>server-side</i> utilizada para o desenvolvimento de aplica&ccedil;&otilde;es para Web permitindo acesso ao conteúdo do servidor de aplica&ccedil;&atilde;o.</p>
<p><strong>O PROBLEMA</strong><br />
Para determinados perfis de usu&aacute;rio (como diretores, gerentes e presidente), sempre que a data de <abbr title="Service Level Agreement">SLA</abbr> do item de uma determinada ordem de serviço for alterada, a mesma deverá automaticamente ser refletida na data de SLA do cabe&ccedil;alho e, consequentemente, o flag de sinaliza&ccedil;&atilde;o da proximidade da data de vencimento dever&aacute; ser atualizado. Pois, atualmente, as datas de SLA do item est&atilde;o sendo alteradas, mas a mesma n&atilde;o &eacute; refletida no cabe&ccedil;alho (campo de vencimento).</p>
<p>A solu&ccedil;&atilde;o encontrada para este problema foi, primeiramente, criar uma <i>view</i> &quot;Z&quot; (qual ABAPer que nunca fez uma c&oacute;pia do <i>standard</i>? Rs! Neste caso, isto é <i>SAP recommendation</i>), no meu caso, <strong>ZSrvTHead</strong>.</p>
<div id="attachment_47" class="wp-caption aligncenter" style="width: 439px"><img src="http://progressiveinfo.files.wordpress.com/2009/07/view_srvthead.png?w=450" alt="&lt;i&gt;View&lt;/i&gt; ZSrvTHead" title="View_SrvTHead"   class="size-full wp-image-47" /><p class="wp-caption-text"><i>View</i> ZSrvTHead</p></div>
<div id="attachment_48" class="wp-caption aligncenter" style="width: 440px"><img src="http://progressiveinfo.files.wordpress.com/2009/07/view_srvtsla.png?w=450" alt="&lt;i&gt;View&lt;/i&gt; de SLA do item." title="View_SrvTSLA"   class="size-full wp-image-48" /><p class="wp-caption-text"><i>View</i> de SLA do item.</p></div>
<p>Depois de criados, é necessário criar os atributos necess&aacute;rios para carregar dentro do mesmo contexto as datas de item e cabe&ccedil;alho.<br />
Lembrando que os campos no CRM são do tipo timestamp.</p>
<p>Com os atributos e setters e getters criados, é necessário instanciarmos os objetos do cotrollers e models, como: <i><strong>CuCoBT, Collection Wrapper </strong></i>e<i><strong> BOL Entity</strong></i>.<br />
Isto ser&aacute; necessário para a implementa&ccedil;&atilde;o dos m&eacute;todos que ser&atilde;o respons&aacute;veis por buscar os dados do item dentro do contexto (<i>runtime</i>).</p>
<p>Em runtime temos acesso ao conte&uacute;do do cabe&ccedil;alho do service ticket, ent&atilde;o, para obtermos os dados do item será necessário a navega&ccedil;&atilde;o por entre os elementos BOL. Isto &eacute;, os dados do item est&atilde;o dentro do componente BTDate e, como temos acesso ao cabeçalho (BTAdminH), criar-se a navega&ccedil;&atilde;o da seguinte forma:</p>
<p>Usaremos o controler para executar o CuCoBT para termos acesso ao item (BTAdminI).</p>
<p>   <code> CuCoBT = ClassController-&gt;get_custom_controller( controller_id = 'CuCoBT' ). </code></p>
<p>Posteriormente, chegaremos até o BTDate:</p>
<p>   <code> BTAdminI -&gt; (rel) BTItemDatesSet -&gt; BTDatesSet -&gt; (rel) BTDatesAll -&gt; BTDate </code></p>
<p>Com o objeto BTDate localizado, basta buscar o campo timestamp do item.</p>
<p>Ap&oacute;s concluir os m&eacute;todos para buscar a data do item, ser&aacute; necess&aacute;rio programarmos os m&eacute;todos de atualiza&ccedil;&atilde;o da data/hora do cabe&ccedil;alho.</p>
<p>Para isso, usando a mesma linha de racioc&iacute;nio para navegarmos até o BTDate do item, devemos encontrar o objeto BTDate do cabe&ccedil;alho. </p>
<p><u>Dica</u>:</p>
<p>   <code> BTAdminH -&gt; (rel) BTHeaderDatesSet -&gt; BTDatesSet -&gt; (rel) BTDatesAll -&gt; BTDate </code></p>
<p>Mas, uma aviso importante, para alterarmos a data de vencimento &eacute; necess&aacute;rio localizar o BTDate cujo campo <strong>APPT_TYPE</strong> do registro seja igual a <strong>SRV_CUST_END</strong>, pois a tabela tamb&eacute;m possui registros com valores iguais a <strong>SRV_CUST_BEG, ORDERACTUAL</strong>, etc. Meu caso!</p>
<p>Ap&oacute;s localizar o BTDate correto, converter a nova data/hora em formato adequado, comparar com a data antiga e, caso sejam diferentes, atualiz&aacute;-la (&oacute;bvio). </p>
<p>   <code>object = entity_col-&gt;set_property( ‘TIMESTAMP_FIELD’ ).</code></p>
<p>Esta implementa&ccedil;&atilde; será feita para os campos FROM e TO do objeto BTDate.</p>
<p>Com os <i>getters/setters</i> implementados, temos que escolher o ponto onde o processo ser&aacute; iniciado.<br />
Ent&atilde;o, crie uma redefini&ccedil;&atilde;o do evento do bot&atilde;o da GRAVAR da view &quot;Z&quot;, <strong>EH_ONSAVE</strong>.</p>
<p>Instancie um objeto da classe do n&oacute; de contexto respons&aacute;vel pelos atributos e m&eacute;todos criados anteriormente. E, neste objeto foi carregado os dados do cabe&ccedil;alho (BTAdminH).</p>
<p>Depois de carregados os dados do cabe&ccedil;alho no objeto, chamar o m&eacute;todo <strong>GET</strong> do item do service ticket.<br />
Posteriormente, chamar o método <strong>SET</strong> para a atualização da data do cabeçalho.</p>
<p>Depois de atualizados os dados do cabe&ccedil;alho, chamar o método SAVE do controlador CuCoBT.</p>
<p>Fim do problema.</p>
<p>Espero ter ajudado seja na resolu&ccedil;&atilde;o do problema ou na agrega&ccedil;&atilde;o de conhecimento.</p>
<p>At&eacute; a pr&oacute;xima&#8230;</p>
</p></div>
<br />Posted in CRM Tagged: BOL, BSP, Business Server Pages, CRM, CRM_IC, ICWC, SAP, SLA, WebClient <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/progressiveinfo.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/progressiveinfo.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/progressiveinfo.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/progressiveinfo.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/progressiveinfo.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/progressiveinfo.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/progressiveinfo.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/progressiveinfo.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/progressiveinfo.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/progressiveinfo.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/progressiveinfo.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/progressiveinfo.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/progressiveinfo.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/progressiveinfo.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=progressiveinfo.wordpress.com&amp;blog=7094441&amp;post=32&amp;subd=progressiveinfo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://progressiveinfo.wordpress.com/2009/07/15/sap_crm_relacionando_sla_header_e_item/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dab44402c9df8c618a83c9101e5aeea0?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Carlos Henrique Martineli</media:title>
		</media:content>

		<media:content url="http://progressiveinfo.files.wordpress.com/2009/07/ic_webclient.png" medium="image">
			<media:title type="html">IC_WebClient</media:title>
		</media:content>

		<media:content url="http://progressiveinfo.files.wordpress.com/2009/07/view_srvthead.png" medium="image">
			<media:title type="html">View_SrvTHead</media:title>
		</media:content>

		<media:content url="http://progressiveinfo.files.wordpress.com/2009/07/view_srvtsla.png" medium="image">
			<media:title type="html">View_SrvTSLA</media:title>
		</media:content>
	</item>
		<item>
		<title>Semantic Intelligence</title>
		<link>http://progressiveinfo.wordpress.com/2009/03/30/semantic-intelligence/</link>
		<comments>http://progressiveinfo.wordpress.com/2009/03/30/semantic-intelligence/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 06:18:38 +0000</pubDate>
		<dc:creator>Carlos Henrique Martineli</dc:creator>
				<category><![CDATA[BW]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[Business Inteligence]]></category>
		<category><![CDATA[Inteligência semântica]]></category>
		<category><![CDATA[Semantic Intelligence]]></category>

		<guid isPermaLink="false">http://progressiveinfo.wordpress.com/?p=16</guid>
		<description><![CDATA[É o meu primeiro post em meu blog. Espero que releve minha informalidade e falhas gramaticais, pois eu não sou referência alguma neste quesito. No entanto, espero que seja uma leitura agradável a todos neste e nos posts subsequentes. Inicio este blog com um assunto talvez pouco comum, embora importante, para o mercado: Semantic Intelligence. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=progressiveinfo.wordpress.com&amp;blog=7094441&amp;post=16&amp;subd=progressiveinfo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div align="justify">
<p>É o meu primeiro post em meu blog. Espero que releve minha informalidade e falhas gramaticais, pois eu não sou referência alguma neste quesito. No entanto, espero que seja uma leitura agradável a todos neste e nos posts subsequentes.</p>
<p>Inicio este blog com um assunto talvez pouco comum, embora importante, para o mercado: <strong><em>Semantic Intelligence</em></strong>.</p>
<p>O que vem a ser isto? Bom, primeiramente vou contar um pouco de história sobre o BI para entendermos melhor o assunto.</p>
<p><strong>Business Intelligence (BI)</strong></p>
<p><em>Business Intelligence</em><a href="http://en.wikipedia.org/wiki/Business_intelligence">[1]</a> ou inteligência de negócios consiste, basicamente, na coleta de informações sobre o negócio de uma empresa. Refere-se às práticas, estratégias, aplicações, análise, gerenciamento e <em>skills</em> da empresa. É largamente utilizada como ferramenta para auxílio na tomada de decisões.</p>
<p>Algumas das características do BI é buscar as fontes de informações relevantes, fazendo análises e cruzamentos de informações de múltiplas fontes baseado no tempo estimado e objetivo da empresa. Através das informações coletadas é possivel calcular estatísticas e outras informações úteis para auxiliar a atingir metas.</p>
<p>Um exemplo de estudos realizados com o BI pode ser ilustrado da seguinte forma: uma empresa de televisores, interessada em maximizar as vendas de sua marca em uma cidade ou região, efetua várias análises, baseada em informações em seu sistema, sobre seus consumidores, como: faixa etária, condição financeira, número de pessoas beneficiadas com o produto; fornecedores, pontos de venda e, utilizando sistemas com informaçoes sobre referências geográfica, pode ser feito o cruzamentos dessas e outras fontes de informação para que sejam estudados as formas de serem realizados melhores investimentos em regiões com menor vendagem.</p>
<p><strong> E a inteligência semântica, aonde entra na história?</strong></p>
<p>Como podemos perceber, o <em>Business Intelligence</em> está voltado para as informações contidas dentro dos <em>firewalls</em> e <em>servers</em> das empresas. Atualmente, a velocidade com que são transmitidas as informações aos quatros cantos do planeta, as empresas ainda pensam no uso do BI somente para as “informações internas”, descartando as informações desestruturadas provenientes de artigos, blogs, jornais, satisfação dos consumidores, <em>social network</em>, <em>twitter</em>, etc.</p>
<p>Materializando o conceito <strong>Web 2.0</strong> dentro das organizações é possivel realizar cruzamentos de informações de dados internos e externos (porque não fornecedor e consumidor) à empresa, resultando em uma base mais consistente e abrangente sobre um determinado assunto ou objetivo.</p>
<p>A proposta da <em>semantic intelligence</em><a href="http://web2.sys-con.com/node/892846">[2]</a> é criar, modelar toda uma estrutura de busca, filtros e análises de dados para que haja o bom gerenciamento dessas informações desestruturadas, checando-as e “formatando-as” para que seja possivel a utilização uniforme com as já existentes dentro das empresas.</p>
<p>Com isso, o planejamento estratégico de propaganda ou tendência de consumo, por exemplo, pode ser analisado de uma forma mais eficaz e abrangente.</p>
<p>Até a próxima&#8230;</p>
</div>
<br />Posted in BW Tagged: BI, Business Inteligence, BW, Inteligência semântica, Semantic Intelligence <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/progressiveinfo.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/progressiveinfo.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/progressiveinfo.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/progressiveinfo.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/progressiveinfo.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/progressiveinfo.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/progressiveinfo.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/progressiveinfo.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/progressiveinfo.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/progressiveinfo.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/progressiveinfo.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/progressiveinfo.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/progressiveinfo.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/progressiveinfo.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=progressiveinfo.wordpress.com&amp;blog=7094441&amp;post=16&amp;subd=progressiveinfo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://progressiveinfo.wordpress.com/2009/03/30/semantic-intelligence/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dab44402c9df8c618a83c9101e5aeea0?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Carlos Henrique Martineli</media:title>
		</media:content>
	</item>
	</channel>
</rss>
