A Chamada da Simulate consiste em consultar e extrair as informações, com base no arquivos de parâmetros, da API. A integração fornecida para possibilitar a extração dessa informações é a conexão entre o SAP e a API. O retorno dessa chamada é no formato Json. O propósito do desenvolvimento desta chamada é obter informações de preço, valores totais e de impostos, em função do Tipo de Documento (ZDX, ZCPP e ZCPI), os quais apresentarão a utilidade de construir uma tabela com o cálculo.
Recursos Necessários
Os recursos utilizados devem ser mencionados para apoio no entendimento e desenvolvimento da Chamada Simulate. Abaixo segue a lista de todos os insumos utilizados para o estabelecimento deste projeto:
Postman: apresenta a utilidade de validar o retorno da API com os parâmetros especificados;
Amostra de Parâmetros: arquivo solicitante à área de negócios para fornecer os parâmetros necessários para o retorno das informações da chamada simulate.
Notebook do Databricks da Chamada da Simulate: desenvolvimento de script da Chamada Simulate que realiza a requisição das informações de preço, valores totais e impostos, a partir da leitura e configuração do arquivo de parâmetros, da API. (COLOCAR O LINK)
Notebook do Databricks para a leitura e configuração do arquivo de parâmetros: desenvolvimento de script da leitura do arquivo extraído, adequação das informações com o modelo atual e configuração do Tipo de Documento para ocorrer a chamada da simulate. (COLOCAR O LINK
Jira: este sistema pode ser usado para a consulta do Card DGA - 535 a qual apresenta todas as informações do projeto e o commit dos notebooks do Databricks.
METODOLOGIA
Arquivo de Parâmetros
Após a solicitação do arquivo de parâmetros em excel e a adaptação para csv, o processo de geração, importação e gravação do arquivo de parâmetros pode ser vista na Figura 1:
De acordo com a Figura 1, a área de negócios extrai um arquivo de parâmetros em excel e é enviado para o nosso domínio. Posteriormente, é criado um código Python que lê este arquivo (transformado em csv) e extrai para o storage como gravação de uma tabela relacional no Databricks.
Após a gravação do arquivo de parâmetros, deve-se adequar na mesma configuração de nomenclatura e tipos de dados das colunas da tabela genesis_pricing.parametersv4.
Observações: Pode ocorrer a ausência de algumas colunas no arquivo extraído pela área de negócios, por exemplo, “FuncaoParceiro”. Para este caso deve-se criar uma coluna com este nome e atribuir o valor “AG”. Caso este comportamento ocorra para outras colunas, verificar com a área de negócios.
A extração das informações de preço, valores totais e impostos é dependente do tipo de Documento. O Arquivo de parâmetros extraídos pela área de negócios geralmente está com o Tipo de Documento (coluna “Tp.Doc”) associado ao valor ZDX (Venda Normal). Para este caso, caso seja necessário buscar as informações para ZCPL (Preço Lucro) e ZCPI (Impostos), deve-se duplicar os registros para cada grupo baseado no ZDX e unir tudo conforme na Figura 2:
Para mais informações sobre o desenvolvimento do script, acessar:
Após essas configurações do arquivo de parâmetros, a tabela é gravada no database genesis_pricing e deve seguir este padrão.
Tp_Doc | Org_Vendas | Eq_Vendas | Escr_Vendas | Regiao_de_vendas | Cond_de_Pgto | Cond_Expedicao | Moeda | Entrega_Paletizada | Incoterms | Incoterms_2 | Setor_de_atividade | Canal_distribuicao | Louca_Embalada | Funcao_parceiro | Utilizacao | Emissor_da_Ordem | Centro | Material |
ZDX | DH01 | 35 | DB05 | MS02 | BP19 | 1 | BRL | 4 | CIF | CIF | HY | 45 | 4 | AG | ZR | 92001 | HY01 | 1167.METVMHMN |
ZDX | DH01 | 35 | DB05 | MS02 | BP19 | 1 | BRL | 4 | CIF | CIF | HY | 45 | 4 | AG | ZR | 92001 | HY01 | 1168.METPTHMN |
ZCPP - Consulta Preco | DH01 | 510 | DI05 | ZH02 | B120 | 1 | BRL | 4 | CIF | CIF | HY | 45 | null | AG | ZR | 1186836 | HY01 | DPBL.3SAR.532BR |
ZCPP - Consulta Preco | DH01 | 510 | DI05 | ZH25 | B100 | 1 | BRL | 4 | CIF | CIF | HY | 45 | null | AG | ZR | 712531 | HY01 | DPMD.4.622BR |
ZCPI - Consulta Imposto | DH01 | 35 | DB05 | MS02 | BP19 | 1 | BRL | 4 | CIF | CIF | HY | 45 | 4 | AG | ZR | 92001 | HY01 | 1167.METVMHMN |
ZCPI - Consulta Imposto | DH01 | 35 | DB05 | MS02 | BP19 | 1 | BRL | 4 | CIF | CIF | HY | 45 | 4 | AG | ZR | 92001 | HY01 | 1168.METPTHMN |
Os campos extraídos e configurados são:
'Tp_Doc': Descrição do Tipo de Documento referente a ZDX - Venda Normal, ZCPP - Consulta Preço e ZCPL - Consulta Imposto
'Org_Vendas': Organização das Vendas
'Eq_Vendas':
'Escr_Vendas':
'Regiao_de_vendas':
'Cond_de_Pgto':
'Cond_Expedicao':
'Moeda':
'Entrega_Paletizada':
'Incoterms':
'Incoterms_2':
'Setor_de_atividade':
'Canal_distribuicao':
'Louca_Embalada':
'Funcao_parceiro':
'Utilizacao':
'Emissor_da_Ordem':
'Emissor_Razao_Social':
'Centro':
'Material':
Chamada Simulate
A chamada da Simulate ocorre a partir do payload em função do dataframe passado como parâmetro. Este dataframe é construída a partir da leitura do arquivo de parâmetros configurados e da sua relação com as tabelas de clientes e de expedição. Além disso, é feita adaptação em algumas colunas como no Tipo de Documento, Preço e entre outros. Esta adaptação é feita para que a requisição da API possa ocorrer com o êxito. Caso contrário, haverá erro de integração da chamada com o server do SAP.
Em relação a afirmativa do êxito do payload, mais um requisito é necessário: a construção da chamada do payload deve ter formato json com os parâmetros ajustados para que a requisição ocorra. Tais parâmetros deve ser usado desta forma:
{ "schedule": { "Item": { "scheduleLineDate": "", "salesDocumentItem": "000150", "orderQuantityInSalesUnits": "10" } }, "rotationHeader": { "yourReference": "SF", "valueShipping": "0", "valueAccessoryCosts": "0", "termsOfPaymentKey": "B028", "shippingConditions": "Standard", "sdDocumentCurrency": "BRL", "salesOrganization": "DC01", "salesOffice": "DB03", "salesGroup": "091", "salesDocumentType": "ZDX - Venda Normal", "salesDistrict": "Deca - MG Região 07", "requestedDeliveryDate": "", "priceListType": "Não", "incotermsPart2": "CIF - Custo, seguro & frete", "incotermsPart1": "CIF - Custo, seguro & frete", "division": "MS", "distributionChannel": "40", "dateForPricingAndExchangeRate": None, "customerPurchaseOrderNumber": "", "customerPurchaseOrderDate": "2020-07-30", "customerGroup": "false", "cup": "Revenda", "completeDeliveryDefinedForEachSalesOrder": "" }, "quotePartners": { "Item": { "partnerFunction": "EmissorOrdem", "customerNumber": "0000032611" } }, "quoteItems": { "Item": { "salesDocumentItem": "000150", "rateConditionRound": "0", "rateConditionAmountOrPercentage": "0.00", "plant": "D085", "materialNumber": "4688.931" } }, "guuid": None, "extension": { "Item": { "dataPartOfBapiExtensionParameter3": None, "dataPartOfBapiExtensionParameter2": "", "dataPartOfBapiExtensionParameter1": None, "dataPartOfBapiExtensionParameter": "" } } }
Observações: para os casos de ZCPP ou ZCPI deve alterar os parâmetros "yourReference"
para "HUB"
e
"salesDocumentType"
para "ZCPP - Consulta Preço"
ou "ZCPI - Consulta Imposto"
, respectivamente.
A Execução do Payload
0 Comments