Como fazer upload de arquivos com caracteres especiais usando SAPUI5 e SAP Gateway?Confira no link do post que fiz na SCN sobre o assunto.http://scn.sap.com/community/portuguese/technology/blog/2015/09/29/sapui5--upload-de-arquivos-slug-com-caracteres-especiaishttp://scn.sap.com/community/developer-center/front-end/blog/2015/12/22/sapui5--upload-file-slug-with-special-characters O SAP Inside Track e um evento mundial da SAP para troca de experiencias e conhecimento. Nao bastasse o fato de poder aprender muita coisa nova, o evento e de graca, basta inscrever-se no site: http://shar.es/1nG2eBNo evento deste ano que ocorrera no SAP Labs, em Sao Leopoldo/RS, teremos sessoes sobre SAP HANA (muita coisa de HANA!), SAPUI5, SAP HCM e Success Factors, SAP MES e Match Insights (o famoso sistema que a Selecao da Alemnha usa).O evento estara muito bom! Para quem nao puder comparecer, o evento sera transmitido ao vivo online pelo SAP Connect.Confira a agenda completa: http://scn.sap.com/docs/DOC-57267 Muitas vezes e necessario escrevermos codigos que leiam tabelas internas em sequencia, sendo necessario diversos LOOPs. O comum e utilizarmos uma estrutura encadeada de LOOP AT dentro de LOOP AT. Como no exemplo abaixo:REPORT zlooping.DATA: lt_bkpf TYPE STANDARD TABLE OF bkpf, lt_bseg TYPE STANDARD TABLE OF bseg, ls_bkpf TYPE bkpf, ls_bseg TYPE bseg."Looping cabecalhoLOOP AT lt_bkpf INTO ls_bkpf. "Looping item LOOP AT lt_bseg INTO ls_bseg WHERE bukrs = ls_bkpf-bukrs AND belnr = ls_bkpf-belnr AND gjahr = ls_bkpf-gjahr. "Faz alguma coisa "Faz outra coisa ENDLOOP.ENDLOOP.Ha algo errado no codigo acima? Nao absolutamente nada de errado. Ele ira fazer exatamente o que queremos fazer. Looping na BKPF seguido de looping na BSEG.Agora digamos que na BKPF tem 10 registros e na BSEG 100. Provavelmente nosso looping seria rapido o bastante para nao notarmos qualquer degradacao do desempenho. Porem, imaginamos agora que nossa BKPF tem 100 registros e nossa BSEG 1000. Muito provavelmente o programa ira demorar um bocado para ser executado, pois serao muitas iteracoes. O programa lera a BKPF 100 vezes e para cada iteracao na BKPF a BSEG sera lida 1000 vezes! Exatamente, a cada laco o programa sempre lera TODA a BSEG. Neste caso, 100.000 iteracoes na BSEG.Mas como podemos resolver esta questao de desempenho? De que forma podemos fazer uma sequencia de loopings sem usar o LOOP AT + WHERE?Abaixo segue uma forma de fazer com que seus loopings nao fiquem tao demorados:REPORT zlooping.DATA: lt_bkpf TYPE STANDARD TABLE OF bkpf, lt_bseg TYPE STANDARD TABLE OF bseg, ls_bkpf TYPE bkpf, ls_bseg TYPE bseg."Ordenar para BINARY SEARCHSORT: lt_bkpf BY bukrs belnr gjahr, lt_bseg BY bukrs belnr gjahr buzei."Looping cabecalhoLOOP AT lt_bkpf INTO ls_bkpf. "Pega indice do registro (sy-tabix) READ TABLE lt_bseg WITH KEY bukrs = ls_bkpf-bukrs belnr = ls_bkpf-belnr gjahr = ls_bkpf-gjahr TRANSPORTING NO FIELDS BINARY SEARCH. "Verifica se encontrou registro CHECK sy-subrc = 0. "Looping item LOOP AT lt_bseg INTO ls_bseg FROM sy-tabix. "Verifica se chave do registro mudou, se sim, sai do looping no item IF ls_bkpf-bukrs <> ls_bseg-bukrs OR ls_bkpf-belnr <> ls_bseg-belnr OR ls_bkpf-gjahr <> ls_bseg-gjahr. EXIT. ENDIF. "Faz alguma coisa "Faz outra coisa ENDLOOP.ENDLOOP.Basicamente a mudanca se da na utilizacao de indices para leitura da tabela interna. O grande segredo aqui e a utilizacao do SORT e do READ TABLE com BINARY SEARCH. Utilizar BINARY SEARCH significa que a leitura na tabela interna nao sera