You are on page 1of 4

*{v001 - P46235 - Inicio

*}v001 - P46235 - Fim

CONCATENATE buffer dta_crlf INTO lv_string RESPECTING BLANKS.


CONCATENATE v_string_teste lv_string INTO v_string_teste.

CALL FUNCTION 'SWA_STRING_SPLIT'


EXPORTING
input_string = v_string_teste
max_component_length = 255
TABLES
string_components = lt_table
EXCEPTIONS
max_component_length_invalid = 1
OTHERS = 2.

IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

LOOP AT lt_table INTO ls_table.


v_string = ls_table-str.
APPEND v_string TO filebuff_255.
ENDLOOP.

PERFORM CONVERT_TO_UTF8
USING EXAMPLE
CHANGING IN_DATA_TABLE-BINDATA.

FORM CONVERT_TO_UTF8 USING INBUF TYPE STRING CHANGING OUTBUF TYPE X.


data: l_conv type ref to cl_abap_conv_out_ce.

* Konvertierer l_conv besorgen


call method cl_abap_conv_out_ce=>create
exporting encoding = 'UTF-8'
replacement = '#'
ignore_cerr = abap_true
receiving conv = l_conv.

* Zeichen in den Konvertierer hineinstecken ...


call method l_conv->write
exporting data = inbuf.

* ... und das Ergebnis abholen


call method l_conv->get_buffer
receiving buffer = outbuf.

ENDFORM.

* CALL FUNCTION 'SDB_WORD_WRAP'


* EXPORTING
* textline = lv_string
* outputlen = 255
* TABLES
* out_lines = filebuff_255
* EXCEPTIONS
* outputlen_too_large = 1
* OTHERS = 2.
*
* LOOP AT filebuff_255 INTO v_string.
* lv_index = sy-tabix.
* lv_strlen = strlen( v_string ).
* lv_strlen = 2.
* IF lv_strlen = dta_crlf.
* DELETE filebuff_255 INDEX lv_index.
* ENDIF.
* ENDLOOP.

refresh data_in.

CALL FUNCTION 'SSF_KRN_DEVELOPE'


EXPORTING
SSFTOOLKIT = ls_ssfparms-ssftoolkit
STR_FORMAT = 'PKCS7'
B_OUTDEC = in_enc
io_spec = io_spec
OSTR_ENVELOPED_DATA_L = remlen
* IMPORTING
* OSTR_OUTPUT_DATA_L =
* CRC =
TABLES
OSTR_ENVELOPED_DATA = data_out
RECIPIENT = lt_recipient_list
OSTR_OUTPUT_DATA = data_in
EXCEPTIONS
SSF_KRN_ERROR = 1
SSF_KRN_NOOP = 2
SSF_KRN_NOMEMORY = 3
SSF_KRN_OPINV = 4
SSF_KRN_NOSSFLIB = 5
SSF_KRN_RECIPIENT_ERROR = 6
SSF_KRN_INPUT_DATA_ERROR = 7
SSF_KRN_INVALID_PAR = 8
SSF_KRN_INVALID_PARLEN = 9
SSF_FB_INPUT_PARAMETER_ERROR = 10
OTHERS = 11
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

* REFRESH filebuff_255.
* CALL FUNCTION 'CONVERT_STRING_TO_TABLE'
* EXPORTING
* i_string = gv_string
* i_tabline_length = 255
* TABLES
* et_table = filebuff_255.
IF gv_nova_cript IS NOT INITIAL.
DATA: lv_xstring TYPE xstring.

CALL FUNCTION 'SSFH_STRING_TO_XSTRINGUTF8'


EXPORTING
cstr_input_data = gv_string
IMPORTING
ostr_input_data = lv_xstring
EXCEPTIONS
conversion_error = 1
internal_error = 2
OTHERS = 3.

IF gv_string IS INITIAL.
gv_string = lv_string.
ELSE.
CONCATENATE gv_string lv_string INTO gv_string.
ENDIF.

IF sy-subrc = 0.
WHILE xstrlen( lv_xstring ) > 0.
wa_filebuff-bindata = lv_xstring.
APPEND wa_filebuff TO filebuff.
SHIFT lv_xstring LEFT BY 255 PLACES IN BYTE MODE.
ENDWHILE.
ENDIF.
ELSE.

ls_ssfparms-indatalen + xstrlen( data_in-bindata ).

*{v001 - P46235 - Inicio


*&---------------------------------------------------------------------*
*& Form f_CONVERT_TO_UTF8
*&---------------------------------------------------------------------*
FORM f_convert_to_utf8 USING uv_inbuf TYPE any
CHANGING cv_outbuf TYPE x.

DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.

* Konvertierer l_conv besorgen


CALL METHOD cl_abap_conv_out_ce=>create
EXPORTING
encoding = 'UTF-8'
replacement = '#'
ignore_cerr = abap_true
RECEIVING
conv = lo_conv.

IF lo_conv IS BOUND.
* Zeichen in den Konvertierer hineinstecken ...
CALL METHOD lo_conv->write
EXPORTING
data = uv_inbuf.
* ... und das Ergebnis abholen
CALL METHOD lo_conv->get_buffer
RECEIVING
buffer = cv_outbuf.
ENDIF.

ENDFORM. "f_CONVERT_TO_UTF8
*{v001 - P46235 - Fim

* LOOP AT filebuff_255 INTO wa_filebuff_255.


* PERFORM f_convert_to_utf8 USING wa_filebuff_255
* CHANGING wa_filebuff-bindata.
* APPEND wa_filebuff TO filebuff.
* CLEAR wa_filebuff.
* ENDLOOP.

You might also like