Académique Documents
Professionnel Documents
Culture Documents
*"----------------------------------------------------------------------
*"*"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
*"----------------------------------------------------------------------
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.
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.
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.
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.
wa_obj_item-menge = wa_exp1505_2-qtd_pecas.
wa_obj_item-meins = wa_exp1505_2-cod_unid_med.
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.
* 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.
** 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.
ENDLOOP.
*** 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.
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.
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.