Apresentando a app EGSAP_TECH
Já conheces a app EGSAP_TECH? É um repositório de informação SAP.
Aqui fica uma descrição delan nas palavas dos próprios criadores:
Já conheces a app EGSAP_TECH? É um repositório de informação SAP.
Aqui fica uma descrição delan nas palavas dos próprios criadores:
O Abapinho recebeu uma carta.
Sr Abapinho,
Todos sabemos como colocar valores por defeito em select options usando o comando DEFAULT. O que nem toda a gente sabe é que podemos também definir por defeito a opção e o sinal e mesmo o botão para restingir o select options.
Hoje vou ensinar-te a encadear excepções. É uma solução muito práctica para um problema complicado mas pouco óbvio.
Começo por descrever o problema.
Imagina que estás na aplicação BANANA. É uma aplicação bastante complexa. Tem, aliás, três módulos. São eles BANANA1, BANANA2 e BANANA3. Cada um tem a sua classe de excepção ZCX_BANANA1, ZCX_BANANA2 e ZCX_BANANA3. E como a aplicação até está bem desenhada, todas as classes de excepção herdam da mesma ZCX_BANANA. Agora imagina o seguinte cenário. Estás no módulo BANANA1 a fazer não sei o quê. E lá tens de chamar uma classe do módulo MORANGO Ora essa classe lança, claro, excepções, do tipo ZCX_MORANGO. Este é o contexto.
Tens várias hipóteses:
Quando chamas um módulo de função que devolve excepções normalmente dás-lhes números sequenciais tipo isto:
CALL FUNCTION 'VAI_ALI_MAS_VOLTA'
EXPORTING
ali = 'Barreiro'
EXCEPTIONS
NOT_FOUND = 1
GOT_LOST = 2
OTHERS = 3.Mas se a seguir não tiveres o cuidado de ter um IF ou um CASE a olharem para o SY-SUBRC o Code Inspector pode devolve-te um erro caso esteja configurado para tal.
Nas classes, considera usar classes de excepção tipificadas em vez das excepções antigas. As novas têm imensas vantagens e, uma vez compreendidas, permitem produzir um código mais simples e robusto. https://zevolving.com/2011/12/class-based-exception/
Em programas, em vez de WRITE TEXT-001, usa WRITE ‘bla bla bla’(001). Assim, terás sempre um texto por defeito e além disso o programa será mais legível. https://abapinho.com/en/2011/11/programas-poliglotas/
As classes SALV são mais versáteis e sofisticadas do que os antigos módulos de função. Portanto, para ALVs novas, usa sempre a SALV. Excepção feita para ALVs que precisem de editar os dados pois nesse caso as SALV ainda são muito pouco capazes. https://scn.sap.com/docs/DOC-10365 https://scn.sap.com/docs/DOC-10366
Temos duas variáveis:
DATA palavra1 TYPE string.
DATA palavra2 TYPE string.
DATA: frase TYPE string.
palavra1 = ‘isto’.
palavra2 = ‘aquilo’.E queremos concatená-las metendo entre elas a palavra ‘mais’ e, claro, separando-as por espaços.
Na mitologia grega a forma de comunicação mais frequentemente utilizada pelos deuses para comunicar com os mortais era o estupro. Estupravam por dá cá aquela palha.
O mais parecido que temos com estupro no ABAP é o comando SUBMIT, que é também a forma mais comum de comunicação entre dois programas.
O editor de ABAP tem coisas que não lembram ao diabo. Até dá para escrever ao mesmo tempo em várias linhas.
Não está.
Mas eles - os senhores que fazem e refazem o ABAP propriamente dito - vão tentando remediar a situação.
Olha por exemplo esta nova funcionalidade.
Sabias que podes fazer LOOP de uma tabela interna com uma estrutura A para dentro de uma estrutura do tipo B?
Uma vez que as operações de dados estão muito mais optimizadas no servidor de base de dados do que no ABAP, é sempre preferível o primeiro. FOR ALL ENTRIES só deve ser usado quando não se conseguir fazer INNER JOIN (como com a BSEG por exemplo). Quando possível, usar RANGES artificiais é preferível a usar FOR ALL ENTRIES mas é preciso cuidado para não ultrapassar o limite do parser de SQL.
É comum encontrar o comando CHECK em user-exits. A trágica consequência disto é que, se o CHECK falha, nenhum do código que se segue a esse CHECK será alcançado. Como é comum (ainda que má prática) que num user-exit sejam tratados vários assuntos diferentes, um CHECK relacionado com um assunto pode inibir o acesso aos assuntos seguintes. Uma forma simples de evitar este risco é, como sempre aconselho, encapsular o código em rotinas.