Difference between revisions of "SAP ABAP XSTRING"

From SapWiki
(Created page with "==Leer atchivo de texto como binario== <nowiki> DATA: lo_c2x TYPE REF TO cl_abap_conv_out_ce. DATA l_string TYPE string. DATA l_string2 TYPE string. DATA l_xstring TYPE xs...")
 
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Leer atchivo de texto como binario==  
+
==Leer archivo de texto codificado UTF-8==
 +
===Ejemplo 1, como binario===
 
  <nowiki>
 
  <nowiki>
 
DATA: lo_c2x  TYPE REF TO cl_abap_conv_out_ce.
 
DATA: lo_c2x  TYPE REF TO cl_abap_conv_out_ce.
Line 26: Line 27:
 
ENDWHILE.
 
ENDWHILE.
 
</nowiki>
 
</nowiki>
 +
===Ejemplo 2, como Binario===
 +
<nowiki>
 +
DATA l_string TYPE string.
 +
DATA l_string2 TYPE string.
 +
DATA l_xstring TYPE xstring.
 +
DATA l_filename TYPE string.
 +
 +
DATA: l_filelength    TYPE i.
 +
DATA: l_data_tab      LIKE rcgrepfile OCCURS 10 WITH HEADER LINE.
 +
DATA: l_auth_filename LIKE authb-filename.
 +
DATA: l_lines        TYPE i.
 +
 +
l_filename = p_file.
  
 +
* upload the file
 +
  CALL METHOD cl_gui_frontend_services=>gui_upload
 +
    EXPORTING
 +
      filename                = l_filename
 +
      filetype                = 'BIN'
 +
*      header_length          = l_header_length
 +
    IMPORTING
 +
      filelength              = l_filelength
 +
    CHANGING
 +
      data_tab                = l_data_tab[]
 +
    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.
 +
  IF sy-subrc <> 0 .
 +
  ENDIF.
 +
 +
  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
 +
    EXPORTING
 +
      input_length = l_filelength
 +
*    FIRST_LINE  = 0
 +
*    LAST_LINE    = 0
 +
    IMPORTING
 +
      buffer      = l_xstring
 +
    TABLES
 +
      binary_tab  = l_data_tab
 +
    EXCEPTIONS
 +
      failed      = 1
 +
      OTHERS      = 2.
 +
  IF sy-subrc <> 0.
 +
* Implement suitable error handling here
 +
  ENDIF.
 +
 +
*" convert xstring to string for output
 +
  cl_abap_conv_in_ce=>create( input = l_xstring )->read( IMPORTING data = l_string ).
 +
 +
* transformar string a tabla interna
 +
  WHILE l_string IS NOT INITIAL.
 +
    SPLIT l_string AT cl_abap_char_utilities=>cr_lf INTO l_string2 l_string.
 +
    IF NOT l_string2 CO cl_abap_char_utilities=>cr_lf.
 +
      MOVE l_string2 TO it_entrada.
 +
      APPEND it_entrada.
 +
    ENDIF.
 +
  ENDWHILE.
 +
</nowiki>
 +
 +
===Ejemplo 3, como ASC===
 +
<nowiki>
 +
  CALL FUNCTION 'GUI_UPLOAD'
 +
    EXPORTING
 +
      filename                = l_filename
 +
      filetype                = 'ASC'
 +
      CODEPAGE                = '4110'
 +
    TABLES
 +
      data_tab                = it_entrada
 +
    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
 +
      OTHERS                  = 17.
 +
  if sy-subrc <> 0 .
 +
    endif.
 +
</nowiki>
 
==string to xstring => xstring to string==
 
==string to xstring => xstring to string==
 
* ejemplo 1
 
* ejemplo 1
Line 34: Line 140:
 
                   IMPORTING buffer = l_xstring ).
 
                   IMPORTING buffer = l_xstring ).
  
l_xstring = cl_abap_codepage=>convert_to( source = l_string codepage = 'UTF-8' ).
+
" convert xstring to string for output
 
+
cl_abap_conv_in_ce=>create( input = l_xstring )->read( IMPORTING data = l_string ).
 
</nowiki>
 
</nowiki>
  
 
* ejemplo 2
 
* ejemplo 2
 
  <nowiki>
 
  <nowiki>
  lo_c2x = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
+
l_xstring = cl_abap_codepage=>convert_to( source = l_string codepage = 'UTF-8' ).
  lo_c2x->convert( EXPORTING data  = l_string
 
                  IMPORTING buffer = l_xstring ).
 
  
 
   CALL METHOD cl_http_utility=>if_http_utility~decode_utf8
 
   CALL METHOD cl_http_utility=>if_http_utility~decode_utf8
Line 49: Line 153:
 
     RECEIVING
 
     RECEIVING
 
       unencoded = l_string.
 
       unencoded = l_string.
 +
</nowiki>
  
</nowiki>
+
==Codepage encodings==
 +
* Ver Tabla TCP00 - Catálogo de code page SAP
 +
Ejemplo:
 +
4110 - Unicode UTF-8
 +
1100 - SAP internal, like ISO 8859-1      (00697/00819)
  
 
==[[SAP_ABAP_VARIOS#Grabar_XSTRING_en_equipo_como_Binario(XML,PDF,etc.)|Grabar XSTRING en equipo como binario]]==
 
==[[SAP_ABAP_VARIOS#Grabar_XSTRING_en_equipo_como_Binario(XML,PDF,etc.)|Grabar XSTRING en equipo como binario]]==
 
==[[SAP_ABAP_VARIOS#Leer_archivo_XML|Leer archivo XML]]==
 
==[[SAP_ABAP_VARIOS#Leer_archivo_XML|Leer archivo XML]]==
 +
==[[SAP_ABAP_VARIOS#desde_un_string_en_BASE64_obtener_PDF_binario|desde un string en BASE64 obtener PDF binario]]==
 +
==[[SAP_ABAP_VARIOS#Leer_Arhivo_PDF_y_Visualizarlo|Leer Arhivo PDF y Visualizarlo]]==

Latest revision as of 20:45, 24 February 2021

Leer archivo de texto codificado UTF-8

Ejemplo 1, como binario

DATA: lo_c2x  TYPE REF TO cl_abap_conv_out_ce.

DATA l_string TYPE string.
DATA l_string2 TYPE string.
DATA l_xstring TYPE xstring.
DATA l_filename TYPE string.

CALL METHOD cl_faa_tenv_services=>gui_upload_xstring
  EXPORTING
    id_fullpath = l_filename
  IMPORTING
    ed_xstring  = l_xstring.

" convert xstring to string for output
cl_abap_conv_in_ce=>create( input = l_xstring )->read( IMPORTING data = l_string ).

WHILE l_string IS NOT INITIAL.
  SPLIT l_string AT cl_abap_char_utilities=>cr_lf INTO l_string2 l_string.
  IF NOT l_string2 CO cl_abap_char_utilities=>cr_lf.
    MOVE l_string2 TO it_entrada.
    APPEND it_entrada.
  ENDIF.

ENDWHILE.

Ejemplo 2, como Binario

DATA l_string TYPE string.
DATA l_string2 TYPE string.
DATA l_xstring TYPE xstring.
DATA l_filename TYPE string.

DATA: l_filelength    TYPE i.
DATA: l_data_tab      LIKE rcgrepfile OCCURS 10 WITH HEADER LINE.
DATA: l_auth_filename LIKE authb-filename.
DATA: l_lines         TYPE i.

l_filename = p_file.

* upload the file
  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename                = l_filename
      filetype                = 'BIN'
*      header_length           = l_header_length
    IMPORTING
      filelength              = l_filelength
    CHANGING
      data_tab                = l_data_tab[]
    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.
  IF sy-subrc <> 0 .
  ENDIF.

  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
    EXPORTING
      input_length = l_filelength
*     FIRST_LINE   = 0
*     LAST_LINE    = 0
    IMPORTING
      buffer       = l_xstring
    TABLES
      binary_tab   = l_data_tab
    EXCEPTIONS
      failed       = 1
      OTHERS       = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

*" convert xstring to string for output
  cl_abap_conv_in_ce=>create( input = l_xstring )->read( IMPORTING data = l_string ).

* transformar string a tabla interna
  WHILE l_string IS NOT INITIAL.
    SPLIT l_string AT cl_abap_char_utilities=>cr_lf INTO l_string2 l_string.
    IF NOT l_string2 CO cl_abap_char_utilities=>cr_lf.
      MOVE l_string2 TO it_entrada.
      APPEND it_entrada.
    ENDIF.
  ENDWHILE.

Ejemplo 3, como ASC

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = l_filename
      filetype                = 'ASC'
      CODEPAGE                = '4110'
    TABLES
      data_tab                = it_entrada
    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
      OTHERS                  = 17.
  if sy-subrc <> 0 .
    endif.

string to xstring => xstring to string

  • ejemplo 1
  lo_c2x = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
  lo_c2x->convert( EXPORTING data   = l_string
                   IMPORTING buffer = l_xstring ).

" convert xstring to string for output
cl_abap_conv_in_ce=>create( input = l_xstring )->read( IMPORTING data = l_string ).

  • ejemplo 2
l_xstring = cl_abap_codepage=>convert_to( source = l_string codepage = 'UTF-8' ).

  CALL METHOD cl_http_utility=>if_http_utility~decode_utf8
    EXPORTING
      encoded   = l_xstring
    RECEIVING
      unencoded = l_string.

Codepage encodings

  • Ver Tabla TCP00 - Catálogo de code page SAP

Ejemplo:

4110 - Unicode UTF-8
1100 - SAP internal, like ISO 8859-1       (00697/00819)

Grabar XSTRING en equipo como binario

Leer archivo XML

desde un string en BASE64 obtener PDF binario

Leer Arhivo PDF y Visualizarlo