300x250
728x90
# 01. SAP RAP Excel Upload #1에 대해서
2023.11.16 - [.SAP/..Cloud ABAP(RAP)] - SAP RAP Excel Upload 정리 #1
SAP RAP Excel Upload 정리에서 설정이 다 되어야 넘어갈 수 있으니 참고 바란다.
# 02. SAP BAS 로직 설정 - Template 다운로드
#01. 여기서 변경해야 할 버튼은 [onTempDownload]이다.
#02. 우선 다음과 같이 복사/붙여놓기를 해보자.
onTempDownload: function (oEvent) {
var oModel = this.getView().getModel();
var oBuilding = oModel.getServiceMetadata().dataServices.schema[0].entityType.find(x => x.name === 'ZC_SCARR_GJType');
var propertyList = ['Carrid', 'Carrname', 'Url'];
var excelColumnList = [];
var colList = {};
propertyList.forEach((value, index) => {
let property = oBuilding.property.find(x => x.name === value);
colList[property.extensions.find(x => x.name === 'label').value] = '';
});
excelColumnList.push(colList);
// initialising the excel work sheet
const ws = XLSX.utils.json_to_sheet(excelColumnList);
// creating the new excel work book
const wb = XLSX.utils.book_new();
// set the file value
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// download the created excel file
XLSX.writeFile(wb, 'RAP - Scarr.xlsx');
MessageToast.show("Template File Downloading...");
},
#03. 여기서 변경해야 할 것들을 하나하나 변경해 보자.
# 우선 자신의 프로그램에서 Entity Type에 맞게 "..." 변경을 해주어야 한다.
# 여기서 자신의 Entity Type을 알고 싶으면 [LocalService] -> [metadata.xml] 화면으로 가서 보면 다음과 같이 확인할 수 있다.
# 만약 찾기가 어렵다고 하면 [manifest.json] 파일에 가서 EntitySet을 찾아서 [meatadata.xml]에서 찾는 방법도 있다.
#04. Excel File 설정하기
# 우리가 다량으로 넣을 Excel에 대한 List을 설정해 주면 된다.
#05. 사용자에 따라서 변경하면 된다.
#06. 마지막으로 가장 중요한 Controller 상단에 "xlsx"을 넣어줘야 한다.
#07. 그리고 실행시켜 보면?
# 03. SAP BAS 로직 설정 - 파일 Upload 로직 설정
#01. onUploadSetComplete 버튼 설정해 보자.
#02. 복사/붙여놓기를 해보자. (여기서는 변경할 게 없다)
var oFileUploader = Fragment.byId("excel_upload", "uploadSet");
var oFile = oFileUploader.getItems()[0].getFileObject();
var reader = new FileReader();
var that = this;
this.excelSheetsData = [];
reader.onload = (e) => {
let xlsx_content = e.currentTarget.result;
let workbook = XLSX.read(xlsx_content, { type: 'binary' });
var excelData = XLSX.utils.sheet_to_row_object_array(workbook.Sheets["Sheet1"]);
workbook.SheetNames.forEach(function (sheetName) {
that.excelSheetsData.push(XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]));
});
};
reader.readAsBinaryString(oFile);
MessageToast.show("Upload Successful");
#03. 실행을 해서 Template을 사용해서 Upload를 하면 다음과 같이 나오게 된다.
# 04. SAP BAS 로직 설정 - 파일 Item 삭제
#01. 다음 로직도 복사/붙여놓기를 해보자.
this.excelSheetsData = [];
# 05. Excel File -> Table 업데이트( Upload )
#01. onUploadSet을 설정해 보자.
#02. 복사/붙여놓기를 해보자. ( 변경 X )
onUploadSet: function(oEvent) {
// checking if excel file contains data or not
if (!this.excelSheetsData.length) {
MessageToast.show("Select file to Upload");
return;
}
var that = this;
var oSource = oEvent.getSource();
// creating a promise as the extension api accepts odata call in form of promise only
var fnAddMessage = function () {
return new Promise((fnResolve, fnReject) => {
that.callOdata(fnResolve, fnReject);
});
};
var mParameters = {
sActionLabel: oSource.getText() // or "Your custom text"
};
// calling the oData service using extension api
this.extensionAPI.securedExecution(fnAddMessage, mParameters);
this.pDialog.close();
},
#03. 내부 Call 설정( callOdata )
# 위에서 CallOdata을 Call 하는 로직이 있기 때문에 CallOdata를 만들어줘야 한다.
# 맨 하단에 설정
callOdata: function (fnResolve, fnReject) {
// intializing the message manager for displaying the odata response messages
var oModel = this.getView().getModel();
var payload = {};
this.excelSheetsData[0].forEach((value, index) => {
// setting the payload data
payload = {
"Carrid": value["Carrid"],
"Carrname": value["Carrname"],
"Url": value["Url"]
};
// calling the odata service
oModel.create("/ZC_SCARR_GJ", payload, {
success: (result) => {
console.log(result);
var oMessageManager = sap.ui.getCore().getMessageManager();
var oMessage = new sap.ui.core.message.Message({
message: "Carrid Created: " + result.Carrid,
persistent: true, // create message as transition message
type: sap.ui.core.MessageType.Success
});
oMessageManager.addMessages(oMessage);
fnResolve();
},
error: fnReject
});
});
}
#04. 여기서 변경할 것은 Excel에 따른 필드와 Entity Set을 변경해줘야 한다.
# Entity Set 확인하는 방법은?
- [metadata.xml] 파일로 들어가서 "ENTITYSET"이라고 검색을 해보면 다음과 같이 나오게 된다.
# 06. 실행
#01. Upload 버튼을 눌러서 해당 Excel 파일을 넣어보자.
#02. 업로드가 완료가 되면, 실행을 시켜보자.
#03. 그럼 다음과 같이 성공적으로 데이터가 들어가 있는 걸 볼 수 있다.
끝!
728x90
'.BTP > ..Cloud ABAP(RAP)' 카테고리의 다른 글
SAP Cloud ABAP Naming Convetions 정리 (0) | 2024.12.11 |
---|---|
SAP RAP Excel Upload 정리 #1 (9) | 2023.11.16 |
SAP RAP 생성/수정 사항 업데이트하는 방법 (0) | 2023.09.11 |
SAP RAP Generate ABAP Repository Objects 정리 (2) | 2023.07.22 |
SAP RAP to BAS 연결 정리(BTP) (0) | 2023.07.21 |