메뉴 건너뛰기

SAP 한국 커뮤니티

엑셀파일을 불러와서 엑셀에 있는 데이터 값과 sap에서 만든 테이블과의 데이터를


비교해서 없는 값만 올리려고 해요


 


제가 코딩한건 일단 엑셀파일을 불러와서 테이블(임의생성한)에 올려주는 로직까진 했구요


 


근데 이걸 비교해서 없는것만 올리는 구문은 어떻해 어느 부분에 넣어야 될까요?


 


*====================================*


 


*&---------------------------------------------------------------------*
*& Report  ZAB07B02
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*


REPORT  ZAB07B02  MESSAGE-ID ZAB07M.


*----------------------------------------------------------------------*
* TABLES DEFINE
*----------------------------------------------------------------------*


TABLES ZAB02T02.


*----------------------------------------------------------------------*
* DATA DEFINE
*----------------------------------------------------------------------*
DATA: V_FIELD0(4) TYPE C,
      GV_INDEX TYPE I,
      GV_ROW TYPE N,
      GV_TAB TYPE FILETABLE,
      GV_FILE LIKE RLGRAP-FILENAME, "경로저장변수
      GV_SUBRC TYPE I,
      GV_TMP TYPE I.


FIELD-SYMBOLS <FS> TYPE ANY.


* 엑셀 업로드 데이터 선언
DATA : GT_XLS TYPE  KCDE_CELLS OCCURS 0 WITH HEADER LINE.


*----------------------------------------------------------------------*
* INTERNAL TABLE DEFINE
*----------------------------------------------------------------------*
DATA : BEGIN OF ITAB_RST OCCURS 0,
*        FIELD0(1),             "체크박스의 공간을 위한 변수선언
         TITLE(10),
         A(10),
         B(10),
         C(10),
         D(10),
         E(10),
         F(10),
         G(10),
         H(10),
         I(10),
         J(10),
         K(10).
DATA: END OF ITAB_RST.



DATA : BEGIN OF ITAB_IN OCCURS 0.
        INCLUDE STRUCTURE ZAB02T02.
DATA:  END OF ITAB_IN.



*기본 화면
*----------------------------------------------------------------------*
* SELECTION-SCREEN
*----------------------------------------------------------------------*


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_FNAME LIKE RLGRAP-FILENAME MODIF ID 01,     "파일명
             P_ENDCOL TYPE I MODIF ID 01,
             P_ENDROW TYPE I MODIF ID 01.
SELECTION-SCREEN END OF BLOCK B1.


*------------------------------------------------------
*AT SELECTION-SCREEN
*-------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
  PERFORM F4_FILENAME USING P_FNAME.



*------------------------------------------------------------
*INITIALZATION
*------------------------------------------------------------


INITIALIZATION.
  PERFORM INITIALIZATION.


*------------------------------------------------------------
*START-OF-SELECTION
*------------------------------------------------------------


START-OF-SELECTION.


  SET PF-STATUS 'STAT0100'.     "실행시 툴바밑에 버튼지정


  CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
    EXPORTING
      FILENAME                = P_FNAME  "경로 지정
      I_BEGIN_COL             = '1'      "시작칼럼
      I_BEGIN_ROW             = '1'      "시작열
      I_END_COL               = P_ENDCOL   "끝라인
      I_END_ROW               = P_ENDROW   "끝열
    TABLES
      INTERN                  = GT_XLS
    EXCEPTIONS
      INCONSISTENT_PARAMETERS = 1
      UPLOAD_OLE              = 2
      OTHERS                  = 3.
  .
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


  LOOP AT GT_XLS.


    GV_INDEX = ( GT_XLS-COL ).
    ASSIGN COMPONENT GV_INDEX OF STRUCTURE ITAB_RST TO <FS>.
    MOVE GT_XLS-VALUE TO <FS>.
    AT END OF ROW.
      APPEND ITAB_RST.
      CLEAR ITAB_RST.
    ENDAT.
  ENDLOOP.


  LOOP AT ITAB_RST.
    WRITE :/ ITAB_RST.


  ENDLOOP.


*LOOP AT GT_XLS.
*  WRITE : /  GT_XLS-ROW ,  GT_XLS-COL ,  GT_XLS-VALUE.
*ENDLOOP.


  INCLUDE ZAB07B01_F4_FILENAMEF01.
*&---------------------------------------------------------------------*
*&      Form  F4_FILENAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_FNAME  text
*----------------------------------------------------------------------*
FORM F4_FILENAME  USING    GV_FILE.


  CLEAR : GV_TAB. REFRESH GV_TAB.
*업로드할 파일의 PATH 지정하기.
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    EXPORTING
      WINDOW_TITLE     = '업로드할 파일을 선택하세요'
      DEFAULT_FILENAME = '*.XLS'
      MULTISELECTION   = ' '
    CHANGING
      FILE_TABLE       = GV_TAB
      RC               = GV_SUBRC.
  IF SY-SUBRC = 0.
    LOOP AT GV_TAB INTO GV_FILE.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " F4_FILENAME.


*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM INITIALIZATION .


  P_FNAME = 'C:'.


ENDFORM.                    " INITIALIZATION


 


*----------------------------------------------------------------------*
* AT USER-COMMAND //펑션키 설정
*----------------------------------------------------------------------*


AT USER-COMMAND.
  SY-LSIND = 1.
  CASE SY-UCOMM.
    WHEN 'SS'.
      PERFORM SELECT_ALL.
    WHEN 'DEL'.
      PERFORM DELETE_ALL .
    WHEN 'EXIT'.
      LEAVE TO SCREEN 0.
  ENDCASE.
  SY-UCOMM = ' '.


 


*&---------------------------------------------------------------------*
*&      Form  SELECT_ALL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SELECT_ALL.


  LOOP AT ITAB_RST.
    MOVE-CORRESPONDING ITAB_RST TO ITAB_IN.
    CLEAR ZAB02T02.


    ZAB02T02-MANDT = SY-MANDT.
    ZAB02T02-TITLE = ITAB_IN-TITLE.
    ZAB02T02-A = ITAB_IN-A.
    ZAB02T02-B = ITAB_IN-B.
    ZAB02T02-C = ITAB_IN-C.
    ZAB02T02-D = ITAB_IN-D.
    ZAB02T02-E = ITAB_IN-E.
    ZAB02T02-F = ITAB_IN-F.


    MODIFY ZAB02T02 FROM ITAB_IN.
    MESSAGE s007.
  ENDLOOP.
ENDFORM.                    "SELECT_ALL



*&---------------------------------------------------------------------*
*&      Form  DELETE_ALL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DELETE_ALL .
  loop at ITAB_RST.
    DELETE FROM ZAB02T02.


    MESSAGE s006.
  endloop.


ENDFORM.                    " DELETE_ALL

번호 제목 글쓴이 날짜 조회 수
5153 <b>[완료]</b>SUBMIT 에관에 자세히 알고싶은데요...... [3] genius 2008.03.19 1610
5152 <b>[완료]</b>ALV 에서 필터링 검색 문제입니다. [2] 마젤란 2008.03.19 1592
5151 <b>[완료]</b>프로그램 사용 통계를 볼수 있는 프로그램이 있습니까? [6] activeman 2008.03.19 4313
5150 [요청]BAPI_ACC_GL_POSTING_REV_POST 에러 미인 2008.03.19 1617
5149 <b>[완료]</b>abap덤프관련 In which cases can the ABAP statement CALL TRANSFORMATION be used? [3] 목요일 2008.03.19 1312
5148 <b>[완료]</b>오라클과 유사한 기능을 쓸 수 있는지 문의드립니다. [2] 풍뎅이 2008.03.19 1136
5147 [요청]webdynpro for abap 오류 좀 봐주세요. [3] file 112 2008.03.19 1740
5146 <b>[완료]</b>3월 ABAP Certi대비 아리송한 문제 단체로 문의드립니다.^^ [5] 제슨오 2008.03.19 1800
5145 [요청]index 생성시 오류...고수님 해결 좀 해주세요..ㅠㅠ [5] 아밥초보 2008.03.19 1819
5144 <b>[완료]</b>리포트 프로그램에서 프로그램 제목 값 얻어오려면?? [5] bizarre 2008.03.19 1481
5143 <b>[완료]</b>클래스 빌더에서 클래스 테스트에 대한 질문입니다. [2] kms 2008.03.20 1211
5142 <b>[완료]</b>update기능에 관하여 문의드립니다. [4] 풍뎅이 2008.03.20 1256
» <b>[완료]</b>엑셀파일을 불러와서 엑셀에 있는 값과 데이터베이스 테이블과의 비교후 업로드 [4] r333 2008.03.20 2649
5140 [요청]Submit 에서 Structure RSPARAMS 에 관한질문 [1] 허진 2008.03.20 2615
5139 [요청]외부 프로그램에서 Function내부의 submit 호출시 프로그램에러 [1] 박영신 2008.03.20 1807
5138 [요청]ALV 삭제버튼에 대해 문의드립니다. [6] ABAP짱! 2008.03.20 3340
5137 <b>[완료]</b>[스크린제어] 스크린 띠우려고하는대요.. [2] 할일없는무급개발자 2008.03.20 1239
5136 <b>[완료]</b>abap덤프질문입니다(시험이 내일이라 정리중 덤프마다 답이 틀려 혼란스럽네요) [2] 목요일 2008.03.20 2506
5135 [요청]BDC에서 대한 3가지 질문들입니다. [7] 앙리 2008.03.20 1503
5134 <b>[완료]</b>migo_gr에 수량 체크 관련 질문입니다. [2] 안면도 2008.03.21 1739