Crear archivo adjunto XML en FB03 sin NULL

Hola a todos.
Voy a explicar como resolví el tema de la generación de un archivo XML adjunto que se almacenaba en la transacción FB03, pero al abrir el archivo con Notepad ++ se generaba con caracteres NULL.

Darle una parte del crédito a este tutorial que me ayudó bastante:
ht_p://codigoderetorno.blogspot.pe/2012/11/clgosdocumentservice.html

Partimos que recibimos data del tipo RAWSTRING,

DATA: ob_abap_conv_in_ce TYPE REF TO cl_abap_conv_in_ce .

TRY.

      CALL METHOD cl_abap_conv_in_ce=>create
        EXPORTING
          input       = lv_rawstring
          replacement = '?'
          ignore_cerr = abap_true
        RECEIVING
          conv        = ob_abap_conv_in_ce.

    CATCH cx_parameter_invalid_range.
    CATCH cx_sy_codepage_converter_init.

  ENDTRY.

Al recibir un archivo XML con bastente contenido el cual lo almacenaba en una variable de tipo string me doy cuenta que cuando llenaba 255 caracteres me generaba una linea llena de NULL como la imagen:

Por ende necesitaba almacenarlo en una variable con más capacidad, por ello lo pase a una de tipo SOLIX con la siguiente función:

DATA: lt_solix   TYPE STANDARD TABLE OF solix,

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer        = lv_rawstring
    TABLES
      binary_tab    = lt_solix.

Luego de ello inserto el documento con la siguiente función:

CALL FUNCTION 'SO_DOCUMENT_INSERT_API1'
  EXPORTING
    folder_id                        = wa_fol_id
    document_data                    = wa_obj_data
    document_type                    = 'XML'
  IMPORTING
    DOCUMENT_INFO                    = wa_obj_id
  TABLES
    OBJECT_HEADER                    = lt_objhead
    CONTENTS_HEX                     = lt_solix.

Esas dos funciones me ayudaron a poder solucionar el problema de la eliminación de caracteres NULL, notar que sólo he puesto parte de la solución ya que si desean todo el código hasta lograr la inserción del adjunto en la FB03 pueden ir al link. Si tienen alguna duda no duden en consultar.

Jimmy.

3 Me gusta