클래스로 alv를 구현하면 스탠다드 기능중에 엑셀 통합이 있고,
이를 선택하면, alv그리드에 있던 내역들이 자동으로 엑셀로 넘어가게 되는데요.
이 엑셀창에서 값들을 수정하고 이것들이 '반영'이라는 기능버튼을 만들어서
버튼 클릭시 엑셀내역들을 자동으로 읽어 오고 싶은데, 좋은 방법이 없을까요?
엑셀매크로쪽으로 올려주신 자료나, sap쪽 자료를 봐도 엑셀폼을 등록한후 그 수정내역들에 해당하는
셀값들을 읽어오는 방식으로 되어 있는데, 이것은 스탠다드기능인 엑셀통합을 선택해 값들을 엑셀로
읽어들인후에, 여기있는 내역들을 가져와야 하는것이라, 전혀 감이 잡히지 않습니다.
고수분들의 많은 조언 및 답변 부탁드리겠습니다.
댓글 2
-
seiya1
2008.04.18 02:15
-
kan145
2008.04.18 02:29
좋은정보 감사합니다. 음... 우선 저장후 업로드 하는 방법도 생각해봤었습니다. 일단 엑셀통합은 뷰에서 그리드와 엑셀을 전환시켜주고
메모리에 띠어놓고 하는 방법이라, 이렇게 하면 우선 사용자가 엑셀작업후 저장 업로드라는 기능펑션을 발생시켜야되서
귀찮아하신다고 해야할지... 안좋게 생각하시는 것 같습니다.
엑셀통합만 누르면 ALV GRID가 엑셀로 넘어가느데, 이 반대도 가능한거 아니냐라도 하고 계십니다..
아밥예제중에 SAPRDEMO_FORM_INTERFACE 을 보면 실시간으로 SAP와 EXCEL간의 통신이 이루어지던데, 이런방법으로 구현되길
PM분이 원하고 계서서요. 오늘까지 선배나 여러 동료분들의 도움과 분석을 해보고, 정 안되면 업로드식으로 건의를 드려야 할것같습니다.
아래내역 처럼 excel경로를 잡아서 sap로 읽어들인다음 작업하시면 될것 같습니다.
DATA : BEGIN OF GT_UPLOAD OCCURS 0,
EADAT(10),
MATNR(18).
DATA : END OF GT_UPLOAD.
DATA : DA_BEGIN_COL TYPE I VALUE 1,
DA_BEGIN_ROW TYPE I VALUE 2,
DA_END_COL TYPE I VALUE 15,
DA_END_ROW TYPE I VALUE 6000.
DATA : BEGIN OF IT_EXCEL OCCURS 0,
ROW(4) TYPE N, "Excel Row
COL(4) TYPE N, "Excel Column
VALUE(32), "Excel Value
END OF IT_EXCEL.
FIELD-SYMBOLS : <FS> TYPE ANY.
REFRESH IT_EXCEL.
CLEAR IT_EXCEL.
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_UPLOAD => 파일경로
I_BEGIN_COL = DA_BEGIN_COL
I_BEGIN_ROW = DA_BEGIN_ROW
I_END_COL = DA_END_COL
I_END_ROW = DA_END_ROW
TABLES
INTERN = IT_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE I001 WITH 'Upload Error....'.
STOP.
ENDIF.
READ TABLE IT_EXCEL INDEX 1.
CHECK SY-SUBRC EQ 0.
* excel data internal table에 넣기
LOOP AT IT_EXCEL.
ASSIGN COMPONENT IT_EXCEL-COL OF STRUCTURE GT_UPLOAD TO <FS>.
IF SY-SUBRC = 0.
<FS> = IT_EXCEL-VALUE.
ENDIF.
AT END OF ROW.
APPEND GT_UPLOAD.
CLEAR: GT_UPLOAD.
ENDAT.
ENDLOOP.