quinta-feira, 22 de maio de 2014

Geração de arquivo XML

  Essa é para ficar no meu histórico.

  DATAlcl_xml TYPE REF TO cl_xml_document.

  CREATE OBJECT lcl_xml.

  CALL METHOD lcl_xml->create_empty_document
    RECEIVING
      retcode l_subrc.

  IF l_subrc <> 0.
    RAISE erro_xml.
  ENDIF.

  CALL METHOD lcl_xml->set_encoding
    EXPORTING
      charset 'UTF-8'.

  CALL METHOD lcl_xml->m_document->set_standalone
    EXPORTING
      standalone l_boolean.
 

  CALL METHOD lcl_xml->m_document->create_element
    EXPORTING
      name 'TLote_GNRE'
    RECEIVING
      rval lcl_lotes_element.

  "Atributos ---------------------------------------------------

  "xmlns
  CALL METHOD lcl_lotes_element->set_attribute
    EXPORTING
      name  'xmlns'
      value 'http://www.gnre.pe.gov.br'
    RECEIVING
      rval  l_rval.
 


  CALL METHOD lcl_xml->m_document->create_element
    EXPORTING
      name 'guias'
    RECEIVING
      rval lcl_guias_element.

  LOOP AT it_gnre INTO lw_gnre.

    PERFORM f_xml_lote USING lw_gnre
                             lcl_lotes_element
                             lcl_guias_element
                    CHANGING lcl_xml.

  ENDLOOP.

  CALL METHOD lcl_lotes_element->append_child
    EXPORTING
      new_child lcl_guias_element
    RECEIVING
      rval      l_rval.


  CALL METHOD lcl_xml->m_document->append_child
    EXPORTING
      new_child lcl_lotes_element
    RECEIVING
      rval      l_rval.

  IF i_display '1'.
    CALL METHOD lcl_xml->display.
  ENDIF.

  lcl_xml->export_to_filefilename l_full_path ).
 




=========================== CÓDIGO DO PERFORM

FORM f_xml_lote USING fw_gnre TYPE ztgnre
                      fcl_lote  TYPE REF TO if_ixml_element
                      fcl_guias TYPE REF TO if_ixml_element
             CHANGING fcl_xml TYPE REF TO cl_xml_document.

  DATAlcl_dados_e TYPE REF TO if_ixml_element,
        lcl_emi_e   TYPE REF TO if_ixml_element,
        lcl_des_e   TYPE REF TO if_ixml_element,
        lcl_aux     TYPE REF TO if_ixml_element.

  DATAlw_nfdoc TYPE ztnfdoc,
        lw_sadr  TYPE sadr,
        lw_parnad TYPE j_1binnad.

  DATAl_cgc   TYPE LENGTH 20,
        l_nome  TYPE zze_nome_emp70.

  DATAl_rval   TYPE i,
        l_insc   TYPE char20,
        l_stains TYPE j_1bstains,
        l_value  TYPE string,
        l_descr  TYPE sf_descr50.

  DEFINE lm_set_att.

   CALL METHOD fcl_xml->m_document->create_element
     EXPORTING
       name &2
     RECEIVING
       rval lcl_aux.

    call method lcl_aux->set_value
      exporting
        value &3
      receiving
        rval  &4.

  CALL METHOD &1->append_child
    EXPORTING
      new_child lcl_aux
    RECEIVING
      rval      l_rval.

  END-OF-DEFINITION.


  SELECT SINGLE *
    INTO lw_nfdoc
    FROM j_1bnfdoc
   WHERE docnum EQ fw_gnre-docnum.

  CHECK sy-subrc 0.

  "Dados do favorecido
  CALL FUNCTION 'ZGET_BRANCH_NAME'
    EXPORTING
      i_bukrs         lw_nfdoc-bukrs
      i_branch        lw_nfdoc-branch
    IMPORTING
      e_nome          l_nome
      e_cgc           l_cgc
      e_address       lw_sadr
      e_insc_estadual l_stains.

  "Dados do cliente
  CALL FUNCTION 'ZNF_PARTNER_READ'
    EXPORTING
      partner_type           lw_nfdoc-partyp
      partner_id             lw_nfdoc-parid
    IMPORTING
      parnad                 lw_parnad
    EXCEPTIONS
      partner_not_found      1
      partner_type_not_found 2
      OTHERS                 3.

  CALL METHOD fcl_xml->m_document->create_element
    EXPORTING
      name 'TDadosGNRE'
    RECEIVING
      rval lcl_dados_e.

  l_value lw_parnad-regio.
  lm_set_att lcl_dados_e 'c01_UfFavorecida' l_value l_rval.

  l_value fw_gnre-origtp.
  lm_set_att lcl_dados_e 'c02_receita' l_value l_rval.

  SELECT SINGLE descr
    INTO l_descr
    FROM z023t
   WHERE spras  EQ sy-langu
     AND regio  EQ lw_parnad-regio
     AND origtp EQ fw_gnre-origtp.

  l_value l_descr.
  lm_set_att lcl_dados_e 'c25_detalhamentoReceita' l_value l_rval.

  l_value fw_gnre-codproduto.
  lm_set_att lcl_dados_e 'c26_produto' l_value l_rval.

  l_value '1'.
  lm_set_att lcl_dados_e 'c27_tipoIdentificacaoEmitente' l_value l_rval.

  CALL METHOD fcl_xml->m_document->create_element
    EXPORTING
      name 'c03_idContribuinteEmitente'
    RECEIVING
      rval lcl_emi_e.

  l_value space.
  lm_set_att lcl_emi_e 'CPF' l_value l_rval.

  l_value l_cgc.
  lm_set_att lcl_emi_e 'CNPJ' l_value l_rval.

  CALL METHOD lcl_dados_e->append_child
    EXPORTING
      new_child lcl_emi_e
    RECEIVING
      rval      l_rval.

  l_value '10'"Nota Fiscal
  lm_set_att lcl_dados_e 'c28_tipoDocOrigem' l_value l_rval.

  IF lw_nfdoc-nfe 'X'.
    l_value lw_nfdoc-nfenum.
  ELSE.
    l_value lw_nfdoc-nfnum.
  ENDIF.

  lm_set_att lcl_dados_e 'c04_docOrigem' l_value l_rval.  "NF

  l_value fw_gnre-vlr_princ.
  lm_set_att lcl_dados_e 'c06_valorPrincipal' l_value l_rval.

  l_value fw_gnre-vlr_princ + fw_gnre-vlr_atua +
            fw_gnre-vlr_multa + fw_gnre-vlr_juros.
  lm_set_att lcl_dados_e 'c10_valorTotal' l_value l_rval.

  l_value fw_gnre-vencimento.
  lm_set_att lcl_dados_e 'c14_dataVencimento' l_value l_rval.

  l_value space.
  lm_set_att lcl_dados_e 'c15_convenio' l_value l_rval.

  l_value  l_nome.
  lm_set_att lcl_dados_e 'c16_razaoSocialEmitente' l_value l_rval.

  CALL FUNCTION 'ZGFGNRE_INSC_ESTAD'
    EXPORTING
      i_bukrs          fw_gnre-bukrs
      i_branch         fw_gnre-branch
      i_regio          fw_gnre-regio
    CHANGING
      c_inscr_estadual l_insc.

  l_value l_insc.
  lm_set_att lcl_dados_e 'c17_inscricaoEstadualEmitente' l_value l_rval.

  l_value lw_sadr-stras.
  lm_set_att lcl_dados_e 'c18_enderecoEmitente' l_value l_rval"Local de negócio

  l_value lw_sadr-ort01.
  lm_set_att lcl_dados_e 'c19_municipioEmitente' l_value l_rval"Local de negócio

  l_value lw_sadr-regio.
  lm_set_att lcl_dados_e 'c20_ufEnderecoEmitente' l_value l_rval"Local de negócio

  l_value lw_sadr-pstlz.
  lm_set_att lcl_dados_e 'c21_cepEmitente' l_value l_rval"Local de negócio

  l_value lw_sadr-telf1.
  lm_set_att lcl_dados_e 'c22_telefoneEmitente' l_value l_rval"Local de negócio

  IF lw_parnad-cgc IS NOT INITIAL.
    l_value '1'.
  ELSE.
    l_value '2'.
  ENDIF.

  lm_set_att lcl_dados_e 'c34_tipoIdentificacaoDestinatario' l_value l_rval"1 ou 2

  CALL METHOD fcl_xml->m_document->create_element
    EXPORTING
      name 'c35_idContribuinteDestinatario'
    RECEIVING
      rval lcl_des_e.

  l_value lw_parnad-cpf.
  lm_set_att lcl_des_e 'CPF' l_value l_rval.
  l_value lw_parnad-cgc.
  lm_set_att lcl_des_e 'CNPJ' l_value l_rval.

  CALL METHOD lcl_dados_e->append_child
    EXPORTING
      new_child lcl_des_e
    RECEIVING
      rval      l_rval.

  l_value lw_parnad-stains.
  lm_set_att lcl_dados_e 'c36_inscricaoEstadualDestinatario' l_value l_rval.

  l_value lw_parnad-name1.
  lm_set_att lcl_dados_e 'c37_razaoSocialDestinatario' l_value l_rval.

  l_value lw_parnad-ort01.
  lm_set_att lcl_dados_e 'c38_municipioDestinatario' l_value l_rval.

  l_value fw_gnre-vencimento.
  lm_set_att lcl_dados_e 'c33_dataPagamento' l_value l_rval.

  CALL METHOD fcl_guias->append_child
    EXPORTING
      new_child lcl_dados_e
    RECEIVING
      rval      l_rval.

  CALL METHOD fcl_lote->append_child
    EXPORTING
      new_child fcl_guias
    RECEIVING
      rval      l_rval.

ENDFORM.                    " F_XML_LOTE
  

+++++++++++++++++++++++++++++++++++++++++++=
saída do arquivo
+++++++++++++++++++++++++++++++++++++++++++=
  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
- <TLote_GNRE xmlns="http://www.gnre.pe.gov.br">
- <guias>
- <TDadosGNRE>
  <c01_UfFavorecida>PR</c01_UfFavorecida>
  <c02_receita>1210</c02_receita>
  <c25_detalhamentoReceita>Recolhimento Antecipado - Entradas do Exterior.</c25_detalhamentoReceita>
  <c26_produto />
  <c27_tipoIdentificacaoEmitente>1</c27_tipoIdentificacaoEmitente>
- <c03_idContribuinteEmitente>
  <CPF />
  <CNPJ>74.544.297/0001-92</CNPJ>
  </c03_idContribuinteEmitente>
  <c28_tipoDocOrigem>10</c28_tipoDocOrigem>
  <c04_docOrigem>000000046</c04_docOrigem>
  <c06_valorPrincipal>213.50</c06_valorPrincipal>
  <c10_valorTotal>213.50</c10_valorTotal>
  <c14_dataVencimento>20100731</c14_dataVencimento>
  <c15_convenio />
  <c16_razaoSocialEmitente>FH Consultoria Empresarial Ltda</c16_razaoSocialEmitente>
  <c17_inscricaoEstadualEmitente>1017622974</c17_inscricaoEstadualEmitente>
  <c18_enderecoEmitente>Rua Visconde de Nac 1440, 13º andar</c18_enderecoEmitente>
  <c19_municipioEmitente>Curitiba</c19_municipioEmitente>
  <c20_ufEnderecoEmitente>PR</c20_ufEnderecoEmitente>
  <c21_cepEmitente>80410-201</c21_cepEmitente>
  <c22_telefoneEmitente>(41) 3593-3223</c22_telefoneEmitente>
  <c34_tipoIdentificacaoDestinatario>1</c34_tipoIdentificacaoDestinatario>
- <c35_idContribuinteDestinatario>
  <CPF>00000000000</CPF>
  <CNPJ>61194080000158</CNPJ>
  </c35_idContribuinteDestinatario>
  <c36_inscricaoEstadualDestinatario />
  <c37_razaoSocialDestinatario>Fornecedor nacional Paraná</c37_razaoSocialDestinatario>
  <c38_municipioDestinatario>Curitiba</c38_municipioDestinatario>
  <c33_dataPagamento>20100731</c33_dataPagamento>
  </TDadosGNRE>
  </guias>
  </TLote_GNRE>

 

sexta-feira, 16 de maio de 2014

Criação de campos na tela do cadastro de material MM01, MM02, MM03 - PARTE 2



Modificar a tela no grupo de função criado.  Nesse caso incluí um campo da mara MARA-BRAND_ID na tela.

Alterar na lógica do processamento p/ ler esse campo novo criado na tela. Salvar e ativar o grupo de função


Verificar sequência de tela que deseja colocar essa nova tela alterada.
  - Atribuir sequencia tela a usuáris/tip.mat/transação/setores industriais


Nesse caso vou pegar a primeira linha onde tem para todos os tipos de materiais. A sequência nesse caso é o 21. Voltar a tela anterior
 

Clicar no item
- Definir estrutura de telas de dados para cada sequencia de tela




Selecionar a sequencia 21 e clicar em telas de dados.
 




A tela escolhida será o de dados básicos. Clicar em subtelas




Na sequencia de subtelas, vai ter a tela q foi copiada mas standard.  No meu caso foi a 2001.




 Substituir o nome do programa pelo Z criado.