Você está na página 1de 33

IDOC Tipo FILE – Jesse James 1

Gerar IDOC tipo FILE

1º passo – Transação SALE (Exibir guia de Implementação) verificar se estão criados


todos os ambientes.

É por essa transação que vamos amarrar os mandantes para gerar o arquivo.
IDOC Tipo FILE – Jesse James 2

2º passo - Ir na opção – Nomear sistemas lógicos para verificar se existe ou tem que criar o ambiente.

Quando clicar nessa opção aparecerá a seguinte mensagem:

O que for feito num ambiente será validos para todos.


IDOC Tipo FILE – Jesse James 3

Nesse exemplo iremos utilizar o ambiente DEV820 e DEV807.

Obs: Caso não existisse o ambiente para o sistema lógico poderia ser criado sem problemas.
IDOC Tipo FILE – Jesse James 4

3º passo - Ir na opção – Atribuir sistema lógico ao mandante. Irá criar os mandantes para geração do
IDOC.

Aparecerá a mesma mensagem de mandantes

O que for feito num ambiente será validos para todos.


IDOC Tipo FILE – Jesse James 5

Verificar se os mandantes estão cadastrados.

No exemplo utilizaremos o ambiente 820 e 807.


IDOC Tipo FILE – Jesse James 6

4º passo – Utilizar a transação WEDI. Onde criaremos todos os processos do IDOC.


IDOC Tipo FILE – Jesse James 7

5º passo – Transação WE31 – Criar segmento. (criar estruturas de tabelas no formato de saída do arquivo).

Cria-se o nome do
segmento, de e cria-se
a estrutura que irá sair
o formato do arquivo.
IDOC Tipo FILE – Jesse James 8

Cria-se o nome dos campos e os seus respectivos elementos de dados conforme o da tabela VBAK.
Que é o formato que irá sair o arquivo.

Quando salva o segmento irá aparecer uma janela dizendo quem criou o seguimento e quem irá processar.

E irá pedir uma request para transporte.


IDOC Tipo FILE – Jesse James 9

Cria-se outro segmento que será os itens do arquivo e irá ser o mesmo processo do passo anterior.

Pedindo a tela de quem criou e quem irá executar o IDOC.

Pedindo uma request logo em seguida.


IDOC Tipo FILE – Jesse James 10

Cria-se um outro segmento para totalizador do arquivo

OBs: o que importa não é o nome do campo (que pode ser qualquer nome), mas sim o elemento de dados
que tem que ser um elemento válido no sistema.

conforme os outros casos.


IDOC Tipo FILE – Jesse James 11

6º passo – Transação WE30 – Criar tipos de IDOC é onde iremos amarrar a hierarquia dos seguimentos,
dizendo o seu nível e se é um campo obrigatório para sair no arquivo ou não.
IDOC Tipo FILE – Jesse James 12

Cria-se uma nome do objeto para o tipo de IDOC – para montar hierarquia dos segmentos.
IDOC Tipo FILE – Jesse James 13

Clicar em criar abrirá a seguinte janela.

Cria-se novo Tipo base de iDOC.

Começou a criar o nome do tipo de IDOC e as hierarquias.

Começa a adicionar
os seguimentos e
suas hierarquias.
IDOC Tipo FILE – Jesse James 14

Cria-se o segmento conforme o exemplo, dizendo se ele é obrigatório ou não e o número mínimo e máximo
de linhas do arquivo.

Assumindo o nível de
hierarquia
IDOC Tipo FILE – Jesse James 15

Vamos acrescentar um outro segmento como subordinado.

Cria-se o outro segmento.

Acrescenta agora um outro segmento para o mesmo nível


IDOC Tipo FILE – Jesse James 16

Adicionando o outro segmento.

Ficando assim o resultado final, depois é só salvar


IDOC Tipo FILE – Jesse James 17

7º passo – Transação WE81 – Criar tipo de mensagem.

Cria-se o tipo de
mensagem e sua
descrição
IDOC Tipo FILE – Jesse James 18

O mesmo irá pedir request obrigatóriamente quando salvar

8º passo – Transação WE82 – Criar tipo de mensagem com tipo de IDOC


IDOC Tipo FILE – Jesse James 19

Associar a mensagem lógico criada(WE81) com o tipo de IDOC (WE30).

Versão do SAP

Tipo de IDOC
WE30

Mensagem
lógica WE81

Quando salvar irá pedir request novamente.


IDOC Tipo FILE – Jesse James 20

9º passo – Transação WE21 – Descrição das portar para processamento.


IDOC Tipo FILE – Jesse James 21

Irá criar a porta clicando em Portas – File, colocando o nome da porta que irá gerar o arquivo, colocando o
diretório que irá ser criado o arquivo e o nome do arquivo de saída, em seguida teste entr.

Denomina-se o
nome da porta e
o tipo de Reg
iDOC

Clica em File e em
criar, e irá abrir a Defina-se o
janela ao lado caminho onde
irá ser gravado
o IDOC.
Nome do
arquivo do
IDOC

Em seguida clique em “Test. Entr.” Para verificar se o caminho esta correto e exibirá a seguinte
mensagem.
IDOC Tipo FILE – Jesse James 22

Em seguida salva, ficando assim a tela.

Agora existe uma porta embaixo da porta File.


IDOC Tipo FILE – Jesse James 23

10º passo – Transação WE20 – Criar protocolo de transmissão número do parceiro.

Vamos criar um protocolo de transmissão.


IDOC Tipo FILE – Jesse James 24

Clica sobre o tipo de parceiro sistema lógico e em criar (Parceiro é quem irá receber o arquivo).

Ambiente onde irá


buscar o arquivo,
parceiro

Amarrar o tipo de
mensagem, parceiro com
o sistema e a porta
receptora
IDOC Tipo FILE – Jesse James 25

Ao clicar no botão de + do parâmetro de saída abre-se a seguinte janela para protocolo de transmissão.

Parceiro WE20 e
sistema lógico

Tipo de mensagem
WE81

Porta receptora
WE21

Tipo básico
WE30

Transferir
documento
imediatamente
IDOC Tipo FILE – Jesse James 26

Em seguida roda-se o programa para carregar os dados para o iDOC.


O código fonte esta na última página.

Rodando o programa verifica a seguinte mensagem em caso de sucesso.


IDOC Tipo FILE – Jesse James 27

Em seguida entra na transação BD87 para processar o IDOC

Processar o IDOC

Nome do IDOC
IDOC Tipo FILE – Jesse James 28

Clicando sobre o IDOC e clica em processar receberá o seguinte resultado na tela.


IDOC Tipo FILE – Jesse James 29

Dando duplo click sobre o número do IDOC verifica-se o resultado do preenchimento das tabelas de saída
do arquivo.

Status do IDOC
IDOC Tipo FILE – Jesse James 30

Gerando o arquivo conforme o formato definido.


IDOC Tipo FILE – Jesse James 31

Segue texto do programa que gerou o txt.

OBs: a função que gera o IDOC é : CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'

REPORT Zjesse .

TYPES: BEGIN OF y_vbak,


vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
vbtyp LIKE vbak-vbtyp,
auart LIKE vbak-auart,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
kunnr LIKE vbak-kunnr,
END OF y_vbak,

BEGIN OF y_vbap,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
arktx LIKE vbap-arktx,
netwr LIKE vbap-netwr,
waerk LIKE vbap-waerk,
kwmeng LIKE vbap-kwmeng,
vrkme LIKE vbap-vrkme,
END OF y_vbap,

BEGIN OF y_totl,
vbeln LIKE vbap-vbeln,
total LIKE vbap-netwr,
END OF y_totl.

DATA:
w_edidc LIKE edidc, "Montagem de estrutura de controle
t_edidc LIKE TABLE OF edidc, "Tabela para controle de estatus
t_edidd TYPE TABLE OF edidd
WITH HEADER LINE, "Tabela para envio dos registros de dados

*** estruturas dos segmentos ***


w_z1vbak LIKE z101vbak,
w_z1vbap LIKE z101vbap,
w_z1totl LIKE z101totl,
********************************

v_sequencia TYPE i,
w_vbak TYPE y_vbak,
w_vbap TYPE y_vbap,
w_totl TYPE y_totl,
t_vbap TYPE TABLE OF y_vbap.

*** declaraçãoda tela de seleção ***


SELECTION-SCREEN: BEGIN OF BLOCK tela01 WITH FRAME.
PARAMETERS: p_vbeln LIKE vbak-vbeln.
SELECTION-SCREEN: END OF BLOCK tela01.

*** Seleção dos dados ***


START-OF-SELECTION.

*** Ler as tabelas para obter informaçoes necessárias p/ segmentos ***


IDOC Tipo FILE – Jesse James 32
SELECT SINGLE vbeln erdat vbtyp auart vkorg vtweg spart kunnr

INTO w_vbak
FROM vbak
WHERE vbeln EQ p_vbeln.

IF sy-subrc NE 0.
MESSAGE i027(bctrain).
STOP.
ENDIF.

SELECT vbeln posnr matnr arktx netwr waerk kwmeng vrkme


FROM vbap
INTO TABLE t_vbap
WHERE vbeln EQ p_vbeln.

IF sy-subrc NE 0.
MESSAGE i027(bctrain).
STOP.
ENDIF.
***********************************************************************

*** Preencher registro de controle ***


v_sequencia = 1.

t_edidd-docnum = space.
"w_edidd-counter = 00.
t_edidd-segnum = v_sequencia.
t_edidd-segnam = 'Z1VBAK'. “segmento
t_edidd-psgnum = 0.
t_edidd-hlevel = 1. “hierarquia
t_edidd-sdata = w_vbak.
APPEND t_edidd.

v_sequencia = v_sequencia + 1.

*** preencher registros de dados ***


LOOP AT t_vbap INTO w_vbap.

MOVE-CORRESPONDING w_vbap TO w_z1vbap.

t_edidd-docnum = space.
"w_edidd-counter = 00.
t_edidd-segnum = v_sequencia.
t_edidd-segnam = 'Z1VBAP'. “segmento
t_edidd-psgnum = 1.
t_edidd-hlevel = 2. “hierarquia
t_edidd-sdata = w_z1vbap.
APPEND t_edidd.

v_sequencia = v_sequencia + 1.

ENDLOOP.

*** Preencher registros de status ***


w_totl-vbeln = p_vbeln.
w_totl-total = 0.

LOOP AT t_vbap INTO w_vbap.

w_totl-total = w_totl-total + w_vbap-netwr.

ENDLOOP.

MOVE-CORRESPONDING w_totl TO w_z1totl.

t_edidd-docnum = space.
IDOC Tipo FILE – Jesse James 33
"w_edidd-counter = 00.

t_edidd-segnum = v_sequencia.
t_edidd-segnam = 'Z1TOTL'. “segmento
t_edidd-psgnum = 1.
t_edidd-hlevel = 2. “hierarquia
t_edidd-sdata = w_z1totl.
APPEND t_edidd.

w_edidc-mestyp = 'Z1ORDERM'. “mensagem WE81


w_edidc-idoctp = 'Z1ORDER'. “nome do idoc WE30
w_edidc-rcvprt = 'LS'. “porta WE21
w_edidc-rcvprn = 'DEV807'. “porta WE21
w_edidc-rcvpfc = ''.

CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'


EXPORTING
master_idoc_control = w_edidc
TABLES
communication_idoc_control = t_edidc
master_idoc_data = t_edidd
EXCEPTIONS
error_in_idoc_control =1
error_writing_idoc_status = 2
error_in_idoc_data =3
sending_logical_system_unknown = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSEIF sy-subrc = 0.
MESSAGE i184(bctrain) WITH 'IDOC criado com sucesso!!!'.

ENDIF.

Você também pode gostar