Amid написал(а):
bmonk написал:
Возможны траблы с русской кодировкой (это зависит от кодовой странички SAPовского сервера ORACLE). Это тоже в принципе рашаемо
Можно по подробнее как победить "траблы" с русской кодировкой!
Был бы очень благодарен, так как есть такая проблемма, а решить её никак не получается! 

Все дело в кодировке. Можно написать конвертор с we8dec в cl8mswin1251 и обратный с cl8mswin1251 в we8dec. Если на уровне Оракла, то будет выглядеть так:
Code:
create or replace function we8dec_cl8mswin1251(a in varchar2) return varchar2
is
 vv  varchar2(2000) := '';
 j   number;
 jj  number;
 dd  number := 16;
begin
   if a is null then
      return null;
   end if;
  for i in 1..length(a) loop
     j := ascii(substr(a,i,1));
    if (j >= 176 and j <= 239) then
      jj := j + dd;
    elsif j = 241 then
      jj := 184;
    elsif j = 240 then
      jj := 185;
    elsif j = 161 then
      jj := 168;
    else
      jj := j;
    end if;
    vv := vv||chr(jj);
  end loop;
  return vv;
end;
Обратный если будет нужен могу прописать. Но когда я выгружаю с приложения т.е. с САП-а, кодировка почемуто сбивается, поэтому сделал простой переводчик со стороны САП и конвертер с другой. В общем выглядет это, так: ФМ(в САП)
data i type i.
data outchar type c.
i = 0.
while i < strlen( str ).
  case str+i(1).
    WHEN 'А'.
     outchar = 'A'.
    WHEN 'Б'.
     outchar = 'B'.
    WHEN 'В'.
     outchar = 'C'.
    WHEN 'Г'.
     outchar = 'D'.
    WHEN 'Д'.
     outchar = 'E'.
    WHEN 'Е'.
     outchar = 'F'.
    WHEN 'Ё'.
     outchar = ')'.
    WHEN 'Ж'.
     outchar = 'G'.
    WHEN 'З'.
     outchar = 'H'.
    WHEN 'И'.
     outchar = 'I'.
    WHEN 'Й'.
     outchar = 'J'.
    WHEN 'К'.
     outchar = 'K'.
    WHEN 'Л'.
     outchar = 'L'.
    WHEN 'М'.
     outchar = 'M'.
    WHEN 'Н'.
     outchar = 'N'.
    WHEN 'О'.
     outchar = 'O'.
    WHEN 'П'.
     outchar = 'P'.
    WHEN 'Р'.
     outchar = 'Q'.
    WHEN 'С'.
     outchar = 'R'.
    WHEN 'Т'.
     outchar = 'S'.
    WHEN 'У'.
     outchar = 'T'.
    WHEN 'Ф'.
     outchar = 'U'.
    WHEN 'Х'.
     outchar = 'V'.
    WHEN 'Ц'.
     outchar = 'W'.
    WHEN 'Ч'.
     outchar = 'X'.
    WHEN 'Ш'.
     outchar = 'Y'.
    WHEN 'Щ'.
     outchar = 'Z'.
    WHEN 'Ъ'.
     outchar = '['.
    WHEN 'Ы'.
     outchar = '\'.
    WHEN 'Ь'.
     outchar = ']'.
    WHEN 'Э'.
     outchar = '^'.
    WHEN 'Ю'.
     outchar = '_'.
    WHEN 'Я'.
     outchar = '`'.
    WHEN 'а'.
     outchar = 'a'.
    WHEN 'б'.
     outchar = 'b'.
    WHEN 'в'.
     outchar = 'c'.
    WHEN 'г'.
     outchar = 'd'.
    WHEN 'д'.
     outchar = 'e'.
    WHEN 'е'.
     outchar = 'f'.
    WHEN 'ё'.
     outchar = '9'.
    WHEN 'ж'.
     outchar = 'g'.
    WHEN 'з'.
     outchar = 'h'.
    WHEN 'и'.
     outchar = 'i'.
    WHEN 'й'.
     outchar = 'j'.
    WHEN 'к'.
     outchar = 'k'.
    WHEN 'л'.
     outchar = 'l'.
    WHEN 'м'.
     outchar = 'm'.
    WHEN 'н'.
     outchar = 'n'.
    WHEN 'о'.
     outchar = 'o'.
    WHEN 'п'.
     outchar = 'p'.
    WHEN 'р'.
     outchar = 'q'.
    WHEN 'с'.
     outchar = 'r'.
    WHEN 'т'.
     outchar = 's'.
    WHEN 'у'.
     outchar = 't'.
    WHEN 'ф'.
     outchar = 'u'.
    WHEN 'х'.
     outchar = 'v'.
    WHEN 'ц'.
     outchar = 'w'.
    WHEN 'ч'.
     outchar = 'x'.
    WHEN 'ш'.
     outchar = 'y'.
    WHEN 'щ'.
     outchar = 'z'.
    WHEN 'ъ'.
     outchar = '['.
    WHEN 'ы'.
     outchar = '|'.
    WHEN 'ь'.
     outchar = '}'.
    WHEN 'э'.
     outchar = '~'.
    WHEN 'ю'.
     outchar = '#'.
    WHEN 'я'.
     outchar = '$'.
  WHEN OTHERS.
     outchar = str+i(1).
  endcase.
  if outchar = space.
  CONCATENATE outstr outchar into outstr SEPARATED BY '&'.
  else.
    CONCATENATE outstr outchar into outstr.
  endif.
  add 1 to i.
ENDWHILE.
И конвертор на базе Оракла:
create or replace function en_ru(str in varchar2) return varchar2 is
  Result varchar2(2000);
  i integer;
  temp integer;
  r varchar2(1);
  j integer;
begin
    for i in 1..length(str) loop
SELECT ASCII(substr(str,i,1)) into temp FROM dual;
if temp = 35 then temp := 127; end if;
if temp = 36 then temp := 128; end if;
if temp = 38 then temp := -95; end if;
  j := temp+127;
r := chr(j);
result := result||r;
--result := result||substr(str,i,1)||'-'||r||'.';
  end loop;
  return(Result);
end en_ru;
Сделал, работает. Но думаю можно было бы на много короче. Но пока для тестирования пойдет, если какие будуд грейды, напишу. Надеюсь поможет 
