on 04-09-2015 2:47 AM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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.
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
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.
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
DATA: o_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.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
User | Count |
---|---|
15 | |
4 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.