-
[ ABAP ] GOS를 활용해서 첨부파일 업로드 및 다운로드 하기 ( PDF, EXCEL... )ABAP 2024. 11. 21. 11:50
SAP 내부에서 첨부 문서를 업로드하고 다운 받을 수 있다.
GOS라는 객체를 이용하여 이런 기능을 사용 할 수 있는데 간단한 실습을 통해 사용해보자 ~~
대략적인 단계는 다음과 같다
1. SWO1 에서 Business Object (BO) 생성하기
2. BO 설정
a. 인터페이스 생성
b. 키 설정
c. method 설정
3. 프로그램 생성하기
레고
1. T-CODE : SWO1 BO 생성하기
이름 자유롭게 설정해서 생성해보자
SWO1에서 Business Object를 생성할 때 '프로그램' 항목은 해당 오브젝트와 연계된 새로운 프로그램을 지정해야 한다.
여기서 프로그램은 이 Business Object의 메소드 구현과 관련된 ABAP 프로그램으로 사용되는데,
기존 프로그램명을 입력하면 충돌이 발생할 수 있기 때문에, 새로운 이름을 지정해야 한다..
만들어지면 이런 화면이 나온다.
이거 보면 다 빨간줄 처리가 되어있는데..
아마 완성이 다 안되었거나 활성화가 안된것이라 그런듯??
하나씩 눌러서 f6 누르면 하얗게 변함
2. BO 설정
a. 인터페이스
[인터페이스] > [생성] (A4용지) > 이름입력후 > [확인]
참고로 IFGOSXSERV는 기능확장 일반오브젝트 서비스라고 한다..
b. 키 설정
[키 필드] > [생성]
TRDIR 테이블의 NAME 필드를 지정한다.
왜 ?
- TRDIR은 SAP 시스템의 프로그램 디렉터리 테이블로, 모든 프로그램 정보를 저장한다
- 이 테이블은 프로그램 이름을 즉 name 필드를 고유하게 식별하기 위해 사용된다.
- Business Object를 프로그램의 이름을 키로 사용해 특정 데이터를 식별하는 구조이기 때문에 이 필드를 참조 해야 한다.
c. method 설정
우리는 GOSAddObjects를 사용할거다.
이 메서드는 GOS 기능과 비즈니스 객체 간의 데이터를 연결하거나 설정하기 위해 사용하는데
우리는 gos기능 중 첨부파일 등록 및 다운로드 기능을 사용할거니까 이거 선택.
저 method를 클릭후 [프로그램] 클릭
그럼 이렇게 abap 코드가 나온다.
그리고 아래 코드와 같이 추가한다.
LS_BORIDENT-OBJTYPE 에는 초기에 오브젝트 생성시 TYPE옆에 적었던 타입을 적으면 됩니다.
BEGIN_METHOD GOSADDOBJECTS CHANGING CONTAINER. DATA: SERVICE(255), BUSIDENTIFS LIKE BORIDENT OCCURS 0. *-- 첨부 문서 서비스 이용을 위한 코드 추가 ----------------------------* DATA : LS_BORIDENT TYPE BORIDENT. " 개별 비즈니스 객체 식별 정보 CLEAR LS_BORIDENT. LS_BORIDENT-LOGSYS = SPACE. LS_BORIDENT-OBJTYPE = 'Z_GOS_074'. LS_BORIDENT-OBJKEY = OBJECT-KEY. APPEND LS_BORIDENT to BUSIDENTIFS. *----------------------------------------------------------------------* SWC_GET_ELEMENT CONTAINER 'Service' SERVICE. SWC_SET_TABLE CONTAINER 'BusIdentifs' BUSIDENTIFS. END_METHOD.
코드 첨부.,,
3. 프로그램 생성하기
이제 프로그램을 만들어 보자. 그냥 간단하게 한번 ~~
selection screen 툴바에 달아 보자
CONSTANTS: OBJTYPE TYPE BORIDENT-OBJTYPE VALUE 'Z_GOS_074'. DATA: MANAGER TYPE REF TO CL_GOS_MANAGER, OBJ TYPE BORIDENT. PARAMETERS: MATNR TYPE MARA-MATNR. AT SELECTION-SCREEN OUTPUT. CLEAR OBJ. * SET OBJECT TYPE TO 'Z_GOS_074' OBJ-OBJTYPE = OBJTYPE. * SET OBJECT KEY = REPORT NAME SELECT SINGLE NAME FROM TRDIR INTO OBJ-OBJKEY WHERE NAME = SY-REPID. * CALL GOS MANAGER WITHOUT CONTAINER (WILL BE DISPLAYED IN THE TOOLBAR) CREATE OBJECT MANAGER EXPORTING IS_OBJECT = OBJ EXCEPTIONS OTHERS = 1.
대충 이렇게 간단하게 만들어놓ㄱ
실행시켜보면
야호
여기 클릭해서
새로 생성하거나 기존에 올려둔 파일을 업로드 및 다운로드 할 수 있다 !!
파일이 어떤 형태로 저장되는지는.. 나중에 포스팅 해야지
오늘할일을 내일 로 미루기
'ABAP' 카테고리의 다른 글
[ABAP] 오브젝트 연결되지 않음 오류 (0) 2024.10.17 [ABAP] 동적으로 쿼리문 할당하기 / 문자열에 ' 와 공백 삽입 (1) 2024.07.05 [ABAP] TIMESTAMP란? (2) 2024.07.02 [ABAP] 로그관리 및 이력관리 STRUCTURE 만들어서 사용하기 (0) 2024.07.02 [ABAP] 요일 찾는 날짜 FUNCTION (1) 2024.05.20