Vous êtes sur la page 1sur 11

FUNCTION zmm_nfe_gecex_fcreate.

*"----------------------------------------------------------------------
*"*"Interface local:
*" IMPORTING
*" REFERENCE(I_NUM_PROCESSO) TYPE ZGECEX_EXP1505_1-NUM_PROCESSO
*" REFERENCE(I_COD_EMPRESA) TYPE ZGECEX_EXP1505_1-COD_EMPRESA
*" REFERENCE(I_COD_FILIAL) TYPE ZGECEX_EXP1505_1-COD_FILIAL
*" EXPORTING
*" REFERENCE(DOCNUM) TYPE J_1BNFDOC-DOCNUM
*" TABLES
*" T_EXP1505_1 STRUCTURE ZGECEX_EXP1505_1 OPTIONAL
*" T_EXP1505_2 STRUCTURE ZGECEX_EXP1505_2 OPTIONAL
*" T_EXP1505_3 STRUCTURE ZGECEX_EXP1505_3 OPTIONAL
*" T_EXP1505_4 STRUCTURE ZGECEX_EXP1505_4 OPTIONAL
*" T_EXP1505_5 STRUCTURE ZGECEX_EXP1505_5 OPTIONAL
*" T_RETORNO STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------

DATA:wa_obj_header TYPE bapi_j_1bnfdoc,


wa_obj_partner TYPE bapi_j_1bnfnad,
wa_obj_item TYPE bapi_j_1bnflin,
wa_obj_item_add TYPE bapi_j_1bnflin_add,
wa_obj_tax TYPE bapi_j_1bnfstx,
wa_obj_header_msg TYPE bapi_j_1bnfftx,
wa_return TYPE bapiret2,
gt_lines TYPE TABLE OF tline,
wa_lines TYPE tline,
wa_obj_import_di TYPE bapi_j_1bnfimport_di,
wa_obj_import_adi TYPE bapi_j_1bnfimport_adi,
wa_exp1505_1 TYPE zgecex_exp1505_1,
wa_exp1505_2 TYPE zgecex_exp1505_2,
wa_exp1505_3 TYPE zgecex_exp1505_3,
wa_exp1505_4 TYPE zgecex_exp1505_4,
wa_exp1505_5 TYPE zgecex_exp1505_5,
i_obj_partner TYPE STANDARD TABLE OF bapi_j_1bnfnad,
i_obj_header_msg TYPE STANDARD TABLE OF bapi_j_1bnfftx,
i_obj_item TYPE STANDARD TABLE OF bapi_j_1bnflin,
i_obj_item_add TYPE STANDARD TABLE OF bapi_j_1bnflin_add,
i_obj_tax TYPE STANDARD TABLE OF bapi_j_1bnfstx,
i_obj_import_di TYPE STANDARD TABLE OF bapi_j_1bnfimport_di,
i_obj_import_adi TYPE STANDARD TABLE OF bapi_j_1bnfimport_adi,
vg_mwskz TYPE ekpo-mwskz,
wa_komk TYPE komk,
wa_komp TYPE komp,
wa_lfa1 TYPE lfa1,
wa_mara TYPE mara,
wa_makt TYPE makt,
wa_t001w TYPE t001w,
wa_mbew TYPE mbew,
gt_komk TYPE STANDARD TABLE OF komk,
gt_komv TYPE TABLE OF komv WITH HEADER LINE,
gt_ztaxtype TYPE STANDARD TABLE OF ztaxtype_gecex,
wa_ztaxtype TYPE ztaxtype_gecex.

DATA: gv_aux_pis(18) TYPE c,


gv_aux_cof(18) TYPE c.

DATA: v_name TYPE thead-tdname,


v_id TYPE thead-tdid,
v_basred TYPE c.

DATA: gv_sum_pis TYPE zgecex_exp1505_2-val_base_pis_mn,


gv_sum_cof TYPE zgecex_exp1505_2-val_base_cofins_mn.
DATA: gt_makt TYPE STANDARD TABLE OF makt WITH HEADER LINE,
gt_ekko TYPE STANDARD TABLE OF ekko WITH HEADER LINE,
gt_ekpo TYPE STANDARD TABLE OF ekpo WITH HEADER LINE,
gt_tkomv TYPE STANDARD TABLE OF komv WITH HEADER LINE.

SELECT * INTO TABLE t_exp1505_1 FROM zgecex_exp1505_1


WHERE num_processo = i_num_processo
AND cod_empresa = i_cod_empresa
AND cod_filial = i_cod_filial.
IF sy-subrc EQ 0.
SELECT * INTO TABLE t_exp1505_2 FROM zgecex_exp1505_2
FOR ALL ENTRIES IN t_exp1505_1
WHERE num_processo = t_exp1505_1-num_processo
AND cod_empresa = t_exp1505_1-cod_empresa
AND cod_filial = t_exp1505_1-cod_filial.

SELECT * INTO TABLE t_exp1505_3 FROM zgecex_exp1505_3


FOR ALL ENTRIES IN t_exp1505_1
WHERE num_processo = t_exp1505_1-num_processo
AND cod_empresa = t_exp1505_1-cod_empresa
AND cod_filial = t_exp1505_1-cod_filial.

SELECT * INTO TABLE t_exp1505_4 FROM zgecex_exp1505_4


FOR ALL ENTRIES IN t_exp1505_1
WHERE num_processo = t_exp1505_1-num_processo
AND cod_empresa = t_exp1505_1-cod_empresa
AND cod_filial = t_exp1505_1-cod_filial.

SELECT * INTO TABLE t_exp1505_5 FROM zgecex_exp1505_5


FOR ALL ENTRIES IN t_exp1505_1
WHERE num_processo = t_exp1505_1-num_processo
AND cod_empresa = t_exp1505_1-cod_empresa
AND cod_filial = t_exp1505_1-cod_filial.

SELECT * INTO TABLE gt_ztaxtype FROM ztaxtype_gecex.

SELECT * INTO TABLE gt_ekko FROM ekko


FOR ALL ENTRIES IN t_exp1505_2
WHERE ebeln EQ t_exp1505_2-ebeln.
IF sy-subrc EQ 0.
SELECT * INTO TABLE gt_ekpo FROM ekpo
FOR ALL ENTRIES IN gt_ekko
WHERE ebeln EQ gt_ekko-ebeln.
IF sy-subrc EQ 0.
SELECT * INTO TABLE gt_makt FROM makt
FOR ALL ENTRIES IN gt_ekpo
WHERE matnr EQ gt_ekpo-matnr
AND spras EQ sy-langu.
ENDIF.

ENDIF.
* Fill Header informations
READ TABLE t_exp1505_1 INTO wa_exp1505_1 INDEX 1.
IF sy-subrc EQ 0.
CLEAR v_basred.
READ TABLE gt_ekko INDEX 1.
READ TABLE t_exp1505_2 INTO wa_exp1505_2 INDEX 1.

SELECT SINGLE * INTO wa_lfa1 FROM lfa1


WHERE lifnr EQ wa_exp1505_1-cod_fornecedor.

wa_obj_header-nftype = 'ZE'. "ZE" (NFe Importation)


wa_obj_header-doctyp = wa_exp1505_1-tipo_minuta.
wa_obj_header-direct = '1'. " (Incoming)
wa_obj_header-docdat = sy-datum.
wa_obj_header-pstdat = sy-datum.
wa_obj_header-form = 'NFE3'.
wa_obj_header-model = '55'.
wa_obj_header-series = '1'.
wa_obj_header-entrad = 'X'.
wa_obj_header-fatura = 'X'.
wa_obj_header-zterm = wa_exp1505_1-cod_cond_pgto.
wa_obj_header-manual = 'X'.
wa_obj_header-waerk = 'BRL'.
wa_obj_header-bukrs = wa_exp1505_1-cod_empresa.
wa_obj_header-branch = wa_exp1505_1-cod_filial.
wa_obj_header-parvw = 'LF'.
wa_obj_header-parid = wa_exp1505_1-cod_fornecedor.
wa_obj_header-partyp = 'V'.
* wa_obj_header-shpunt = 'PAK'.
wa_obj_header-traty = '0001'.
wa_obj_header-shpmrk = wa_exp1505_1-nom_navio.
wa_obj_header-inco1 = wa_exp1505_1-cod_cond_venda.
wa_obj_header-inco2 = wa_exp1505_1-des_cond_venda.
wa_obj_header-anzpk = wa_exp1505_1-volumes_.
wa_obj_header-brgew = wa_exp1505_1-pes_bruto.
wa_obj_header-ntgew = wa_exp1505_1-pes_liquido.
wa_obj_header-gewei = 'KG'.
wa_obj_header-observat = wa_exp1505_1-num_processo.
wa_obj_header-nfe = 'X'.
wa_obj_header-xmlvers = '3.10'.
wa_obj_header-nfenrnr = '01'.
wa_obj_header-tpemis = '1'." (Normal)
wa_obj_header-modfrete = '9'.

*** Buscar SHPUNT - especie do texto do pedido

v_name = wa_exp1505_2-ebeln.

IF gt_ekko-bsart EQ 'NB'.
v_id = 'F03'.
ELSEIF gt_ekko-bsart EQ 'ZLPA'.
v_id = 'L03'.
ENDIF.
CLEAR: wa_lines.
REFRESH:gt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = v_id "'F01'
language = 'P'
name = v_name
object = 'EKKO'
TABLES
lines = gt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc EQ 0.
READ TABLE gt_lines INTO wa_lines INDEX 1.
IF sy-subrc EQ 0.
wa_obj_header_msg-message = wa_lines-tdline.
ENDIF.

ENDIF.

**** FILL DI
CLEAR: wa_obj_import_di,wa_obj_import_adi.
wa_obj_import_di-ndi = wa_exp1505_1-num_di.
wa_obj_import_di-ddi = wa_exp1505_1-dat_di.
wa_obj_import_di-cod_doc_imp = '0'.
wa_obj_import_di-xlocdesemb = wa_exp1505_1-den_local_despacho.
wa_obj_import_di-ufdesemb = wa_exp1505_1-uf_local_despacho.
wa_obj_import_di-ddesemb = wa_exp1505_1-dat_desembaraco.
wa_obj_import_di-cexportador = wa_exp1505_1-cod_fornecedor.
wa_obj_import_di-transport_mode = wa_exp1505_1-cod_via_transp.
wa_obj_import_di-maritime_freight = wa_exp1505_1-val_frete_mn.
wa_obj_import_di-intermediate_mode = '1'.
APPEND wa_obj_import_di TO i_obj_import_di.

*** FILL PARTNERS TABLE


CLEAR wa_obj_partner.
wa_obj_partner-parvw = 'SP'. " (international carrier)
wa_obj_partner-parid = wa_exp1505_1-cod_transportadora.
wa_obj_partner-partyp = 'V'." (vendor)
APPEND wa_obj_partner TO i_obj_partner.

CLEAR wa_obj_partner.
wa_obj_partner-parvw = 'LF'. " (forwarding agent)
wa_obj_partner-parid = wa_exp1505_1-cod_despachante.
wa_obj_partner-partyp = 'V'. " (vendor)
APPEND wa_obj_partner TO i_obj_partner.

CLEAR wa_obj_partner.
wa_obj_partner-parvw = 'WE'." (local carrier)
wa_obj_partner-parid = wa_exp1505_1-cod_transp_nac.
wa_obj_partner-partyp = 'V'." (vendor)
APPEND wa_obj_partner TO i_obj_partner.
ENDIF.

**FILL ITEMS TABLES


LOOP AT t_exp1505_2 INTO wa_exp1505_2.
CLEAR wa_obj_item.

wa_obj_item-itmnum = wa_exp1505_2-item_processo.
wa_obj_item-matnr = wa_exp1505_2-cod_produto.
wa_obj_item-nbm = wa_exp1505_2-cod_ncm.

SELECT SINGLE werks INTO wa_obj_item-bwkey FROM t001w


WHERE j_1bbranch = wa_exp1505_1-cod_filial.

SELECT SINGLE matkl INTO wa_obj_item-matkl FROM mara


WHERE matnr EQ wa_obj_item-matnr.

SELECT SINGLE mtorg mtuse INTO (wa_obj_item-matorg , wa_obj_item-matuse)


FROM mbew
WHERE matnr EQ wa_obj_item-matnr AND
bwkey = wa_obj_item-bwkey.

READ TABLE gt_makt WITH KEY matnr = wa_obj_item-matnr.


IF sy-subrc EQ 0.
wa_obj_item-maktx = gt_makt-maktx.
ENDIF.

wa_obj_item-menge = wa_exp1505_2-qtd_pecas.
wa_obj_item-meins = wa_exp1505_2-cod_unid_med.

** Nova Formula para calcular o valor liquido unit�rio


** Val_item = BC ICMS (Val_Base_ICMS_mn)�VLR IPI (Val_IPI_a_rec_mn)�DESPESAS
NACIONAIS (Val_desp_acessoria)�AFRMM (Val_afrmm)**
** wa_obj_item-netpr = wa_exp1505_2-pre_unit_mn.
** wa_obj_item-netwr = wa_exp1505_2-pre_total_mn.
* Se tiver base reduzida de ICMS n�o segue essa l�gica e sim a que est� no ICMS
wa_obj_item-netpr = ( wa_exp1505_2-val_base_icms_mn - wa_exp1505_2-
val_ipi_a_rec_mn - wa_exp1505_2-val_desp_aces_mn -
wa_exp1505_2-val_afrmm_a_rc_mn ) / wa_obj_item-menge
.

wa_obj_item-netwr = wa_exp1505_2-val_base_icms_mn - wa_exp1505_2-


val_ipi_a_rec_mn - wa_exp1505_2-val_desp_aces_mn - wa_exp1505_2-val_afrmm_a_rc_mn.

** Novo calculo de valores para cria��o de NF


* wa_obj_item-netfre = wa_exp1505_2-val_frete_mn."N�o enviar o valor mais
* wa_obj_item-netins = wa_exp1505_2-val_seguro_mn." "N�o enviar o valor mais
*** wa_obj_item-netoth = wa_exp1505_2-val_desp_aces_mn .
wa_obj_item-netoth = wa_exp1505_2-val_desp_aces_mn + wa_exp1505_2-
val_afrmm_a_rc_mn.

wa_obj_item-itmtyp = '01'.
wa_obj_item-incltx = 'X'. "X" (Incl. ICMS/ISS)
wa_obj_item-cfop_10 = wa_exp1505_2-cfop.
wa_obj_item-xped = wa_exp1505_2-ebeln.
wa_obj_item-nitemped = wa_exp1505_2-ebelp.

CLEAR vg_mwskz.
SELECT SINGLE mwskz werks INTO (vg_mwskz,wa_obj_item-werks) FROM ekpo
WHERE ebeln EQ wa_exp1505_2-ebeln AND
ebelp EQ wa_exp1505_2-ebelp.
* IF sy-subrc EQ 0.
* SELECT SINGLE j_1btaxlw1 j_1btaxlw2 j_1btaxlw4 j_1btaxlw5
* INTO (wa_obj_item-taxlw1,wa_obj_item-taxlw2,wa_obj_item-taxlw4,
wa_obj_item-taxlw5)
* FROM t007a
* WHERE kalsm = 'TAXBRA' AND
* mwskz = vg_mwskz.
*
* ENDIF.

** TAX Coditions
* COFINS
CLEAR:wa_obj_tax,wa_ztaxtype.
* IF wa_exp1505_2-val_cofins_a_rc_mn > 0.
* wa_obj_item-taxsi4 = wa_exp1505_2-reg_tribut_cofins.
READ TABLE gt_ztaxtype INTO wa_ztaxtype WITH KEY taxgrp = 'COFINS'
gtaxsit = wa_exp1505_2-
reg_tribut_cofins."wa_obj_item-taxsi4.
IF sy-subrc EQ 0.
wa_obj_tax-itmnum = wa_obj_item-itmnum.
wa_obj_tax-taxtyp = wa_ztaxtype-taxtyp. "'ICOF'.
wa_obj_item-taxlw4 = wa_ztaxtype-taxlaw.
IF wa_ztaxtype-base EQ 'X'.
wa_obj_tax-base = wa_exp1505_2-val_base_cofins_mn.
ENDIF.
IF wa_ztaxtype-rate EQ 'X'.
wa_obj_tax-rate = wa_exp1505_2-pct_cofins.
ENDIF.
IF wa_ztaxtype-taxval EQ 'X'.
wa_obj_tax-taxval = wa_exp1505_2-val_cofins_a_rc_mn.
ENDIF.
IF wa_ztaxtype-excbas EQ 'X'.
wa_obj_tax-excbas = wa_exp1505_2-val_base_cofins_mn.
ENDIF.
IF wa_ztaxtype-othbas EQ 'X'.
wa_obj_tax-othbas = wa_exp1505_2-val_base_cofins_mn.
ENDIF.
APPEND wa_obj_tax TO i_obj_tax.
ENDIF.
* ENDIF.

* ICMS
CLEAR:wa_obj_tax,wa_ztaxtype.
* IF wa_exp1505_2-val_icms_a_rc_mn > 0.
* wa_obj_item-taxsit = wa_exp1505_2-cst.
READ TABLE gt_ztaxtype INTO wa_ztaxtype WITH KEY taxgrp = 'ICMS'
gtaxsit = wa_exp1505_2-
cst."wa_obj_item-taxsit.
IF sy-subrc EQ 0.
wa_obj_tax-itmnum = wa_obj_item-itmnum.
wa_obj_tax-taxtyp = wa_ztaxtype-taxtyp. "'ICM1'.
wa_obj_item-taxlw1 = wa_ztaxtype-taxlaw.
IF wa_ztaxtype-base EQ 'X'.
wa_obj_tax-base = wa_exp1505_2-val_base_icms_mn.
ENDIF.
IF wa_ztaxtype-rate EQ 'X'.
wa_obj_tax-rate = wa_exp1505_2-pct_icms.
ENDIF.
IF wa_ztaxtype-taxval EQ 'X'.
wa_obj_tax-taxval = wa_exp1505_2-val_icms_a_rc_mn.
ENDIF.
IF wa_ztaxtype-excbas EQ 'X'.
wa_obj_tax-excbas = wa_exp1505_2-val_base_icms_mn.
ENDIF.
IF wa_ztaxtype-othbas EQ 'X'.
wa_obj_tax-othbas = wa_exp1505_2-val_base_icms_mn.
ENDIF.
IF wa_ztaxtype-redbas > 0.
wa_obj_tax-basered1 = wa_ztaxtype-redbas.
* Se tiver base reduzida Calcular o pre�o l�quido do item considerando a formula
abaixo:
*NETPR �NFPRI = (Base do IPI + ICMS + IPI + PIS + COFINS)/Quantidade
wa_obj_item-netpr = ( wa_exp1505_2-val_base_ipi_mn + wa_exp1505_2-
val_icms_a_rc_mn - wa_exp1505_2-val_ipi_a_rec_mn +
wa_exp1505_2-val_pis_a_rc_mn + wa_exp1505_2-
val_cofins_a_rc_mn ) / wa_obj_item-menge .

ENDIF.

APPEND wa_obj_tax TO i_obj_tax.


ENDIF.
* ENDIF.

* II
CLEAR:wa_obj_tax,wa_ztaxtype.
* IF wa_exp1505_2-val_ii_a_rec_mn > 0.
READ TABLE gt_ztaxtype INTO wa_ztaxtype WITH KEY taxgrp = 'II'
gtaxsit = wa_exp1505_2-
reg_tribut_ii."wa_obj_item-taxsit.
IF sy-subrc EQ 0.
wa_obj_tax-itmnum = wa_obj_item-itmnum.
wa_obj_tax-taxtyp = 'IIXX'."'II01'.
IF wa_ztaxtype-base EQ 'X'.
wa_obj_tax-base = wa_exp1505_2-val_base_cofins_mn.
ENDIF.
IF wa_ztaxtype-rate EQ 'X'.
wa_obj_tax-rate = wa_exp1505_2-pct_ii_ad_valorem.
ENDIF.
IF wa_ztaxtype-taxval EQ 'X'.
wa_obj_tax-taxval = wa_exp1505_2-val_ii_a_rec_mn.
ENDIF.
IF wa_ztaxtype-excbas EQ 'X'.
wa_obj_tax-excbas = wa_exp1505_2-val_base_cofins_mn.
ENDIF.
IF wa_ztaxtype-othbas EQ 'X'.
wa_obj_tax-othbas = wa_exp1505_2-val_base_cofins_mn.
ENDIF.
APPEND wa_obj_tax TO i_obj_tax.
ENDIF.
* ENDIF.

* PIS
CLEAR:wa_obj_tax,wa_ztaxtype.
* IF wa_exp1505_2-val_pis_a_rc_mn > 0.
* wa_obj_item-taxsi5 = wa_exp1505_2-reg_tribut_pis.

READ TABLE gt_ztaxtype INTO wa_ztaxtype WITH KEY taxgrp = 'PIS'


gtaxsit = wa_exp1505_2-
reg_tribut_pis.
IF sy-subrc EQ 0.
wa_obj_tax-itmnum = wa_obj_item-itmnum.
wa_obj_tax-taxtyp = wa_ztaxtype-taxtyp. "'IPIS'.
wa_obj_item-taxlw5 = wa_ztaxtype-taxlaw.
IF wa_ztaxtype-base EQ 'X'.
wa_obj_tax-base = wa_exp1505_2-val_base_pis_mn.
ENDIF.
IF wa_ztaxtype-rate EQ 'X'.
wa_obj_tax-rate = wa_exp1505_2-pct_pis.
ENDIF.
IF wa_ztaxtype-taxval EQ 'X'.
wa_obj_tax-taxval = wa_exp1505_2-val_pis_a_rc_mn.
ENDIF.
IF wa_ztaxtype-excbas EQ 'X'.
wa_obj_tax-excbas = wa_exp1505_2-val_base_pis_mn.
ENDIF.
IF wa_ztaxtype-othbas EQ 'X'.
wa_obj_tax-othbas = wa_exp1505_2-val_base_pis_mn.
ENDIF.
APPEND wa_obj_tax TO i_obj_tax.
ENDIF.
* ENDIF.

** IPI
CLEAR:wa_obj_tax,wa_ztaxtype.
* IF wa_exp1505_2-val_ipi_a_rec_mn > 0.
* wa_obj_item-taxsi2 = wa_exp1505_2-reg_tribut_ipi.
READ TABLE gt_ztaxtype INTO wa_ztaxtype WITH KEY taxgrp = 'IPI'
gtaxsit = wa_exp1505_2-
reg_tribut_ipi.
IF sy-subrc EQ 0.
wa_obj_tax-itmnum = wa_obj_item-itmnum.
wa_obj_tax-taxtyp = wa_ztaxtype-taxtyp. "'IPIS'.
wa_obj_item-taxlw2 = wa_ztaxtype-taxlaw.
IF wa_ztaxtype-base EQ 'X'.
wa_obj_tax-base = wa_exp1505_2-val_base_ipi_mn.
ENDIF.
IF wa_ztaxtype-rate EQ 'X'.
wa_obj_tax-rate = wa_exp1505_2-pct_ipi_ad_valorem.
ENDIF.
IF wa_ztaxtype-taxval EQ 'X'.
wa_obj_tax-taxval = wa_exp1505_2-val_ipi_a_rec_mn.
ENDIF.
IF wa_ztaxtype-excbas EQ 'X'.
wa_obj_tax-excbas = wa_exp1505_2-val_base_ipi_mn.
ENDIF.
IF wa_ztaxtype-othbas EQ 'X'.
wa_obj_tax-othbas = wa_exp1505_2-val_base_ipi_mn.
ENDIF.
APPEND wa_obj_tax TO i_obj_tax.
ENDIF.
* ENDIF.

**** ADI Table


CLEAR :wa_obj_import_adi.
wa_obj_import_adi-itmnum = wa_exp1505_2-item_processo.
wa_obj_import_adi-ndi = wa_exp1505_1-num_di.
wa_obj_import_adi-nadicao = wa_exp1505_2-num_adicao.
wa_obj_import_adi-nseqadic = wa_exp1505_2-num_seq_adicao.
wa_obj_import_adi-cfabricante = wa_exp1505_2-cod_fabricante.
wa_obj_import_adi-vdescdi = wa_exp1505_2-val_desc_especial.
* wa_obj_import_adi-draw_back = wa_exp1505_2-r

APPEND wa_obj_import_adi TO i_obj_import_adi.

APPEND wa_obj_item TO i_obj_item.

ENDLOOP.

*** Header Message


* Message 1
wa_obj_header_msg-seqnum = '01'.
wa_obj_header_msg-linnum = '01'.
wa_obj_header_msg-manual = 'X'.
CONCATENATE 'No.Processo Importa��o:' wa_exp1505_1-num_processo INTO
wa_obj_header_msg-message SEPARATED BY space..
APPEND wa_obj_header_msg TO i_obj_header_msg.

*** Message 2
wa_obj_header_msg-seqnum = '02'.
wa_obj_header_msg-linnum = '01'.
wa_obj_header_msg-manual = 'X'.
CONCATENATE 'DI:' wa_exp1505_1-num_di INTO wa_obj_header_msg-message SEPARATED
BY space.
APPEND wa_obj_header_msg TO i_obj_header_msg.

** Message 3
CLEAR:gv_sum_cof,gv_sum_pis,gv_aux_cof,gv_aux_pis.
LOOP AT t_exp1505_2 INTO wa_exp1505_2.
gv_sum_cof = gv_sum_cof + wa_exp1505_2-val_cofins_a_rc_mn.
gv_sum_pis = gv_sum_pis + wa_exp1505_2-val_pis_a_rc_mn.
ENDLOOP.

gv_aux_pis = gv_sum_pis.
gv_aux_cof = gv_sum_cof.
wa_obj_header_msg-seqnum = '03'.
wa_obj_header_msg-linnum = '01'.
wa_obj_header_msg-manual = 'X'.
CONCATENATE 'PIS:' gv_aux_pis 'COFINS:' gv_aux_cof INTO wa_obj_header_msg-
message SEPARATED BY space.
APPEND wa_obj_header_msg TO i_obj_header_msg.
** Message 4
wa_obj_header_msg-seqnum = '04'.
wa_obj_header_msg-linnum = '01'.
wa_obj_header_msg-manual = 'X'.
CONCATENATE 'VOLUMES:' wa_exp1505_1-volumes_ INTO wa_obj_header_msg-message
SEPARATED BY space.
APPEND wa_obj_header_msg TO i_obj_header_msg.

** Message 5
v_name = wa_exp1505_2-ebeln.

READ TABLE gt_ekko INDEX 1.

IF gt_ekko-bsart EQ 'NB'.
v_id = 'F01'.
ELSEIF gt_ekko-bsart EQ 'ZLPA'.
v_id = 'L01'.
ENDIF.

CLEAR: wa_lines.
REFRESH:gt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = v_id "'F01'
language = 'P'
name = v_name
object = 'EKKO'
TABLES
lines = gt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc EQ 0.
LOOP AT gt_lines INTO wa_lines.

wa_obj_header_msg-seqnum = wa_obj_header_msg-seqnum + 1.
wa_obj_header_msg-linnum = '01'.
wa_obj_header_msg-manual = 'X'.
wa_obj_header_msg-message = wa_lines-tdline.
APPEND wa_obj_header_msg TO i_obj_header_msg.
ENDLOOP.
ENDIF.

** Message 6 * Nota de cabe�alho

IF gt_ekko-bsart EQ 'NB'.
v_id = 'F02'.
ELSEIF gt_ekko-bsart EQ 'ZLPA'.
v_id = 'L02'.
ENDIF.

CLEAR: wa_lines.
REFRESH:gt_lines.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = v_id
language = 'P'
name = v_name
object = 'EKKO'
TABLES
lines = gt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc EQ 0.
LOOP AT gt_lines INTO wa_lines.

wa_obj_header_msg-seqnum = wa_obj_header_msg-seqnum + 1.
wa_obj_header_msg-linnum = '01'.
wa_obj_header_msg-manual = 'X'.
wa_obj_header_msg-message = wa_lines-tdline.
APPEND wa_obj_header_msg TO i_obj_header_msg.
ENDLOOP.
ENDIF.

FREE: t_retorno.

* Create NF writer
CALL FUNCTION 'BAPI_J_1B_NF_CREATEFROMDATA'
EXPORTING
obj_header = wa_obj_header
IMPORTING
e_docnum = docnum
TABLES
obj_partner = i_obj_partner
obj_item = i_obj_item
obj_import_adi = i_obj_import_adi
obj_import_di = i_obj_import_di
obj_item_add = i_obj_item_add
obj_item_tax = i_obj_tax
obj_header_msg = i_obj_header_msg
return = t_retorno.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.

ENDIF.

ENDFUNCTION.

Vous aimerez peut-être aussi