SAP에서 구매요청, 구매오더, 판매오더 등의 문서 헤드(Header) 및 품목(Items)에는 텍스트를 입력할 수 있는 탭 화면이 있습니다.
여기서 말하는 텍스트란 일반적으로 길이가 정해진 입력 필드의 텍스트와 달리 길이의 제한 없이 필요한 만큼 문자열을 입력할 수 있는 입력 필드를 말합니다. 일반적인 텍스트 필드와 구분하기 위해 ‘Long Text‘라는 말로 많이 표현합니다.
본문 설명에서도 일반 텍스트와 구분하기 위해 ‘Long Text’로 지칭해서 설명하겠습니다.
Long Text는 일반적인 텍스트처럼 테이블의 필드로 관리되지 않고 별도의 텍스트 오브젝트와 ID로 관리됩니다.
따라서 Long Text를 읽거나 저장하는 방법도 별도의 함수를 통해 읽고 저장할 수 있습니다.
이번 글에서는 SAP의 텍스트오브젝트 및 ID를 생성하고 텍스트(Long Text)를 읽고 저장하는 방법에 대해 알아보겠습니다.
SAP에서 텍스트 오브젝트 및 ID 생성하기
Long Text를 프로그램에서 이용하기 위해서는 ‘텍스트 오브젝트‘와 ‘텍스트 ID‘를 먼저 생성해서 만들어 놓아야 합니다.
사실 SAP 신규 프로젝트가 아닌 이상 ‘텍스트 오브젝트’와 ‘텍스트 ID’를 신규로 만들 일은 그리 많지는 않습니다. 하지만 업무 성격이 변경되면 그에 따라 새로운 ‘텍스트 오브젝트 및 ID’가 필요해 질 수도 있습니다.
1. Long Text 사용을 위한 ‘텍스트 오브젝트’와 ‘텍스트 ID’를 만들기 위해서 SAP 메뉴->툴->서식 인쇄->관리-세팅(SE75)로 이동을 합니다.
2. SAPscript 세팅 화면에 나타난 것 중 “텍스트 오브젝트 및 ID“를 선택하고 [변경] 버튼을 클릭합니다.
3. 이미 만들어진 오브젝트 목록이 화면에 출력 됩니다. 신규 생성을 위해서는 일단은 [생성(F5)] 버튼을 클릭해 줍니다.
4. 위의 오브젝트 생성 화면이 나타나면 아래 설명한 내용을 적당히 입력해 줍니다.
- ‘텍스트오브젝트‘에는 Object의 이름을 입력합니다. 특별한 규칙은 없으며 그냥 알아보기 쉬운 이름으로 해주면 됩니다.
- ‘내역‘에는 텍스트 오브젝트에 대한 설명을 입력합니다.
- ‘저장모드‘에는 “다이얼로그”를 선택해 줍니다.
- 편집기에서 ‘편집기 어플리케이션‘에는 “TX(표준텍스트)“를, ‘라인너비‘에는 텍스트가 입력될 수 있는 적당한 line수를 넣어주면 됩니다.
5. 입력이 끝났으면 [계속] 버튼을 클릭해서 텍스트 오브젝트 생성을 저장합니다.
오브젝트 목록 화면에 방금 추가한 오브젝트가 나타나게 된다.
▼ 이제 “텍스트 ID”를 생성하는 과정입니다.
“텍스트 ID”는 하나의 “텍스트 오브젝트”에 여러 개의 “텍스트 ID’를 만들 수 있는 구조 입니다.
따라서 기존 “텍스트 오브젝트”에 새로운 “텍스트 ID”를 추가로 생성할 경우 앞에서 설명한 “텍스트 오브젝트” 생성은 건너뛰어도 됩니다.
6. 오브젝트 목록 화면에서 “텍스트 ID”를 추가 생성할 “오브젝트”를 선택하고 상단 [텍스트ID] 버튼을 클릭해 줍니다.
7. 다음의 오브젝트 텍스트ID 변경 화면에서 [생성] 버튼을 한번 더 클릭해 줍니다.
8. ID 생성 화면에서 적절한 “텍스트 ID“와 “내역“을 입력하고 [계속] 버튼을 클릭해서 “텍스트 ID”를 추가로 생성합니다.
이렇게해서 텍스트 오브젝트와 텍스트 ID가 만들어지게 됩니다.
앞에서 잠깐 설명했지만 텍스트 오브젝트 하나에 텍스트 ID는 여러 개 만들 수 있습니다.
SAP Long Text(텍스트)를 읽는 방법
SAP ABAP 프로그램에서 Long Text를 읽어오려면 SAP Standard Function인 “READ_TEXT” 함수를 이용해야 합니다.
“READ_TEXT”는 Function Group “STXD”에 들어 있다.
▼ 아래 ABAP 소스는 READ_TEXT 함수를 사용하여 텍스트의 내용을 가져오는 예제 입니다.
TABLES: THEAD. DATA: BEGIN OF I_LINE OCCURS 0. INCLUDE STRUCTURE TLINE. DATA: END OF I_LINE. …… CALL FUNCTION ‘READ_TEXT’ EXPORTING * CLIENT = SY-MANDT ID = THEAD-TDID LANGUAGE = THEAD-TDSPRAS NAME = THEAD-TDNAME OBJECT = THEAD-TDOBJECT * ARCHIVE_HANDLE = 0 * IMPORTING * HEADER = TABLES LINES = I_TLINE “텍스트 내용이 들어옴 EXCEPTIONS ID = 1 LANGUAGE = 2 NAME = 3 NOT_FOUND = 4 OBJECT = 5 REFERENCE_CHECK = 6 WRONG_ACCESS_TO_ARCHIVE = 7 OTHERS = 8. |
- ID는 Long Text Object의 “텍스트 ID“를 지정합니다.
- Object는 Long Text의 “텍스트 오브젝트“를 지정합니다.
- Name은 텍스트의 식별자를 입력합니다. Table의 Key 값에 해당하며 SAVE_TEXT로 저장할 때 입력했던 ‘TDNAME’ 값을 똑같이 넣어주면 됩니다.
- LINES에 지정한 I_LINE에 Long Text의 내용이 Return 되어 들어옵니다.
SAP Long Text(텍스트)를 저장하는 방법
SAP ABAP 프로그램에서 Long Text를 저장 하려면 SAP Standard Function인 “SAVE_TEXT” 함수를 이용해야 합니다.
“SAVE_TEXT”는 Function Group “STXD”에 들어 있다.
▼ 아래 ABAP 소스는 SAVE_TEXT 함수를 사용하여 텍스트의 내용을 “텍스트 오브젝트 및 ID”에 저장하는 예제 입니다.
TABLES: THEAD. DATA: BEGIN OF TEXT_TAB OCCURS 10, “Text table TEXT(132) TYPE C, END OF TEXT_TAB. DATA: BEGIN OF I_TLINE OCCURS 0. INCLUDE STRUCTURE TLINE. DATA: END OF I_TLINE. ” TEXT_TAB에 내용을 채우는 로직을 구현해 줍니다. ….. THEAD-TDOBJECT = ‘ZTXTTEST’. ” Long Text Object THEAD-TDID = ‘0001’. ” Long Text ID THEAD-TDNAME = ‘TEST001’. ” Long Text의 식별자. Table의 Key. THEAD-TDSPRAS = SY-LANGU. *—— I_TLINE의 TDFORMAT은 첫번째 line은 ‘*’를 *—— 나머지 line은 ‘/’를 넣습니다. LOOP AT TEXT_TAB. I_TLINE-TDLINE = TEXT_TAB-TEXT. I_TLINE-TDFORMAT = ‘/’. AT FIRST. I_TLINE-TDFORMAT = ‘*’. ENDAT. APPEND I_TLINE. ENDLOOP. CALL FUNCTION ‘SAVE_TEXT’ EXPORTING * CLIENT = SY-MANDT HEADER = THEAD * INSERT = ‘ ‘ * SAVEMODE_DIRECT = ‘ ‘ * OWNER_SPECIFIED = ‘ ‘ * IMPORTING * FUNCTION = * NEWHEADER = TABLES LINES = I_TLINE “저장할 텍스트 내용 EXCEPTIONS ID = 1 LANGUAGE = 2 NAME = 3 OBJECT = 4 OTHERS = 5. |
- THEAD-TDOBJECT에는 ‘텍스트 오브젝트‘를 입력합니다.
- THEAD-TDID에는 ‘텍스트 ID‘를 입력합니다.
- THEAD-TDNAME에는 텍스트의 고유 식별자를 입력합니다. READ_TEXT에서 텍스트를 가져올 때 해당 식별자로 텍스틀 가져오게 됩니다. Table의 Key 값에 해당한다고 보시면 됩니다.
- THEAD-TDSPRAS에는 사용 언어를 입력합니다. 디폴트 언어를 지정하면 됩니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^