Adeus tabela BSEG, bem vinda tabela BSEG
Autor: Jocelio | Publicado: 2015-04-02T06:22:00-07:00


A Tabela BSEG, assim como a transação SPRO estão na boca de cada consultor SAP. Impossível não reconhecer e associar imediatamente.
A história da BSEG é muito interessante e remonta aos primórdios do SAP, acredito que venha lá do R/2, mas eu vi pelos meus próprios olhos no R/3 3.1FC e desde então está da forma como foi concebida.

Já condenei muito soluções da SAP e ao longo do tempo comecei a entender a origem e os porquês destas soluções. Hoje tenho um profundo respeito e atenção para as decisões de arquitetura e engenharia de software da SAP.

As decisões tomadas pela SAP desde a sua concepção são de profunda coragem pois foram contrárias ao foco e objetivos de sua época. Na década de 70 e 80 onde praticamente todo o foco se direcionava para a performance e otimização de recursos de hardware, em uma época que TI ainda se chamava CPD, a SAP decide focar em uma arquitetura universal de Sistema Operacional e Banco de Dados.
Para trabalhar com vários Sistemas Operacionais e Banco de Dados, foi necessário implementar do zero uma camada de abstração, criando-se de certa forma um MDC (Máximo Divisor Comum) de todas as plataformas, não seria possível fazer um kernel para cada SO e cada Banco., Até hoje o kernel é distribuído na forma de um só arquivo: disp+work(.exe), cabendo a uma library a adaptação para cada Banco de Dados.

Onde entra a Tabela BSEG nesta história?

Nesta conta simples de MDC entre todos os bancos de dados que a SAP suporta ou suportou: Oracle, MSSQL, SAPDB, Sybase, Informix, DB2, etc. O resultado certamente não seria animador, restrições de todos os lados, uma RDBMS faz isto outro faz aquilo, mas principalmente não faz isto, não tem aquilo. Então iniciam-se os vários dilemas e soluções diversas.

A Tabela BSEG atende uma finalidade funcional muito importante, ela é responsável para persistir os dados de item de documento contábil e deve conter todos os dados necessários para todas as integrações com CO, MM, FI-AA, SD, etc. Isto gera a necessidade de uma tabela com muitos campos. Em um certo ponto estes muitos campos, extrapola-se ou em número de campos ou em tamanho de dados destes campos, o limite do "MDC".

Surge então uma pequena "gambiarra": a tabela BSEG se torna uma Tabela Cluster e utiliza uma tabela Pool, ou seja a estrutura da tabela lógica fica diferente da tabela física no Banco de Dados.
BSEG: Tabela Cluster, RFBLG: Tabela Pool.


Tabela RFBLG


Então os dados da Tabela BSEG é armazenada em formato RAW, ou seja, concatenam-se todos os bytes de dados de cada campo em uma só "linguiça" e fatia-se em tamanhos de 3800 bytes.
Por isto não se acostuma-se utilizar "select's" na tabela BSEG, pois se é necessário filtrar por um simples campo de conta contábil, o SAP irá solicitar todos os registros do banco e verificar para cada registro a equivalência de bytes posicionais de cada registro com a conta contábil.
Só é permitido o uso através do uso de leitura da tabela pela sua chave primária.
A Nota da SAP número 1892354 transforma a tabela BSEG de uma tabela cluster para uma tabela transparente.

Assim a partir deste ponto abrem-se toda uma nova linha de programas, integrações, jobs, exits que não precisam fazer select's nas tabelas auxiliares BSIS, BSAS, BSAD, BSID, BSAK, BSIK. Além de fazer uma atividade impossível, realizar SAP Query e InfoSet com join na BSEG.
Tchau BSEG, bem vinda BSEG.

Fonte: https://www.linkedin.com/pulse/adeus-tabela-bseg-bem-vinda-ant%C3%A9lio-abe?trk=hp-feed-article-title