Carreha Hierarquia Do Cad de Contas SKB1

Embed Size (px)

DESCRIPTION

agsdgsdgasdg

Citation preview

*&---------------------------------------------------------------------**& Report ZFI_CARGA_HIER_OB58_DESDE_SKB1*& Autor Eduardo Perez 09-11-2011*&---------------------------------------------------------------------**& Este programa l as informaes no cadastro da conta SKB1 e a partir*& da conta COSIF que foi colocada no campo SKB1-ALTXT, coloca as contas*& na hierarquia HCOS da transao OB58.*&---------------------------------------------------------------------** EPERE-20ABR2012 Adicionar Radiobutton para selecionar se apagar a* hierarquia completa ou apenas os ns que sero sustituidos.* Inserir lgica para considerar 1ro BNDE, 2do FINAME e 3ro BPAR* ao definir onde sero inseridos os ns.* Mensages de erros e eventos que o programa considera.*&---------------------------------------------------------------------*REPORT ZFI_CARGA_HIER_OB58_DESDE_SKB1.Tables: t001, SKB1, "Tabela das contas onde aparece a conta COSIF FAGL_011QT, "Ns de Texto da OB58 FAGL_011ZC. "DATA: begin of t_BUKRS occurs 0, BUKRS type t001-BUKRS, end of t_BUKRS, begin of t_DATA occurs 0, SAKNR type SKB1-SAKNR, COSIF(10), ERGSL type FAGL_011QT-ERGSL, end of t_DATA, begin of t_NOS occurs 0, COSIF(10), ERGSL type FAGL_011QT-ERGSL, end of t_NOS.SELECTION-SCREEN BEGIN OF BLOCK B_DELE WITH FRAME TITLE text-DEL.parameters: p_DELN radiobutton group DELE default 'X'.SELECTION-SCREEN COMMENT /10(79) text-001.SELECTION-SCREEN COMMENT /10(79) text-002.parameters: p_DELS radiobutton group DELE.SELECTION-SCREEN COMMENT /10(79) text-003.SELECTION-SCREEN COMMENT /10(79) text-004.SELECTION-SCREEN END OF BLOCK B_DELE.SELECTION-SCREEN BEGIN OF BLOCK B_MSGS WITH FRAME TITLE text-MSG.parameters: p_CEXI as checkbox default ' '.parameters: p_ERRO as checkbox default 'X'.parameters: p_ATRI as checkbox default 'X'.parameters: p_INSE as checkbox default ' '.SELECTION-SCREEN END OF BLOCK B_MSGS.SELECTION-SCREEN BEGIN OF BLOCK B_TEST WITH FRAME TITLE text-TST.parameters: p_TEST as checkbox default 'X'.SELECTION-SCREEN END OF BLOCK B_TEST.*---------------------------------------------------------*start-of-selection.*---------------------------------------------------------** Primeiro procura os cdigos dos ns COSIF* (devem existir previamente na hierarquia* - este programa no cria novos ns! - if p_CEXI ne space. write:/ text-w00. endif. Select TXT45 ERGSL from FAGL_011QT into table t_NOS where VERSN = 'HCOS' and SPRAS = 'PT' and TXTYP = 'A'. loop at t_NOS. t_NOS-COSIF+2(8) = t_NOS-COSIF+0(8). t_NOS-COSIF+0(2) = '00'. modify t_NOS. if p_CEXI ne space. write:/001 t_NOS-COSIF, t_NOS-ERGSL. endif. endloop. if p_CEXI ne space. uline. endif.*---------------------------------------------------------** Ve as contas que tem conta COSIF, de BNDE FIN ou BPAR,* no marcadas p/eliminao,* no bloqueadas p/lanamento.* Primeiro trabalha com as contas do BNDES if p_ERRO ne space. write:/ text-w05. endif. select * from SKB1 where BUKRS = 'BNDE' and ALTKT space and XLOEB = space and XSPEB = space. clear t_DATA. t_DATA-SAKNR = SKB1-SAKNR. t_DATA-COSIF = SKB1-ALTKT.* Procura o cdigo do n pai desta conta loop at t_NOS where COSIF = SKB1-ALTKT. t_DATA-ERGSL = t_NOS-ERGSL. collect t_DATA. endloop. if sy-subrc ne 0. if p_ERRO ne space. write:/001 SKB1-BUKRS, SKB1-SAKNR, SKB1-ALTKT, '-', text-007. endif. endif. endselect.* Agora procura as contas de FIN, ve se j foram incluidas select * from SKB1 where BUKRS = 'FIN ' and ALTKT space and XLOEB = space and XSPEB = space.* Ve se a conta j foi cadastrada loop at t_DATA where SAKNR = SKB1-SAKNR. endloop. if sy-subrc ne 0. "S ir incluir se no foi cadastrada para BNDES clear t_DATA. t_DATA-SAKNR = SKB1-SAKNR. t_DATA-COSIF = SKB1-ALTKT.* Procura o cdigo do n pai desta conta loop at t_NOS where COSIF = SKB1-ALTKT. t_DATA-ERGSL = t_NOS-ERGSL. collect t_DATA. endloop. if sy-subrc ne 0. if p_ERRO ne space. write:/001 SKB1-BUKRS, SKB1-SAKNR, SKB1-ALTKT, '-', text-007. endif. endif. else. if t_DATA-COSIF ne SKB1-ALTKT. if p_ERRO ne space. write:/001 SKB1-BUKRS, SKB1-SAKNR, SKB1-ALTKT, '-', text-005. endif. endif. endif. endselect.* Agora procura as contas de BPAR, ve se j foram incluidas select * from SKB1 where BUKRS = 'BPAR' and ALTKT space and XLOEB = space and XSPEB = space.* Ve se a conta j foi cadastrada loop at t_DATA where SAKNR = SKB1-SAKNR. endloop. if sy-subrc ne 0. "S ir incluir se no foi cadastrada para BNDES clear t_DATA. t_DATA-SAKNR = SKB1-SAKNR. t_DATA-COSIF = SKB1-ALTKT.* Procura o cdigo do n pai desta conta loop at t_NOS where COSIF = SKB1-ALTKT. t_DATA-ERGSL = t_NOS-ERGSL. collect t_DATA. endloop. if sy-subrc ne 0. if p_ERRO ne space. write:/001 SKB1-BUKRS, SKB1-SAKNR, SKB1-ALTKT, '-', text-007. endif. endif. else. if t_DATA-COSIF ne SKB1-ALTKT. if p_ERRO ne space. write:/001 SKB1-BUKRS, SKB1-SAKNR, SKB1-ALTKT, '-', text-006. endif. endif. endif. endselect. if p_ERRO ne space. uline. endif.* Escreve na tela qual atribuio ser feita. if p_ATRI ne space. write:/ text-w01. if p_DELS ne space. write:/001 text-w04. else. write:/001 text-w02. endif. loop at t_DATA. write:/ t_DATA-SAKNR, t_DATA-COSIF. endloop. uline. endif.* Apaga as entradas na hierarquia (desconecta os filhos) if p_TEST = space. if p_DELS ne space. DELETE FROM FAGL_011ZC WHERE VERSN = 'HCOS'. else. loop at t_DATA. DELETE FROM FAGL_011ZC WHERE VERSN = 'HCOS' and KTOPL = 'PCOB' and VONKT = t_DATA-SAKNR. endloop. endif. endif.* Coloca novamente os filhos (contas PCO) na conta COSIF if p_INSE ne space. write:/ text-w03. endif. loop at t_DATA. if p_INSE ne space. write:/001 t_DATA-SAKNR, t_DATA-COSIF, t_DATA-ERGSL. endif. if p_TEST = space. clear FAGL_011ZC. FAGL_011ZC-VERSN = 'HCOS'. FAGL_011ZC-ERGSL = t_DATA-ERGSL. FAGL_011ZC-KTOPL = 'PCOB'. FAGL_011ZC-VONKT = t_DATA-SAKNR. FAGL_011ZC-BISKT = t_DATA-SAKNR. FAGL_011ZC-XSOLL = 'X'. FAGL_011ZC-XHABN = 'X'. modify FAGL_011ZC. if p_INSE ne space. write: 'RC=', sy-subrc. endif. endif. endloop. if p_INSE ne space. uline. endif.*---------------------------------------------------------*