상세 컨텐츠

본문 제목

ABAP 첨부 파일 업로드 - 기초 2(ALV 구현 및 아이콘 더블 클릭)

카테고리 없음

by Kiroc 2022. 7. 13. 16:59

본문

대략 이런 화면 구현

첨부 아이콘을 더블클릭시 파일 업로드,

메세지를 더블클릭시 업로드된 파일 확인 및 추가 가능하게 구현

 

 

코드

*&---------------------------------------------------------------------*
*&      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'에 적절한 임포트 값을 던지는 것이
첨부파일 업로드 리스트 조회의 핵심이다

끝!