메뉴 건너뛰기

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

번호 제목 글쓴이 날짜 조회 수
1373 [요청]외부 프로그램에서 Function내부의 submit 호출시 프로그램에러 [1] 박영신 2008.03.20 1816
1372 [re] [요청]외부 프로그램에서 Function내부의 submit 호출시 프로그램에러 [1] 도도치형! 2008.03.21 1892
1371 [요청]Submit 에서 Structure RSPARAMS 에 관한질문 [1] 허진 2008.03.20 2678
» <b>[완료]</b>엑셀파일을 불러와서 엑셀에 있는 값과 데이터베이스 테이블과의 비교후 업로드 [4] r333 2008.03.20 2655
1369 <b>[완료]</b>update기능에 관하여 문의드립니다. [4] 풍뎅이 2008.03.20 1259
1368 <b>[완료]</b>클래스 빌더에서 클래스 테스트에 대한 질문입니다. [2] kms 2008.03.20 1221
1367 <b>[완료]</b>리포트 프로그램에서 프로그램 제목 값 얻어오려면?? [5] bizarre 2008.03.20 1496
1366 [요청]index 생성시 오류...고수님 해결 좀 해주세요..ㅠㅠ [5] 아밥초보 2008.03.20 1842
1365 <b>[완료]</b>오라클과 유사한 기능을 쓸 수 있는지 문의드립니다. [2] 풍뎅이 2008.03.19 1138
1364 <b>[완료]</b>abap덤프관련 In which cases can the ABAP statement CALL TRANSFORMATION be used? [3] 목요일 2008.03.19 1347
1363 [요청]BAPI_ACC_GL_POSTING_REV_POST 에러 미인 2008.03.19 1625
1362 <b>[완료]</b>프로그램 사용 통계를 볼수 있는 프로그램이 있습니까? [6] activeman 2008.03.19 4365
1361 <b>[완료]</b>ALV 에서 필터링 검색 문제입니다. [2] 마젤란 2008.03.19 1647
1360 <b>[완료]</b>SUBMIT 에관에 자세히 알고싶은데요...... [3] genius 2008.03.19 1617
1359 [요청]ALV 텍스트에디트에서 툴바 제거하는 메소드좀 알려주세요 ㅜ.ㅜ [3] genius 2008.03.19 1874
1358 <b>[완료]</b>abap덤프관련질문드립니다. What can you do to undo database changes executed beforehand in a dialog? [3] 목요일 2008.03.19 1308
1357 <b>[완료]</b>netweaver sap gui 에서 접속이 안되요 ㅡㅡ;; [7] file 용스 2008.03.17 1821
1356 <b>[완료]</b>폴더안의 파일명을 모두 가져 올수 있는 함수가 있습니까? [2] activeman 2008.03.19 1762
1355 <b>[완료]</b>트랜잭션과 관련하여 import에 관하여 문의드립니다. [2] 풍뎅이 2008.03.19 1196
1354 [요청]데이터베이트 테이블을 생성후 데이터 넣는법 [2] bizarre 2008.03.18 1626