You are on page 1of 43

*----------------------------------------------------------------------*

***INCLUDE LYGF_YPCAF01 .
*----------------------------------------------------------------------*
* -------------------------------------------------------------------- *
* Change history *
* -------------------------------------------------------------------- *
* Change : 001 *
* Date : 07.Dec.2016 *
* Author : Arthur Alves Teixeira *
* Request : DEVK902023 *
* Description : Utilizar somente o campo per�odo da tela de sele��o, *
* chamando a fun��o original criada para este escopo e *
* no mesmo padr�o de todos os outros registros. *
* -------------------------------------------------------------------- *
* Change : 002 *
* Date : 07.Jun.2017 *
* Author : Thatiana Narita e Arthur Alves Teixeira *
* Request : DEVK902419 *
* Description : AD. 3068252 - Tipo de Contribuinte *
* -------------------------------------------------------------------- *
* Change : 003 *
* Ticket : 3067499 *
* Date : 27.Jun.2017 *
* Author : Arthur Alves Teixeira *
* Request : DEVK902456 *
* Description : BUSCAR_NOTA_FISCAL - Virtual Forge: 'Multiple identical*
* SELECT Statements in the same Module'. *
* Same functional definition used in buscar_nota_fiscal, *
* (include LYGF_YPCAF01) but another technical definition*
* New logic in 'YSDMMFCMSEG_CARGA' function. *
* -------------------------------------------------------------------- *
* Change : 004 *
* Date : 18.Jul.2017 *
* Author : Thatiana Narita *
* Request : *
* Description : AD. 3071346 - Realizar o assign somente quando tiver *
* valor *
* -------------------------------------------------------------------- *
* Change : 005 *
* Date : 17.May.2018 *
* Author : CDC *
* Request : DEVK903089 *
* Description : Ch.3094011 - REINF add field IND_DESON_FOLHA_CPRB *
*----------------------------------------------------------------------*
* Change : 006 *
* Date : 23.Set.2020 *
* Author : Marcio Bogaz de Aguiar *
* Request : DEVK903974 *
* Description : Ajustes Performance - Integra��o SAP *
*----------------------------------------------------------------------*
* Change : 007 *
* Date : 14.Out.2020 *
* Author : Bruno Vin�cius de Andrade Xavier *
* Request : DEVK903974 *
* Description : Modification of USING Parameters in Subroutine *
* -------------------------------------------------------------------- *
* Change : 008 *
* Date : 31.Mai.2021 *
* Author : Arthur Alves Teixeira *
* Request : DEVK904253 *
* Description : Retirar SELECT de dentro de LOOP. *
* -------------------------------------------------------------------- *
* Change : 009 *
* Date : 21.Jun.2021 *
* Author : Diego Pereira Moretti *
* Request : DEVK904275 *
* Description : Code Review - Modification of USING Parameters *
* -------------------------------------------------------------------- *

*FORMS*
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form prepara_range_conta
*&---------------------------------------------------------------------*
FORM prepara_range_conta TABLES p_range STRUCTURE rng_objnr
USING p_conta.

p_range-sign = 'I'.
p_range-option = 'EQ'.
p_range-low = p_conta.
APPEND p_range.

ENDFORM. " prepara_range_conta


*&---------------------------------------------------------------------*
*& Form CARREGAr_tabelas_filiais
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PFJ_CODIGO text
*----------------------------------------------------------------------*
FORM carregar_tabelas_filiais TABLES address STRUCTURE sadr
branch_data STRUCTUREj_1bbranch
address1 STRUCTURE addr1_val
USING p_pfj
p_emp
CHANGING w_cgc
"009+
* SGS - 21/01/13 - AD. 2909499 - Integra��o do
CNAE
w_econi.

DATA: w_branch LIKE j_1bbranch-branch.

MOVE: p_pfj TO w_branch,


p_emp TO w_emp.

IF w_branch = '0000'.
MOVE: p_pfj+6(4) TO w_branch.
ENDIF.

* CALL FUNCTION 'J_1BREAD_BRANCH_DATA' "008-


* EXPORTING "008-
* branch = w_branch "008-
* bukrs = p_emp "008-
* IMPORTING "008-
* address = address "008-
* branch_data = branch_data "008-
* cgc_number = w_cgc "008-
* address1 = address1 "008-
* EXCEPTIONS "008-
* branch_not_found = 1 "008-
* address_not_found = 2 "008-
* company_not_found = 3 "008-
* OTHERS = 4. "008-
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno "006+ "008-
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. "006+ "008-
* ENDIF. "006+ "008-
READ TABLE t_branch_data "008+
INTO branch_data "008+
WITH KEY bukrs = w_emp "008+
branch = w_branch "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR branch_data. "008+
ENDIF. "008+

READ TABLE t_address "008+


INTO address "008+
WITH KEY adrnr = branch_data-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR address. "008+
ENDIF. "008+

READ TABLE t_address1 "008+


INTO address1 "008+
WITH KEY addrnumber = branch_data-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR address1. "008+
ENDIF. "008+

READ TABLE t_cgc_n "008+


INTO w_cgc_n "008+
WITH KEY bukrs = w_emp "008+
branch = w_branch "008+
BINARY SEARCH. "008+
IF sy-subrc IS INITIAL. "008+
w_cgc = w_cgc_n-cgc. "008+
ELSE. "008+
CLEAR w_cgc. "008+
ENDIF. "008+

* CBT/ASC 25/06/07 Seleciona a razao social em name1 e name2


* SELECT SINGLE addrnumber date_from city2 street house_num1
* SELECT SINGLE addrnumber date_from city2 "008-
* street house_num1 name1 "008-
*ame2 "008-
* country date_from str_suppl1 "008-
* post_code1 city_code city1 "008-
* SYN - ASC - 29/06/07 - Carrega conte�do da coluna TAXJURCODE, que
* cont�m a UF e o C�digo do Munic�pio
* tel_number fax_number
* tel_number fax_number taxjurcode "008-
* INTO CORRESPONDING FIELDS OF adrc "008-
* FROM adrc "008-
* WHERE addrnumber = address-adrnr "008-
* AND date_from = address1-date_from. "008-

READ TABLE t_adrc "008+


INTO w_adrc "008+
WITH KEY addrnumber = address1-addrnumber "008+
date_from = address1-date_from "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "006+
CLEAR: adrc. "006+
ENDIF.

* SELECT SINGLE kunnr regio


* INTO CORRESPONDING FIELDS OF kna1
* FROM kna1
* WHERE kunnr = p_pfj.

* SELECT SINGLE addrnumber persnumber date_from consnumber "008-


* smtp_addr "008-
* INTO CORRESPONDING FIELDS OF adr6 "008-
* FROM adr6 "008-
* WHERE addrnumber = address-adrnr "008-
* SGS - 19/02/14 - AD. 2951804 - integra��o do e-mail. O campo PERSNUMBER sempre
est� vazio
* and PERSNUMBER = W_BRANCH
* SGS - 19/02/14 - AD. 2951804
* AND date_from = address1-date_from. "008-

READ TABLE t_adr6 "008+


INTO w_adr6 "008+
WITH KEY addrnumber = address1-addrnumber "008+
date_from = address1-date_from "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "006+
CLEAR: adr6. "006+
ENDIF.

*cdc - ocor 2608063 - 05/05/2011 - O campo E-MAIL n�o est� sendo populado.
IF adr6-smtp_addr IS INITIAL.

* SELECT SINGLE addrnumber persnumber date_from "008-


* consnumber "008-
* smtp_addr "008-
* INTO CORRESPONDING FIELDS OF adr6 "008-
* FROM adr6 "008-
* WHERE addrnumber = address-adrnr "008-
* and PERSNUMBER = W_BRANCH /*Tento buscar sem BRANCH*/
* AND date_from = address1-date_from. "008-

READ TABLE t_adr6 "008+


INTO w_adr6 "008+
WITH KEY addrnumber = address1-addrnumber "008+
date_from = address1-date_from "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "006+
CLEAR: adr6. "006+
ENDIF.

ENDIF.
*cdc fim

* SELECT SINGLE addrnumber persnumber date_from consnumber "008-


* uri_srch "008-
* INTO CORRESPONDING FIELDS OF adr12 "008-
* FROM adr12 "008-
* WHERE addrnumber = address-adrnr "008-
* SGS - 19/02/14 - AD. 2951804 - integra��o do e-mail. O campo PERSNUMBER sempre
est� vazio
* and PERSNUMBER = W_BRANCH
* SGS - 19/02/14 - AD. 2951804
* AND date_from = address1-date_from. "008-

READ TABLE t_adr12 "008+


INTO w_adr12 "008+
WITH KEY addrnumber = address1-addrnumber "008+
date_from = address1-date_from "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "006+
CLEAR: adr12. "006+
ENDIF.

* SELECT SINGLE adrnr natio name1 name2 name3 name4 "008-


* INTO CORRESPONDING FIELDS OF sadr "008-
* FROM sadr "008-
* WHERE adrnr = address-adrnr "008-
* AND natio = address1-nation. "008-
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* CLEAR: sadr. "006+ "008-
* ENDIF. "008-

* SGS - 21/01/13 - AD. 2909499 - Integra��o do CNAE


SELECT SINGLE econi INTO w_econi "#EC CI_BUFFJOIN
FROM t7brb1 JOIN t7brae
ON t7brb1~econa = t7brae~econa
BYPASSING buffer "006+
WHERE bukrs = branch_data-bukrs
AND filia = branch_data-branch. "#EC CI_BUFFJOIN

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: w_econi. "006+
ENDIF.

* SGS - 21/01/13 - AD. 2909499

ENDFORM. " CARREGAr_tabelas_filiais


*&---------------------------------------------------------------------*
*& Form preparar_segmentos_filiais
*&---------------------------------------------------------------------*
FORM preparar_segmentos_filiais TABLES address STRUCTURE sadr
branch_data STRUCTURE j_1bbranch
cgc_number STRUCTURE j_1bwfield
address1 STRUCTURE addr1_val
USING w_cgc
* SGS - 21/01/13 - AD. 2909499 - Integra��o
do CNAE.
w_econi.

CONSTANTS: c_codigo_categoria(2) TYPE c VALUE 'BR',


c_tp_pessoa(1) TYPE c VALUE 'J'
.

FIELD-SYMBOLS: <rs> TYPE ANY.

CONCATENATE w_emp branch_data-branch INTO ti_yfislfa1-pfj_codigo.


CONCATENATE w_emp branch_data-branch INTO ti_yfislfa1-chave_origem.

* if branch_data-stcd2 is initial.
* move: branch_data-stcd1 to ti_yfislfa1-ind_fisica_juridica.
* else.
* move: branch_data-stcd2 to ti_yfislfa1-ind_fisica_juridica.
* endif.

*Inicio da Alteracao DMA


* if branch_data-stcd2 is initial.
* move: branch_data-stcd1 to ti_yfislfa1-cpf_cgc.
* else.
* move: branch_data-stcd2 to ti_yfislfa1-cpf_cgc.
* endif.

IF NOT branch_data-name IS INITIAL.


* CBT/ASC 25/06/07 Move a razao social name1 nam2
* CONCATENATE adrc-name1 adrc-name2 "008-
CONCATENATE w_adrc-name1 "008+
w_adrc-name2 "008+
INTO ti_yfislfa1-razao_social
SEPARATED BY space.
MOVE: w_cgc TO ti_yfislfa1-cpf_cgc,
sy-uname TO ti_yfislfakna-usnam,
sy-cprog TO ti_yfislfakna-cprog,
c_tp_pessoa TO ti_yfislfakna-tp_pessoa,
c_codigo_categoria TO ti_yfislfa1-codigo_categoria,
branch_data-branch TO ti_yfislfa1-codigo_usual,
* CBT/ASC 25/06/07 Razao social anterior
* branch_data-name TO ti_yfislfa1-razao_social,
branch_data-name TO ti_yfislfa1-nome_fantasia,
* adrc-country "008-
w_adrc-country "008+
TO ti_yfislfa1-ind_nacional_estrangeira,
* adrc-city2 "008-
w_adrc-city2 "008+
TO ti_yfislfa1-bairro,
branch_data-state_insc TO ti_yfislfa1-inscr_estadual,
branch_data-munic_insc TO ti_yfislfa1-ccm,
branch_data-adrnr TO ti_yfislfa1-loc_codigo,
branch_data-adrnr TO ti_yfislfa1-codigo_usual,
* adrc-street "008-
w_adrc-street "008+
TO ti_yfislfa1-logradouro,
* adrc-house_num1 "008-
w_adrc-house_num1 "008+
TO ti_yfislfa1-numero,
* adrc-str_suppl1 "008-
w_adrc-str_suppl1 "008+
TO ti_yfislfa1-complemento,
* adrc-post_code1 "008-
w_adrc-post_code1 "008+
TO ti_yfislfa1-cep,
* SYN - ASC - 29/06/07 - Carrega UF e Codigo do Municipio
* para a coluna MUN_CODIGO
* adrc-city_code TO ti_yfislfa1-mun_codigo,
* adrc-taxjurcode "008-
w_adrc-taxjurcode "008+
TO ti_yfislfa1-mun_codigo,
* adrc-city1 "008-
w_adrc-city1 "008+
TO ti_yfislfa1-municipio,
address-regio TO ti_yfislfa1-unidade_federativa,
* adrc-country "008-
w_adrc-country "008+
TO ti_yfislfa1-pais,
* adrc-tel_number "008-
w_adrc-tel_number "008+
TO ti_yfislfa1-telefone1,
* adrc-tel_number "008-
w_adrc-tel_number "008+
TO ti_yfislfa1-telefone2,
* adrc-fax_number "008-
w_adrc-fax_number "008+
TO ti_yfislfa1-fax,
* adr6-smtp_addr "008-
w_adr6-smtp_addr "008+
TO ti_yfislfa1-e_mail,
* adr12-uri_srch "008-
w_adr12-uri_srch "008+
TO ti_yfislfa1-web_site,
sy-datum TO ti_yfislfa1-data_alteracao,
sy-uzeit TO ti_yfislfa1-hora_alteracao.
* IF NOT adrc-date_from IS INITIAL OR "008-
* adrc-date_from NE '00000000'. "008-
IF NOT w_adrc-date_from IS INITIAL OR "008+
w_adrc-date_from NE '00000000'. "008+
* MOVE adrc-date_from "008-
MOVE w_adrc-date_from "008+
TO ti_yfislfa1-dt_inicio.
ENDIF.

* SGS - 14/03/14 - AD. 2954139 - se n�o encontra dever ser nulo e n�o 00000
IF w_econi NE 0.
* SGS - 14/03/14 - AD. 2954139
* SGS - 21/01/13 - AD. 2909499 - Integra��o do CNAE.
MOVE w_econi TO ti_yfislfa1-cnae.
* SGS - 21/01/13 - AD. 2909499
ENDIF.

*cdc 13/10/16 - Ch.3045316 inclusao do tipo de contribuinte para estabelecimento


* MOVE branch_data-kr_indtype TO ti_yfislfa1-tico_codigo.
ASSIGN ('branch_data-INDTYP') TO <rs>.
IF <rs> IS ASSIGNED.
MOVE <rs> TO ti_yfislfa1-tico_codigo.
ENDIF.
UNASSIGN <rs>.
*cdc 13/10/16 - Ch.3045316
ENDIF.
ENDFORM. " preparar_segmentos_filiais
*&---------------------------------------------------------------------*
*& Form CARREGAr_tabelas_clientes
*&---------------------------------------------------------------------*
FORM carregar_tabelas_clientes USING p_pfj.

* CLEAR: ti_kna1, adrc, adr6, adr12. " SGS - 11/07/14 "008-


* DATA: vl_icmstaxpay TYPE dd03l-fieldname, "002+ "008-
* vl_icmstaxpay_desc TYPE dd03l-fieldname, "002+ "008-
* vl_table_icms TYPE tabname, "002+ "008-
* vl_fields(1000) TYPE c, "002+ "008-
* tl_fields LIKE TABLE OF vl_fields. "002+ "008-
* wl_kna1_itaxpay TYPE ty_kna1_itaxpay. "002+ "008-
* FIELD-SYMBOLS <fs_j_1bicmstaxpay> TYPE ANY. "002+ "008-
* SELECT SINGLE valor "002+ "008-
* INTO v_utiliza_icmstaxpay "002+ "008-
* FROM ysynparamgeral "002+ "008-
* WHERE parametro = 'PFJ_UTILIZA_ICMSTAXPAY'. "002+ "008-
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* CLEAR: v_utiliza_icmstaxpay. "006+ "008-
* ENDIF. "008-

* SGS - 13/05/2015 - AD. 2993904 - incluir campo SUFRAMA de forma din�mica


* select single KUNNR LAND1 NAME1 NAME2 ORT01 ORT02 PFACH PSTL2 REGIO
* TELF1 TELFX ADRNR ERDAT KTOKD NAME3 NAME4 STCD1 STCD2
* TELF2 TELX1 STCEG STKZN TXJCD STCD3 STCD4 STCD3 STCD4
* XICMS XXIPI CITYC XSUBT
* SYN - ASC - 27/06/07 - Pega a coluna TXJCD
* que cont�m a UF e o C�digo IBGE do Munic�pio
* regio ktokd telf1 telf2 telfx telx1
* CBT 11/05/08 col XSUBT Grupo cliente de c�lculo de
* substitui��o fiscal - IND_SUBSTITUTO_ICMS
* SGS - 14/06/12 - AD. 2887246 - Informa��o para paremtriza��o de
tipo de contribuinte
* BRSCH
* into corresponding fields of KNA1
* into corresponding fields of TI_KNA1
* SGS - 14/06/12 - AD. 2887246

* SELECT * INTO CORRESPONDING FIELDS OF TABLE ti_kna1 "008-


* SGS - 13/05/2015 - AD. 2993904
* FROM kna1 "008-
* WHERE kunnr = p_pfj. "008-

CLEAR ti_kna1. "008+


READ TABLE ti_kna1 "008+
WITH KEY kunnr = p_pfj "008+
BINARY SEARCH. "008+
CHECK sy-subrc IS INITIAL. "008+

* IF v_utiliza_icmstaxpay = 'N' OR "002+ "008-


* v_utiliza_icmstaxpay IS INITIAL. "002+ "008-
* READ TABLE ti_kna1 INDEX 1. "008-
* IF NOT ti_kna1[] IS INITIAL. "006+ "008-
* SGS - 14/06/12 - AD. 2887246 - Informa��o para paremtriza��o de tipo de
contribuinte
* SELECT brsch brtxt "008-
* INTO CORRESPONDING FIELDS OF TABLE ti_t016t "008-
* FROM t016t "008-
* FOR ALL ENTRIES IN ti_kna1 "008-
* WHERE spras = 'P' " Idioma Portugues "008-
* AND brsch EQ ti_kna1-brsch "008-
* ORDER BY PRIMARY KEY. "006+ "008-
* SORT ti_t016t ASCENDING BY brsch. "008-
* ENDIF. "008-
* ELSEIF v_utiliza_icmstaxpay = 'S'. "002+ "008-
* SELECT SINGLE "002+ "008-
* fieldname "002+ "008-
* INTO vl_icmstaxpay "002+ "008-
* FROM dd03l "002+ "008-
* WHERE tabname = 'KNA1' "002+ "008-
* AND fieldname = 'ICMSTAXPAY'. "002+ "008-
* IF sy-subrc IS INITIAL. "002+ "008-
* SELECT SINGLE "002+ "008-
* fieldname "002+ "008-
* INTO vl_icmstaxpay_desc "002+ "008-
* FROM dd03l "002+ "008-
* WHERE tabname = 'J_1BTICMSTAXPAYT' "002+ "008-
* AND fieldname = 'J_1BICMSTAXPAYX'. "002+ "008-
* IF sy-subrc IS INITIAL. "002+ "008-
* CONCATENATE 'J_1BICMSTAXPAY' "002+ "008-
* 'J_1BICMSTAXPAYX ' "002+ "008-
* INTO vl_fields "002+ "008-
* SEPARATED BY space. "002+ "008-
* APPEND vl_fields TO tl_fields. "002+ "008-
* LOOP AT ti_kna1. "002+ "008-
* ASSIGN ('TI_KNA1-ICMSTAXPAY') "002+ "008-
* TO <fs_j_1bicmstaxpay>. "002+ "008-
* CHECK <fs_j_1bicmstaxpay> IS ASSIGNED "002+ "008-
* IF <fs_j_1bicmstaxpay> IS ASSIGNED "002+ "008-
* AND sy-subrc IS INITIAL. "002+ "008-
* CHECK <fs_j_1bicmstaxpay> IS NOT INITIAL. "002+ "008-
* wl_kna1_itaxpay-kunnr = ti_kna1-kunnr. "002+ "008-
* wl_kna1_itaxpay-icmstaxpay "002+ "008-
* = <fs_j_1bicmstaxpay>. "002+ "008-
* APPEND wl_kna1_itaxpay "002+ "008-
* TO t_kna1_itaxpay. "002+ "008-
* CLEAR wl_kna1_itaxpay. "002+ "008-
* ENDLOOP. "002+ "008-
* SORT t_kna1_itaxpay "002+ "008-
* BY kunnr. "002+ "008-
* IF NOT t_kna1_itaxpay[] IS INITIAL. "002+ "008-
* vl_table_icms = 'J_1BTICMSTAXPAYT'. "002+ "008-
* DATA tl_kna1_itp TYPE "002+ "008-
* TABLE OF ty_kna1_itaxpay. "002+ "008-
* tl_kna1_itp[] = t_kna1_itaxpay[]. "002+ "008-
* SORT tl_kna1_itp "002+ "008-
* BY icmstaxpay. "002+ "008-
* DELETE ADJACENT DUPLICATES "002+ "008-
* FROM tl_kna1_itp "002+ "008-
* COMPARING icmstaxpay. "002+ "008-
* SELECT (tl_fields) "002+ "008-
* INTO TABLE t_1bticmstaxpayt "002+ "008-
* FROM (vl_table_icms) "002+ "008-
* FOR ALL ENTRIES IN tl_kna1_itp "002+ "008-
* WHERE spras = 'P' "002+ "008-
* AND j_1bicmstaxpay "002+ "008-
* = tl_kna1_itp-icmstaxpay. "002+ "008-
* IF sy-subrc IS INITIAL. "002+ "008-
* SORT t_1bticmstaxpayt "002+ "008-
* BY j_1bicmstaxpay. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-

* SGS - 13/05/2015 - AD. 2993904 - incluir campo SUFRAMA de forma din�mica


* loop at TI_KNA1.
* W_TABIX = SY-TABIX. "salva o indexador do loop
* read table TI_T016T with key BRSCH = TI_KNA1-BRSCH binary search.
* if SY-SUBRC is initial.
* move TI_T016T-BRTXT to TI_KNA1-BRTXT.
* modify TI_KNA1 index W_TABIX.
* endif.
* endloop.
* SGS - 13/05/2015 - AD. 2993904
* SGS - 14/06/12 - AD. 2887246

* SELECT SINGLE addrnumber date_from city2 "008-


* street house_num1 "008-
* str_suppl1 post_code1 city_code "008-
* INTO CORRESPONDING FIELDS OF adrc "008-
* FROM adrc "008-
* WHERE addrnumber = ti_kna1-adrnr. "008-
* AND date_from = kna1-erdat.
READ TABLE t_adrc "008+
INTO w_adrc "008+
WITH KEY addrnumber = ti_kna1-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR w_adrc. "008+
ENDIF. "008+

* SELECT SINGLE addrnumber persnumber "008-


* date_from consnumber "008-
* smtp_addr "008-
* INTO CORRESPONDING FIELDS OF adr6 "008-
* FROM adr6 "008-
* WHERE addrnumber = ti_kna1-adrnr. "008-
* SGS - 19/02/14 - AD. 2951804 - integra��o do e-mail. O campo PERSNUMBER sempre
est� vazio
* and PERSNUMBER = TI_KNA1-KUNNR.
* SGS - 19/02/14 - AD. 2951804
* AND date_from = kna1-erdat.
READ TABLE t_adr6 "008+
INTO w_adr6 "008+
WITH KEY addrnumber = ti_kna1-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR w_adr6. "008+
ENDIF. "008+

* SELECT SINGLE addrnumber persnumber "008-


* date_from consnumber "008-
* uri_srch "008-
* INTO CORRESPONDING FIELDS OF adr12 "008-
* FROM adr12 "008-
* WHERE addrnumber = ti_kna1-adrnr. "008-
* SGS - 19/02/14 - AD. 2951804 - integra��o do e-mail. O campo PERSNUMBER sempre
est� vazio
* and PERSNUMBER = TI_KNA1-KUNNR.
* SGS - 19/02/14 - AD. 2951804
* AND date_from = kna1-erdat.
READ TABLE t_adr12 "008+
INTO w_adr12 "008+
WITH KEY addrnumber = ti_kna1-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR w_adr12. "008+
ENDIF. "008+

ENDFORM. " CARREGAr_tabelas_clientes


*&---------------------------------------------------------------------*
*& Form preparar_segmento_classifica
*&---------------------------------------------------------------------*
FORM preparar_segmento_classifica USING p_pfj.

SELECT SINGLE ktokk


INTO CORRESPONDING FIELDS OF lfa1
FROM lfa1
WHERE lifnr = p_pfj.

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: lfa1. "006+
ENDIF.

ENDFORM. " preparar_segmento_classifica


*&---------------------------------------------------------------------*
*& Form preparar_segmentos_clientes
*&---------------------------------------------------------------------*
FORM preparar_segmentos_clientes
* SGS - 13/05/2015 - AD. 2993904 - incluir campo SUFRAMA de forma din�mica
USING v_suframa.
* SGS - 13/05/2015 - AD. 2993904
DATA t_1bticmstaxpayt TYPE TABLE OF ty_1bticmstaxpayt. "001+
CONSTANTS: c_codigo_categoria(2) TYPE c VALUE 'AG',
* c_chave_origem(4) TYPE c VALUE 'KNA1',
c_tp_pessoa(1) TYPE c VALUE 'K'
.
* TYN - 27/04/2016 - AD. 3036084 - Incluir campo CNAE (Clientes/Fornecedores) de
forma din�mica.
* DATA: v_cnae_c TYPE dd03l-fieldname, "008-
DATA v_cnae_f TYPE dd03l-fieldname.
* v_crtn_c TYPE dd03l-fieldname. "008-
* TYN - 27/04/2016 - AD. 3036084

* DATA: wl_kna1_itaxpay TYPE ty_kna1_itaxpay, "002+ "008-


DATA: wl_1bticmstaxpayt TYPE ty_1bticmstaxpayt. "002+
* v_icmstaxpay_c LIKE ti_yfislfa1-tico_codigo. "002+ "008-
FIELD-SYMBOLS: <fc> TYPE ANY. "002+

* TYN - 03/04/2017 - AD. 3063629 - Utilizar o campo suframa de forma dinamica.


DATA: v_suframa_c LIKE ti_yfislfa1_1-inscr_suframa.
* TYN - 03/04/2017 - AD. 3063629

* SGS - 13/05/2015 - AD. 2993904 - incluir campo SUFRAMA de forma din�mica


FIELD-SYMBOLS: <fs> TYPE ANY.
* SGS - 13/05/2015 - AD. 2993904
* TYN - 10/11/2015 - AD. 3022074 - Ajuste para ler a tabela TI_KNA1 e inserir
informa��o na W_RAZAO_SOCIAL
* READ TABLE ti_kna1 INDEX 1. "008-
*tyn - 10/11/2015 - AD. 3022074

CONCATENATE ti_kna1-name1 ti_kna1-name2 ti_kna1-name3 ti_kna1-name4 INTO


w_razao_social
* SGS - 23/10/12 - AD.2900395 - Espa�o entre campos de raz�o social.
SEPARATED BY space.
* SGS - 23/10/12 - AD.2900395

IF NOT w_razao_social IS INITIAL.

MOVE: sy-uname TO ti_yfislfakna-usnam,


sy-cprog TO ti_yfislfakna-cprog,
c_tp_pessoa TO ti_yfislfakna-tp_pessoa,
ti_kna1-ktokd TO ti_yfislfakna-elemento,
c_codigo_categoria TO ti_yfislfa1-codigo_categoria,
ti_kna1-kunnr TO ti_yfislfa1-pfj_codigo,
ti_kna1-kunnr TO ti_yfislfa1-codigo_usual,
w_razao_social TO ti_yfislfa1-razao_social,
ti_kna1-name1 TO ti_yfislfa1-nome_fantasia,
ti_kna1-kunnr TO ti_yfislfa1-chave_origem,
ti_kna1-stkzn TO ti_yfislfa1-ind_fisica_juridica,
ti_kna1-land1 TO ti_yfislfa1-ind_nacional_estrangeira,
ti_kna1-erdat TO ti_yfislfa1-dt_inicio,
ti_kna1-stcd1 TO ti_yfislfa1-cpf_cgc,
* adrc-city2 TO ti_yfislfa1-bairro, "008-
w_adrc-city2 TO ti_yfislfa1-bairro, "008+
ti_kna1-stcd3 TO ti_yfislfa1-inscr_estadual,
ti_kna1-stcd4 TO ti_yfislfa1-ccm,
ti_kna1-adrnr TO ti_yfislfa1-loc_codigo,
ti_kna1-adrnr TO ti_yfislfa1-codigo_usual,
* adrc-street TO ti_yfislfa1-logradouro, "008-
w_adrc-street TO ti_yfislfa1-logradouro, "008+
* adrc-house_num1 TO ti_yfislfa1-numero, "008-
w_adrc-house_num1 TO ti_yfislfa1-numero, "008+
* adrc-str_suppl1 TO ti_yfislfa1-complemento, "008-
w_adrc-str_suppl1 TO ti_yfislfa1-complemento, "008+
* adrc-post_code1 TO ti_yfislfa1-cep, "008-
w_adrc-post_code1 TO ti_yfislfa1-cep, "008+
* ASC - 27/06/07 - Carrega o conte�do de TXJCD para a coluna MUN_CODIGO
* adrc-city_code TO ti_yfislfa1-mun_codigo,
ti_kna1-txjcd TO ti_yfislfa1-mun_codigo,
ti_kna1-ort01 TO ti_yfislfa1-municipio,
ti_kna1-regio TO ti_yfislfa1-unidade_federativa,
ti_kna1-land1 TO ti_yfislfa1-pais,
ti_kna1-telf1 TO ti_yfislfa1-telefone1,
ti_kna1-telf2 TO ti_yfislfa1-telefone2,
ti_kna1-telfx TO ti_yfislfa1-fax,
ti_kna1-telx1 TO ti_yfislfa1-telex,
* adr6-smtp_addr TO ti_yfislfa1-e_mail, "008-
w_adr6-smtp_addr TO ti_yfislfa1-e_mail, "008+
* adr12-uri_srch TO ti_yfislfa1-web_site, "008-
w_adr12-uri_srch TO ti_yfislfa1-web_site, "008+
* SGS - 04/06/09 - Ocor. 1718720 - Enviar data e hora de altera��o
* SY-DATUM to TI_YFISLFA1-DATA_ALTERACAO,
* SY-UZEIT to TI_YFISLFA1-HORA_ALTERACAO.
w_dt_alteracao TO ti_yfislfa1-data_alteracao,
w_hr_alteracao TO ti_yfislfa1-hora_alteracao.
* SGS - 04/06/09 - Ocor. 1718720

IF v_utiliza_icmstaxpay = 'N' OR "002+


v_utiliza_icmstaxpay IS INITIAL. "002+
* SGS - 14/06/12 - AD. 2887246 - Informa��o para paremtriza��o de tipo de
contribuinte
MOVE ti_kna1-brsch TO ti_yfislfa1-tico_codigo.
ELSEIF v_utiliza_icmstaxpay = 'S'. "002+
CLEAR w_kna1_itaxpay. "002+
READ TABLE t_kna1_itaxpay "002+
INTO w_kna1_itaxpay "002+
WITH KEY kunnr = ti_kna1-kunnr "002+
BINARY SEARCH. "002+
IF sy-subrc IS INITIAL. "002+
ti_yfislfa1-tico_codigo = "002+
w_kna1_itaxpay-icmstaxpay. "002+
ENDIF. "002+
ENDIF. "002+
* SGS - 13/05/2015 - AD. 2993904 - incluir campo SUFRAMA de forma din�mica
* TI_KNA1-BRTXT to TI_YFISLFA1-DESC_TIPO_CONTRIBUINTE .
* SGS - 13/05/2015 - AD. 2993904
* SGS - 14/06/12 - AD. 2887246

IF v_utiliza_icmstaxpay = 'N' OR "002+


v_utiliza_icmstaxpay IS INITIAL. "002+
* SGS - 13/05/2015 - AD. 2993904 - incluir campo SUFRAMA de forma din�mica
READ TABLE ti_t016t WITH KEY brsch = ti_kna1-brsch BINARY SEARCH.
IF sy-subrc IS INITIAL.
MOVE ti_t016t-brtxt TO ti_yfislfa1-desc_tipo_contribuinte.
ENDIF.
* SGS - 13/05/2015 - AD. 2993904
ELSEIF v_utiliza_icmstaxpay = 'S'. "002+

CLEAR wl_1bticmstaxpayt. "002+


READ TABLE t_1bticmstaxpayt "002+
INTO wl_1bticmstaxpayt "002+
WITH KEY j_1bicmstaxpay = "002+
w_kna1_itaxpay-icmstaxpay "002+
BINARY SEARCH. "002+

MOVE wl_1bticmstaxpayt-j_1bicmstaxpayx "002+


TO ti_yfislfa1-desc_tipo_contribuinte. "002+

ENDIF. "002+

CLEAR wl_1bticmstaxpayt. "002+


* SGS - 12/05/11 - Se carga full - dt_inicio = dt_alteracao
IF ti_yfislfa1-data_alteracao IS INITIAL.
MOVE ti_yfislfa1-dt_inicio TO ti_yfislfa1-data_alteracao.
ENDIF.

*>>>>> Inclus�o 27.12.2007 - �llerson Freitas - Ocr 1311230 - Inicio


* Prepara segundo segmento para ser enviado junto
* CBT 28/08/08 Ocor 1458529 - N�o envia se n�o tem dados no segmento
* SGS - 05/08/13 - AD. 2932823 - repetia os dados de uma PFJ nas outras que
n�o tem informa��o.
CLEAR ti_yfislfa1_1.
* SGS - 05/08/13 - AD. 2932823

* SGS - 13/05/2015 - AD. 2993904 - incluir campo SUFRAMA de forma din�mica


IF v_suframa IS NOT INITIAL.
ASSIGN ('TI_KNA1-SUFRAMA') TO <fs>.
* TYN - 03/04/2017 - AD. 3063629 - Utilizar o campo suframa de forma dinamica.
* IF <fs> IS NOT INITIAL.
* MOVE <fs> TO ti_kna1-stceg.
IF <fs> IS ASSIGNED.
MOVE <fs> TO v_suframa_c.
* CLEAR <fs>.
UNASSIGN <fs>.
ENDIF.
ENDIF.
* SGS - 13/05/2015 - AD. 2993904

* TYN - 27/04/2016 - AD. 3036084 - Incluir campo CNAE (Clientes/Fornecedores) de


forma din�mica.
* SELECT SINGLE fieldname INTO v_cnae_c FROM dd03l "006-
* WHERE tabname = 'KNA1' AND fieldname = 'CNAE'. "006-

IF v_cnae_c IS NOT INITIAL.


ASSIGN ('TI_KNA1-CNAE') TO <fs>.
IF <fs> IS ASSIGNED. "004+
MOVE <fs> TO ti_yfislfa1-cnae.
ENDIF. "004+
* CLEAR <fs>.
UNASSIGN <fs>.
ENDIF.
* TYN - 27/04/2016 - AD. 3036084

* cdc 15/09/2016 - Ch 3045011 - Simples Nacional para Clientes


* SELECT SINGLE fieldname INTO v_crtn_c FROM dd03l "006-
* WHERE tabname = 'KNA1' AND fieldname = 'CRTN'. "006-

IF v_crtn_c IS NOT INITIAL.


ASSIGN ('TI_KNA1-CRTN') TO <fs>.
* ATENCAO: Na Interface do Lado Synchro existe uma dedu��o transformando para
os indicadores SYN
* X = Sim
IF <fs> EQ '1' OR <fs> EQ '2'.
MOVE 'X' TO ti_yfislfa1-min_comp.
ELSE.
MOVE 'N' TO ti_yfislfa1-min_comp.
ENDIF.
* CLEAR <fs>.
UNASSIGN <fs>.
ENDIF.
* cdc 15/09/2016 - Ch 3045011 - Simples Nacional para Clientes

* TYN - 03/04/2017 - AD. 3063629 - Utilizar o campo suframa-cliente de forma


dinamica.
* IF ( NOT ti_kna1-stceg IS INITIAL OR
IF ( NOT v_suframa_c IS INITIAL OR
NOT ti_kna1-pfach IS INITIAL OR
NOT ti_kna1-pstl2 IS INITIAL OR
NOT ti_kna1-pstlz IS INITIAL ).

MOVE: v_suframa_c TO ti_yfislfa1_1-inscr_suframa,


* TYN - 03/04/2017 - AD. 3063629 - Utilizar o campo suframa-cliente de forma
dinamica.
ti_kna1-pfach TO ti_yfislfa1_1-pfach,
ti_kna1-pstl2 TO ti_yfislfa1_1-pstl2,
ti_kna1-pstlz TO ti_yfislfa1_1-pstlz.
ENDIF.

*<<<<< Inclus�o 27.12.2007 - �llerson Freitas - Ocr 1311230 - Fim

*Inicio da Alteracao DMA


IF ti_kna1-stkzn = 'X'.
MOVE ti_kna1-stcd2 TO ti_yfislfa1-cpf_cgc.
ELSE.
MOVE ti_kna1-stcd1 TO ti_yfislfa1-cpf_cgc.
ENDIF.

* CBT 11/05/08 IND_SUBSTITUTO_ICMS


MOVE ti_kna1-xsubt TO ti_yfislfa1-xsubt.

* Fim da alteracao.

ENDIF.

ENDFORM. " preparar_segmentos_clientes


*&---------------------------------------------------------------------*
*& Form CARREGAr_tabelas_fornecedores
*&---------------------------------------------------------------------*
FORM carregar_tabelas_fornecedores USING p_pfj.

* SGS - 11/07/14 - AD.2965784 - Limpa as vari�veis para o proximo registro.


* CLEAR: ti_lfa1, adrc, ti_adr6, ti_adr12. "008-
* SGS - 11/07/14 - AD.2965784

* DATA: vl_icmstaxpayf TYPE dd03l-fieldname, "002+ "008-


* vl_icmstaxpay_descf TYPE dd03l-fieldname, "002+ "008-
* vl_table_icmsf TYPE tabname, "002+ "008-
* vl_fieldsf(1000) TYPE c, "002+ "008-
* tl_fieldsf LIKE TABLE OF vl_fieldsf, "002+ "008-
* wl_lfa1_itaxpay TYPE ty_lfa1_itaxpay. "002+ "008-
* FIELD-SYMBOLS <ff_j_1bicmstaxpay> TYPE ANY. "002+ "008-

* SELECT SINGLE valor "002+ "008-


* INTO v_utiliza_icmstaxpay "002+ "008-
* FROM ysynparamgeral "002+ "008-
* WHERE parametro = 'PFJ_UTILIZA_ICMSTAXPAY'. "002+ "008-

* TYN - AD. 3036084 - 28/04/2016 - Incluir campo CNAE Dinamicamente - Selecionar


todos os campos, se tiver o din�mico ou n�o, ele ir� trazer caso tenha.
* cdc - ad 3027612 - 13/01/16 - Inclus�o do Simples Nacional.
* precisa tratar dinamico porque a coluna MIN_COMP pode n�o existir.
* TRY.
* ti_table = ' LFA1 '.
* select LIFNR LAND1 NAME1 NAME2 NAME3 NAME4 ORT01 ORT02 PSTLZ REGIO
* SORTL STRAS ADRNR ERDAT KTOKK STCD1 STCD2 TELF1 TELF2 TELFX
* TELX1 STCEG STKZN TXJCD STCD3 STCD4 BRSCH MIN_COMP
* into corresponding fields of table TI_LFA1
* FROM (ti_table)
* where LIFNR eq P_PFJ.

* CATCH CX_SY_DYNAMIC_OSQL_SEMANTICS.

* select LIFNR LAND1 NAME1 NAME2 NAME3 NAME4 ORT01 ORT02 PSTLZ REGIO
* SORTL STRAS ADRNR ERDAT KTOKK STCD1 STCD2 TELF1 TELF2 TELFX
* TELX1 STCEG STKZN TXJCD STCD3 STCD4 BRSCH
* into corresponding fields of table TI_LFA1
* FROM LFA1
* where LIFNR eq P_PFJ.
* ENDTRY.
* SELECT * "008-
* INTO CORRESPONDING FIELDS OF TABLE ti_lfa1 "008-
* FROM lfa1 "008-
* WHERE lifnr EQ p_pfj. "008-
CLEAR ti_lfa1. "008+
READ TABLE ti_lfa1 "008+
WITH KEY lifnr = p_pfj "008+
BINARY SEARCH. "008+
CHECK sy-subrc IS INITIAL. "008+

* cdc - ad 3027612 - 13/01/16 - fim


* TYN - AD. 3036084 - 28/04/2016 - Incluir campo CNAE Dinamicamente

* IF v_utiliza_icmstaxpay = 'N' OR "002+ "008-


* v_utiliza_icmstaxpay IS INITIAL. "002+ "008-
* CLEAR ti_t016t. "002+ "008-
* READ TABLE ti_lfa1 INDEX 1. "002+ "008-
* IF NOT ti_lfa1[] IS INITIAL. "002+ "008-
* SELECT brsch brtxt "002+ "008-
* INTO CORRESPONDING FIELDS OF TABLE ti_t016t "002+ "008-
* FROM t016t "002+ "008-
* FOR ALL ENTRIES IN ti_lfa1 "002+ "008-
* WHERE spras = 'P' "002+ "008-
* AND brsch EQ ti_lfa1-brsch "002+ "008-
* ORDER BY PRIMARY KEY. "006+ "008-
* SORT ti_t016t ASCENDING BY brsch. "002+ "008-
* ENDIF. "002+ "008-
* ELSEIF v_utiliza_icmstaxpay = 'S'. "002+ "008-
* SELECT SINGLE "002+ "008-
* fieldname "002+ "008-
* INTO vl_icmstaxpayf "002+ "008-
* FROM dd03l "002+ "008-
* WHERE tabname = 'LFA1' "002+ "008-
* AND fieldname = 'ICMSTAXPAY'. "002+ "008-
* IF sy-subrc IS INITIAL. "002+ "008-
* SELECT SINGLE "002+ "008-
* fieldname "002+ "008-
* INTO vl_icmstaxpay_descf "002+ "008-
* FROM dd03l "002+ "008-
* WHERE tabname = 'J_1BTICMSTAXPAYT' "002+ "008-
* AND fieldname = 'J_1BICMSTAXPAYX'. "002+ "008-
* IF sy-subrc IS INITIAL. "002+ "008-
* CONCATENATE 'J_1BICMSTAXPAY' "002+ "008-
* 'J_1BICMSTAXPAYX ' "002+ "008-
* INTO vl_fieldsf "002+ "008-
* SEPARATED BY space. "002+ "008-
* APPEND vl_fieldsf TO tl_fieldsf. "002+ "008-
* LOOP AT ti_lfa1. "002+ "008-
* ASSIGN ('TI_LFA1-ICMSTAXPAY') "002+ "008-
* TO <ff_j_1bicmstaxpay>. "002+ "008-
* CHECK <ff_j_1bicmstaxpay> IS ASSIGNED "002+ "008-
* AND sy-subrc IS INITIAL. "002+ "008-
* CHECK <ff_j_1bicmstaxpay> IS NOT INITIAL. "002+ "008-
* wl_lfa1_itaxpay-lifnr = ti_lfa1-lifnr. "002+ "008-
* wl_lfa1_itaxpay-icmstaxpay "002+ "008-
* = <ff_j_1bicmstaxpay>. "002+ "008-
* APPEND wl_lfa1_itaxpay "002+ "008-
* TO t_lfa1_itaxpay. "002+ "008-
* CLEAR wl_lfa1_itaxpay. "002+ "008-
* ENDLOOP. "002+ "008-
* SORT t_lfa1_itaxpay "002+ "008-
* BY lifnr. "002+ "008-
* IF NOT t_lfa1_itaxpay[] IS INITIAL. "002+ "008-
* vl_table_icmsf = 'J_1BTICMSTAXPAYT'. "002+ "008-
* DATA tl_lfa1_itp TYPE "002+ "008-
* TABLE OF ty_lfa1_itaxpay. "002+ "008-
* tl_lfa1_itp[] = t_lfa1_itaxpay[]. "002+ "008-
* SORT tl_lfa1_itp "002+ "008-
* BY icmstaxpay. "002+ "008-
* DELETE ADJACENT DUPLICATES "002+ "008-
* FROM tl_lfa1_itp "002+ "008-
* COMPARING icmstaxpay. "002+ "008-
* IF NOT tl_lfa1_itp[] IS INITIAL. "008-
* SELECT (tl_fieldsf) "002+ "008-
* INTO TABLE t_1bticmstaxpaytf "002+ "008-
* FROM (vl_table_icmsf) "002+ "008-
* FOR ALL ENTRIES IN tl_lfa1_itp "002+ "008-
* WHERE spras = 'P' "002+ "008-
* AND j_1bicmstaxpay "002+ "008-
* = tl_lfa1_itp-icmstaxpay. "002+ "008-
* IF sy-subrc IS INITIAL. "002+ "008-
* SORT t_1bticmstaxpaytf "002+ "008-
* BY j_1bicmstaxpay. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-
* ENDIF. "002+ "008-

* SGS - ocor.1599614 - Os campos STREET HOUSE_NUM1 n�o estavam sendo


* carregados- alterado para fazer da mesma forma que em clientes
* select ADDRNUMBER DATE_FROM CITY2 STREET HOUSE_NUM1
* STR_SUPPL1 POST_CODE1 CITY_CODE
* into table TI_ADRC
* from ADRC up to 1 rows
* where ADDRNUMBER eq TI_LFA1-ADRNR.
* AND date_from EQ ti_lfa1-erdat.

* cdc a.d. 2987614 06/03/2015 - Acrescentado o SORT1 no select abaixo


* SELECT SINGLE addrnumber date_from city2 "008-
* street house_num1 "008-
* str_suppl1 post_code1 "008-
* city_code sort1 "008-
* INTO CORRESPONDING FIELDS OF adrc "008-
* FROM adrc "008-
* WHERE addrnumber EQ ti_lfa1-adrnr. "008-
* SGS - ocor.1599614
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* CLEAR: adrc. "006+ "008-
* ENDIF. "008-
READ TABLE t_adrc "008+
INTO w_adrc "008+
WITH KEY addrnumber = ti_lfa1-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR w_adrc. "008+
ENDIF. "008+

* SELECT addrnumber persnumber date_from consnumber "008-


* smtp_addr "008-
* INTO TABLE ti_adr6 "008-
* FROM adr6 UP TO 1 ROWS "008-
* WHERE addrnumber EQ ti_lfa1-adrnr. "008-
* SGS - 19/02/14 - AD. 2951804 - integra��o do e-mail. O campo PERSNUMBER sempre
est� vazio
* and PERSNUMBER eq TI_LFA1-LIFNR.
* SGS - 19/02/14 - AD. 2951804
* AND date_from EQ ti_lfa1-erdat.
READ TABLE t_adr6 "008+
INTO w_adr6 "008+
WITH KEY addrnumber = ti_lfa1-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR w_adr6. "008+
ENDIF. "008+

* SGS - 10/03/14 - AD. 2951804 - ler a linha inserida na tabela.


* READ TABLE ti_adr6 INDEX 1. "008-
* SGS - 10/03/14 - AD. 2951804

* SELECT addrnumber persnumber date_from consnumber "008-


* uri_srch "008-
* INTO TABLE ti_adr12 "008-
* FROM adr12 UP TO 1 ROWS "008-
* WHERE addrnumber EQ ti_lfa1-adrnr. "008-
* SGS - 19/02/14 - AD. 2951804 - integra��o do e-mail. O campo PERSNUMBER sempre
est� vazio
* and PERSNUMBER eq TI_LFA1-LIFNR.
* SGS - 19/02/14 - AD. 2951804
* AND date_from EQ ti_lfa1-erdat.
READ TABLE t_adr12 "008+
INTO w_adr12 "008+
WITH KEY addrnumber = ti_kna1-adrnr "008+
BINARY SEARCH. "008+
IF NOT sy-subrc IS INITIAL. "008+
CLEAR w_adr12. "008+
ENDIF. "008+

* SGS - 10/03/14 - AD. 2951804 - ler a linha inserida na tabela.


* READ TABLE ti_adr12 INDEX 1. "008-
* SGS - 10/03/14 - AD. 2951804

ENDFORM. " CARREGAr_tabelas_fornecedores


*&---------------------------------------------------------------------*
*& Form PREPARAR_SEGMENTOS_FORNECEDORES
*&---------------------------------------------------------------------*
FORM preparar_segmentos_forn.

CONSTANTS: c_tp_pessoa(1) TYPE c VALUE 'L',


c_codigo_categoria(2) TYPE c VALUE 'LF'
.
* TYN - 27/04/2016 - AD. 3036084 - Incluir campo CNAE (Clientes/Fornecedores) de
forma din�mica.
* DATA: v_cnae_c TYPE dd03l-fieldname, "006-
* v_cnae_f TYPE dd03l-fieldname, "006-
* v_min_comp TYPE dd03l-fieldname, "006-
* TYN - 27/04/2016 - AD. 3036084 - Incluir campo CNAE
* TYN - 16/05-2016 - AD. 3037430 - Incluir o Suframa (Fornecedor) de forma
dinamica.
* v_suframa_f TYPE dd03l-fieldname, "006-
* TYN - 16/05-2016 - AD. 3037430
* TYN - AD. 3041736 - Utilizar o parametro para integrar o Suframa/Fornecedor de
finamicamente.
* w_suframa_f LIKE ysynparamgeral-valor, "006-
DATA v_suframa_valor(30) TYPE c.
* TYN - AD. 3041736

DATA: wl_lfa1_itaxpay TYPE ty_lfa1_itaxpay, "002+


wl_1bticmstaxpayt TYPE ty_1bticmstaxpayt, "002+
v_icmstaxpay_f LIKE ti_yfislfa1-tico_codigo. "002+

* DATA: v_witht LIKE ysynparamgeral-valor. "005 "008-


* DATA: BEGIN OF ti_lfbw OCCURS 0. "005 "008-
* INCLUDE STRUCTURE lfbw. "005 "008-
* DATA: END OF ti_lfbw. "005 "008-

FIELD-SYMBOLS: <fs> TYPE ANY,


* TYN - AD. 3041736
<ff> TYPE ANY.
* TYN - AD. 3041736
* TYN - 27/04/2016 - AD. 3036084

CONCATENATE ti_lfa1-name1 ti_lfa1-name2 ti_lfa1-name3 ti_lfa1-name4


INTO w_razao_social
* SGS - 23/10/12 - AD.2900395 - Espa�o entre campos de raz�o social.
SEPARATED BY space.
* SGS - 23/10/12 - AD.2900395

* IF ti_lfa1-stcd2 IS INITIAL.
* MOVE: ti_lfa1-stcd1 TO ti_yfislfa1-cpf_cgc.
* ELSE.
* MOVE: ti_lfa1-stcd2 TO ti_yfislfa1-cpf_cgc.
* ENDIF.

IF NOT w_razao_social IS INITIAL.


MOVE: sy-uname TO ti_yfislfakna-usnam,
sy-cprog TO ti_yfislfakna-cprog,
c_tp_pessoa TO ti_yfislfakna-tp_pessoa,
ti_lfa1-ktokk TO ti_yfislfakna-elemento,
c_codigo_categoria TO ti_yfislfa1-codigo_categoria,
ti_lfa1-lifnr TO ti_yfislfa1-pfj_codigo,
ti_lfa1-lifnr TO ti_yfislfa1-codigo_usual,
ti_lfa1-lifnr TO ti_yfislfa1-chave_origem,
ti_lfa1-sortl TO ti_yfislfa1-nome_fantasia,
w_razao_social TO ti_yfislfa1-razao_social,
ti_lfa1-stkzn TO ti_yfislfa1-ind_fisica_juridica,
ti_lfa1-land1 TO ti_yfislfa1-ind_nacional_estrangeira,
ti_lfa1-erdat TO ti_yfislfa1-dt_inicio,
ti_lfa1-ort02 TO ti_yfislfa1-bairro,
ti_lfa1-stcd3 TO ti_yfislfa1-inscr_estadual,
ti_lfa1-stcd4 TO ti_yfislfa1-ccm,
ti_lfa1-adrnr TO ti_yfislfa1-loc_codigo,
ti_lfa1-adrnr TO ti_yfislfa1-codigo_usual,
* SGS - ocor.1599614 - Os campos STREET HOUSE_NUM1 n�o estavam sendo
* carregados- alterado para fazer da mesma forma que em clientes
* TI_LFA1-STRAS to TI_YFISLFA1-LOGRADOURO,
* TI_ADRC-HOUSE_NUM1 to TI_YFISLFA1-NUMERO,
* adrc-street TO ti_yfislfa1-logradouro, "008-
w_adrc-street TO ti_yfislfa1-logradouro, "008+
* adrc-house_num1 TO ti_yfislfa1-numero, "008-
w_adrc-house_num1 TO ti_yfislfa1-numero, "008+
* SGS - ocor.1599614
* cdc - a.d.3043120 - complementar a corre��o do ocor.1599614
* TI_ADRC-STR_SUPPL1 to TI_YFISLFA1-COMPLEMENTO,
* adrc-str_suppl1 TO ti_yfislfa1-complemento, "008-
w_adrc-str_suppl1 TO ti_yfislfa1-complemento, "008+
*cdc fim
ti_lfa1-pstlz TO ti_yfislfa1-cep,
* ASC - 27/06/07 - Carrega o conte�do de TXJCD para a coluna MUN_CODIGO
* ti_adrc-city_code TO ti_yfislfa1-mun_codigo,
ti_lfa1-txjcd TO ti_yfislfa1-mun_codigo,
ti_lfa1-ort01 TO ti_yfislfa1-municipio,
ti_lfa1-regio TO ti_yfislfa1-unidade_federativa,
ti_lfa1-land1 TO ti_yfislfa1-pais,
ti_lfa1-telf1 TO ti_yfislfa1-telefone1,
ti_lfa1-telf2 TO ti_yfislfa1-telefone2,
ti_lfa1-telfx TO ti_yfislfa1-fax,
ti_lfa1-telx1 TO ti_yfislfa1-telex,
* ti_adr6-smtp_addr TO ti_yfislfa1-e_mail, "008-
w_adr6-smtp_addr TO ti_yfislfa1-e_mail, "008+
* ti_adr12-uri_srch TO ti_yfislfa1-web_site, "008-
w_adr12-uri_srch TO ti_yfislfa1-web_site, "008+
* SGS - 04/06/09 - Ocor. 1718720 - Enviar data e hora de altera��o
* SY-DATUM to TI_YFISLFA1-DATA_ALTERACAO,
* SY-UZEIT to TI_YFISLFA1-HORA_ALTERACAO.
w_dt_alteracao TO ti_yfislfa1-data_alteracao,
w_hr_alteracao TO ti_yfislfa1-hora_alteracao.
* SGS - 04/06/09 - Ocor. 1718720

* TYN - 27/04/2016 - AD. 3036084 - Incluir campo CNAE (Clientes/Fornecedores) de


forma din�mica.
UNASSIGN <fs>. "004+

* SELECT SINGLE fieldname INTO v_cnae_f FROM dd03l "008-


* WHERE tabname = 'LFA1' AND fieldname ='CNAE'. "008-
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* CLEAR: v_cnae_f. "006+ "008-
* ENDIF. "008-

IF v_cnae_f IS NOT INITIAL.


ASSIGN ('TI_LFA1-CNAE') TO <fs>.
IF <fs> IS ASSIGNED. "004+
MOVE <fs> TO ti_yfislfa1-cnae.
ENDIF. "004+
* CLEAR <fs>.
UNASSIGN <fs>.
ENDIF.

* SELECT SINGLE fieldname INTO v_min_comp FROM dd03l "008-


* WHERE tabname = 'LFA1' AND fieldname ='MIN_COMP'. "008-
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* CLEAR: v_min_comp. "008-
* ENDIF. "008-

* IF v_min_comp IS NOT INITIAL. "008-


IF v_min_comp_f IS NOT INITIAL. "008+
ASSIGN ('TI_LFA1-MIN_COMP') TO <fs>.
IF <fs> IS ASSIGNED. "004+
MOVE <fs> TO ti_yfislfa1-min_comp.
ENDIF. "004+
* CLEAR <fs>.
UNASSIGN <fs>.
ENDIF.
* TYN - 27/04/2016 - AD. 3036084 - Incluir campo CNAE (Clientes/Fornecedores) de
forma din�mica.

* TYN - AD. 3041736 - Utilizar o parametro para integrar o Suframa/Fornecedor de


finamicamente.
* TYN - AD. 3037430 - 16/05/2016 - Incluir o campo Suframa dinamicamente
* Somente utilizar� o campo RIC se estiver vazio no STCEG que utilizamos

* SELECT SINGLE valor "008-


* INTO w_suframa_f "008-
* FROM ysynparamgeral "008-
* WHERE parametro = 'SUFRAMA_FORNECEDOR'. "008-
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* CLEAR: w_suframa_f. "006+ "008-
* ENDIF. "008-

*IF TI_LFA1-STCEG is initial.


* IF w_suframa_f IS NOT INITIAL. "008-
* SELECT SINGLE fieldname INTO v_suframa_f FROM dd03l "008-
* where TABNAME = 'LFA1' and FIELDNAME ='RIC'.
* WHERE tabname = 'LFA1' "008-
* AND fieldname = w_suframa_f. "008-
* IF NOT sy-subrc IS INITIAL. "006+ "008-
* CLEAR: v_suframa_f. "006+ "008-
* ENDIF. "008-
* ENDIF. "008-
IF v_suframa_f IS NOT INITIAL.
* ASSIGN ('TI_LFA1-RIC') TO <fs>.
ASSIGN ('w_suframa_f') TO <fs>.

IF <fs> IS ASSIGNED. "004+


* Concatenar o field symbol com a tabela interna.

CONCATENATE 'TI_LFA1-' <fs> INTO v_suframa_valor.


ASSIGN (v_suframa_valor) TO <ff>.
ENDIF. "004+
* MOVE <fs> TO TI_LFA1-STCEG.
* CLEAR <fs>.
UNASSIGN <fs>.
ENDIF.
* ENDIF.
* TYN - AD. 3037430
* TYN - 27/04/2016 - AD. 3036084 - Incluir campo CNAE (Clientes/Fornecedores) de
forma din�mica.

* cdc a.d. 2987614 06/03/2015 - Buscar Fantasia da ADRC


* IF adrc-sort1 IS INITIAL. "008-
IF w_adrc-sort1 IS INITIAL. "008+
MOVE ti_lfa1-sortl TO ti_yfislfa1-nome_fantasia.
ELSE.
* MOVE adrc-sort1 TO ti_yfislfa1-nome_fantasia. "008-
MOVE w_adrc-sort1 TO ti_yfislfa1-nome_fantasia. "008+
ENDIF.
* cdc a.d. 2987614 06/03/2015 - Fim

* SGS - 12/05/11 - Se carga full - dt_inicio = dt_alteracao


IF ti_yfislfa1-data_alteracao IS INITIAL.
MOVE ti_yfislfa1-dt_inicio TO ti_yfislfa1-data_alteracao.
ENDIF.

*Inicio da Alteracao DMA


IF ti_lfa1-stkzn = 'X'.
MOVE ti_lfa1-stcd2 TO ti_yfislfa1-cpf_cgc.
ELSE.
MOVE ti_lfa1-stcd1 TO ti_yfislfa1-cpf_cgc.
ENDIF.

IF v_utiliza_icmstaxpay = 'N' OR "002+


v_utiliza_icmstaxpay IS INITIAL. "002+
* CBT 16/07/07 Ocor 1193726 Tipo de contribuinte /
* c�digo do setor industrial
MOVE ti_lfa1-brsch TO ti_yfislfa1-tico_codigo.

ELSEIF v_utiliza_icmstaxpay = 'S'. "002+


CLEAR wl_lfa1_itaxpay. "002+
READ TABLE t_lfa1_itaxpay "002+
INTO wl_lfa1_itaxpay "002+
WITH KEY lifnr = ti_lfa1-lifnr "002+
BINARY SEARCH. "002+
IF sy-subrc IS INITIAL. "002+
ti_yfislfa1-tico_codigo = "002+
wl_lfa1_itaxpay-icmstaxpay. "002+
ENDIF. "002+
ENDIF. "002+
* TYN - AD. 3036084 - 28/04/2016 - Incluir campo CNAE Dinamicamente
* move TI_LFA1-BRTXT to TI_YFISLFA1-DESC_TIPO_CONTRIBUINTE .
* move TI_LFA1-MIN_COMP to TI_YFISLFA1-MIN_COMP.
* TYN - AD. 3036084 - 28/04/2016 - Incluir campo CNAE Dinamicamente
*>>>>> Inclus�o 27.12.2007 - �llerson Freitas - Ocr 1311230 - Inicio
* Prepara segundo segmento para ser enviado junto
* CBT 28/08/08 Ocor 1458529 - N�o envia se n�o tem dados no segmento

IF v_utiliza_icmstaxpay = 'N' OR "002+


v_utiliza_icmstaxpay IS INITIAL. "002+
* TYN - AD. 3036084 - 28/04/2016 - Incluir campo CNAE Dinamicamente
READ TABLE ti_t016t WITH KEY brsch = ti_lfa1-brsch BINARY SEARCH.
IF sy-subrc IS INITIAL.
MOVE ti_t016t-brtxt TO ti_yfislfa1-desc_tipo_contribuinte.
ENDIF.

ELSEIF v_utiliza_icmstaxpay = 'S'. "002+

CLEAR wl_1bticmstaxpayt. "002+


READ TABLE t_1bticmstaxpaytf "002+
INTO wl_1bticmstaxpayt "002+
WITH KEY j_1bicmstaxpay = "002+
wl_lfa1_itaxpay-icmstaxpay "002+
BINARY SEARCH. "002+

MOVE wl_1bticmstaxpayt-j_1bicmstaxpayx "002+


TO ti_yfislfa1-desc_tipo_contribuinte. "002+

ENDIF. "002+
* TYN - AD. 3036084 - 28/04/2016 - Incluir campo CNAE Dinamicamente

* SGS - 05/08/13 - AD. 2932823 - repetia os dados de uma PFJ nas outras que n�o
tem informa��o.
CLEAR ti_yfislfa1_1.
* SGS - 05/08/13 - AD. 2932823
* if ( not TI_LFA1-STCEG is initial or
IF <ff> IS ASSIGNED.
MOVE: <ff> TO ti_yfislfa1_1-inscr_suframa.
ENDIF.
UNASSIGN <ff>. "004+
* if ( not <ff> is initial or
IF ( NOT ti_lfa1-pfach IS INITIAL OR
NOT ti_lfa1-pstl2 IS INITIAL OR
NOT ti_lfa1-pstlz IS INITIAL ).
* TYN - 29/06
* move: TI_LFA1-STCEG to TI_YFISLFA1_1-INSCR_SUFRAMA,
MOVE: ti_lfa1-pfach TO ti_yfislfa1_1-pfach,
ti_lfa1-pstl2 TO ti_yfislfa1_1-pstl2,
ti_lfa1-pstlz TO ti_yfislfa1_1-pstlz.
ENDIF.

* SELECT SINGLE valor "005+ "008-


* INTO v_witht "005+ "008-
* FROM ysynparamgeral "005+ "008-
* WHERE parametro = 'PFJ_IND_DESON_FOLHA_CPRB_REINF'."005+ "008-

* IF NOT sy-subrc IS INITIAL. "006+ "008-


* CLEAR: v_witht. "006+ "008-
* ENDIF. "008-

IF NOT v_witht IS INITIAL. "005+

* SELECT lifnr witht "005+ "008-


* INTO CORRESPONDING FIELDS OF TABLE ti_lfbw "005+ "008-
* FROM lfbw "005+ "008-
* WHERE lifnr EQ ti_lfa1-lifnr "008-
* AND witht EQ v_witht . "005+ "008-

READ TABLE t_lfbw "008+


TRANSPORTING NO FIELDS "008+
WITH KEY lifnr = ti_lfa1-lifnr "008+
BINARY SEARCH. "008+

IF sy-subrc IS INITIAL. "005+


MOVE '2' TO ti_yfislfa1-ind_deson_folha_cprb. "005+
ENDIF.

ENDIF.

*<<<<< Inclus�o 27.12.2007 - �llerson Freitas - Ocr 1311230 - Fim

* Fim da alteracao.
ENDIF.

ENDFORM. " PREPARAR_SEGMENTOS_FORNECEDORE

*&---------------------------------------------------------------------*
*& Form carregar_tabelas_otc
*&---------------------------------------------------------------------*

FORM carregar_tabelas_otc
* SGS - 29/06/12 - AD.2889110 - Melhoria de performance
TABLES r_data
* SGS - 29/06/12 - AD.2889110
USING p_pfj
p_bukrs
p_buzei
p_gjahr.

SELECT SINGLE name1 name2 name3 name4 pstlz ort01 land1 stras
stcd1 stcd2 regio stkzn stcd3 stcd4
INTO CORRESPONDING FIELDS OF bsec
FROM bsec
WHERE bukrs = p_bukrs
AND belnr = p_pfj
AND gjahr = p_gjahr
AND buzei = p_buzei.

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: bsec. "006+
ENDIF.

SELECT SINGLE bukrs belnr gjahr bldat awkey


INTO CORRESPONDING FIELDS OF bkpf
FROM bkpf
WHERE bukrs = p_bukrs
AND belnr = p_pfj
AND gjahr = p_gjahr
* SGS - 29/06/12 - AD.2889110 - Melhoria de performance
AND budat IN r_data.
* SGS - 29/06/12 - AD.2889110

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: bkpf. "006+
ENDIF.

SELECT SINGLE lifnr


INTO CORRESPONDING FIELDS OF bseg
FROM bseg
WHERE bukrs = p_bukrs
AND belnr = p_pfj
AND gjahr = p_gjahr
AND buzei = p_buzei
* SGS - 29/06/12 - AD.2889110 - Melhoria de performance
AND xcpdd EQ 'X'.
* SGS - 29/06/12 - AD.2889110

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: bseg. "006+
ENDIF.

* SGS - 05/03/2015 - AD. 2983990 - em algumas situa��es o SY-SUBRC n�o funciona.


* if SY-SUBRC = 0.
IF NOT bseg-lifnr IS INITIAL.
* SGS - 05/03/2015 - AD. 2983990
MOVE 'FOTC' TO w_codigo_categoria.
ELSE.
bkpf-awkey = p_pfj.
MOVE 'COTC' TO w_codigo_categoria.
ENDIF.

ENDFORM. " carregar_tabelas_otc

* SGS - 18/05/10 - Ocor. 1844890 - Inclus�o de OTV de NF Writer


FORM pfj_otc_writer USING p_pfj.

DATA: BEGIN OF ti_j1bnfcpd OCCURS 0.


INCLUDE STRUCTURE j_1bnfcpd.
DATA: END OF ti_j1bnfcpd.

* SGS - 07/02/14 - AD. 2950585 - transformar em din�mico pois nem todos os clientes
possuem os novos campos
* select single NAME1 NAME2 NAME3 NAME4 PSTLZ ORT01 LAND1 STRAS
* STCD1 STCD2 REGIO STKZN J_1BMUNINS J_1BSTAINS
* SGS - 02/01/12 - AD.2868559 - N�mero e Bairro n�o eram integrados
* HOUSE_NUM1 CITY2
* SGS - 02/01/12 - AD.2868559
TABLES: dd03l.
FIELD-SYMBOLS: <fs> TYPE ANY.
SELECT SINGLE *
* SGS - 07/02/14 - AD. 2950585
INTO CORRESPONDING FIELDS OF ti_j1bnfcpd
FROM j_1bnfcpd
WHERE docnum = p_pfj.

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: ti_j1bnfcpd. "006+
ENDIF.

CONCATENATE ti_j1bnfcpd-name1 ti_j1bnfcpd-name2


ti_j1bnfcpd-name3 ti_j1bnfcpd-name4 INTO w_razao_social
* SGS - 23/10/12 - AD.2900395 - Espa�o entre campos de raz�o social.
SEPARATED BY space.
* SGS - 23/10/12 - AD.2900395

IF ti_j1bnfcpd-stcd2 IS INITIAL.
MOVE: ti_j1bnfcpd-stcd1 TO ti_yfislfa1-cpf_cgc.
ELSE.
MOVE: ti_j1bnfcpd-stcd2 TO ti_yfislfa1-cpf_cgc.
ENDIF.

IF NOT w_razao_social IS INITIAL.

* SGS - 07/02/14 - AD. 2950585 - transformar em din�mico pois nem todos os


clientes possuem os novos campos
SELECT SINGLE * FROM dd03l
WHERE tabname = 'J_1BNFCPD'
AND fieldname = 'HOUSE_NUM1'.

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: dd03l. "006+
ENDIF.

UNASSIGN <fs>. "004+

IF dd03l IS NOT INITIAL.


ASSIGN ('ti_J1BNFCPD-HOUSE_NUM1') TO <fs>.

IF <fs> IS ASSIGNED. "004+


MOVE <fs> TO ti_yfislfa1-numero. "004+
ENDIF. "004+
UNASSIGN <fs>. "004+

ASSIGN ('ti_J1BNFCPD-CITY2') TO <fs>.

IF <fs> IS ASSIGNED. "004+


MOVE <fs> TO ti_yfislfa1-bairro. "004+
ENDIF. "004+
UNASSIGN <fs>. "004+
ENDIF.
* SGS - 07/02/14 - AD. 2950585

MOVE: sy-uname TO ti_yfislfakna-usnam,


sy-cprog TO ti_yfislfakna-cprog,
'L' TO ti_yfislfakna-tp_pessoa,
p_pfj TO ti_yfislfa1-pfj_codigo,
w_razao_social TO ti_yfislfa1-razao_social,
p_pfj TO ti_yfislfa1-codigo_usual,
p_pfj TO ti_yfislfa1-chave_origem,
ti_j1bnfcpd-name1 TO ti_yfislfa1-nome_fantasia,
ti_j1bnfcpd-stkzn TO ti_yfislfa1-ind_fisica_juridica,
ti_j1bnfcpd-land1 TO ti_yfislfa1-ind_nacional_estrangeira,
ti_j1bnfcpd-stras TO ti_yfislfa1-logradouro,
ti_j1bnfcpd-str_suppl1 TO ti_yfislfa1-complemento,
* SGS - 07/02/14 - AD. 2950585 - transformar em din�mico pois nem todos os clientes
possuem os novos campos
* SGS - 02/01/12 - AD.2868559 - N�mero e Bairro n�o eram integrados
* ti_J1BNFCPD-HOUSE_NUM1 to TI_YFISLFA1-NUMERO,
* ti_J1BNFCPD-CITY2 to TI_YFISLFA1-BAIRRO,
* SGS - 07/02/14 - AD. 2950585
* SGS - 02/01/12 - AD.2868559
* SGS - 22/09/11 - Ocor. 2804390 - Os campos inscricao_estadual e municipal (CCM)
estavam trocados
* ti_J1BNFCPD-J_1BMUNINS to TI_YFISLFA1-INSCR_ESTADUAL,
* ti_J1BNFCPD-J_1BSTAINS to TI_YFISLFA1-CCM,
ti_j1bnfcpd-j_1bstains TO ti_yfislfa1-inscr_estadual,
ti_j1bnfcpd-j_1bmunins TO ti_yfislfa1-ccm,
* SGS - 22/09/11 - Ocor. 2804390
ti_j1bnfcpd-pstlz TO ti_yfislfa1-cep,
ti_j1bnfcpd-ort01 TO ti_yfislfa1-municipio,
ti_j1bnfcpd-regio TO ti_yfislfa1-unidade_federativa,
ti_j1bnfcpd-land1 TO ti_yfislfa1-pais,
ti_j1bnfcpd-taxjurcode TO ti_yfislfa1-mun_codigo.
ENDIF.

ENDFORM. " carregar_tabelas_otc_writer


* SGS - 18/05/10 - Ocor. 1844890

* SGS - 13/03/15 - AD.2988350 - Procura dados de OTC em outras tabelas


FORM pfj_otc_vbpa USING p_pfj.

DATA: BEGIN OF ti_vbpa OCCURS 0.


INCLUDE STRUCTURE vbpa.
DATA: END OF ti_vbpa.

DATA: BEGIN OF ti_vbpa3 OCCURS 0.


INCLUDE STRUCTURE vbpa3.
DATA: END OF ti_vbpa3.

DATA: BEGIN OF ti_adrc OCCURS 0.


INCLUDE STRUCTURE adrc.
DATA: END OF ti_adrc.

CLEAR: ti_vbpa, ti_vbpa3, ti_adrc.

SELECT SINGLE vbeln adrnr FROM vbpa


INTO CORRESPONDING FIELDS OF ti_vbpa
WHERE vbeln EQ p_pfj
AND parvw = 'AG'.

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: ti_vbpa. "006+
ENDIF.

CHECK ti_vbpa IS NOT INITIAL.

SELECT SINGLE *
FROM adrc
INTO CORRESPONDING FIELDS OF ti_adrc
WHERE addrnumber = ti_vbpa-adrnr.

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: ti_adrc. "006+
ENDIF.

CHECK ti_adrc IS NOT INITIAL.

SELECT SINGLE stcd1 stcd2 stcd3 stkzn FROM vbpa3


INTO CORRESPONDING FIELDS OF ti_vbpa3
WHERE vbeln = p_pfj
AND parvw = 'AG'.

IF NOT sy-subrc IS INITIAL. "006+


CLEAR: ti_vbpa3. "006+
ENDIF.

* cdc 24/10/2016 - Ch.3042996 - Begin - PFJs OTC/OTV devem ser extra�das mesmo com
dados incompletos.
* CHECK ti_vbpa3 IS NOT INITIAL.
* cdc 24/10/2016 - Ch.3042996 - End

CONCATENATE ti_adrc-name1 ti_adrc-name2


ti_adrc-name3 ti_adrc-name4 INTO w_razao_social
SEPARATED BY space.

IF ti_vbpa3-stcd2 IS INITIAL.
MOVE: ti_vbpa3-stcd1 TO ti_yfislfa1-cpf_cgc.
ELSE.
MOVE: ti_vbpa3-stcd2 TO ti_yfislfa1-cpf_cgc.
ENDIF.

IF NOT w_razao_social IS INITIAL.

MOVE: sy-uname TO ti_yfislfakna-usnam,


sy-cprog TO ti_yfislfakna-cprog,
'L' TO ti_yfislfakna-tp_pessoa,
p_pfj TO ti_yfislfa1-pfj_codigo,
p_pfj TO ti_yfislfa1-codigo_usual,
p_pfj TO ti_yfislfa1-chave_origem,
w_razao_social TO ti_yfislfa1-razao_social,
w_razao_social TO ti_yfislfa1-nome_fantasia,
ti_adrc-street TO ti_yfislfa1-logradouro,
ti_adrc-house_num1 TO ti_yfislfa1-numero,
ti_adrc-city2 TO ti_yfislfa1-bairro,
ti_adrc-str_suppl1 TO ti_yfislfa1-complemento,
ti_adrc-post_code1 TO ti_yfislfa1-cep,
ti_adrc-city1 TO ti_yfislfa1-municipio,
ti_adrc-region TO ti_yfislfa1-unidade_federativa,
ti_adrc-country TO ti_yfislfa1-pais,
ti_adrc-country TO ti_yfislfa1-ind_nacional_estrangeira,
ti_adrc-taxjurcode TO ti_yfislfa1-mun_codigo,
ti_vbpa3-stkzn TO ti_yfislfa1-ind_fisica_juridica,
ti_vbpa3-stcd3 TO ti_yfislfa1-inscr_estadual.
ENDIF.

IF ti_vbpa-lifnr IS NOT INITIAL.


MOVE 'FOTC' TO ti_yfislfa1-codigo_categoria.
ELSE.
MOVE 'COTC' TO ti_yfislfa1-codigo_categoria.
ENDIF.

ENDFORM. "pfj_otc_vbpa
* SGS - 13/03/15 - AD.2988350

*&---------------------------------------------------------------------*
*& Form PREPARAR_SEGMENTOS_OTC
*&---------------------------------------------------------------------*
FORM preparar_segmentos_otc.
CONSTANTS: c_tp_pessoa(1) TYPE c VALUE 'L'.

* SGS - 13/03/15 - AD.2988350 - Procura dados de OTC em outras tabelas


CLEAR: w_razao_social, ti_yfislfakna, ti_yfislfa1.
CHECK bsec IS NOT INITIAL.
* SGS - 13/03/15 - AD.2988350

CONCATENATE bsec-name1 bsec-name2 bsec-name3 bsec-name4 INTO


w_razao_social
* SGS - 23/10/12 - AD.2900395 - Espa�o entre campos de raz�o social.
SEPARATED BY space.
* SGS - 23/10/12 - AD.2900395

IF bsec-stcd2 IS INITIAL.
MOVE: bsec-stcd1 TO ti_yfislfa1-cpf_cgc.
ELSE.
MOVE: bsec-stcd2 TO ti_yfislfa1-cpf_cgc.
ENDIF.
IF NOT w_razao_social IS INITIAL.

MOVE: sy-uname TO ti_yfislfakna-usnam,


sy-cprog TO ti_yfislfakna-cprog,
c_tp_pessoa TO ti_yfislfakna-tp_pessoa,
w_codigo_categoria TO ti_yfislfa1-codigo_categoria,
bkpf-awkey TO ti_yfislfa1-pfj_codigo,
w_razao_social TO ti_yfislfa1-razao_social,
bkpf-awkey TO ti_yfislfa1-codigo_usual,
bkpf-awkey TO ti_yfislfa1-chave_origem,
bsec-name1 TO ti_yfislfa1-nome_fantasia,
bsec-stkzn TO ti_yfislfa1-ind_fisica_juridica,
bsec-land1 TO ti_yfislfa1-ind_nacional_estrangeira,
bsec-stras TO ti_yfislfa1-logradouro,
bkpf-bldat TO ti_yfislfa1-dt_inicio,
bsec-stcd3 TO ti_yfislfa1-inscr_estadual,
bsec-stcd4 TO ti_yfislfa1-ccm,
bsec-pstlz TO ti_yfislfa1-cep,
bsec-ort01 TO ti_yfislfa1-municipio,
bsec-regio TO ti_yfislfa1-unidade_federativa,
bsec-land1 TO ti_yfislfa1-pais,
* SGS - 03/03/10 - Ocor. 1844890 - Data da pessoa deve ser a data do DOF
* SY-DATUM to TI_YFISLFA1-DATA_ALTERACAO,
bkpf-bldat TO ti_yfislfa1-data_alteracao,
* SGS - 03/03/10 - Ocor. 1844890
sy-uzeit TO ti_yfislfa1-hora_alteracao.

ENDIF.

ENDFORM. " PREPARAR_SEGMENTOS_OTC

*&---------------------------------------------------------------------*
*& Form tratar_campo_data
*&---------------------------------------------------------------------*
FORM tratar_campo_data CHANGING p_data.

IF p_data EQ 0 OR
p_data IS INITIAL.
CLEAR p_data.
ENDIF.

ENDFORM. " tratar_campo_data


**---------------------------------------------------------------------*
** FORM ajusta_valores_negativos *
**---------------------------------------------------------------------*
*FORM ajusta_valores_negativos CHANGING p_campo.
*
* DATA: w_tamstr TYPE i,
* w_tamcorrig TYPE i,
* w_novovalor(17) TYPE c.
*
* CONSTANTS: c_menos VALUE '-'.
*
* CONDENSE p_campo NO-GAPS.
*
* w_tamstr = STRLEN( p_campo ).
*
* CHECK w_tamstr GT 1.
*
* w_tamcorrig = w_tamstr - 1.
*
* IF p_campo+w_tamcorrig(1) EQ c_menos.
*
* CONCATENATE c_menos p_campo(w_tamcorrig) INTO w_novovalor.
* CLEAR p_campo.
* CONDENSE w_novovalor NO-GAPS.
* MOVE w_novovalor TO p_campo.
* ENDIF.
*ENDFORM. "ajusta_valores_negativos

*---------------------------------------------------------------------*
* FORM idoc_status_fill *
*---------------------------------------------------------------------*
FORM idoc_status_fill USING value(status)
value(docnum)
value(msgty)
value(msgid)
value(msgno)
value(msgv1)
value(msgv2)
value(msgv3)
value(msgv4)
value(routid)
value(segnum)
value(segfld).
CLEAR w_idoc_status.
w_idoc_status-uname = sy-uname.
w_idoc_status-status = status.
w_idoc_status-docnum = docnum.
w_idoc_status-msgty = msgty.
w_idoc_status-msgid = msgid.
w_idoc_status-msgno = msgno.
w_idoc_status-msgv1 = msgv1.
w_idoc_status-msgv2 = msgv2.
w_idoc_status-msgv3 = msgv3.
w_idoc_status-msgv4 = msgv4.
w_idoc_status-segnum = segnum.
w_idoc_status-segfld = segfld.
w_idoc_status-repid = 'SAPLEINM'.
w_idoc_status-routid = routid.
APPEND w_idoc_status.

ENDFORM. "idoc_status_fill
*&----------------------------------------------------------------*
*& Form INFORMAR_STATUS_APLICACAO
*&----------------------------------------------------------------*
FORM informar_status_aplicacao TABLES ti_return STRUCTURE bapiret2
idoc_stat STRUCTURE bdidocstat
USING p_erro p_docnum.

DATA: w_status(2).

IF p_erro IS INITIAL.
w_status = c_status_53.
ELSE.
w_status = c_status_51.
ENDIF.

CLEAR: w_idoc_status. FREE: w_idoc_status.

LOOP AT ti_return.
PERFORM idoc_status_fill USING
w_status "value(status)
p_docnum "value(docnum)
ti_return-type "value(msgty)
space "value(msgid)
space "value(msgno)
ti_return-message "value(msgv1)
ti_return-message_v1 "value(msgv2)
ti_return-message_v2 "value(msgv3)
space "value(msgv4)
space "value(routid)
space "value(segnum)
space ."value(segfld).
ENDLOOP.

idoc_stat[] = w_idoc_status[].

ENDFORM. " INFORMAR_STATUS_APLICACAO


*&---------------------------------------------------------------------*
*& Form habilita_criacao_idoc
*&---------------------------------------------------------------------*
FORM habilita_criacao_idoc USING p_msg
CHANGING p_subrc.

CLEAR p_subrc.

SELECT SINGLE *
FROM ypmtl_idocexec
INTO ypmtl_idocexec
WHERE mensagem EQ p_msg.

IF sy-subrc IS INITIAL. "006+


p_subrc = ypmtl_idocexec-status.
ENDIF.
ENDFORM. " habilita_criacao_idoc
*&---------------------------------------------------------------------*
*& Form buscar_nota_fiscal
*&---------------------------------------------------------------------*
*FORM buscar_nota_fiscal TABLES r_nftype STRUCTURE rsrange"003-
* ti_vbfa STRUCTURE ti_vbfa "003-
* CHANGING field_s STRUCTURE ti_notafiscal. "003-
*----------------*
*Variaveis Locais*
*----------------*

* DATA: wl_refkey LIKE j_1bnflin-refkey, "003-


* wl_refitm LIKE j_1bnflin-refitm, "003-
* wl_return TYPE c. "003-

*-----------------------*
*Tabelas Internas Locais*
*-----------------------*

* Partidas individuais da nota fiscal


* DATA: BEGIN OF ti_nfitem OCCURS 0. "003-
* INCLUDE STRUCTURE j_1bnflin. "003-
* DATA: END OF ti_nfitem. "003-

* VAlores do IPI
* DATA: BEGIN OF ti_j1bnfstx OCCURS 0. "003-
* INCLUDE STRUCTURE j_1bnfstx. "003-
* DATA:END OF ti_j1bnfstx. "003-

* Estrutura dos valores do ipi


* DATA: BEGIN OF ti_j1binlin. "003-
* INCLUDE STRUCTURE j_1binlin. "003-
* DATA: END OF ti_j1binlin. "003-

*-------------*
*MACROS Locais*
*-------------*

* Achar nota referencia + IPI.

* DEFINE m_nf_find. "003-


*&1- refkey
*&2- reftype
*&3- refitm
*&4- nftype
*&5- j_1bnflin
*&6- field_s

* clear : &5 , ti_j1bnfstx , ti_j1binlin, j_1bnfdoc. "003-


* refresh : &5 , ti_j1bnfstx. "003-

* Buscar Nota Fiscal


* if not &1 is initial. "003-
* select * from j_1bnflin "003-
* into table &5 "003-
* where refkey eq &1 "003-
* and reftyp eq &2 "003-
* and refitm eq &3. "003-
*Verificar se � de cancelamento ou estorno(N�o vai para o Livro).
* loop at &5. "003-
* select single * "003-
* from j_1bnfdoc "003-
* where docnum eq &5-docnum "003-
* and nftype in &4. "003-

* Se o Documento for de entrada e cancelado


* if not j_1bnfdoc-docnum is initial. "003-

* Verifica se � de entrada e estornado


* if j_1bnfdoc-direct eq '1' and "003-
* j_1bnfdoc-cancel eq 'X' . "003-
* continue. "003-
* endif. "003-

* SGS-05/08/10-Ocor.2286066 - Verifica se o doc. � estorno de outro doc.


* if not j_1bnfdoc-docref is initial. "003-
* select single * "003-
* from j_1bnfdoc "003-
* where docnum eq j_1bnfdoc-docref. "003-

* if j_1bnfdoc-direct eq '1' and "003-


* j_1bnfdoc-cancel eq 'X' . "003-
* continue. "003-
* endif. "003-
* endif. "003-
* SGS-05/08/10-Ocor.2286066

* Tributos por item


* select * from j_1bnfstx "003-
* into table ti_j1bnfstx "003-
* where docnum eq &5-docnum "003-
* and itmnum eq &5-itmnum. "003-

* Calcula o IPI
* call function 'J_1B_NF_VALUE_DETERMINATION_I' "003-
* exporting "003-
* nf_item = &5 "003-
* importing "003-
* ext_item = ti_j1binlin "003-
* tables "003-
* nf_item_tax = ti_j1bnfstx. "003-

* Mover valores para a estrutura de retorno.


* move : &5-docnum to &6-docnum, "003-
* &5-itmnum to &6-itmnum, "003-
* &5-netwr to &6-netwr, "003-
* ti_j1binlin-ipival to &6-ipival. "003-
* endif. "003-
* endloop. "003-
* endif. "003-

* END-OF-DEFINITION. "003-
*-----------------------*
*INICIO DO PROCESSAMENTO*
*-----------------------*

*----------------------------------------------*
*Busca Nota Fiscal por Estoque(mseg->j_1bnflin)*
*----------------------------------------------*

* CLEAR : wl_refkey, wl_refitm. "003-

* CONCATENATE field_s-mblnr field_s-mjahr INTO wl_refkey. "003-


* MOVE field_s-zeile TO wl_refitm. "003-

* Achar nota Fiscal.


* m_nf_find wl_refkey "003-
* 'MD' "003-
* wl_refitm "003-
* r_nftype "003-
* ti_nfitem "003-
* field_s. "003-

* Se encontrou o documento. Parar o processamento.


* IF NOT field_s-docnum IS INITIAL. "003-
* EXIT. "003-
* ENDIF. "003-

*--------------------------------------------*
*Busca Nota Fiscal LI ( m_mebel -> j_1bnflin)*
*--------------------------------------------*
* CLEAR : wl_refkey, wl_refitm. "003-

*Seleciona MEBEL_NF
* PERFORM mebel_nf USING field_s "003-
* CHANGING wl_refkey "003-
* wl_refitm. "003-
* Achar nota Fiscal.
* m_nf_find wl_refkey "003-
* 'LI' "003-
* wl_refitm "003-
* r_nftype "003-
* ti_nfitem "003-
* field_s. "003-

* Se encontrou o documento. Parar o processamento.


* IF NOT field_s-docnum IS INITIAL. "003-
* EXIT. "003-
* ENDIF. "003-

*--------------------------------------------*
*Buscar Nota Fiscal LI(vbfa-j_1bnflin) *
*--------------------------------------------*
* CLEAR : wl_refkey, wl_refitm. "003-

* Seleciona referencia vbfa.

* PERFORM vbfa_nf "003-


* Begin - SGS - 27/02/09 - Ocor. 1571854 - melhoria de performance
* TABLES
* ti_vbfa "003-
* End - SGS - 27/02/09

* USING field_s "003-


* CHANGING wl_refkey "003-
* wl_refitm. "003-

* Achar nota Fiscal.


* m_nf_find wl_refkey "003-
* 'BI' "003-
* wl_refitm "003-
* r_nftype "003-
* ti_nfitem "003-
* field_s. "003-

*ENDFORM. " buscar_nota_fiscal "003-


*&---------------------------------------------------------------------*
*& Form mebel_nf
*&---------------------------------------------------------------------*
*FORM mebel_nf USING field_s STRUCTURE ti_notafiscal "003-
* CHANGING wl_refkey LIKE j_1bnflin-refkey "003-
* wl_refitm LIKE j_1bnflin-refitm. "003-

*-----------------------*
*Tabelas Internas Locais*
*-----------------------*
* DATA: BEGIN OF ti_mebel OCCURS 0, "003-
* lfgja LIKE m_mebel-lfgja, "003-
* lfbnr LIKE m_mebel-lfbnr, "003-
* lfpos LIKE m_mebel-lfpos, "003-
* ebeln LIKE m_mebel-ebeln, "003-
* ebelp LIKE m_mebel-ebelp, "003-
* zekkn LIKE m_mebel-zekkn, "003-
* vgabe LIKE m_mebel-vgabe, "003-
* gjahr LIKE m_mebel-gjahr, "003-
* belnr LIKE m_mebel-belnr, "003-
* buzei LIKE m_mebel-buzei, "003-
* END OF ti_mebel. "003-

*---------*
*Variaveis*
*---------*
* DATA: wl_belnr LIKE bkpf-belnr. "003-

*-----------------------*
*Inicio do Processamento*
*-----------------------*
*Selecionar Registros da mebel
* SELECT lfgja lfbnr lfpos ebeln ebelp "003-
* zekkn vgabe gjahr belnr buzei "003-
* INTO CORRESPONDING FIELDS OF TABLE ti_mebel "003-
* FROM m_mebel "003-
* WHERE lfgja EQ field_s-mjahr "003-
* AND lfbnr EQ field_s-mblnr "003-
* AND lfpos EQ field_s-zeile "003-
* AND vgabe = '2'. "003-

* SORT ti_mebel ASCENDING BY belnr lfgja. "003-

* LOOP AT ti_mebel. "003-


* Verifica se n�o � estornado e se � fatura
* SELECT SINGLE belnr "003-
* FROM rbkp "003-
* INTO wl_belnr "003-
* WHERE belnr EQ ti_mebel-belnr "003-
* AND gjahr EQ ti_mebel-gjahr "003-
* AND xrech EQ 'X' "003-
* AND stblg EQ ''. "003-

* IF sy-subrc IS INITIAL. "003-


* CONCATENATE ti_mebel-belnr ti_mebel-lfgja "003-
* INTO wl_refkey. "003-
* MOVE ti_mebel-buzei TO wl_refitm. "003-
* ELSE. "003-

* SELECT SINGLE belnr "003-


* FROM bkpf "003-
* INTO wl_belnr "003-
* WHERE bukrs EQ field_s-bukrs "003-
* AND belnr EQ ti_mebel-belnr "003-
* AND gjahr EQ ti_mebel-gjahr "003-
* AND stblg EQ ''. "003-

* IF sy-subrc IS INITIAL. "003-


* CONCATENATE field_s-bukrs(4) "003-
* ti_mebel-belnr ti_mebel-lfgja "003-
* INTO wl_refkey. "003-
* MOVE ti_mebel-buzei TO wl_refitm. "003-

* ENDIF. "003-
* ENDIF. "003-
* ENDLOOP. "003-

*ENDFORM. " mebel_nf "003-


*&---------------------------------------------------------------------*
*& Form vbfa_nf
*&---------------------------------------------------------------------*

*FORM vbfa_nf "003-


* Begin - SGS - 27/02/09 - Ocor. 1571854 - melhoria de performance
* TABLES ti_vbfa STRUCTURE ti_vbfa "003-
* End - SGS - 27/02/09
* USING field_s STRUCTURE ti_notafiscal "003-
* CHANGING wl_refkey LIKE j_1bnflin-refkey "003-
* wl_refitm LIKE j_1bnflin-refitm. "003-

*----------------*
*Variaveis Locais*
*----------------*
* DATA: w_modify LIKE sy-tabix. "003-

*-----------------*
*Constantes Locais*
*-----------------*
* CONSTANTS: cl_fatura(50) TYPE c VALUE 'MNOUSP56', "003-
* cl_mov_mat(50) TYPE c VALUE 'Rhi'. "003-

*-----------------------*
*Tabelas Internas Locais*
*-----------------------*

* DATA: BEGIN OF ti_vbfa_1 OCCURS 0, "003-


* vbelv LIKE vbfa-vbelv, "003-
* posnv LIKE vbfa-posnv, "003-
* vbeln LIKE vbfa-vbeln, "003-
* posnn LIKE vbfa-posnn, "003-
* vbtyp_n LIKE vbfa-vbtyp_n, "003-
* vbtyp_v LIKE vbfa-vbtyp_v, "003-
* erdat LIKE vbfa-erdat, "003-
* erzet LIKE vbfa-erzet, "003-
* stufe LIKE vbfa-stufe, "003-
* refkey LIKE j_1bnflin-refkey, "003-
* refitm LIKE j_1bnflin-refitm, "003-
* END OF ti_vbfa_1. "003-

* DATA: BEGIN OF ti_vbfa_aux OCCURS 0, "003-


* vbtyp_n LIKE vbfa-vbtyp_n, "003-
* vbelv LIKE vbfa-vbelv, "003-
* posnv LIKE vbfa-posnv, "003-
* vbeln LIKE vbfa-vbeln, "003-
* posnn LIKE vbfa-posnn, "003-
* stufe LIKE vbfa-stufe, "003-
* END OF ti_vbfa_aux. "003-

* DATA: BEGIN OF ti_link OCCURS 0, "003-


* mov_mat LIKE vbfa-vbelv, "003-
* itm_mat LIKE vbfa-posnv, "003-
* rem LIKE vbfa-vbelv, "003-
* itm_rem LIKE vbfa-posnv, "003-
* fat LIKE j_1bnflin-refkey, "003-
* itm_fat LIKE j_1bnflin-refitm, "003-
* END OF ti_link. "003-

* Begin - SGS - 27/02/09 - Ocor. 1571854 - melhoria de performance


* DATA: BEGIN OF r_ti_vbfa OCCURS 0, "003-
* vbelv LIKE vbfa-vbelv, "003-
* posnv LIKE vbfa-posnv, "003-
* vbeln LIKE vbfa-vbeln, "003-
* posnn LIKE vbfa-posnn, "003-
* vbtyp_n LIKE vbfa-vbtyp_n, "003-
* vbtyp_v LIKE vbfa-vbtyp_v, "003-
* erdat LIKE vbfa-erdat, "003-
* erzet LIKE vbfa-erzet, "003-
* stufe LIKE vbfa-stufe, "003-
* refkey LIKE j_1bnflin-refkey, "003-
* refitm LIKE j_1bnflin-refitm, "003-
* END OF r_ti_vbfa. "003-
* End - SGS - 27/02/09

*-----------------------*
*Inicio do Processamento*
*-----------------------*

* Begin - SGS - 27/02/09 - Ocor. 1571854 - melhoria de performance


* Seleciona todas as Movimenta��es
* select VBELV POSNV VBELN POSNN STUFE
* into table TI_VBFA_AUX
* from VBFA
* where VBELN eq FIELD_S-MBLNR
* and POSNN eq FIELD_S-ZEILE
* and ( VBTYP_N eq 'R'
* or VBTYP_N eq 'h'
* or VBTYP_N eq 'i' )
* and ( VBTYP_V eq 'J'
* or VBTYP_V eq 'T' ) .

*>>>Corre��o de performance. Ser� class no inicio apenas 1 vez.


*sort TI_VBFA ascending by vbeln POSNN.

*>>>cdc - ocorr 2145867 - 03/05/2010


*READ TABLE TI_VBFA WITH KEY
* vbeln = FIELD_S-MBLNR
* POSNN = FIELD_S-ZEILE
* INTO R_TI_VBFA
* BINARY SEARCH.
* SELECT vbelv posnv vbeln posnn "003-
* vbtyp_n vbtyp_v erdat erzet stufe "003-
* INTO TABLE r_ti_vbfa "003-
* FROM vbfa "003-
* WHERE vbeln EQ field_s-mblnr "003-
* AND posnn EQ field_s-zeile. "003-
* cdc fim
* LOOP AT r_ti_vbfa. "003-
* IF ( r_ti_vbfa-vbtyp_n EQ 'R' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'h' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'i' ) "003-
* AND ( r_ti_vbfa-vbtyp_v EQ 'J' "003-
* OR r_ti_vbfa-vbtyp_v EQ 'T' ). "003-

* APPEND r_ti_vbfa TO ti_vbfa_aux. "003-


* ENDIF. "003-
* ENDLOOP. "003-
* End - SGS - 27/02/09
*Verifica se possui registro
* m_verifica_carga_tabela ti_vbfa_aux. "003-

* Ordena para manter a ultima movimenta��o de remessa.


* SORT ti_vbfa_aux ASCENDING BY vbeln posnn .
* SORT ti_vbfa_aux DESCENDING BY vbeln posnv vbelv.
* DELETE ADJACENT DUPLICATES FROM ti_vbfa_aux COMPARING vbeln posnn.
* SORT ti_vbfa_aux ASCENDING BY vbelv posnv.
* SORT ti_vbfa_aux DESCENDING BY vbeln posnn stufe. "003-
* DELETE ADJACENT DUPLICATES FROM ti_vbfa_aux "003-
* COMPARING vbeln posnn. "003-
* SORT ti_vbfa_aux ASCENDING BY vbelv posnv. "003-

* IF NOT ti_vbfa_aux[] IS INITIAL. "003-

* SGS
* Seleciona a Fatura/ Movimento de Mercadoria
* select VBELV POSNV VBELN POSNN VBTYP_N VBTYP_V ERDAT ERZET STUFE
* into corresponding fields of table TI_VBFA_1
* from VBFA
* for all entries in TI_VBFA_AUX
* where VBELV eq TI_VBFA_AUX-VBELV
* and POSNV eq TI_VBFA_AUX-POSNV
* and ( VBTYP_N = 'M' or VBTYP_N = 'O' or
* VBTYP_N = 'U' or VBTYP_N = 'N' or
* VBTYP_N = '5' or VBTYP_N = '6' or
* VBTYP_N = 'S' or VBTYP_N = 'P' or
* VBTYP_N = 'h' or VBTYP_N = 'R' )
* and STUFE eq TI_VBFA_AUX-STUFE.

* CLEAR: r_ti_vbfa. "003-


* SORT ti_vbfa_aux ASCENDING BY vbelv posnv. "003-

* LOOP AT ti_vbfa_aux. "003-

*>>>cdc - ocorr 2145867 - 03/05/2010


* READ TABLE TI_VBFA WITH KEY
* VBELV = TI_VBFA_AUX-VBELV
* POSNV = TI_VBFA_AUX-POSNV
* INTO R_TI_VBFA
* BINARY SEARCH.

* SELECT vbelv posnv vbeln posnn vbtyp_n "003-


* vbtyp_v erdat erzet stufe "003-
* INTO TABLE r_ti_vbfa "003-
* FROM vbfa "003-
* FOR ALL ENTRIES IN ti_vbfa_aux "003-
* WHERE vbelv EQ ti_vbfa_aux-vbelv "003-
* AND posnv EQ ti_vbfa_aux-posnv. "003-

* cdc fim
* LOOP AT r_ti_vbfa. "003-
* IF ( r_ti_vbfa-vbtyp_n EQ 'M' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'O' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'U' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'N' "003-
* OR r_ti_vbfa-vbtyp_n EQ '5' "003-
* OR r_ti_vbfa-vbtyp_n EQ '6' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'S' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'P' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'h' "003-
* OR r_ti_vbfa-vbtyp_n EQ 'R'). "003-

* APPEND r_ti_vbfa TO ti_vbfa_1. "003-

* ENDIF. "003-
* ENDLOOP. "003-

* ENDLOOP. "003-
* End - SGS - 27/02/09

* ENDIF. "003-

* Manter a fatura correta


* SORT ti_vbfa_1 ASCENDING BY erdat erzet vbelv posnv.
* SORT ti_vbfa_1 descending BY erdat erzet vbelv posnv.

* LOOP AT ti_vbfa_1. "003-

* CLEAR: ti_link, w_modify. "003-


* MOVE: ti_vbfa_1-vbelv TO ti_link-rem , "003-
* ti_vbfa_1-posnv TO ti_link-itm_rem. "003-

*Mover Fatura
* IF ti_vbfa_1-vbtyp_n CA cl_fatura. "003-

* READ TABLE ti_link WITH KEY rem = ti_vbfa_1-vbelv "003-


* itm_rem = ti_vbfa_1-posnv "003-
* fat = ' '. "003-

* IF sy-subrc IS INITIAL. "003-


* w_modify = sy-tabix. "003-
* ENDIF. "003-

* MOVE: ti_vbfa_1-vbeln TO ti_link-fat , "003-


* ti_vbfa_1-posnn TO ti_link-itm_fat. "003-

*Mover Movimento Mercadoria


* ELSEIF ti_vbfa_1-vbtyp_n CA cl_mov_mat. "003-

* READ TABLE ti_link WITH KEY rem = ti_vbfa_1-vbelv "003-


* itm_rem = ti_vbfa_1-posnv "003-
* mov_mat = ' '. "003-
* IF sy-subrc IS INITIAL. "003-
* w_modify = sy-tabix. "003-
* ENDIF. "003-

* MOVE: ti_vbfa_1-vbeln TO ti_link-mov_mat , "003-


* ti_vbfa_1-posnn TO ti_link-itm_mat . "003-

* ENDIF. "003-

* IF w_modify IS INITIAL. "003-

* APPEND ti_link. "003-

* ELSE. "003-

* MODIFY ti_link INDEX w_modify. "003-

* ENDIF. "003-
* ENDLOOP. "003-

* DELETE ti_link WHERE mov_mat IS INITIAL "003-


* OR fat IS INITIAL. "003-

* Mover ultima fatura.


* LOOP AT ti_link WHERE "003-
* mov_mat EQ field_s-mblnr. "003-

* MOVE: ti_link-fat TO wl_refkey, "003-


* ti_link-itm_fat TO wl_refitm. "003-

* ENDLOOP. "003-

*ENDFORM. " vbfa_nf "003-


**&---------------------------------------------------------------------*
**& Form enviar_ctr_xml
**&---------------------------------------------------------------------*
*FORM enviar_ctr_xml TABLES w_idoc_data STRUCTURE edidd
* USING w_tabix
* w_idoc_cont.
*
* DATA: es_ysynctr LIKE ysynctr.
* DATA: w_sy_tabyx LIKE sy-tabix. "007+
*
*
** Popular Segmento de Controle de IDOC.
* MOVE: w_tabix TO es_ysynctr-total_linha,
* w_idoc_cont TO es_ysynctr-total_registro.
*
* MOVE: w_tabix TO w_sy_tabyx. "007+
*
** ADD 1 TO w_tabix. "007-
* ADD 1 TO w_sy_tabyx. "007+
* w_idoc_data-segnam = 'YSYNCTR'.
* m_popular_segmento_idoc w_sy_tabyx es_ysynctr w_idoc_data.
*
*ENDFORM. " enviar_ctr_xml
*&---------------------------------------------------------------------*
*& Form DEFINE_PERIODO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_R_DATA text
* -->P_V_MONAT text
* -->P_V_GJAHR text
*----------------------------------------------------------------------*
*FORM define_periodo TABLES p_data "001-
* USING p_monat "001-
* p_gjahr. "001-

* DATA: vl_ini TYPE sy-datum, "001-


* vl_fim TYPE sy-datum. "001-

* DATA: BEGIN OF r_range OCCURS 0. "001-


* INCLUDE STRUCTURE yssyn_spedfiscal_budat. "001-
* DATA: END OF r_range. "001-

* REFRESH p_data. "001-

* CONCATENATE p_gjahr p_monat '01' "001-


* INTO vl_ini. "001-

* CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH' "001-


* EXPORTING "001-
* day_in = vl_ini "001-
* IMPORTING "001-
* last_day_of_month = vl_fim "001-
* EXCEPTIONS "001-
* day_in_not_valid = 1 "001-
* OTHERS = 2. "001-

* IF sy-subrc <> 0. "001-


* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF. "001-

* CLEAR r_range. "001-


* r_range-option = 'BT'. "001-
* r_range-sign = 'I'. "001-
* r_range-low = vl_ini. "001-
* r_range-high = vl_fim. "001-
* APPEND r_range TO p_data. "001-

*ENDFORM. " DEFINE_PERIODO "001-


*&---------------------------------------------------------------------*
*& Form PERIOD
*&---------------------------------------------------------------------*
* Block K - Define period "001+
*----------------------------------------------------------------------*
FORM period TABLES rx_budat STRUCTURE yssyn_spedfiscal_budat
USING vx_monat TYPE monat
vx_gjahr TYPE gjahr.

* CALL FUNCTION 'YFSYN_SPEDFISCAL_BLOCKK_PERIOD' "001-


* EXPORTING "001-
* i_monat = vx_monat "001-
* i_gjahr = vx_gjahr "001-
* IMPORTING
* i_data_ini = v_data_ini
* i_data_fim = v_data_fim
* TABLES "001-
* r_budat = rx_budat. "001-
CALL FUNCTION 'YFSYN_SPEDFISCAL_BLOCOK_PERIOD' "001+
EXPORTING "001+
i_monat = vx_monat "001+
i_gjahr = vx_gjahr "001+
TABLES "001+
r_budat = rx_budat. "001+

ENDFORM. " PERIOD


*&---------------------------------------------------------------------*
*& Form SELECT_VBFA_1
*&---------------------------------------------------------------------*
* Select VBFA - Step 1
*----------------------------------------------------------------------*
FORM select_vbfa_1 "003+
TABLES tx_vbfa "003+
tx_mseg STRUCTURE ti_mseg. "003+

CHECK NOT tx_mseg[] IS INITIAL. "003+

TYPES: BEGIN OF ty_mseg_aux, "003+


mblnr TYPE vbfa-vbeln, "003+
zeile TYPE vbfa-posnn, "003+
END OF ty_mseg_aux. "003+
DATA: wl_mseg LIKE ti_mseg, "003+
wl_mseg_aux TYPE ty_mseg_aux, "003+
tl_mseg_aux TYPE TABLE OF ty_mseg_aux. "003+

LOOP AT tx_mseg "003+


INTO wl_mseg. "003+
wl_mseg_aux-mblnr = wl_mseg-mblnr. "003+
wl_mseg_aux-zeile = wl_mseg-zeile. "003+
APPEND wl_mseg_aux "003+
TO tl_mseg_aux. "003+
CLEAR wl_mseg_aux. "003+
ENDLOOP. "003+

IF NOT tl_mseg_aux[] IS INITIAL. "006+

SELECT vbelv "003+


posnv "003+
vbeln "003+
posnn "003+
vbtyp_n "003+
vbtyp_v "003+
stufe "003+
FROM vbfa "003+
INTO TABLE tx_vbfa "003+
FOR ALL ENTRIES IN tl_mseg_aux "003+
WHERE vbeln = tl_mseg_aux-mblnr "003+
AND posnn = tl_mseg_aux-zeile. "003+

ENDIF.

ENDFORM. " SELECT_VBFA_1 "003+


*&---------------------------------------------------------------------*
*& Form SELECT_J_1BNFDOC
*&---------------------------------------------------------------------*
* Select J_1BNFDOC - Step 1
*----------------------------------------------------------------------*
FORM select_j_1bnfdoc "003+
TABLES tx_j_1bnfdoc "003+
tx_j_1bnflin STRUCTURE j_1bnflin. "003+

CHECK NOT tx_j_1bnflin[] IS INITIAL. "003+

SELECT docnum "003+


nftype "003+
direct "003+
cancel "003+
docref "003+
FROM j_1bnfdoc "003+
INTO TABLE tx_j_1bnfdoc "003+
FOR ALL ENTRIES IN tx_j_1bnflin "003+
WHERE docnum = tx_j_1bnflin-docnum. "003+

ENDFORM. " SELECT_J_1BNFDOC "003+

You might also like