cancel
Showing results for 
Search instead for 
Did you mean: 

eSocial - Geração de XML

Former Member
0 Kudos

Pessoal,

estou começando a trabalhar com um projeto de eSocial e estou um pouco perdida no que diz respeito a geração do XML.

Alguém consegue me explicar tecnicamente em que momento o XML sera montado, se temos funções para geração do mesmo (como na NFe), se conseguimos ver esta montagem.

Qualquer informação sobre o XML do eSocial sera de grande ajuda.

Desde já agradeço a disponibilidade de todos.

Abraços,

Mariana

Accepted Solutions (1)

Accepted Solutions (1)

alexandre_src
Participant
0 Kudos

Pessoal,

Efetuando alguns testes na transação PC00_M37_EFD_MONITOR (eSocial - Event Monitor), a geração e envio do XML pode ser feito a partir nesse ponto:

O arquivo XML deveria ser visualizado para efetuar o dowload clicando na opção Online, mas ocorre um erro:

O problema acima ocorre, por que o programa de envio RPU_PAYBR_EFD_BATCH_CREATION, para fazer a geração do XML por evento, ele busca a XML_CLASS para o determinado evento (1000) na tabela T7BREFD_EVTYPE :

Analisando a tabela aqui no projeto em que estou participando o campo XML_CLASS está vazio para todos os eventos cadastrados.

Alguém me dizer se existe alguma nota onde essas classes XML são criadas ?

Analisando a interface IF_HRPAYBR_EFDF_XML_GEN (Interface for XML generation, eSocial data validation),  não achei nenhuma classe standard criada para os eventos .

Não iremos utilizar o PI para efetuar o envio das informações. Iremos efetuar o download do XML e fazer o upload no site do eSocial.

Former Member
0 Kudos

Alexandre,

estou sem acesso ao ambiente neste momento, mas me parece que esse campo XML_CLASS são as classes de transmissão. Na versão que estou trabalhando, para alguns eventos totalmente cobertos pela SAP a classe está preenchida na EVTYPE e para outros a SAP ainda não entregou essas classes de transmissão. Para os eventos totalmente desenvolvidos essas classes de transmissão deverão ser criadas com base na IF_HRPAYBR_EFDF_DATA_TRANS. E em seguida preencher o campo de classe de tranmissão na configuracao dos eventos na V_T7BREFD_EVTYPE.

Esse processo está explicado no documento How To Create a new event for e-Social.

Espero ter conseguido ajuda-lo.

alexandre_src
Participant
0 Kudos

Mariana,

Obrigado pelas informações. Eu estou lendo o documento citado pois terei que criar objetos para eventos fora do escopo da SAP.

Sobre a a questão da geração do XML, não faz parte do escopo do projeto que estou participando o envio de XML para o PI. Esse processo seria feito inicialmente de forma manual, extraindo o XML dos eventos e efetuando o upload direto no eSocial. Mas para isso acontecer, precisamos de alguma forma efetuar o download desse XML no SAP, após o help da SAP você poderia efetuar esse download atraves do Monitor, seguindo os passos que eu coloquei anteriormente. mas infelizmente isso não está acontecendo por falta de algum conversor que provavelmente será criado em cima do XML_CLASS.

former_member660072
Discoverer
0 Kudos

Mariana,

você diz que para alguns eventos a classe já está preenchida na EVTYPE, você poderia dizer quais eventos para você as classes já aparecem preenchidas e também poderia passar em qual Versão/SP seu ambiente se encontra?

Obrigado,

Former Member
0 Kudos

Oi Cristiano,

Não estou com acesso agora para te dizer a lista de todos os eventos que já estão preenchidos, mas tenho aqui uma tela que peguei para outro exemplo:

Estamos trabalhando na 6.04 -  SP 90

Espero ter ajudado!

Abraços,
Mariana Raposo

former_member660072
Discoverer
0 Kudos

Mariana,

Obrigado pela retorno.

O mais estranho disso tudo é que eu estou na 6.04 e com o SP 97, minha tela tem outros campos e não esta preenchido os campos Cl. Transmissão e Cl. geração XML.

E a classe CL_HRPAYBR_EFDT_EEWNER_CHANGE eu não localizei na SE24.

Você consegue localizar essa classe e ver os métodos ?

att

Former Member
0 Kudos

Também não consigo visualizar na SE24. Apenas já estava preenchida na configuração.

Na época que estava trabalhando neste tema chegamos a questionar a SAP sobre as classes e nos foi informando que a equipe de desenvolvimento ainda estava trabalhando nelas.

Na próxima semana vamos retomar o projeto e começar com esses desafios de novo.

Att.

nei_silva
Explorer
0 Kudos

Olá Alexandre.

Para você que não vai usar o PI segue a dica.

A SAP liberou as duas interfaces uma para geração do XML e outra para comunicação com o PI ( IF_HRPAYBR_EFDF_XML_GEN / IF_HRPAYBR_EFDF_DATA_TRANS ).

Resolvi implementar as classes com base nestas interfaces e coloquei em um tipo de evento para teste.

Acredito que teremos que usá-las para implementar os eventos que estão fora do escopo.

No método GENERATE_XML da classe ZCL_HRPAYBR_EFDE_XML, coloquei o código abaixo:

METHOD if_hrpaybr_efdf_xml_gen~generate_xml.

*--# Declaração de varíaveis

   DATAo_data                TYPE REF TO data,

          l_file                TYPE string,

          l_xml                 TYPE xstring,

          l_size_bin            TYPE i,

          lt_doc_content_hex    TYPE solix_tab,

          lo_event              TYPE REF TO cl_hrpaybr_t7brefd_evtype,

          ls_t7brefd_evtype     TYPE t7brefd_evtype,

          l_tstamp              TYPE timestampl.

   FIELD-SYMBOLS: <fs_efde>  TYPE any.

*--# Criação de objeto type data

   CREATE DATA o_data TYPE REF TO data.

*--# Instância classe para tipos de eventos

   lo_event = cl_hrpaybr_t7brefd_evtype=>get_instance( ).

*--# Recuperar estrtura do evento

   o_data  = io_event->get_data( ).

*--# Recuperar inf. do tipo de evento

   TRY.

       ls_t7brefd_evtype = lo_event->get( iv_event_type = io_event->get_event_type( )

                                          iv_date       = sy-datum ).

     CATCH cx_hrpaybr_record_not_found.

       RETURN.

   ENDTRY.

   ASSIGN o_data->* TO <fs_efde>.

*--# Gerar xml

   CALL TRANSFORMATION id

                       SOURCE efde = <fs_efde>

                       RESULT XML ev_data. "String ( Retorno do método )

   CALL TRANSFORMATION id

                       SOURCE efde = <fs_efde>

                       RESULT XML l_xml. "xString

   l_size_bin         = xstrlen( l_xml ).

   lt_doc_content_hex = cl_bcs_convert=>xstring_to_solix( l_xml ).

*--# Download xml

   GET TIME STAMP FIELD l_tstamp.

   IF sy-batch IS INITIAL."Presentation Server

     l_file = |C:\\TEMP\\| && |{ ls_t7brefd_evtype-legal_event_type }_| && |{ ( l_tstamp * 1000000 ) DECIMALS = 0 }.XML|.

     CALL METHOD cl_gui_frontend_services=>gui_download

       EXPORTING

         filename                = l_file

         bin_filesize            = l_size_bin

         filetype                = 'BIN'

       CHANGING

         data_tab                = lt_doc_content_hex

       EXCEPTIONS

         file_write_error        = 1

         no_batch                = 2

         gui_refuse_filetransfer = 3

         invalid_type            = 4

         no_authority            = 5

         unknown_error           = 6

         header_not_allowed      = 7

         separator_not_allowed   = 8

         filesize_not_allowed    = 9

         header_too_long         = 10

         dp_error_create         = 11

         dp_error_send           = 12

         dp_error_write          = 13

         unknown_dp_error        = 14

         access_denied           = 15

         dp_out_of_memory        = 16

         disk_full               = 17

         dp_timeout              = 18

         file_not_found          = 19

         dataprovider_exception  = 20

         control_flush_error     = 21

         not_supported_by_gui    = 22

         error_no_gui            = 23

         OTHERS                  = 24.

     IF sy-subrc <> 0.

     "ToDo

     ENDIF.

     ELSE."Application Server

     "Open data set

     "ToDo

    ENDIF.

     ENDMETHOD.



0 Kudos

Boa tarde a todos!

Nei, com a classe de geração XML e esse código implementado você consegue gravar o XML local?

Gostaria de saber pois estou tentando isso mas até agora sem sucesso e não tinha visto seu post.

Vou tentar.

Obrigado!

nei_silva
Explorer
0 Kudos

Boa tarde.

Sim. Inclusive a classe que implementei ela é genérica servindo para qualquer evento.

Você pode implementar e fazer um teste.

Só lembrando que eu coloquei fixo C:\TEMP\ para gravar o arquivo... Era apenas para teste..

Abs.

0 Kudos

Obrigado pela resposta!

O problema é que no nosso SP99 não encontrei essa classe, qual o SP que vc tá usando?

Abs!

nei_silva
Explorer
0 Kudos

Estou neste SPK99 também.

Estas classes são "Z". Eu criei as classes com base nas interfaces ( IF_HRPAYBR_EFDF_XML_GEN / IF_HRPAYBR_EFDF_DATA_TRANS ).

Depois só implementar o método GENERATE_XML.

Abs.

0 Kudos

Vlw Nei! Vou testar!

Abs!

Answers (3)

Answers (3)

former_member269988
Participant
0 Kudos

Pessoal,

Por favor,  quem esta utilizando o envio para o PI, esta fazendo o disparo do XML pela PC00_M37_EFD_MONITOR ou PC00_M37_EFD_PAY_GEN ?

Muito obrigado

0 Kudos

Oi Wilson.

Fizemos pela PC00_M37_EFD_MONITOR e funciona.

Att.

former_member269988
Participant
0 Kudos

Obrigado Mauricio.

Mas voces então fazem esse envio de forma manual ? Quando geram o evento deixam essa função sempre pro monitor, certo?

att.

0 Kudos

Sim Wilson.

Deixamos setado as classes de geração e transmissão e pelo monitor ele gera o XML local por enquanto para conferência.

Att.

0 Kudos

Olá Mariana,

As classes de geração dos XML ainda não foram liberadas pela SAP em nenhum SP, pois o governo também não liberou o ambiente para teste do envio dos eventos.

A previsão é que a solução de integração seja liberada até o final de Abril deste ano, isto, se tudo correr como o planejado e o governo não adiar mais uma vez o eSocial.

É o que sei até o momento, pois não há informações oficiais por parte da SAP.

Att,

Renan_Correa
Active Contributor
0 Kudos

Oi Mariana,

Recomendo a leitura da SAP Note "1920686 - eSocial: FAQ". No ponto 16 da nota há uma explicação técnica do framework do eSocial e de como verificar o preenchimento dos campos. O eSocial está montado com base em classes e métodos, então não são módulos de função que preenchem os dados.

att,

Renan Correa

Former Member
0 Kudos

Olá Renan,

obrigada pela resposta.

Entao, dei uma olhada no ponto que você comentou. Esta parte da geração dos eventos eu peguei. Para os eventos não cobertos nós já estamos trabalhando em cima do documento How To create a new event e temos caminhado bem. Minha dúvida maior é no momento após a geração do evento, quando o mesmo já aparece lá no monitor. Neste momento já temos o XML montado ou o XML somente é montado após enviar? Para assinar digitalmente o XML dentro do HCM precisamos realizar mais alguma etapa ou isso já acontece de forma standard? É possivél ver o código da montagem do XML, dentro de algum método? Se sim, onde encontro? Já debugamos um pouco e não encontramos nada.

abraços,

Mariana Raposo