MII´rs estou disponibilizando o blog agora na versão mobile, veja a imagem abaixo:
Para abrir o Blog em seu aparelho segue QR-Code.
Abraços e até a próxima!
SAP MII - Transaction Hello World!!!
MII´rs esses dias estava navegando em um link que ensinava a escrever Hello World em diversas linguagens, veja abaixo:
http://helloworldsite.he.funpic.de/
Fiquei muito triste em não ver o tão famoso "Hello World!" escrito em SAP MII! Existem concursos na WEB para ver quem escreve o tão famoso Hello World! de maneira mais complicada e pensando nisto resolvi criar uma transaction complicando um pouco, segue imagem e fonte para download abaixo:
Para abaixar o arquivo segue link: http://www.danilosantos.eti.br/TrxHelloWorld.zip
Fica a dica para descontrair e o aprendizado de Transaction para aprimorar os conhecimentos técnicos, fiquem a vontade para contribuirem, caso alguém possua alguma versão mais complicada por favor enviem que eu irei postar.
Abraços e até a próxima!!!!
http://helloworldsite.he.funpic.de/
Fiquei muito triste em não ver o tão famoso "Hello World!" escrito em SAP MII! Existem concursos na WEB para ver quem escreve o tão famoso Hello World! de maneira mais complicada e pensando nisto resolvi criar uma transaction complicando um pouco, segue imagem e fonte para download abaixo:
Para abaixar o arquivo segue link: http://www.danilosantos.eti.br/TrxHelloWorld.zip
Fica a dica para descontrair e o aprendizado de Transaction para aprimorar os conhecimentos técnicos, fiquem a vontade para contribuirem, caso alguém possua alguma versão mais complicada por favor enviem que eu irei postar.
Abraços e até a próxima!!!!
Trabalhando com a variável do tipo lista
No post de hoje vou mostrar como trabalhar com uma variável do tipo "list". Este e outros tipos de variáveis foram adicionados na versão 12.1 do SAP MII.
Primeiro criamos uma variável local chamada "Modulo" do tipo "list":
Em seguida vamos popular a variável com os seguintes elementos:
Portanto a nossa variável Modulo está com os seguintes elementos:
Assim como a inclusão de novos tipos de variável, na versão SAP MII 12.1 foram agregadas mais funções ao Link Editor para trabalhar com esses tipos. Abaixo vamos listar as funções que tratam o tipo "list", o qual estamos usando:
append [ append(list, value1,...) ]
Acrescenta novos elementos ao fim da lista.
Ex.:
Comando: append(Local.Modulo,"SAP MII", "SAP BO")
Resultado: [0:SAP CO] [1:SAP MM] [2:SAP PM] [3:SAP PP] [4:SAP BO]
emptylist [ emptylist ]
Remove todos os elementos da lista.
find [ find(list, value) ]
Verifica se existe o elemento na lista. Retorna a posição em que o elemento se encontra.
Ex.:
Comando: find(Local.Modulo,"SAP PM")
Resultado: 2
first [ first(list) ]
Retorna o primeiro elemento da lista.
Ex.:
Comando: first(Local.Modulo)
Resultado: SAP CO
insert [ insert(list,location,value) ]
Insere um elemento na lista e na posição informada deslocando os demais posteriores.
Ex.:
Comando: insert(Local.Modulo, 3, "SAP QM")
Resultado: [0:SAP CO] [1:SAP MM] [2:SAP PM] [3:SAP QM] [4:SAP PP]
last [ last(list) ]
Retorna o último elemento da lista.
Ex.:
Comando: last(Local.Modulo)
Resultado: SAP PP
list [ list(value1, ...) ]
Cria uma lista com os elementos informados.
liststomap [ liststomap(namelist, valuelist) ]
Transforma uma lista em uma variável do tipo "map".
remove [ remove(collection, value) ]
Remove o elemento na posição informada.
Ex.:
Comando: remove(Local.Modulo, 1)
Resultado: [0:SAP CO] [1:SAP MM] [1:SAP PM] [2:SAP PP]
set [ set(list, index, value) ]
Altera o elemento da posição informada pelo novo valor.
Ex.:
Comando: set(Local.Modulo, 0, "SAP MII")
Resultado: [0:SAP MII] [1:SAP MM] [2:SAP PM] [3:SAP PP]
size [ size(collection) ]
Retorna o número de elementos da lista.
Ex.:
Comando: size(Local.Modulo)
Resultado: 4
sort [ sort(list) ]
Ordena (ASC) os elementos da lista.
Com estas funções você poderá trabalhar com suas variáveis do tipo "list".
É possível saber o valor de um determinado elemento da lista usando o seguinte comando:
Origem da variável lista: http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html
Diferenças entre "list" e "map" é que na variável "list" é possivel ter registros duplicados enquanto na variável "map" não.
Primeiro criamos uma variável local chamada "Modulo" do tipo "list":
Em seguida vamos popular a variável com os seguintes elementos:
- SAP CO
- SAP FI
- SAP MM
- SAP PM
- SAP PP
Portanto a nossa variável Modulo está com os seguintes elementos:
[0:SAP CO] [1:SAP MM] [2:SAP PM] [3:SAP PP]
Assim como a inclusão de novos tipos de variável, na versão SAP MII 12.1 foram agregadas mais funções ao Link Editor para trabalhar com esses tipos. Abaixo vamos listar as funções que tratam o tipo "list", o qual estamos usando:
append [ append(list, value1,...) ]
Acrescenta novos elementos ao fim da lista.
Ex.:
Comando: append(Local.Modulo,"SAP MII", "SAP BO")
Resultado: [0:SAP CO] [1:SAP MM] [2:SAP PM] [3:SAP PP] [4:SAP BO]
emptylist [ emptylist ]
Remove todos os elementos da lista.
find [ find(list, value) ]
Verifica se existe o elemento na lista. Retorna a posição em que o elemento se encontra.
Ex.:
Comando: find(Local.Modulo,"SAP PM")
Resultado: 2
first [ first(list) ]
Retorna o primeiro elemento da lista.
Ex.:
Comando: first(Local.Modulo)
Resultado: SAP CO
insert [ insert(list,location,value) ]
Insere um elemento na lista e na posição informada deslocando os demais posteriores.
Ex.:
Comando: insert(Local.Modulo, 3, "SAP QM")
Resultado: [0:SAP CO] [1:SAP MM] [2:SAP PM] [3:SAP QM] [4:SAP PP]
last [ last(list) ]
Retorna o último elemento da lista.
Ex.:
Comando: last(Local.Modulo)
Resultado: SAP PP
list [ list(value1, ...) ]
Cria uma lista com os elementos informados.
liststomap [ liststomap(namelist, valuelist) ]
Transforma uma lista em uma variável do tipo "map".
remove [ remove(collection, value) ]
Remove o elemento na posição informada.
Ex.:
Comando: remove(Local.Modulo, 1)
Resultado: [0:SAP CO] [1:SAP MM] [1:SAP PM] [2:SAP PP]
set [ set(list, index, value) ]
Altera o elemento da posição informada pelo novo valor.
Ex.:
Comando: set(Local.Modulo, 0, "SAP MII")
Resultado: [0:SAP MII] [1:SAP MM] [2:SAP PM] [3:SAP PP]
size [ size(collection) ]
Retorna o número de elementos da lista.
Ex.:
Comando: size(Local.Modulo)
Resultado: 4
sort [ sort(list) ]
Ordena (ASC) os elementos da lista.
Com estas funções você poderá trabalhar com suas variáveis do tipo "list".
DICA
É possível saber o valor de um determinado elemento da lista usando o seguinte comando:
List{index}
Ou seja, se quisermos saber o valor do segundo elemento da nossa variável do tipo lista "Modulo" bastaria informar o seguinte comando:
Local.Modulo{1}
Usamos o número 1 para buscar o segundo valor porque a lista sempre é iniciada pelo índice 0.
Diferenças entre "list" e "map" é que na variável "list" é possivel ter registros duplicados enquanto na variável "map" não.
Lista de cursos disponíveis sobre SAP MII
Segue lista de cursos disponíveis na SAP sobre a ferramenta SAP MII.
Fica a dica de cursos básicos sobre a ferramenta. O único treinamento ministrado no Brasil atualmente é o SCM380.
Já fui instrutor do treinamento SCM380 e ministro Workshop sobre a ferramenta SAP MII, caso alguém tiver interesse em alguma das opções entrar em contato direto comigo através do Blog ou E-mail msn@danilosantos.eti.br
Fica a dica de cursos básicos sobre a ferramenta. O único treinamento ministrado no Brasil atualmente é o SCM380.
Já fui instrutor do treinamento SCM380 e ministro Workshop sobre a ferramenta SAP MII, caso alguém tiver interesse em alguma das opções entrar em contato direto comigo através do Blog ou E-mail msn@danilosantos.eti.br
Configurando o Dreamweaver para editar arquivos IRPT
O Post de hoje é simples porém de grande utilidade para desenvolvedores SAP MII. Como configurar o Dreamweaver para editar arquivos do tipo IRPT?
O Help da ferramenta nas versões 12.0 e 12.1 não ensinam como fazer esta configuração dentro do Dreamweaver, porém o Help da antiga versão 11.5 ensina como fazer passo a passo.
http://help.sap.com/saphelp_xmii115/helpdata/en/popups/DreamweaverPopup.htm
Fica a dica e até a próxima pessoal.
O Help da ferramenta nas versões 12.0 e 12.1 não ensinam como fazer esta configuração dentro do Dreamweaver, porém o Help da antiga versão 11.5 ensina como fazer passo a passo.
http://help.sap.com/saphelp_xmii115/helpdata/en/popups/DreamweaverPopup.htm
Fica a dica e até a próxima pessoal.
SAP Forum 2011 - TEMPO DE FAZER MELHOR - Inscrições abertas
Hoje irei comentar sobre um dos eventos que acontece todos os anos aqui em São Paulo o famoso SAP Forum - o maior evento de negócios e tecnologia da América Latina que irá acontecer este ano nos dias 22-24 de Março.
Apesar de ser ainda cedo para pensar, vale a pena já ir preparando a sua agenda e participar das palestras que abordam diversos assuntos, a agenda pode ser conferida atráves do link abaixo:
http://www.sap.com/brazil/about/eventos/sapforum2011/agenda_at_glance.epx#premium
Como faço para participar?
Segue 2 opções:
1- Fazendo a inscrição no site, segue valores e link:
http://www.sap.com.br/sapforum2011/inscricoes/registro_dados.php
2- Falar com alguém da área de eventos da empresa onde você trabalha e verificar se não é possível colocar seu nome na lista para entrar sem pagar absolutamente nada. Geralmente a SAP libera um número limitado de participantes para alguns clientes e parceiros.
Fica a dica do evento e nos ultimos 3 anos (ou mais) sempre existe uma ou duas empresas apresentando soluções e cases desenvolvidos utilizando a ferramenta SAP MII, vale a pena participar, esclarecer dúvidas, etc.....
Site do Evento:
http://www.sap.com/brazil/about/eventos/sapforum2011/index.epx
Local:
Centro de Convenções WTC
Avenida das Nações Unidas, 12.559
CEP 04795-901 – Brooklin Novo – São Paulo, SP
(11) 3055-8000 | 3055-8001 (fax)
Abraços e até a próxima.
Apesar de ser ainda cedo para pensar, vale a pena já ir preparando a sua agenda e participar das palestras que abordam diversos assuntos, a agenda pode ser conferida atráves do link abaixo:
http://www.sap.com/brazil/about/eventos/sapforum2011/agenda_at_glance.epx#premium
Como faço para participar?
Segue 2 opções:
1- Fazendo a inscrição no site, segue valores e link:
http://www.sap.com.br/sapforum2011/inscricoes/registro_dados.php
2- Falar com alguém da área de eventos da empresa onde você trabalha e verificar se não é possível colocar seu nome na lista para entrar sem pagar absolutamente nada. Geralmente a SAP libera um número limitado de participantes para alguns clientes e parceiros.
Fica a dica do evento e nos ultimos 3 anos (ou mais) sempre existe uma ou duas empresas apresentando soluções e cases desenvolvidos utilizando a ferramenta SAP MII, vale a pena participar, esclarecer dúvidas, etc.....
Site do Evento:
http://www.sap.com/brazil/about/eventos/sapforum2011/index.epx
Local:
Centro de Convenções WTC
Avenida das Nações Unidas, 12.559
CEP 04795-901 – Brooklin Novo – São Paulo, SP
(11) 3055-8000 | 3055-8001 (fax)
Abraços e até a próxima.
Exemplo de ComboBox utilizando Ajax e XML SAP MII
Hoje estarei demonstrando como criar um comboBox a partir de um XML do SAP MII utilizando Ajax, para quem ainda não conhece o que é Ajax recomendo a seguinte leitura antes de continuar:
http://www.w3schools.com/Ajax/Default.Asp
Iniciaremos com a criação do objeto para carregar o XML para dentro da nossa aplicação, eu particularmente recomendo deixar essa função dentro de um arquivo externo, isto para não ficar criando em todas as páginas, por exemplo:
Default.js
O próximo passo é criar um arquivo externo e adicionar o seguinte código, no meu caso o nome do arquivo é:
LoadComboOnPage.js
/*************************************************************************
@ Autor: Danilo Santos
@ Objetivo: Carregar combo a partir de um arquivo XML MII
**************************************************************************/
// Exemplo de chamada
// readData(<< path arquivo xml >>,
// << nome do objeto em tela >>,
// << se quiser carregar o combo com um valor já determinado >>,
// << exibir linha -- select -- {true or false}>>); // Exemplo: readData("XMII/Illuminator?QueryTemplate=ABCD%2FTeste%2FTesteComboQuery&Content-Type=text%2Fxml",document.frmnome.selectTeste, "20", true);
// *****************************************************************************************************************************
var XMLObj;
var SourceUrlXML;
var ComboxOBJ;
var DefaultValue;
var Queue = new Array();
var QueueIndex = 0;
var FirstLine = true;
function initObj(){
XMLObj = createXMLHttpRequest();
if(XMLObj == null){
alert(Mensagem[1]);
}else{
XMLObj.onreadystatechange = function ()
{
switch(XMLObj.readyState)
{
case 1:
loading();
break;
case 4:
onReadData();
break;
}
};
}
}
function readData(urlXML,objComboBox,valueDefault,firstLine){
SourceUrlXML = urlServer+urlXML;
Queue[Queue.length] = new Array(SourceUrlXML, objComboBox, valueDefault, firstLine);
if (XMLObj.readyState == 0){
goAhead(0);
}
}
function goAhead(Idx){
ComboxOBJ = eval('document.'+eval(Queue[Idx][1]).form.name+'.'+eval(Queue[Idx][1]).name);
DefaultValue = Queue[Idx][2];
FirstLine = Queue[Idx][3];
try{
XMLObj.open("GET",Queue[Idx][0],true);
XMLObj.send(null);
}finally{
return false;
}
}
function loading(){
ComboxOBJ.options.length = 0;
ComboxOBJ.options[0] = new Option("","");
}
function onReadData(){
ComboxOBJ.options.length = 0;
if(FirstLine == true){
ComboxOBJ.options[0] = new Option("-- Select --","");
}
var XMLDoc = XMLObj.responseXML;
var Row = XMLDoc.getElementsByTagName('Row');
for(i=0; i
var Data = new Array();
for(j=0; j|
Data[Data.length] = Row[i].childNodes[j].firstChild.nodeValue;
}
ComboxOBJ.options[ComboxOBJ.options.length] = new Option(Data[1],Data[0]);
}
if(DefaultValue == undefined){
DefaultValue = "";
}
ComboxOBJ.value = DefaultValue;
if (Queue.length > QueueIndex+1){
goAhead(++QueueIndex);
}else{
Queue.length = 0;
QueueIndex = 0;
appLoadDiv(false);
}
}
initObj();
E para usar o combo dentro da sua página resta chamar a seguinte linha de código:
< script language="javascript" src="../Js/Default.js" type="text/javascript">
< script language="javascript" src="../Js/LoadComboOnPage.js" type="text/javascript">
function startPage(){
readData("XMII/Illuminator?QueryTemplate=ABCD%2FTeste%2FComboTesteQuery&Content-Type=text%2Fxml",document.frmnome.selectTeste, "20", true);
}
< body onload="startPage();">
< ?xml version="1.0" encoding="UTF-8"?>
< Rowsets DateCreated="2011-01-27T13:43:21" EndDate="2011-01-27T20:41:20" StartDate="2011-01-27T20:41:20" Version="12.0.4 Build(120)">
< Rowset>
< Columns>
< Column Description="" MaxRange="1" MinRange="0" Name="codigo" SQLDataType="1" SourceColumn="codigo"/>
< Column Description="" MaxRange="1" MinRange="0" Name="nome" SQLDataType="1" SourceColumn="nome"/>
< /Columns>
< Row>
< codigo>10
< nome>Monza
< /Row>
< Row>
< codigo>20
< nome>Verona
< /Row>
< /Rowset>
< /Rowsets>
Obs.: É importante o XML do SAP MII retornar apenas 2 nós dentro de Row, ou seja:
SELECT código, nome FROM carros;
Não é necessário ter o nome código ou nome, tendo 2 nós o script irá funcionar.
Eu utilizo o script em meus projetos e recomendo pois desta maneira diminuimos a quantidade de applets do tipo IBrowser em uma página web, este script funciona em Firefox e Internet Explorer, porém se funcionar em mais algum favor comentar.
Até a próxima.
http://www.w3schools.com/Ajax/Default.Asp
Iniciaremos com a criação do objeto para carregar o XML para dentro da nossa aplicação, eu particularmente recomendo deixar essa função dentro de um arquivo externo, isto para não ficar criando em todas as páginas, por exemplo:
Default.js
function createXMLHttpRequest(){
try{
return new XMLHttpRequest();
}catch(ee){
try{
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
return new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
alert(Mensagem[1]);
}
}
}
return null;
}
try{
return new XMLHttpRequest();
}catch(ee){
try{
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
return new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
alert(Mensagem[1]);
}
}
}
return null;
}
O próximo passo é criar um arquivo externo e adicionar o seguinte código, no meu caso o nome do arquivo é:
LoadComboOnPage.js
/*************************************************************************
@ Autor: Danilo Santos
@ Objetivo: Carregar combo a partir de um arquivo XML MII
**************************************************************************/
// Exemplo de chamada
// readData(<< path arquivo xml >>,
// << nome do objeto em tela >>,
// << se quiser carregar o combo com um valor já determinado >>,
// << exibir linha -- select -- {true or false}>>); // Exemplo: readData("XMII/Illuminator?QueryTemplate=ABCD%2FTeste%2FTesteComboQuery&Content-Type=text%2Fxml",document.frmnome.selectTeste, "20", true);
// *****************************************************************************************************************************
var XMLObj;
var SourceUrlXML;
var ComboxOBJ;
var DefaultValue;
var Queue = new Array();
var QueueIndex = 0;
var FirstLine = true;
function initObj(){
XMLObj = createXMLHttpRequest();
if(XMLObj == null){
alert(Mensagem[1]);
}else{
XMLObj.onreadystatechange = function ()
{
switch(XMLObj.readyState)
{
case 1:
loading();
break;
case 4:
onReadData();
break;
}
};
}
}
function readData(urlXML,objComboBox,valueDefault,firstLine){
SourceUrlXML = urlServer+urlXML;
Queue[Queue.length] = new Array(SourceUrlXML, objComboBox, valueDefault, firstLine);
if (XMLObj.readyState == 0){
goAhead(0);
}
}
function goAhead(Idx){
ComboxOBJ = eval('document.'+eval(Queue[Idx][1]).form.name+'.'+eval(Queue[Idx][1]).name);
DefaultValue = Queue[Idx][2];
FirstLine = Queue[Idx][3];
try{
XMLObj.open("GET",Queue[Idx][0],true);
XMLObj.send(null);
}finally{
return false;
}
}
function loading(){
ComboxOBJ.options.length = 0;
ComboxOBJ.options[0] = new Option("","");
}
function onReadData(){
ComboxOBJ.options.length = 0;
if(FirstLine == true){
ComboxOBJ.options[0] = new Option("-- Select --","");
}
var XMLDoc = XMLObj.responseXML;
var Row = XMLDoc.getElementsByTagName('Row');
for(i=0; i
var Data = new Array();
for(j=0; j
Data[Data.length] = Row[i].childNodes[j].firstChild.nodeValue;
}
ComboxOBJ.options[ComboxOBJ.options.length] = new Option(Data[1],Data[0]);
}
if(DefaultValue == undefined){
DefaultValue = "";
}
ComboxOBJ.value = DefaultValue;
if (Queue.length > QueueIndex+1){
goAhead(++QueueIndex);
}else{
Queue.length = 0;
QueueIndex = 0;
appLoadDiv(false);
}
}
initObj();
E para usar o combo dentro da sua página resta chamar a seguinte linha de código:
< script language="javascript" src="../Js/Default.js" type="text/javascript">
< script language="javascript" src="../Js/LoadComboOnPage.js" type="text/javascript">
function startPage(){
readData("XMII/Illuminator?QueryTemplate=ABCD%2FTeste%2FComboTesteQuery&Content-Type=text%2Fxml",document.frmnome.selectTeste, "20", true);
}
< body onload="startPage();">
Antes de utilizar o script é necessário criar o Query Template que retorne a seguinte estrutura:
< ?xml version="1.0" encoding="UTF-8"?>
< Rowsets DateCreated="2011-01-27T13:43:21" EndDate="2011-01-27T20:41:20" StartDate="2011-01-27T20:41:20" Version="12.0.4 Build(120)">
< Rowset>
< Columns>
< Column Description="" MaxRange="1" MinRange="0" Name="codigo" SQLDataType="1" SourceColumn="codigo"/>
< Column Description="" MaxRange="1" MinRange="0" Name="nome" SQLDataType="1" SourceColumn="nome"/>
< /Columns>
< Row>
< codigo>10
< nome>Monza
< /Row>
< Row>
< codigo>20
< nome>Verona
< /Row>
< /Rowset>
< /Rowsets>
Obs.: É importante o XML do SAP MII retornar apenas 2 nós dentro de Row, ou seja:
SELECT código, nome FROM carros;
Não é necessário ter o nome código ou nome, tendo 2 nós o script irá funcionar.
Eu utilizo o script em meus projetos e recomendo pois desta maneira diminuimos a quantidade de applets do tipo IBrowser em uma página web, este script funciona em Firefox e Internet Explorer, porém se funcionar em mais algum favor comentar.
Até a próxima.
Assinar:
Postagens (Atom)