<?if:OU_REGION2='SP'?> SE REGIÃO FOR SP VAI MOSTRAR ESSE TEXTO, CAMPOS, ETC <?end if?>
<?if: ITEM_ANTIGO != ''?> SE TEM ITEM ANTIGO ISSO VAI APARECER <?end if?>
Após várias tentativas, essa é a forma que se mostrou mais eficiente:
<?choose:?>
<?when:PROMISED_DATE!=''?> AQUI VAI TEXTO E CAMPOS <?end when?>
<?otherwise:?> SE O PROMISED_DATE FOR NULO, VAI VAI MOSTRAR ISSO <?end otherwise?>
<?end choose?>
<?xdoxslt:ifelse(substring(ITEM,1,4)='JOAO', 'JOAO DA SILVA', 'não é o joao')?>
<?if:CF_LPN_FLAG='Y'?>
<?split-by-page-break: ?>
<?end if?>
<?for-each:DEPT?>
...
...
...
<?split-by-page-break:?>
<?end for-each?>
Existem casos que não se pode alterar a query (principalmente em relatórios Core, onde o data definition não é um XML, e sim alguma rotina em java. Aí é possível formatar a data usando DECODE (este caso não importa se é ingles ou portugues)
<?xdofx:substr(PROMISED_DATE,1,2)?><?xdofx:decode(substr(PROMISED_DATE,4,3),'JAN','/01/','FEB','/02/','FEV','/02/','MAR','/03/'
,'APR','/04/','ABR','/04/','MAY','/05/','MAI','/05/','JUN','/06/','JUL','/07/','AUG','/08/','AGO','/08/','SEP','/09/','SET','/09/'
,'OCT','/10/','OUT','/10/','NOV','/11/','DEC','/12/','DEZ','/12/')?><?xdofx:substr(PROMISED_DATE,8,4)?>
O problema do header padrão do RTF/Word é que eles não aceitam uso de "campos". Em resumo, o código ocupa bastante espaço físico. Dai pode acontecer que o header fique até a metade da página! (e esse tamanho é fixo). Para solucionar o problema, não se usa o HEADER padrão do word. A gente coloca o cabeçalho na própria página e informa o Bi Publisher onde fica o header, o corpo e footer por essas tags especiais:
SEU_CABEÇALHO COMPLEXO AQUI
SEU_CABEÇALHO COMPLEXO AQUI
<?start:body?>
CORPO DO RELATÓRIO
CORPO DO RELATÓRIO
<?end body?>
FOOTER DO RELATORIO
<?body-start?>
<?body-end?>
1. Inicialize a variável "var" fora do grupo de repetição :
<?xdoxslt:set_variable($_XDOCTX,’var’,0)?>
2. Dentro do grupo, some o valor de um campo (neste caso, o LINE_AMOUNT). Como o campo vem formatado com vírgulas, ele retira e coloca ponto onde deve:
<?xdoxslt:set_variable($_XDOCTX,’var’,xdoxslt:get_variable($_XDOCTX,’var’)+ translate(translate(LINE_AMOUNT,'.',''),',','.'))?>
<? format-number: xdoxslt:get_variable($_XDOCTX,’var’); '999G999G999D99' ?>
Grupo de repetição com ordenação em 2 campos
<?for-each:LINE_LOCATIONS_ROW?>
<?sort:../../LINE_NUM;'ascending';data-type='number'?>
<?sort:PROMISED_DATE;'ascending';data-type='text'?>
Este exemplo está criando um Loop em Line_Locations_ROW e forçando a ordenação pelo LINE_NUM em 2 níveis anteriores E também no Promised_date.
Exportar cadastro do XML Publisher via FNDLOAD
Exemplo:
FNDLOAD apps/senha 0 Y DOWNLOAD $XDO_TOP/patch/115/import/xdotmpl.lct ~/thomas/seu_arq.ldt XDO_DS_DEFINITIONS APPLICATION_SHORT_NAME=XG DATA_SOURCE_CODE=XG_XML_AP_001
FNDLOAD user/pword@mydb 0 Y DOWNLOAD
$XDO_TOP/patch/115/import/xdotmpl.lct XMLPData.ldt XDO_DS_DEFINITIONS
APPLICATION_SHORT_NAME=AR DATA_SOURCE_CODE=ARXCOBLX
TMPL_APP_SHORT_NAME=AR
TEMPLATE_CODE=ARLETTER1
É possível fazer com que o relatório saia cada linha com uma cor, exemplo: Branco, cinza, branco, cinza, etc.
<?choose:?>
<?when:position() mod 2=0?>
<?attribute@incontext:background-color;'Yellow'?>
<?end when?>
<?otherwise:?>
<?attribute@incontext:background-color;'Red'?>
<?end otherwise?>
<?end choose?>
Manter zeros na esquerda quando a saída é excel
O Excel é tão esperto que quando ele vê um 00001, ele coloca 1. O problema é que as vezes a gente quer que apareça os zeros na frente. Pra fazer isso, basta utilizar o código abaixo: (e substituia o ITEM_NUMBER pelo seu campo com zeros)
<fo:bidi-override direction="ltr" unicode-bidi="bidi-override">
<?ITEM_NUMBER?>
</fo:bidi-override>
="<seu_campo_aqui>"
Formatar valores - dinheiro
Este comando formata a saída de valores em dinheiro, conforme a moeda.
https://blogs.oracle.com/xmlpublisher/e ... rrencies_1
<?format-currency:CAMPO_VALOR;CAMPO_CURRENCY_CODE;'false'?>
As vezes o XML Publisher apenas dá uma mensagem:
Nestes casos, a gente roda a seguinte query pra achar o arquivo contendo mais detalhes:Post-processing of request 39113073 failed at 14-MAR-2014 19:19:13 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.
SELECT fcpp.concurrent_request_id req_id, fcp.node_name, fcp.logfile_name
FROM fnd_conc_pp_actions fcpp, fnd_concurrent_processes fcp
WHERE fcpp.processor_id = fcp.concurrent_process_id
AND fcpp.action_type = 6
AND fcpp.concurrent_request_id = 39113073 -- this is the request id
Comparação XSLT e BI Publisher tags LINK: https://docs.oracle.com/cd/E12844_01/do ... 481158.htm