Você está na página 1de 26

Resumo de

configuração –
BBKO

DOCUMENTAÇÃO DE
CONFIGURAÇÃO PARA CIAP
OADB – Definir área de avaliação
OADC – Definir categoria de área

OABC – Determinar aceitação de valor de CAP


Na linha de CIAP, o sistema irá trazer preenchido 01, ou seja, valor idêntico a área 01.
Para modificar entrar na tabela T093A e apagar o valor preenchido na linha aceitação
valor de.

OABD – Determinar aceitação dos parâmetros de avaliação

Cadastrar as contas contábeis no Plano de Contas:


AO90 – Atribuir contas do Razão – Depreciação

EXEMPLO DEPRECIAÇÃO:
OAYZ – Determinar avaliação de classes do imobilizado

*** NAOOO ATRIBUIR PARA AS CLASSE DE IMOBILIZADO EM ANDAMENTO


E IMOBILIZADO DE PS.

DEPRECIAÇÃO

Atualizar Método de Base:


AFAMS – Atualizar métodos de etapa
AFAMP – Atualizar métodos de período

AFAMA – Atualizar chave de depreciação


A configuração pra ZPIS E ZCOF podem ser as mesmas.
Pra ser ZRES, a configuração tem que ser diferente... pra calcular o valor com base no
residual (devido a carga de valor residual).

AO25 – Definir depreciação dependente do tipo de atividade

*** CADASTRAR PARA OS 4 ANOS...

AO73 – Definir tipos de movimento para aquisições


*** ai vai replicando para os outros tipos de movimento

OAYA – Limitar tipos de movimento a áreas de avaliação


Efetuar a limitação para tipo de movimento e conforme a área.

OAYR

ACSET
****** Dados sobre a EXIT *****

No processo de aquisição são necessários 3 desenvolvimentos, sendo:


Duas Enhacement points

1 - ZCARREGAR_CIAP

log.Position : \FU:AMSP_DEPENDENT_AREAS_GET\SE:END\EI
* Como a área CIAP não é dependente da área '01',
* na rotina acima, a mesma é deletada, não sendo carregada.

* Força o carregamento da área, onde será atribuido valores para a mesma


* na exit EXIT_SAPLAPCF_005.
IF ( sy-tcode EQ 'MR8M' OR
sy-tcode EQ 'MIR4' OR
sy-tcode EQ 'MIRO' ) AND
t_tabwa[] IS NOT INITIAL.

SORT t_tabwa BY afabe ASCENDING.


READ TABLE t_tabwa WITH KEY afabe = '50'
TRANSPORTING NO FIELDS
BINARY SEARCH.
IF sy-subrc NE 0.

CLEAR t_tabwa.
READ TABLE t_tabwa INDEX 1.

IF sy-subrc IS INITIAL.
t_tabwa-afabe = '50'.
APPEND t_tabwa.
t_tabwa-afabe = '60'.
APPEND t_tabwa.
t_tabwa-afabe = '70'.
APPEND t_tabwa.
CLEAR t_tabwa.

SORT t_tabwa BY afabe ASCENDING.


ENDIF.

ENDIF.

ENDIF.
2 - ZCARREGAR_CIAP_2

log.Position : \FU:APCF_DIFFERENT_AMOUNTS_GET\SE:BEGIN
* Força o carregamento da área '50' na exit.
IF ( sy-tcode EQ 'MIR4' OR
sy-tcode EQ 'MR8M' OR
sy-tcode EQ 'MIRO' ) AND
T_ANEPI[] IS NOT INITIAL.

SORT t_anepi BY afabe ASCENDING.


READ TABLE t_anepi WITH KEY afabe = '50'
BINARY SEARCH.
IF sy-subrc EQ 0.

CLEAR t_anepi-xawbt.
MODIFY t_anepi INDEX sy-tabix TRANSPORTING xawbt.
CLEAR t_anepi.

ENDIF.
READ TABLE t_anepi WITH KEY afabe = '60'
BINARY SEARCH.
IF sy-subrc EQ 0.

CLEAR t_anepi-xawbt.
MODIFY t_anepi INDEX sy-tabix TRANSPORTING xawbt.
CLEAR t_anepi.

ENDIF.
READ TABLE t_anepi WITH KEY afabe = '70'
BINARY SEARCH.
IF sy-subrc EQ 0.

CLEAR t_anepi-xawbt.
MODIFY t_anepi INDEX sy-tabix TRANSPORTING xawbt.
CLEAR t_anepi.

ENDIF.
ENDIF.
3 – implantaçao da EXIT:
Dados pra construção:

Código da ampliação: AINT0004


Código da função: EXIT_SAPLAPCF_005
Código do include: ZXAPCU05

*&---------------------------------------------------------------------*
*& Include ZXAPCU05
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* BBKO CONSULTING *
*----------------------------------------------------------------------*
* Autor......: Guilherme Lahr *
* Data.......: 08.06.2010 *
* Projeto....: CIAP - Bloco G *
* Transação..: Lançamento da fatura na MIRO *
* Descrição : Atualização dos Valores das Áreas de Avaliação *
* 60-PIS e 70-COFINS *
*----------------------------------------------------------------------*
* Histórico das modificações *
*----------------------------------------------------------------------*
* Autor : Data: *
* Observações: *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* Tipos *
*----------------------------------------------------------------------*
*TYPES: BEGIN OF y_ekpo,
* ebeln TYPE ekpo-ebeln,
* ebelp TYPE ekpo-ebelp,
* mwskz TYPE ekpo-mwskz,
* effwr TYPE ekpo-effwr,
* END OF y_ekpo,
*
* BEGIN OF y_a003,
* kappl TYPE a003-kappl,
* kschl TYPE a003-kschl,
* aland TYPE a003-aland,
* mwskz TYPE a003-mwskz,
* knumh TYPE a003-knumh,
* END OF y_a003,
*
* BEGIN OF y_konp,
* knumh TYPE konp-knumh,
* kopos TYPE konp-kopos,
* kschl TYPE konp-kschl,
* kbetr TYPE konp-kbetr,
* mwsk1 TYPE konp-mwsk1,
* END OF y_konp,
*
* BEGIN OF y_j1btxic1,
* land1 TYPE j_1btxic1-land1,
* shipfrom TYPE j_1btxic1-shipfrom,
* shipto TYPE j_1btxic1-shipto,
* validfrom TYPE j_1btxic1-validfrom,
* rate TYPE j_1btxic1-rate,
* rate_f TYPE j_1btxic1-rate_f,
* END OF y_j1btxic1.

*----------------------------------------------------------------------*
* Tabelas Internas Globais *
*----------------------------------------------------------------------*
DATA: "tl_a003 TYPE STANDARD TABLE OF y_a003,
* tl_a003_aux TYPE STANDARD TABLE OF y_a003,
* tl_konp TYPE STANDARD TABLE OF y_konp,
* tl_j1btxic1 TYPE STANDARD TABLE OF y_j1btxic1,
tl_accit TYPE STANDARD TABLE OF accit,
tl_ekbe TYPE SORTED TABLE OF ekbe
WITH NON-UNIQUE KEY ebeln ebelp.
* tl_litax TYPE SORTED TABLE OF j_1bnfstx
* WITH NON-UNIQUE KEY itmnum.

*----------------------------------------------------------------------*
* Ranges *
*----------------------------------------------------------------------*
*DATA: r_kschl TYPE RANGE OF a003-kschl.

*----------------------------------------------------------------------*
* Variáveis Globais *
*----------------------------------------------------------------------*
*DATA: vl_iva TYPE ekpo-mwskz,
* vl_liquido TYPE taxcom-wrbtr,
* vl_validade(10) TYPE c,
* vl_imposto TYPE komp-mwsbp,
* vl_linhas TYPE i,
* vl_bukrs_frete_on(1) TYPE c,
* vl_iva_frete_on(1) TYPE c,
* vl_quantidade TYPE ekkn-menge.

data: vl_anbtr_icox like anepi-anbtr,


vl_anbtr_zcox like anepi-anbtr.

DATA: vl_indice TYPE sy-tabix.

*----------------------------------------------------------------------*
* Estrutura *
*----------------------------------------------------------------------*
DATA: st_ekbe LIKE LINE OF tl_ekbe,
st_anepi LIKE LINE OF m_anepi.
* st_accit LIKE LINE OF tl_accit,
* st_j1btxic1 LIKE LINE OF tl_j1btxic1,
* st_j1baj TYPE j_1baj.

*----------------------------------------------------------------------*
* Field Symbols *
*----------------------------------------------------------------------*
FIELD-SYMBOLS: <fs_anepi> LIKE LINE OF m_anepi,
* <fs_a003> LIKE LINE OF tl_a003,
* <fs_konp> LIKE LINE OF tl_konp,
* <fs_kschl> LIKE LINE OF r_kschl,
* <fs_litax> LIKE LINE OF tl_litax,
* <fs_j1btxic1> LIKE LINE OF tl_j1btxic1,
* <fs_ekkn> LIKE LINE OF tl_ekkn,
<fs_accit> LIKE LINE OF tl_accit,
* <fs_rbco> TYPE ANY TABLE,
* <fs_bz> TYPE ANY TABLE,
<fs_table> TYPE ANY TABLE,
* <fs_line> TYPE ANY,
* <fs_campo> TYPE ANY,
<fs_fatura> TYPE ANY.

*----------------------------------------------------------------------*
* Constantes *
*----------------------------------------------------------------------*
CONSTANTS: "c_tx TYPE kappl VALUE 'TX',
c_icm1 TYPE kschl VALUE 'ICM1', "ICMS
c_icm2 TYPE kschl VALUE 'ICM2', "ICMS
c_zcm2 TYPE kschl VALUE 'ZCM2', "ICMS
c_zcm3 TYPE kschl VALUE 'ZCM3', "ICMS
c_icop TYPE kschl VALUE 'ICOP', "Imp. Complementar
c_zcop TYPE kschl VALUE 'ZCOP', "Imp. Complementar
c_zpis TYPE kschl VALUE 'ZPIS', "PIS
c_zpi2 TYPE kschl VALUE 'ZPI2', "PIS
c_zpi3 TYPE kschl VALUE 'ZPI3', "PIS
c_zcon TYPE kschl VALUE 'ZCON', "COFINS
c_zco2 TYPE kschl VALUE 'ZCO2', "COFINS
c_zci2 TYPE kschl VALUE 'ZCI2', "COFINS
c_icox TYPE kschl VALUE 'ICOX',
c_zcox TYPE kschl VALUE 'ZCOX',
* c_i(1) TYPE c VALUE 'I',
* c_eq(2) TYPE c VALUE 'EQ',
* c_br TYPE aland VALUE 'BR',
c_miro TYPE sy-tcode VALUE 'MIRO',
c_mr8m TYPE sy-tcode VALUE 'MR8M',
c_migo TYPE sy-tcode VALUE 'MIGO_GR',
c_50 TYPE afabe_d VALUE '50', "CIAP
c_60 TYPE afabe_d VALUE '60', "PIS
c_70 TYPE afabe_d VALUE '70', "COFINS
* BBKO/Diogo Pimentel - Inicio da Inclusao - 08.10.2010
c_ipsn(4) TYPE c VALUE 'IPSN',
c_icon(4) TYPE c VALUE 'ICON',
c_icoa(4) TYPE c VALUE 'ICOA',
c_ipsa(4) TYPE c VALUE 'IPSA',
* BBKO/Diogo Pimentel - Fim da Inclusao - 08.10.2010
* BBKO/TRRE - Inicio da Inclusao - 14.10.2010
c_zpio(4) TYPE c VALUE 'ZPIO',
c_zcin(4) TYPE c VALUE 'ZCIN'.
* BBKO/TRRE - Fim da Inclusao - 14.10.2010
CASE i_rlambu-tcode.
WHEN c_miro OR
c_mr8m.

CLEAR: st_ekpo.
FREE: m_anepi.

m_anepi[] = t_anepi[].

* Remove dados que não sejam de PIS ou COFINS.


SORT m_anepi BY afabe ASCENDING.
DELETE m_anepi WHERE afabe NE c_50
AND afabe NE c_60
AND afabe NE c_70.

CHECK m_anepi[] IS NOT INITIAL.

FREE m_anepi.
m_anepi[] = t_anepi[].

FREE tl_accit.
UNASSIGN <fs_table>.

ASSIGN ('(SAPLAMIN)T_ACCIT[]') TO <fs_table>.


IF <fs_table> IS ASSIGNED.
tl_accit[] = <fs_table>[].
ENDIF.
UNASSIGN: <fs_table>.

READ TABLE tl_accit WITH KEY anln1 = i_rlambu-anln1


anln2 = i_rlambu-anln2
ebeln = i_rlambu-ebeln
ebelp = i_rlambu-ebelp
TRANSPORTING NO FIELDS.
CHECK sy-subrc IS INITIAL.
vl_indice = sy-tabix - 1.

UNASSIGN <fs_accit>.
READ TABLE tl_accit ASSIGNING <fs_accit> INDEX vl_indice.
IF sy-subrc IS INITIAL.
IF <fs_accit>-ebeln EQ i_rlambu-ebeln AND
<fs_accit>-ebelp EQ i_rlambu-ebelp AND
<fs_accit>-buzid EQ 'W'. "Entrada MIGO
vg_migo = vg_migo + 1.
ENDIF.
ENDIF.
UNASSIGN <fs_accit>.

vl_indice = vl_indice - vg_migo.

FREE tl_ekbe.
UNASSIGN <fs_table>.

ASSIGN ('(SAPLMRMP)XEKBE[]') TO <fs_table>.


IF <fs_table> IS ASSIGNED.
tl_ekbe[] = <fs_table>[].
ENDIF.

UNASSIGN <fs_fatura>.
ASSIGN ('(SAPLMR1M)RBKPV-XRECH') TO <fs_fatura>.

UNASSIGN: <fs_anepi>, <fs_table>.

LOOP AT m_anepi ASSIGNING <fs_anepi>.


CHECK <fs_anepi>-afabe EQ c_50 OR
<fs_anepi>-afabe EQ c_60 OR
<fs_anepi>-afabe EQ c_70.

CLEAR: <fs_anepi>-anbtr, vl_anbtr_icox, vl_anbtr_zcox.

READ TABLE tl_accit WITH KEY taxps = vl_indice


anln1 = space
anln2 = space
ebeln = space
ebelp = space
TRANSPORTING NO FIELDS.
CHECK sy-subrc IS INITIAL.

UNASSIGN <fs_accit>.
LOOP AT tl_accit ASSIGNING <fs_accit>
FROM sy-tabix.
IF <fs_accit>-taxps NE vl_indice.
EXIT.
ENDIF.

CASE <fs_anepi>-afabe.
WHEN c_50.
IF <fs_accit>-kschl EQ c_icm2 OR
<fs_accit>-kschl EQ c_zcm2 OR
<fs_accit>-kschl EQ c_zcm3 or
<fs_accit>-kschl EQ c_icop or
<fs_accit>-kschl EQ c_zcop.
<fs_anepi>-anbtr = <fs_anepi>-anbtr +
<fs_accit>-pswbt.
ENDIF.

if <fs_accit>-kschl EQ c_icox.
vl_anbtr_icox = <fs_accit>-pswbt.
elseif <fs_accit>-kschl EQ c_zcox.
vl_anbtr_zcox = <fs_accit>-pswbt.
endif.
WHEN c_60.
IF <fs_accit>-kschl EQ c_zpis OR
<fs_accit>-kschl EQ c_zpi2 OR
<fs_accit>-kschl EQ c_zpi3 OR
* BBKO/Diogo Pimentel - Inicio da Inclusao - 08.10.2010
<fs_accit>-kschl EQ c_ipsn or
<fs_accit>-kschl EQ c_zpio OR
<fs_accit>-kschl EQ c_ipsa.
* BBKO/Diogo Pimentel - Fim da Inclusao - 08.10.2010
<fs_anepi>-anbtr = <fs_accit>-pswbt.
EXIT.
ENDIF.

WHEN c_70.
IF <fs_accit>-kschl EQ c_zcon OR
<fs_accit>-kschl EQ c_zco2 OR
<fs_accit>-kschl EQ c_zci2 OR
* BBKO/Diogo Pimentel - Inicio da Inclusao - 08.10.2010
<fs_accit>-kschl EQ c_icon or
<fs_accit>-kschl EQ c_zcin or
<fs_accit>-kschl EQ c_icoa.
* BBKO/Diogo Pimentel - Fim da Inclusao - 08.10.2010
<fs_anepi>-anbtr = <fs_accit>-pswbt.
EXIT.
ENDIF.

ENDCASE.

ENDLOOP.

if not vl_anbtr_icox is initial and


vl_anbtr_zcox is initial.
<fs_anepi>-anbtr = <fs_anepi>-anbtr - vl_anbtr_icox.
endif.

UNASSIGN <fs_accit>.

CLEAR st_ekbe.
READ TABLE tl_ekbe INTO st_ekbe
WITH TABLE KEY ebeln = i_rlambu-ebeln
ebelp = i_rlambu-ebelp.

* Caso MIRO (lançamento fatura), lança valor positivo.


* Caso MR8M (estorno), lança valor negativo.
CASE i_rlambu-tcode.
WHEN c_miro.
IF <fs_fatura> IS ASSIGNED.
IF st_ekbe-shkzg EQ c_h OR
<fs_fatura> IS INITIAL.
<fs_anepi>-anbtr = ABS( <fs_anepi>-anbtr ).
ENDIF.
IF st_ekbe-shkzg EQ c_h and
<fs_fatura> IS INITIAL.
<fs_anepi>-anbtr = <fs_anepi>-anbtr * -1.
ENDIF.
ENDIF.

WHEN c_mr8m.
IF <fs_fatura> IS ASSIGNED.
IF st_ekbe-shkzg EQ c_h AND
<fs_fatura> IS INITIAL.
<fs_anepi>-anbtr = <fs_anepi>-anbtr * -1.
ENDIF.
ENDIF.

WHEN OTHERS.
ENDCASE.

ENDLOOP.

*** Busca código IVA e valor efetivo.


** SELECT SINGLE *
** FROM ekpo
** INTO st_ekpo
** WHERE ebeln EQ i_rlambu-ebeln
** AND ebelp EQ i_rlambu-ebelp.
**
** CHECK sy-subrc EQ 0.
**
** FREE: tl_accit, tl_j1btxic1.
** UNASSIGN <fs_table>.
**
** ASSIGN ('(SAPLAMIN)T_ACCIT[]') TO <fs_table>.
** IF <fs_table> IS ASSIGNED.
** tl_accit[] = <fs_table>[].
** ENDIF.
** UNASSIGN: <fs_table>.
**
** CLEAR st_accit.
** READ TABLE tl_accit INTO st_accit
** WITH TABLE KEY ebeln = i_rlambu-ebeln
** ebelp = i_rlambu-ebelp.
**
**** Verifica IVA sem ICMS.
*** CLEAR: ztfi_ciap_const, vl_iva_frete_on.
*** SELECT * UP TO 1 ROWS
*** FROM ztfi_ciap_const
*** WHERE bukrs EQ i_rlambu-bukrs
*** AND objeto EQ c_iva_sem_icms
*** AND valor EQ st_accit-mwskz.
*** ENDSELECT.
*** IF sy-subrc IS INITIAL.
***
*** m_anepi[] = t_anepi[].
*** CLEAR st_anepi-anbtr.
*** MODIFY m_anepi FROM st_anepi TRANSPORTING anbtr
*** WHERE afabe EQ c_50
*** OR afabe EQ c_60
*** OR afabe EQ c_70.
***
*** EXIT.
***
*** ENDIF.
**
**** Verifica se será considerado frete para empresa.
*** CLEAR: ztfi_ciap_const, vl_bukrs_frete_on.
*** SELECT * UP TO 1 ROWS
*** FROM ztfi_ciap_const
*** WHERE bukrs EQ i_rlambu-bukrs
*** AND objeto EQ c_bukrs_frete
*** AND valor EQ i_rlambu-bukrs.
*** ENDSELECT.
*** IF sy-subrc IS INITIAL.
*** vl_bukrs_frete_on = c_x.
*** ENDIF.
***
**** Verifica se será considerado frete para empresa.
*** CLEAR: ztfi_ciap_const, vl_iva_frete_on.
*** SELECT * UP TO 1 ROWS
*** FROM ztfi_ciap_const
*** WHERE bukrs EQ i_rlambu-bukrs
*** AND objeto EQ c_iva_frete
*** AND valor EQ st_accit-mwskz.
*** ENDSELECT.
*** IF sy-subrc IS INITIAL.
*** vl_iva_frete_on = c_x.
*** ENDIF.
**
** IF st_accit IS NOT INITIAL." AND
*** vl_iva_frete_on EQ c_x AND
*** vl_bukrs_frete_on EQ c_x.
**
*** Verifica se há frete.
** SELECT land1 shipfrom shipto
** validfrom rate rate_f
** FROM j_1btxic1
** INTO TABLE tl_j1btxic1
** WHERE land1 EQ 'BR'
** AND shipfrom EQ st_ekpo-txjcd
** AND shipto EQ st_accit-txjcd(3).
**
** CLEAR vl_linhas.
** DESCRIBE TABLE tl_j1btxic1 LINES vl_linhas.
** IF vl_linhas GT 1.
**
** LOOP AT tl_j1btxic1 ASSIGNING <fs_j1btxic1>.
** CLEAR vl_validade.
**
** CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
** EXPORTING
** input = <fs_j1btxic1>-validfrom
** IMPORTING
** output = vl_validade.
**
** CONCATENATE vl_validade+6(4) vl_validade+3(2)
** vl_validade+3(2)
** vl_validade(2)
** INTO <fs_j1btxic1>-validfrom.
**
** CLEAR vl_validade.
** ENDLOOP.
**
*** Orderna de forma descendente para pegar sempre o primeiro.
** SORT tl_j1btxic1 BY validfrom DESCENDING.
**
** ENDIF.
** CLEAR vl_linhas.
**
** ENDIF.
**
** CLEAR: st_accit, ztfi_ciap_const.
** FREE: tl_accit, tl_ekkn.
**
*** IF vl_bukrs_frete_on IS INITIAL AND
*** vl_iva_frete_on EQ c_x.
***
*** m_anepi[] = t_anepi[].
*** CLEAR st_anepi-anbtr.
*** MODIFY m_anepi FROM st_anepi TRANSPORTING anbtr
*** WHERE afabe EQ c_50
*** OR afabe EQ c_60
*** OR afabe EQ c_70.
***
*** EXIT.
***
*** ENDIF.
***
*** CLEAR: vl_iva_frete_on, vl_bukrs_frete_on.
**
*** Busca porcentagem destinada ao imobilizado.
** SELECT ebeln ebelp zekkn menge
** FROM ekkn
** INTO TABLE tl_ekkn
** WHERE ebeln EQ i_rlambu-ebeln
** AND ebelp EQ i_rlambu-ebelp
** AND anln1 EQ i_rlambu-anln1
** AND anln2 EQ i_rlambu-anln2.
**
** CLEAR vl_quantidade.
**
** IF sy-subrc IS INITIAL.
** UNASSIGN <fs_ekkn>.
** LOOP AT tl_ekkn ASSIGNING <fs_ekkn>.
** vl_quantidade = vl_quantidade + <fs_ekkn>-menge.
** ENDLOOP.
** UNASSIGN <fs_ekkn>.
**
** ENDIF.
**
** FREE: r_kschl, tl_a003, tl_konp.
**
** PERFORM z_monta_range TABLES r_kschl
** USING: c_i c_eq c_icop space,
** c_i c_eq c_zcop space,
** c_i c_eq c_icm1 space,
** c_i c_eq c_icm2 space,
** c_i c_eq c_zcm2 space,
** c_i c_eq c_zcm3 space,
** c_i c_eq c_zco2 space,
** c_i c_eq c_zcon space,
** c_i c_eq c_zpi2 space,
** c_i c_eq c_zpis space.
**
** SORT r_kschl BY sign option low ASCENDING.
**
** CLEAR vl_iva.
** IF st_accit-mwskz IS INITIAL.
** vl_iva = st_ekpo-mwskz.
** ELSE.
** vl_iva = st_accit-mwskz.
** ENDIF.
**
*** Através do IVA, busca nº da condição
*** que será utilizado na KONP.
** SELECT kappl kschl aland
** mwskz knumh
** FROM a003
** INTO TABLE tl_a003
** WHERE kappl EQ c_tx
** AND kschl IN r_kschl
** AND aland EQ c_br
** AND mwskz EQ vl_iva.
**
** CLEAR vl_iva.
**
** DELETE tl_a003 WHERE knumh IS INITIAL.
**
** IF tl_a003[] IS NOT INITIAL.
**
** tl_a003_aux[] = tl_a003[].
** SORT tl_a003_aux BY knumh kschl mwskz ASCENDING.
** DELETE ADJACENT DUPLICATES FROM tl_a003_aux
** COMPARING knumh kschl mwskz.
**
*** Busca valor montante da condição.
** SELECT knumh kopos kschl kbetr mwsk1
** FROM konp
** INTO TABLE tl_konp
** FOR ALL ENTRIES IN tl_a003_aux
** WHERE knumh EQ tl_a003_aux-knumh
** AND kschl EQ tl_a003_aux-kschl
** AND mwsk1 EQ tl_a003_aux-mwskz.
**
** FREE tl_a003_aux.
**
** ENDIF.
**
** m_anepi[] = t_anepi[].
**
** UNASSIGN <fs_table>.
** FREE: tl_litax, tl_ekbe.
** ASSIGN ('(SAPLJ1BI)LITAX[]') TO <fs_table>.
** IF <fs_table> IS ASSIGNED.
** tl_litax[] = <fs_table>[].
** ENDIF.
**
** UNASSIGN <fs_table>.
** ASSIGN ('(SAPLMRMP)XEKBE[]') TO <fs_table>.
** IF <fs_table> IS ASSIGNED.
** tl_ekbe[] = <fs_table>[].
** ENDIF.
**
** UNASSIGN: <fs_table>, <fs_rbco>.
** ASSIGN ('(SAPLJ1BI)BZ_RBCO[]') TO <fs_rbco>.
** IF <fs_rbco> IS ASSIGNED.
** SORT <fs_rbco> BY ('BUZEI2') ASCENDING.
** ENDIF.
**
** UNASSIGN <fs_fatura>.
** ASSIGN ('(SAPLMR1M)RBKPV-XRECH') TO <fs_fatura>.
**
** UNASSIGN <fs_bz>.
** ASSIGN ('(SAPLJ1BI)BZ[]') TO <fs_bz>.
** IF <fs_bz> IS ASSIGNED.
** SORT <fs_bz> BY ('BUZEI') ASCENDING.
** ENDIF.
**
** SORT: tl_a003 BY kschl ASCENDING,
** tl_konp BY knumh kschl mwsk1 ASCENDING.
**
*** Cálcula imposto do item.
** CLEAR: vl_imposto, vl_liquido.
** PERFORM z_calcula_imposto USING st_ekpo
** CHANGING vl_liquido
** vl_imposto.
**
** UNASSIGN: <fs_anepi>.
** LOOP AT m_anepi ASSIGNING <fs_anepi>.
** CHECK <fs_anepi>-afabe EQ c_50 OR
** <fs_anepi>-afabe EQ c_60 OR
** <fs_anepi>-afabe EQ c_70.
**
** CLEAR: st_ekbe, <fs_anepi>-anbtr.
** UNASSIGN: <fs_kschl>, <fs_a003>.
**
*** Verifica tipo de condição do IVA.
** CASE <fs_anepi>-afabe.
** WHEN c_50.
** LOOP AT r_kschl ASSIGNING <fs_kschl>
** WHERE low EQ c_icm1
** OR low EQ c_icm2
** OR low EQ c_zcm2
** OR low EQ c_zcm3
** OR low EQ c_icop
** OR low EQ c_zcop.
*** Busca nº da condição, verificando pelo imposto.
** READ TABLE tl_a003 ASSIGNING <fs_a003>
** WITH KEY kschl = <fs_kschl>-low
** BINARY SEARCH.
** CHECK sy-subrc IS INITIAL.
** EXIT.
** ENDLOOP.
**
** WHEN c_60. "PIS
** LOOP AT r_kschl ASSIGNING <fs_kschl>
** WHERE low EQ c_zpis
** OR low EQ c_zpi2.
*** Busca nº da condição, verificando pelo imposto.
** READ TABLE tl_a003 ASSIGNING <fs_a003>
** WITH KEY kschl = <fs_kschl>-low
** BINARY SEARCH.
** CHECK sy-subrc IS INITIAL.
** EXIT.
** ENDLOOP.
**
** WHEN c_70. "COFINS
** LOOP AT r_kschl ASSIGNING <fs_kschl>
** WHERE low EQ c_zcon
** OR low EQ c_zco2.
*** Busca nº da condição, verificando pelo imposto.
** READ TABLE tl_a003 ASSIGNING <fs_a003>
** WITH KEY kschl = <fs_kschl>-low
** BINARY SEARCH.
** CHECK sy-subrc IS INITIAL.
** EXIT.
** ENDLOOP.
** ENDCASE.
** UNASSIGN <fs_kschl>.
**
** CHECK <fs_a003> IS ASSIGNED.
**
** READ TABLE tl_ekbe INTO st_ekbe
** WITH TABLE KEY ebeln = i_rlambu-ebeln
** ebelp = i_rlambu-ebelp.
**
** CASE <fs_anepi>-afabe.
**
** WHEN c_50.
**
** IF <fs_bz> IS ASSIGNED AND
** <fs_rbco> IS ASSIGNED.
**
** UNASSIGN: <fs_line>, <fs_campo>.
** READ TABLE <fs_bz> ASSIGNING <fs_line>
** WITH KEY ('BUZEI') = st_ekbe-buzei.
**
** IF sy-subrc IS INITIAL.
**
** ASSIGN COMPONENT 'BUZEI2' OF STRUCTURE <fs_line> TO
** <fs_campo>.
** IF <fs_campo> IS NOT ASSIGNED.
** CONTINUE.
** ENDIF.
**
** UNASSIGN: <fs_line>.
** READ TABLE <fs_rbco> ASSIGNING <fs_line>
** WITH KEY ('BUZEI2') = <fs_campo>.
**
** IF sy-subrc EQ 0.
**
** UNASSIGN <fs_campo>.
** ASSIGN COMPONENT 'ITMNUM' OF STRUCTURE <fs_line> TO
** <fs_campo>.
** IF <fs_campo> IS NOT ASSIGNED.
** CONTINUE.
** ENDIF.
**
** READ TABLE tl_litax WITH TABLE KEY itmnum = <fs_campo>
** TRANSPORTING NO FIELDS.
** IF sy-subrc IS INITIAL.
**
** LOOP AT tl_litax ASSIGNING <fs_litax> FROM sy-tabix.
** IF <fs_litax>-itmnum NE <fs_campo>.
** EXIT.
** ENDIF.
**
** CLEAR st_j1baj.
** CALL FUNCTION 'J_1B_READ_J1BAJ'
** EXPORTING
** i_kschl = <fs_litax>-taxtyp
** IMPORTING
** e_j_1baj = st_j1baj
** EXCEPTIONS
** not_found = 1
** OTHERS = 2.
**
** CHECK sy-subrc IS INITIAL AND
** ( st_j1baj-taxgrp EQ 'ICOP' OR
** st_j1baj-taxgrp EQ 'ICMS' ).
**
** <fs_anepi>-anbtr = <fs_anepi>-anbtr +
** <fs_litax>-taxval.
** ENDLOOP.
**
** CLEAR st_j1baj.
**
** ENDIF.
**
** ENDIF.
**
** ENDIF.
**
** ENDIF.
**
** UNASSIGN: <fs_line>, <fs_campo>,
** <fs_rbco>, <fs_bz>.
** FREE tl_litax.
** CLEAR: st_ekbe.
**
** WHEN c_60 OR c_70.
**
***** Caso há frete, não lança PIS e COFINS.
**** CLEAR st_j1btxic1.
**** READ TABLE tl_j1btxic1 INTO st_j1btxic1 INDEX 1.
****
**** IF st_j1btxic1-rate_f IS INITIAL." ) OR
*** ( vl_bukrs_frete_on EQ c_x AND
*** vl_iva_frete_on EQ c_x ).
**
** UNASSIGN <fs_konp>.
**
*** UNASSIGN: <fs_a003>, <fs_konp>, <fs_kschl>.
*** CLEAR vl_kschl.
**
**** Verifica área de avaliação do registro.
*** CASE <fs_anepi>-afabe.
*** WHEN c_60. "PIS
*** LOOP AT r_kschl ASSIGNING <fs_kschl>
*** WHERE low EQ c_zpis
*** OR low EQ c_zpi2.
*** vl_kschl = <fs_kschl>-low.
*** ENDLOOP.
***
*** WHEN c_70. "COFINS
*** LOOP AT r_kschl ASSIGNING <fs_kschl>
*** WHERE low EQ c_zcon
*** OR low EQ c_zco2.
*** vl_kschl = <fs_kschl>-low.
*** ENDLOOP.
*** ENDCASE.
***
*** UNASSIGN <fs_kschl>.
***
**** Busca nº da condição, verificando pelo imposto.
*** READ TABLE tl_a003 ASSIGNING <fs_a003>
*** WITH KEY kschl = vl_kschl
*** BINARY SEARCH.
*** IF sy-subrc IS INITIAL.
**
*** Busca montante da condição, verificando pelo nº da cond.
** READ TABLE tl_konp ASSIGNING <fs_konp>
** WITH KEY knumh = <fs_a003>-knumh
** kschl = <fs_a003>-kschl
** mwsk1 = <fs_a003>-mwskz
** BINARY SEARCH.
** IF sy-subrc IS INITIAL.
**
*** Valor lançado = Valor liquido +
*** imposto X Montante de Cond.
*** / 1000.
** <fs_anepi>-anbtr = ( vl_liquido + vl_imposto ) *
** <fs_konp>-kbetr / 1000.
** <fs_anepi>-anbtr = ABS( <fs_anepi>-anbtr ).
**
** ENDIF.
**
*** EXIT.
**
*** ENDIF.
**
** UNASSIGN: <fs_konp>.
*** CLEAR vl_kschl.
**
*** ENDLOOP.
**
**** ELSE.
***** Limpa valor do montante que será lançado.
**** CLEAR: st_j1btxic1.
**** CONTINUE.
**** ENDIF.
**
** ENDCASE.
**
** UNASSIGN: <fs_a003>.
**
*** Caso MIRO (lançamento fatura), lança valor positivo.
*** Caso MR8M (estorno), lança valor negativo.
** CASE i_rlambu-tcode.
** WHEN c_miro.
** IF <fs_fatura> IS ASSIGNED.
** IF st_ekbe-shkzg EQ c_h OR
** <fs_fatura> IS INITIAL.
** <fs_anepi>-anbtr = <fs_anepi>-anbtr * -1.
** ENDIF.
** ENDIF.
**
** WHEN c_mr8m.
** <fs_anepi>-anbtr = <fs_anepi>-anbtr * -1.
** IF <fs_fatura> IS ASSIGNED.
** IF st_ekbe-shkzg EQ c_h AND
** <fs_fatura> IS INITIAL.
** <fs_anepi>-anbtr = ABS( <fs_anepi>-anbtr ).
** ENDIF.
** ENDIF.
**
** WHEN OTHERS.
** ENDCASE.
**
** IF NOT st_ekpo-menge IS INITIAL.
** <fs_anepi>-anbtr = ( <fs_anepi>-anbtr /
** st_ekpo-menge ) *
** vl_quantidade.
** ENDIF.
**
** ENDLOOP.
** UNASSIGN <fs_anepi>.
**
** FREE: r_kschl, tl_a003,
** tl_konp.
**
** CLEAR vl_quantidade.
WHEN c_migo.

FREE m_anepi.
m_anepi[] = t_anepi[].

UNASSIGN: <fs_anepi>.
LOOP AT m_anepi ASSIGNING <fs_anepi>.

* Verifica área de avaliação do registro.


CASE <fs_anepi>-afabe.
WHEN c_50 OR "CIAP
c_60 OR "PIS
c_70. "COFINS
* Limpa valor do montante que será lançado.
CLEAR <fs_anepi>-anbtr.
WHEN OTHERS.
CONTINUE.
ENDCASE.

ENDLOOP.
UNASSIGN: <fs_anepi>.

ENDCASE.

Você também pode gostar