첨부 아이콘을 더블클릭시 파일 업로드,
메세지를 더블클릭시 업로드된 파일 확인 및 추가 가능하게 구현
코드
*&---------------------------------------------------------------------*
*& FORM DBCLICK
*&---------------------------------------------------------------------*
* 더블 클릭 메소드를 탈 시 들어가는 퍼폼문
*----------------------------------------------------------------------*
FORM DBCLICK USING P_ROW
P_COLUMN
P_ROW_NO.
DATA : LS_ROW TYPE LVC_S_ROID,
LV_ROW TYPE INT4.
CASE P_COLUMN.
WHEN 'MSG'.
CLEAR : LS_ROW, LV_ROW.
LS_ROW = P_ROW_NO.
LV_ROW = LS_ROW-ROW_ID.
PERFORM POP_UP_READ_ATTACH USING LV_ROW.
CALL METHOD GO_GRID->REFRESH_TABLE_DISPLAY.
WHEN 'ICON'.
CHECK GV_NO IS INITIAL.
PERFORM POP_UP_ATTCH.
DELETE GT_0100_DATA WHERE ZUQ_KEY = ''.
READ TABLE GT_0100_DATA INTO GS_0100_DATA INDEX P_ROW-INDEX .
MOVE-CORRESPONDING GS_0100_DATA TO GS_0100_UPD.
MODIFY CBOTABLE FROM GS_0100_UPD.
GV_NO = 1. "1회만 아이콘 클릭 후 첨부 가능
CALL METHOD GO_GRID->REFRESH_TABLE_DISPLAY.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM POP_UP_READ_ATTACH
*&---------------------------------------------------------------------*
* 메세지 필드 더블클릭(첨부파일 리스트 조회 시 들어가는) 퍼폼
*----------------------------------------------------------------------*
FORM POP_UP_READ_ATTACH USING PV_ROW .
READ TABLE GT_0200_DATA INTO GS_0200_DATA INDEX PV_ROW.
IF GS_0200_DATA-ICON = '@FM@'. "첨부파일이 있을시
DATA LS_SIBFLPORB TYPE SIBFLPORB.
"첨부 리스트 조회를 위한 SETTING
SELECT SINGLE A~ZUQ_KEY "유니크 키
, B~TYPEID_A "유니크 키
, B~CATID_A
FROM CBOTABLE AS A
INNER JOIN SRGBTBREL AS B
ON A~GUID = B~BRELGUID
WHERE ZREQ_NO = @GS_0100_DATA-ZUQ_KEY
INTO ( @LS_SIBFLPORB-INSTID, @LS_SIBFLPORB-TYPEID,
@LS_SIBFLPORB-CATID ).
"첨부리스트 조회
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
EXPORTING
IS_OBJECT = LS_SIBFLPORB
IP_MODE = 'C'.
"첨부리스트 조회 불가시 메세지필드 수정
SELECT SINGLE BRELGUID
FROM SRGBTBREL
WHERE INSTID_A = @LS_SIBFLPORB-INSTID
AND TYPEID_A = @LS_SIBFLPORB-TYPEID
AND CATID_A = @LS_SIBFLPORB-CATID
INTO @DATA(LV_BRELGUID).
IF LV_BRELGUID IS INITIAL.
CLEAR GS_0100_DATA-MSG.
MODIFY GT_0100_DATA FROM GS_0100_DATA
INDEX PV_ROW.
* GO_0100_ALV->REFRESH( ).
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM POP_UP_ATTCH
*&---------------------------------------------------------------------*
* 아이콘 더블 클릭
*----------------------------------------------------------------------*
FORM POP_UP_ATTCH .
DATA : LS_OBJECT_IDENTITY TYPE BORIDENT,
LO_GOS TYPE REF TO CL_GOS_DOCUMENT_SERVICE,
LV_OBJKEY(70).
CREATE OBJECT LO_GOS.
PERFORM GET_ZUQ_KEY. "SNRO를 이용해 유니크키 생성
LS_OBJECT_IDENTITY-OBJKEY = GS_0100_DATA-ZUQ_KEY.
LS_OBJECT_IDENTITY-OBJTYPE = SY-REPID.
"첨부파일 생성
CALL METHOD LO_GOS->CREATE_ATTACHMENT
EXPORTING
IS_OBJECT = LS_OBJECT_IDENTITY
IMPORTING
EP_ATTACHMENT = LS_OBJECT_IDENTITY-OBJKEY.
IF LS_OBJECT_IDENTITY-OBJKEY IS NOT INITIAL.
COMMIT WORK.
GS_0100_DATA-ICON = '@FM@'.
GS_0100_DATA-MSG = TEXT-003."증빙문서가 존재합니다.
SELECT SINGLE BRELGUID
FROM SRGBTBREL
WHERE INSTID_B = @LS_OBJECT_IDENTITY-OBJKEY
INTO @GS_0100_DATA-GUID.
APPEND GS_0100_DATA TO GT_0100_DATA.
ELSE.
GS_0100_DATA-ICON = '@03@'.
GS_0100_DATA-MSG = TEXT-004.
APPEND GS_0100_DATA TO GT_0100_DATA.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM GET_ZUQ_KEY
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
FORM GET_ZUQ_KEY .
" REQ NUM
GV_YYYY = SY-DATUM+0(4).
" GOS PARAMETER SETTIING...
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '01'
OBJECT = 'ZTEST_SEQ'
IMPORTING
NUMBER = GV_SEQ.
IF SY-SUBRC = 0.
CONCATENATE 'REQ' GV_SEQ GV_YYYY INTO GS_0100_DATA-ZUQ_KEY.
CONDENSE GS_0100_DATA-ZUQ_KEY .
ELSE.
MESSAGE E326.
ENDIF.
ENDFORM.
프로그램을 위한 잡다한 코드들이 많지만
첨부파일 업로드 & 조회를 위한 중요 코드는 볼드 표시 해놓았다!
CALL METHOD LO_GOS->CREATE_ATTACHMENT에 적절한 임포트 값을 던지는 것이
첨부파일 업로드의 핵심이고
CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'에 적절한 임포트 값을 던지는 것이
첨부파일 업로드 리스트 조회의 핵심이다
끝!