25/02/2010

Gerando XML Manualmente

Necessidade : Criar Manualmente um XML apartir de uma tabela interna.

Solução : Vamos criar o XML utilizando as interfaces: if_ixml,if_ixml_document,if_ixml_node,if_ixml_element,if_ixml_element,if_ixml_cdata_section e as classe cl_ixml.

Veja Abaixo:


REPORT ZRR_SAMPLE.

*-----------------------------------------------------------------------
* | V.A.R.I.A.B.L.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

DATA: ixml TYPE REF TO if_ixml,
document TYPE REF TO if_ixml_document,
parent TYPE REF TO if_ixml_node,
element TYPE REF TO if_ixml_element,
element1 TYPE REF TO if_ixml_element,
cdata TYPE REF TO if_ixml_cdata_section,
xmlfile TYPE dcxmllines,
size TYPE i.

*-----------------------------------------------------------------------
* | C.U.S.T.O.M T.Y.P.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

TYPES : BEGIN OF ty_contatos_line,
nome TYPE string,
sobrenome TYPE string,
idade TYPE string,
sexo TYPE string,
END OF ty_contatos_line.

*-----------------------------------------------------------------------
* | C.U.S.T.O.M T.A.B.L.E.S T.Y.P.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

TYPES : ty_contatos_tab TYPE STANDARD TABLE OF ty_contatos_line.

*-----------------------------------------------------------------------
* | I.N.T.E.R.N.A.L T.A.B.L.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

DATA : it_contatos TYPE ty_contatos_tab.

*-----------------------------------------------------------------------
* | C.U.S.T.O.M S.T.R.U.C.T.U.R.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

DATA : st_contatos LIKE LINE OF it_contatos.

*-----------------------------------------------------------------------
* | S.C.R.E.E.N E.L.E.M.E.N.T.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE text-001.

SELECTION-SCREEN SKIP 1.

PARAMETER : p_disp RADIOBUTTON GROUP gp01, " DISPLAY XML
p_save RADIOBUTTON GROUP gp01. " SAVE XML

SELECTION-SCREEN END OF BLOCK bl01.

*-----------------------------------------------------------------------
* | S.T.A.R.T O.F S.E.L.E.C.T.I.O.N
*-----------------------------------------------------------------------

START-OF-SELECTION.

PERFORM f_bind_data_into_table.

PERFORM f_genarate_xml.

*-----------------------------------------------------------------------
* |-> Form : F_BIND_DATA_INTO_TABLE
*-----------------------------------------------------------------------
* |-> Text : LOAD VALUES INTO INTERNAL TABLE
*-----------------------------------------------------------------------
FORM f_bind_data_into_table .

CLEAR : it_contatos,
st_contatos.

st_contatos-nome = 'RAFAEL'.
st_contatos-sobrenome = 'RISO'.
st_contatos-idade = '24'.
st_contatos-sexo = 'M'.

INSERT st_contatos INTO TABLE it_contatos.

st_contatos-nome = 'MULHER'.
st_contatos-sobrenome = 'MORANGO'.
st_contatos-idade = '26'.
st_contatos-sexo = 'F'.

INSERT st_contatos INTO TABLE it_contatos.

st_contatos-nome = 'DARTH'.
st_contatos-sobrenome = 'VADER'.
st_contatos-idade = '87'.
st_contatos-sexo = 'M'.

INSERT st_contatos INTO TABLE it_contatos.

ENDFORM. " F_BIND_DATA_INTO_TABLE

*-----------------------------------------------------------------------
* |-> Form : F_GENARATE_XML
*-----------------------------------------------------------------------
* |-> Text : GENERATE XML FROM TABLE DATA
*-----------------------------------------------------------------------
FORM f_genarate_xml .

CLEAR : st_contatos.

* |-> CREATE iXML INSTANCE WITH SINGLETON
ixml = cl_ixml=>create( ).

* |-> CREATE iXML DOCUMENT
document = ixml->create_document( ).

* |-> CREATE A ROOT NODE IN DOCUMENT
element = document->create_element( name = 'CONTATOS' ).

* |-> APPEND NODE TO DOCUMENT
document->append_child( new_child = element ).

parent = element.

element1 = element.

LOOP AT it_contatos INTO st_contatos.

parent = element1.

* |-> CREATE A CHILD NODE IN DOCUMENT
element = document->create_element( name = 'CONTATO' ).

* |-> CREATE A CHILD NODE IN DOCUMENT
parent->append_child( new_child = element ).

parent = element.

* |-> CREATE A CHILD NODE IN DOCUMENT
element = document->create_element( name = 'NOME' ).

* |-> CREATE A CHILD NODE IN DOCUMENT
parent->append_child( new_child = element ).

* |-> SET VALUE TO CURRENT ELEMENT
element->set_value( value = st_contatos-nome ).

* |-> CREATE A CHILD NODE IN DOCUMENT
element = document->create_element( name = 'SOBRENOME' ).

* |-> CREATE A CHILD NODE IN DOCUMENT
parent->append_child( new_child = element ).

* |-> SET VALUE TO CURRENT ELEMENT
element->set_value( value = st_contatos-sobrenome ).

element = document->create_element( name = 'INFORMACOES' ).

* |-> CREATE A CHILD NODE IN DOCUMENT
parent->append_child( new_child = element ).

* |-> SET VALUE TO CURRENT ELEMENT
element->set_value( value = 'OUTRAS INFORMAÇÕES' ).

* |-> SET ATRIBUTE TO CURRENT ELEMENT
element->set_attribute( name = 'IDADE' value = st_contatos-idade ).

* |-> SET ATRIBUTE TO CURRENT ELEMENT
element->set_attribute( name = 'SEXO' value = st_contatos-sexo ).

* |-> CLEAR VALUES IN STRUCTURE
CLEAR st_contatos.

ENDLOOP.

IF p_disp EQ 'X'.

* |-> DISPLAY XML DOCUMENT
CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'
EXPORTING
document = document
title = 'order'.

ELSE.

* |-> SAVE XML DOCUMENT IN DRIVE C
CALL FUNCTION 'SDIXML_DOM_TO_XML'
EXPORTING
document = document
pretty_print = 'X'
IMPORTING
size = size
TABLES
xml_as_table = xmlfile.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = size
filename = 'C:\RR_XML_SAMPLE.xml'
filetype = 'BIN'
TABLES
data_tab = xmlfile
EXCEPTIONS
OTHERS = 1.

ENDIF.

ENDFORM. " F_GENARATE_XML


Tela:



XML:





RAFAEL
RISO
OUTRAS INFORMAÇÕES


MULHER
MORANGO
OUTRAS INFORMAÇÕES


DARTH
VADER
OUTRAS INFORMAÇÕES


ALV Dinamico com Field Symbols

Necessidade : Criar um programa que carregue várias tabelas em um unico ALV.

Solução : Vamos utilizar Field Symbols e as classes cl_gui_docking_container, cl_gui_alv_grid para alcançarmos nosso objetivo, e neste caso o ALV deve ser gerado na mesma tela dos parametros de seleção.

Veja Abaixo:


REPORT ZRR_SAMPLE.

*-----------------------------------------------------------------------
* | I.N.T.E.R.N.A.L T.A.B.L.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

DATA : it_zcorvc001 TYPE STANDARD TABLE OF zcorvc001,
it_zcorvc002 TYPE STANDARD TABLE OF zcorvc002,
it_zcorvc003 TYPE STANDARD TABLE OF zcorvc003,
it_zcorvc004 TYPE STANDARD TABLE OF zcorvc004.

*-----------------------------------------------------------------------
* | W.O.R.K.A.R.E.A.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

DATA : wa_zcorvc001 TYPE zcorvc001,
wa_zcorvc002 TYPE zcorvc002,
wa_zcorvc003 TYPE zcorvc003,
wa_zcorvc004 TYPE zcorvc004.

*-----------------------------------------------------------------------
* | F.I.E.L.D S.Y.M.B.O.L.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

FIELD-SYMBOLS : TYPE ANY,
TYPE STANDARD TABLE.

*-----------------------------------------------------------------------
* | C.L.A.S.S O.B.J.E.C.T.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

DATA : oref_dock TYPE REF TO cl_gui_docking_container,
oref_alv TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
* | V.A.R.I.A.B.L.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*-----------------------------------------------------------------------

DATA : i_exclude TYPE TABLE OF syucomm.

*-----------------------------------------------------------------------
* | S.C.R.E.E.N E.L.E.M.E.N.T.S D.E.F.I.N.I.T.I.O.N.
*-----------------------------------------------------------------------

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(10) text-002 FOR FIELD p_tab1.
PARAMETERS p_tab1 RADIOBUTTON GROUP gp01 USER-COMMAND change.
SELECTION-SCREEN COMMENT 20(10) text-003 FOR FIELD p_tab2.
PARAMETERS p_tab2 RADIOBUTTON GROUP gp01.
SELECTION-SCREEN COMMENT 40(10) text-004 FOR FIELD p_tab3.
PARAMETERS p_tab3 RADIOBUTTON GROUP gp01.
SELECTION-SCREEN COMMENT 60(10) text-005 FOR FIELD p_tab4.
PARAMETERS p_tab4 RADIOBUTTON GROUP gp01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK block1.

*-----------------------------------------------------------------------
* | I.N.I.T.I.A.L.I.Z.A.T.I.O.N
*-----------------------------------------------------------------------

INITIALIZATION.

p_tab1 = 'X'.
sy-ucomm = 'CHANGE'.

PERFORM f_load_data_from_table.

*-----------------------------------------------------------------------
* | A.T S.E.L.E.C.T.I.O.N-S.C.R.E.E.N O.U.T.P.U.T
*-----------------------------------------------------------------------

AT SELECTION-SCREEN OUTPUT.

APPEND 'ONLI' TO i_exclude.
APPEND 'SJOB' TO i_exclude.
APPEND 'PRIN' TO i_exclude.

CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
p_program = sy-repid
TABLES
p_exclude = i_exclude.

*-----------------------------------------------------------------------
* | A.T S.E.L.E.C.T.I.O.N-S.C.R.E.E.N
*-----------------------------------------------------------------------

AT SELECTION-SCREEN.

PERFORM f_load_data_from_table.


*-----------------------------------------------------------------------
* | Form : F_LOAD_DATA_FROM_TABLE
*-----------------------------------------------------------------------
* | Text : BIND DATA INTO INTERNAL TABLES
*-----------------------------------------------------------------------
FORM f_load_data_from_table .

IF sy-ucomm EQ 'CHANGE'.

IF p_tab1 IS NOT INITIAL.

SELECT * FROM zcorvc001 INTO TABLE it_zcorvc001.

ASSIGN : 'ZCORVC001' TO ,
it_zcorvc001 TO .

ENDIF.

IF p_tab2 IS NOT INITIAL.

SELECT * FROM zcorvc002 INTO TABLE it_zcorvc002.

ASSIGN : 'ZCORVC002' TO ,
it_zcorvc002 TO .

ENDIF.

IF p_tab3 IS NOT INITIAL.

SELECT * FROM zcorvc003 INTO TABLE it_zcorvc003.

ASSIGN : 'ZCORVC003' TO ,
it_zcorvc003 TO .

ENDIF.

IF p_tab4 IS NOT INITIAL.

SELECT * FROM zcorvc004 INTO TABLE it_zcorvc004.

ASSIGN : 'ZCORVC004' TO ,
it_zcorvc004 TO .

ENDIF.

ENDIF.

IF sy-subrc = 0.

IF oref_dock IS NOT BOUND.

CREATE OBJECT oref_dock
EXPORTING
repid = sy-repid
dynnr = '1000'
side = cl_gui_docking_container=>dock_at_bottom
ratio = 80
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

IF oref_alv IS NOT BOUND.

CHECK oref_dock IS BOUND.

CREATE OBJECT oref_alv
EXPORTING
i_parent = oref_dock
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

CHECK oref_alv IS BOUND.

CALL METHOD oref_alv->set_table_for_first_display
EXPORTING
i_structure_name =
CHANGING
it_outtab =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

ENDFORM. " F_LOAD_DATA_FROM_TABLE


24/02/2010

Gerar PDF Apartir de um SMARTFORM


REPORT ZRR_SAMPLE.

*--------------------------------------------------------------------------
* | S.T.A.N.D.A.R.D S.T.R.U.C.T.U.R.E.S D.E.F.I.N.I.T.I.O.N
*--------------------------------------------------------------------------

TABLES: sflight, vdarl.

*--------------------------------------------------------------------------
* | V.A.R.I.A.B.L.E.S D.E.C.L.A.R.A.T.I.O.N.S
*--------------------------------------------------------------------------

DATA : ls_control_param TYPE ssfctrlop,
ls_composer_param TYPE ssfcompop,
ws_fname TYPE rs38l_fnam.

DATA : l_document_output_info TYPE ssfcrespd,
l_job_output_info TYPE ssfcrescl,
l_job_output_options TYPE ssfcresop.

*--------------------------------------------------------------------------
* | C.U.S.T.O.M T.Y.P.E.S D.E.F.I.N.I.T.I.O.N
*--------------------------------------------------------------------------

TYPES : ty_sflight_tab TYPE STANDARD TABLE OF sflight.

*--------------------------------------------------------------------------
* | I.N.T.E.R.N.A.L T.A.B.L.E.S D.E.F.I.N.I.T.I.O.N.S
*--------------------------------------------------------------------------

DATA : it_sflight TYPE ty_sflight_tab.

*--------------------------------------------------------------------------
* | E.L.E.M.E.N.T.S O.F S.C.R.E.E.N D.E.F.I.N.I.T.I.O.N
*--------------------------------------------------------------------------

SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-001 .
SELECT-OPTIONS s_carrid FOR sflight-carrid NO-EXTENSION NO INTERVALS .
SELECTION-SCREEN END OF BLOCK b.

*--------------------------------------------------------------------------
* | S.T.A.R.T O.F S.E.L.E.C.T.I.O.N
*--------------------------------------------------------------------------

START-OF-SELECTION.

* |-> D.E.F.I.N.E I.N.I.T.I.A.L V.A.L.U.E.S F.O.R
* LS_CONTROL_PARAM S.T.R.U.C.T.U.R.E

ls_control_param-device = space.
ls_control_param-getotf = 'X'.
ls_control_param-no_dialog = 'X'.

* |-> C.A.L.L F.U.N.C.T.I.O.N P.A.R.A R.E.C.U.P.A.R
* N.O.M.E D.A F.U.N.Ç.Ã.O G.E.R.A.D.A Q.U.A.N.D.O
* O S.M.A.R.T.F.O.R.M É A.T.I.V.A.D.O

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'Z_TESTE_SMARTF'
IMPORTING
fm_name = ws_fname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.

* |-> B.I.N.D I.N.T.E.R.N.A.L T.A.B.L.E

SELECT *
FROM sflight
INTO TABLE it_sflight
WHERE carrid IN s_carrid.

* |-> C.A.L.L S.M.A.R.T.F.O.R.M F.U.N.C.T.I.O.N N.A.M.E

* |-> O.B.S: PARA CADA FUNÇÃO OS PARAMETROS SÃO DIFERENTES
* DEFINA DE ACORDO COM A INTERFACE DO SEU SMARTFORM

CALL FUNCTION ws_fname
EXPORTING
control_parameters = ls_control_param
IMPORTING
document_output_info = l_document_output_info
job_output_info = l_job_output_info
job_output_options = l_job_output_options
TABLES
it_sflight = it_sflight
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

* |-> C.A.L.L F.U.N.C.T.I.O.N F.O.R P.R.E.V.I.E.W PDF

CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'
EXPORTING
i_otf = l_job_output_info-otfdata
EXCEPTIONS
convert_otf_to_pdf_error = 1
cntl_error = 2
OTHERS = 3.

ALV LIST Hierarquico Utilizando a Classe CL_SALV_HIERSEQ_TABLE


REPORT ZRR_SAMPLE.

*--------------------------------------------------------------------------
* | C.U.S.T.O.M T.Y.P.E.S D.E.F.I.N.I.T.I.O.N
*--------------------------------------------------------------------------

TYPES : BEGIN OF ty_ekko_line,
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
bstyp TYPE ekko-bstyp,
bsart TYPE ekko-bsart,
lponr TYPE ekko-lponr,
END OF ty_ekko_line.

TYPES : BEGIN OF ty_ekpo_line,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
txz01 TYPE ekpo-txz01,
END OF ty_ekpo_line.

*--------------------------------------------------------------------------
* | C.U.S.T.O.M I.N.T.E.R.N.A.L T.A.B.L.E T.Y.P.E.S D.E.F.I.N.I.T.I.O.N
*--------------------------------------------------------------------------

TYPES : ty_ekko_tab TYPE STANDARD TABLE OF ty_ekko_line,
ty_ekpo_tab TYPE STANDARD TABLE OF ty_ekpo_line.

*--------------------------------------------------------------------------
* | V.A.R.I.A.B.L.E.S D.E.C.L.A.R.A.T.I.O.N.S.
*--------------------------------------------------------------------------

DATA: it_hierseq TYPE REF TO cl_salv_hierseq_table,
it_ekko TYPE ty_ekko_tab,
it_ekpo TYPE ty_ekpo_tab,
it_levels TYPE salv_t_hierseq_binding,
wa_levels TYPE salv_s_hierseq_binding.

*--------------------------------------------------------------------------
* | S.T.A.R.T O.F S.E.L.E.C.T.I.O.N
*--------------------------------------------------------------------------

START-OF-SELECTION.

* |-> B.I.N.D I.N.T.E.R.N.A.L T.A.B.L.E.S

SELECT ebeln
bukrs
bstyp
bsart
lponr
INTO TABLE it_ekko FROM ekko.

SELECT ebeln
ebelp
matnr
txz01
INTO TABLE it_ekpo FROM ekpo
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln.

* |-> D.E.F.I.N.E L.E.V.E.L K.E.Y.S

wa_levels-master = 'EBELN'.
wa_levels-slave = 'EBELN'.

APPEND wa_levels TO it_levels.

* |-> C.R.E.A.T.E A.L.V O.B.J.E.C.T U.S.I.N.G F.A.C.T.O.R.Y M.E.T.H.O.D

cl_salv_hierseq_table=>factory( EXPORTING t_binding_level1_level2 = it_levels
IMPORTING r_hierseq = it_hierseq
CHANGING t_table_level1 = it_ekko t_table_level2 = it_ekpo
).

* |-> D.I.S.P.L.A.Y A.L.V O.U.T.P.U.T L.I.S.T

it_hierseq->display( ).

* |-> U.N.B.I.N.D I.N.T.E.R.N.A.L T.A.B.L.E.S

FREE : it_ekko[],
it_ekpo[].

11/02/2010

Download Tabela Interna Para Arquivo XML

REPORT  ZRR_SAMPLE.

TABLES: spfli.

DATA: it_table   TYPE STANDARD TABLE OF spfli WITH HEADER LINE,
      l_dom      TYPE REF TO if_ixml_element,
      m_document TYPE REF TO if_ixml_document,
      m_xmldoc   TYPE REF TO cl_xml_document,
      g_ixml     TYPE REF TO if_ixml,
      w_result   TYPE i,
      w_rc       LIKE sy-subrc.

DATA: p_file_tmp LIKE rlgrap-filename.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_carrid FOR spfli-carrid.

PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY DEFAULT 'C:\spfli'.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

  SELECT * FROM spfli INTO TABLE it_table WHERE carrid IN s_carrid.

END-OF-SELECTION.

*  *******************************************
*  *** Inicializa o iXML-Framework        ****
*  *******************************************
  CLASS cl_ixml DEFINITION LOAD.

  g_ixml = cl_ixml=>create( ).

  CHECK NOT g_ixml IS INITIAL.

*  *******************************************
*  *** Cria o DOM com dados do SAP        ****
*  *******************************************
  m_document = g_ixml->create_document( ).

  CHECK NOT m_document IS INITIAL.

*  ** Conversão da tabela interna em DOM ***

  CALL FUNCTION 'SDIXML_DATA_TO_DOM'
    EXPORTING
      name         = 'DADOS'
      dataobject   = it_table[]
    IMPORTING
      data_as_dom  = l_dom
    CHANGING
      document     = m_document
    EXCEPTIONS
      illegal_name = 1
      OTHERS       = 2.

  IF NOT sy-subrc = 0.

    WRITE: /'Erro DADOS -> DOM: ', sy-subrc.

  ENDIF.

  CHECK NOT l_dom IS INITIAL.

*  ** Apendando o DOM ao documento iXML ***
  w_rc = m_document->append_child( new_child = l_dom ).

  IF NOT w_rc IS INITIAL.

    WRITE: /'Erro DOM -> iXML: ', w_rc.

  ENDIF.

*  *******************************************
*  *** Criar XML apartir do DOM no iXML   ****
*  *******************************************
  CREATE OBJECT m_xmldoc.

  CHECK NOT m_xmldoc IS INITIAL.

  w_rc = m_xmldoc->create_with_dom( document = m_document ).

  IF NOT w_rc IS INITIAL.

    WRITE: /'Erro DOM+iXML -> XML: ', w_rc.

  ENDIF.

*  *******************************************
*  *** Mostrando o arquivo XML            ****
*  *******************************************

  CALL METHOD m_xmldoc->display.

*  *******************************************
*  *** Salvar o arquivo XML               ****
*  *******************************************

  CONCATENATE p_file '.xml' INTO p_file_tmp .

  CALL METHOD m_xmldoc->export_to_file( filename = p_file_tmp ).

Upload Arquivo XML Para Tabela Interna

REPORT  ZRR_SAMPLE.

TABLES: spfli.

FIELD-SYMBOLS :     TYPE ANY,
                 TYPE ANY.

TYPES : ty_itab TYPE STANDARD TABLE OF spfli.

DATA : it_table   TYPE ty_itab,
       it_bindata TYPE swxmlcont,
       v_filename TYPE string,
       v_size     TYPE i,
       retcode    TYPE sy-subrc,
       objxml     TYPE REF TO cl_xml_document.

CREATE OBJECT objxml.

v_filename = 'c:\spfli.xml'.

CALL METHOD cl_gui_frontend_services=>gui_upload
  EXPORTING
    filename                = v_filename
    filetype                = 'BIN'
  IMPORTING
    filelength              = v_size
  CHANGING
    data_tab                = it_bindata
  EXCEPTIONS
    file_open_error         = 1
    file_read_error         = 2
    no_batch                = 3
    gui_refuse_filetransfer = 4
    invalid_type            = 5
    no_authority            = 6
    unknown_error           = 7
    bad_data_format         = 8
    header_not_allowed      = 9
    separator_not_allowed   = 10
    header_too_long         = 11
    unknown_dp_error        = 12
    access_denied           = 13
    dp_out_of_memory        = 14
    disk_full               = 15
    dp_timeout              = 16
    not_supported_by_gui    = 17
    error_no_gui            = 18
    OTHERS                  = 19.

retcode = sy-subrc.

IF retcode = 0.
  retcode = objxml->create_with_table( table = it_bindata size = v_size ).
ENDIF.

retcode = objxml->parse_table( table = it_bindata size = v_size ).

objxml->get_data( CHANGING dataobject = it_table ).

LOOP AT it_table ASSIGNING .

  DO.

    ASSIGN COMPONENT sy-index OF STRUCTURE  TO .

    IF  IS ASSIGNED.

      WRITE .

    ELSE.

      NEW-LINE.

      EXIT.

    ENDIF.

    UNASSIGN .

  ENDDO.

ENDLOOP.

FREE : it_bindata,
       it_table.

UNASSIGN : ,
           .

10/02/2010

Funções - Parte 4

DATE_CHECK_WORKINGDAY Retorna se a data é dia util
HOLIDAY_CHECK_AND_GET_INFO Verificar se uma data é feriado
DAY_ATTRIBUTES_GET Retorna os dias uteis apartir de uma data
TXW_TEXTNOTE_EDIT Exibe uma caixa de texto para digitação livre
F4IF_CHOOSE_SEARCHHELP F4 dialog: Select an elementary search help
F4IF_DETERMINE_SEARCHHELP Determine the search help assigned to a DDIC field
F4_DATE Exibe calendario e passando PT ele exibe dias uteis e feriados
FORMAT_DATE_4_OUTPUT Formata data de acordo com a mascara
GET_WEEK_INFO_BASED_ON_DATE Retorna a segunda-feira e a sexta-feira de uma semana baseado em uma data
DELTA_TIME_DAY_HOUR Função que calcula quantidade de minutos em datas
SCP_REPLACE_STRANGE_CHARS Função para Remover Caracteres Especias, permite parametrizar
TRINT_DISPLAY_TABLE_CONTENTS Função para exibir conteúdo de uma Tabela
RPR_ABAP_SOURCE_SCAN Programa que procura programas, trechos de código.
KCD_FRONT_END_DIRECTORY_READ Além de verificar se o diretório existe, também lista arquivos de um diretório
RSDBCONN Programa para criar conexões externas na DBCO

Funções - Parte 3

DYNP_VALUES_UPDATE Change screen field contents w/o PBO
HELP_OBJECT_SHOW_FOR_FIELD EXIBE O HELP DE UM CAMPO DA TELA, QUANDO UTILIZANDO HELP REQUEST
SPELL_AMOUNT ESCREVER VALORES POR EXTENSO
TH_POPUP MENSAGEM DE ERRO NO SISTEMA
POPUP_TO_DISPLAY_TEXT EXIBE POPUPO COM DUAS LINHAS E UM TITULO
OPEN_FORM Abrir formulário SAPScript
WRITE_FORM Escrever formulário SAPScript
CLOSE_FORM Fechar formulário SAPScript
CONVERT_OTFSPOOLJOB_2_PDF Gera um PDF a partir do SPOOL
WS_DOWNLOAD Função Download (Sem POPUP)
RSPO_IDELETE_SPOOLREQ Apagar o SPOOL
WS_UPLOAD Função Upload (Sem POPUP)
SO_NEW_DOCUMENT_ATT_SEND_API1 Função que envia email
GUI_DOWNLOAD Função Download (Arquivo GUI)
MS_EXCEL_OLE_STANDARD_DAT Cria planilha p/ Excel (Arquivo Formato XLS)
RKE_TIMESTAMP_CONVERT_OUTPUT Converte campo tipo TIMESTAMP p/ Data e Hora
DATE_GET_WEEK Obtem o numero da semana a partir da data atual
WEEK_GET_FIRST_DAY Obtem o primeiro dia da próxima semana (Segunda-Feira, no formato DATE):
POPUP_GET_VALUES_DB_CHECKED POPUP p/ pegar valores checados
UPLOAD Função Upload (Com POPUP)
TT_POPUP_GET_FIELD POPUP p/ pegar valor de campo
DD_POPUP_WITH_INFOTEXT POPUP com texto de informação
MM_LAST_DAY_OF_MONTHS Obtem o valor do último dia do mês
DATE_COMPUTE_DAY Obtem o dia da semana ref. ao dia do mês
RP_CALC_DATE_IN_INTERVAL Adiciona/subtrai anos/mêses/dias de uma data
RZL_SLEEP Para o Processamento do programa de 1 a 5 Segungos
SD_DATETIME_DIFFERENCE Retorna a diferença entre duas datas e Hora
RH_GET_DATE_DAYNAME Retorna o dia da semana apartir de uma data

Funções - Parte 2

RS_TOOL_ACCESS Gera visao de tabelas como na se16
DDIF_NAMETAB_GET lista todas as caracteristicas de uma tabela
TERM_CONTROL_EDIT gera uma caixa de texto livre para que o usuario possa digitar informações
C14B_ADD_TIME onde você informa um horário inicial e data e quantas horas você quer acrescentar e ela retorna a data e hora final.
RM_DOMAIN_VALUES_GET retorna os valores de um range fixo de um dominio.
CHECK_DOMAIN_VALUES verifica se o valor existe para o dominio
CONVERSION_EXIT_CPFBR_OUTPUT Valida CPF
TR_F4_HELP passa uma tabela de valores e exibe um pop-up para seleção de um dos valores
READ_TEXT le textos de transações standards apartir do objet id linha por linha
READ_TEXT_INLINE Similar a READ_TEXT só que pertime informar quantas linhas serão retornadas
SAVE_TEXT gravar textos em transações standards
RSEC_GENERATE_PASSWORD GERAR SENHA
VIEW_MAINTENANCE_CALL Gera visão tipo SM30
TRINT_DISPLAY_TABLE_CONTENTS EXIBE CONTEUDO DA TABELA SOMENTE MODO DYSPLAY
NUMERIC_CHECK Verificar se um valor é numerico
RV_TABLE_READ le todas as informações de uma tabela, tipos, campos, nomes, textos, dominios, tamanho, etc...
SLS_MISC_CONVERT_TO_DATE passa uma string e retorna uma data formatada
CONVERT_DATE_INPUT converte a data de entrada
WWW_URLENCODE Converter texto do formato ISO para UTF-8
TRANSACTION_CALL_VIA_RFC Chama qualquer transação, independente se tem autorização
SO_DOCUMENT_SEND_API1 Envio de E-mail
ALSM_EXCEL_TO_INTERNAL_TABLE Baixando planilha do EXCEL
EXCEL_OLE_STANDARD_DAT Criando planilha do EXCEL
RTP_US_API_MAX_DAYS_IN_MONTH Retorna o número de dias do mês
CONVERSION_EXIT_ALPHA_INPUT Incluir zeros a esquerda do número
CONVERSION_EXIT_ALPHA_OUTPUT Retirar zero a esquerda de uma variável
SCP_REPLACE_STRANGE_CHARS Função para remover assento de um campo texto/string
C14B_ADD_TIME Função para adicionar horas em uma data
DYNP_VALUES_READ Read screen field values before PAI field transport

Funções - Parte 1

POPUP_GET_VALUES_DB_CHECKED Valida a existencia do valor contra a tabela
DD_POPUP_WITH_INFOTEXT Exibe PopUp com varias linhas
MM_LAST_DAY_OF_MONTHS Obtem o valor do último dia do mês
POPUP_GET_VALUES Obtem valor atraves da tabela
SAPGUI_PROGRESS_INDICATOR barra de progresso
RKE_TIMESTAMP_CONVERT_OUTPUT Converte campo tipo TIMESTAMP p/ Data e Hora
MS_EXCEL_OLE_STANDARD_DAT Cria planilha p/ Excel (Arquivo Formato XLS)
POPUP_WITH_TABLE_DISPLAY Permite exibir uma lista e selecionar um dos valores
POPUP_TO_CONFIRM Com pergunta e 3 respostas
POPUP_TO_SELECT_MONTH Seleciona Mes e Ano no popUp
MESSAGE_TEXT_BUILD Monta mensagemn de erro
DDIF_DTEL_GET Ler os testos das descrições de um elemento de dados
CURRENCY_AMOUNT_SAP_TO_DISPLAY Convert valor para uma currency especifica
POPUP_TO_DECIDE_LIST Gera uma tela com uma lista de radio butons pra ser selecionado
POPUP_TO_CONFIRM_LOSS_OF_DATA exibe um pop com dois botoes para confirmação de exclusão.
DDIF_FIELDINFO_GET Pega todos os campos de uma determinada tabela e todos os seus atributos
DD_GET_DD03P recupera descriçoes de tabelas e campos.
RKD_WORD_WRAP Quebra o texto em linhas