You are on page 1of 11

%%%%%%%% R3 %%%%%%%%

method IF_EX_BADI_J_1BPIS~FILL_REGISTER_0150.
*break-point 'SANDER'.
endmethod.
================================================================================
===============================
method IF_EX_BADI_J_1BPIS~FILL_REGISTER_0150_FI.
* data: lv_kunnr type kunnr,
* lv_stcd3 type stcd3.
*
* if not CS_0150REG-ie is initial.
* lv_kunnr = CS_0150REG-COD_PART+1(10).
* select single stcd3 from kna1 into lv_stcd3
* where kunnr = lv_kunnr.
* if sy-subrc = 0.
* do 3 times.
* replace '.' in lv_stcd3 with ' '.
* condense lv_stcd3.
* enddo.
* CS_0150REG-ie = lv_stcd3.
* else.
* if 1 = 0.
* endif.
* endif.
* endif.
endmethod.
================================================================================
===============================
method IF_EX_BADI_J_1BPIS~FILL_REGISTER_0190.
**--> Mengeneinheit und die Bezeichnung immmer auf Portugiesisch
* CS_REG_0190-reg = '0190'.
*
* CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
* EXPORTING
* input = iv_meins
* LANGUAGE = 'P'
* IMPORTING
* OUTPUT = CS_REG_0190-unid
* SHORT_TEXT = CS_REG_0190-descr
* EXCEPTIONS
* UNIT_NOT_FOUND = 1
* OTHERS = 2.
* IF sy-subrc <> 0.
* CS_REG_0190-unid = 'PE'. "als default
* CS_REG_0190-descr = 'Peas'. "als default
* ENDIF.
endmethod.
================================================================================
===============================
METHOD if_ex_badi_j_1bpis~fill_register_0200.
data: lv_mtext type makt-MAKTX,
lv_meins type mara-meins,
lv_steuc type marc-steuc.
*--> Materialkurztext ermitteln
CALL FUNCTION 'MD_MATERIAL_GET_TEXT'
EXPORTING
ev_matnr = iv_matnr
ev_langu = 'PT'
IMPORTING
ev_mattext = lv_mtext
EXCEPTIONS
no_text_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
CALL FUNCTION 'MD_MATERIAL_GET_TEXT'
EXPORTING
ev_matnr = iv_matnr
ev_langu = 'EN'
IMPORTING
ev_mattext = lv_mtext
EXCEPTIONS
no_text_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
CALL FUNCTION 'MD_MATERIAL_GET_TEXT'
EXPORTING
ev_matnr = iv_matnr
ev_langu = 'DE'
IMPORTING
ev_mattext = lv_mtext
EXCEPTIONS
no_text_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDIF.
if not lv_mtext is initial.
cs_reg_0200-descr_item = lv_mtext.
endif.
**--> Mengeneinheit Materialstamm lesen und portugisisch bersetzen
* select single meins from mara
* into lv_meins
* where matnr = iv_matnr.
*
* if sy-subrc = 0.
* CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
* EXPORTING
* input = lv_meins
* LANGUAGE = 'P'
* IMPORTING
* OUTPUT = CS_REG_0200-unid_inv
* EXCEPTIONS
* UNIT_NOT_FOUND = 1
* OTHERS = 2.
* IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
* endif.
*--> NCM-Code aus Materialstamm ohne Trennzeichen
select single steuc from marc
into lv_steuc
where matnr = iv_matnr
and werks = iv_werks.
if sy-subrc = 0.
replace ALL OCCURRENCES of '.' in lv_steuc with ' ' .
condense lv_steuc no-gaps.
CS_REG_0200-COD_NCM = lv_steuc.
endif.
ENDMETHOD.
================================================================================
===============================
method IF_EX_BADI_J_1BPIS~FILL_REGISTER_0400.
endmethod.
================================================================================
===============================
method IF_EX_BADI_J_1BPIS~FILL_REGISTER_C100.
*LETNIS
CASE IS_J_1BNFDOC-INCO1.
WHEN 'FOB'.
CS_REG_C100-IND_FRT = '1'.
WHEN 'CIF'.
CS_REG_C100-IND_FRT = '0'.
WHEN ''.
CS_REG_C100-IND_FRT = '9'.
WHEN OTHERS.
ENDCASE.
*LETNIS
endmethod.
================================================================================
===============================
method IF_EX_BADI_J_1BPIS~FILL_REGISTER_C120.
data: lt_ztbr11_imp_it type standard table of ztbr11_imp_it,
ls_ztbr11_imp_it type ztbr11_imp_it,
lv_pis type zebr11_stx_pis,
lv_cofins type zebr11_stx_cofins,
ls_reg_c120 like line of et_reg_c120,
lt_ztbr11_imp_hd type standard table of ztbr11_imp_hd,
ls_ztbr11_imp_hd like line of lt_ztbr11_imp_hd.
clear: ls_ztbr11_imp_it,
ls_reg_c120,
ls_ztbr11_imp_hd.
if not is_j_1bnfdoc is initial.
refresh lt_ztbr11_imp_it.
select * from ztbr11_imp_it
into table lt_ztbr11_imp_it
where docnum = is_j_1bnfdoc-docnum.
read table lt_ztbr11_imp_it into ls_ztbr11_imp_it index 1.
if sy-subrc = 0.
select single * from ztbr11_imp_hd
into ls_ztbr11_imp_hd
where impproc_no = ls_ztbr11_imp_it-impproc_no.
loop at lt_ztbr11_imp_it into ls_ztbr11_imp_it.
add ls_ztbr11_imp_it-stx_pis to lv_pis.
add ls_ztbr11_imp_it-stx_cofins to lv_cofins.
endloop.
ls_reg_c120-reg = 'C120'.
ls_reg_c120-cod_doc_imp = '0'.
ls_Reg_c120-num_doc_imp = ls_ztbr11_imp_hd-ndi.
ls_reg_c120-pis_imp = ls_ztbr11_imp_it-stx_pis.
ls_reg_c120-cofins_imp = ls_ztbr11_imp_it-stx_cofins.
append ls_reg_c120 to et_reg_c120.
endif.
endif.
endmethod.
================================================================================
===============================
method IF_EX_BADI_J_1BPIS~FILL_REGISTER_C170.
DATA: lv_cofins_per TYPE J_1BPIS_S_C170-ALIQ_COFINS_PER VALUE '8.6'.
IF cs_reg_c170-ALIQ_COFINS_PER EQ lv_cofins_per.
cs_reg_c170-aliq_cofins_per = '7.6'.
ENDIF.
endmethod.
================================================================================
===============================
METHOD if_ex_badi_j_1bpis~fill_register_c180.
FIELD-SYMBOLS: <lfs_c180cons> TYPE j_1bpis_s_consolidation_c180,
<lfs_c181cons> TYPE j_1bpis_s_c181,
<lfs_c185cons> TYPE j_1bpis_s_c185,
<lfs_c188cons> TYPE j_1bpis_s_c188.
DATA: lt_vbrk TYPE TABLE OF vbrk,
ls_vbrk LIKE LINE OF lt_vbrk.
DATA: lt_vbrp TYPE TABLE OF vbrp,
ls_vbrp LIKE LINE OF lt_vbrp.
DATA: lt_konv TYPE TABLE OF konv,
ls_konv LIKE LINE OF lt_konv.
DATA: lt_j_1bnflin TYPE TABLE OF j_1bnflin,
ls_j_1bnflin LIKE LINE OF lt_j_1bnflin.
DATA: lv_taxsit TYPE j_1batl5-taxsit,
lv_knumv TYPE knumv,
lv_val_ibrx TYPE kawrt,
lv_val_ypis TYPE kawrt,
lv_val_ycof TYPE kawrt,
lv_prz_ypis TYPE kbetr,
lv_prz_ycof TYPE kbetr,
lv_cfop TYPE j_1bcfop,
lv_cst_pis TYPE j_1btaxsi5in,
lv_cst_cof TYPE j_1btaxsi4in,
lv_kzwi2 TYPE kzwi2,
lv_aliq_pis(8) TYPE p DECIMALS 4 VALUE '1.65',
lv_aliq_cofins(8) TYPE p DECIMALS 4 VALUE '3.00',
lv_fkart type fkart,
lv_blart_rv type blart value 'RV',
lv_vkorg type vkorg,
lv_cod_cta(60) type c.
*--> NF-e Positionen lesen
SELECT * FROM j_1bnflin INTO TABLE lt_j_1bnflin
WHERE docnum = is_j_1bnfdoc-docnum.
LOOP AT lt_j_1bnflin INTO ls_j_1bnflin.
*--> Rechnungs-Kopf lesen
SELECT SINGLE knumv fkart vkorg FROM vbrk
INTO (lv_knumv, lv_fkart, lv_vkorg)
WHERE vbeln = ls_j_1bnflin-refkey.
IF ls_j_1bnflin-refkey IS INITIAL.
continue. "kein Rechnungsbeleg gefunden
else.
select count(*) from bkpf where bukrs = 'BR11'
and belnr = ls_j_1bnflin-refkey
and blart = lv_blart_rv.
if sy-dbcnt = 0.
continue. "kein RV-Beleg
endif.
ENDIF.
*--> Prfen, ob Fakturaart relevant
select count(*) from ZTSD_REG_EXCEPT where VKORG = lv_vkorg
and reg = 'C180'
and fkart = lv_fkart.
if sy-dbcnt > 0.
continue. "Fakturaart ausschliessen
endif.
*--> Rechnungs-Positionen lesen
SELECT SINGLE * FROM vbrp INTO ls_vbrp
WHERE vbeln = ls_j_1bnflin-refkey
AND posnr = ls_j_1bnflin-refitm.
IF sy-subrc <> 0.
continue.
ENDIF.
*--> Rechnungs-Konditionen verarbeiten
SELECT SINGLE taxsit FROM j_1batl5
INTO lv_cst_pis
WHERE taxlaw = ls_vbrp-j_1btaxlw5.
SELECT SINGLE taxsit FROM j_1batl4a
INTO lv_cst_cof
WHERE taxlaw = ls_vbrp-j_1btaxlw4.
lv_cfop = ls_vbrp-j_1bcfop+0(4).
SELECT * FROM konv INTO TABLE lt_konv
WHERE knumv = lv_knumv
AND kposn = ls_vbrp-posnr
AND kschl IN ('IBRX', 'YPIS', 'YCOF').
IF sy-subrc = 0.
CLEAR: lv_val_ibrx, lv_val_ypis, lv_val_ycof,
lv_prz_ypis, lv_prz_ycof.
LOOP AT lt_konv INTO ls_konv WHERE kschl = 'IBRX'.
lv_val_ibrx = ls_konv-kwert.
ENDLOOP.
LOOP AT lt_konv INTO ls_konv WHERE kschl <> 'IBRX'.
CASE ls_konv-kschl.
WHEN 'YPIS'.
lv_val_ypis = ls_konv-kwert.
IF lv_val_ypis < 0.
lv_val_ypis = lv_val_ypis * -1.
ENDIF.
WHEN 'YCOF'.
lv_val_ycof = ls_konv-kwert.
IF lv_val_ycof < 0.
lv_val_ycof = lv_val_ycof * -1.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
*--> Ermitteln COD_CTA
CALL FUNCTION 'J_1BSPED_GET_COD_CTA'
EXPORTING
iv_company = 'BR11'
is_j_1bnfdoc = is_j_1bnfdoc
is_j_1bnflin = ls_j_1bnflin
IMPORTING
ev_cod_cta = lv_cod_cta.
*--> Zu fllende Struktur ermitteln
READ TABLE et_consolidation_c180
WITH KEY c180-cod_item = ls_vbrp-matnr
ASSIGNING <lfs_c180cons>.
IF sy-subrc = 0.
*--> Strukturen fllen
*--> Struktur 180
** <lfs_c180cons>-C180-VL_TOT_ITEM = <lfs_c180cons>-C180-VL_TOT_ITEM + ls
_vbrp-kzwi2.
*--> Struktur 181
LOOP AT <lfs_c180cons>-c181_table ASSIGNING <lfs_c181cons>
WHERE cst_pis = lv_cst_pis
AND cfop = lv_cfop
* AND ( aliq_pis = lv_aliq_pis or
aliq_pis = 0 )
and cod_cta = lv_cod_cta.
ADD lv_val_ypis TO <lfs_c181cons>-vl_pis. "PIS tax value
ADD lv_val_ibrx TO <lfs_c181cons>-vl_bc_pis. "PIS tax base value
<lfs_c181cons>-aliq_pis = 165 / 100. "PIS tax rate (in %)
EXIT.
ENDLOOP.
*--> Struktur 185
LOOP AT <lfs_c180cons>-c185_table ASSIGNING <lfs_c185cons>
WHERE cst_cofins = lv_cst_cof
AND cfop = lv_cfop
* AND ( aliq_cofins = lv_aliq_cof
ins or aliq_cofins = 0 )
and cod_cta = lv_cod_cta.
ADD lv_val_ycof TO <lfs_c185cons>-vl_cofins. "COFINS tax value
ADD lv_val_ibrx TO <lfs_c185cons>-vl_bc_cofins. "COFINS tax base value
<lfs_c185cons>-aliq_cofins = 760 / 100. "COFINS tax ra
te (in %)
EXIT.
ENDLOOP.
*--> Struktur 188
LOOP AT <lfs_c180cons>-c188_table ASSIGNING <lfs_c188cons>.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD.
================================================================================
===============================
METHOD if_ex_badi_j_1bpis~fill_register_c190.
FIELD-SYMBOLS: <lfs_c190cons> TYPE j_1bpis_s_consolidation_c190,
<lfs_c191cons> TYPE j_1bpis_s_c191,
<lfs_c195cons> TYPE j_1bpis_s_c195,
<lfs_c198cons> TYPE j_1bpis_s_c198,
<lfs_c199cons> TYPE j_1bpis_s_c199.
DATA: lt_vbrk TYPE TABLE OF vbrk,
ls_vbrk LIKE LINE OF lt_vbrk.
DATA: lt_vbrp TYPE TABLE OF vbrp,
ls_vbrp LIKE LINE OF lt_vbrp.
DATA: lt_konv TYPE TABLE OF konv,
ls_konv LIKE LINE OF lt_konv.
DATA: lt_j_1bnflin TYPE TABLE OF j_1bnflin,
ls_j_1bnflin LIKE LINE OF lt_j_1bnflin.
DATA: lv_taxsit TYPE j_1batl5-taxsit,
lv_knumv TYPE knumv,
lv_val_ibrx TYPE kawrt,
lv_val_ypis TYPE kawrt,
lv_val_ycof TYPE kawrt,
lv_prz_ypis TYPE kbetr,
lv_prz_ycof TYPE kbetr,
lv_cfop TYPE j_1bcfop,
lv_cst_pis TYPE j_1btaxsi5in,
lv_cst_cof TYPE j_1btaxsi4in,
lv_kzwi2 TYPE kzwi2,
lv_aliq_pis(8) TYPE p DECIMALS 4 VALUE '1.65',
lv_aliq_cofins(8) TYPE p DECIMALS 4 VALUE '3.00',
lv_fkart TYPE fkart,
lv_blart_rv TYPE blart VALUE 'RV',
lv_blart_re TYPE blart VALUE 'RE',
lv_blart_kg TYPE blart VALUE 'KG',
lv_blart TYPE blart,
lv_vkorg TYPE vkorg,
lv_cod_cta(60) TYPE c.
*--> NF-e Positionen lesen
SELECT * FROM j_1bnflin
INTO TABLE lt_j_1bnflin
WHERE docnum = is_j_1bnfdoc-docnum.
LOOP AT lt_j_1bnflin INTO ls_j_1bnflin.
*--> Rechnungs-Kopf lesen
SELECT SINGLE knumv fkart vkorg
FROM vbrk
INTO (lv_knumv, lv_fkart, lv_vkorg)
WHERE vbeln = ls_j_1bnflin-refkey.
IF ls_j_1bnflin-refkey IS INITIAL.
CONTINUE. "kein Rechnungsbeleg gefunden
ENDIF.
*--> Belegart prfen
SELECT SINGLE blart
INTO lv_blart
FROM bkpf
WHERE bukrs = 'BR11'
AND belnr = ls_j_1bnflin-refkey.
IF sy-subrc = 0.
IF lv_blart = lv_blart_rv OR
lv_blart = lv_blart_re OR
lv_blart = lv_blart_kg.
ELSE.
CONTINUE. "Belegart nicht relevant
ENDIF.
ELSE.
CONTINUE. "keine Belegart gefunden
ENDIF.
*--> Fr Belegart RV nur definierte Fakturaarten zulassen
if lv_blart = lv_blart_rv.
SELECT COUNT(*)
FROM ztsd_reg_except
WHERE vkorg = lv_vkorg
AND reg = 'C190'
AND fkart = lv_fkart.
IF sy-dbcnt = 0.
CONTINUE. "Fakturaart ausschliessen
ENDIF.
endif.
*--> Rechnungs-Positionen lesen
SELECT SINGLE *
FROM vbrp
INTO ls_vbrp
WHERE vbeln = ls_j_1bnflin-refkey
AND posnr = ls_j_1bnflin-refitm.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
*--> Rechnungs-Konditionen verarbeiten
SELECT SINGLE taxsit
FROM j_1batl5
INTO lv_cst_pis
WHERE taxlaw = ls_vbrp-j_1btaxlw5.
SELECT SINGLE taxsit
FROM j_1batl4a
INTO lv_cst_cof
WHERE taxlaw = ls_vbrp-j_1btaxlw4.
lv_cfop = ls_vbrp-j_1bcfop+0(4).
SELECT * FROM konv
INTO TABLE lt_konv
WHERE knumv = lv_knumv
AND kposn = ls_vbrp-posnr
AND kschl IN ('IBRX', 'YPIS', 'YCOF').
IF sy-subrc = 0.
CLEAR: lv_val_ibrx, lv_val_ypis, lv_val_ycof,
lv_prz_ypis, lv_prz_ycof.
LOOP AT lt_konv INTO ls_konv WHERE kschl = 'IBRX'.
lv_val_ibrx = ls_konv-kwert.
ENDLOOP.
LOOP AT lt_konv INTO ls_konv WHERE kschl <> 'IBRX'.
CASE ls_konv-kschl.
WHEN 'YPIS'.
lv_val_ypis = ls_konv-kwert.
IF lv_val_ypis < 0.
lv_val_ypis = lv_val_ypis * -1.
ENDIF.
WHEN 'YCOF'.
lv_val_ycof = ls_konv-kwert.
IF lv_val_ycof < 0.
lv_val_ycof = lv_val_ycof * -1.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
*--> Ermitteln COD_CTA
CALL FUNCTION 'J_1BSPED_GET_COD_CTA'
EXPORTING
iv_company = 'BR11'
is_j_1bnfdoc = is_j_1bnfdoc
is_j_1bnflin = ls_j_1bnflin
IMPORTING
ev_cod_cta = lv_cod_cta.
*--> Zu fllende Struktur ermitteln
READ TABLE et_consolidation_c190
WITH KEY c190-cod_item = ls_vbrp-matnr
ASSIGNING <lfs_c190cons>.
IF sy-subrc = 0.
*--> Strukturen fllen
*--> Struktur 190
** <lfs_c190cons>-C190-VL_TOT_ITEM = <lfs_c190cons>-C190-VL_TOT_ITEM + ls
_vbrp-kzwi2.
*--> Struktur 191
LOOP AT <lfs_c190cons>-c191_table ASSIGNING <lfs_c191cons>
WHERE cst_pis = lv_cst_pis
AND cfop = lv_cfop
AND cod_cta = lv_cod_cta.
ADD lv_val_ypis TO <lfs_c191cons>-vl_pis. "PIS tax value
ADD lv_val_ibrx TO <lfs_c191cons>-vl_bc_pis. "PIS tax base value
<lfs_c191cons>-aliq_pis = 165 / 100. "PIS tax rate (in %)
EXIT.
ENDLOOP.
*--> Struktur 195
LOOP AT <lfs_c190cons>-c195_table ASSIGNING <lfs_c195cons>
WHERE cst_cofins = lv_cst_cof
AND cfop = lv_cfop
AND cod_cta = lv_cod_cta.
ADD lv_val_ycof TO <lfs_c195cons>-vl_cofins. "COFINS tax value
ADD lv_val_ibrx TO <lfs_c195cons>-vl_bc_cofins. "COFINS tax base value
<lfs_c195cons>-aliq_cofins = 760 / 100. "COFINS tax rate (in %
)
EXIT.
ENDLOOP.
*--> Struktur 198
LOOP AT <lfs_c190cons>-c198_table ASSIGNING <lfs_c198cons>.
ENDLOOP.
*--> Struktur 199
LOOP AT <lfs_c190cons>-c199_table ASSIGNING <lfs_c199cons>.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD.
=========
continuar no d

You might also like