Задача: необходимо выгрузить данные в фоновом режиме в текстовый файл. Решила попробовать через RFC. Создали RFC, версия librfc32.dll - 7000.0.319.7009.
Вот код: 1 вариант перекодировки
Code:
data: F_XTAB LIKE TABLE OF W_BUFFER.
data: F_XLINE LIKE W_BUFFER occurs 1 with header line.
data: F_SIZE type I.
data: F_VALUE(120).
data: G_STRING type STRING.
data: G_STRING1 type STRING.
data: G_STRING2 type STRING.
data: G_BUFFER type XSTRING.
data: G_BUFFER1 type XSTRING.
data: G_BUFFER2 type XSTRING.
data: GCL_CONV_TO_X type ref to CL_ABAP_CONV_OUT_CE.
loop at P_FINAL.
G_STRING1 = P_FINAL-text1.
*G_STRING2 = P_FINAL-text2.
CONCATENATE G_STRING1 G_STRING2 INTO G_STRING.
call method CL_ABAP_CONV_OUT_CE=>CREATE
exporting
ENCODING = '1504'
receiving
CONV = GCL_CONV_TO_X.
call method GCL_CONV_TO_X->WRITE
exporting
DATA = G_STRING1.
call method GCL_CONV_TO_X->GET_BUFFER
receiving
BUFFER = G_BUFFER1.
call function 'SCMS_XSTRING_TO_BINARY'
exporting
BUFFER = G_BUFFER1
importing
OUTPUT_LENGTH = F_SIZE
tables
BINARY_TAB = F_XLINE.
APPEND F_XLINE to F_XTAB.
endloop.
или
2 вариант перекодировки
Code:
data: F_XTAB LIKE TABLE OF W_BUFFER.
data: F_XLINE LIKE W_BUFFER occurs 1 with header line.
DATA:
gcl_conv_to_x TYPE REF TO cl_abap_conv_out_ce,
gcl_conv_to_c TYPE REF TO cl_abap_conv_in_ce.
DATA: in_codepage TYPE cpcodepage.
DATA:
g_buffer TYPE xstring,
l_string TYPE string,
l_string_out TYPE string.
*CALL FUNCTION 'SCP_GET_CODEPAGE_NUMBER'
*EXPORTING
*database_also = P_FINAL
*IMPORTING
*appl_codepage = in_codepage.
CALL METHOD cl_abap_conv_out_ce=>create
EXPORTING
encoding = in_codepage
RECEIVING
conv = gcl_conv_to_x.
loop at P_FINAL.
l_string = P_FINAL-text1.
CALL METHOD gcl_conv_to_x->write
EXPORTING
data = l_string.
CALL METHOD gcl_conv_to_x->get_buffer
RECEIVING
buffer = g_buffer.
CALL METHOD cl_abap_conv_in_ce=>create
EXPORTING
encoding = '1504'
input = g_buffer
RECEIVING
conv = gcl_conv_to_c.
CALL METHOD gcl_conv_to_c->read
IMPORTING
data = l_string_out.
F_XLINE-buffer = l_string_out.
APPEND F_XLINE to F_XTAB.
endloop.
заканчивается все :
Code:
call function 'RFC_REMOTE_FILE' destination c_dest
exporting
file = p_readpath
write = p_flag1
tables
filedata = P_FINAL
* filedata = F_XTAB
exceptions
system_failure = 1 message dg_ermsg
communication_failure = 2 message dg_ermsg.
if sy-subrc <> 0.
format reset intensified off.
write: / 'RFC ERROR:'(003), dg_ermsg.
else.
if dg_flag = c_x.
write : / 'Data is successfully Uploaded'(004).
else. dg_flag1 = c_x.
write : / 'Data is successfully Downloaded'(005).
endif.
endif.
ни первый вариант, ни второй не помогают, даже если оба варианта закомментировать, то файл выходит один и тот же, пример:
01300;їа-Ым:OOO "±РеХвЫХ-1" ОаШФШзХбЪШЩ РФаХб: 420061, АЮббШп,;АВ, У. єРЧРЭм, гЫ. °Ъ. ігСЪШЭР, 1. ВХЫ. 537-76-00;ёЧУЮвЮТШвХЫм: OOO "±РеХвЫХ-1"
может кто сможет что-нибудь посоветовать.
P.S. RFC настраивала вот по этой ссылке
http://www.scribd.com/doc/30284918/Comm ... -1#archive