메뉴 건너뛰기

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

번호 제목 글쓴이 날짜 조회 수
1386 <b>[완료]</b>update기능에 관하여 문의드립니다. [5] 풍뎅이 2008.03.21 1383
1385 <b>[완료]</b>SAP TABLE을 조회시 한가지 방법에 대해 질문 드림니다. [3] bd 2008.03.21 1238
1384 [요청]80문제 덤프 아리송한 문제 문의드립니다. [4] 제슨오 2008.03.21 3314
1383 [요청] GENERATE SUBROUTINE POOL 관련 질문입니다. [1] bd 2008.03.21 2226
1382 [요청]아밥 덤프문의 혼란스러운 문제하나 꼭좀 답변부탁드립니다. [3] r333 2008.03.21 1756
1381 <b>[완료]</b>Upload와 GUI_Upload의 차이점이 뭔가요? [3] nogo 2008.03.21 1762
1380 <b>[완료]</b>migo_gr에 수량 체크 관련 질문입니다. [2] 안면도 2008.03.21 1743
1379 [요청]BDC에서 대한 3가지 질문들입니다. [7] 앙리 2008.03.20 1505
1378 <b>[완료]</b>3월 ABAP Certi대비 아리송한 문제 단체로 문의드립니다.^^ [5] 제슨오 2008.03.19 1803
1377 <b>[완료]</b>abap덤프질문입니다(시험이 내일이라 정리중 덤프마다 답이 틀려 혼란스럽네요) [2] 목요일 2008.03.20 2543
1376 <b>[완료]</b>[스크린제어] 스크린 띠우려고하는대요.. [2] 할일없는무급개발자 2008.03.20 1241
1375 [요청]ALV 삭제버튼에 대해 문의드립니다. [6] ABAP짱! 2008.03.20 3389
1374 [요청]webdynpro for abap 오류 좀 봐주세요. [3] file 112 2008.03.19 1741
1373 [요청]외부 프로그램에서 Function내부의 submit 호출시 프로그램에러 [1] 박영신 2008.03.20 1809
1372 [re] [요청]외부 프로그램에서 Function내부의 submit 호출시 프로그램에러 [1] 도도치형! 2008.03.21 1888
1371 [요청]Submit 에서 Structure RSPARAMS 에 관한질문 [1] 허진 2008.03.20 2671
» <b>[완료]</b>엑셀파일을 불러와서 엑셀에 있는 값과 데이터베이스 테이블과의 비교후 업로드 [4] r333 2008.03.20 2654
1369 <b>[완료]</b>update기능에 관하여 문의드립니다. [4] 풍뎅이 2008.03.20 1257
1368 <b>[완료]</b>클래스 빌더에서 클래스 테스트에 대한 질문입니다. [2] kms 2008.03.20 1215
1367 <b>[완료]</b>리포트 프로그램에서 프로그램 제목 값 얻어오려면?? [5] bizarre 2008.03.19 1486