abap 초보자 입니다
sap에서 오라클db로 insert 하는 걸 하는데요
서로 캐릭터 셋이 안맞아서 한글이 깨져서 들어옵니다
인터넷 찾아보니깐 sap db에 create view를 생성해서
하면 된다는데요
abap 에서는 create view가 안되던데
다른 방법 없을까요?
abap 초보자 입니다
sap에서 오라클db로 insert 하는 걸 하는데요
서로 캐릭터 셋이 안맞아서 한글이 깨져서 들어옵니다
인터넷 찾아보니깐 sap db에 create view를 생성해서
하면 된다는데요
abap 에서는 create view가 안되던데
다른 방법 없을까요?
오라클db와 동일한 키를 가진 문자열만 가지는 테이블을 하나 만드시구요.
1. sap에서 문자열을 가지는 테이블로 hexa Byte로 형변환을 해서 넣으세요. 아래는 관련 예제입니다.
==================================================================
DATA : v_tmp_reccobizsub(80),
v_tmp_mname(80).
EXEC SQL.
select rawtohex( :RECCOBIZSUB )
into :v_tmp_RECCOBIZSUB
from dual
ENDEXEC.
EXEC SQL.
select rawtohex( :IT_ITEM-MAKTX )
into :v_tmp_MNAME
from dual
ENDEXEC.
EXEC SQL.
INSERT INTO test_TMP_DHEX@ORACLE
(MANDT, EBELN,
RECCOBIZSUB, MNAME)
VALUES (:SY-MANDT, :IT_ITEM-EBELN,
:V_TMP_RECCOBIZTYPE,
:V_TMP_RECCOBIZSUB, :V_TMP_MNAME)
ENDEXEC.
==================================================================
2. Oracle 딴에서는 문자열로구성된 테이블에 Trigger를 생성해서 원래 넣고자했던 Table로 Insert 해줍니다.
아래는 관련 트리거 예제입니다.
==================================================================
CREATE OR REPLACE TRIGGER Oracle.TR_test_TMP_DHEX
AFTER INSERT
ON test_TMP_DHEX
FOR EACH ROW
DECLARE
--변수 선언
-- F1 Integer;
BEGIN
IF INSERTING THEN
Insert Into test_TMP
(mandt, ebeln,
reccobizsub,
mname)
Values (:New.mandt, :New.ebeln,
rtrim(conv(Translate(Nvl(:New.reccobizsub, ' '), 'ABCDEF', ':;<=>?'))),
rtrim(conv(Translate(Nvl(:New.mname, ' '), 'ABCDEF', ':;<=>?')))
);
End If;
End;
==================================================================
/
즐밥하시기 바랍니다. ^^