summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.env.development12
-rw-r--r--.env.production18
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_CUSTOMER_MASTER/route.ts344
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_DEPARTMENT_CODE/route.ts235
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_MASTER/route.ts346
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/route.ts182
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EQUP_MASTER/route.ts271
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART/route.ts274
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/route.ts150
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts1141
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_ORGANIZATION_MASTER/route.ts435
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_PROJECT_MASTER/route.ts153
-rw-r--r--app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_VENDOR_MASTER/route.ts336
-rw-r--r--app/api/(S-ERP)/(MDG)/utils.ts396
-rw-r--r--app/api/auth/[...nextauth]/saml/provider.ts4
-rw-r--r--components/login/login-form.tsx2
-rw-r--r--db/schema/MDG/mdg.ts2359
-rw-r--r--db/schema/MDG/modelMaster.ts178
-rw-r--r--db/schema/SOAP/soap.ts22
-rw-r--r--db/schema/index.ts5
-rw-r--r--next.config.ts9
-rw-r--r--public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl294
-rw-r--r--public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl42
-rw-r--r--public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl249
-rw-r--r--public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl18
-rw-r--r--public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl156
-rw-r--r--public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl180
-rw-r--r--public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl8
-rw-r--r--public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl166
-rw-r--r--public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl256
-rw-r--r--public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl168
-rw-r--r--public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl320
-rwxr-xr-xpublic/wsdl/_util/analyze_mdz_wsdl.py847
-rw-r--r--public/wsdl/_util/update_wsdl_with_csv.py674
34 files changed, 7302 insertions, 2948 deletions
diff --git a/.env.development b/.env.development
index 7956a626..8d5b04b8 100644
--- a/.env.development
+++ b/.env.development
@@ -11,9 +11,9 @@ Email_From_Address=dujin.kim@dtsolution.co.kr
NEXT_PUBLIC_MUI_KEY=da30586e1f20b93856a9783012fc9258Tz04ODI0MyxFPTE3NDQ0NTM2NzgwMDAsUz1wcmVtaXVtLExNPXN1YnNjcmlwdGlvbixLVj0y
- NEXT_PUBLIC_URL=http://43.203.251.114:3000
- NEXT_PUBLIC_BASE_URL=http://43.203.251.114:3001
- NEXTAUTH_URL=http://43.203.251.114:3000
+NEXT_PUBLIC_URL=http://43.203.251.114:3000
+NEXT_PUBLIC_BASE_URL=http://43.203.251.114:3001
+NEXTAUTH_URL=http://43.203.251.114:3000
# PDFTRON KEYS
@@ -113,4 +113,8 @@ JhfSaP92jIx0QQ+W1IrSKAiBxv+WtItsaWFLgYGIYNvrX8+qOnd+rDBvKDP9kk9Z
qs1mHF2CbPRmao7/iEfhTb92hCgpFqsj/zU7nV3a8RbyifEMKSXTNanOEK2nTxAj
ld/csXQayHSaaqoH/lVySK0Qp6A2d2u2gEj/TAQ+Bhe7BsexNs2s5u5rykJqeROq
J7n0UsGgLd+uUDeo2nLqq5KeaXNcmACVcy2AASog78dzKwQmmGuC9Rp3zIoKOGdo
-QwIDAQAB" \ No newline at end of file
+QwIDAQAB"
+
+# === SOAP 인터페이스 설정 ===
+SOAP_LOG_MAX_RECORDS=500
+# === SOAP 인터페이스 설정 === \ No newline at end of file
diff --git a/.env.production b/.env.production
index 69f133ac..47f80e16 100644
--- a/.env.production
+++ b/.env.production
@@ -62,6 +62,18 @@ DOLCE_DOC_DETAIL_API_URL=http://60.100.99.217:1111/Services/VDCSWebService.svc/D
DOLCE_FILE_INFO_API_URL=http://60.100.99.217:1111/Services/VDCSWebService.svc/FileInfoList
+### S-GIPS ###
+S_GIPS_URL="http://qa.shi-api.com/evcp/Common/verifySgipsUser"
+S_GIPS_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJrZXlhdXRoLWV2Y3AiLCJuYmYiOjE3NDg2MTcyMDAsImV4cCI6MTc1NjYyNzIwMH0.RBI7mPXNel6T_c4qDiD4QALHnS6scZLZqQKiv4V_KAw"
+S_GIPS_RSA_KEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtHC28Gw0U8taUwI8oJtG
+1H2JWGJtcsDw8w1oZbs759/Rag7zCF/bBilRtvlOz92wt02RCONetWK9VMgR2cqT
+JhfSaP92jIx0QQ+W1IrSKAiBxv+WtItsaWFLgYGIYNvrX8+qOnd+rDBvKDP9kk9Z
+qs1mHF2CbPRmao7/iEfhTb92hCgpFqsj/zU7nV3a8RbyifEMKSXTNanOEK2nTxAj
+ld/csXQayHSaaqoH/lVySK0Qp6A2d2u2gEj/TAQ+Bhe7BsexNs2s5u5rykJqeROq
+J7n0UsGgLd+uUDeo2nLqq5KeaXNcmACVcy2AASog78dzKwQmmGuC9Rp3zIoKOGdo
+QwIDAQAB"
+### S-GIPS ###
+
OCR_SECRET_KEY=QVZzbkFtVFV1UWl2THNCY01lYVVGUUxpWmdyUkxHYVA=
@@ -109,4 +121,8 @@ JhfSaP92jIx0QQ+W1IrSKAiBxv+WtItsaWFLgYGIYNvrX8+qOnd+rDBvKDP9kk9Z
qs1mHF2CbPRmao7/iEfhTb92hCgpFqsj/zU7nV3a8RbyifEMKSXTNanOEK2nTxAj
ld/csXQayHSaaqoH/lVySK0Qp6A2d2u2gEj/TAQ+Bhe7BsexNs2s5u5rykJqeROq
J7n0UsGgLd+uUDeo2nLqq5KeaXNcmACVcy2AASog78dzKwQmmGuC9Rp3zIoKOGdo
-QwIDAQAB" \ No newline at end of file
+QwIDAQAB"
+
+# === SOAP 인터페이스 설정 ===
+SOAP_LOG_MAX_RECORDS=500
+# === SOAP 인터페이스 설정 === \ No newline at end of file
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_CUSTOMER_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_CUSTOMER_MASTER/route.ts
new file mode 100644
index 00000000..2c9df21d
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_CUSTOMER_MASTER/route.ts
@@ -0,0 +1,344 @@
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ CUSTOMER_MASTER_BP_HEADER,
+ CUSTOMER_MASTER_BP_HEADER_ADDRESS,
+ CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL,
+ CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX,
+ CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL,
+ CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL,
+ CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL,
+ CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN,
+ CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY,
+ CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES,
+ CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN,
+ CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND,
+ CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG,
+ CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type BpHeaderData = typeof CUSTOMER_MASTER_BP_HEADER.$inferInsert;
+type AddressData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS.$inferInsert;
+type AdEmailData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL.$inferInsert;
+type AdFaxData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX.$inferInsert;
+type AdPostalData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL.$inferInsert;
+type AdTelData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL.$inferInsert;
+type AdUrlData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL.$inferInsert;
+type BpCusgenData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN.$inferInsert;
+type ZcompanyData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY.$inferInsert;
+type ZsalesData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES.$inferInsert;
+type ZcpfnData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN.$inferInsert;
+type ZtaxindData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND.$inferInsert;
+type ZvatregData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG.$inferInsert;
+type BpTaxnumData = typeof CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM.$inferInsert;
+
+// XML 구조 타입
+type BpHeaderXML = ToXMLFields<Omit<BpHeaderData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ ADDRESS?: AddressXML[];
+ BP_TAXNUM?: BpTaxnumXML[];
+ BP_CUSGEN?: BpCusgenXML[];
+};
+
+type AddressXML = ToXMLFields<Omit<AddressData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>> & {
+ AD_EMAIL?: AdEmailXML[];
+ AD_FAX?: AdFaxXML[];
+ AD_POSTAL?: AdPostalXML[];
+ AD_TEL?: AdTelXML[];
+ AD_URL?: AdUrlXML[];
+};
+
+type AdEmailXML = ToXMLFields<Omit<AdEmailData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+type AdFaxXML = ToXMLFields<Omit<AdFaxData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+type AdPostalXML = ToXMLFields<Omit<AdPostalData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+type AdTelXML = ToXMLFields<Omit<AdTelData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+type AdUrlXML = ToXMLFields<Omit<AdUrlData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+
+type BpCusgenXML = ToXMLFields<Omit<BpCusgenData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>> & {
+ ZVATREG?: ZvatregXML[];
+ ZTAXIND?: ZtaxindXML[];
+ ZCOMPANY?: ZcompanyXML[];
+ ZSALES?: ZsalesXML[];
+};
+
+type ZvatregXML = ToXMLFields<Omit<ZvatregData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+type ZtaxindXML = ToXMLFields<Omit<ZtaxindData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+type ZcompanyXML = ToXMLFields<Omit<ZcompanyData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+
+type ZsalesXML = ToXMLFields<Omit<ZsalesData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>> & {
+ ZCPFN?: ZcpfnXML[];
+};
+
+type ZcpfnXML = ToXMLFields<Omit<ZcpfnData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+type BpTaxnumXML = ToXMLFields<Omit<BpTaxnumData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>;
+
+// 처리된 데이터 구조
+interface ProcessedCustomerData {
+ bpHeader: BpHeaderData;
+ addresses: AddressData[];
+ adEmails: AdEmailData[];
+ adFaxes: AdFaxData[];
+ adPostals: AdPostalData[];
+ adTels: AdTelData[];
+ adUrls: AdUrlData[];
+ bpCusgens: BpCusgenData[];
+ zvatregs: ZvatregData[];
+ ztaxinds: ZtaxindData[];
+ zcompanies: ZcompanyData[];
+ zsales: ZsalesData[];
+ zcpfns: ZcpfnData[];
+ bpTaxnums: BpTaxnumData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ // SOAP 로깅 래퍼 함수 사용
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_CUSTOMER_MASTER',
+ body,
+ async () => {
+ console.log('🚀 CUSTOMER_MASTER 수신 시작, 데이터 길이:', body.length);
+
+ const parser = createXMLParser([
+ 'BP_HEADER', 'ADDRESS', 'AD_EMAIL', 'AD_FAX', 'AD_POSTAL', 'AD_TEL', 'AD_URL',
+ 'BP_CUSGEN', 'ZVATREG', 'ZTAXIND', 'ZCOMPANY', 'ZSALES', 'ZCPFN', 'BP_TAXNUM'
+ ]);
+
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_CUSTOMER_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_CUSTOMER_MASTERReq or BP_HEADER data');
+ }
+
+ console.log('Validating request data structure:',
+ `BP_HEADER: ${requestData.BP_HEADER ? 'found' : 'not found'}`
+ );
+
+ if (requestData.BP_HEADER && Array.isArray(requestData.BP_HEADER) && requestData.BP_HEADER.length > 0) {
+ console.log('First BP_HEADER sample:', JSON.stringify(requestData.BP_HEADER[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedCustomers = transformCustomerData(requestData.BP_HEADER as BpHeaderXML[] || []);
+
+ // 필수 필드 검증
+ for (const customerData of processedCustomers) {
+ if (!customerData.bpHeader.BP_HEADER) {
+ throw new Error('Missing required field: BP_HEADER in customer');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedCustomers);
+
+ console.log(`🎉 처리 완료: ${processedCustomers.length}개 고객 데이터`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_CUSTOMER_MASTER/');
+ }
+ ).catch(error => {
+ // withSoapLogging에서 이미 에러 로그를 처리하므로, 여기서는 응답만 생성
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformCustomerData(bpHeaderData: BpHeaderXML[]): ProcessedCustomerData[] {
+ if (!bpHeaderData || !Array.isArray(bpHeaderData)) {
+ return [];
+ }
+
+ return bpHeaderData.map(bpHeader => {
+ const bpHeaderKey = bpHeader.BP_HEADER || '';
+ const fkData = { BP_HEADER: bpHeaderKey };
+
+ // 1단계: BP_HEADER (루트)
+ const bpHeaderConverted = convertXMLToDBData<BpHeaderData>(
+ bpHeader as Record<string, string | undefined>,
+ ['BP_HEADER'],
+ fkData
+ );
+
+ // 2단계: ADDRESS와 직속 하위들
+ const addresses = processNestedArray(
+ bpHeader.ADDRESS,
+ (addr) => convertXMLToDBData<AddressData>(addr as Record<string, string | undefined>, ['ADDRNO'], fkData),
+ fkData
+ );
+
+ // ADDRESS의 하위 테이블들 (3단계)
+ const adEmails = bpHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_EMAIL, (item) =>
+ convertXMLToDBData<AdEmailData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData)
+ ) || [];
+
+ const adFaxes = bpHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_FAX, (item) =>
+ convertXMLToDBData<AdFaxData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData)
+ ) || [];
+
+ const adPostals = bpHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_POSTAL, (item) =>
+ convertXMLToDBData<AdPostalData>(item as Record<string, string | undefined>, ['NATION'], fkData), fkData)
+ ) || [];
+
+ const adTels = bpHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_TEL, (item) =>
+ convertXMLToDBData<AdTelData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData)
+ ) || [];
+
+ const adUrls = bpHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_URL, (item) =>
+ convertXMLToDBData<AdUrlData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData)
+ ) || [];
+
+ // 2단계: BP_TAXNUM
+ const bpTaxnums = processNestedArray(
+ bpHeader.BP_TAXNUM,
+ (item) => convertXMLToDBData<BpTaxnumData>(item as Record<string, string | undefined>, ['TAXTYPE'], fkData),
+ fkData
+ );
+
+ // 2단계: BP_CUSGEN과 하위들
+ const bpCusgens = processNestedArray(
+ bpHeader.BP_CUSGEN,
+ (cusgen) => convertXMLToDBData<BpCusgenData>(cusgen as Record<string, string | undefined>, ['KUNNR'], fkData),
+ fkData
+ );
+
+ // BP_CUSGEN의 하위 테이블들 (3단계)
+ const zvatregs = bpHeader.BP_CUSGEN?.flatMap(cusgen =>
+ processNestedArray(cusgen.ZVATREG, (item) =>
+ convertXMLToDBData<ZvatregData>(item as Record<string, string | undefined>, ['LAND1'], fkData), fkData)
+ ) || [];
+
+ const ztaxinds = bpHeader.BP_CUSGEN?.flatMap(cusgen =>
+ processNestedArray(cusgen.ZTAXIND, (item) =>
+ convertXMLToDBData<ZtaxindData>(item as Record<string, string | undefined>, ['ALAND', 'TATYP'], fkData), fkData)
+ ) || [];
+
+ const zcompanies = bpHeader.BP_CUSGEN?.flatMap(cusgen =>
+ processNestedArray(cusgen.ZCOMPANY, (item) =>
+ convertXMLToDBData<ZcompanyData>(item as Record<string, string | undefined>, ['BUKRS'], fkData), fkData)
+ ) || [];
+
+ const zsales = bpHeader.BP_CUSGEN?.flatMap(cusgen =>
+ processNestedArray(cusgen.ZSALES, (item) =>
+ convertXMLToDBData<ZsalesData>(item as Record<string, string | undefined>, ['VKORG', 'VTWEG', 'SPART'], fkData), fkData)
+ ) || [];
+
+ // ZSALES의 하위 테이블 (4단계)
+ const zcpfns = bpHeader.BP_CUSGEN?.flatMap(cusgen =>
+ cusgen.ZSALES?.flatMap(sales =>
+ processNestedArray(sales.ZCPFN, (item) =>
+ convertXMLToDBData<ZcpfnData>(item as Record<string, string | undefined>, ['PARVW', 'PARZA'], fkData), fkData)
+ ) || []
+ ) || [];
+
+ return {
+ bpHeader: bpHeaderConverted,
+ addresses,
+ adEmails,
+ adFaxes,
+ adPostals,
+ adTels,
+ adUrls,
+ bpCusgens,
+ zvatregs,
+ ztaxinds,
+ zcompanies,
+ zsales,
+ zcpfns,
+ bpTaxnums
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedCustomers: ProcessedCustomerData[]) {
+ console.log(`데이터베이스 저장 시작: ${processedCustomers.length}개 고객 데이터`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const customerData of processedCustomers) {
+ const { bpHeader, addresses, adEmails, adFaxes, adPostals, adTels, adUrls,
+ bpCusgens, zvatregs, ztaxinds, zcompanies, zsales, zcpfns, bpTaxnums } = customerData;
+
+ if (!bpHeader.BP_HEADER) {
+ console.warn('BP_HEADER가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // 1. BP_HEADER 테이블 Upsert (최상위 테이블)
+ await tx.insert(CUSTOMER_MASTER_BP_HEADER)
+ .values(bpHeader)
+ .onConflictDoUpdate({
+ target: CUSTOMER_MASTER_BP_HEADER.BP_HEADER,
+ set: {
+ ...bpHeader,
+ updatedAt: new Date(),
+ }
+ });
+
+ // 2. 하위 테이블들 처리 - FK 기준으로 전체 삭제 후 재삽입
+ await Promise.all([
+ // 2단계 테이블들
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS, addresses, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN, bpCusgens, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM, bpTaxnums, 'BP_HEADER', bpHeader.BP_HEADER),
+
+ // 3-4단계 테이블들
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL, adEmails, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX, adFaxes, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL, adPostals, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL, adTels, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL, adUrls, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG, zvatregs, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND, ztaxinds, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY, zcompanies, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES, zsales, 'BP_HEADER', bpHeader.BP_HEADER),
+ replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN, zcpfns, 'BP_HEADER', bpHeader.BP_HEADER),
+ ]);
+ }
+ });
+
+ console.log(`✅ 데이터베이스 저장 완료: ${processedCustomers.length}개 고객`);
+ return true;
+ } catch (error) {
+ console.error('❌ 데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+}
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_DEPARTMENT_CODE/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_DEPARTMENT_CODE/route.ts
new file mode 100644
index 00000000..5d407e1f
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_DEPARTMENT_CODE/route.ts
@@ -0,0 +1,235 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ DEPARTMENT_CODE_CMCTB_DEPT_MDG,
+ DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM,
+ DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM,
+ DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type DeptData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG.$inferInsert;
+type CompnmData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM.$inferInsert;
+type CorpnmData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM.$inferInsert;
+type DeptnmData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM.$inferInsert;
+
+// XML에서 받는 데이터 구조
+type DeptXML = ToXMLFields<Omit<DeptData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ DEPTNM?: DeptnmXML[];
+ COMPNM?: CompnmXML[];
+ CORPNM?: CorpnmXML[];
+};
+
+type DeptnmXML = ToXMLFields<Omit<DeptnmData, 'id' | 'createdAt' | 'updatedAt'>>;
+type CompnmXML = ToXMLFields<Omit<CompnmData, 'id' | 'createdAt' | 'updatedAt'>>;
+type CorpnmXML = ToXMLFields<Omit<CorpnmData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조
+interface ProcessedDepartmentData {
+ dept: DeptData;
+ deptnms: DeptnmData[];
+ compnms: CompnmData[];
+ corpnms: CorpnmData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_DEPARTMENT_CODE',
+ body,
+ async () => {
+ console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : ''));
+
+ const parser = createXMLParser(['CMCTB_DEPT_MDG', 'DEPTNM', 'COMPNM', 'CORPNM']);
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_DEPARTMENT_CODEReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_DEPARTMENT_CODEReq or CMCTB_DEPT_MDG data');
+ }
+
+ console.log('Validating request data structure:',
+ `CMCTB_DEPT_MDG: ${requestData.CMCTB_DEPT_MDG ? 'found' : 'not found'}`
+ );
+
+ if (requestData.CMCTB_DEPT_MDG && Array.isArray(requestData.CMCTB_DEPT_MDG) && requestData.CMCTB_DEPT_MDG.length > 0) {
+ console.log('First CMCTB_DEPT_MDG sample:', JSON.stringify(requestData.CMCTB_DEPT_MDG[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedDepts = transformDepartmentData(requestData.CMCTB_DEPT_MDG as DeptXML[] || []);
+
+ // 필수 필드 검증
+ for (const deptData of processedDepts) {
+ if (!deptData.dept.DEPTCD) {
+ throw new Error('Missing required field: DEPTCD in department');
+ }
+ if (!deptData.dept.CORPCD) {
+ throw new Error('Missing required field: CORPCD in department');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedDepts);
+
+ console.log(`Processed ${processedDepts.length} departments`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_DEPARTMENT_CODE/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformDepartmentData(deptData: DeptXML[]): ProcessedDepartmentData[] {
+ if (!deptData || !Array.isArray(deptData)) {
+ return [];
+ }
+
+ return deptData.map(dept => {
+ // 메인 Department 데이터 변환
+ const deptRecord = convertXMLToDBData<DeptData>(
+ dept as Record<string, string | undefined>,
+ ['DEPTCD', 'CORPCD']
+ );
+
+ // 필수 필드 보정
+ if (!deptRecord.DEPTCD) {
+ deptRecord.DEPTCD = '';
+ }
+ if (!deptRecord.CORPCD) {
+ deptRecord.CORPCD = '';
+ }
+
+ // FK 데이터 준비
+ const fkData = { DEPTCD: dept.DEPTCD || '' };
+
+ // DEPTNM 데이터 변환
+ const deptnms = processNestedArray(
+ dept.DEPTNM,
+ (deptnm) => convertXMLToDBData<DeptnmData>(deptnm, ['SPRAS'], fkData),
+ fkData
+ );
+
+ // COMPNM 데이터 변환
+ const compnms = processNestedArray(
+ dept.COMPNM,
+ (compnm) => convertXMLToDBData<CompnmData>(compnm, ['SPRAS'], fkData),
+ fkData
+ );
+
+ // CORPNM 데이터 변환
+ const corpnms = processNestedArray(
+ dept.CORPNM,
+ (corpnm) => convertXMLToDBData<CorpnmData>(corpnm, ['SPRAS'], fkData),
+ fkData
+ );
+
+ return {
+ dept: deptRecord,
+ deptnms,
+ compnms,
+ corpnms
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedDepts: ProcessedDepartmentData[]) {
+ console.log(`데이터베이스 저장 함수가 호출됨. ${processedDepts.length}개의 부서 데이터 수신.`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const deptData of processedDepts) {
+ const { dept, deptnms, compnms, corpnms } = deptData;
+
+ if (!dept.DEPTCD) {
+ console.warn('부서코드(DEPTCD)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // 1. Department 테이블 Upsert (최상위 테이블)
+ await tx.insert(DEPARTMENT_CODE_CMCTB_DEPT_MDG)
+ .values(dept)
+ .onConflictDoUpdate({
+ target: DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD,
+ set: {
+ ...dept,
+ updatedAt: new Date(),
+ }
+ });
+
+ // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입
+ await Promise.all([
+ // DEPTNM 테이블 처리
+ replaceSubTableData(
+ tx,
+ DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM,
+ deptnms,
+ 'DEPTCD',
+ dept.DEPTCD
+ ),
+
+ // COMPNM 테이블 처리
+ replaceSubTableData(
+ tx,
+ DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM,
+ compnms,
+ 'DEPTCD',
+ dept.DEPTCD
+ ),
+
+ // CORPNM 테이블 처리
+ replaceSubTableData(
+ tx,
+ DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM,
+ corpnms,
+ 'DEPTCD',
+ dept.DEPTCD
+ )
+ ]);
+ }
+ });
+
+ console.log(`${processedDepts.length}개의 부서 데이터 처리 완료.`);
+ return true;
+ } catch (error) {
+ console.error('데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+}
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_MASTER/route.ts
new file mode 100644
index 00000000..39e9aa2f
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_MASTER/route.ts
@@ -0,0 +1,346 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+// EMPLOYEE_MASTER
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM,
+ EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type EmpMdgData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG.$inferInsert;
+type EmpBanmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM.$inferInsert;
+type EmpBinmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM.$inferInsert;
+type EmpCompnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM.$inferInsert;
+type EmpCorpnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM.$inferInsert;
+type EmpCountrynmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM.$inferInsert;
+type EmpDeptcodeData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE.$inferInsert;
+type EmpDeptcodePccdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM.$inferInsert;
+type EmpDeptnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM.$inferInsert;
+type EmpDhjobgdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM.$inferInsert;
+type EmpGjobdutynmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM.$inferInsert;
+type EmpGjobgrdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM.$inferInsert;
+type EmpGjobgrdtypeData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE.$inferInsert;
+type EmpGjobnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM.$inferInsert;
+type EmpGnnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM.$inferInsert;
+type EmpJobdutynmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM.$inferInsert;
+type EmpJobgrdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM.$inferInsert;
+type EmpJobnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM.$inferInsert;
+type EmpKtlnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM.$inferInsert;
+type EmpOktlnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM.$inferInsert;
+type EmpOrgbicdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM.$inferInsert;
+type EmpOrgcompnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM.$inferInsert;
+type EmpOrgcorpnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM.$inferInsert;
+type EmpOrgdeptnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM.$inferInsert;
+type EmpOrgpdepnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM.$inferInsert;
+type EmpPdeptnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM.$inferInsert;
+
+// XML 구조 타입
+type EmpMdgXML = ToXMLFields<Omit<EmpMdgData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ BANM?: ToXMLFields<Omit<EmpBanmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ BINM?: ToXMLFields<Omit<EmpBinmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ COMPNM?: ToXMLFields<Omit<EmpCompnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ CORPNM?: ToXMLFields<Omit<EmpCorpnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ COUNTRYNM?: ToXMLFields<Omit<EmpCountrynmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ DEPTCODE?: ToXMLFields<Omit<EmpDeptcodeData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ DEPTCODE_PCCDNM?: ToXMLFields<Omit<EmpDeptcodePccdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ DEPTNM?: ToXMLFields<Omit<EmpDeptnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ DHJOBGDNM?: ToXMLFields<Omit<EmpDhjobgdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ GJOBDUTYNM?: ToXMLFields<Omit<EmpGjobdutynmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ GJOBGRDNM?: ToXMLFields<Omit<EmpGjobgrdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ GJOBGRDTYPE?: ToXMLFields<Omit<EmpGjobgrdtypeData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ GJOBNM?: ToXMLFields<Omit<EmpGjobnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ GNNM?: ToXMLFields<Omit<EmpGnnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ JOBDUTYNM?: ToXMLFields<Omit<EmpJobdutynmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ JOBGRDNM?: ToXMLFields<Omit<EmpJobgrdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ JOBNM?: ToXMLFields<Omit<EmpJobnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ KTLNM?: ToXMLFields<Omit<EmpKtlnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ OKTLNM?: ToXMLFields<Omit<EmpOktlnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ ORGBICDNM?: ToXMLFields<Omit<EmpOrgbicdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ ORGCOMPNM?: ToXMLFields<Omit<EmpOrgcompnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ ORGCORPNM?: ToXMLFields<Omit<EmpOrgcorpnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ ORGDEPTNM?: ToXMLFields<Omit<EmpOrgdeptnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ ORGPDEPNM?: ToXMLFields<Omit<EmpOrgpdepnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+ PDEPTNM?: ToXMLFields<Omit<EmpPdeptnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[];
+};
+
+// 처리된 데이터 구조
+interface ProcessedEmployeeData {
+ employee: EmpMdgData;
+ banm: EmpBanmData[];
+ binm: EmpBinmData[];
+ compnm: EmpCompnmData[];
+ corpnm: EmpCorpnmData[];
+ countrynm: EmpCountrynmData[];
+ deptcode: EmpDeptcodeData[];
+ deptcodePccdnm: EmpDeptcodePccdnmData[];
+ deptnm: EmpDeptnmData[];
+ dhjobgdnm: EmpDhjobgdnmData[];
+ gjobdutynm: EmpGjobdutynmData[];
+ gjobgrdnm: EmpGjobgrdnmData[];
+ gjobgrdtype: EmpGjobgrdtypeData[];
+ gjobnm: EmpGjobnmData[];
+ gnnm: EmpGnnmData[];
+ jobdutynm: EmpJobdutynmData[];
+ jobgrdnm: EmpJobgrdnmData[];
+ jobnm: EmpJobnmData[];
+ ktlnm: EmpKtlnmData[];
+ oktlnm: EmpOktlnmData[];
+ orgbicdnm: EmpOrgbicdnmData[];
+ orgcompnm: EmpOrgcompnmData[];
+ orgcorpnm: EmpOrgcorpnmData[];
+ orgdeptnm: EmpOrgdeptnmData[];
+ orgpdepnm: EmpOrgpdepnmData[];
+ pdeptnm: EmpPdeptnmData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_EMPLOYEE_MASTER',
+ body,
+ async () => {
+ console.log('🚀 EMPLOYEE_MASTER 수신 시작, 데이터 길이:', body.length);
+
+ const parser = createXMLParser([
+ 'CMCTB_EMP_MDG', 'BANM', 'BINM', 'COMPNM', 'CORPNM', 'COUNTRYNM', 'DEPTCODE',
+ 'DEPTCODE_PCCDNM', 'DEPTNM', 'DHJOBGDNM', 'GJOBDUTYNM', 'GJOBGRDNM', 'GJOBGRDTYPE',
+ 'GJOBNM', 'GNNM', 'JOBDUTYNM', 'JOBGRDNM', 'JOBNM', 'KTLNM', 'OKTLNM', 'ORGBICDNM',
+ 'ORGCOMPNM', 'ORGCORPNM', 'ORGDEPTNM', 'ORGPDEPNM', 'PDEPTNM'
+ ]);
+
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_EMPLOYEE_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_EMPLOYEE_MASTERReq or CMCTB_EMP_MDG data');
+ }
+
+ console.log('Validating request data structure:',
+ `CMCTB_EMP_MDG: ${requestData.CMCTB_EMP_MDG ? 'found' : 'not found'}`
+ );
+
+ if (requestData.CMCTB_EMP_MDG && Array.isArray(requestData.CMCTB_EMP_MDG) && requestData.CMCTB_EMP_MDG.length > 0) {
+ console.log('First CMCTB_EMP_MDG sample:', JSON.stringify(requestData.CMCTB_EMP_MDG[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedEmployees = transformEmployeeData(requestData.CMCTB_EMP_MDG as EmpMdgXML[] || []);
+
+ // 필수 필드 검증
+ for (const employeeData of processedEmployees) {
+ if (!employeeData.employee.EMPID) {
+ throw new Error('Missing required field: EMPID in employee');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedEmployees);
+
+ console.log(`🎉 처리 완료: ${processedEmployees.length}개 사원 데이터`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_EMPLOYEE_MASTER/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformEmployeeData(empData: EmpMdgXML[]): ProcessedEmployeeData[] {
+ if (!empData || !Array.isArray(empData)) {
+ return [];
+ }
+
+ return empData.map(emp => {
+ const empId = emp.EMPID || '';
+ const fkData = { EMPID: empId };
+
+ // 메인 Employee 데이터 변환
+ const employee = convertXMLToDBData<EmpMdgData>(
+ emp as Record<string, string | undefined>,
+ ['EMPID'],
+ fkData
+ );
+
+ // 하위 테이블 데이터 변환
+ const banm = processNestedArray(emp.BANM, (item) => convertXMLToDBData<EmpBanmData>(item, ['SPRAS'], fkData), fkData);
+ const binm = processNestedArray(emp.BINM, (item) => convertXMLToDBData<EmpBinmData>(item, ['SPRAS'], fkData), fkData);
+ const compnm = processNestedArray(emp.COMPNM, (item) => convertXMLToDBData<EmpCompnmData>(item, ['SPRAS'], fkData), fkData);
+ const corpnm = processNestedArray(emp.CORPNM, (item) => convertXMLToDBData<EmpCorpnmData>(item, ['SPRAS'], fkData), fkData);
+ const countrynm = processNestedArray(emp.COUNTRYNM, (item) => convertXMLToDBData<EmpCountrynmData>(item, ['SPRAS'], fkData), fkData);
+ const deptcode = processNestedArray(emp.DEPTCODE, (item) => convertXMLToDBData<EmpDeptcodeData>(item, [], fkData), fkData);
+ const deptcodePccdnm = processNestedArray(emp.DEPTCODE_PCCDNM, (item) => convertXMLToDBData<EmpDeptcodePccdnmData>(item, [], fkData), fkData);
+ const deptnm = processNestedArray(emp.DEPTNM, (item) => convertXMLToDBData<EmpDeptnmData>(item, ['SPRAS'], fkData), fkData);
+ const dhjobgdnm = processNestedArray(emp.DHJOBGDNM, (item) => convertXMLToDBData<EmpDhjobgdnmData>(item, ['SPRAS'], fkData), fkData);
+ const gjobdutynm = processNestedArray(emp.GJOBDUTYNM, (item) => convertXMLToDBData<EmpGjobdutynmData>(item, ['SPRAS'], fkData), fkData);
+ const gjobgrdnm = processNestedArray(emp.GJOBGRDNM, (item) => convertXMLToDBData<EmpGjobgrdnmData>(item, ['SPRAS'], fkData), fkData);
+ const gjobgrdtype = processNestedArray(emp.GJOBGRDTYPE, (item) => convertXMLToDBData<EmpGjobgrdtypeData>(item, [], fkData), fkData);
+ const gjobnm = processNestedArray(emp.GJOBNM, (item) => convertXMLToDBData<EmpGjobnmData>(item, ['SPRAS'], fkData), fkData);
+ const gnnm = processNestedArray(emp.GNNM, (item) => convertXMLToDBData<EmpGnnmData>(item, ['SPRAS'], fkData), fkData);
+ const jobdutynm = processNestedArray(emp.JOBDUTYNM, (item) => convertXMLToDBData<EmpJobdutynmData>(item, ['SPRAS'], fkData), fkData);
+ const jobgrdnm = processNestedArray(emp.JOBGRDNM, (item) => convertXMLToDBData<EmpJobgrdnmData>(item, ['SPRAS'], fkData), fkData);
+ const jobnm = processNestedArray(emp.JOBNM, (item) => convertXMLToDBData<EmpJobnmData>(item, ['SPRAS'], fkData), fkData);
+ const ktlnm = processNestedArray(emp.KTLNM, (item) => convertXMLToDBData<EmpKtlnmData>(item, ['SPRAS'], fkData), fkData);
+ const oktlnm = processNestedArray(emp.OKTLNM, (item) => convertXMLToDBData<EmpOktlnmData>(item, ['SPRAS'], fkData), fkData);
+ const orgbicdnm = processNestedArray(emp.ORGBICDNM, (item) => convertXMLToDBData<EmpOrgbicdnmData>(item, ['SPRAS'], fkData), fkData);
+ const orgcompnm = processNestedArray(emp.ORGCOMPNM, (item) => convertXMLToDBData<EmpOrgcompnmData>(item, ['SPRAS'], fkData), fkData);
+ const orgcorpnm = processNestedArray(emp.ORGCORPNM, (item) => convertXMLToDBData<EmpOrgcorpnmData>(item, ['SPRAS'], fkData), fkData);
+ const orgdeptnm = processNestedArray(emp.ORGDEPTNM, (item) => convertXMLToDBData<EmpOrgdeptnmData>(item, ['SPRAS'], fkData), fkData);
+ const orgpdepnm = processNestedArray(emp.ORGPDEPNM, (item) => convertXMLToDBData<EmpOrgpdepnmData>(item, ['SPRAS'], fkData), fkData);
+ const pdeptnm = processNestedArray(emp.PDEPTNM, (item) => convertXMLToDBData<EmpPdeptnmData>(item, [], fkData), fkData);
+
+ return {
+ employee,
+ banm,
+ binm,
+ compnm,
+ corpnm,
+ countrynm,
+ deptcode,
+ deptcodePccdnm,
+ deptnm,
+ dhjobgdnm,
+ gjobdutynm,
+ gjobgrdnm,
+ gjobgrdtype,
+ gjobnm,
+ gnnm,
+ jobdutynm,
+ jobgrdnm,
+ jobnm,
+ ktlnm,
+ oktlnm,
+ orgbicdnm,
+ orgcompnm,
+ orgcorpnm,
+ orgdeptnm,
+ orgpdepnm,
+ pdeptnm
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedEmployees: ProcessedEmployeeData[]) {
+ console.log(`데이터베이스 저장 시작: ${processedEmployees.length}개 사원 데이터`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const employeeData of processedEmployees) {
+ const { employee, banm, binm, compnm, corpnm, countrynm, deptcode, deptcodePccdnm,
+ deptnm, dhjobgdnm, gjobdutynm, gjobgrdnm, gjobgrdtype, gjobnm, gnnm,
+ jobdutynm, jobgrdnm, jobnm, ktlnm, oktlnm, orgbicdnm, orgcompnm,
+ orgcorpnm, orgdeptnm, orgpdepnm, pdeptnm } = employeeData;
+
+ if (!employee.EMPID) {
+ console.warn('사원번호(EMPID)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // 1. CMCTB_EMP_MDG 테이블 Upsert (최상위 테이블)
+ await tx.insert(EMPLOYEE_MASTER_CMCTB_EMP_MDG)
+ .values(employee)
+ .onConflictDoUpdate({
+ target: EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID,
+ set: {
+ ...employee,
+ updatedAt: new Date(),
+ }
+ });
+
+ // 2. 하위 테이블들 처리 - FK 기준으로 전체 삭제 후 재삽입
+ await Promise.all([
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM, banm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM, binm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM, compnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM, corpnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM, countrynm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE, deptcode, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM, deptcodePccdnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM, deptnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM, dhjobgdnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM, gjobdutynm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM, gjobgrdnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE, gjobgrdtype, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM, gjobnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM, gnnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM, jobdutynm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM, jobgrdnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM, jobnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM, ktlnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM, oktlnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM, orgbicdnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM, orgcompnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM, orgcorpnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM, orgdeptnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM, orgpdepnm, 'EMPID', employee.EMPID),
+ replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM, pdeptnm, 'EMPID', employee.EMPID)
+ ]);
+ }
+ });
+
+ console.log(`✅ 데이터베이스 저장 완료: ${processedEmployees.length}개 사원`);
+ return true;
+ } catch (error) {
+ console.error('❌ 데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+} \ No newline at end of file
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/route.ts
new file mode 100644
index 00000000..a265fea2
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/route.ts
@@ -0,0 +1,182 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF,
+ EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type EmpRefData = typeof EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF.$inferInsert;
+type EmpRefNameData = typeof EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME.$inferInsert;
+
+// XML에서 받는 데이터 구조
+type EmpRefXML = ToXMLFields<Omit<EmpRefData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ NAME?: NameXML[];
+};
+
+type NameXML = ToXMLFields<Omit<EmpRefNameData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조
+interface ProcessedEmployeeReferenceData {
+ empRef: EmpRefData;
+ names: EmpRefNameData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER',
+ body,
+ async () => {
+ console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : ''));
+
+ const parser = createXMLParser(['CMCTB_EMP_REF_MDG_IF', 'NAME']);
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTERReq or CMCTB_EMP_REF_MDG_IF data');
+ }
+
+ console.log('Validating request data structure:',
+ `CMCTB_EMP_REF_MDG_IF: ${requestData.CMCTB_EMP_REF_MDG_IF ? 'found' : 'not found'}`
+ );
+
+ if (requestData.CMCTB_EMP_REF_MDG_IF && Array.isArray(requestData.CMCTB_EMP_REF_MDG_IF) && requestData.CMCTB_EMP_REF_MDG_IF.length > 0) {
+ console.log('First CMCTB_EMP_REF_MDG_IF sample:', JSON.stringify(requestData.CMCTB_EMP_REF_MDG_IF[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedEmpRefs = transformEmpRefData(requestData.CMCTB_EMP_REF_MDG_IF as EmpRefXML[] || []);
+
+ // 필수 필드 검증
+ for (const empRefData of processedEmpRefs) {
+ if (!empRefData.empRef.GRPCD) {
+ throw new Error('Missing required field: GRPCD in employee reference');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedEmpRefs);
+
+ console.log(`Processed ${processedEmpRefs.length} employee references`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformEmpRefData(empRefData: EmpRefXML[]): ProcessedEmployeeReferenceData[] {
+ if (!empRefData || !Array.isArray(empRefData)) {
+ return [];
+ }
+
+ return empRefData.map(empRef => {
+ // 메인 Employee Reference 데이터 변환
+ const empRefRecord = convertXMLToDBData<EmpRefData>(
+ empRef as Record<string, string | undefined>,
+ ['GRPCD', 'CORPCD', 'MAINCD']
+ );
+
+ // 필수 필드 보정
+ if (!empRefRecord.GRPCD) {
+ empRefRecord.GRPCD = '';
+ }
+
+ // FK 데이터 준비
+ const fkData = { GRPCD: empRef.GRPCD || '' };
+
+ // Name 데이터 변환
+ const names = processNestedArray(
+ empRef.NAME,
+ (name) => convertXMLToDBData<EmpRefNameData>(name, ['SPRAS'], fkData),
+ fkData
+ );
+
+ return {
+ empRef: empRefRecord,
+ names
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedEmpRefs: ProcessedEmployeeReferenceData[]) {
+ console.log(`데이터베이스 저장 함수가 호출됨. ${processedEmpRefs.length}개의 직원 참조 데이터 수신.`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const empRefData of processedEmpRefs) {
+ const { empRef, names } = empRefData;
+
+ if (!empRef.GRPCD) {
+ console.warn('그룹코드(GRPCD)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // 1. Employee Reference 테이블 Upsert (최상위 테이블)
+ await tx.insert(EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF)
+ .values(empRef)
+ .onConflictDoUpdate({
+ target: EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF.GRPCD,
+ set: {
+ ...empRef,
+ updatedAt: new Date(),
+ }
+ });
+
+ // 2. NAME 테이블 처리 - FK 기준으로 전체 삭제 후 재삽입
+ await replaceSubTableData(
+ tx,
+ EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME,
+ names,
+ 'GRPCD',
+ empRef.GRPCD
+ );
+ }
+ });
+
+ console.log(`${processedEmpRefs.length}개의 직원 참조 데이터 처리 완료.`);
+ return true;
+ } catch (error) {
+ console.error('데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+} \ No newline at end of file
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EQUP_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EQUP_MASTER/route.ts
new file mode 100644
index 00000000..358e9c62
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EQUP_MASTER/route.ts
@@ -0,0 +1,271 @@
+//equp_master
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ EQUP_MASTER_MATL,
+ EQUP_MASTER_MATL_DESC,
+ EQUP_MASTER_MATL_PLNT,
+ EQUP_MASTER_MATL_UNIT,
+ EQUP_MASTER_MATL_CLASSASGN,
+ EQUP_MASTER_MATL_CHARASGN
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론 (Insert와 XML을 통합)
+type MatlData = typeof EQUP_MASTER_MATL.$inferInsert;
+type MatlDescData = typeof EQUP_MASTER_MATL_DESC.$inferInsert;
+type MatlPlntData = typeof EQUP_MASTER_MATL_PLNT.$inferInsert;
+type MatlUnitData = typeof EQUP_MASTER_MATL_UNIT.$inferInsert;
+type MatlClassAsgnData = typeof EQUP_MASTER_MATL_CLASSASGN.$inferInsert;
+type MatlCharAsgnData = typeof EQUP_MASTER_MATL_CHARASGN.$inferInsert;
+
+// XML에서 받는 데이터 구조 (스키마와 동일한 구조, string 타입)
+type MatlXML = ToXMLFields<Omit<MatlData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ DESC?: DescXML[];
+ PLNT?: PlntXML[];
+ UNIT?: UnitXML[];
+ CLASSASGN?: ClassAsgnXML[];
+ CHARASGN?: CharAsgnXML[];
+};
+
+type DescXML = ToXMLFields<Omit<MatlDescData, 'id' | 'createdAt' | 'updatedAt'>>;
+type PlntXML = ToXMLFields<Omit<MatlPlntData, 'id' | 'createdAt' | 'updatedAt'>>;
+type UnitXML = ToXMLFields<Omit<MatlUnitData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ClassAsgnXML = ToXMLFields<Omit<MatlClassAsgnData, 'id' | 'createdAt' | 'updatedAt'>>;
+type CharAsgnXML = ToXMLFields<Omit<MatlCharAsgnData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조 (Insert와 동일)
+interface ProcessedMaterialData {
+ material: MatlData;
+ descriptions: MatlDescData[];
+ plants: MatlPlntData[];
+ units: MatlUnitData[];
+ classAssignments: MatlClassAsgnData[];
+ characteristicAssignments: MatlCharAsgnData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_EQUP_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_EQUP_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_EQUP_MASTER',
+ body,
+ async () => {
+ console.log('🚀 EQUP_MASTER 수신 시작, 데이터 길이:', body.length);
+
+ const parser = createXMLParser(['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN']);
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_EQUP_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_EQUP_MASTERReq or MATL data');
+ }
+
+ console.log('Validating request data structure:',
+ `MATL: ${requestData.MATL ? 'found' : 'not found'}`
+ );
+
+ if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) {
+ console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedMaterials = transformMatlData(requestData.MATL as MatlXML[] || []);
+
+ // 필수 필드 검증
+ for (const materialData of processedMaterials) {
+ if (!materialData.material.MATNR) {
+ throw new Error('Missing required field: MATNR in material');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedMaterials);
+
+ console.log(`🎉 처리 완료: ${processedMaterials.length}개 장비 자재 데이터`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_EQUP_MASTER/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformMatlData(matlData: MatlXML[]): ProcessedMaterialData[] {
+ if (!matlData || !Array.isArray(matlData)) {
+ return [];
+ }
+
+ return matlData.map(matl => {
+ // 메인 Material 데이터 변환 (자동)
+ const material = convertXMLToDBData<MatlData>(
+ matl as Record<string, string | undefined>,
+ ['MATNR']
+ );
+
+ // 필수 필드 보정 (MATNR이 빈 문자열이면 안됨)
+ if (!material.MATNR) {
+ material.MATNR = '';
+ }
+
+ // FK 데이터 준비
+ const fkData = { MATNR: matl.MATNR || '' };
+
+ // Description 데이터 변환 (자동)
+ const descriptions = processNestedArray(
+ matl.DESC,
+ (desc) => convertXMLToDBData<MatlDescData>(desc, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Plant 데이터 변환 (자동)
+ const plants = processNestedArray(
+ matl.PLNT,
+ (plnt) => convertXMLToDBData<MatlPlntData>(plnt, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Unit 데이터 변환 (자동)
+ const units = processNestedArray(
+ matl.UNIT,
+ (unit) => convertXMLToDBData<MatlUnitData>(unit, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Class Assignment 데이터 변환 (자동)
+ const classAssignments = processNestedArray(
+ matl.CLASSASGN,
+ (cls) => convertXMLToDBData<MatlClassAsgnData>(cls, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Characteristic Assignment 데이터 변환 (자동)
+ const characteristicAssignments = processNestedArray(
+ matl.CHARASGN,
+ (char) => convertXMLToDBData<MatlCharAsgnData>(char, ['MATNR'], fkData),
+ fkData
+ );
+
+ return {
+ material,
+ descriptions,
+ plants,
+ units,
+ classAssignments,
+ characteristicAssignments
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) {
+ console.log(`Starting database save for ${processedMaterials.length} equipment materials`);
+
+ await db.transaction(async (tx) => {
+ for (const materialData of processedMaterials) {
+ const { material, descriptions, plants, units, classAssignments, characteristicAssignments } = materialData;
+
+ if (!material.MATNR) {
+ console.warn('Skipping material without MATNR');
+ continue;
+ }
+
+ console.log(`Processing MATNR: ${material.MATNR}`);
+
+ // 1. MATL 테이블 Upsert (최상위 테이블)
+ await tx.insert(EQUP_MASTER_MATL)
+ .values(material)
+ .onConflictDoUpdate({
+ target: EQUP_MASTER_MATL.MATNR,
+ set: {
+ ...material,
+ updatedAt: new Date(),
+ }
+ });
+
+ // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입 (병렬 처리)
+ await Promise.all([
+ // DESC 테이블 처리
+ replaceSubTableData(
+ tx,
+ EQUP_MASTER_MATL_DESC,
+ descriptions,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // PLNT 테이블 처리
+ replaceSubTableData(
+ tx,
+ EQUP_MASTER_MATL_PLNT,
+ plants,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // UNIT 테이블 처리
+ replaceSubTableData(
+ tx,
+ EQUP_MASTER_MATL_UNIT,
+ units,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // CLASSASGN 테이블 처리
+ replaceSubTableData(
+ tx,
+ EQUP_MASTER_MATL_CLASSASGN,
+ classAssignments,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // CHARASGN 테이블 처리
+ replaceSubTableData(
+ tx,
+ EQUP_MASTER_MATL_CHARASGN,
+ characteristicAssignments,
+ 'MATNR',
+ material.MATNR
+ )
+ ]);
+
+ console.log(`Successfully processed MATNR: ${material.MATNR}`);
+ }
+ });
+
+ console.log(`Database save completed for ${processedMaterials.length} equipment materials`);
+} \ No newline at end of file
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART/route.ts
new file mode 100644
index 00000000..3992d788
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART/route.ts
@@ -0,0 +1,274 @@
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ MATERIAL_MASTER_PART_MATL,
+ MATERIAL_MASTER_PART_MATL_DESC,
+ MATERIAL_MASTER_PART_MATL_PLNT,
+ MATERIAL_MASTER_PART_MATL_UNIT,
+ MATERIAL_MASTER_PART_MATL_CLASSASGN,
+ MATERIAL_MASTER_PART_MATL_CHARASGN
+} from "@/db/schema/MDG/mdg";
+
+import {
+ ToXMLFields,
+ SoapBodyData,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론 (Insert와 XML을 통합)
+type MatlData = typeof MATERIAL_MASTER_PART_MATL.$inferInsert;
+type MatlDescData = typeof MATERIAL_MASTER_PART_MATL_DESC.$inferInsert;
+type MatlPlntData = typeof MATERIAL_MASTER_PART_MATL_PLNT.$inferInsert;
+type MatlUnitData = typeof MATERIAL_MASTER_PART_MATL_UNIT.$inferInsert;
+type MatlClassAsgnData = typeof MATERIAL_MASTER_PART_MATL_CLASSASGN.$inferInsert;
+type MatlCharAsgnData = typeof MATERIAL_MASTER_PART_MATL_CHARASGN.$inferInsert;
+
+// XML에서 받는 데이터 구조 (스키마와 동일한 구조, string 타입)
+type MatlXML = ToXMLFields<Omit<MatlData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ DESC?: DescXML[];
+ PLNT?: PlntXML[];
+ UNIT?: UnitXML[];
+ CLASSASGN?: ClassAsgnXML[];
+ CHARASGN?: CharAsgnXML[];
+};
+
+type DescXML = ToXMLFields<Omit<MatlDescData, 'id' | 'createdAt' | 'updatedAt'>>;
+type PlntXML = ToXMLFields<Omit<MatlPlntData, 'id' | 'createdAt' | 'updatedAt'>>;
+type UnitXML = ToXMLFields<Omit<MatlUnitData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ClassAsgnXML = ToXMLFields<Omit<MatlClassAsgnData, 'id' | 'createdAt' | 'updatedAt'>>;
+type CharAsgnXML = ToXMLFields<Omit<MatlCharAsgnData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조 (Insert와 동일)
+interface ProcessedMaterialData {
+ material: MatlData;
+ descriptions: MatlDescData[];
+ plants: MatlPlntData[];
+ units: MatlUnitData[];
+ classAssignments: MatlClassAsgnData[];
+ characteristicAssignments: MatlCharAsgnData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_MATERIAL_MASTER_PART',
+ body,
+ async () => {
+ console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : ''));
+
+ const parser = createXMLParser(['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN']);
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_MATERIAL_MASTER_PARTReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_MATERIAL_MASTER_PARTReq or MATL data');
+ }
+
+ console.log('Validating request data structure:',
+ `MATL: ${requestData.MATL ? 'found' : 'not found'}`
+ );
+
+ if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) {
+ console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedMaterials = transformMatlData(requestData.MATL as MatlXML[] || []);
+
+ // 필수 필드 검증
+ for (const materialData of processedMaterials) {
+ if (!materialData.material.MATNR) {
+ throw new Error('Missing required field: MATNR in material');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedMaterials);
+
+ console.log(`Processed ${processedMaterials.length} materials`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_MATERIAL_MASTER_PART/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformMatlData(matlData: MatlXML[]): ProcessedMaterialData[] {
+ if (!matlData || !Array.isArray(matlData)) {
+ return [];
+ }
+
+ return matlData.map(matl => {
+ // 메인 Material 데이터 변환 (자동)
+ const material = convertXMLToDBData<MatlData>(
+ matl as Record<string, string | undefined>,
+ ['MATNR']
+ );
+
+ // 필수 필드 보정 (MATNR이 빈 문자열이면 안됨)
+ if (!material.MATNR) {
+ material.MATNR = '';
+ }
+
+ // FK 데이터 준비
+ const fkData = { MATNR: matl.MATNR || '' };
+
+ // Description 데이터 변환 (자동)
+ const descriptions = processNestedArray(
+ matl.DESC,
+ (desc) => convertXMLToDBData<MatlDescData>(desc, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Plant 데이터 변환 (자동)
+ const plants = processNestedArray(
+ matl.PLNT,
+ (plnt) => convertXMLToDBData<MatlPlntData>(plnt, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Unit 데이터 변환 (자동)
+ const units = processNestedArray(
+ matl.UNIT,
+ (unit) => convertXMLToDBData<MatlUnitData>(unit, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Class Assignment 데이터 변환 (자동)
+ const classAssignments = processNestedArray(
+ matl.CLASSASGN,
+ (cls) => convertXMLToDBData<MatlClassAsgnData>(cls, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Characteristic Assignment 데이터 변환 (자동)
+ const characteristicAssignments = processNestedArray(
+ matl.CHARASGN,
+ (char) => convertXMLToDBData<MatlCharAsgnData>(char, ['MATNR'], fkData),
+ fkData
+ );
+
+ return {
+ material,
+ descriptions,
+ plants,
+ units,
+ classAssignments,
+ characteristicAssignments
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) {
+ console.log(`데이터베이스 저장 함수가 호출됨. ${processedMaterials.length}개의 자재 데이터 수신.`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const materialData of processedMaterials) {
+ const { material, descriptions, plants, units, classAssignments, characteristicAssignments } = materialData;
+
+ if (!material.MATNR) {
+ console.warn('자재번호(MATNR)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // 1. MATL 테이블 Upsert (최상위 테이블)
+ await tx.insert(MATERIAL_MASTER_PART_MATL)
+ .values(material)
+ .onConflictDoUpdate({
+ target: MATERIAL_MASTER_PART_MATL.MATNR,
+ set: {
+ ...material,
+ updatedAt: new Date(),
+ }
+ });
+
+ // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입
+ await Promise.all([
+ // DESC 테이블 처리
+ replaceSubTableData(
+ tx,
+ MATERIAL_MASTER_PART_MATL_DESC,
+ descriptions,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // PLNT 테이블 처리
+ replaceSubTableData(
+ tx,
+ MATERIAL_MASTER_PART_MATL_PLNT,
+ plants,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // UNIT 테이블 처리
+ replaceSubTableData(
+ tx,
+ MATERIAL_MASTER_PART_MATL_UNIT,
+ units,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // CLASSASGN 테이블 처리
+ replaceSubTableData(
+ tx,
+ MATERIAL_MASTER_PART_MATL_CLASSASGN,
+ classAssignments,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // CHARASGN 테이블 처리
+ replaceSubTableData(
+ tx,
+ MATERIAL_MASTER_PART_MATL_CHARASGN,
+ characteristicAssignments,
+ 'MATNR',
+ material.MATNR
+ )
+ ]);
+ }
+ });
+
+ console.log(`${processedMaterials.length}개의 자재 데이터 처리 완료.`);
+ return true;
+ } catch (error) {
+ console.error('데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+}
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/route.ts
new file mode 100644
index 00000000..ecbc23bc
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/route.ts
@@ -0,0 +1,150 @@
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import { MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE } from "@/db/schema/MDG/mdg";
+import {
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ createErrorResponse,
+ createSuccessResponse,
+ ToXMLFields,
+ withSoapLogging,
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type CMCTBMatBseData = typeof MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE.$inferInsert;
+
+// XML에서 받는 데이터 구조
+type CMCTBMatBseXML = ToXMLFields<Omit<CMCTBMatBseData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조
+interface ProcessedMaterialData {
+ materialData: CMCTBMatBseData;
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN',
+ body,
+ async () => {
+ console.log('🚀 MATERIAL_MASTER_PART_RETURN 수신 시작, 데이터 길이:', body.length);
+
+ const parser = createXMLParser(['CMCTB_MAT_BSE']);
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURNReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURNReq or CMCTB_MAT_BSE data');
+ }
+
+ console.log('Validating request data structure:',
+ `CMCTB_MAT_BSE: ${requestData.CMCTB_MAT_BSE ? 'found' : 'not found'}`
+ );
+
+ if (requestData.CMCTB_MAT_BSE && Array.isArray(requestData.CMCTB_MAT_BSE) && requestData.CMCTB_MAT_BSE.length > 0) {
+ console.log('First CMCTB_MAT_BSE sample:', JSON.stringify(requestData.CMCTB_MAT_BSE[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedMaterials = transformMaterialData(requestData.CMCTB_MAT_BSE as CMCTBMatBseXML[] || []);
+
+ // 필수 필드 검증
+ for (const materialData of processedMaterials) {
+ if (!materialData.materialData.MAT_CD) {
+ throw new Error('Missing required field: MAT_CD in material');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedMaterials);
+
+ console.log(`🎉 처리 완료: ${processedMaterials.length}개 자재 데이터`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformMaterialData(materialData: CMCTBMatBseXML[]): ProcessedMaterialData[] {
+ if (!materialData || !Array.isArray(materialData)) {
+ return [];
+ }
+
+ return materialData.map(material => {
+ // 메인 Material 데이터 변환
+ const materialConverted = convertXMLToDBData<CMCTBMatBseData>(
+ material as Record<string, string | undefined>,
+ ['MAT_CD']
+ );
+
+ // 필수 필드 보정
+ if (!materialConverted.MAT_CD) {
+ materialConverted.MAT_CD = '';
+ }
+
+ return {
+ materialData: materialConverted
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) {
+ console.log(`데이터베이스 저장 시작: ${processedMaterials.length}개 자재 데이터`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const materialData of processedMaterials) {
+ const { materialData: material } = materialData;
+
+ if (!material.MAT_CD) {
+ console.warn('자재코드(MAT_CD)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE 테이블 Upsert
+ await tx.insert(MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE)
+ .values(material)
+ .onConflictDoUpdate({
+ target: MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE.MAT_CD,
+ set: {
+ ...material,
+ updatedAt: new Date(),
+ }
+ });
+ }
+ });
+
+ console.log(`✅ 데이터베이스 저장 완료: ${processedMaterials.length}개 자료`);
+ return true;
+ } catch (error) {
+ console.error('❌ 데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+}
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts
index 6c73cf08..cb8de491 100644
--- a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts
@@ -1,927 +1,272 @@
-import { XMLParser } from "fast-xml-parser";
-import { readFileSync } from "fs";
-import { NextRequest, NextResponse } from "next/server";
-import { join } from "path";
+import { NextRequest } from "next/server";
import db from "@/db/db";
-import { MATL, DESC, PLNT, UNIT, CLASSASGN, CHARASGN } from "@/db/schema/MDG/modelMaster";
-import { eq } from "drizzle-orm";
-
-// 요청 데이터 인터페이스 정의
-interface RequestData {
- materials: Material[];
-}
-
-// 애플리케이션 내부 데이터 모델 (XML 필드와 1:1 매핑)
-interface Material {
- matnr?: string; // Material Number
- mbrsh?: string; // Industry Sector
- mtart?: string; // Material Type
- lvorm?: string; // Deletion flag
- meins?: string; // Base Unit of Measure
- matkl?: string; // Material Group
- bismt?: string; // Old Material Number
- spart?: string; // Division
- prdha?: string; // Product Hierarchy
- mstae?: string; // Cross-plant Material Status
- mstde?: string; // Cross-distribution-chain Material Status
- brgew?: string; // Gross Weight
- gewei?: string; // Weight Unit
- ntgew?: string; // Net Weight
- volum?: string; // Volume
- voleh?: string; // Volume Unit
- groes?: string; // Size/dimensions
- laeng?: string; // Length
- breit?: string; // Width
- hoehe?: string; // Height
- meabm?: string; // Unit of Dimension
- magrv?: string; // Material Group: Packaging Materials
- vhart?: string; // Packaging Material Type
- zzname?: string; // Material Name (Custom)
- zzspec?: string; // Material Specification (Custom)
- zzdesc?: string; // Material Description (Custom)
- zzmmtyp?: string; // Material Type (Custom)
- zzregdt?: string; // Registration Date (Custom)
- zzregtm?: string; // Registration Time (Custom)
- zzregus?: string; // Registration User (Custom)
- zzappdt?: string; // Approval Date (Custom)
- zzapptm?: string; // Approval Time (Custom)
- zzappus?: string; // Approval User (Custom)
- zzlamdt?: string; // Last Modified Date (Custom)
- zzlamtm?: string; // Last Modified Time (Custom)
- zzlamus?: string; // Last Modified User (Custom)
- zzprflg?: string; // Process Flag (Custom)
- zzdokar?: string; // Document Type (Custom)
- zzdoknr?: string; // Document Number (Custom)
- zzdoktl?: string; // Document Part (Custom)
- zzdokvr?: string; // Document Version (Custom)
- descriptions?: Description[];
- plants?: Plant[];
- units?: Unit[];
- classAssignments?: ClassAssignment[];
- characteristicAssignments?: CharacteristicAssignment[];
-}
-
-interface Description {
- matnr?: string; // Material Number
- spras?: string; // Language Key
- maktx?: string; // Material Description
-}
-
-interface Plant {
- matnr?: string; // Material Number
- werks?: string; // Plant
- lvorm?: string; // Deletion Flag
- mmsta?: string; // Plant-specific Material Status
- mmstd?: string; // Plant-specific Material Status Valid From
- zzmtarp?: string; // Custom Field
- zzregdt?: string; // Registration Date (Custom)
- zzregtm?: string; // Registration Time (Custom)
- zzregus?: string; // Registration User (Custom)
- zzlamdt?: string; // Last Modified Date (Custom)
- zzlamtm?: string; // Last Modified Time (Custom)
- zzlamus?: string; // Last Modified User (Custom)
- zzprflg?: string; // Process Flag (Custom)
-}
-
-interface Unit {
- matnr?: string; // Material Number
- meinh?: string; // Unit of Measure
- umrez?: string; // Numerator for Conversion to Base UoM
- umren?: string; // Denominator for Conversion to Base UoM
- laeng?: string; // Length
- breit?: string; // Width
- hoehe?: string; // Height
- meabm?: string; // Unit of Dimension
- volum?: string; // Volume
- voleh?: string; // Volume Unit
- brgew?: string; // Gross Weight
- gewei?: string; // Weight Unit
-}
-
-interface ClassAssignment {
- matnr?: string; // Material Number
- class?: string; // Class
- klart?: string; // Class Type
-}
-
-interface CharacteristicAssignment {
- matnr?: string; // Material Number
- class?: string; // Class
- klart?: string; // Class Type
- atnam?: string; // Characteristic Name
- atwrt?: string; // Characteristic Value
- atflv?: string; // Value From
- atawe?: string; // Value To
- atflb?: string; // Description
- ataw1?: string; // Additional Value
- atbez?: string; // Characteristic Description
- atwtb?: string; // Characteristic Value Description
-}
-
-// SOAP XML 데이터 구조 인터페이스
-// XML 기준 대문자 필드명 사용
-interface MatlXML {
- MATNR?: string;
- MBRSH?: string;
- MTART?: string;
- LVORM?: string;
- MEINS?: string;
- MATKL?: string;
- BISMT?: string;
- SPART?: string;
- PRDHA?: string;
- MSTAE?: string;
- MSTDE?: string;
- BRGEW?: string;
- GEWEI?: string;
- NTGEW?: string;
- VOLUM?: string;
- VOLEH?: string;
- GROES?: string;
- LAENG?: string;
- BREIT?: string;
- HOEHE?: string;
- MEABM?: string;
- MAGRV?: string;
- VHART?: string;
- ZZNAME?: string;
- ZZSPEC?: string;
- ZZDESC?: string;
- ZZMMTYP?: string;
- ZZREGDT?: string;
- ZZREGTM?: string;
- ZZREGUS?: string;
- ZZAPPDT?: string;
- ZZAPPTM?: string;
- ZZAPPUS?: string;
- ZZLAMDT?: string;
- ZZLAMTM?: string;
- ZZLAMUS?: string;
- ZZPRFLG?: string;
- ZZDOKAR?: string;
- ZZDOKNR?: string;
- ZZDOKTL?: string;
- ZZDOKVR?: string;
+import {
+ MODEL_MASTER_MATL,
+ MODEL_MASTER_MATL_DESC,
+ MODEL_MASTER_MATL_PLNT,
+ MODEL_MASTER_MATL_UNIT,
+ MODEL_MASTER_MATL_CLASSASGN,
+ MODEL_MASTER_MATL_CHARASGN
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론 (Insert와 XML을 통합)
+type MatlData = typeof MODEL_MASTER_MATL.$inferInsert;
+type MatlDescData = typeof MODEL_MASTER_MATL_DESC.$inferInsert;
+type MatlPlntData = typeof MODEL_MASTER_MATL_PLNT.$inferInsert;
+type MatlUnitData = typeof MODEL_MASTER_MATL_UNIT.$inferInsert;
+type MatlClassAsgnData = typeof MODEL_MASTER_MATL_CLASSASGN.$inferInsert;
+type MatlCharAsgnData = typeof MODEL_MASTER_MATL_CHARASGN.$inferInsert;
+
+// XML에서 받는 데이터 구조 (스키마와 동일한 구조, string 타입)
+type MatlXML = ToXMLFields<Omit<MatlData, 'id' | 'createdAt' | 'updatedAt'>> & {
DESC?: DescXML[];
PLNT?: PlntXML[];
UNIT?: UnitXML[];
CLASSASGN?: ClassAsgnXML[];
CHARASGN?: CharAsgnXML[];
-}
-
-interface DescXML {
- MATNR?: string;
- SPRAS?: string;
- MAKTX?: string;
-}
-
-interface PlntXML {
- MATNR?: string;
- WERKS?: string;
- LVORM?: string;
- MMSTA?: string;
- MMSTD?: string;
- ZZMTARP?: string;
- ZZREGDT?: string;
- ZZREGTM?: string;
- ZZREGUS?: string;
- ZZLAMDT?: string;
- ZZLAMTM?: string;
- ZZLAMUS?: string;
- ZZPRFLG?: string;
-}
-
-interface UnitXML {
- MATNR?: string;
- MEINH?: string;
- UMREZ?: string;
- UMREN?: string;
- LAENG?: string;
- BREIT?: string;
- HOEHE?: string;
- MEABM?: string;
- VOLUM?: string;
- VOLEH?: string;
- BRGEW?: string;
- GEWEI?: string;
-}
-
-interface ClassAsgnXML {
- MATNR?: string;
- CLASS?: string;
- KLART?: string;
-}
-
-interface CharAsgnXML {
- MATNR?: string;
- CLASS?: string;
- KLART?: string;
- ATNAM?: string;
- ATWRT?: string;
- ATFLV?: string;
- ATAWE?: string;
- ATFLB?: string;
- ATAW1?: string;
- ATBEZ?: string;
- ATWTB?: string;
-}
-
-// SOAP Body에 대한 데이터 타입 정의
-interface SoapBodyData {
- [key: string]: unknown;
- IF_MDZ_EVCP_MODEL_MASTERReq?: Record<string, unknown>;
- 'tns:IF_MDZ_EVCP_MODEL_MASTERReq'?: Record<string, unknown>;
- 'ns1:IF_MDZ_EVCP_MODEL_MASTERReq'?: Record<string, unknown>;
- 'p0:IF_MDZ_EVCP_MODEL_MASTERReq'?: Record<string, unknown>;
- MATL?: MatlXML[];
-}
-
-function serveWsdl() {
- try {
- const wsdlPath = join(process.cwd(), 'public', 'wsdl', 'IF_MDZ_EVCP_MODEL_MASTER.wsdl');
- const wsdlContent = readFileSync(wsdlPath, 'utf-8');
-
- return new NextResponse(wsdlContent, {
- headers: {
- 'Content-Type': 'text/xml; charset=utf-8',
- },
- });
- } catch (error) {
- console.error('Failed to read WSDL file:', error);
- return new NextResponse('WSDL file not found', { status: 404 });
- }
+};
+
+type DescXML = ToXMLFields<Omit<MatlDescData, 'id' | 'createdAt' | 'updatedAt'>>;
+type PlntXML = ToXMLFields<Omit<MatlPlntData, 'id' | 'createdAt' | 'updatedAt'>>;
+type UnitXML = ToXMLFields<Omit<MatlUnitData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ClassAsgnXML = ToXMLFields<Omit<MatlClassAsgnData, 'id' | 'createdAt' | 'updatedAt'>>;
+type CharAsgnXML = ToXMLFields<Omit<MatlCharAsgnData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조 (Insert와 동일)
+interface ProcessedMaterialData {
+ material: MatlData;
+ descriptions: MatlDescData[];
+ plants: MatlPlntData[];
+ units: MatlUnitData[];
+ classAssignments: MatlClassAsgnData[];
+ characteristicAssignments: MatlCharAsgnData[];
}
export async function GET(request: NextRequest) {
- const url = new URL(request.url);
- if (url.searchParams.has('wsdl')) {
- return serveWsdl();
- }
-
- return new NextResponse('Method Not Allowed', { status: 405 });
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_MODEL_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
}
-// WSDL 기반의 SOAP 요청 (데이터 전송건) 처리하기 (HTTP)
export async function POST(request: NextRequest) {
- const url = new URL(request.url);
- if (url.searchParams.has('wsdl')) {
- return serveWsdl();
- }
-
- try {
- // 요청 본문 (MDZ 데이터)를 가져오기
- const body = await request.text();
-
- // 요청 로깅
- console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : ''));
-
- // XML 파서 설정하기
- const parser = new XMLParser({
- ignoreAttributes: false,
- attributeNamePrefix: '@_',
- parseAttributeValue: false, // 값 조작 방지
- trimValues: true,
- isArray: (name: string) => {
- return ['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN'].includes(name);
- },
- parseTagValue: false, // 값 조작 방지
- allowBooleanAttributes: true,
- });
-
- // XML 파싱하기
- const parsedData = parser.parse(body);
-
- // 디버깅용 - 최상위 구조 확인
- console.log('XML root keys:', Object.keys(parsedData));
-
- // 재할당 가능한 변수 선언
- let requestData = null;
-
- // 가능한 경로 확인
- if (parsedData?.['soap:Envelope']?.['soap:Body']) {
- const soapBody = parsedData['soap:Envelope']['soap:Body'];
- requestData = extractRequestData(soapBody);
- } else if (parsedData?.['SOAP:Envelope']?.['SOAP:Body']) {
- const soapBody = parsedData['SOAP:Envelope']['SOAP:Body'];
- requestData = extractRequestData(soapBody);
- } else if (parsedData?.['Envelope']?.['Body']) {
- const soapBody = parsedData['Envelope']['Body'];
- requestData = extractRequestData(soapBody);
- } else if (parsedData?.['soapenv:Envelope']?.['soapenv:Body']) {
- const soapBody = parsedData['soapenv:Envelope']['soapenv:Body'];
- requestData = extractRequestData(soapBody);
- } else if (parsedData?.['IF_MDZ_EVCP_MODEL_MASTERReq']) {
- requestData = parsedData['IF_MDZ_EVCP_MODEL_MASTERReq'];
- console.log('Found direct IF_MDZ_EVCP_MODEL_MASTERReq data');
- } else if (parsedData?.['ns1:IF_MDZ_EVCP_MODEL_MASTERReq']) {
- requestData = parsedData['ns1:IF_MDZ_EVCP_MODEL_MASTERReq'];
- console.log('Found direct ns1:IF_MDZ_EVCP_MODEL_MASTERReq data');
- } else if (parsedData?.['p0:IF_MDZ_EVCP_MODEL_MASTERReq']) {
- requestData = parsedData['p0:IF_MDZ_EVCP_MODEL_MASTERReq'];
- console.log('Found direct p0:IF_MDZ_EVCP_MODEL_MASTERReq data');
- } else {
- // 루트 레벨에서 MATL을 직접 찾기
- if (parsedData?.MATL) {
- requestData = parsedData;
- console.log('Found MATL data at root level');
- } else {
- // 다른 모든 키에 대해 확인
- for (const key of Object.keys(parsedData)) {
- const value = parsedData[key];
- // 데이터 구조가 맞는지 확인 (MATL이 있는지)
- if (value && value.MATL) {
- requestData = value;
- console.log(`Found data in root key: ${key}`);
- break;
- }
-
- // 키 이름에 IF_MDZ_EVCP_MODEL_MASTERReq가 포함되어 있는지 확인
- if (key.includes('IF_MDZ_EVCP_MODEL_MASTERReq')) {
- requestData = value;
- console.log(`Found data in root key with matching name: ${key}`);
- break;
- }
- }
- }
- }
-
- if (!requestData) {
- console.error('Could not find valid request data in the received payload');
- console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
- throw new Error('Missing request data - could not find IF_MDZ_EVCP_MODEL_MASTERReq or MATL data');
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_MODEL_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_MODEL_MASTER',
+ body,
+ async () => {
+ console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : ''));
+
+ const parser = createXMLParser(['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN']);
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_MODEL_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_MODEL_MASTERReq or MATL data');
+ }
+
+ console.log('Validating request data structure:',
+ `MATL: ${requestData.MATL ? 'found' : 'not found'}`
+ );
+
+ if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) {
+ console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedMaterials = transformMatlData(requestData.MATL as MatlXML[] || []);
+
+ // 필수 필드 검증
+ for (const materialData of processedMaterials) {
+ if (!materialData.material.MATNR) {
+ throw new Error('Missing required field: MATNR in material');
}
-
- // 데이터 유효성 검증
- console.log('Validating request data structure:',
- `MATL: ${requestData.MATL ? 'found' : 'not found'}`
- );
-
- // 샘플 데이터 로깅
- if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) {
- console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2));
- }
-
- // 데이터 구조 정규화 - MDZ 데이터를 우리 애플리케이션 모델로 변환
- const normalizedData: RequestData = {
- materials: transformMatlData(requestData.MATL)
- };
-
- // 기본 유효성 검사 - 필수 필드 확인
- for (const material of normalizedData.materials) {
- if (!material.matnr) {
- throw new Error('Missing required field: matnr in material');
- }
- }
-
- // 데이터베이스 저장
- await saveToDatabase(normalizedData);
-
- console.log(`Processed ${normalizedData.materials.length} materials`);
-
- // XML 응답 생성
- const xmlResponse = `<?xml version="1.0" encoding="UTF-8"?>
-<soap:Envelope
- xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
- xmlns:tns="http://60.101.108.100/api/IF_MDZ_EVCP_MODEL_MASTER/">
- <soap:Body>
- </soap:Body>
-</soap:Envelope>`;
-
- return new NextResponse(xmlResponse, {
- headers: {
- 'Content-Type': 'text/xml; charset=utf-8',
- },
- });
- } catch (error: unknown) {
- console.error('API Error:', error);
-
- // XML 에러 응답
- const errorResponse = `<?xml version="1.0" encoding="UTF-8"?>
-<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
- <soap:Body>
- <soap:Fault>
- <faultcode>soap:Server</faultcode>
- <faultstring>${error instanceof Error ? ('[from eVCP]: ' + error.message) : 'Unknown error'}</faultstring>
- </soap:Fault>
- </soap:Body>
-</soap:Envelope>`;
-
- return new NextResponse(errorResponse, {
- status: 500,
- headers: {
- 'Content-Type': 'text/xml; charset=utf-8',
- },
- });
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedMaterials);
+
+ console.log(`Processed ${processedMaterials.length} materials`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_MODEL_MASTER/');
}
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
}
-// SOAP Body나 루트에서 요청 데이터 추출하는 헬퍼 함수
-function extractRequestData(data: SoapBodyData): Record<string, unknown> | null {
- if (!data) return null;
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformMatlData(matlData: MatlXML[]): ProcessedMaterialData[] {
+ if (!matlData || !Array.isArray(matlData)) {
+ return [];
+ }
+
+ return matlData.map(matl => {
+ // 메인 Material 데이터 변환 (자동)
+ const material = convertXMLToDBData<MatlData>(
+ matl as Record<string, string | undefined>,
+ ['MATNR']
+ );
- if (data['IF_MDZ_EVCP_MODEL_MASTERReq']) {
- return data['IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>;
- } else if (data['tns:IF_MDZ_EVCP_MODEL_MASTERReq']) {
- return data['tns:IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>;
- } else if (data['ns1:IF_MDZ_EVCP_MODEL_MASTERReq']) {
- return data['ns1:IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>;
- } else if (data['p0:IF_MDZ_EVCP_MODEL_MASTERReq']) {
- return data['p0:IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>;
+ // 필수 필드 보정 (MATNR이 빈 문자열이면 안됨)
+ if (!material.MATNR) {
+ material.MATNR = '';
}
- // 다른 키 검색
- for (const key of Object.keys(data)) {
- if (key.includes('IF_MDZ_EVCP_MODEL_MASTERReq')) {
- return data[key] as Record<string, unknown>;
- }
- }
+ // FK 데이터 준비
+ const fkData = { MATNR: matl.MATNR || '' };
- // MATL이 직접 있는 경우
- if (data.MATL && Array.isArray(data.MATL)) {
- return data;
- }
+ // Description 데이터 변환 (자동)
+ const descriptions = processNestedArray(
+ matl.DESC,
+ (desc) => convertXMLToDBData<MatlDescData>(desc, ['MATNR'], fkData),
+ fkData
+ );
- return null;
-}
-
-// XML MATL 데이터를 내부 Material 형식으로 변환하는 함수
-function transformMatlData(matlData: MatlXML[]): Material[] {
- if (!matlData || !Array.isArray(matlData)) {
- return [];
- }
+ // Plant 데이터 변환 (자동)
+ const plants = processNestedArray(
+ matl.PLNT,
+ (plnt) => convertXMLToDBData<MatlPlntData>(plnt, ['MATNR'], fkData),
+ fkData
+ );
- return matlData.map(matl => {
- const material: Material = {
- matnr: matl.MATNR,
- mbrsh: matl.MBRSH,
- mtart: matl.MTART,
- lvorm: matl.LVORM,
- meins: matl.MEINS,
- matkl: matl.MATKL,
- bismt: matl.BISMT,
- spart: matl.SPART,
- prdha: matl.PRDHA,
- mstae: matl.MSTAE,
- mstde: matl.MSTDE,
- brgew: matl.BRGEW,
- gewei: matl.GEWEI,
- ntgew: matl.NTGEW,
- volum: matl.VOLUM,
- voleh: matl.VOLEH,
- groes: matl.GROES,
- laeng: matl.LAENG,
- breit: matl.BREIT,
- hoehe: matl.HOEHE,
- meabm: matl.MEABM,
- magrv: matl.MAGRV,
- vhart: matl.VHART,
- zzname: matl.ZZNAME,
- zzspec: matl.ZZSPEC,
- zzdesc: matl.ZZDESC,
- zzmmtyp: matl.ZZMMTYP,
- zzregdt: matl.ZZREGDT,
- zzregtm: matl.ZZREGTM,
- zzregus: matl.ZZREGUS,
- zzappdt: matl.ZZAPPDT,
- zzapptm: matl.ZZAPPTM,
- zzappus: matl.ZZAPPUS,
- zzlamdt: matl.ZZLAMDT,
- zzlamtm: matl.ZZLAMTM,
- zzlamus: matl.ZZLAMUS,
- zzprflg: matl.ZZPRFLG,
- zzdokar: matl.ZZDOKAR,
- zzdoknr: matl.ZZDOKNR,
- zzdoktl: matl.ZZDOKTL,
- zzdokvr: matl.ZZDOKVR,
- };
-
- // DESC 항목 처리
- if (matl.DESC && Array.isArray(matl.DESC)) {
- material.descriptions = matl.DESC.map((desc: DescXML) => ({
- matnr: desc.MATNR,
- spras: desc.SPRAS,
- maktx: desc.MAKTX
- }));
- }
-
- // PLNT 항목 처리
- if (matl.PLNT && Array.isArray(matl.PLNT)) {
-
- material.plants = matl.PLNT.map((plnt: PlntXML) => ({
- matnr: plnt.MATNR,
- werks: plnt.WERKS,
- lvorm: plnt.LVORM,
- mmsta: plnt.MMSTA,
- mmstd: plnt.MMSTD,
- zzmtarp: plnt.ZZMTARP,
- zzregdt: plnt.ZZREGDT,
- zzregtm: plnt.ZZREGTM,
- zzregus: plnt.ZZREGUS,
- zzlamdt: plnt.ZZLAMDT,
- zzlamtm: plnt.ZZLAMTM,
- zzlamus: plnt.ZZLAMUS,
- zzprflg: plnt.ZZPRFLG
- }));
- }
-
- // UNIT 항목 처리
- if (matl.UNIT && Array.isArray(matl.UNIT)) {
- material.units = matl.UNIT.map((unit: UnitXML) => ({
- matnr: unit.MATNR,
- meinh: unit.MEINH,
- umrez: unit.UMREZ,
- umren: unit.UMREN,
- laeng: unit.LAENG,
- breit: unit.BREIT,
- hoehe: unit.HOEHE,
- meabm: unit.MEABM,
- volum: unit.VOLUM,
- voleh: unit.VOLEH,
- brgew: unit.BRGEW,
- gewei: unit.GEWEI
- }));
- }
-
- // CLASSASGN 항목 처리
- if (matl.CLASSASGN && Array.isArray(matl.CLASSASGN)) {
- material.classAssignments = matl.CLASSASGN.map((cls: ClassAsgnXML) => ({
- matnr: cls.MATNR,
- class: cls.CLASS,
- klart: cls.KLART
- }));
- }
-
- // CHARASGN 항목 처리
- if (matl.CHARASGN && Array.isArray(matl.CHARASGN)) {
- material.characteristicAssignments = matl.CHARASGN.map((char: CharAsgnXML) => ({
- matnr: char.MATNR,
- class: char.CLASS,
- klart: char.KLART,
- atnam: char.ATNAM,
- atwrt: char.ATWRT,
- atflv: char.ATFLV,
- atawe: char.ATAWE,
- atflb: char.ATFLB,
- ataw1: char.ATAW1,
- atbez: char.ATBEZ,
- atwtb: char.ATWTB
- }));
- }
-
- return material;
- });
+ // Unit 데이터 변환 (자동)
+ const units = processNestedArray(
+ matl.UNIT,
+ (unit) => convertXMLToDBData<MatlUnitData>(unit, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Class Assignment 데이터 변환 (자동)
+ const classAssignments = processNestedArray(
+ matl.CLASSASGN,
+ (cls) => convertXMLToDBData<MatlClassAsgnData>(cls, ['MATNR'], fkData),
+ fkData
+ );
+
+ // Characteristic Assignment 데이터 변환 (자동)
+ const characteristicAssignments = processNestedArray(
+ matl.CHARASGN,
+ (char) => convertXMLToDBData<MatlCharAsgnData>(char, ['MATNR'], fkData),
+ fkData
+ );
+
+ return {
+ material,
+ descriptions,
+ plants,
+ units,
+ classAssignments,
+ characteristicAssignments
+ };
+ });
}
// 데이터베이스 저장 함수
-async function saveToDatabase(data: RequestData) {
- console.log(`데이터베이스 저장 함수가 호출됨. ${data.materials.length}개의 자재 데이터 수신.`);
-
- try {
- // 트랜잭션으로 모든 데이터 처리
- await db.transaction(async (tx) => {
- for (const material of data.materials) {
- if (!material.matnr) {
- console.warn('자재번호(MATNR)가 없는 항목 발견, 건너뜁니다.');
- continue;
- }
-
- // 1. MATL 테이블 Upsert
- await tx.insert(MATL)
- .values({
- MATNR: material.matnr,
- MBRSH: material.mbrsh || null,
- MTART: material.mtart || null,
- LVORM: material.lvorm || null,
- MEINS: material.meins || null,
- MATKL: material.matkl || null,
- BISMT: material.bismt || null,
- SPART: material.spart || null,
- PRDHA: material.prdha || null,
- MSTAE: material.mstae || null,
- MSTDE: material.mstde || null,
- BRGEW: material.brgew || null,
- GEWEI: material.gewei || null,
- NTGEW: material.ntgew || null,
- VOLUM: material.volum || null,
- VOLEH: material.voleh || null,
- GROES: material.groes || null,
- LAENG: material.laeng || null,
- BREIT: material.breit || null,
- HOEHE: material.hoehe || null,
- MEABM: material.meabm || null,
- MAGRV: material.magrv || null,
- VHART: material.vhart || null,
- ZZNAME: material.zzname || null,
- ZZSPEC: material.zzspec || null,
- ZZDESC: material.zzdesc || null,
- ZZMMTYP: material.zzmmtyp || null,
- ZZREGDT: material.zzregdt || null,
- ZZREGTM: material.zzregtm || null,
- ZZREGUS: material.zzregus || null,
- ZZAPPDT: material.zzappdt || null,
- ZZAPPTM: material.zzapptm || null,
- ZZAPPUS: material.zzappus || null,
- ZZLAMDT: material.zzlamdt || null,
- ZZLAMTM: material.zzlamtm || null,
- ZZLAMUS: material.zzlamus || null,
- ZZPRFLG: material.zzprflg || null,
- ZZDOKAR: material.zzdokar || null,
- ZZDOKNR: material.zzdoknr || null,
- ZZDOKTL: material.zzdoktl || null,
- ZZDOKVR: material.zzdokvr || null,
- })
- .onConflictDoUpdate({
- target: MATL.MATNR,
- set: {
- MBRSH: material.mbrsh || null,
- MTART: material.mtart || null,
- LVORM: material.lvorm || null,
- MEINS: material.meins || null,
- MATKL: material.matkl || null,
- BISMT: material.bismt || null,
- SPART: material.spart || null,
- PRDHA: material.prdha || null,
- MSTAE: material.mstae || null,
- MSTDE: material.mstde || null,
- BRGEW: material.brgew || null,
- GEWEI: material.gewei || null,
- NTGEW: material.ntgew || null,
- VOLUM: material.volum || null,
- VOLEH: material.voleh || null,
- GROES: material.groes || null,
- LAENG: material.laeng || null,
- BREIT: material.breit || null,
- HOEHE: material.hoehe || null,
- MEABM: material.meabm || null,
- MAGRV: material.magrv || null,
- VHART: material.vhart || null,
- ZZNAME: material.zzname || null,
- ZZSPEC: material.zzspec || null,
- ZZDESC: material.zzdesc || null,
- ZZMMTYP: material.zzmmtyp || null,
- ZZREGDT: material.zzregdt || null,
- ZZREGTM: material.zzregtm || null,
- ZZREGUS: material.zzregus || null,
- ZZAPPDT: material.zzappdt || null,
- ZZAPPTM: material.zzapptm || null,
- ZZAPPUS: material.zzappus || null,
- ZZLAMDT: material.zzlamdt || null,
- ZZLAMTM: material.zzlamtm || null,
- ZZLAMUS: material.zzlamus || null,
- ZZPRFLG: material.zzprflg || null,
- ZZDOKAR: material.zzdokar || null,
- ZZDOKNR: material.zzdoknr || null,
- ZZDOKTL: material.zzdoktl || null,
- ZZDOKVR: material.zzdokvr || null,
- updatedAt: new Date(),
- }
- });
-
- // 2. 하위 테이블 데이터 처리 (Upsert)
- // DESC 테이블 데이터 처리
- if (material.descriptions && material.descriptions.length > 0) {
- // 기존 데이터 조회 (해당 자재의 모든 설명)
- const existingDescs = await tx.select().from(DESC)
- .where(eq(DESC.MATNR, material.matnr));
-
- // 설명 데이터 매핑
- const existingDescsMap = new Map(
- existingDescs.map(desc => [`${desc.MATNR}-${desc.SPRAS}`, desc])
- );
-
- for (const desc of material.descriptions) {
- if (!desc.matnr && !material.matnr) continue; // 자재번호 필수
-
- const matnr = desc.matnr || material.matnr;
- const spras = desc.spras || '';
- const key = `${matnr}-${spras}`;
-
- if (existingDescsMap.has(key)) {
- // 기존 데이터 업데이트
- await tx.update(DESC)
- .set({
- MAKTX: desc.maktx || null,
- updatedAt: new Date()
- })
- .where(eq(DESC.id, existingDescsMap.get(key)!.id));
- } else {
- // 신규 데이터 삽입
- await tx.insert(DESC).values({
- MATNR: matnr,
- SPRAS: desc.spras || null,
- MAKTX: desc.maktx || null,
- });
- }
- }
- }
-
- // PLNT 테이블 데이터 처리
- if (material.plants && material.plants.length > 0) {
- // 기존 데이터 조회
- const existingPlants = await tx.select().from(PLNT)
- .where(eq(PLNT.MATNR, material.matnr));
-
- // 플랜트 데이터 매핑
- const existingPlantsMap = new Map(
- existingPlants.map(plant => [`${plant.MATNR}-${plant.WERKS}`, plant])
- );
-
- for (const plant of material.plants) {
- if (!plant.matnr && !material.matnr) continue; // 자재번호 필수
- if (!plant.werks) continue; // 플랜트 코드 필수
-
- const matnr = plant.matnr || material.matnr;
- const werks = plant.werks;
- const key = `${matnr}-${werks}`;
-
- if (existingPlantsMap.has(key)) {
- // 기존 데이터 업데이트
- await tx.update(PLNT)
- .set({
- LVORM: plant.lvorm || null,
- MMSTA: plant.mmsta || null,
- MMSTD: plant.mmstd || null,
- ZZMTARP: plant.zzmtarp || null,
- ZZREGDT: plant.zzregdt || null,
- ZZREGTM: plant.zzregtm || null,
- ZZREGUS: plant.zzregus || null,
- ZZLAMDT: plant.zzlamdt || null,
- ZZLAMTM: plant.zzlamtm || null,
- ZZLAMUS: plant.zzlamus || null,
- ZZPRFLG: plant.zzprflg || null,
- updatedAt: new Date()
- })
- .where(eq(PLNT.id, existingPlantsMap.get(key)!.id));
- } else {
- // 신규 데이터 삽입
- await tx.insert(PLNT).values({
- MATNR: matnr,
- WERKS: werks,
- LVORM: plant.lvorm || null,
- MMSTA: plant.mmsta || null,
- MMSTD: plant.mmstd || null,
- ZZMTARP: plant.zzmtarp || null,
- ZZREGDT: plant.zzregdt || null,
- ZZREGTM: plant.zzregtm || null,
- ZZREGUS: plant.zzregus || null,
- ZZLAMDT: plant.zzlamdt || null,
- ZZLAMTM: plant.zzlamtm || null,
- ZZLAMUS: plant.zzlamus || null,
- ZZPRFLG: plant.zzprflg || null,
- });
- }
- }
- }
-
- // UNIT 테이블 데이터 처리
- if (material.units && material.units.length > 0) {
- // 기존 데이터 조회
- const existingUnits = await tx.select().from(UNIT)
- .where(eq(UNIT.MATNR, material.matnr));
-
- // 단위 데이터 매핑
- const existingUnitsMap = new Map(
- existingUnits.map(unit => [`${unit.MATNR}-${unit.MEINH}`, unit])
- );
-
- for (const unit of material.units) {
- if (!unit.matnr && !material.matnr) continue; // 자재번호 필수
- if (!unit.meinh) continue; // 단위 코드 필수
-
- const matnr = unit.matnr || material.matnr;
- const meinh = unit.meinh;
- const key = `${matnr}-${meinh}`;
-
- if (existingUnitsMap.has(key)) {
- // 기존 데이터 업데이트
- await tx.update(UNIT)
- .set({
- UMREZ: unit.umrez || null,
- UMREN: unit.umren || null,
- LAENG: unit.laeng || null,
- BREIT: unit.breit || null,
- HOEHE: unit.hoehe || null,
- MEABM: unit.meabm || null,
- VOLUM: unit.volum || null,
- VOLEH: unit.voleh || null,
- BRGEW: unit.brgew || null,
- GEWEI: unit.gewei || null,
- updatedAt: new Date()
- })
- .where(eq(UNIT.id, existingUnitsMap.get(key)!.id));
- } else {
- // 신규 데이터 삽입
- await tx.insert(UNIT).values({
- MATNR: matnr,
- MEINH: meinh,
- UMREZ: unit.umrez || null,
- UMREN: unit.umren || null,
- LAENG: unit.laeng || null,
- BREIT: unit.breit || null,
- HOEHE: unit.hoehe || null,
- MEABM: unit.meabm || null,
- VOLUM: unit.volum || null,
- VOLEH: unit.voleh || null,
- BRGEW: unit.brgew || null,
- GEWEI: unit.gewei || null,
- });
- }
- }
- }
-
- // CLASSASGN 테이블 데이터 처리
- if (material.classAssignments && material.classAssignments.length > 0) {
- // 기존 데이터 조회
- const existingClassAsgns = await tx.select().from(CLASSASGN)
- .where(eq(CLASSASGN.MATNR, material.matnr));
-
- // 클래스 할당 데이터 매핑
- const existingClassAsgnsMap = new Map(
- existingClassAsgns.map(cls => [`${cls.MATNR}-${cls.CLASS}-${cls.KLART}`, cls])
- );
-
- for (const cls of material.classAssignments) {
- if (!cls.matnr && !material.matnr) continue; // 자재번호 필수
- if (!cls.class || !cls.klart) continue; // 클래스 및 유형 필수
-
- const matnr = cls.matnr || material.matnr;
- const clsVal = cls.class;
- const klart = cls.klart;
- const key = `${matnr}-${clsVal}-${klart}`;
-
- if (!existingClassAsgnsMap.has(key)) {
- // 클래스 할당은 기본키 자체가 변경되는 경우가 드물어 신규 삽입만 처리
- await tx.insert(CLASSASGN).values({
- MATNR: matnr,
- CLASS: clsVal,
- KLART: klart,
- });
- }
- }
- }
+async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) {
+ console.log(`데이터베이스 저장 함수가 호출됨. ${processedMaterials.length}개의 자재 데이터 수신.`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const materialData of processedMaterials) {
+ const { material, descriptions, plants, units, classAssignments, characteristicAssignments } = materialData;
+
+ if (!material.MATNR) {
+ console.warn('자재번호(MATNR)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
- // CHARASGN 테이블 데이터 처리
- if (material.characteristicAssignments && material.characteristicAssignments.length > 0) {
- // 기존 데이터 조회
- const existingCharAsgns = await tx.select().from(CHARASGN)
- .where(eq(CHARASGN.MATNR, material.matnr));
-
- // 특성 할당 데이터 매핑
- const existingCharAsgnsMap = new Map(
- existingCharAsgns.map(char =>
- [`${char.MATNR}-${char.CLASS}-${char.KLART}-${char.ATNAM}`, char]
- )
- );
-
- for (const char of material.characteristicAssignments) {
- if (!char.matnr && !material.matnr) continue; // 자재번호 필수
- if (!char.class || !char.klart || !char.atnam) continue; // 클래스, 유형, 특성명 필수
-
- const matnr = char.matnr || material.matnr;
- const clsVal = char.class;
- const klart = char.klart;
- const atnam = char.atnam;
- const key = `${matnr}-${clsVal}-${klart}-${atnam}`;
-
- if (existingCharAsgnsMap.has(key)) {
- // 기존 데이터 업데이트
- await tx.update(CHARASGN)
- .set({
- ATWRT: char.atwrt || null,
- ATFLV: char.atflv || null,
- ATAWE: char.atawe || null,
- ATFLB: char.atflb || null,
- ATAW1: char.ataw1 || null,
- ATBEZ: char.atbez || null,
- ATWTB: char.atwtb || null,
- updatedAt: new Date()
- })
- .where(eq(CHARASGN.id, existingCharAsgnsMap.get(key)!.id));
- } else {
- // 신규 데이터 삽입
- await tx.insert(CHARASGN).values({
- MATNR: matnr,
- CLASS: clsVal,
- KLART: klart,
- ATNAM: atnam,
- ATWRT: char.atwrt || null,
- ATFLV: char.atflv || null,
- ATAWE: char.atawe || null,
- ATFLB: char.atflb || null,
- ATAW1: char.ataw1 || null,
- ATBEZ: char.atbez || null,
- ATWTB: char.atwtb || null,
- });
- }
- }
- }
+ // 1. MATL 테이블 Upsert (최상위 테이블)
+ await tx.insert(MODEL_MASTER_MATL)
+ .values(material)
+ .onConflictDoUpdate({
+ target: MODEL_MASTER_MATL.MATNR,
+ set: {
+ ...material,
+ updatedAt: new Date(),
}
- });
+ });
+
+ // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입
+ await Promise.all([
+ // DESC 테이블 처리
+ replaceSubTableData(
+ tx,
+ MODEL_MASTER_MATL_DESC,
+ descriptions,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // PLNT 테이블 처리
+ replaceSubTableData(
+ tx,
+ MODEL_MASTER_MATL_PLNT,
+ plants,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // UNIT 테이블 처리
+ replaceSubTableData(
+ tx,
+ MODEL_MASTER_MATL_UNIT,
+ units,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // CLASSASGN 테이블 처리
+ replaceSubTableData(
+ tx,
+ MODEL_MASTER_MATL_CLASSASGN,
+ classAssignments,
+ 'MATNR',
+ material.MATNR
+ ),
+
+ // CHARASGN 테이블 처리
+ replaceSubTableData(
+ tx,
+ MODEL_MASTER_MATL_CHARASGN,
+ characteristicAssignments,
+ 'MATNR',
+ material.MATNR
+ )
+ ]);
+ }
+ });
- console.log(`${data.materials.length}개의 자재 데이터 처리 완료.`);
- return true;
- } catch (error) {
- console.error('데이터베이스 저장 중 오류 발생:', error);
- throw error;
- }
+ console.log(`${processedMaterials.length}개의 자재 데이터 처리 완료.`);
+ return true;
+ } catch (error) {
+ console.error('데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
}
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_ORGANIZATION_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_ORGANIZATION_MASTER/route.ts
new file mode 100644
index 00000000..c3f214e6
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_ORGANIZATION_MASTER/route.ts
@@ -0,0 +1,435 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ ORGANIZATION_MASTER_HRHMTB_CCTR,
+ ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT,
+ ORGANIZATION_MASTER_HRHMTB_PCTR,
+ ORGANIZATION_MASTER_HRHMTB_ZBUKRS,
+ ORGANIZATION_MASTER_HRHMTB_ZEKGRP,
+ ORGANIZATION_MASTER_HRHMTB_ZEKORG,
+ ORGANIZATION_MASTER_HRHMTB_ZGSBER,
+ ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT,
+ ORGANIZATION_MASTER_HRHMTB_ZLGORT,
+ ORGANIZATION_MASTER_HRHMTB_ZSPART,
+ ORGANIZATION_MASTER_HRHMTB_ZVKBUR,
+ ORGANIZATION_MASTER_HRHMTB_ZVKGRP,
+ ORGANIZATION_MASTER_HRHMTB_ZVKORG,
+ ORGANIZATION_MASTER_HRHMTB_ZVSTEL,
+ ORGANIZATION_MASTER_HRHMTB_ZVTWEG,
+ ORGANIZATION_MASTER_HRHMTB_ZWERKS
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type CctrData = typeof ORGANIZATION_MASTER_HRHMTB_CCTR.$inferInsert;
+type CctrTextData = typeof ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT.$inferInsert;
+type PctrData = typeof ORGANIZATION_MASTER_HRHMTB_PCTR.$inferInsert;
+type ZbukrsData = typeof ORGANIZATION_MASTER_HRHMTB_ZBUKRS.$inferInsert;
+type ZekgrpData = typeof ORGANIZATION_MASTER_HRHMTB_ZEKGRP.$inferInsert;
+type ZekorgData = typeof ORGANIZATION_MASTER_HRHMTB_ZEKORG.$inferInsert;
+type ZgsberData = typeof ORGANIZATION_MASTER_HRHMTB_ZGSBER.$inferInsert;
+type ZgsberTextData = typeof ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT.$inferInsert;
+type ZlgortData = typeof ORGANIZATION_MASTER_HRHMTB_ZLGORT.$inferInsert;
+type ZspartData = typeof ORGANIZATION_MASTER_HRHMTB_ZSPART.$inferInsert;
+type ZvkburData = typeof ORGANIZATION_MASTER_HRHMTB_ZVKBUR.$inferInsert;
+type ZvkgrpData = typeof ORGANIZATION_MASTER_HRHMTB_ZVKGRP.$inferInsert;
+type ZvkorgData = typeof ORGANIZATION_MASTER_HRHMTB_ZVKORG.$inferInsert;
+type ZvstelData = typeof ORGANIZATION_MASTER_HRHMTB_ZVSTEL.$inferInsert;
+type ZvtwegData = typeof ORGANIZATION_MASTER_HRHMTB_ZVTWEG.$inferInsert;
+type ZwerksData = typeof ORGANIZATION_MASTER_HRHMTB_ZWERKS.$inferInsert;
+
+// XML에서 받는 데이터 구조
+type CctrXML = ToXMLFields<Omit<CctrData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ TEXT?: TextXML[];
+};
+
+type TextXML = ToXMLFields<Omit<CctrTextData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+type PctrXML = ToXMLFields<Omit<PctrData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ TEXT?: TextXML[];
+};
+
+type ZbukrsXML = ToXMLFields<Omit<ZbukrsData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZekgrpXML = ToXMLFields<Omit<ZekgrpData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZekorgXML = ToXMLFields<Omit<ZekorgData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+type ZgsberXML = ToXMLFields<Omit<ZgsberData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ TEXT?: ZgsberTextXML[];
+};
+
+type ZgsberTextXML = ToXMLFields<Omit<ZgsberTextData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+type ZlgortXML = ToXMLFields<Omit<ZlgortData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZspartXML = ToXMLFields<Omit<ZspartData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZvkburXML = ToXMLFields<Omit<ZvkburData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZvkgrpXML = ToXMLFields<Omit<ZvkgrpData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZvkorgXML = ToXMLFields<Omit<ZvkorgData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZvstelXML = ToXMLFields<Omit<ZvstelData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZvtwegXML = ToXMLFields<Omit<ZvtwegData, 'id' | 'createdAt' | 'updatedAt'>>;
+type ZwerksXML = ToXMLFields<Omit<ZwerksData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조
+interface ProcessedOrganizationData {
+ cctrItems: Array<{ cctr: CctrData; texts: CctrTextData[] }>;
+ pctrItems: Array<{ pctr: PctrData; texts: CctrTextData[] }>;
+ zbukrsItems: ZbukrsData[];
+ zekgrpItems: ZekgrpData[];
+ zekorgItems: ZekorgData[];
+ zgsberItems: Array<{ zgsber: ZgsberData; texts: ZgsberTextData[] }>;
+ zlgortItems: ZlgortData[];
+ zspartItems: ZspartData[];
+ zvkburItems: ZvkburData[];
+ zvkgrpItems: ZvkgrpData[];
+ zvkorgItems: ZvkorgData[];
+ zvstelItems: ZvstelData[];
+ zvtwegItems: ZvtwegData[];
+ zwerksItems: ZwerksData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_ORGANIZATION_MASTER',
+ body,
+ async () => {
+ console.log('🚀 ORGANIZATION_MASTER 수신 시작, 데이터 길이:', body.length);
+
+ const parser = createXMLParser([
+ 'HRHMTB_CCTR', 'HRHMTB_PCTR', 'HRHMTB_ZBUKRS', 'HRHMTB_ZEKGRP',
+ 'HRHMTB_ZEKORG', 'HRHMTB_ZGSBER', 'HRHMTB_ZLGORT', 'HRHMTB_ZSPART',
+ 'HRHMTB_ZVKBUR', 'HRHMTB_ZVKGRP', 'HRHMTB_ZVKORG', 'HRHMTB_ZVSTEL',
+ 'HRHMTB_ZVTWEG', 'HRHMTB_ZWERKS', 'TEXT'
+ ]);
+
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_ORGANIZATION_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_ORGANIZATION_MASTERReq data');
+ }
+
+ console.log('Validating request data structure:',
+ Object.keys(requestData).map(key => `${key}: ${requestData[key] ? 'found' : 'not found'}`).join(', ')
+ );
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedOrganizations = transformOrganizationData(requestData);
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedOrganizations);
+
+ console.log('🎉 처리 완료: 조직 마스터 데이터');
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_ORGANIZATION_MASTER/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformOrganizationData(requestData: any): ProcessedOrganizationData {
+ const result: ProcessedOrganizationData = {
+ cctrItems: [],
+ pctrItems: [],
+ zbukrsItems: [],
+ zekgrpItems: [],
+ zekorgItems: [],
+ zgsberItems: [],
+ zlgortItems: [],
+ zspartItems: [],
+ zvkburItems: [],
+ zvkgrpItems: [],
+ zvkorgItems: [],
+ zvstelItems: [],
+ zvtwegItems: [],
+ zwerksItems: []
+ };
+
+ // HRHMTB_CCTR 처리
+ if (requestData.items1 && Array.isArray(requestData.items1)) {
+ result.cctrItems = requestData.items1.map((item: CctrXML) => {
+ const cctr = convertXMLToDBData<CctrData>(
+ item as Record<string, string | undefined>,
+ ['CCTR', 'KOKRS', 'DATBI']
+ );
+
+ const fkData = { CCTR: item.CCTR || '' };
+ const texts = processNestedArray(
+ item.TEXT,
+ (text) => convertXMLToDBData<CctrTextData>(text, [], fkData),
+ fkData
+ );
+
+ return { cctr, texts };
+ });
+ }
+
+ // HRHMTB_PCTR 처리
+ if (requestData.items2 && Array.isArray(requestData.items2)) {
+ result.pctrItems = requestData.items2.map((item: PctrXML) => {
+ const pctr = convertXMLToDBData<PctrData>(
+ item as Record<string, string | undefined>,
+ ['PCTR', 'KOKRS', 'DATBI']
+ );
+
+ const fkData = { CCTR: item.PCTR || '' }; // TEXT 테이블은 CCTR 필드를 사용
+ const texts = processNestedArray(
+ item.TEXT,
+ (text) => convertXMLToDBData<CctrTextData>(text, [], fkData),
+ fkData
+ );
+
+ return { pctr, texts };
+ });
+ }
+
+ // HRHMTB_ZBUKRS 처리
+ if (requestData.items3 && Array.isArray(requestData.items3)) {
+ result.zbukrsItems = requestData.items3.map((item: ZbukrsXML) =>
+ convertXMLToDBData<ZbukrsData>(
+ item as Record<string, string | undefined>,
+ ['ZBUKRS']
+ )
+ );
+ }
+
+ // HRHMTB_ZEKGRP 처리
+ if (requestData.items4 && Array.isArray(requestData.items4)) {
+ result.zekgrpItems = requestData.items4.map((item: ZekgrpXML) =>
+ convertXMLToDBData<ZekgrpData>(
+ item as Record<string, string | undefined>,
+ ['ZEKGRP']
+ )
+ );
+ }
+
+ // HRHMTB_ZEKORG 처리
+ if (requestData.items5 && Array.isArray(requestData.items5)) {
+ result.zekorgItems = requestData.items5.map((item: ZekorgXML) =>
+ convertXMLToDBData<ZekorgData>(
+ item as Record<string, string | undefined>,
+ ['ZEKORG']
+ )
+ );
+ }
+
+ // HRHMTB_ZGSBER 처리
+ if (requestData.items6 && Array.isArray(requestData.items6)) {
+ result.zgsberItems = requestData.items6.map((item: ZgsberXML) => {
+ const zgsber = convertXMLToDBData<ZgsberData>(
+ item as Record<string, string | undefined>,
+ ['ZGSBER']
+ );
+
+ const fkData = { ZGSBER: item.ZGSBER || '' };
+ const texts = processNestedArray(
+ item.TEXT,
+ (text) => convertXMLToDBData<ZgsberTextData>(text, ['LANGU'], fkData),
+ fkData
+ );
+
+ return { zgsber, texts };
+ });
+ }
+
+ // HRHMTB_ZLGORT 처리
+ if (requestData.items7 && Array.isArray(requestData.items7)) {
+ result.zlgortItems = requestData.items7.map((item: ZlgortXML) =>
+ convertXMLToDBData<ZlgortData>(
+ item as Record<string, string | undefined>,
+ ['ZLGORT', 'ZWERKS']
+ )
+ );
+ }
+
+ // HRHMTB_ZSPART 처리
+ if (requestData.items8 && Array.isArray(requestData.items8)) {
+ result.zspartItems = requestData.items8.map((item: ZspartXML) =>
+ convertXMLToDBData<ZspartData>(
+ item as Record<string, string | undefined>,
+ ['ZSPART']
+ )
+ );
+ }
+
+ // HRHMTB_ZVKBUR 처리
+ if (requestData.items9 && Array.isArray(requestData.items9)) {
+ result.zvkburItems = requestData.items9.map((item: ZvkburXML) =>
+ convertXMLToDBData<ZvkburData>(
+ item as Record<string, string | undefined>,
+ ['ZVKBUR']
+ )
+ );
+ }
+
+ // HRHMTB_ZVKGRP 처리
+ if (requestData.items10 && Array.isArray(requestData.items10)) {
+ result.zvkgrpItems = requestData.items10.map((item: ZvkgrpXML) =>
+ convertXMLToDBData<ZvkgrpData>(
+ item as Record<string, string | undefined>,
+ ['ZVKGRP']
+ )
+ );
+ }
+
+ // HRHMTB_ZVKORG 처리
+ if (requestData.items11 && Array.isArray(requestData.items11)) {
+ result.zvkorgItems = requestData.items11.map((item: ZvkorgXML) =>
+ convertXMLToDBData<ZvkorgData>(
+ item as Record<string, string | undefined>,
+ ['ZVKORG']
+ )
+ );
+ }
+
+ // HRHMTB_ZVSTEL 처리
+ if (requestData.items12 && Array.isArray(requestData.items12)) {
+ result.zvstelItems = requestData.items12.map((item: ZvstelXML) =>
+ convertXMLToDBData<ZvstelData>(
+ item as Record<string, string | undefined>,
+ ['ZVSTEL']
+ )
+ );
+ }
+
+ // HRHMTB_ZVTWEG 처리
+ if (requestData.items13 && Array.isArray(requestData.items13)) {
+ result.zvtwegItems = requestData.items13.map((item: ZvtwegXML) =>
+ convertXMLToDBData<ZvtwegData>(
+ item as Record<string, string | undefined>,
+ ['ZVTWEG']
+ )
+ );
+ }
+
+ // HRHMTB_ZWERKS 처리
+ if (requestData.items14 && Array.isArray(requestData.items14)) {
+ result.zwerksItems = requestData.items14.map((item: ZwerksXML) =>
+ convertXMLToDBData<ZwerksData>(
+ item as Record<string, string | undefined>,
+ ['ZWERKS']
+ )
+ );
+ }
+
+ return result;
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedOrganizations: ProcessedOrganizationData) {
+ console.log('데이터베이스 저장 함수가 호출됨. 조직 마스터 데이터 수신.');
+
+ try {
+ await db.transaction(async (tx) => {
+ // CCTR 테이블 처리
+ for (const { cctr, texts } of processedOrganizations.cctrItems) {
+ if (!cctr.CCTR) continue;
+
+ await tx.insert(ORGANIZATION_MASTER_HRHMTB_CCTR)
+ .values(cctr)
+ .onConflictDoUpdate({
+ target: ORGANIZATION_MASTER_HRHMTB_CCTR.CCTR,
+ set: { ...cctr, updatedAt: new Date() }
+ });
+
+ await replaceSubTableData(tx, ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT, texts, 'CCTR', cctr.CCTR);
+ }
+
+ // PCTR 테이블 처리
+ for (const { pctr, texts } of processedOrganizations.pctrItems) {
+ if (!pctr.PCTR) continue;
+
+ await tx.insert(ORGANIZATION_MASTER_HRHMTB_PCTR)
+ .values(pctr)
+ .onConflictDoUpdate({
+ target: ORGANIZATION_MASTER_HRHMTB_PCTR.PCTR,
+ set: { ...pctr, updatedAt: new Date() }
+ });
+
+ // PCTR의 TEXT는 CCTR_TEXT 테이블을 사용하므로 처리하지 않음
+ }
+
+ // 나머지 단일 테이블들 처리
+ const tableProcessors = [
+ { items: processedOrganizations.zbukrsItems, table: ORGANIZATION_MASTER_HRHMTB_ZBUKRS, key: 'ZBUKRS' },
+ { items: processedOrganizations.zekgrpItems, table: ORGANIZATION_MASTER_HRHMTB_ZEKGRP, key: 'ZEKGRP' },
+ { items: processedOrganizations.zekorgItems, table: ORGANIZATION_MASTER_HRHMTB_ZEKORG, key: 'ZEKORG' },
+ { items: processedOrganizations.zlgortItems, table: ORGANIZATION_MASTER_HRHMTB_ZLGORT, key: 'ZLGORT' },
+ { items: processedOrganizations.zspartItems, table: ORGANIZATION_MASTER_HRHMTB_ZSPART, key: 'ZSPART' },
+ { items: processedOrganizations.zvkburItems, table: ORGANIZATION_MASTER_HRHMTB_ZVKBUR, key: 'ZVKBUR' },
+ { items: processedOrganizations.zvkgrpItems, table: ORGANIZATION_MASTER_HRHMTB_ZVKGRP, key: 'ZVKGRP' },
+ { items: processedOrganizations.zvkorgItems, table: ORGANIZATION_MASTER_HRHMTB_ZVKORG, key: 'ZVKORG' },
+ { items: processedOrganizations.zvstelItems, table: ORGANIZATION_MASTER_HRHMTB_ZVSTEL, key: 'ZVSTEL' },
+ { items: processedOrganizations.zvtwegItems, table: ORGANIZATION_MASTER_HRHMTB_ZVTWEG, key: 'ZVTWEG' },
+ { items: processedOrganizations.zwerksItems, table: ORGANIZATION_MASTER_HRHMTB_ZWERKS, key: 'ZWERKS' }
+ ];
+
+ for (const { items, table, key } of tableProcessors) {
+ for (const item of items) {
+ if (!(item as any)[key]) continue;
+
+ await tx.insert(table)
+ .values(item)
+ .onConflictDoUpdate({
+ target: (table as any)[key],
+ set: { ...item, updatedAt: new Date() }
+ });
+ }
+ }
+
+ // ZGSBER 테이블 처리 (TEXT 포함)
+ for (const { zgsber, texts } of processedOrganizations.zgsberItems) {
+ if (!zgsber.ZGSBER) continue;
+
+ await tx.insert(ORGANIZATION_MASTER_HRHMTB_ZGSBER)
+ .values(zgsber)
+ .onConflictDoUpdate({
+ target: ORGANIZATION_MASTER_HRHMTB_ZGSBER.ZGSBER,
+ set: { ...zgsber, updatedAt: new Date() }
+ });
+
+ await replaceSubTableData(tx, ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT, texts, 'ZGSBER', zgsber.ZGSBER);
+ }
+ });
+
+ console.log('조직 마스터 데이터 처리 완료.');
+ return true;
+ } catch (error) {
+ console.error('데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+}
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_PROJECT_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_PROJECT_MASTER/route.ts
new file mode 100644
index 00000000..167c5c5d
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_PROJECT_MASTER/route.ts
@@ -0,0 +1,153 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ PROJECT_MASTER_CMCTB_PROJ_MAST
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ createErrorResponse,
+ createSuccessResponse,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type ProjectData = typeof PROJECT_MASTER_CMCTB_PROJ_MAST.$inferInsert;
+
+// XML에서 받는 데이터 구조
+type ProjectXML = ToXMLFields<Omit<ProjectData, 'id' | 'createdAt' | 'updatedAt'>>;
+
+// 처리된 데이터 구조
+interface ProcessedProjectData {
+ project: ProjectData;
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_PROJECT_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_PROJECT_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_PROJECT_MASTER',
+ body,
+ async () => {
+ console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : ''));
+
+ const parser = createXMLParser(['CMCTB_PROJ_MAST']);
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_PROJECT_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_PROJECT_MASTERReq or CMCTB_PROJ_MAST data');
+ }
+
+ console.log('Validating request data structure:',
+ `CMCTB_PROJ_MAST: ${requestData.CMCTB_PROJ_MAST ? 'found' : 'not found'}`
+ );
+
+ if (requestData.CMCTB_PROJ_MAST && Array.isArray(requestData.CMCTB_PROJ_MAST) && requestData.CMCTB_PROJ_MAST.length > 0) {
+ console.log('First CMCTB_PROJ_MAST sample:', JSON.stringify(requestData.CMCTB_PROJ_MAST[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedProjects = transformProjectData(requestData.CMCTB_PROJ_MAST as ProjectXML[] || []);
+
+ // 필수 필드 검증
+ for (const projectData of processedProjects) {
+ if (!projectData.project.PROJ_NO) {
+ throw new Error('Missing required field: PROJ_NO in project');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedProjects);
+
+ console.log(`Processed ${processedProjects.length} projects`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_PROJECT_MASTER/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformProjectData(projectData: ProjectXML[]): ProcessedProjectData[] {
+ if (!projectData || !Array.isArray(projectData)) {
+ return [];
+ }
+
+ return projectData.map(proj => {
+ // Project 데이터 변환
+ const project = convertXMLToDBData<ProjectData>(
+ proj as Record<string, string | undefined>,
+ ['PROJ_NO']
+ );
+
+ // 필수 필드 보정
+ if (!project.PROJ_NO) {
+ project.PROJ_NO = '';
+ }
+
+ return {
+ project
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedProjects: ProcessedProjectData[]) {
+ console.log(`데이터베이스 저장 함수가 호출됨. ${processedProjects.length}개의 프로젝트 데이터 수신.`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const projectData of processedProjects) {
+ const { project } = projectData;
+
+ if (!project.PROJ_NO) {
+ console.warn('프로젝트번호(PROJ_NO)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // Project 테이블 Upsert
+ await tx.insert(PROJECT_MASTER_CMCTB_PROJ_MAST)
+ .values(project)
+ .onConflictDoUpdate({
+ target: PROJECT_MASTER_CMCTB_PROJ_MAST.PROJ_NO,
+ set: {
+ ...project,
+ updatedAt: new Date(),
+ }
+ });
+ }
+ });
+
+ console.log(`${processedProjects.length}개의 프로젝트 데이터 처리 완료.`);
+ return true;
+ } catch (error) {
+ console.error('데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+}
diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_VENDOR_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_VENDOR_MASTER/route.ts
new file mode 100644
index 00000000..e257a28a
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_VENDOR_MASTER/route.ts
@@ -0,0 +1,336 @@
+import { NextRequest } from "next/server";
+import db from "@/db/db";
+import {
+ VENDOR_MASTER_BP_HEADER,
+ VENDOR_MASTER_BP_HEADER_ADDRESS,
+ VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL,
+ VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX,
+ VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL,
+ VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL,
+ VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL,
+ VENDOR_MASTER_BP_HEADER_BP_TAXNUM,
+ VENDOR_MASTER_BP_HEADER_BP_VENGEN,
+ VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY,
+ VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX,
+ VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG,
+ VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN
+} from "@/db/schema/MDG/mdg";
+import {
+ ToXMLFields,
+ serveWsdl,
+ createXMLParser,
+ extractRequestData,
+ convertXMLToDBData,
+ processNestedArray,
+ createErrorResponse,
+ createSuccessResponse,
+ replaceSubTableData,
+ withSoapLogging
+} from "../utils";
+
+// 스키마에서 직접 타입 추론
+type VendorHeaderData = typeof VENDOR_MASTER_BP_HEADER.$inferInsert;
+type AddressData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS.$inferInsert;
+type AdEmailData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL.$inferInsert;
+type AdFaxData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX.$inferInsert;
+type AdPostalData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL.$inferInsert;
+type AdTelData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL.$inferInsert;
+type AdUrlData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL.$inferInsert;
+type BpTaxnumData = typeof VENDOR_MASTER_BP_HEADER_BP_TAXNUM.$inferInsert;
+type BpVengenData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN.$inferInsert;
+type BpCompnyData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY.$inferInsert;
+type BpWhtaxData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX.$inferInsert;
+type BpPorgData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG.$inferInsert;
+type ZvpfnData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN.$inferInsert;
+
+// XML 구조 타입
+type VendorHeaderXML = ToXMLFields<Omit<VendorHeaderData, 'id' | 'createdAt' | 'updatedAt'>> & {
+ ADDRESS?: AddressXML[];
+ BP_TAXNUM?: BpTaxnumXML[];
+ BP_VENGEN?: BpVengenXML[];
+};
+
+type AddressXML = ToXMLFields<Omit<AddressData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & {
+ AD_EMAIL?: AdEmailXML[];
+ AD_FAX?: AdFaxXML[];
+ AD_POSTAL?: AdPostalXML[];
+ AD_TEL?: AdTelXML[];
+ AD_URL?: AdUrlXML[];
+};
+
+type AdEmailXML = ToXMLFields<Omit<AdEmailData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+type AdFaxXML = ToXMLFields<Omit<AdFaxData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+type AdPostalXML = ToXMLFields<Omit<AdPostalData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+type AdTelXML = ToXMLFields<Omit<AdTelData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+type AdUrlXML = ToXMLFields<Omit<AdUrlData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+
+type BpTaxnumXML = ToXMLFields<Omit<BpTaxnumData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+
+type BpVengenXML = ToXMLFields<Omit<BpVengenData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & {
+ BP_COMPNY?: BpCompnyXML[];
+ BP_PORG?: BpPorgXML[];
+};
+
+type BpCompnyXML = ToXMLFields<Omit<BpCompnyData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & {
+ BP_WHTAX?: BpWhtaxXML[];
+};
+
+type BpWhtaxXML = ToXMLFields<Omit<BpWhtaxData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+
+type BpPorgXML = ToXMLFields<Omit<BpPorgData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & {
+ ZVPFN?: ZvpfnXML[];
+};
+
+type ZvpfnXML = ToXMLFields<Omit<ZvpfnData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>;
+
+// 처리된 데이터 구조
+interface ProcessedVendorData {
+ vendorHeader: VendorHeaderData;
+ addresses: AddressData[];
+ adEmails: AdEmailData[];
+ adFaxes: AdFaxData[];
+ adPostals: AdPostalData[];
+ adTels: AdTelData[];
+ adUrls: AdUrlData[];
+ bpTaxnums: BpTaxnumData[];
+ bpVengens: BpVengenData[];
+ bpCompnies: BpCompnyData[];
+ bpWhtaxes: BpWhtaxData[];
+ bpPorgs: BpPorgData[];
+ zvpfns: ZvpfnData[];
+}
+
+export async function GET(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_VENDOR_MASTER.wsdl');
+ }
+
+ return new Response('Method Not Allowed', { status: 405 });
+}
+
+export async function POST(request: NextRequest) {
+ const url = new URL(request.url);
+ if (url.searchParams.has('wsdl')) {
+ return serveWsdl('IF_MDZ_EVCP_VENDOR_MASTER.wsdl');
+ }
+
+ const body = await request.text();
+
+ return withSoapLogging(
+ 'INBOUND',
+ 'S-ERP',
+ 'IF_MDZ_EVCP_VENDOR_MASTER',
+ body,
+ async () => {
+ console.log('🚀 VENDOR_MASTER 수신 시작, 데이터 길이:', body.length);
+
+ const parser = createXMLParser([
+ 'BP_HEADER', 'ADDRESS', 'AD_EMAIL', 'AD_FAX', 'AD_POSTAL', 'AD_TEL', 'AD_URL',
+ 'BP_TAXNUM', 'BP_VENGEN', 'BP_COMPNY', 'BP_WHTAX', 'BP_PORG', 'ZVPFN'
+ ]);
+
+ const parsedData = parser.parse(body);
+ console.log('XML root keys:', Object.keys(parsedData));
+
+ const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_VENDOR_MASTERReq');
+
+ if (!requestData) {
+ console.error('Could not find valid request data in the received payload');
+ console.error('Received XML structure:', JSON.stringify(parsedData, null, 2));
+ throw new Error('Missing request data - could not find IF_MDZ_EVCP_VENDOR_MASTERReq or BP_HEADER data');
+ }
+
+ console.log('Validating request data structure:',
+ `BP_HEADER: ${requestData.BP_HEADER ? 'found' : 'not found'}`
+ );
+
+ if (requestData.BP_HEADER && Array.isArray(requestData.BP_HEADER) && requestData.BP_HEADER.length > 0) {
+ console.log('First BP_HEADER sample:', JSON.stringify(requestData.BP_HEADER[0], null, 2));
+ }
+
+ // XML 데이터를 DB 삽입 가능한 형태로 변환
+ const processedVendors = transformVendorData(requestData.BP_HEADER as VendorHeaderXML[] || []);
+
+ // 필수 필드 검증
+ for (const vendorData of processedVendors) {
+ if (!vendorData.vendorHeader.VNDRCD) {
+ throw new Error('Missing required field: VNDRCD in vendor');
+ }
+ }
+
+ // 데이터베이스 저장
+ await saveToDatabase(processedVendors);
+
+ console.log(`🎉 처리 완료: ${processedVendors.length}개 벤더 데이터`);
+
+ return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_VENDOR_MASTER/');
+ }
+ ).catch(error => {
+ return createErrorResponse(error);
+ });
+}
+
+// XML 데이터를 DB 삽입 가능한 형태로 변환
+function transformVendorData(vendorHeaderData: VendorHeaderXML[]): ProcessedVendorData[] {
+ if (!vendorHeaderData || !Array.isArray(vendorHeaderData)) {
+ return [];
+ }
+
+ return vendorHeaderData.map(vendorHeader => {
+ const vndrcdKey = vendorHeader.VNDRCD || '';
+ const fkData = { VNDRCD: vndrcdKey };
+
+ // 1단계: VENDOR_HEADER (루트)
+ const vendorHeaderConverted = convertXMLToDBData<VendorHeaderData>(
+ vendorHeader as Record<string, string | undefined>,
+ ['VNDRCD'],
+ fkData
+ );
+
+ // 2단계: ADDRESS와 직속 하위들
+ const addresses = processNestedArray(
+ vendorHeader.ADDRESS,
+ (addr) => convertXMLToDBData<AddressData>(addr as Record<string, string | undefined>, ['ADR_NO'], fkData),
+ fkData
+ );
+
+ // ADDRESS의 하위 테이블들 (3단계)
+ const adEmails = vendorHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_EMAIL, (item) =>
+ convertXMLToDBData<AdEmailData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData)
+ ) || [];
+
+ const adFaxes = vendorHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_FAX, (item) =>
+ convertXMLToDBData<AdFaxData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData)
+ ) || [];
+
+ const adPostals = vendorHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_POSTAL, (item) =>
+ convertXMLToDBData<AdPostalData>(item as Record<string, string | undefined>, ['INTL_ADR_VER_ID'], fkData), fkData)
+ ) || [];
+
+ const adTels = vendorHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_TEL, (item) =>
+ convertXMLToDBData<AdTelData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData)
+ ) || [];
+
+ const adUrls = vendorHeader.ADDRESS?.flatMap(addr =>
+ processNestedArray(addr.AD_URL, (item) =>
+ convertXMLToDBData<AdUrlData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData)
+ ) || [];
+
+ // 2단계: BP_TAXNUM
+ const bpTaxnums = processNestedArray(
+ vendorHeader.BP_TAXNUM,
+ (item) => convertXMLToDBData<BpTaxnumData>(item as Record<string, string | undefined>, ['TX_NO_CTG'], fkData),
+ fkData
+ );
+
+ // 2단계: BP_VENGEN과 하위들
+ const bpVengens = processNestedArray(
+ vendorHeader.BP_VENGEN,
+ (vengen) => convertXMLToDBData<BpVengenData>(vengen as Record<string, string | undefined>, ['VNDRNO'], fkData),
+ fkData
+ );
+
+ // BP_VENGEN의 하위 테이블들 (3단계)
+ const bpCompnies = vendorHeader.BP_VENGEN?.flatMap(vengen =>
+ processNestedArray(vengen.BP_COMPNY, (item) =>
+ convertXMLToDBData<BpCompnyData>(item as Record<string, string | undefined>, ['CO_CD'], fkData), fkData)
+ ) || [];
+
+ const bpPorgs = vendorHeader.BP_VENGEN?.flatMap(vengen =>
+ processNestedArray(vengen.BP_PORG, (item) =>
+ convertXMLToDBData<BpPorgData>(item as Record<string, string | undefined>, ['PUR_ORG_CD'], fkData), fkData)
+ ) || [];
+
+ // BP_COMPNY의 하위 테이블 (4단계)
+ const bpWhtaxes = vendorHeader.BP_VENGEN?.flatMap(vengen =>
+ vengen.BP_COMPNY?.flatMap(compny =>
+ processNestedArray(compny.BP_WHTAX, (item) =>
+ convertXMLToDBData<BpWhtaxData>(item as Record<string, string | undefined>, ['SRCE_TX_TP'], fkData), fkData)
+ ) || []
+ ) || [];
+
+ // BP_PORG의 하위 테이블 (4단계)
+ const zvpfns = vendorHeader.BP_VENGEN?.flatMap(vengen =>
+ vengen.BP_PORG?.flatMap(porg =>
+ processNestedArray(porg.ZVPFN, (item) =>
+ convertXMLToDBData<ZvpfnData>(item as Record<string, string | undefined>, ['PTNR_SKL', 'PTNR_CNT'], fkData), fkData)
+ ) || []
+ ) || [];
+
+ return {
+ vendorHeader: vendorHeaderConverted,
+ addresses,
+ adEmails,
+ adFaxes,
+ adPostals,
+ adTels,
+ adUrls,
+ bpTaxnums,
+ bpVengens,
+ bpCompnies,
+ bpWhtaxes,
+ bpPorgs,
+ zvpfns
+ };
+ });
+}
+
+// 데이터베이스 저장 함수
+async function saveToDatabase(processedVendors: ProcessedVendorData[]) {
+ console.log(`데이터베이스 저장 시작: ${processedVendors.length}개 벤더 데이터`);
+
+ try {
+ await db.transaction(async (tx) => {
+ for (const vendorData of processedVendors) {
+ const { vendorHeader, addresses, adEmails, adFaxes, adPostals, adTels, adUrls,
+ bpTaxnums, bpVengens, bpCompnies, bpWhtaxes, bpPorgs, zvpfns } = vendorData;
+
+ if (!vendorHeader.VNDRCD) {
+ console.warn('벤더코드(VNDRCD)가 없는 항목 발견, 건너뜁니다.');
+ continue;
+ }
+
+ // 1. BP_HEADER 테이블 Upsert (최상위 테이블)
+ await tx.insert(VENDOR_MASTER_BP_HEADER)
+ .values(vendorHeader)
+ .onConflictDoUpdate({
+ target: VENDOR_MASTER_BP_HEADER.VNDRCD,
+ set: {
+ ...vendorHeader,
+ updatedAt: new Date(),
+ }
+ });
+
+ // 2. 하위 테이블들 처리 - FK 기준으로 전체 삭제 후 재삽입
+ await Promise.all([
+ // 2단계 테이블들
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS, addresses, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_TAXNUM, bpTaxnums, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN, bpVengens, 'VNDRCD', vendorHeader.VNDRCD),
+
+ // 3-4단계 테이블들
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL, adEmails, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX, adFaxes, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL, adPostals, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL, adTels, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL, adUrls, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY, bpCompnies, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX, bpWhtaxes, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG, bpPorgs, 'VNDRCD', vendorHeader.VNDRCD),
+ replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN, zvpfns, 'VNDRCD', vendorHeader.VNDRCD),
+ ]);
+ }
+ });
+
+ console.log(`✅ 데이터베이스 저장 완료: ${processedVendors.length}개 벤더`);
+ return true;
+ } catch (error) {
+ console.error('❌ 데이터베이스 저장 중 오류 발생:', error);
+ throw error;
+ }
+}
diff --git a/app/api/(S-ERP)/(MDG)/utils.ts b/app/api/(S-ERP)/(MDG)/utils.ts
new file mode 100644
index 00000000..bcb1dd45
--- /dev/null
+++ b/app/api/(S-ERP)/(MDG)/utils.ts
@@ -0,0 +1,396 @@
+import { XMLParser } from "fast-xml-parser";
+import { readFileSync } from "fs";
+import { NextRequest, NextResponse } from "next/server";
+import { join } from "path";
+import { eq, desc } from "drizzle-orm";
+import db from "@/db/db";
+import { soapLogs, type LogDirection, type SoapLogInsert } from "@/db/schema/SOAP/soap";
+
+// XML 파싱용 타입 유틸리티: 스키마에서 XML 타입 생성
+export type ToXMLFields<T> = {
+ [K in keyof T]?: T[K] extends string | null | undefined ? string : never;
+};
+
+// SOAP Body 데이터 타입 (범용)
+export interface SoapBodyData {
+ [key: string]: unknown;
+}
+
+// WSDL 파일 제공 함수
+export function serveWsdl(wsdlFileName: string) {
+ try {
+ const wsdlPath = join(process.cwd(), 'public', 'wsdl', wsdlFileName);
+ const wsdlContent = readFileSync(wsdlPath, 'utf-8');
+
+ return new NextResponse(wsdlContent, {
+ headers: {
+ 'Content-Type': 'text/xml; charset=utf-8',
+ },
+ });
+ } catch (error) {
+ console.error('Failed to read WSDL file:', error);
+ return new NextResponse('WSDL file not found', { status: 404 });
+ }
+}
+
+// XML 파서 생성 (기본 설정)
+export function createXMLParser(arrayTags: string[] = []) {
+ return new XMLParser({
+ ignoreAttributes: false,
+ attributeNamePrefix: '@_',
+ parseAttributeValue: false,
+ trimValues: true,
+ isArray: (name: string) => arrayTags.includes(name),
+ parseTagValue: false,
+ allowBooleanAttributes: true,
+ });
+}
+
+// SOAP Body나 루트에서 요청 데이터 추출 (범용)
+export function extractRequestData(
+ parsedData: Record<string, unknown>,
+ requestKeyPattern: string
+): SoapBodyData | null {
+ // SOAP 구조 체크
+ const soapPaths = [
+ ['soap:Envelope', 'soap:Body'],
+ ['SOAP:Envelope', 'SOAP:Body'],
+ ['Envelope', 'Body'],
+ ['soapenv:Envelope', 'soapenv:Body']
+ ];
+
+ for (const [envelope, body] of soapPaths) {
+ if (parsedData?.[envelope]?.[body]) {
+ const result = extractFromSoapBody(parsedData[envelope][body] as SoapBodyData, requestKeyPattern);
+ if (result) return result;
+ }
+ }
+
+ // 직접 요청 데이터 체크
+ const requestKeys = [
+ requestKeyPattern,
+ `tns:${requestKeyPattern}`,
+ `ns1:${requestKeyPattern}`,
+ `p0:${requestKeyPattern}`
+ ];
+
+ for (const key of requestKeys) {
+ if (parsedData?.[key]) {
+ return parsedData[key] as SoapBodyData;
+ }
+ }
+
+ // 키 이름 패턴 검색
+ for (const key of Object.keys(parsedData)) {
+ if (key.includes(requestKeyPattern)) {
+ return parsedData[key] as SoapBodyData;
+ }
+ }
+
+ // 메인 데이터가 직접 있는 경우 (MATL 등)
+ if (parsedData?.MATL && Array.isArray(parsedData.MATL)) {
+ return parsedData as SoapBodyData;
+ }
+
+ return null;
+}
+
+function extractFromSoapBody(soapBody: SoapBodyData, requestKeyPattern: string): SoapBodyData | null {
+ const requestKeys = [
+ requestKeyPattern.replace('Req', ''),
+ requestKeyPattern,
+ `tns:${requestKeyPattern}`,
+ `ns1:${requestKeyPattern}`,
+ `p0:${requestKeyPattern}`
+ ];
+
+ for (const key of requestKeys) {
+ if (soapBody?.[key]) {
+ return soapBody[key] as SoapBodyData;
+ }
+ }
+
+ // 패턴 검색
+ for (const key of Object.keys(soapBody)) {
+ if (key.includes(requestKeyPattern)) {
+ return soapBody[key] as SoapBodyData;
+ }
+ }
+
+ // 메인 데이터가 직접 있는 경우
+ if (soapBody.MATL && Array.isArray(soapBody.MATL)) {
+ return soapBody;
+ }
+
+ return null;
+}
+
+// 범용 XML → DB 변환 함수
+export function convertXMLToDBData<T extends Record<string, unknown>>(
+ xmlData: Record<string, string | undefined>,
+ requiredFields: (keyof T)[] = [],
+ fkData?: Record<string, string>
+): T {
+ const result = {} as T;
+
+ // XML 필드를 DB 필드로 변환 (string → string|null)
+ for (const key in xmlData) {
+ if (xmlData.hasOwnProperty(key)) {
+ const value = xmlData[key];
+ (result as Record<string, unknown>)[key] = value || null;
+ }
+ }
+
+ // 필수 필드 처리 (FK 등)
+ for (const field of requiredFields) {
+ if (!result[field] && fkData) {
+ const fieldStr = String(field);
+ if (fkData[fieldStr]) {
+ (result as Record<string, unknown>)[field] = fkData[fieldStr];
+ }
+ }
+ }
+
+ return result;
+}
+
+// 중첩 배열 처리 함수
+export function processNestedArray<T, U>(
+ items: T[] | undefined,
+ converter: (item: T, fkData?: Record<string, string>) => U,
+ fkData?: Record<string, string>
+): U[] {
+ if (!items || !Array.isArray(items)) {
+ return [];
+ }
+
+ return items.map(item => converter(item, fkData));
+}
+
+// 에러 응답 생성
+export function createErrorResponse(error: unknown): NextResponse {
+ console.error('API Error:', error);
+
+ const errorResponse = `<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+ <soap:Body>
+ <soap:Fault>
+ <faultcode>soap:Server</faultcode>
+ <faultstring>${error instanceof Error ? ('[from eVCP]: ' + error.message) : 'Unknown error'}</faultstring>
+ </soap:Fault>
+ </soap:Body>
+</soap:Envelope>`;
+
+ return new NextResponse(errorResponse, {
+ status: 500,
+ headers: {
+ 'Content-Type': 'text/xml; charset=utf-8',
+ },
+ });
+}
+
+// 성공 응답 생성
+export function createSuccessResponse(namespace: string): NextResponse {
+ const xmlResponse = `<?xml version="1.0" encoding="UTF-8"?>
+<soap:Envelope
+ xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:tns="${namespace}">
+ <soap:Body>
+ </soap:Body>
+</soap:Envelope>`;
+
+ return new NextResponse(xmlResponse, {
+ headers: {
+ 'Content-Type': 'text/xml; charset=utf-8',
+ },
+ });
+}
+
+// 하위 테이블 처리: FK 기준으로 전체 삭제 후 재삽입
+export async function replaceSubTableData<T>(
+ tx: any,
+ table: any,
+ data: T[],
+ parentField: string,
+ parentValue: string
+) {
+ // 1. 기존 데이터 전체 삭제 (FK 기준) - eq() 함수 사용
+ await tx.delete(table).where(eq(table[parentField], parentValue));
+
+ // 2. 새 데이터 삽입
+ if (data.length > 0) {
+ await tx.insert(table).values(data);
+ }
+}
+
+// ========================================
+// SOAP 로그 관련 공통 함수들
+// ========================================
+
+/**
+ * SOAP 요청 로그를 시작하고 로그 ID를 반환
+ * @param direction 수신/송신 구분 ('INBOUND' | 'OUTBOUND')
+ * @param system 시스템명 (예: 'S-ERP', 'MDG')
+ * @param interfaceName 인터페이스명 (예: 'IF_MDZ_EVCP_CUSTOMER_MASTER')
+ * @param requestData 요청 XML 데이터
+ * @returns 생성된 로그 ID
+ */
+export async function startSoapLog(
+ direction: LogDirection,
+ system: string,
+ interfaceName: string,
+ requestData: string
+): Promise<number> {
+ try {
+ const logData: SoapLogInsert = {
+ direction,
+ system,
+ interface: interfaceName,
+ startedAt: new Date(),
+ endedAt: null,
+ isSuccess: false,
+ requestData,
+ responseData: null,
+ errorMessage: null,
+ };
+
+ const [result] = await db.insert(soapLogs).values(logData).returning({ id: soapLogs.id });
+
+ console.log(`📝 SOAP 로그 시작 [${direction}] ${system}/${interfaceName} - ID: ${result.id}`);
+ return result.id;
+ } catch (error) {
+ console.error('SOAP 로그 시작 실패:', error);
+ throw error;
+ }
+}
+
+/**
+ * SOAP 요청 로그를 완료 처리
+ * @param logId 로그 ID
+ * @param isSuccess 성공 여부
+ * @param responseData 응답 XML 데이터 (선택사항)
+ * @param errorMessage 에러 메시지 (실패시)
+ */
+export async function completeSoapLog(
+ logId: number,
+ isSuccess: boolean,
+ responseData?: string,
+ errorMessage?: string
+): Promise<void> {
+ try {
+ await db.update(soapLogs)
+ .set({
+ endedAt: new Date(),
+ isSuccess,
+ responseData: responseData || null,
+ errorMessage: errorMessage || null,
+ })
+ .where(eq(soapLogs.id, logId));
+
+ console.log(`✅ SOAP 로그 완료 - ID: ${logId}, 성공: ${isSuccess}`);
+ } catch (error) {
+ console.error('SOAP 로그 완료 처리 실패:', error);
+ throw error;
+ }
+}
+
+/**
+ * 환경변수 기반으로 오래된 SOAP 로그 정리
+ * SOAP_LOG_MAX_RECORDS 환경변수를 확인하여 최대 개수 초과시 오래된 로그 삭제
+ */
+export async function cleanupOldSoapLogs(): Promise<void> {
+ try {
+ const maxRecords = parseInt(process.env.SOAP_LOG_MAX_RECORDS || '0');
+
+ if (maxRecords <= 0) {
+ console.log('🔄 SOAP 로그 정리: 무제한 저장 설정 (SOAP_LOG_MAX_RECORDS = 0)');
+ return;
+ }
+
+ // 현재 총 로그 개수 확인
+ const totalLogs = await db.select({ count: soapLogs.id }).from(soapLogs);
+ const currentCount = totalLogs.length;
+
+ if (currentCount <= maxRecords) {
+ console.log(`🔄 SOAP 로그 정리: 현재 ${currentCount}개, 최대 ${maxRecords}개 - 정리 불필요`);
+ return;
+ }
+
+ // 삭제할 개수 계산
+ const deleteCount = currentCount - maxRecords;
+
+ // 가장 오래된 로그들 조회 (ID 기준)
+ const oldestLogs = await db.select({ id: soapLogs.id })
+ .from(soapLogs)
+ .orderBy(soapLogs.id)
+ .limit(deleteCount);
+
+ if (oldestLogs.length === 0) {
+ console.log('🔄 SOAP 로그 정리: 삭제할 로그 없음');
+ return;
+ }
+
+ // 오래된 로그들 삭제
+ const oldestIds = oldestLogs.map(log => log.id);
+
+ // 배치 삭제 (IN 절 사용)
+ for (const logId of oldestIds) {
+ await db.delete(soapLogs).where(eq(soapLogs.id, logId));
+ }
+
+ console.log(`🗑️ SOAP 로그 정리 완료: ${deleteCount}개 삭제 (${currentCount} → ${maxRecords})`);
+ } catch (error) {
+ console.error('SOAP 로그 정리 실패:', error);
+ throw error;
+ }
+}
+
+/**
+ * SOAP 로그 관련 래퍼 함수: 로그 시작부터 완료까지 자동 처리
+ * @param direction 수신/송신 구분
+ * @param system 시스템명
+ * @param interfaceName 인터페이스명
+ * @param requestData 요청 데이터
+ * @param processor 실제 비즈니스 로직 함수
+ * @returns 처리 결과
+ */
+export async function withSoapLogging<T>(
+ direction: LogDirection,
+ system: string,
+ interfaceName: string,
+ requestData: string,
+ processor: () => Promise<T>
+): Promise<T> {
+ let logId: number | null = null;
+
+ try {
+ // 1. 로그 시작
+ logId = await startSoapLog(direction, system, interfaceName, requestData);
+
+ // 2. 실제 처리 실행
+ const result = await processor();
+
+ // 3. 성공 로그 완료
+ await completeSoapLog(logId, true);
+
+ // 4. 로그 정리 (백그라운드)
+ cleanupOldSoapLogs().catch(error =>
+ console.error('백그라운드 로그 정리 실패:', error)
+ );
+
+ return result;
+
+ } catch (error) {
+ // 5. 실패 로그 완료
+ if (logId !== null) {
+ await completeSoapLog(
+ logId,
+ false,
+ undefined,
+ error instanceof Error ? error.message : 'Unknown error'
+ );
+ }
+
+ throw error;
+ }
+} \ No newline at end of file
diff --git a/app/api/auth/[...nextauth]/saml/provider.ts b/app/api/auth/[...nextauth]/saml/provider.ts
index 8486a690..dfe3d830 100644
--- a/app/api/auth/[...nextauth]/saml/provider.ts
+++ b/app/api/auth/[...nextauth]/saml/provider.ts
@@ -228,6 +228,7 @@ export async function authenticateSAMLUser(userData: SAMLUser) {
}
}
+// TODO: SecuritySetting 함수에서 가져올 것
// NextAuth JWT 토큰 생성 헬퍼
export async function createNextAuthToken(user: User): Promise<string> {
const token = {
@@ -239,7 +240,7 @@ export async function createNextAuthToken(user: User): Promise<string> {
domain: user.domain,
imageUrl: user.imageUrl,
iat: Math.floor(Date.now() / 1000),
- exp: Math.floor(Date.now() / 1000) + (30 * 24 * 60 * 60) // 30일
+ exp: Math.floor(Date.now() / 1000) + (480 * 60) // 480분
};
const secret = process.env.NEXTAUTH_SECRET!;
@@ -256,4 +257,3 @@ export function getSessionCookieName(): string {
? '__Secure-next-auth.session-token'
: 'next-auth.session-token';
}
- \ No newline at end of file
diff --git a/components/login/login-form.tsx b/components/login/login-form.tsx
index 7af607b5..bb588ba0 100644
--- a/components/login/login-form.tsx
+++ b/components/login/login-form.tsx
@@ -272,7 +272,7 @@ export function LoginForm({
});
}
} catch (error) {
- console.error('Login error:', error);
+ console.error('S-GIPS Login error:', error);
toast({
title: t('errorTitle'),
description: t('defaultErrorMessage'),
diff --git a/db/schema/MDG/mdg.ts b/db/schema/MDG/mdg.ts
index 217f94bb..31dc61d3 100644
--- a/db/schema/MDG/mdg.ts
+++ b/db/schema/MDG/mdg.ts
@@ -1,1323 +1,1812 @@
-import { relations } from 'drizzle-orm';
-import { timestamp, integer, varchar, pgSchema, unique } from 'drizzle-orm/pg-core';
+import { pgSchema } from 'drizzle-orm/pg-core';
+import { integer, varchar, timestamp, text } from 'drizzle-orm/pg-core';
-// MDG 전용 PostgreSQL 스키마 생성
+// 테이블이 너무 많아서 별도 스키마로 분리함
export const mdgSchema = pgSchema("mdg");
-export const BP_HEADER = mdgSchema.table('BP_HEADER', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BP_HEADER: varchar({ length: 255 }), // Business Partner Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- VNDRCD: varchar({ length: 255 }), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+// unique 잡아준 건 충돌 기준이 됨
+// fk 는 정의서에서 안나와 있어서 나프로님 알려준 거 + 추정해서 만듦.
+
+// WSDL 기반 자동 생성된 스키마
+// 생성일시: 2025-06-25 00:28:21 (UTC로 9시간 빼야 한국 시간)
+// 개선사항:
+// 1. WSDL별로 테이블 만들었음. 인터페이스 정의서에 문제가 많아서 어쩔 수 없었음.
+// 2. 타입은 varchar를 사용하도록 했음. 숫자관련된 건 부호, 소수점 대비 방어적으로 처리함 (사이즈)
+// 3. 테이블명에서 '/' 문자를 '_'로 변경하여 PostgreSQL/TypeScript 호환성 확보함
+
+// 수작업 처리한 부분은
+// 1. 루트 테이블 주석 추가
+// 2. FK 없는 건 명시적으로 추가
+
+// 참고로 PK 관련해서는, 루트 테이블에 대해선 id가 필요없을수도 있음.
+// 다만... 방어적으로 코딩하기 위해 별도의 인공키를 PK로 사용하기로 했음.
+// 하위 테이블은 unique로 추정되는 필드가 있어도, 무시하기로 했음.
+// 왜냐면 인터페이스 정의서를 신뢰할 수 없기에, 데이터가 어떤 식으로 들어오는지 알 수 없기 때문임
+// 어차피 전체 필드를 보내준다고 했으니, 루트만 충돌 기준을 정해두고, 하위 테이블은 FK 기준으로 전부 지우고 다시 넣으면 됨.
+
+// [root]
+export const CUSTOMER_MASTER_BP_HEADER = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ BP_HEADER: varchar({ length: 10 }).notNull().unique(), // Business Partner Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.BP_HEADER),
-]);
+});
-// TODO: 물어봐야 함
-// BP_HEADER_ADDRESS 를 upsert 할 때 저장해줘야 하는건지? ADR_NO가 어떤 BP_HEADER에 속하는지 알 방법이 없는 상태임
-// 인터페이스 정의서에서도 안 주는데, XML 객체 구조상에서 파악해야 하는거면, 파싱 단계에서 처리해줘야 해서 할 일이 늘어남
+export const CUSTOMER_MASTER_BP_HEADER_ADDRESS = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
-export const BP_HEADER_ADDRESS = mdgSchema.table('BP_HEADER_ADDRESS', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- bp_header_id: integer('bp_header_id').references(() => BP_HEADER.id), // BP_HEADER FK
- ADR_NO: varchar({ length: 255 }), // 주소번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ ADDRNO: varchar({ length: 10 }).notNull(), // Address Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.ADR_NO),
-]);
+});
+
+export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
-export const BP_HEADER_ADDRESS_AD_EMAIL = mdgSchema.table('BP_HEADER_ADDRESS_AD_EMAIL', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- address_id: integer('address_id').references(() => BP_HEADER_ADDRESS.id), // BP_HEADER_ADDRESS FK
- CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- EMAIL_ADR: varchar({ length: 255 }), // 이메일주소 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- SMTP_ADDR: varchar({ length: 255 }), // E-Mail Address // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ SMTP_ADDR: varchar({ length: 241 }), // E-Mail Address // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.CONSNUMBER, table.VLD_ST_DT),
-]);
+});
+
+export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
-export const BP_HEADER_ADDRESS_AD_FAX = mdgSchema.table('BP_HEADER_ADDRESS_AD_FAX', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- FAXNO: varchar({ length: 255 }), // 팩스번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- FAX_ETS_NO: varchar({ length: 255 }), // 팩스내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- FAX_EXTENS: varchar({ length: 255 }), // Fax no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- FAX_NUMBER: varchar({ length: 255 }), // Fax number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ COUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ FAX_EXTENS: varchar({ length: 10 }), // Fax no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ FAX_NUMBER: varchar({ length: 30 }), // Fax number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_ADDRESS_AD_POSTAL = mdgSchema.table('BP_HEADER_ADDRESS_AD_POSTAL', {
+export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ADR_1: varchar({ length: 255 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ADR_2: varchar({ length: 255 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ADR_TMZ: varchar({ length: 255 }), // 주소시간대 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CITY1: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- CITY2: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- CITY_ZIP_NO: varchar({ length: 255 }), // 도시우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ETC_ADR_1: varchar({ length: 255 }), // 기타주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ETC_ADR_2: varchar({ length: 255 }), // 기타주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- HOUSE_NUM1: varchar({ length: 255 }), // House Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- INTL_ADR_VER_ID: varchar({ length: 255 }), // 국제주소버전ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- LANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- LANG_KEY: varchar({ length: 255 }), // 언어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- NAME1: varchar({ length: 255 }), // Name 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- NAME2: varchar({ length: 255 }), // Name 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- NAME3: varchar({ length: 255 }), // Name 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- NAME4: varchar({ length: 255 }), // Name 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- NATION: varchar({ length: 255 }), // International address version ID // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- POBX: varchar({ length: 255 }), // 사서함 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- POBX_ZIP_NO: varchar({ length: 255 }), // 사서함우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- POST_CODE1: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- POST_CODE2: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- PO_BOX: varchar({ length: 255 }), // PO Box // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- REGION: varchar({ length: 255 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- REGN_CD: varchar({ length: 255 }), // 지역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SORT1: varchar({ length: 255 }), // Search Term 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- SORT2: varchar({ length: 255 }), // Search Term 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- STREET: varchar({ length: 255 }), // Street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- TAXJURCODE: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- TAX_JRDT_ZONE_CD: varchar({ length: 255 }), // 조세관할구역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- TIME_ZONE: varchar({ length: 255 }), // Time zone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- TITLE: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- TRANSPZONE: varchar({ length: 255 }), // Transportation zone to or from which the goods are // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- TRANS_ZONE: varchar({ length: 255 }), // 운송구역 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- TTL: varchar({ length: 255 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNM_1: varchar({ length: 255 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNM_2: varchar({ length: 255 }), // VENDOR명2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNM_3: varchar({ length: 255 }), // VENDOR명3 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNM_4: varchar({ length: 255 }), // VENDOR명4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNM_ABRV_1: varchar({ length: 255 }), // VENDOR명약어1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNM_ABRV_2: varchar({ length: 255 }), // VENDOR명약어2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const BP_HEADER_ADDRESS_AD_TEL = mdgSchema.table('BP_HEADER_ADDRESS_AD_TEL', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- ETX_NO: varchar({ length: 255 }), // 내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- HP_ORDR: varchar({ length: 255 }), // 핸드폰지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- R3_USER: varchar({ length: 255 }), // ndicator: Telephone is a Mobile Telephone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- TELNO: varchar({ length: 255 }), // 전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- TEL_EXTENS: varchar({ length: 255 }), // Telephone no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- TEL_NUMBER: varchar({ length: 255 }), // Telephone no.: dialling code+number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const BP_HEADER_ADDRESS_AD_URL = mdgSchema.table('BP_HEADER_ADDRESS_AD_URL', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- URI_ADDR: varchar({ length: 255 }), // Universal Resource Identifier (URI) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- URL: varchar({ length: 255 }), // URL // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const BP_HEADER_BP_CUSGEN = mdgSchema.table('BP_HEADER_BP_CUSGEN', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ANRED: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- AUFSD: varchar({ length: 255 }), // Central order block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- FAKSD: varchar({ length: 255 }), // Central billing block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- GFORM: varchar({ length: 255 }), // Legal status // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- JMJAH: varchar({ length: 255 }), // Year for which the number of employees is given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- JMZAH: varchar({ length: 255 }), // Yearly number of employees // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- J_1KFREPRE: varchar({ length: 255 }), // Name of Representative // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- J_1KFTBUS: varchar({ length: 255 }), // Type of Business // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- J_1KFTIND: varchar({ length: 255 }), // Type of Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KATR1: varchar({ length: 255 }), // Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KDKG1: varchar({ length: 255 }), // Condition grp1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KTOKD: varchar({ length: 255 }), // Account Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KUNNR: varchar({ length: 255 }), // Customer Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- LIFNR: varchar({ length: 255 }), // Vendor Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- LIFSD: varchar({ length: 255 }), // Central delivery block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- NIELS: varchar({ length: 255 }), // Customer Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- NODEL: varchar({ length: 255 }), // Central deletion block for master record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- PUGRP: varchar({ length: 255 }), // Customer Group Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- SPERR: varchar({ length: 255 }), // Central Posting Block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- STCD1: varchar({ length: 255 }), // Tax Number 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- STCD2: varchar({ length: 255 }), // Tax Number 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- STCD3: varchar({ length: 255 }), // Tax Number 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- STCD4: varchar({ length: 255 }), // Tax Number 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- STCEG: varchar({ length: 255 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- UMJAH: varchar({ length: 255 }), // Year For Which Sales are Given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- UMSAT: varchar({ length: 255 }), // Annual Sales // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- UWAER: varchar({ length: 255 }), // Currency of Sales figure // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- VBUND: varchar({ length: 255 }), // Company ID of Trading Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZAPPDT_C: varchar({ length: 255 }), // Apporval Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZAPPTM_C: varchar({ length: 255 }), // Apporval Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZAPPUS_C: varchar({ length: 255 }), // Apporval User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZBA: varchar({ length: 255 }), // Business Area(GBM) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZBRSCH_C: varchar({ length: 255 }), // Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZCRMCD: varchar({ length: 255 }), // CRM Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZDOKAR_C: varchar({ length: 255 }), // Document Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZDOKNR_C: varchar({ length: 255 }), // Document // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZDOKTL_C: varchar({ length: 255 }), // Document Part // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZDOKVR_C: varchar({ length: 255 }), // Document version // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZDUNS: varchar({ length: 255 }), // DUNS Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZFTBU: varchar({ length: 255 }), // F-Tree BU Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZFTBUNM: varchar({ length: 255 }), // F-Tree BU Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZFTDT: varchar({ length: 255 }), // F-Tree DT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZFTDTNM: varchar({ length: 255 }), // F-Tree DT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZFTGT: varchar({ length: 255 }), // F-Tree GT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZFTGTNM: varchar({ length: 255 }), // F-Tree GT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZINBFLGC: varchar({ length: 255 }), // Inbound Flag // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZLAMDT_C: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZLAMTM_C: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZLAMUS_C: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZORT01_C: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZORT02_C: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZREASON: varchar({ length: 255 }), // Reason for Duplication // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZREGDT_C: varchar({ length: 255 }), // Registerd Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZREGTM_C: varchar({ length: 255 }), // Registerd Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZREGUS_C: varchar({ length: 255 }), // Registerd User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZSTCDT_C: varchar({ length: 255 }), // Tax number type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZSTRAS_C: varchar({ length: 255 }), // House number and street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZZSUBSEQ_C: varchar({ length: 255 }), // 종사업장 일련번호 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ CITY1: varchar({ length: 40 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ CITY2: varchar({ length: 40 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ COUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ HOUSE_NUM1: varchar({ length: 10 }), // House Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ LANGU: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ NAME1: varchar({ length: 40 }), // Name 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ NAME2: varchar({ length: 40 }), // Name 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ NAME3: varchar({ length: 40 }), // Name 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ NAME4: varchar({ length: 40 }), // Name 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ NATION: varchar({ length: 10 }).notNull(), // International address version ID // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ POST_CODE1: varchar({ length: 10 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ POST_CODE2: varchar({ length: 10 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ PO_BOX: varchar({ length: 10 }), // PO Box // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ REGION: varchar({ length: 10 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ SORT1: varchar({ length: 20 }), // Search Term 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ SORT2: varchar({ length: 20 }), // Search Term 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ STREET: varchar({ length: 60 }), // Street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ TAXJURCODE: varchar({ length: 15 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ TIME_ZONE: varchar({ length: 10 }), // Time zone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ TITLE: varchar({ length: 10 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ TRANSPZONE: varchar({ length: 10 }), // Transportation zone to or from which the goods are // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_BP_CUSGEN_ZCOMPANY = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZCOMPANY', {
+export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- AKONT: varchar({ length: 255 }), // Reconcil.acct // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- BUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- FDGRV: varchar({ length: 255 }), // Planning Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- SPERR: varchar({ length: 255 }), // Posting block for company code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZAHLS: varchar({ length: 255 }), // Block Key for Payment // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZTERM: varchar({ length: 255 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZUAWA: varchar({ length: 255 }), // Sort key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZWELS: varchar({ length: 255 }), // List of the Payment Methods to be Considered // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ COUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ R3_USER: varchar({ length: 10 }), // ndicator: Telephone is a Mobile Telephone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ TEL_EXTENS: varchar({ length: 10 }), // Telephone no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ TEL_NUMBER: varchar({ length: 30 }), // Telephone no.: dialling code+number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_BP_CUSGEN_ZSALES = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZSALES', {
+export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ANTLF: varchar({ length: 255 }), // Maximum Number of Partial Deliveries Allowed Per I // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- AUFSD: varchar({ length: 255 }), // Customer order block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- AWAHR: varchar({ length: 255 }), // Order probability of the item // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- BZIRK: varchar({ length: 255 }), // Sales district // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- FAKSD: varchar({ length: 255 }), // Billing block for customer (sales and distribution // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- INCO1: varchar({ length: 255 }), // Incoterms (Part 1) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- INCO2: varchar({ length: 255 }), // Incoterms (Part 2) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KALKS: varchar({ length: 255 }), // Pricing procedure assigned to this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KDGRP: varchar({ length: 255 }), // Customer group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KONDA: varchar({ length: 255 }), // Price group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KTGRD: varchar({ length: 255 }), // Account assignment group for this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KURST: varchar({ length: 255 }), // Exchange Rate Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KZAZU: varchar({ length: 255 }), // Order Combination // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- LIFSD: varchar({ length: 255 }), // Customer delivery block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- LPRIO: varchar({ length: 255 }), // Delivery Priority // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- PLTYP: varchar({ length: 255 }), // Price List // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- SPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- VERSG: varchar({ length: 255 }), // Customer Statistics Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- VKBUR: varchar({ length: 255 }), // Sales Office // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- VKGRP: varchar({ length: 255 }), // Sales Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- VKORG: varchar({ length: 255 }), // Sales Org. // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- VSBED: varchar({ length: 255 }), // Shipping Conditions // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- VTWEG: varchar({ length: 255 }), // Distr. Channel // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- VWERK: varchar({ length: 255 }), // From plant // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- WAERS: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- ZTERM: varchar({ length: 255 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- DEFPA: varchar({ length: 255 }), // Default Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- KUNN2: varchar({ length: 255 }), // Customer number of business partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- PARVW: varchar({ length: 255 }), // Partner Function // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- PARZA: varchar({ length: 255 }), // Partner counter // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const BP_HEADER_BP_CUSGEN_ZTAXIND = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZTAXIND', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ALAND: varchar({ length: 255 }), // Departure country // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- TATYP: varchar({ length: 255 }), // Tax category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- TAXKD: varchar({ length: 255 }), // Tax classification for customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const BP_HEADER_BP_CUSGEN_ZVATREG = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZVATREG', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- LAND1: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- STCEG: varchar({ length: 255 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const BP_HEADER_BP_TAXNUM = mdgSchema.table('BP_HEADER_BP_TAXNUM', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BIZ_PTNR_TX_NO: varchar({ length: 255 }), // 사업파트너세금번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- TAXNUM: varchar({ length: 255 }), // Business Partner Tax Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
- TAXTYPE: varchar({ length: 255 }), // Tax Number Category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
- TX_NO_CTG: varchar({ length: 255 }), // 세금번호범주 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
-
+ CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ URI_ADDR: text(), // Universal Resource Identifier (URI) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_BP_VENGEN = mdgSchema.table('BP_HEADER_BP_VENGEN', {
+export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ACNT_GRP: varchar({ length: 255 }), // 계정그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ACNT_GRP_TP: varchar({ length: 255 }), // 계정그룹유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ADR_1: varchar({ length: 255 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ADR_2: varchar({ length: 255 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- AGR_DT: varchar({ length: 255 }), // 승인일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- AGR_R_ID: varchar({ length: 255 }), // 승인자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- AGR_TM: varchar({ length: 255 }), // 승인시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- BIZCON: varchar({ length: 255 }), // 산업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- BIZR_NO: varchar({ length: 255 }), // 사업자번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- BIZTP: varchar({ length: 255 }), // 사업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- BIZ_UOM_CD: varchar({ length: 255 }), // 사업단위코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- BIZ_UOM_NM: varchar({ length: 255 }), // 사업단위명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CHGR_ID: varchar({ length: 255 }), // 변경자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CHG_DT: varchar({ length: 255 }), // 변경일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CHG_TM: varchar({ length: 255 }), // 변경시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CO_ID: varchar({ length: 255 }), // 법인ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CO_REG_NO: varchar({ length: 255 }), // 법인등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CO_VLM: varchar({ length: 255 }), // 기업규모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CSTM_CD: varchar({ length: 255 }), // 고객코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DEL_HOLD_ORDR: varchar({ length: 255 }), // 삭제보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DMST_TOP_CD: varchar({ length: 255 }), // 국내TOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DMST_TOP_NM: varchar({ length: 255 }), // 국내TOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DNS_NO: varchar({ length: 255 }), // DUNS번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DOC_NO: varchar({ length: 255 }), // 문서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DOC_TP: varchar({ length: 255 }), // 문서유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DOC_VER: varchar({ length: 255 }), // 문서버전 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- FIR_NM: varchar({ length: 255 }), // FIRST이름 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- GBL_TOP_CD: varchar({ length: 255 }), // GLOBALTOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- GBL_TOP_NM: varchar({ length: 255 }), // GLOBALTOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- GIRO_VNDR_ORDR: varchar({ length: 255 }), // 지로VENDOR지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- HOLD_CAUS: varchar({ length: 255 }), // 보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- INB_FLAG: varchar({ length: 255 }), // 인바운드플래그 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- INTL_LCTN_CHK_NUM: varchar({ length: 255 }), // 국제LOCATION점검숫자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- OVLAP_CAUS_CD: varchar({ length: 255 }), // 중복사유코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PST_HOLD_ORDR: varchar({ length: 255 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PTNT_VNDRCD: varchar({ length: 255 }), // 잠재VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PTN_DOC: varchar({ length: 255 }), // 부분문서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PUR_HOLD_DT: varchar({ length: 255 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PUR_HOLD_ORDR: varchar({ length: 255 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- QLT_CHRGR_EMAIL: varchar({ length: 255 }), // 품질담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- QLT_CHRGR_NM: varchar({ length: 255 }), // 품질담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- QLT_CHRGR_TELNO: varchar({ length: 255 }), // 품질담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REGR_ID: varchar({ length: 255 }), // 등록자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REG_DT: varchar({ length: 255 }), // 등록일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REG_TM: varchar({ length: 255 }), // 등록시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REPR_NM: varchar({ length: 255 }), // 대표자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REPR_RESNO: varchar({ length: 255 }), // 대표자주민번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REP_TEL_NO: varchar({ length: 255 }), // 대표전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SB_WKA_SEQ: varchar({ length: 255 }), // SUB작업장순서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRCETX_RP_SEX_KEY: varchar({ length: 255 }), // 원천세의무자성별키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- TTL: varchar({ length: 255 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- TX_CD_4: varchar({ length: 255 }), // 세금번호4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VAT_REG_NO: varchar({ length: 255 }), // 부가세등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNM_1: varchar({ length: 255 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDRNO: varchar({ length: 255 }), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ ANRED: varchar({ length: 15 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ AUFSD: varchar({ length: 10 }), // Central order block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ FAKSD: varchar({ length: 10 }), // Central billing block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ GFORM: varchar({ length: 10 }), // Legal status // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ JMJAH: varchar({ length: 10 }), // Year for which the number of employees is given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ JMZAH: varchar({ length: 10 }), // Yearly number of employees // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ J_1KFREPRE: varchar({ length: 10 }), // Name of Representative // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ J_1KFTBUS: varchar({ length: 30 }), // Type of Business // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ J_1KFTIND: varchar({ length: 30 }), // Type of Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KATR1: varchar({ length: 10 }), // Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KDKG1: varchar({ length: 10 }), // Condition grp1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KTOKD: varchar({ length: 10 }), // Account Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KUNNR: varchar({ length: 10 }).notNull(), // Customer Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ LIFNR: varchar({ length: 10 }), // Vendor Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ LIFSD: varchar({ length: 10 }), // Central delivery block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ LOEVM: varchar({ length: 10 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ NIELS: varchar({ length: 10 }), // Customer Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ NODEL: varchar({ length: 10 }), // Central deletion block for master record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ PUGRP: varchar({ length: 20 }), // Customer Group Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ SPERR: varchar({ length: 10 }), // Central Posting Block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ STCD1: varchar({ length: 16 }), // Tax Number 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ STCD2: varchar({ length: 11 }), // Tax Number 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ STCD3: varchar({ length: 18 }), // Tax Number 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ STCD4: varchar({ length: 18 }), // Tax Number 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ STCEG: varchar({ length: 20 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ UMJAH: varchar({ length: 10 }), // Year For Which Sales are Given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ UWAER: varchar({ length: 10 }), // Currency of Sales figure // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ VBUND: varchar({ length: 10 }), // Company ID of Trading Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZAPPDT_C: varchar({ length: 10 }), // Apporval Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZAPPTM_C: varchar({ length: 10 }), // Apporval Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZAPPUS_C: varchar({ length: 12 }), // Apporval User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZBA: varchar({ length: 10 }), // Business Area(GBM) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZBRSCH_C: varchar({ length: 10 }), // Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZCRMCD: varchar({ length: 20 }), // CRM Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZDOKAR_C: varchar({ length: 10 }), // Document Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZDOKNR_C: varchar({ length: 25 }), // Document // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZDOKTL_C: varchar({ length: 10 }), // Document Part // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZDOKVR_C: varchar({ length: 10 }), // Document version // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZDUNS: varchar({ length: 11 }), // DUNS Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZFTBU: varchar({ length: 10 }), // F-Tree BU Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZFTBUNM: varchar({ length: 40 }), // F-Tree BU Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZFTDT: varchar({ length: 10 }), // F-Tree DT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZFTDTNM: varchar({ length: 40 }), // F-Tree DT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZFTGT: varchar({ length: 10 }), // F-Tree GT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZFTGTNM: varchar({ length: 40 }), // F-Tree GT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZINBFLGC: varchar({ length: 10 }), // Inbound Flag // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZLAMDT_C: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZLAMTM_C: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZLAMUS_C: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZORT01_C: varchar({ length: 35 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZORT02_C: varchar({ length: 35 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZREASON: varchar({ length: 10 }), // Reason for Duplication // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZREGDT_C: varchar({ length: 10 }), // Registerd Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZREGTM_C: varchar({ length: 10 }), // Registerd Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZREGUS_C: varchar({ length: 12 }), // Registerd User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZSTCDT_C: varchar({ length: 10 }), // Tax number type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZSTRAS_C: varchar({ length: 35 }), // House number and street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZZSUBSEQ_C: varchar({ length: 10 }), // 종사업장 일련번호 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_BP_VENGEN_BP_COMPNY = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_COMPNY', {
+export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ACOT_CHRGR_FAXNO: varchar({ length: 255 }), // 회계담당자FAX번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ACOT_CHRGR_TELNO: varchar({ length: 255 }), // 회계담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- AUTH_GRP: varchar({ length: 255 }), // 권한그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- BF_VNDRCD: varchar({ length: 255 }), // 이전VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CO_CD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- CSTM_VNDR_CLR_ORDR: varchar({ length: 255 }), // CUSTOMER,VENDOR반제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CTL_ACNT: varchar({ length: 255 }), // 조정계정 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- FIN_IR_ACT_DT: varchar({ length: 255 }), // 최종이자실행일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- FIN_IR_CALC_DT: varchar({ length: 255 }), // 최종이자계산일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- IATA_BIC_GB: varchar({ length: 255 }), // IATA,BIC구분 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- LOGST_VNDR_TP: varchar({ length: 255 }), // 물류VENDOR유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- MEMO: varchar({ length: 255 }), // 메모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- MIN_ORDR: varchar({ length: 255 }), // 소수지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- MK_CHRGR_EMAIL: varchar({ length: 255 }), // MAKER담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- MOFFC_ACNT_NO: varchar({ length: 255 }), // 본사계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- OVLAP_INVC_ORDR: varchar({ length: 255 }), // 중복송장지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PLN_GRP: varchar({ length: 255 }), // 계획그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PST_HOLD_ORDR: varchar({ length: 255 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- REP_TP: varchar({ length: 255 }), // 대표유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SPLY_COND: varchar({ length: 255 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SPLY_HOLD_ORDR: varchar({ length: 255 }), // 지급보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SPLY_MTHD: varchar({ length: 255 }), // 지급방법 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SPRT_SPLY_ORDR: varchar({ length: 255 }), // 분리지급지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRCE_TX_CD: varchar({ length: 255 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRCE_TX_NTN_CD: varchar({ length: 255 }), // 원천세국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRT_KEY: varchar({ length: 255 }), // 정렬키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- TRD_BANK_SHRT_KEY: varchar({ length: 255 }), // 거래은행단축키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDR_ACNT_NO: varchar({ length: 255 }), // VENDOR계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDR_CHRGR_NM: varchar({ length: 255 }), // VENDOR담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ AKONT: varchar({ length: 10 }), // Reconcil.acct // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ BUKRS: varchar({ length: 10 }).notNull(), // Company Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ FDGRV: varchar({ length: 10 }), // Planning Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ LOEVM: varchar({ length: 10 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ SPERR: varchar({ length: 10 }), // Posting block for company code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZAHLS: varchar({ length: 10 }), // Block Key for Payment // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZTERM: varchar({ length: 10 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZUAWA: varchar({ length: 10 }), // Sort key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZWELS: varchar({ length: 10 }), // List of the Payment Methods to be Considered // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX', {
+export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- DCHAG_CAUS: varchar({ length: 255 }), // 면제사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DCHAG_CERT_NO: varchar({ length: 255 }), // 면제증명서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DCHAG_ED_DT: varchar({ length: 255 }), // 면제종료일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DCHAG_RAT: varchar({ length: 255 }), // 면제율 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DCHAG_ST_DT: varchar({ length: 255 }), // 면제시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- RECIP_TP: varchar({ length: 255 }), // 수취인유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRCE_TX_IDENT_NO: varchar({ length: 255 }), // 원천세식별번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRCE_TX_NO: varchar({ length: 255 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRCE_TX_REL_ORDR: varchar({ length: 255 }), // 원천세관련지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SRCE_TX_TP: varchar({ length: 255 }), // 원천세유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ AUFSD: varchar({ length: 10 }), // Customer order block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ AWAHR: varchar({ length: 10 }), // Order probability of the item // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ BZIRK: varchar({ length: 10 }), // Sales district // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ FAKSD: varchar({ length: 10 }), // Billing block for customer (sales and distribution // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ INCO1: varchar({ length: 10 }), // Incoterms (Part 1) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ INCO2: varchar({ length: 28 }), // Incoterms (Part 2) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KALKS: varchar({ length: 10 }), // Pricing procedure assigned to this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KDGRP: varchar({ length: 10 }), // Customer group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KONDA: varchar({ length: 10 }), // Price group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KTGRD: varchar({ length: 10 }), // Account assignment group for this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KURST: varchar({ length: 10 }), // Exchange Rate Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KZAZU: varchar({ length: 10 }), // Order Combination // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ LIFSD: varchar({ length: 10 }), // Customer delivery block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ LOEVM: varchar({ length: 10 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ LPRIO: varchar({ length: 10 }), // Delivery Priority // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ PLTYP: varchar({ length: 10 }), // Price List // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ SPART: varchar({ length: 10 }).notNull(), // Division // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ VERSG: varchar({ length: 10 }), // Customer Statistics Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ VKBUR: varchar({ length: 10 }), // Sales Office // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ VKGRP: varchar({ length: 10 }), // Sales Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ VKORG: varchar({ length: 10 }).notNull(), // Sales Org. // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ VSBED: varchar({ length: 10 }), // Shipping Conditions // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ VTWEG: varchar({ length: 10 }).notNull(), // Distr. Channel // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ VWERK: varchar({ length: 10 }), // From plant // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ WAERS: varchar({ length: 10 }), // Currency // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ ZTERM: varchar({ length: 10 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_BP_VENGEN_BP_PORG = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_PORG', {
+export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- AT_PUR_ORD_ORDR: varchar({ length: 255 }), // 자동구매오더지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CALC_SHM_GRP: varchar({ length: 255 }), // 계산스키마그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- CNFM_CTL_KEY: varchar({ length: 255 }), // 확정제어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DL_COND_1: varchar({ length: 255 }), // 인도조건1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- DL_COND_2: varchar({ length: 255 }), // 인도조건2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- GR_BSE_INVC_VR: varchar({ length: 255 }), // GR기준송장검증 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ORD_CNFM_REQ_ORDR: varchar({ length: 255 }), // 오더확인요청지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PUR_HOLD_CAUS: varchar({ length: 255 }), // 구매보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PUR_HOLD_DT: varchar({ length: 255 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PUR_HOLD_ORDR: varchar({ length: 255 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PUR_ORD_CUR: varchar({ length: 255 }), // 구매오더통화 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PUR_ORG_CD: varchar({ length: 255 }), // 구매조직 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- SALE_CHRGR_NM: varchar({ length: 255 }), // 영업담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- SPLY_COND: varchar({ length: 255 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- VNDR_TELNO: varchar({ length: 255 }), // VENDOR전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DEFPA: varchar({ length: 10 }), // Default Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ KUNN2: varchar({ length: 10 }), // Customer number of business partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ PARVW: varchar({ length: 10 }).notNull(), // Partner Function // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ PARZA: varchar({ length: 10 }).notNull(), // Partner counter // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN', {
+export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BSE_PTNR_ORDR: varchar({ length: 255 }), // 기본파트너지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- ETC_REF_VNDRCD: varchar({ length: 255 }), // 기타참조VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
- PLNT_NO: varchar({ length: 255 }), // 플랜트번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- PTNR_CNT: varchar({ length: 255 }), // 파트너카운터 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- PTNR_SKL: varchar({ length: 255 }), // 파트너기능 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
- VNDR_SUB_NO: varchar({ length: 255 }), // VENDOR서브번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ ALAND: varchar({ length: 10 }).notNull(), // Departure country // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ TATYP: varchar({ length: 10 }).notNull(), // Tax category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ TAXKD: varchar({ length: 10 }), // Tax classification for customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_DEPT_MDG = mdgSchema.table('CMCTB_DEPT_MDG', {
+export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BICD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- BIZAREA: varchar({ length: 255 }), // 사업부문 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- CCCD: varchar({ length: 255 }), // 코스트센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- COMPCD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- CORPCD: varchar({ length: 255 }), // 법인코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
- DEPTCD: varchar({ length: 255 }), // 부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
- DEPTLVL: varchar({ length: 255 }), // 부서레벨 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- DEPTPOSNO: varchar({ length: 255 }), // 부서위치 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- DHEMPID: varchar({ length: 255 }), // 부서장사번 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- GNCD: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- PCCD: varchar({ length: 255 }), // 손익센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- PDEPTCD: varchar({ length: 255 }), // 상위부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- VALIDFROMDT: varchar({ length: 255 }), // 유효일자(시작) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- VALIDTODT: varchar({ length: 255 }), // 유효일자(끝) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- WERKS: varchar({ length: 255 }), // 플랜트코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const CMCTB_DEPT_MDG_COMPNM = mdgSchema.table('CMCTB_DEPT_MDG_COMPNM', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- COMPNM: varchar({ length: 255 }), // 회사명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
+ LAND1: varchar({ length: 10 }).notNull(), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
+ STCEG: varchar({ length: 20 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_DEPT_MDG_CORPNM = mdgSchema.table('CMCTB_DEPT_MDG_CORPNM', {
+export const CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM', {
+ // [fk]
+ BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER),
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CORPNM: varchar({ length: 255 }), // 법인명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
+ TAXNUM: varchar({ length: 20 }), // Business Partner Tax Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+ TAXTYPE: varchar({ length: 10 }).notNull(), // Tax Number Category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_DEPT_MDG_DEPTNM = mdgSchema.table('CMCTB_DEPT_MDG_DEPTNM', {
+// [root]
+export const DEPARTMENT_CODE_CMCTB_DEPT_MDG = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- DEPTNM: varchar({ length: 255 }), // 부서명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
- SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
+ BICD: varchar({ length: 20 }), // 사업장코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ BIZAREA: varchar({ length: 10 }), // 사업부문 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ CCCD: varchar({ length: 10 }), // 코스트센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ COMPCD: varchar({ length: 20 }), // 회사코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ CORPCD: varchar({ length: 10 }).notNull(), // 법인코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
+ DEPTCD: varchar({ length: 10 }).notNull().unique(), // 부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
+ DEPTLVL: varchar({ length: 10 }), // 부서레벨 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ DEPTPOSNO: varchar({ length: 30 }), // 부서위치 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ DHEMPID: varchar({ length: 20 }), // 부서장사번 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ GNCD: varchar({ length: 20 }), // From multiple sources // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ PCCD: varchar({ length: 10 }), // 손익센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ PDEPTCD: varchar({ length: 10 }), // 상위부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ VALIDFROMDT: varchar({ length: 10 }), // 유효일자(시작) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ VALIDTODT: varchar({ length: 10 }), // 유효일자(끝) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ WERKS: varchar({ length: 10 }), // 플랜트코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG = mdgSchema.table('CMCTB_EMP_MDG', {
+export const DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM', {
+ // [fk]
+ DEPTCD: varchar({ length: 10 }).notNull().references(() => DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD), // 부서코드
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ADDRCNTRY: varchar({ length: 255 }), // 우편번호의 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- AEDAT: varchar({ length: 255 }), // 수정날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- AENAM: varchar({ length: 255 }), // 수정자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- AEZET: varchar({ length: 255 }), // 최근수정시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- BICD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- BIZAREA: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- BSCADDR: varchar({ length: 255 }), // Basic Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- COMPCD: varchar({ length: 255 }), // 회사 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- CORPCD: varchar({ length: 255 }), // 법인 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- COUNTRYCD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- CSFROMDT: varchar({ length: 255 }), // [에스원]CS Start Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- CSTODT: varchar({ length: 255 }), // [에스원]CS End Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- CTIROLE: varchar({ length: 255 }), // [에스원]CTI Authority // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DEL: varchar({ length: 255 }), // 삭제Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DEPENDDT: varchar({ length: 255 }), // 파견종료예정일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DEPTCD: varchar({ length: 255 }), // 부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DHJOBGRDCD: varchar({ length: 255 }), // 부서장 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DHNAME: varchar({ length: 255 }), // 부서장 이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DHSINGLID: varchar({ length: 255 }), // 부서장 SingleID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DISPATCH: varchar({ length: 255 }), // 파견여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DPSTARTDT: varchar({ length: 255 }), // 파견발령일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DTLADDR: varchar({ length: 255 }), // Detail Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- DTLADDR2: varchar({ length: 255 }), // Detail Address2 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- EMAIL: varchar({ length: 255 }), // 이메일주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- EMPADR: varchar({ length: 255 }), // 주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- EMPID: varchar({ length: 255 }), // 사원번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
- EMPTYPE: varchar({ length: 255 }), // 인력유형 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ENGNAME: varchar({ length: 255 }), // 사원영문이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- EPID: varchar({ length: 255 }), // EPID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ERDAT: varchar({ length: 255 }), // 생성날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ERNAM: varchar({ length: 255 }), // 생성자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ERZET: varchar({ length: 255 }), // 생성시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- FORIGNFLG: varchar({ length: 255 }), // [기획]Foreign Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- GJOBCD: varchar({ length: 255 }), // Global 직무 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- GJOBDUTYCD: varchar({ length: 255 }), // Global 직책 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- GJOBGRDCD: varchar({ length: 255 }), // Global 직급 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- GNCD: varchar({ length: 255 }), // 총괄코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- HRMANAGE: varchar({ length: 255 }), // HR시스템에서 관리 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- IDNO: varchar({ length: 255 }), // [모직]개인ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- JOBCD: varchar({ length: 255 }), // 직무코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- JOBCLASS: varchar({ length: 255 }), // [에스원]Job Class Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- JOBDUTYCD: varchar({ length: 255 }), // 직책코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- JOBGRDCD: varchar({ length: 255 }), // 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- KTL_EMP: varchar({ length: 255 }), // 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- LVABSENCE: varchar({ length: 255 }), // 휴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- MBPHONE: varchar({ length: 255 }), // 개인 휴대폰 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- NAME: varchar({ length: 255 }), // 사원이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- OKTL_EMPL: varchar({ length: 255 }), // 원소속부서 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ORGBICD: varchar({ length: 255 }), // 원소속사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ORGCOMPCD: varchar({ length: 255 }), // 원소속회사코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ORGCORPCD: varchar({ length: 255 }), // 원소속법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ORGDEPTCD: varchar({ length: 255 }), // 원소속부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ORGPDEPCD: varchar({ length: 255 }), // 원소속부서의 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- PAYPLC: varchar({ length: 255 }), // Payplace for Employee // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- PDEPTCD: varchar({ length: 255 }), // 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- PSTLCODE: varchar({ length: 255 }), // 우편번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- RETIRE: varchar({ length: 255 }), // 퇴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SEX: varchar({ length: 255 }), // 성별 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SINGLEID: varchar({ length: 255 }), // 싱글 ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SINGLRQ: varchar({ length: 255 }), // 싱글ID 요청 상태 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SOCIALID: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SOCIALID_DECR: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SOJRNEMP: varchar({ length: 255 }), // 주재원 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- TELNUM: varchar({ length: 255 }), // 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- TMPJDIV: varchar({ length: 255 }), // [에스원]Non-Regular Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- USEDSYS: varchar({ length: 255 }), // [기획]Used System // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- VALFROMDT: varchar({ length: 255 }), // 근무시작일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- VALTODT: varchar({ length: 255 }), // 종료예정일(퇴직일자-정규직일경우) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- WFREQUIRE: varchar({ length: 255 }), // 전결필요여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- WORKPLC: varchar({ length: 255 }), // 근무처 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ZPRFLG: varchar({ length: 255 }), // 업데이트 여부 Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- ZZBUKRS: varchar({ length: 255 }), // ECC Company 코드 (재무법인코드) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ COMPNM: varchar({ length: 90 }), // 회사명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_BANM = mdgSchema.table('CMCTB_EMP_MDG_BANM', {
+export const DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM', {
+ // [fk]
+ DEPTCD: varchar({ length: 10 }).notNull().references(() => DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD), // 부서코드
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- GTEXT: varchar({ length: 255 }), // Business area description // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (BIZAREA) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ CORPNM: varchar({ length: 90 }), // 법인명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_BINM = mdgSchema.table('CMCTB_EMP_MDG_BINM', {
+export const DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM', {
+ // [fk]
+ DEPTCD: varchar({ length: 10 }).notNull().references(() => DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD), // 부서코드
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BINM: varchar({ length: 255 }), // Business Place Name (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ DEPTNM: varchar({ length: 90 }), // 부서명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_COMPNM = mdgSchema.table('CMCTB_EMP_MDG_COMPNM', {
+// [root]
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- COMPNM: varchar({ length: 255 }), // Company Name (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ ADDRCNTRY: varchar({ length: 10 }), // 우편번호의 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ AEDAT: varchar({ length: 10 }), // 수정날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ AENAM: varchar({ length: 12 }), // 수정자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ AEZET: varchar({ length: 10 }), // 최근수정시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ BICD: varchar({ length: 20 }), // 사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ BIZAREA: varchar({ length: 10 }), // Business Area // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ BSCADDR: varchar({ length: 35 }), // Basic Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ COMPCD: varchar({ length: 20 }), // 회사 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ CORPCD: varchar({ length: 10 }), // 법인 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ COUNTRYCD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ CSFROMDT: varchar({ length: 10 }), // [에스원]CS Start Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ CSTODT: varchar({ length: 10 }), // [에스원]CS End Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ CTIROLE: varchar({ length: 10 }), // [에스원]CTI Authority // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DEL: varchar({ length: 10 }), // 삭제Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DEPENDDT: varchar({ length: 10 }), // 파견종료예정일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DEPTCD: varchar({ length: 10 }), // 부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DHJOBGRDCD: varchar({ length: 29 }), // 부서장 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DHNAME: varchar({ length: 70 }), // 부서장 이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DHSINGLID: varchar({ length: 12 }), // 부서장 SingleID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DISPATCH: varchar({ length: 10 }), // 파견여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DPSTARTDT: varchar({ length: 10 }), // 파견발령일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DTLADDR: varchar({ length: 35 }), // Detail Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ DTLADDR2: varchar({ length: 35 }), // Detail Address2 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ EMAIL: varchar({ length: 40 }), // 이메일주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ EMPADR: varchar({ length: 10 }), // 주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ EMPID: varchar({ length: 20 }).notNull().unique(), // 사원번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ EMPTYPE: varchar({ length: 20 }), // 인력유형 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ENGNAME: varchar({ length: 70 }), // 사원영문이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ EPID: varchar({ length: 50 }), // EPID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ERDAT: varchar({ length: 10 }), // 생성날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ERNAM: varchar({ length: 12 }), // 생성자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ERZET: varchar({ length: 10 }), // 생성시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ FORIGNFLG: varchar({ length: 10 }), // [기획]Foreign Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ GJOBCD: varchar({ length: 20 }), // Global 직무 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ GJOBDUTYCD: varchar({ length: 20 }), // Global 직책 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ GJOBGRDCD: varchar({ length: 20 }), // Global 직급 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ GNCD: varchar({ length: 20 }), // 총괄코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ HRMANAGE: varchar({ length: 10 }), // HR시스템에서 관리 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ IDNO: varchar({ length: 32 }), // [모직]개인ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBCD: varchar({ length: 20 }), // 직무코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBCLASS: varchar({ length: 20 }), // [에스원]Job Class Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBDUTYCD: varchar({ length: 15 }), // 직책코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBGRDCD: varchar({ length: 12 }), // 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ KTL_EMP: varchar({ length: 10 }), // 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ LVABSENCE: varchar({ length: 10 }), // 휴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ MBPHONE: varchar({ length: 20 }), // 개인 휴대폰 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ NAME: varchar({ length: 70 }), // 사원이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ OKTL_EMPL: varchar({ length: 10 }), // 원소속부서 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ORGBICD: varchar({ length: 20 }), // 원소속사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ORGCOMPCD: varchar({ length: 20 }), // 원소속회사코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ORGCORPCD: varchar({ length: 10 }), // 원소속법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ORGDEPTCD: varchar({ length: 10 }), // 원소속부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ORGPDEPCD: varchar({ length: 10 }), // 원소속부서의 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ PAYPLC: varchar({ length: 10 }), // Payplace for Employee // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ PDEPTCD: varchar({ length: 10 }), // 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ PSTLCODE: varchar({ length: 10 }), // 우편번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ RETIRE: varchar({ length: 10 }), // 퇴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SEX: varchar({ length: 10 }), // 성별 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SINGLEID: varchar({ length: 12 }), // 싱글 ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SINGLRQ: varchar({ length: 10 }), // 싱글ID 요청 상태 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SOCIALID: varchar({ length: 16 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SOCIALID_DECR: varchar({ length: 16 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SOJRNEMP: varchar({ length: 10 }), // 주재원 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ TELNUM: varchar({ length: 20 }), // 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ TMPJDIV: varchar({ length: 20 }), // [에스원]Non-Regular Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ USEDSYS: varchar({ length: 20 }), // [기획]Used System // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ VALFROMDT: varchar({ length: 10 }), // 근무시작일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ VALTODT: varchar({ length: 10 }), // 종료예정일(퇴직일자-정규직일경우) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ WFREQUIRE: varchar({ length: 10 }), // 전결필요여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ WORKPLC: varchar({ length: 16 }), // 근무처 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ZPRFLG: varchar({ length: 10 }), // 업데이트 여부 Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ ZZBUKRS: varchar({ length: 10 }), // ECC Company 코드 (재무법인코드) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_CORPNM = mdgSchema.table('CMCTB_EMP_MDG_CORPNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CORPNM: varchar({ length: 255 }), // Corporate Name (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ GTEXT: varchar({ length: 30 }), // Business area description // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (BIZAREA) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_COUNTRYNM = mdgSchema.table('CMCTB_EMP_MDG_COUNTRYNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- COUNTRYNM: varchar({ length: 255 }), // Country Name (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ BINM: varchar({ length: 60 }), // Business Place Name (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_DEPTCODE = mdgSchema.table('CMCTB_EMP_MDG_DEPTCODE', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- PCCD: varchar({ length: 255 }), // Profit Center Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- WERKS: varchar({ length: 255 }), // Plant Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ COMPNM: varchar({ length: 60 }), // Company Name (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_DEPTCODE_PCCDNM = mdgSchema.table('CMCTB_EMP_MDG_DEPTCODE_PCCDNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- KTEXT: varchar({ length: 255 }), // General Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- LTEXT: varchar({ length: 255 }), // Long Text // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ CORPNM: varchar({ length: 60 }), // Corporate Name (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_DEPTNM = mdgSchema.table('CMCTB_EMP_MDG_DEPTNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- DEPTNM: varchar({ length: 255 }), // Department Name (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ COUNTRYNM: varchar({ length: 60 }), // Country Name (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_DHJOBGDNM = mdgSchema.table('CMCTB_EMP_MDG_DHJOBGDNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- JOBGRDNM: varchar({ length: 255 }), // Job Grade Name (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ PCCD: varchar({ length: 10 }), // Profit Center Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ WERKS: varchar({ length: 10 }), // Plant Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_GJOBDUTYNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBDUTYNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- GJOBDUTYNM: varchar({ length: 255 }), // Global Job Duty Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (GJOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ KTEXT: varchar({ length: 20 }), // General Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ LTEXT: varchar({ length: 40 }), // Long Text // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_GJOBGRDNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBGRDNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- GJOBGRDNM: varchar({ length: 255 }), // Global Job Grade Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (GJOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ DEPTNM: varchar({ length: 60 }), // Department Name (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_GJOBGRDTYPE = mdgSchema.table('CMCTB_EMP_MDG_GJOBGRDTYPE', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ISEXECUT: varchar({ length: 255 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- JOBGRDTYPE: varchar({ length: 255 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBGRDNM: varchar({ length: 60 }), // Job Grade Name (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_GJOBNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- SPRAS: varchar({ length: 255 }), // Language Key (GJOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ GJOBDUTYNM: varchar({ length: 21 }), // Global Job Duty Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GJOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_GNNM = mdgSchema.table('CMCTB_EMP_MDG_GNNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- GNNM: varchar({ length: 255 }), // General Name (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ GJOBGRDNM: varchar({ length: 21 }), // Global Job Grade Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GJOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_JOBDUTYNM = mdgSchema.table('CMCTB_EMP_MDG_JOBDUTYNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- JOBDUTYNM: varchar({ length: 255 }), // Job Duty Name (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ ISEXECUT: varchar({ length: 10 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBGRDTYPE: varchar({ length: 10 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_JOBGRDNM = mdgSchema.table('CMCTB_EMP_MDG_JOBGRDNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ISEXECUT: varchar({ length: 255 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- JOBGRDNM: varchar({ length: 255 }), // Job Grade Name (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- JOBGRDTYPE: varchar({ length: 255 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ GJOBNM: varchar({ length: 20 }), // Global Job Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GJOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_JOBNM = mdgSchema.table('CMCTB_EMP_MDG_JOBNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- JOBNM: varchar({ length: 255 }), // Job Name (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ GNNM: varchar({ length: 60 }), // General Name (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_KTLNM = mdgSchema.table('CMCTB_EMP_MDG_KTLNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- LTEXT: varchar({ length: 255 }), // Cost Center (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ JOBDUTYNM: varchar({ length: 60 }), // Job Duty Name (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_OKTLNM = mdgSchema.table('CMCTB_EMP_MDG_OKTLNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- LTEXT: varchar({ length: 255 }), // Cost Center (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ ISEXECUT: varchar({ length: 10 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBGRDNM: varchar({ length: 60 }), // Job Grade Name (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ JOBGRDTYPE: varchar({ length: 10 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_ORGBICDNM = mdgSchema.table('CMCTB_EMP_MDG_ORGBICDNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BINM: varchar({ length: 255 }), // Business Place Name (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ JOBNM: varchar({ length: 60 }), // Job Name (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_ORGCOMPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGCOMPNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- COMPNM: varchar({ length: 255 }), // Company Name (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ LTEXT: varchar({ length: 40 }), // Cost Center (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_ORGCORPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGCORPNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CORPNM: varchar({ length: 255 }), // Corporate Name (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ LTEXT: varchar({ length: 40 }), // Cost Center (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_ORGDEPTNM = mdgSchema.table('CMCTB_EMP_MDG_ORGDEPTNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- DEPTNM: varchar({ length: 255 }), // Department Name (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ BINM: varchar({ length: 60 }), // Business Place Name (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_ORGPDEPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGPDEPNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- DEPTNM: varchar({ length: 255 }), // Department Name (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
+ COMPNM: varchar({ length: 60 }), // Company Name (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_MDG_PDEPTNM = mdgSchema.table('CMCTB_EMP_MDG_PDEPTNM', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- DEPTNM: varchar({ length: 255 }), // Department Name (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ CORPNM: varchar({ length: 60 }), // Corporate Name (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_REF_MDG_IF = mdgSchema.table('CMCTB_EMP_REF_MDG_IF', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ADTL_01: varchar({ length: 255 }), // 추가필드1 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
- ADTL_02: varchar({ length: 255 }), // 추가필드2 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
- CORPCD: varchar({ length: 255 }), // 법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
- GRPCD: varchar({ length: 255 }), // 그룹코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
- MAINCD: varchar({ length: 255 }), // 메인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
- VALIDFROMDT: varchar({ length: 255 }), // 시작유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
- VALIDTODT: varchar({ length: 255 }), // 종료유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
+ DEPTNM: varchar({ length: 60 }), // Department Name (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_EMP_REF_MDG_IF_NAME = mdgSchema.table('CMCTB_EMP_REF_MDG_IF_NAME', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- NAME: varchar({ length: 255 }), // 코드명 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
+ DEPTNM: varchar({ length: 60 }), // Department Name (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_MAT_BSE = mdgSchema.table('CMCTB_MAT_BSE', {
+export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM', {
+ // [fk]
+ EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- IF_MSG: varchar({ length: 255 }), // IF 메시지 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
- IF_STAT: varchar({ length: 255 }), // IF 상태 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
- MAT_CD: varchar({ length: 255 }), // 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl // WSDL에서 필수 필드
- MAT_ID: varchar({ length: 255 }), // PLM 채번 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
+ DEPTNM: varchar({ length: 60 }), // Department Name (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }), // Language Key (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const CMCTB_PROJ_MAST = mdgSchema.table('CMCTB_PROJ_MAST', {
+// [root]
+export const EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF = mdgSchema.table('EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- AS_GRNT_PRD: varchar({ length: 255 }), // A/S 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- BIZCLS: varchar({ length: 255 }), // 사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- BIZLOC_CD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- BIZ_DMN: varchar({ length: 255 }), // 사업영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- BP_DL_DT: varchar({ length: 255 }), // 선표인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CHN_PROJ_TP: varchar({ length: 255 }), // (중국)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CLS_1: varchar({ length: 255 }), // 선급1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CLS_2: varchar({ length: 255 }), // 선급2 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CNRT_CNTN_YN: varchar({ length: 255 }), // 계약존속여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CNRT_DL_DT: varchar({ length: 255 }), // 계약인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CNRT_DT: varchar({ length: 255 }), // 계약일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CNRT_RESV_YN: varchar({ length: 255 }), // 계약유보여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CO_CD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- CSTM_PO_NO: varchar({ length: 255 }), // 고객발주번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- DEL_YN: varchar({ length: 255 }), // 삭제 여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- DIGT_PDT_GRP: varchar({ length: 255 }), // 전기전자 제품군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- DIST_PATH: varchar({ length: 255 }), // 유통경로 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- DL_BF_PROJ_NM: varchar({ length: 255 }), // 인도전선명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- DL_CSTM_CD: varchar({ length: 255 }), // 인도고객 ID // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- DOCK_CD: varchar({ length: 255 }), // 도크 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- DSN_CHRGR: varchar({ length: 255 }), // 설계담당자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- EXMPT_AREA: varchar({ length: 255 }), // 면세면적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- EXMPT_RAT: varchar({ length: 255 }), // 면세율 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- FIN_GRNT_FN_DT: varchar({ length: 255 }), // 최종수요자 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- GENT_CNT: varchar({ length: 255 }), // 세대수/시리즈 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- GOV: varchar({ length: 255 }), // 관청명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- GRNT_STDT: varchar({ length: 255 }), // Project Warranty Start Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- GT: varchar({ length: 255 }), // G/T // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- IF_STAT: varchar({ length: 255 }), // 인터페이스 진행단계 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- IMO_NO: varchar({ length: 255 }), // IMO 번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- INQY_NO: varchar({ length: 255 }), // 안건번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- INQY_SEQ: varchar({ length: 255 }), // 안건순번 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- IO_GB: varchar({ length: 255 }), // 사내외 구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- LOA: varchar({ length: 255 }), // L.O.A // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- MNG_ACOT_DMN: varchar({ length: 255 }), // 관리회계영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- MN_ENGN_TP_CD: varchar({ length: 255 }), // Main engine type code // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- MSHIP_NO: varchar({ length: 255 }), // 기준호선 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- NEW_MC_YN: varchar({ length: 255 }), // MC YN // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- NTTP: varchar({ length: 255 }), // 국적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- ORDR_GRNT_FN_DT: varchar({ length: 255 }), // 주문주 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- ORDR_GRNT_PRD: varchar({ length: 255 }), // 주문주 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- OWN_1: varchar({ length: 255 }), // 선주1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- OWN_AB: varchar({ length: 255 }), // 선주약어 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- OWN_NM: varchar({ length: 255 }), // 선주명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PDT_LVL_4: varchar({ length: 255 }), // 제품 Level 4 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PLNT_CD: varchar({ length: 255 }), // 플랜트 코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PRCTR: varchar({ length: 255 }), // 손익센터 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PRGS_STAT: varchar({ length: 255 }), // 진행상태 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_CRTE_REQ_DT: varchar({ length: 255 }), // 프로젝트 생성요청일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_CRTE_REQ_EMPNO: varchar({ length: 255 }), // 프로젝트 생성요청자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_DL_PLN_DT: varchar({ length: 255 }), // 모프로젝트 인도계획일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_DL_RT_DT: varchar({ length: 255 }), // 모프로젝트 인도실적일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_DSC: varchar({ length: 255 }), // 프로젝트 설명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_DTL_TP: varchar({ length: 255 }), // 프로젝트 세부타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_ETC_TP: varchar({ length: 255 }), // 프로젝트 기타타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_GB: varchar({ length: 255 }), // 프로젝트구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_NO: varchar({ length: 255 }), // 프로젝트번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl // WSDL에서 필수 필드
- PROJ_PRGS_YN: varchar({ length: 255 }), // 공사진행여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_PROF: varchar({ length: 255 }), // 프로젝트 프로파일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_SCP: varchar({ length: 255 }), // 프로젝트범위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PROJ_WBS_TP: varchar({ length: 255 }), // 프로젝트 WBS타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- PRO_PROJ_NO: varchar({ length: 255 }), // 프로포절 프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- QM_CLS: varchar({ length: 255 }), // 품질사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- REF_NO: varchar({ length: 255 }), // 시리즈번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- RLTD_PROJ: varchar({ length: 255 }), // 연관프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- RL_DL_DT: varchar({ length: 255 }), // 실인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SALE_GRP: varchar({ length: 255 }), // 영업그룹 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SALE_ORG_CD: varchar({ length: 255 }), // 영업조직 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SA_DT: varchar({ length: 255 }), // Sail Away Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SERS_NO: varchar({ length: 255 }), // 시리즈첫공사번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SERS_YN: varchar({ length: 255 }), // 시리즈여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SHTYPE: varchar({ length: 255 }), // 선형 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SHTYPE_CD: varchar({ length: 255 }), // 선형코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SHTYPE_GRP: varchar({ length: 255 }), // 선형군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SHTYPE_UOM: varchar({ length: 255 }), // 선형단위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SKND: varchar({ length: 255 }), // 선종 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SPD: varchar({ length: 255 }), // Speed // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SRC_SYS_ID: varchar({ length: 255 }), // Source System // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- STDT: varchar({ length: 255 }), // 시작일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- SYS_ACOT_CLSD_DT: varchar({ length: 255 }), // 시스템회계마감일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- TOT_AREA: varchar({ length: 255 }), // 전체면적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- TOT_CNRT_CNT: varchar({ length: 255 }), // 전체 계약 대수 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- TYPE: varchar({ length: 255 }), // 프로젝트 Top/Hull // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
- WP_PROJ_TP: varchar({ length: 255 }), // (풍력)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
-
- createdAt: timestamp('created_at').defaultNow().notNull(),
- updatedAt: timestamp('updated_at').defaultNow().notNull(),
-});
-
-export const HRHMTB_CCTR = mdgSchema.table('HRHMTB_CCTR', {
- id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ABTEI: varchar({ length: 255 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ANRED: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- BKZER: varchar({ length: 255 }), // Actual Revenue // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- BKZKP: varchar({ length: 255 }), // Actual Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- BKZKS: varchar({ length: 255 }), // Actual Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- BKZOB: varchar({ length: 255 }), // Commitment Update // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- BUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- CCTR: varchar({ length: 255 }), // Cost Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- DATAB: varchar({ length: 255 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- DATBI: varchar({ length: 255 }), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- DATLT: varchar({ length: 255 }), // Data communication line no. // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- DRNAM: varchar({ length: 255 }), // Printer destination for CCtr report // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- FUNC_AREA: varchar({ length: 255 }), // Functional Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- GSBER: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- KHINR: varchar({ length: 255 }), // Standard Hierarchy Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- KOKRS: varchar({ length: 255 }), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- KOSAR: varchar({ length: 255 }), // Cost Center Category // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- LAND1: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- MGEFL: varchar({ length: 255 }), // Record Quantity // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- NAME1: varchar({ length: 255 }), // Name 1 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- NAME2: varchar({ length: 255 }), // Name 2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- NAME3: varchar({ length: 255 }), // Name 3 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- NAME4: varchar({ length: 255 }), // Name 4 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ORT01: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ORT02: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PFACH: varchar({ length: 255 }), // PO Box // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PKZER: varchar({ length: 255 }), // Plan Revenues // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PKZKP: varchar({ length: 255 }), // Plan Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PKZKS: varchar({ length: 255 }), // Plan Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PRCTR: varchar({ length: 255 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PSTL2: varchar({ length: 255 }), // P.O. Box Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PSTLZ: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- REGIO: varchar({ length: 255 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- SPRAS: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- STRAS: varchar({ length: 255 }), // House number and street // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TELBX: varchar({ length: 255 }), // Telebox number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TELF1: varchar({ length: 255 }), // First telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TELF2: varchar({ length: 255 }), // Second telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TELFX: varchar({ length: 255 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TELTX: varchar({ length: 255 }), // Teletex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TELX1: varchar({ length: 255 }), // Telex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TXJCD: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- VERAK: varchar({ length: 255 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- VERAK_USE: varchar({ length: 255 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- VMETH: varchar({ length: 255 }), // Allowed Allocation methods // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- WAERS: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZBRANCH: varchar({ length: 255 }), // Business Place // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZDELETE: varchar({ length: 255 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZFCTRI: varchar({ length: 255 }), // Create Fund Center Indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZSECCODE: varchar({ length: 255 }), // Section Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZSEGMENT: varchar({ length: 255 }), // Segment for Segmental Reporting // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ADTL_01: varchar({ length: 10 }), // 추가필드1 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
+ ADTL_02: varchar({ length: 10 }), // 추가필드2 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
+ CORPCD: varchar({ length: 10 }).notNull(), // 법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
+ GRPCD: varchar({ length: 10 }).notNull().unique(), // 그룹코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
+ MAINCD: varchar({ length: 20 }).notNull(), // 메인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
+ VALIDFROMDT: varchar({ length: 10 }), // 시작유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
+ VALIDTODT: varchar({ length: 10 }), // 종료유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_CCTR_TEXT = mdgSchema.table('HRHMTB_CCTR_TEXT', {
+export const EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME = mdgSchema.table('EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME', {
+ // [fk]
+ GRPCD: varchar({ length: 10 }).notNull().references(() => EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF.GRPCD), // 그룹코드
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- KTEXT: varchar({ length: 255 }), // General Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- LTEXT: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ NAME: varchar({ length: 90 }), // 코드명 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_PCTR = mdgSchema.table('HRHMTB_PCTR', {
+// [root]
+export const EQUP_MASTER_MATL = mdgSchema.table('EQUP_MASTER_MATL', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ABTEI: varchar({ length: 255 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- DATAB: varchar({ length: 255 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- DATBI: varchar({ length: 255 }), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- KHINR: varchar({ length: 255 }), // Profit center area(Profit center group) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- KOKRS: varchar({ length: 255 }), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- LOCK_IND: varchar({ length: 255 }), // Lock indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- PCTR: varchar({ length: 255 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- SEGMENT: varchar({ length: 255 }), // Segment // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- TXJCD: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- VERAK: varchar({ length: 255 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- VERAK_USE: varchar({ length: 255 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZDELETE: varchar({ length: 255 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BISMT: varchar({ length: 18 }), // Old material number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ GROES: varchar({ length: 32 }), // Size/dimensions // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ LVORM: varchar({ length: 10 }), // Deletion flag // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MAGRV: varchar({ length: 10 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MATKL: varchar({ length: 10 }), // Material Group // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MATNR: varchar({ length: 18 }).notNull().unique(), // Material Number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MBRSH: varchar({ length: 10 }), // Industry sector // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MEINS: varchar({ length: 10 }), // Base Unit of Measure // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MSTAE: varchar({ length: 10 }), // Material Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MSTDE: varchar({ length: 10 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MTART: varchar({ length: 10 }), // Material Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ NTGEW: varchar({ length: 16 }), // Net Weight // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ PRDHA: varchar({ length: 18 }), // Product hierarchy // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ SPART: varchar({ length: 10 }), // Division // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ VHART: varchar({ length: 10 }), // Packaging Material Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZAPPDT: varchar({ length: 10 }), // Approval Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZAPPTM: varchar({ length: 10 }), // Approval Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZAPPUS: varchar({ length: 12 }), // Approval User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZNAME: varchar({ length: 40 }), // Material Name // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZBUKRS = mdgSchema.table('HRHMTB_ZBUKRS', {
+export const EQUP_MASTER_MATL_CHARASGN = mdgSchema.table('EQUP_MASTER_MATL_CHARASGN', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CURR_BUKR: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZBUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZBUTXT: varchar({ length: 255 }), // Company Code Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZCITY: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZCOUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZLANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ATAW1: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ATAWE: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ATBEZ: varchar({ length: 30 }), // 특성내역 // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ATFLB: varchar({ length: 16 }), // Internal floating point value to // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ATFLV: varchar({ length: 16 }), // Internal floating point from // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ATNAM: varchar({ length: 30 }), // Characteristic Name // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ATWRT: varchar({ length: 30 }), // Characteristic Value // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ATWTB: varchar({ length: 30 }), // 특성값내역 // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZEKGRP = mdgSchema.table('HRHMTB_ZEKGRP', {
+export const EQUP_MASTER_MATL_CLASSASGN = mdgSchema.table('EQUP_MASTER_MATL_CLASSASGN', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZEKGRP: varchar({ length: 255 }), // Purchasing Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZEKNAM: varchar({ length: 255 }), // Purchasing Group Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZEKTEL: varchar({ length: 255 }), // Telephone Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZEMPNUM: varchar({ length: 255 }), // Employee Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZSINGLE: varchar({ length: 255 }), // Single ID // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZTELFX: varchar({ length: 255 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZTEL_NUM: varchar({ length: 255 }), // Telephone Number (Office) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZEKORG = mdgSchema.table('HRHMTB_ZEKORG', {
+export const EQUP_MASTER_MATL_DESC = mdgSchema.table('EQUP_MASTER_MATL_DESC', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZEKORG: varchar({ length: 255 }), // Purchasing Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZEKOTX: varchar({ length: 255 }), // Purchasing Organization Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ MAKTX: varchar({ length: 40 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }), // Language // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZGSBER = mdgSchema.table('HRHMTB_ZGSBER', {
+export const EQUP_MASTER_MATL_PLNT = mdgSchema.table('EQUP_MASTER_MATL_PLNT', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZGSBER: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ LVORM: varchar({ length: 10 }), // Deletion Flag // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MMSTA: varchar({ length: 10 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MMSTD: varchar({ length: 10 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ WERKS: varchar({ length: 10 }), // Plant // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZMTARP: varchar({ length: 10 }), // Plant Material Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZGSBER_TEXT = mdgSchema.table('HRHMTB_ZGSBER_TEXT', {
+export const EQUP_MASTER_MATL_UNIT = mdgSchema.table('EQUP_MASTER_MATL_UNIT', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- LANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- TXTMI: varchar({ length: 255 }), // Business area description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MEABM: varchar({ length: 10 }), // Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ MEINH: varchar({ length: 10 }), // AlternativeUnit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ UMREN: varchar({ length: 10 }), // Denominator // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ UMREZ: varchar({ length: 10 }), // Numerator // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
+ VOLEH: varchar({ length: 10 }), // Volume Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZLGORT = mdgSchema.table('HRHMTB_ZLGORT', {
+// [root]
+export const MATERIAL_MASTER_PART_MATL = mdgSchema.table('MATERIAL_MASTER_PART_MATL', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZLGORT: varchar({ length: 255 }), // Storage Location // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZWERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZLGOBE: varchar({ length: 255 }), // Storage Location Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BISMT: varchar({ length: 18 }), // Old material number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ GROES: varchar({ length: 32 }), // Size/dimensions // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ LVORM: varchar({ length: 10 }), // Deletion flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MAGRV: varchar({ length: 10 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MATKL: varchar({ length: 10 }), // Material Group // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MATNR: varchar({ length: 18 }).notNull().unique(), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ MBRSH: varchar({ length: 10 }), // Industry sector // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MEINS: varchar({ length: 10 }), // Base Unit of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MSTAE: varchar({ length: 10 }), // Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MSTDE: varchar({ length: 10 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MTART: varchar({ length: 10 }), // Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ NTGEW: varchar({ length: 16 }), // Net Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ PRDHA: varchar({ length: 18 }), // Product hierarchy // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ SPART: varchar({ length: 10 }), // Division // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ VHART: varchar({ length: 10 }), // Packaging Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZACT: varchar({ length: 18 }), // Activity Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZAPPDT: varchar({ length: 10 }), // Approval Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZAPPTM: varchar({ length: 10 }), // Approval Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZAPPUS: varchar({ length: 12 }), // Approval User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZCERT: varchar({ length: 10 }), // Certification Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZINSP: varchar({ length: 10 }), // Inspection // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZMMTYP: varchar({ length: 10 }), // Material Master Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZMRC: varchar({ length: 10 }), // MRC // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZNAME: varchar({ length: 40 }), // Material Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZPJT: varchar({ length: 24 }), // Project Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZPLMID: varchar({ length: 50 }), // PLM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZPRCD_SCV_CTLP: varchar({ length: 10 }), // 선행후행조정관 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZPRFLG: varchar({ length: 12 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREPMAT: varchar({ length: 18 }), // REP Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREP_DIA: varchar({ length: 10 }), // 대표지름 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREP_DIA_UOM: varchar({ length: 10 }), // 대표지름단위 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREP_ITM_MATL: varchar({ length: 60 }), // 대표품명재질 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZSMID: varchar({ length: 18 }), // SM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZSTL: varchar({ length: 50 }), // Steel Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZSPART = mdgSchema.table('HRHMTB_ZSPART', {
+export const MATERIAL_MASTER_PART_MATL_CHARASGN = mdgSchema.table('MATERIAL_MASTER_PART_MATL_CHARASGN', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZSPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ATAW1: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ATAWE: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ATBEZ: varchar({ length: 30 }), // 특성내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ATFLB: varchar({ length: 16 }), // Internal floating point value to // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ATFLV: varchar({ length: 16 }), // Internal floating point from // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ATNAM: varchar({ length: 30 }).notNull(), // Characteristic Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ ATWRT: varchar({ length: 30 }), // Characteristic Value // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ATWTB: varchar({ length: 30 }), // 특성값내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ CLASS: varchar({ length: 18 }).notNull(), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ KLART: varchar({ length: 10 }).notNull(), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZVKBUR = mdgSchema.table('HRHMTB_ZVKBUR', {
+export const MATERIAL_MASTER_PART_MATL_CLASSASGN = mdgSchema.table('MATERIAL_MASTER_PART_MATL_CLASSASGN', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CTRY_SOFF: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- LANG_SOFF: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZVKBUR: varchar({ length: 255 }), // Sales Office // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ CLASS: varchar({ length: 18 }).notNull(), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ KLART: varchar({ length: 10 }).notNull(), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZVKGRP = mdgSchema.table('HRHMTB_ZVKGRP', {
+export const MATERIAL_MASTER_PART_MATL_DESC = mdgSchema.table('MATERIAL_MASTER_PART_MATL_DESC', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZVKGRP: varchar({ length: 255 }), // Sales Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ MAKTX: varchar({ length: 40 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ SPRAS: varchar({ length: 10 }).notNull(), // Language // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZVKORG = mdgSchema.table('HRHMTB_ZVKORG', {
+export const MATERIAL_MASTER_PART_MATL_PLNT = mdgSchema.table('MATERIAL_MASTER_PART_MATL_PLNT', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZVKORG: varchar({ length: 255 }), // Sales Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZBOAVO: varchar({ length: 255 }), // Rebate processing active in the sales organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZKUNNR: varchar({ length: 255 }), // Customer number for intercompany billing // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZVKOKL: varchar({ length: 255 }), // Sales organization calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZWAERS: varchar({ length: 255 }), // Statistics currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ LVORM: varchar({ length: 10 }), // Deletion Flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MMSTA: varchar({ length: 10 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MMSTD: varchar({ length: 10 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ WERKS: varchar({ length: 10 }).notNull(), // Plant // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZMTARP: varchar({ length: 10 }), // Plant Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZVSTEL = mdgSchema.table('HRHMTB_ZVSTEL', {
+export const MATERIAL_MASTER_PART_MATL_UNIT = mdgSchema.table('MATERIAL_MASTER_PART_MATL_UNIT', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ALAN_VSTE: varchar({ length: 255 }), // Departure zone // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- AZON_VSTE: varchar({ length: 255 }), // Departure country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- CTRY_SHPT: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- LANG_SHPT: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZVSTEL: varchar({ length: 255 }), // Shipping Point // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZFABKL: varchar({ length: 255 }), // Factory calendar key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZLAZBS: varchar({ length: 255 }), // Determine loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZLAZZT: varchar({ length: 255 }), // Default loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZRIZBS: varchar({ length: 255 }), // Determine pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZRIZZT: varchar({ length: 255 }), // Default pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BREIT: varchar({ length: 13 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ HOEHE: varchar({ length: 13 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ LAENG: varchar({ length: 13 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ MEINH: varchar({ length: 10 }).notNull(), // Alternative Unit of Measure for Stockkeeping Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ UMREN: varchar({ length: 10 }), // Denominator for conversion to base units of measur // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ UMREZ: varchar({ length: 10 }), // Numerator for Conversion to Base Units of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ VOLUM: varchar({ length: 13 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZVTWEG = mdgSchema.table('HRHMTB_ZVTWEG', {
+// [root]
+export const MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE = mdgSchema.table('MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ZVTWEG: varchar({ length: 255 }), // Distribution Channel // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ IF_MSG: varchar({ length: 100 }), // IF 메시지 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
+ IF_STAT: varchar({ length: 10 }), // IF 상태 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
+ MAT_CD: varchar({ length: 18 }).notNull().unique(), // 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl // WSDL에서 필수 필드
+ MAT_ID: varchar({ length: 50 }), // PLM 채번 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const HRHMTB_ZWERKS = mdgSchema.table('HRHMTB_ZWERKS', {
+// [root]
+export const MODEL_MASTER_MATL = mdgSchema.table('MODEL_MASTER_MATL', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CTRY_PLNT: varchar({ length: 255 }), // Country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- LANG_PLNT: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZWERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZFABKL: varchar({ length: 255 }), // Factory Calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZNAME1: varchar({ length: 255 }), // Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
- ZZNAME2: varchar({ length: 255 }), // Name2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BISMT: varchar({ length: 18 }), // Old material number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ GROES: varchar({ length: 32 }), // Size/dimensions // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ LVORM: varchar({ length: 10 }), // Deletion flag // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MAGRV: varchar({ length: 10 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MATKL: varchar({ length: 10 }), // Material Group // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MATNR: varchar({ length: 18 }).notNull().unique(), // Material Number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MBRSH: varchar({ length: 10 }), // Industry sector // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MEINS: varchar({ length: 10 }), // Base Unit of Measure // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MSTAE: varchar({ length: 10 }), // Material Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MSTDE: varchar({ length: 10 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MTART: varchar({ length: 10 }), // Material Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ NTGEW: varchar({ length: 16 }), // Net Weight // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ PRDHA: varchar({ length: 18 }), // Product hierarchy // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ SPART: varchar({ length: 10 }), // Division // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ VHART: varchar({ length: 10 }), // Packaging Material Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZAPPDT: varchar({ length: 10 }), // Approval Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZAPPTM: varchar({ length: 10 }), // Approval Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZAPPUS: varchar({ length: 12 }), // Approval User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZDOKAR: varchar({ length: 10 }), // Document Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZDOKNR: varchar({ length: 25 }), // Document number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZDOKTL: varchar({ length: 10 }), // Document Part // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZDOKVR: varchar({ length: 10 }), // Document Version // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZMMTYP: varchar({ length: 10 }), // Material Master Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZNAME: varchar({ length: 40 }), // Material Name // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
-export const MATL = mdgSchema.table('MATL', {
+export const MODEL_MASTER_MATL_CHARASGN = mdgSchema.table('MODEL_MASTER_MATL_CHARASGN', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number
+
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BISMT: varchar({ length: 255 }), // Old material number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- BREIT: varchar({ length: 255 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- BRGEW: varchar({ length: 255 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- GEWEI: varchar({ length: 255 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- GROES: varchar({ length: 255 }), // Size/dimensions // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- HOEHE: varchar({ length: 255 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- LAENG: varchar({ length: 255 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- LVORM: varchar({ length: 255 }), // Deletion flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MAGRV: varchar({ length: 255 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MATKL: varchar({ length: 255 }), // Material Group // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- // MATNR: MATL 의 키. 이 키를 기준으로 다른 테이블과 연결됨.
- MATNR: varchar({ length: 255 }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- MBRSH: varchar({ length: 255 }), // Industry sector // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MEABM: varchar({ length: 255 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MEINS: varchar({ length: 255 }), // Base Unit of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MSTAE: varchar({ length: 255 }), // Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MSTDE: varchar({ length: 255 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MTART: varchar({ length: 255 }), // Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- NTGEW: varchar({ length: 255 }), // Net Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- PRDHA: varchar({ length: 255 }), // Product hierarchy // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- SPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- VHART: varchar({ length: 255 }), // Packaging Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- VOLEH: varchar({ length: 255 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- VOLUM: varchar({ length: 255 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZACT: varchar({ length: 255 }), // Activity Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZAPPDT: varchar({ length: 255 }), // Approval Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZAPPTM: varchar({ length: 255 }), // Approval Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZAPPUS: varchar({ length: 255 }), // Approval User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZCERT: varchar({ length: 255 }), // Certification Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZDOKAR: varchar({ length: 255 }), // Document Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
- ZZDOKNR: varchar({ length: 255 }), // Document number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
- ZZDOKTL: varchar({ length: 255 }), // Document Part // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
- ZZDOKVR: varchar({ length: 255 }), // Document Version // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
- ZZINSP: varchar({ length: 255 }), // Inspection // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZLAMDT: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZLAMTM: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZLAMUS: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZMMTYP: varchar({ length: 255 }), // Material Master Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZMRC: varchar({ length: 255 }), // MRC // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZNAME: varchar({ length: 255 }), // Material Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZPJT: varchar({ length: 255 }), // Project Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZPLMID: varchar({ length: 255 }), // PLM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZPRCD_SCV_CTLP: varchar({ length: 255 }), // 선행후행조정관 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZPRFLG: varchar({ length: 255 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREGDT: varchar({ length: 255 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREGTM: varchar({ length: 255 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREGUS: varchar({ length: 255 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREPMAT: varchar({ length: 255 }), // REP Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREP_DIA: varchar({ length: 255 }), // 대표지름 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREP_DIA_UOM: varchar({ length: 255 }), // 대표지름단위 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREP_ITM_MATL: varchar({ length: 255 }), // 대표품명재질 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZSMID: varchar({ length: 255 }), // SM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZSTL: varchar({ length: 255 }), // Steel Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ATAW1: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ATAWE: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ATBEZ: varchar({ length: 30 }), // 특성내역 // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ATFLB: varchar({ length: 16 }), // Internal floating point value to // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ATFLV: varchar({ length: 16 }), // Internal floating point from // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ATNAM: varchar({ length: 30 }), // Characteristic Name // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ATWRT: varchar({ length: 30 }), // Characteristic Value // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ATWTB: varchar({ length: 30 }), // 특성값내역 // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const MODEL_MASTER_MATL_CLASSASGN = mdgSchema.table('MODEL_MASTER_MATL_CLASSASGN', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const MODEL_MASTER_MATL_DESC = mdgSchema.table('MODEL_MASTER_MATL_DESC', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ MAKTX: varchar({ length: 40 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }), // Language // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const MODEL_MASTER_MATL_PLNT = mdgSchema.table('MODEL_MASTER_MATL_PLNT', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ LVORM: varchar({ length: 10 }), // Deletion Flag // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MMSTA: varchar({ length: 10 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MMSTD: varchar({ length: 10 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ WERKS: varchar({ length: 10 }), // Plant // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZMTARP: varchar({ length: 10 }), // Plant Material Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const MODEL_MASTER_MATL_UNIT = mdgSchema.table('MODEL_MASTER_MATL_UNIT', {
+ // [fk]
+ MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ BREIT: varchar({ length: 13 }), // Width // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ HOEHE: varchar({ length: 13 }), // Height // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ LAENG: varchar({ length: 13 }), // Length // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ MEINH: varchar({ length: 10 }), // Alternative Unit of Measure for Stockkeeping Unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ UMREN: varchar({ length: 10 }), // Denominator for conversion to base units of measur // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ UMREZ: varchar({ length: 10 }), // Numerator for Conversion to Base Units of Measure // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+ VOLUM: varchar({ length: 13 }), // Volume // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_CCTR = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_CCTR', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ABTEI: varchar({ length: 12 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ANRED: varchar({ length: 15 }), // Title // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BKZER: varchar({ length: 10 }), // Actual Revenue // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BKZKP: varchar({ length: 10 }), // Actual Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BKZKS: varchar({ length: 10 }), // Actual Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BKZOB: varchar({ length: 10 }), // Commitment Update // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ BUKRS: varchar({ length: 10 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ CCTR: varchar({ length: 10 }).notNull().unique(), // Cost Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ DATAB: varchar({ length: 10 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ DATBI: varchar({ length: 10 }).notNull(), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ DATLT: varchar({ length: 14 }), // Data communication line no. // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ DRNAM: varchar({ length: 10 }), // Printer destination for CCtr report // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ FUNC_AREA: varchar({ length: 16 }), // Functional Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ GSBER: varchar({ length: 10 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ KHINR: varchar({ length: 12 }), // Standard Hierarchy Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ KOKRS: varchar({ length: 10 }).notNull(), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ KOSAR: varchar({ length: 10 }), // Cost Center Category // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ LAND1: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ MGEFL: varchar({ length: 10 }), // Record Quantity // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ NAME1: varchar({ length: 70 }), // Name 1 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ NAME2: varchar({ length: 70 }), // Name 2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ NAME3: varchar({ length: 70 }), // Name 3 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ NAME4: varchar({ length: 70 }), // Name 4 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ORT01: varchar({ length: 35 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ORT02: varchar({ length: 35 }), // District // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PFACH: varchar({ length: 10 }), // PO Box // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PKZER: varchar({ length: 10 }), // Plan Revenues // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PKZKP: varchar({ length: 10 }), // Plan Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PKZKS: varchar({ length: 10 }), // Plan Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PRCTR: varchar({ length: 10 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PSTL2: varchar({ length: 10 }), // P.O. Box Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PSTLZ: varchar({ length: 10 }), // Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ REGIO: varchar({ length: 10 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ SPRAS: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ STRAS: varchar({ length: 35 }), // House number and street // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TELBX: varchar({ length: 15 }), // Telebox number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TELF1: varchar({ length: 16 }), // First telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TELF2: varchar({ length: 16 }), // Second telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TELFX: varchar({ length: 31 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TELTX: varchar({ length: 30 }), // Teletex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TELX1: varchar({ length: 30 }), // Telex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TXJCD: varchar({ length: 15 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ VERAK: varchar({ length: 60 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ VERAK_USE: varchar({ length: 12 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ VMETH: varchar({ length: 10 }), // Allowed Allocation methods // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ WAERS: varchar({ length: 10 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZBRANCH: varchar({ length: 10 }), // Business Place // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZDELETE: varchar({ length: 10 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZFCTRI: varchar({ length: 10 }), // Create Fund Center Indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZSECCODE: varchar({ length: 10 }), // Section Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZSEGMENT: varchar({ length: 10 }), // Segment for Segmental Reporting // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.MATNR),
-]);
+});
+
+export const ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT', {
+ // [fk]
+ CCTR: varchar({ length: 10 }).notNull().unique().references(() => ORGANIZATION_MASTER_HRHMTB_CCTR.CCTR), // Cost Center
-export const MATL_CHARASGN = mdgSchema.table('MATL_CHARASGN', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- ATAW1: varchar({ length: 255 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ATAWE: varchar({ length: 255 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ATBEZ: varchar({ length: 255 }), // 특성내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ATFLB: varchar({ length: 255 }), // Internal floating point value to // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ATFLV: varchar({ length: 255 }), // Internal floating point from // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ATNAM: varchar({ length: 255 }), // Characteristic Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- ATWRT: varchar({ length: 255 }), // Characteristic Value // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ATWTB: varchar({ length: 255 }), // 특성값내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- CLASS: varchar({ length: 255 }), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- KLART: varchar({ length: 255 }), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ KTEXT: varchar({ length: 60 }), // General Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ LTEXT: varchar({ length: 120 }), // Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.MATNR, table.CLASS, table.KLART, table.ATNAM),
-]);
+});
-export const MATL_CLASSASGN = mdgSchema.table('MATL_CLASSASGN', {
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_PCTR = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_PCTR', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- CLASS: varchar({ length: 255 }), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- KLART: varchar({ length: 255 }), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ ABTEI: varchar({ length: 12 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ DATAB: varchar({ length: 10 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ DATBI: varchar({ length: 10 }).notNull(), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ KHINR: varchar({ length: 12 }), // Profit center area(Profit center group) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ KOKRS: varchar({ length: 10 }).notNull(), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ LOCK_IND: varchar({ length: 10 }), // Lock indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ PCTR: varchar({ length: 10 }).notNull().unique(), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ SEGMENT: varchar({ length: 10 }), // Segment // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ TXJCD: varchar({ length: 15 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ VERAK: varchar({ length: 20 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ VERAK_USE: varchar({ length: 12 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZDELETE: varchar({ length: 10 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.MATNR, table.CLASS, table.KLART),
-]);
+});
-export const MATL_DESC = mdgSchema.table('MATL_DESC', {
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZBUKRS = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZBUKRS', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- MAKTX: varchar({ length: 255 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- SPRAS: varchar({ length: 255 }), // Language // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
+ CURR_BUKR: varchar({ length: 10 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZBUKRS: varchar({ length: 10 }).notNull().unique(), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZBUTXT: varchar({ length: 50 }), // Company Code Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZCITY: varchar({ length: 50 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZCOUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZLANGU: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.MATNR, table.SPRAS),
-]);
+});
-export const MATL_PLNT = mdgSchema.table('MATL_PLNT', {
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZEKGRP = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZEKGRP', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- LVORM: varchar({ length: 255 }), // Deletion Flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- MMSTA: varchar({ length: 255 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MMSTD: varchar({ length: 255 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- WERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- ZZLAMDT: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZLAMTM: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZLAMUS: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZMTARP: varchar({ length: 255 }), // Plant Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZPRFLG: varchar({ length: 255 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREGDT: varchar({ length: 255 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREGTM: varchar({ length: 255 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- ZZREGUS: varchar({ length: 255 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZEKGRP: varchar({ length: 10 }).notNull().unique(), // Purchasing Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZEKNAM: varchar({ length: 36 }), // Purchasing Group Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZEKTEL: varchar({ length: 12 }), // Telephone Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZEMPNUM: varchar({ length: 10 }), // Employee Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZSINGLE: varchar({ length: 241 }), // Single ID // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZTELFX: varchar({ length: 31 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZTEL_NUM: varchar({ length: 30 }), // Telephone Number (Office) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.MATNR, table.WERKS),
-]);
+});
-export const MATL_UNIT = mdgSchema.table('MATL_UNIT', {
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZEKORG = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZEKORG', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
- BREIT: varchar({ length: 255 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- BRGEW: varchar({ length: 255 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- GEWEI: varchar({ length: 255 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- HOEHE: varchar({ length: 255 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- LAENG: varchar({ length: 255 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MATNR: varchar({ length: 255 }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- MEABM: varchar({ length: 255 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- MEINH: varchar({ length: 255 }), // Alternative Unit of Measure for Stockkeeping Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드
- UMREN: varchar({ length: 255 }), // Denominator for conversion to base units of measur // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- UMREZ: varchar({ length: 255 }), // Numerator for Conversion to Base Units of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- VOLEH: varchar({ length: 255 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
- VOLUM: varchar({ length: 255 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+ ZEKORG: varchar({ length: 10 }).notNull().unique(), // Purchasing Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZEKOTX: varchar({ length: 40 }), // Purchasing Organization Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(),
-}, (table) => [
- unique().on(table.MATNR, table.MEINH),
-]);
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZGSBER = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZGSBER', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ZGSBER: varchar({ length: 10 }).notNull().unique(), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT', {
+ // [fk]
+ ZGSBER: varchar({ length: 10 }).notNull().unique().references(() => ORGANIZATION_MASTER_HRHMTB_ZGSBER.ZGSBER), // Business Area
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ LANGU: varchar({ length: 10 }).notNull(), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ TXTMI: varchar({ length: 60 }), // Business area description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZLGORT = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZLGORT', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ZLGORT: varchar({ length: 10 }).notNull().unique(), // Storage Location // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZWERKS: varchar({ length: 10 }).notNull(), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZLGOBE: varchar({ length: 32 }), // Storage Location Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZSPART = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZSPART', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ZSPART: varchar({ length: 10 }).notNull().unique(), // Division // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZVKBUR = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVKBUR', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ CTRY_SOFF: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ LANG_SOFF: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZVKBUR: varchar({ length: 10 }).notNull().unique(), // Sales Office // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZVKGRP = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVKGRP', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ZVKGRP: varchar({ length: 10 }).notNull().unique(), // Sales Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZVKORG = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVKORG', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ZVKORG: varchar({ length: 10 }).notNull().unique(), // Sales Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZBOAVO: varchar({ length: 10 }), // Rebate processing active in the sales organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZKUNNR: varchar({ length: 10 }), // Customer number for intercompany billing // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZVKOKL: varchar({ length: 10 }), // Sales organization calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZWAERS: varchar({ length: 10 }), // Statistics currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZVSTEL = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVSTEL', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ALAN_VSTE: varchar({ length: 10 }), // Departure zone // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ AZON_VSTE: varchar({ length: 10 }), // Departure country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ CTRY_SHPT: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ LANG_SHPT: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZVSTEL: varchar({ length: 10 }).notNull().unique(), // Shipping Point // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZFABKL: varchar({ length: 10 }), // Factory calendar key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZLAZBS: varchar({ length: 10 }), // Determine loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZRIZBS: varchar({ length: 10 }), // Determine pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZVTWEG = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVTWEG', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ZVTWEG: varchar({ length: 10 }).notNull().unique(), // Distribution Channel // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const ORGANIZATION_MASTER_HRHMTB_ZWERKS = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZWERKS', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ CTRY_PLNT: varchar({ length: 10 }), // Country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ LANG_PLNT: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ // 인터페이스 정의서 정보 누락으로 의심되는 부분. 아래 ZWERKS 필드에 M 없음.
+ ZWERKS: varchar({ length: 10 }).notNull().unique(), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZFABKL: varchar({ length: 10 }), // Factory Calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZNAME1: varchar({ length: 60 }), // Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+ ZZNAME2: varchar({ length: 60 }), // Name2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const PROJECT_MASTER_CMCTB_PROJ_MAST = mdgSchema.table('PROJECT_MASTER_CMCTB_PROJ_MAST', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ AS_GRNT_PRD: varchar({ length: 10 }), // A/S 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ BIZCLS: varchar({ length: 10 }), // 사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ BIZLOC_CD: varchar({ length: 10 }), // 사업장코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ BIZ_DMN: varchar({ length: 10 }), // 사업영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ BP_DL_DT: varchar({ length: 10 }), // 선표인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CHN_PROJ_TP: varchar({ length: 10 }), // (중국)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CLS_1: varchar({ length: 20 }), // 선급1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CLS_2: varchar({ length: 20 }), // 선급2 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CNRT_CNTN_YN: varchar({ length: 10 }), // 계약존속여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CNRT_DL_DT: varchar({ length: 10 }), // 계약인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CNRT_DT: varchar({ length: 10 }), // 계약일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CNRT_RESV_YN: varchar({ length: 10 }), // 계약유보여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CO_CD: varchar({ length: 10 }), // 회사코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ CSTM_PO_NO: varchar({ length: 35 }), // 고객발주번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ DEL_YN: varchar({ length: 10 }), // 삭제 여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ DIGT_PDT_GRP: varchar({ length: 10 }), // 전기전자 제품군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ DIST_PATH: varchar({ length: 10 }), // 유통경로 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ DL_BF_PROJ_NM: varchar({ length: 120 }), // 인도전선명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ DL_CSTM_CD: varchar({ length: 10 }), // 인도고객 ID // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ DOCK_CD: varchar({ length: 10 }), // 도크 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ DSN_CHRGR: varchar({ length: 13 }), // 설계담당자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ FIN_GRNT_FN_DT: varchar({ length: 10 }), // 최종수요자 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ GENT_CNT: varchar({ length: 10 }), // 세대수/시리즈 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ GOV: varchar({ length: 60 }), // 관청명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ GRNT_STDT: varchar({ length: 10 }), // Project Warranty Start Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ IF_STAT: varchar({ length: 10 }), // 인터페이스 진행단계 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ IMO_NO: varchar({ length: 10 }), // IMO 번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ INQY_NO: varchar({ length: 30 }), // 안건번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ INQY_SEQ: varchar({ length: 10 }), // 안건순번 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ IO_GB: varchar({ length: 10 }), // 사내외 구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ MNG_ACOT_DMN: varchar({ length: 10 }), // 관리회계영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ MN_ENGN_TP_CD: varchar({ length: 30 }), // Main engine type code // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ MSHIP_NO: varchar({ length: 24 }), // 기준호선 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ NEW_MC_YN: varchar({ length: 10 }), // MC YN // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ NTTP: varchar({ length: 10 }), // 국적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ ORDR_GRNT_FN_DT: varchar({ length: 10 }), // 주문주 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ ORDR_GRNT_PRD: varchar({ length: 10 }), // 주문주 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ OWN_1: varchar({ length: 10 }), // 선주1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ OWN_AB: varchar({ length: 60 }), // 선주약어 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ OWN_NM: varchar({ length: 40 }), // 선주명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PDT_LVL_4: varchar({ length: 14 }), // 제품 Level 4 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PLNT_CD: varchar({ length: 10 }), // 플랜트 코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PRCTR: varchar({ length: 10 }), // 손익센터 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PRGS_STAT: varchar({ length: 10 }), // 진행상태 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_CRTE_REQ_DT: varchar({ length: 10 }), // 프로젝트 생성요청일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_CRTE_REQ_EMPNO: varchar({ length: 13 }), // 프로젝트 생성요청자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_DL_PLN_DT: varchar({ length: 10 }), // 모프로젝트 인도계획일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_DL_RT_DT: varchar({ length: 10 }), // 모프로젝트 인도실적일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_DSC: varchar({ length: 120 }), // 프로젝트 설명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_DTL_TP: varchar({ length: 10 }), // 프로젝트 세부타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_ETC_TP: varchar({ length: 10 }), // 프로젝트 기타타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_GB: varchar({ length: 10 }), // 프로젝트구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_NO: varchar({ length: 24 }).notNull().unique(), // 프로젝트번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl // WSDL에서 필수 필드
+ PROJ_PRGS_YN: varchar({ length: 10 }), // 공사진행여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_PROF: varchar({ length: 10 }), // 프로젝트 프로파일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_SCP: varchar({ length: 10 }), // 프로젝트범위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PROJ_WBS_TP: varchar({ length: 10 }), // 프로젝트 WBS타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ PRO_PROJ_NO: varchar({ length: 24 }), // 프로포절 프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ QM_CLS: varchar({ length: 10 }), // 품질사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ REF_NO: varchar({ length: 10 }), // 시리즈번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ RLTD_PROJ: varchar({ length: 24 }), // 연관프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ RL_DL_DT: varchar({ length: 10 }), // 실인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SALE_GRP: varchar({ length: 10 }), // 영업그룹 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SALE_ORG_CD: varchar({ length: 10 }), // 영업조직 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SA_DT: varchar({ length: 10 }), // Sail Away Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SERS_NO: varchar({ length: 24 }), // 시리즈첫공사번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SERS_YN: varchar({ length: 10 }), // 시리즈여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SHTYPE: varchar({ length: 10 }), // 선형 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SHTYPE_CD: varchar({ length: 10 }), // 선형코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SHTYPE_GRP: varchar({ length: 10 }), // 선형군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SHTYPE_UOM: varchar({ length: 10 }), // 선형단위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SKND: varchar({ length: 10 }), // 선종 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SRC_SYS_ID: varchar({ length: 10 }), // Source System // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ STDT: varchar({ length: 10 }), // 시작일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ SYS_ACOT_CLSD_DT: varchar({ length: 10 }), // 시스템회계마감일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ TOT_CNRT_CNT: varchar({ length: 10 }), // 전체 계약 대수 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ TYPE: varchar({ length: 10 }), // 프로젝트 Top/Hull // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+ WP_PROJ_TP: varchar({ length: 10 }), // (풍력)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+// [root]
+export const VENDOR_MASTER_BP_HEADER = mdgSchema.table('VENDOR_MASTER_BP_HEADER', {
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ VNDRCD: varchar({ length: 10 }).notNull().unique(), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_ADDRESS = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ADR_NO: varchar({ length: 10 }).notNull(), // 주소번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ EMAIL_ADR: varchar({ length: 241 }), // 이메일주소 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ FAXNO: varchar({ length: 30 }), // 팩스번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ FAX_ETS_NO: varchar({ length: 10 }), // 팩스내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ NTN_CD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ADR_1: varchar({ length: 190 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ADR_2: varchar({ length: 120 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ADR_TMZ: varchar({ length: 10 }), // 주소시간대 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CITY_ZIP_NO: varchar({ length: 10 }), // 도시우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ETC_ADR_1: varchar({ length: 180 }), // 기타주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ETC_ADR_2: varchar({ length: 180 }), // 기타주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ INTL_ADR_VER_ID: varchar({ length: 10 }).notNull(), // 국제주소버전ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ LANG_KEY: varchar({ length: 10 }), // 언어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ NTN_CD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ POBX: varchar({ length: 10 }), // 사서함 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ POBX_ZIP_NO: varchar({ length: 10 }), // 사서함우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REGN_CD: varchar({ length: 10 }), // 지역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ TAX_JRDT_ZONE_CD: varchar({ length: 15 }), // 조세관할구역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ TRANS_ZONE: varchar({ length: 10 }), // 운송구역 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ TTL: varchar({ length: 90 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNM_1: varchar({ length: 120 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNM_2: varchar({ length: 120 }), // VENDOR명2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNM_3: varchar({ length: 120 }), // VENDOR명3 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNM_4: varchar({ length: 120 }), // VENDOR명4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNM_ABRV_1: varchar({ length: 60 }), // VENDOR명약어1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNM_ABRV_2: varchar({ length: 60 }), // VENDOR명약어2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ETX_NO: varchar({ length: 10 }), // 내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ HP_ORDR: varchar({ length: 10 }), // 핸드폰지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ NTN_CD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ TELNO: varchar({ length: 30 }), // 전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ URL: varchar({ length: 2000 }), // URL // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_BP_TAXNUM = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_TAXNUM', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ BIZ_PTNR_TX_NO: varchar({ length: 20 }), // 사업파트너세금번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ TX_NO_CTG: varchar({ length: 10 }).notNull(), // 세금번호범주 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_BP_VENGEN = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ACNT_GRP: varchar({ length: 10 }), // 계정그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ACNT_GRP_TP: varchar({ length: 10 }), // 계정그룹유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ADR_1: varchar({ length: 120 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ADR_2: varchar({ length: 512 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ AGR_DT: varchar({ length: 10 }), // 승인일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ AGR_R_ID: varchar({ length: 13 }), // 승인자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ AGR_TM: varchar({ length: 10 }), // 승인시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ BIZCON: varchar({ length: 30 }), // 산업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ BIZR_NO: varchar({ length: 10 }), // 사업자번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ BIZTP: varchar({ length: 30 }), // 사업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ BIZ_UOM_CD: varchar({ length: 10 }), // 사업단위코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ BIZ_UOM_NM: varchar({ length: 40 }), // 사업단위명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CHGR_ID: varchar({ length: 13 }), // 변경자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CHG_DT: varchar({ length: 10 }), // 변경일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CHG_TM: varchar({ length: 10 }), // 변경시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CO_ID: varchar({ length: 10 }), // 법인ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CO_REG_NO: varchar({ length: 18 }), // 법인등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CO_VLM: varchar({ length: 10 }), // 기업규모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CSTM_CD: varchar({ length: 10 }), // 고객코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DEL_HOLD_ORDR: varchar({ length: 10 }), // 삭제보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DEL_ORDR: varchar({ length: 10 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DMST_TOP_CD: varchar({ length: 10 }), // 국내TOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DMST_TOP_NM: varchar({ length: 120 }), // 국내TOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DNS_NO: varchar({ length: 11 }), // DUNS번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DOC_NO: varchar({ length: 25 }), // 문서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DOC_TP: varchar({ length: 10 }), // 문서유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DOC_VER: varchar({ length: 10 }), // 문서버전 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ FIR_NM: varchar({ length: 120 }), // FIRST이름 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ GBL_TOP_CD: varchar({ length: 10 }), // GLOBALTOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ GBL_TOP_NM: varchar({ length: 120 }), // GLOBALTOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ GIRO_VNDR_ORDR: varchar({ length: 10 }), // 지로VENDOR지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ HOLD_CAUS: varchar({ length: 200 }), // 보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ INB_FLAG: varchar({ length: 10 }), // 인바운드플래그 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ INTL_LCTN_CHK_NUM: varchar({ length: 10 }), // 국제LOCATION점검숫자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ OVLAP_CAUS_CD: varchar({ length: 10 }), // 중복사유코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PST_HOLD_ORDR: varchar({ length: 10 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PTNT_VNDRCD: varchar({ length: 10 }), // 잠재VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PTN_DOC: varchar({ length: 10 }), // 부분문서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PUR_HOLD_DT: varchar({ length: 10 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PUR_HOLD_ORDR: varchar({ length: 10 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ QLT_CHRGR_EMAIL: varchar({ length: 241 }), // 품질담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ QLT_CHRGR_NM: varchar({ length: 20 }), // 품질담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ QLT_CHRGR_TELNO: varchar({ length: 30 }), // 품질담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REGR_ID: varchar({ length: 13 }), // 등록자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REG_DT: varchar({ length: 10 }), // 등록일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REG_TM: varchar({ length: 10 }), // 등록시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REPR_NM: varchar({ length: 30 }), // 대표자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REPR_RESNO: varchar({ length: 13 }), // 대표자주민번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REP_TEL_NO: varchar({ length: 30 }), // 대표전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SB_WKA_SEQ: varchar({ length: 10 }), // SUB작업장순서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRCETX_RP_SEX_KEY: varchar({ length: 10 }), // 원천세의무자성별키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ TTL: varchar({ length: 45 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ TX_CD_4: varchar({ length: 18 }), // 세금번호4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VAT_REG_NO: varchar({ length: 20 }), // 부가세등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNM_1: varchar({ length: 10 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDRNO: varchar({ length: 10 }).notNull(), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ ACOT_CHRGR_FAXNO: varchar({ length: 31 }), // 회계담당자FAX번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ACOT_CHRGR_TELNO: varchar({ length: 30 }), // 회계담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ AUTH_GRP: varchar({ length: 10 }), // 권한그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ BF_VNDRCD: varchar({ length: 10 }), // 이전VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CO_CD: varchar({ length: 10 }).notNull(), // 회사코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ CSTM_VNDR_CLR_ORDR: varchar({ length: 10 }), // CUSTOMER,VENDOR반제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CTL_ACNT: varchar({ length: 10 }), // 조정계정 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DEL_ORDR: varchar({ length: 10 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ FIN_IR_ACT_DT: varchar({ length: 10 }), // 최종이자실행일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ FIN_IR_CALC_DT: varchar({ length: 10 }), // 최종이자계산일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ IATA_BIC_GB: varchar({ length: 10 }), // IATA,BIC구분 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ LOGST_VNDR_TP: varchar({ length: 10 }), // 물류VENDOR유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ MEMO: varchar({ length: 120 }), // 메모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ MIN_ORDR: varchar({ length: 10 }), // 소수지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ MK_CHRGR_EMAIL: varchar({ length: 241 }), // MAKER담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ MOFFC_ACNT_NO: varchar({ length: 10 }), // 본사계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ OVLAP_INVC_ORDR: varchar({ length: 10 }), // 중복송장지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PLN_GRP: varchar({ length: 10 }), // 계획그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PST_HOLD_ORDR: varchar({ length: 10 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ REP_TP: varchar({ length: 10 }), // 대표유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SPLY_COND: varchar({ length: 10 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SPLY_HOLD_ORDR: varchar({ length: 10 }), // 지급보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SPLY_MTHD: varchar({ length: 10 }), // 지급방법 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SPRT_SPLY_ORDR: varchar({ length: 10 }), // 분리지급지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRCE_TX_CD: varchar({ length: 10 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRCE_TX_NTN_CD: varchar({ length: 10 }), // 원천세국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRT_KEY: varchar({ length: 10 }), // 정렬키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ TRD_BANK_SHRT_KEY: varchar({ length: 10 }), // 거래은행단축키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDR_ACNT_NO: varchar({ length: 12 }), // VENDOR계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDR_CHRGR_NM: varchar({ length: 45 }), // VENDOR담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ DCHAG_CAUS: varchar({ length: 200 }), // 면제사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DCHAG_CERT_NO: varchar({ length: 15 }), // 면제증명서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DCHAG_ED_DT: varchar({ length: 10 }), // 면제종료일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DCHAG_ST_DT: varchar({ length: 10 }), // 면제시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ RECIP_TP: varchar({ length: 10 }), // 수취인유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRCE_TX_IDENT_NO: varchar({ length: 16 }), // 원천세식별번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRCE_TX_NO: varchar({ length: 10 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRCE_TX_REL_ORDR: varchar({ length: 10 }), // 원천세관련지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SRCE_TX_TP: varchar({ length: 10 }).notNull(), // 원천세유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ AT_PUR_ORD_ORDR: varchar({ length: 10 }), // 자동구매오더지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CALC_SHM_GRP: varchar({ length: 10 }), // 계산스키마그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ CNFM_CTL_KEY: varchar({ length: 10 }), // 확정제어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DEL_ORDR: varchar({ length: 10 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DL_COND_1: varchar({ length: 10 }), // 인도조건1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ DL_COND_2: varchar({ length: 28 }), // 인도조건2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ GR_BSE_INVC_VR: varchar({ length: 10 }), // GR기준송장검증 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ORD_CNFM_REQ_ORDR: varchar({ length: 10 }), // 오더확인요청지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PUR_HOLD_CAUS: varchar({ length: 120 }), // 구매보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PUR_HOLD_DT: varchar({ length: 10 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PUR_HOLD_ORDR: varchar({ length: 10 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PUR_ORD_CUR: varchar({ length: 10 }), // 구매오더통화 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PUR_ORG_CD: varchar({ length: 10 }).notNull(), // 구매조직 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ SALE_CHRGR_NM: varchar({ length: 120 }), // 영업담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ SPLY_COND: varchar({ length: 10 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ VNDR_TELNO: varchar({ length: 30 }), // VENDOR전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
+export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN', {
+ // [fk]
+ VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드
+
+ id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
+ BSE_PTNR_ORDR: varchar({ length: 10 }), // 기본파트너지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ ETC_REF_VNDRCD: varchar({ length: 10 }), // 기타참조VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+ PLNT_NO: varchar({ length: 10 }).notNull(), // 플랜트번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ PTNR_CNT: varchar({ length: 10 }).notNull(), // 파트너카운터 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ PTNR_SKL: varchar({ length: 10 }).notNull(), // 파트너기능 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+ VNDR_SUB_NO: varchar({ length: 10 }).notNull(), // VENDOR서브번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
diff --git a/db/schema/MDG/modelMaster.ts b/db/schema/MDG/modelMaster.ts
deleted file mode 100644
index 360989f9..00000000
--- a/db/schema/MDG/modelMaster.ts
+++ /dev/null
@@ -1,178 +0,0 @@
-import { pgTable, serial, varchar, timestamp } from "drizzle-orm/pg-core";
-import { relations } from "drizzle-orm";
-
-/**
- * 접근법 1: WSDL과 동일하게 DB 테이블/컬럼명 및 변수 이름 만들기
- * - 모든 테이블/컬럼명이 SAP 시스템의 네이밍을 그대로 유지
- * - 개발자가 SAP 시스템에 익숙하다면 이해하기 쉬움
- * - SAP 문서와 비교하기 쉬움
- */
-
-// 자재 마스터 테이블 (MATL)
-export const MATL = pgTable("MATL", {
- id: serial("id").primaryKey(),
- MATNR: varchar("MATNR", { length: 18 }).notNull().unique(), // Material Number (자재 번호) (PK)
- MBRSH: varchar("MBRSH", { length: 1 }), // Industry Sector (산업 부문)
- MTART: varchar("MTART", { length: 4 }), // Material Type (자재 유형)
- LVORM: varchar("LVORM", { length: 1 }), // Deletion flag (삭제 플래그)
- MEINS: varchar("MEINS", { length: 3 }), // Base Unit of Measure (기본 단위)
- MATKL: varchar("MATKL", { length: 9 }), // Material Group (자재 그룹)
- BISMT: varchar("BISMT", { length: 18 }), // Old material number (기존 자재 번호)
- SPART: varchar("SPART", { length: 2 }), // Division (부문)
- PRDHA: varchar("PRDHA", { length: 18 }), // Product hierachy (제품 계층)
- MSTAE: varchar("MSTAE", { length: 2 }), // Material Status (자재 상태)
- MSTDE: varchar("MSTDE", { length: 8 }), // Date from which the cross-plant material status is (자재 상태 유효 날짜)
- BRGEW: varchar("BRGEW", { length: 13 }), // Gross weight (총 중량)
- GEWEI: varchar("GEWEI", { length: 3 }), // Weight Unit (중량 단위)
- NTGEW: varchar("NTGEW", { length: 13 }), // Net Weight (순 중량)
- VOLUM: varchar("VOLUM", { length: 13 }), // Volume (체적)
- VOLEH: varchar("VOLEH", { length: 3 }), // Volume Unit (체적 단위)
- GROES: varchar("GROES", { length: 32 }), // Size/dimensions (크기/치수)
- LAENG: varchar("LAENG", { length: 13 }), // Length (길이)
- BREIT: varchar("BREIT", { length: 13 }), // Width (너비)
- HOEHE: varchar("HOEHE", { length: 13 }), // Height (높이)
- MEABM: varchar("MEABM", { length: 3 }), // Unit of Dimension for Length/Width/Height (치수 단위)
- MAGRV: varchar("MAGRV", { length: 4 }), // Material Group: Packaging Materials (포장 자재 그룹)
- VHART: varchar("VHART", { length: 4 }), // Packaging Material Type (포장 자재 유형)
- ZZNAME: varchar("ZZNAME", { length: 40 }), // Material Name (자재 이름)
- ZZSPEC: varchar("ZZSPEC", { length: 255 }), // Specification (자재 사양)
- ZZDESC: varchar("ZZDESC", { length: 255 }), // Description (자재 설명)
- ZZMMTYP: varchar("ZZMMTYP", { length: 1 }), // Material Master Type (자재 마스터 유형)
- ZZREGDT: varchar("ZZREGDT", { length: 8 }), // Registered Date (등록 날짜)
- ZZREGTM: varchar("ZZREGTM", { length: 6 }), // Registered Time (등록 시간)
- ZZREGUS: varchar("ZZREGUS", { length: 12 }), // Registerd User (등록 사용자)
- ZZAPPDT: varchar("ZZAPPDT", { length: 8 }), // Approval Date (승인 날짜)
- ZZAPPTM: varchar("ZZAPPTM", { length: 6 }), // Approval Time (승인 시간)
- ZZAPPUS: varchar("ZZAPPUS", { length: 12 }), // Approval User (승인 사용자)
- ZZLAMDT: varchar("ZZLAMDT", { length: 8 }), // Last Modified Date (최종 수정 날짜)
- ZZLAMTM: varchar("ZZLAMTM", { length: 6 }), // Last Modified Time (최종 수정 시간)
- ZZLAMUS: varchar("ZZLAMUS", { length: 12 }), // Last Modified User (최종 수정 사용자)
- ZZPRFLG: varchar("ZZPRFLG", { length: 1 }), // CRUD Status (처리 플래그)
- ZZDOKAR: varchar("ZZDOKAR", { length: 3 }), // Document Type (문서 유형)
- ZZDOKNR: varchar("ZZDOKNR", { length: 25 }), // Document Number (문서 번호)
- ZZDOKTL: varchar("ZZDOKTL", { length: 3 }), // Document Part (문서 부분)
- ZZDOKVR: varchar("ZZDOKVR", { length: 2 }), // Document Version (문서 버전)
- createdAt: timestamp("created_at").defaultNow().notNull(),
- updatedAt: timestamp("updated_at").defaultNow().notNull(),
-});
-
-// 자재 설명 테이블 (DESC)
-export const DESC = pgTable("DESC", {
- id: serial("id").primaryKey(),
- MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK)
- SPRAS: varchar("SPRAS", { length: 1 }), // Language (언어)
- MAKTX: varchar("MAKTX", { length: 40 }), // Material Description (Short Text) (자재 설명)
- createdAt: timestamp("created_at").defaultNow().notNull(),
- updatedAt: timestamp("updated_at").defaultNow().notNull(),
-});
-
-// 플랜트별 자재 데이터 테이블 (PLNT)
-export const PLNT = pgTable("PLNT", {
- id: serial("id").primaryKey(),
- MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK)
- WERKS: varchar("WERKS", { length: 4 }), // Plant (플랜트)
- LVORM: varchar("LVORM", { length: 1 }), // Deletion Flag (삭제 플래그)
- MMSTA: varchar("MMSTA", { length: 2 }), // Plant-Specific Material Status (플랜트별 자재 상태)
- MMSTD: varchar("MMSTD", { length: 8 }), // Date from which the plant-specific material status (플랜트별 자재 상태 유효 날짜)
- ZZMTARP: varchar("ZZMTARP", { length: 4 }), // Plant Material Type (플랜트 자재 유형)
- ZZREGDT: varchar("ZZREGDT", { length: 8 }), // Registered Dated (등록 날짜)
- ZZREGTM: varchar("ZZREGTM", { length: 6 }), // Registered Time (등록 시간)
- ZZREGUS: varchar("ZZREGUS", { length: 12 }), // Registered USER (등록 사용자)
- ZZLAMDT: varchar("ZZLAMDT", { length: 8 }), // Last Modified Date (최종 수정 날짜)
- ZZLAMTM: varchar("ZZLAMTM", { length: 6 }), // Last Modified Time (최종 수정 시간)
- ZZLAMUS: varchar("ZZLAMUS", { length: 12 }), // Last Modified User (최종 수정 사용자)
- ZZPRFLG: varchar("ZZPRFLG", { length: 1 }), // CRUD Status (처리 플래그)
- createdAt: timestamp("created_at").defaultNow().notNull(),
- updatedAt: timestamp("updated_at").defaultNow().notNull(),
-});
-
-// 단위 테이블 (UNIT)
-export const UNIT = pgTable("UNIT", {
- id: serial("id").primaryKey(),
- MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK)
- MEINH: varchar("MEINH", { length: 3 }), // Alternative Unit of Measure for Stockkeeping Unit (대체 단위)
- UMREZ: varchar("UMREZ", { length: 5 }), // Numerator for Conversion to Base Units of Measure (기본 단위 변환 분자)
- UMREN: varchar("UMREN", { length: 5 }), // Denominator for conversion to base units of measure (기본 단위 변환 분모)
- LAENG: varchar("LAENG", { length: 13 }), // Length (길이)
- BREIT: varchar("BREIT", { length: 13 }), // Width (너비)
- HOEHE: varchar("HOEHE", { length: 13 }), // Height (높이)
- MEABM: varchar("MEABM", { length: 3 }), // Unit of Dimension for Length/Width/Height (치수 단위)
- VOLUM: varchar("VOLUM", { length: 13 }), // Volume (체적)
- VOLEH: varchar("VOLEH", { length: 3 }), // Volume unit (체적 단위)
- BRGEW: varchar("BRGEW", { length: 13 }), // Gross Weight (총 중량)
- GEWEI: varchar("GEWEI", { length: 3 }), // Weight Unit (중량 단위)
- createdAt: timestamp("created_at").defaultNow().notNull(),
- updatedAt: timestamp("updated_at").defaultNow().notNull(),
-});
-
-// 클래스 할당 테이블 (CLASSASGN)
-export const CLASSASGN = pgTable("CLASSASGN", {
- id: serial("id").primaryKey(),
- MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK)
- CLASS: varchar("CLASS", { length: 18 }), // Class number (클래스 번호)
- KLART: varchar("KLART", { length: 3 }), // Class Type (클래스 유형)
- createdAt: timestamp("created_at").defaultNow().notNull(),
- updatedAt: timestamp("updated_at").defaultNow().notNull(),
-});
-
-// 특성 할당 테이블 (CHARASGN)
-export const CHARASGN = pgTable("CHARASGN", {
- id: serial("id").primaryKey(),
- MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK)
- CLASS: varchar("CLASS", { length: 18 }), // Class number (클래스 번호)
- KLART: varchar("KLART", { length: 3 }), // Class Type (클래스 유형)
- ATNAM: varchar("ATNAM", { length: 30 }), // Characteristic Name (특성 이름)
- ATWRT: varchar("ATWRT", { length: 30 }), // Characteristic Value (특성 값)
- ATFLV: varchar("ATFLV", { length: 16 }), // Internal floating point from (내부 실수값 시작)
- ATAWE: varchar("ATAWE", { length: 3 }), // Unit of Measurement (측정 단위)
- ATFLB: varchar("ATFLB", { length: 16 }), // Internal floating point value to (내부 실수값 끝)
- ATAW1: varchar("ATAW1", { length: 3 }), // Unit of Measurement (측정 단위)
- ATBEZ: varchar("ATBEZ", { length: 30 }), // 특성내역 (특성 설명)
- ATWTB: varchar("ATWTB", { length: 30 }), // 특성값내역 (특성 값 설명)
- createdAt: timestamp("created_at").defaultNow().notNull(),
- updatedAt: timestamp("updated_at").defaultNow().notNull(),
-});
-
-// 관계 정의
-export const MATLRelations = relations(MATL, ({ many }) => ({
- descriptions: many(DESC),
- plants: many(PLNT),
- units: many(UNIT),
- classAssignments: many(CLASSASGN),
- characteristicAssignments: many(CHARASGN),
-}));
-
-export const DESCRelations = relations(DESC, ({ one }) => ({
- material: one(MATL, {
- fields: [DESC.MATNR],
- references: [MATL.MATNR],
- }),
-}));
-
-export const PLNTRelations = relations(PLNT, ({ one }) => ({
- material: one(MATL, {
- fields: [PLNT.MATNR],
- references: [MATL.MATNR],
- }),
-}));
-
-export const UNITRelations = relations(UNIT, ({ one }) => ({
- material: one(MATL, {
- fields: [UNIT.MATNR],
- references: [MATL.MATNR],
- }),
-}));
-
-export const CLASSASGNRelations = relations(CLASSASGN, ({ one }) => ({
- material: one(MATL, {
- fields: [CLASSASGN.MATNR],
- references: [MATL.MATNR],
- }),
-}));
-
-export const CHARASGNRelations = relations(CHARASGN, ({ one }) => ({
- material: one(MATL, {
- fields: [CHARASGN.MATNR],
- references: [MATL.MATNR],
- }),
-}));
diff --git a/db/schema/SOAP/soap.ts b/db/schema/SOAP/soap.ts
new file mode 100644
index 00000000..7a16b50a
--- /dev/null
+++ b/db/schema/SOAP/soap.ts
@@ -0,0 +1,22 @@
+import { serial, varchar, timestamp, text, boolean } from "drizzle-orm/pg-core";
+import { pgSchema } from "drizzle-orm/pg-core";
+
+export const soapSchema = pgSchema("soap");
+
+export const soapLogs = soapSchema.table("soap_logs", {
+ id: serial().primaryKey(),
+ direction: varchar({ length: 20 }).notNull(),
+ system: varchar({ length: 50 }).notNull(),
+ interface: varchar({ length: 100 }).notNull(),
+ startedAt: timestamp().notNull(),
+ endedAt: timestamp(),
+ isSuccess: boolean().default(false).notNull(),
+ requestData: text(),
+ responseData: text(),
+ errorMessage: text(),
+});
+
+export type LogDirection = 'INBOUND' | 'OUTBOUND';
+
+export type SoapLogInsert = typeof soapLogs.$inferInsert;
+export type SoapLogSelect = typeof soapLogs.$inferSelect; \ No newline at end of file
diff --git a/db/schema/index.ts b/db/schema/index.ts
index b9491235..cb5a42d8 100644
--- a/db/schema/index.ts
+++ b/db/schema/index.ts
@@ -24,4 +24,7 @@ export * from './evaluationCriteria';
export * from './projectGtc';
// MDG SOAP 수신용
-// export * from './MDG/modelMaster'
+export * from './MDG/mdg'
+
+// SOAP 로깅 목적
+export * from './SOAP/soap'; \ No newline at end of file
diff --git a/next.config.ts b/next.config.ts
index 9bc5785e..88be10cb 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -28,6 +28,15 @@ const nextConfig: NextConfig = {
'tedious': false,
};
+ // handlebars require.extensions 경고 무시
+ config.ignoreWarnings = [
+ ...(config.ignoreWarnings || []),
+ {
+ module: /node_modules\/handlebars\/lib\/index\.js/,
+ message: /require\.extensions is not supported by webpack/,
+ },
+ ];
+
return config;
},
experimental: {
diff --git a/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
index 51a789a6..ece2a0f4 100644
--- a/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl
@@ -16,7 +16,7 @@
</xsd:complexType>
<xsd:complexType name="BP_HEADER">
<xsd:sequence>
- <!-- SEQ:1, Table:BP_HEADER, Field:BP_HEADER, M/O:M, Type:VARC, Size:255, Description:Business Partner Number -->
+ <!-- SEQ:1, Table:BP_HEADER, Field:BP_HEADER, M/O:M, Type:CHAR, Size:10, Description:Business Partner Number -->
<xsd:element name="BP_HEADER" type="xsd:string"/>
<xsd:element name="ADDRESS" type="p0:ADDRESS" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="BP_TAXNUM" type="p0:BP_TAXNUM" minOccurs="0" maxOccurs="unbounded"/>
@@ -25,7 +25,7 @@
</xsd:complexType>
<xsd:complexType name="ADDRESS">
<xsd:sequence>
- <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADDRNO, M/O:M, Type:VARC, Size:255, Description:Address Number -->
+ <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADDRNO, M/O:M, Type:CHAR, Size:10, Description:Address Number -->
<xsd:element name="ADDRNO" type="xsd:string"/>
<xsd:element name="AD_POSTAL" type="p0:AD_POSTAL" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="AD_TEL" type="p0:AD_TEL" minOccurs="0" maxOccurs="unbounded"/>
@@ -36,105 +36,105 @@
</xsd:complexType>
<xsd:complexType name="AD_POSTAL">
<xsd:sequence>
- <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NATION, M/O:M, Type:VARC, Size:255, Description:International address version ID -->
+ <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NATION, M/O:M, Type:CHAR, Size:1, Description:International address version ID -->
<xsd:element name="NATION" type="xsd:string"/>
- <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE1, M/O:, Type:VARC, Size:255, Description:Postal Code -->
+ <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE1, M/O:, Type:CHAR, Size:10, Description:Postal Code -->
<xsd:element name="POST_CODE1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE2, M/O:, Type:VARC, Size:255, Description:Postal Code -->
+ <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE2, M/O:, Type:CHAR, Size:10, Description:Postal Code -->
<xsd:element name="POST_CODE2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY1, M/O:, Type:VARC, Size:255, Description:City -->
+ <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY1, M/O:, Type:CHAR, Size:40, Description:City -->
<xsd:element name="CITY1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY2, M/O:, Type:VARC, Size:255, Description:District -->
+ <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY2, M/O:, Type:CHAR, Size:40, Description:District -->
<xsd:element name="CITY2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGION, M/O:, Type:VARC, Size:255, Description:Region (State, Province, County) -->
+ <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGION, M/O:, Type:CHAR, Size:3, Description:Region (State, Province, County) -->
<xsd:element name="REGION" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TITLE, M/O:, Type:VARC, Size:255, Description:Title -->
+ <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TITLE, M/O:, Type:CHAR, Size:4, Description:Title -->
<xsd:element name="TITLE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT1, M/O:, Type:VARC, Size:255, Description:Search Term 1 -->
+ <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT1, M/O:, Type:CHAR, Size:20, Description:Search Term 1 -->
<xsd:element name="SORT1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT2, M/O:, Type:VARC, Size:255, Description:Search Term 2 -->
+ <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT2, M/O:, Type:CHAR, Size:20, Description:Search Term 2 -->
<xsd:element name="SORT2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME1, M/O:, Type:VARC, Size:255, Description:Name 1 -->
+ <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME1, M/O:, Type:CHAR, Size:40, Description:Name 1 -->
<xsd:element name="NAME1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME2, M/O:, Type:VARC, Size:255, Description:Name 2 -->
+ <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME2, M/O:, Type:CHAR, Size:40, Description:Name 2 -->
<xsd:element name="NAME2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME3, M/O:, Type:VARC, Size:255, Description:Name 3 -->
+ <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME3, M/O:, Type:CHAR, Size:40, Description:Name 3 -->
<xsd:element name="NAME3" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME4, M/O:, Type:VARC, Size:255, Description:Name 4 -->
+ <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME4, M/O:, Type:CHAR, Size:40, Description:Name 4 -->
<xsd:element name="NAME4" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANGU, M/O:, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANGU, M/O:, Type:LANG, Size:1, Description:Language Key -->
<xsd:element name="LANGU" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:STREET, M/O:, Type:VARC, Size:255, Description:Street -->
+ <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:STREET, M/O:, Type:CHAR, Size:60, Description:Street -->
<xsd:element name="STREET" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:HOUSE_NUM1, M/O:, Type:VARC, Size:255, Description:House Number -->
+ <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:HOUSE_NUM1, M/O:, Type:CHAR, Size:10, Description:House Number -->
<xsd:element name="HOUSE_NUM1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:COUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:COUNTRY, M/O:, Type:CHAR, Size:3, Description:Country Key -->
<xsd:element name="COUNTRY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:PO_BOX, M/O:, Type:VARC, Size:255, Description:PO Box -->
+ <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:PO_BOX, M/O:, Type:CHAR, Size:10, Description:PO Box -->
<xsd:element name="PO_BOX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANSPZONE, M/O:, Type:VARC, Size:255, Description:Transportation zone to or from which the goods are -->
+ <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANSPZONE, M/O:, Type:CHAR, Size:10, Description:Transportation zone to or from which the goods are -->
<xsd:element name="TRANSPZONE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAXJURCODE, M/O:, Type:VARC, Size:255, Description:Tax Jurisdiction -->
+ <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAXJURCODE, M/O:, Type:CHAR, Size:15, Description:Tax Jurisdiction -->
<xsd:element name="TAXJURCODE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TIME_ZONE, M/O:, Type:VARC, Size:255, Description:Time zone -->
+ <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TIME_ZONE, M/O:, Type:CHAR, Size:6, Description:Time zone -->
<xsd:element name="TIME_ZONE" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_TEL">
<xsd:sequence>
- <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number -->
+ <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number -->
<xsd:element name="CONSNUMBER" type="xsd:string"/>
- <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date -->
+ <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date -->
<xsd:element name="DATE_FROM" type="xsd:string"/>
- <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:COUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:COUNTRY, M/O:, Type:CHAR, Size:3, Description:Country Key -->
<xsd:element name="COUNTRY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_NUMBER, M/O:, Type:VARC, Size:255, Description:Telephone no.: dialling code+number -->
+ <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_NUMBER, M/O:, Type:CHAR, Size:30, Description:Telephone no.: dialling code+number -->
<xsd:element name="TEL_NUMBER" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_EXTENS, M/O:, Type:VARC, Size:255, Description:Telephone no.: Extension -->
+ <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_EXTENS, M/O:, Type:CHAR, Size:10, Description:Telephone no.: Extension -->
<xsd:element name="TEL_EXTENS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:R3_USER, M/O:, Type:VARC, Size:255, Description:ndicator: Telephone is a Mobile Telephone -->
+ <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:R3_USER, M/O:, Type:CHAR, Size:1, Description:ndicator: Telephone is a Mobile Telephone -->
<xsd:element name="R3_USER" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_FAX">
<xsd:sequence>
- <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number -->
+ <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number -->
<xsd:element name="CONSNUMBER" type="xsd:string"/>
- <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date -->
+ <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date -->
<xsd:element name="DATE_FROM" type="xsd:string"/>
- <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:COUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:COUNTRY, M/O:, Type:CHAR, Size:3, Description:Country Key -->
<xsd:element name="COUNTRY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_NUMBER, M/O:, Type:VARC, Size:255, Description:Fax number -->
+ <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_NUMBER, M/O:, Type:CHAR, Size:30, Description:Fax number -->
<xsd:element name="FAX_NUMBER" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_EXTENS, M/O:, Type:VARC, Size:255, Description:Fax no.: Extension -->
+ <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_EXTENS, M/O:, Type:CHAR, Size:10, Description:Fax no.: Extension -->
<xsd:element name="FAX_EXTENS" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_URL">
<xsd:sequence>
- <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number -->
+ <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number -->
<xsd:element name="CONSNUMBER" type="xsd:string"/>
- <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date -->
+ <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date -->
<xsd:element name="DATE_FROM" type="xsd:string"/>
- <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URI_ADDR, M/O:, Type:VARC, Size:255, Description:Universal Resource Identifier (URI) -->
+ <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URI_ADDR, M/O:, Type:LCHR, Size:2048, Description:Universal Resource Identifier (URI) -->
<xsd:element name="URI_ADDR" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_EMAIL">
<xsd:sequence>
- <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number -->
+ <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number -->
<xsd:element name="CONSNUMBER" type="xsd:string"/>
- <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date -->
+ <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date -->
<xsd:element name="DATE_FROM" type="xsd:string"/>
- <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:SMTP_ADDR, M/O:, Type:VARC, Size:255, Description:E-Mail Address -->
+ <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:SMTP_ADDR, M/O:, Type:CHAR, Size:241, Description:E-Mail Address -->
<xsd:element name="SMTP_ADDR" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BP_TAXNUM">
<xsd:sequence>
- <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TAXTYPE, M/O:M, Type:VARC, Size:255, Description:Tax Number Category -->
+ <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TAXTYPE, M/O:M, Type:CHAR, Size:4, Description:Tax Number Category -->
<xsd:element name="TAXTYPE" type="xsd:string"/>
- <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:TAXNUM, M/O:, Type:VARC, Size:255, Description:Business Partner Tax Number -->
+ <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:TAXNUM, M/O:, Type:CHAR, Size:20, Description:Business Partner Tax Number -->
<xsd:element name="TAXNUM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
@@ -144,236 +144,236 @@
<xsd:element name="ZTAXIND" type="p0:ZTAXIND" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="ZCOMPANY" type="p0:ZCOMPANY" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="ZSALES" type="p0:ZSALES" minOccurs="0" maxOccurs="unbounded"/>
- <!-- SEQ:43, Table:BP_HEADER/BP_CUSGEN, Field:KUNNR, M/O:M, Type:VARC, Size:255, Description:Customer Code -->
+ <!-- SEQ:43, Table:BP_HEADER/BP_CUSGEN, Field:KUNNR, M/O:M, Type:CHAR, Size:10, Description:Customer Code -->
<xsd:element name="KUNNR" type="xsd:string"/>
- <!-- SEQ:44, Table:BP_HEADER/BP_CUSGEN, Field:KTOKD, M/O:, Type:VARC, Size:255, Description:Account Group -->
+ <!-- SEQ:44, Table:BP_HEADER/BP_CUSGEN, Field:KTOKD, M/O:, Type:CHAR, Size:4, Description:Account Group -->
<xsd:element name="KTOKD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:45, Table:BP_HEADER/BP_CUSGEN, Field:NIELS, M/O:, Type:VARC, Size:255, Description:Customer Type -->
+ <!-- SEQ:45, Table:BP_HEADER/BP_CUSGEN, Field:NIELS, M/O:, Type:CHAR, Size:2, Description:Customer Type -->
<xsd:element name="NIELS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:46, Table:BP_HEADER/BP_CUSGEN, Field:LOEVM, M/O:, Type:VARC, Size:255, Description:Central Deletion Flag for Master Record -->
+ <!-- SEQ:46, Table:BP_HEADER/BP_CUSGEN, Field:LOEVM, M/O:, Type:CHAR, Size:1, Description:Central Deletion Flag for Master Record -->
<xsd:element name="LOEVM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:47, Table:BP_HEADER/BP_CUSGEN, Field:VBUND, M/O:, Type:VARC, Size:255, Description:Company ID of Trading Partner -->
+ <!-- SEQ:47, Table:BP_HEADER/BP_CUSGEN, Field:VBUND, M/O:, Type:CHAR, Size:6, Description:Company ID of Trading Partner -->
<xsd:element name="VBUND" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:48, Table:BP_HEADER/BP_CUSGEN, Field:ZZBA, M/O:, Type:VARC, Size:255, Description:Business Area(GBM) -->
+ <!-- SEQ:48, Table:BP_HEADER/BP_CUSGEN, Field:ZZBA, M/O:, Type:CHAR, Size:4, Description:Business Area(GBM) -->
<xsd:element name="ZZBA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:49, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFREPRE, M/O:, Type:VARC, Size:255, Description:Name of Representative -->
+ <!-- SEQ:49, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFREPRE, M/O:, Type:CHAR, Size:10, Description:Name of Representative -->
<xsd:element name="J_1KFREPRE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:50, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTBUS, M/O:, Type:VARC, Size:255, Description:Type of Business -->
+ <!-- SEQ:50, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTBUS, M/O:, Type:CHAR, Size:30, Description:Type of Business -->
<xsd:element name="J_1KFTBUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:51, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTIND, M/O:, Type:VARC, Size:255, Description:Type of Industry -->
+ <!-- SEQ:51, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTIND, M/O:, Type:CHAR, Size:30, Description:Type of Industry -->
<xsd:element name="J_1KFTIND" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:52, Table:BP_HEADER/BP_CUSGEN, Field:STCD1, M/O:, Type:VARC, Size:255, Description:Tax Number 1 -->
+ <!-- SEQ:52, Table:BP_HEADER/BP_CUSGEN, Field:STCD1, M/O:, Type:CHAR, Size:16, Description:Tax Number 1 -->
<xsd:element name="STCD1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:53, Table:BP_HEADER/BP_CUSGEN, Field:STCD2, M/O:, Type:VARC, Size:255, Description:Tax Number 2 -->
+ <!-- SEQ:53, Table:BP_HEADER/BP_CUSGEN, Field:STCD2, M/O:, Type:CHAR, Size:11, Description:Tax Number 2 -->
<xsd:element name="STCD2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:54, Table:BP_HEADER/BP_CUSGEN, Field:STCD3, M/O:, Type:VARC, Size:255, Description:Tax Number 3 -->
+ <!-- SEQ:54, Table:BP_HEADER/BP_CUSGEN, Field:STCD3, M/O:, Type:CHAR, Size:18, Description:Tax Number 3 -->
<xsd:element name="STCD3" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:55, Table:BP_HEADER/BP_CUSGEN, Field:STCD4, M/O:, Type:VARC, Size:255, Description:Tax Number 4 -->
+ <!-- SEQ:55, Table:BP_HEADER/BP_CUSGEN, Field:STCD4, M/O:, Type:CHAR, Size:18, Description:Tax Number 4 -->
<xsd:element name="STCD4" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:56, Table:BP_HEADER/BP_CUSGEN, Field:STCEG, M/O:, Type:VARC, Size:255, Description:VAT Registration Number -->
+ <!-- SEQ:56, Table:BP_HEADER/BP_CUSGEN, Field:STCEG, M/O:, Type:CHAR, Size:20, Description:VAT Registration Number -->
<xsd:element name="STCEG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:BP_HEADER/BP_CUSGEN, Field:LIFNR, M/O:, Type:VARC, Size:255, Description:Vendor Code -->
+ <!-- SEQ:57, Table:BP_HEADER/BP_CUSGEN, Field:LIFNR, M/O:, Type:CHAR, Size:10, Description:Vendor Code -->
<xsd:element name="LIFNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:58, Table:BP_HEADER/BP_CUSGEN, Field:UWAER, M/O:, Type:VARC, Size:255, Description:Currency of Sales figure -->
+ <!-- SEQ:58, Table:BP_HEADER/BP_CUSGEN, Field:UWAER, M/O:, Type:CUKY, Size:5, Description:Currency of Sales figure -->
<xsd:element name="UWAER" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:59, Table:BP_HEADER/BP_CUSGEN, Field:UMJAH, M/O:, Type:VARC, Size:255, Description:Year For Which Sales are Given -->
+ <!-- SEQ:59, Table:BP_HEADER/BP_CUSGEN, Field:UMJAH, M/O:, Type:NUMC, Size:4, Description:Year For Which Sales are Given -->
<xsd:element name="UMJAH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:60, Table:BP_HEADER/BP_CUSGEN, Field:JMZAH, M/O:, Type:VARC, Size:255, Description:Yearly number of employees -->
+ <!-- SEQ:60, Table:BP_HEADER/BP_CUSGEN, Field:JMZAH, M/O:, Type:NUMC, Size:6, Description:Yearly number of employees -->
<xsd:element name="JMZAH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:61, Table:BP_HEADER/BP_CUSGEN, Field:JMJAH, M/O:, Type:VARC, Size:255, Description:Year for which the number of employees is given -->
+ <!-- SEQ:61, Table:BP_HEADER/BP_CUSGEN, Field:JMJAH, M/O:, Type:NUMC, Size:4, Description:Year for which the number of employees is given -->
<xsd:element name="JMJAH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:62, Table:BP_HEADER/BP_CUSGEN, Field:GFORM, M/O:, Type:VARC, Size:255, Description:Legal status -->
+ <!-- SEQ:62, Table:BP_HEADER/BP_CUSGEN, Field:GFORM, M/O:, Type:CHAR, Size:2, Description:Legal status -->
<xsd:element name="GFORM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:63, Table:BP_HEADER/BP_CUSGEN, Field:KATR1, M/O:, Type:VARC, Size:255, Description:Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) -->
+ <!-- SEQ:63, Table:BP_HEADER/BP_CUSGEN, Field:KATR1, M/O:, Type:CHAR, Size:2, Description:Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) -->
<xsd:element name="KATR1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:64, Table:BP_HEADER/BP_CUSGEN, Field:KDKG1, M/O:, Type:VARC, Size:255, Description:Condition grp1 -->
+ <!-- SEQ:64, Table:BP_HEADER/BP_CUSGEN, Field:KDKG1, M/O:, Type:CHAR, Size:2, Description:Condition grp1 -->
<xsd:element name="KDKG1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:65, Table:BP_HEADER/BP_CUSGEN, Field:ANRED, M/O:, Type:VARC, Size:255, Description:Title -->
+ <!-- SEQ:65, Table:BP_HEADER/BP_CUSGEN, Field:ANRED, M/O:, Type:CHAR, Size:15, Description:Title -->
<xsd:element name="ANRED" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:BP_HEADER/BP_CUSGEN, Field:PUGRP, M/O:, Type:VARC, Size:255, Description:Customer Group Name -->
+ <!-- SEQ:66, Table:BP_HEADER/BP_CUSGEN, Field:PUGRP, M/O:, Type:CHAR, Size:20, Description:Customer Group Name -->
<xsd:element name="PUGRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:BP_HEADER/BP_CUSGEN, Field:UMSAT, M/O:, Type:VARC, Size:255, Description:Annual Sales -->
+ <!-- SEQ:67, Table:BP_HEADER/BP_CUSGEN, Field:UMSAT, M/O:, Type:CURR, Size:15,2, Description:Annual Sales -->
<xsd:element name="UMSAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:68, Table:BP_HEADER/BP_CUSGEN, Field:SPERR, M/O:, Type:VARC, Size:255, Description:Central Posting Block -->
+ <!-- SEQ:68, Table:BP_HEADER/BP_CUSGEN, Field:SPERR, M/O:, Type:CHAR, Size:1, Description:Central Posting Block -->
<xsd:element name="SPERR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:BP_HEADER/BP_CUSGEN, Field:NODEL, M/O:, Type:VARC, Size:255, Description:Central deletion block for master record -->
+ <!-- SEQ:69, Table:BP_HEADER/BP_CUSGEN, Field:NODEL, M/O:, Type:CHAR, Size:1, Description:Central deletion block for master record -->
<xsd:element name="NODEL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:70, Table:BP_HEADER/BP_CUSGEN, Field:AUFSD, M/O:, Type:VARC, Size:255, Description:Central order block -->
+ <!-- SEQ:70, Table:BP_HEADER/BP_CUSGEN, Field:AUFSD, M/O:, Type:CHAR, Size:2, Description:Central order block -->
<xsd:element name="AUFSD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:71, Table:BP_HEADER/BP_CUSGEN, Field:FAKSD, M/O:, Type:VARC, Size:255, Description:Central billing block -->
+ <!-- SEQ:71, Table:BP_HEADER/BP_CUSGEN, Field:FAKSD, M/O:, Type:CHAR, Size:2, Description:Central billing block -->
<xsd:element name="FAKSD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:72, Table:BP_HEADER/BP_CUSGEN, Field:LIFSD, M/O:, Type:VARC, Size:255, Description:Central delivery block -->
+ <!-- SEQ:72, Table:BP_HEADER/BP_CUSGEN, Field:LIFSD, M/O:, Type:CHAR, Size:2, Description:Central delivery block -->
<xsd:element name="LIFSD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:73, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGT, M/O:, Type:VARC, Size:255, Description:F-Tree GT Code -->
+ <!-- SEQ:73, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGT, M/O:, Type:CHAR, Size:10, Description:F-Tree GT Code -->
<xsd:element name="ZZFTGT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:74, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGTNM, M/O:, Type:VARC, Size:255, Description:F-Tree GT Name -->
+ <!-- SEQ:74, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGTNM, M/O:, Type:CHAR, Size:40, Description:F-Tree GT Name -->
<xsd:element name="ZZFTGTNM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:75, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDT, M/O:, Type:VARC, Size:255, Description:F-Tree DT Code -->
+ <!-- SEQ:75, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDT, M/O:, Type:CHAR, Size:10, Description:F-Tree DT Code -->
<xsd:element name="ZZFTDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:76, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDTNM, M/O:, Type:VARC, Size:255, Description:F-Tree DT Name -->
+ <!-- SEQ:76, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDTNM, M/O:, Type:CHAR, Size:40, Description:F-Tree DT Name -->
<xsd:element name="ZZFTDTNM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:77, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBU, M/O:, Type:VARC, Size:255, Description:F-Tree BU Code -->
+ <!-- SEQ:77, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBU, M/O:, Type:CHAR, Size:10, Description:F-Tree BU Code -->
<xsd:element name="ZZFTBU" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:78, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBUNM, M/O:, Type:VARC, Size:255, Description:F-Tree BU Name -->
+ <!-- SEQ:78, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBUNM, M/O:, Type:CHAR, Size:40, Description:F-Tree BU Name -->
<xsd:element name="ZZFTBUNM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:79, Table:BP_HEADER/BP_CUSGEN, Field:ZZDUNS, M/O:, Type:VARC, Size:255, Description:DUNS Number -->
+ <!-- SEQ:79, Table:BP_HEADER/BP_CUSGEN, Field:ZZDUNS, M/O:, Type:CHAR, Size:11, Description:DUNS Number -->
<xsd:element name="ZZDUNS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:80, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT01_C, M/O:, Type:VARC, Size:255, Description:City -->
+ <!-- SEQ:80, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT01_C, M/O:, Type:CHAR, Size:35, Description:City -->
<xsd:element name="ZZORT01_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:81, Table:BP_HEADER/BP_CUSGEN, Field:ZZREASON, M/O:, Type:VARC, Size:255, Description:Reason for Duplication -->
+ <!-- SEQ:81, Table:BP_HEADER/BP_CUSGEN, Field:ZZREASON, M/O:, Type:CHAR, Size:2, Description:Reason for Duplication -->
<xsd:element name="ZZREASON" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:82, Table:BP_HEADER/BP_CUSGEN, Field:ZZSUBSEQ_C, M/O:, Type:VARC, Size:255, Description:종사업장 일련번호 -->
+ <!-- SEQ:82, Table:BP_HEADER/BP_CUSGEN, Field:ZZSUBSEQ_C, M/O:, Type:CHAR, Size:4, Description:종사업장 일련번호 -->
<xsd:element name="ZZSUBSEQ_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:83, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT02_C, M/O:, Type:VARC, Size:255, Description:District -->
+ <!-- SEQ:83, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT02_C, M/O:, Type:CHAR, Size:35, Description:District -->
<xsd:element name="ZZORT02_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:84, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTRAS_C, M/O:, Type:VARC, Size:255, Description:House number and street -->
+ <!-- SEQ:84, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTRAS_C, M/O:, Type:CHAR, Size:35, Description:House number and street -->
<xsd:element name="ZZSTRAS_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:85, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGDT_C, M/O:, Type:VARC, Size:255, Description:Registerd Date -->
+ <!-- SEQ:85, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGDT_C, M/O:, Type:DATS, Size:8, Description:Registerd Date -->
<xsd:element name="ZZREGDT_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:86, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGTM_C, M/O:, Type:VARC, Size:255, Description:Registerd Time -->
+ <!-- SEQ:86, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGTM_C, M/O:, Type:TIMS, Size:6, Description:Registerd Time -->
<xsd:element name="ZZREGTM_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:87, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGUS_C, M/O:, Type:VARC, Size:255, Description:Registerd User -->
+ <!-- SEQ:87, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGUS_C, M/O:, Type:CHAR, Size:12, Description:Registerd User -->
<xsd:element name="ZZREGUS_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:88, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPDT_C, M/O:, Type:VARC, Size:255, Description:Apporval Date -->
+ <!-- SEQ:88, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPDT_C, M/O:, Type:DATS, Size:8, Description:Apporval Date -->
<xsd:element name="ZZAPPDT_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:89, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPTM_C, M/O:, Type:VARC, Size:255, Description:Apporval Time -->
+ <!-- SEQ:89, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPTM_C, M/O:, Type:TIMS, Size:6, Description:Apporval Time -->
<xsd:element name="ZZAPPTM_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:90, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPUS_C, M/O:, Type:VARC, Size:255, Description:Apporval User -->
+ <!-- SEQ:90, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPUS_C, M/O:, Type:CHAR, Size:12, Description:Apporval User -->
<xsd:element name="ZZAPPUS_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:91, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMDT_C, M/O:, Type:VARC, Size:255, Description:Last Modified Date -->
+ <!-- SEQ:91, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMDT_C, M/O:, Type:DATS, Size:8, Description:Last Modified Date -->
<xsd:element name="ZZLAMDT_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:92, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMTM_C, M/O:, Type:VARC, Size:255, Description:Last Modified Time -->
+ <!-- SEQ:92, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMTM_C, M/O:, Type:TIMS, Size:6, Description:Last Modified Time -->
<xsd:element name="ZZLAMTM_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:93, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMUS_C, M/O:, Type:VARC, Size:255, Description:Last Modified User -->
+ <!-- SEQ:93, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMUS_C, M/O:, Type:CHAR, Size:12, Description:Last Modified User -->
<xsd:element name="ZZLAMUS_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:94, Table:BP_HEADER/BP_CUSGEN, Field:ZZCRMCD, M/O:, Type:VARC, Size:255, Description:CRM Code -->
+ <!-- SEQ:94, Table:BP_HEADER/BP_CUSGEN, Field:ZZCRMCD, M/O:, Type:CHAR, Size:20, Description:CRM Code -->
<xsd:element name="ZZCRMCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:95, Table:BP_HEADER/BP_CUSGEN, Field:ZZINBFLGC, M/O:, Type:VARC, Size:255, Description:Inbound Flag -->
+ <!-- SEQ:95, Table:BP_HEADER/BP_CUSGEN, Field:ZZINBFLGC, M/O:, Type:CHAR, Size:1, Description:Inbound Flag -->
<xsd:element name="ZZINBFLGC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:96, Table:BP_HEADER/BP_CUSGEN, Field:ZZBRSCH_C, M/O:, Type:VARC, Size:255, Description:Industry -->
+ <!-- SEQ:96, Table:BP_HEADER/BP_CUSGEN, Field:ZZBRSCH_C, M/O:, Type:CHAR, Size:4, Description:Industry -->
<xsd:element name="ZZBRSCH_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:97, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTCDT_C, M/O:, Type:VARC, Size:255, Description:Tax number type -->
+ <!-- SEQ:97, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTCDT_C, M/O:, Type:CHAR, Size:2, Description:Tax number type -->
<xsd:element name="ZZSTCDT_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:98, Table:BP_HEADER/BP_CUSGEN, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:98, Table:BP_HEADER/BP_CUSGEN, Field:SPRAS, M/O:, Type:LANG, Size:1, Description:Language Key -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:99, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKAR_C, M/O:, Type:VARC, Size:255, Description:Document Type -->
+ <!-- SEQ:99, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKAR_C, M/O:, Type:CHAR, Size:3, Description:Document Type -->
<xsd:element name="ZZDOKAR_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:100, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKNR_C, M/O:, Type:VARC, Size:255, Description:Document -->
+ <!-- SEQ:100, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKNR_C, M/O:, Type:CHAR, Size:25, Description:Document -->
<xsd:element name="ZZDOKNR_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:101, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKTL_C, M/O:, Type:VARC, Size:255, Description:Document Part -->
+ <!-- SEQ:101, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKTL_C, M/O:, Type:CHAR, Size:3, Description:Document Part -->
<xsd:element name="ZZDOKTL_C" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:102, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKVR_C, M/O:, Type:VARC, Size:255, Description:Document version -->
+ <!-- SEQ:102, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKVR_C, M/O:, Type:CHAR, Size:2, Description:Document version -->
<xsd:element name="ZZDOKVR_C" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZVATREG">
<xsd:sequence>
- <!-- SEQ:146, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:LAND1, M/O:M, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:146, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:LAND1, M/O:M, Type:CHAR, Size:3, Description:Country Key -->
<xsd:element name="LAND1" type="xsd:string"/>
- <!-- SEQ:147, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:STCEG, M/O:, Type:VARC, Size:255, Description:VAT Registration Number -->
+ <!-- SEQ:147, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:STCEG, M/O:, Type:CHAR, Size:20, Description:VAT Registration Number -->
<xsd:element name="STCEG" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZTAXIND">
<xsd:sequence>
- <!-- SEQ:143, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:ALAND, M/O:M, Type:VARC, Size:255, Description:Departure country -->
+ <!-- SEQ:143, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:ALAND, M/O:M, Type:CHAR, Size:3, Description:Departure country -->
<xsd:element name="ALAND" type="xsd:string"/>
- <!-- SEQ:144, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TATYP, M/O:M, Type:VARC, Size:255, Description:Tax category -->
+ <!-- SEQ:144, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TATYP, M/O:M, Type:CHAR, Size:4, Description:Tax category -->
<xsd:element name="TATYP" type="xsd:string"/>
- <!-- SEQ:145, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TAXKD, M/O:, Type:VARC, Size:255, Description:Tax classification for customer -->
+ <!-- SEQ:145, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TAXKD, M/O:, Type:CHAR, Size:1, Description:Tax classification for customer -->
<xsd:element name="TAXKD" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZCOMPANY">
<xsd:sequence>
- <!-- SEQ:103, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:BUKRS, M/O:M, Type:VARC, Size:255, Description:Company Code -->
+ <!-- SEQ:103, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:BUKRS, M/O:M, Type:CHAR, Size:4, Description:Company Code -->
<xsd:element name="BUKRS" type="xsd:string"/>
- <!-- SEQ:104, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:AKONT, M/O:, Type:VARC, Size:255, Description:Reconcil.acct -->
+ <!-- SEQ:104, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:AKONT, M/O:, Type:CHAR, Size:10, Description:Reconcil.acct -->
<xsd:element name="AKONT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:105, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZUAWA, M/O:, Type:VARC, Size:255, Description:Sort key -->
+ <!-- SEQ:105, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZUAWA, M/O:, Type:CHAR, Size:3, Description:Sort key -->
<xsd:element name="ZUAWA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:106, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:FDGRV, M/O:, Type:VARC, Size:255, Description:Planning Group -->
+ <!-- SEQ:106, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:FDGRV, M/O:, Type:CHAR, Size:10, Description:Planning Group -->
<xsd:element name="FDGRV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:107, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZWELS, M/O:, Type:VARC, Size:255, Description:List of the Payment Methods to be Considered -->
+ <!-- SEQ:107, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZWELS, M/O:, Type:CHAR, Size:10, Description:List of the Payment Methods to be Considered -->
<xsd:element name="ZWELS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:108, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZTERM, M/O:, Type:VARC, Size:255, Description:Terms of Payment Key -->
+ <!-- SEQ:108, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZTERM, M/O:, Type:CHAR, Size:4, Description:Terms of Payment Key -->
<xsd:element name="ZTERM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:109, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZAHLS, M/O:, Type:VARC, Size:255, Description:Block Key for Payment -->
+ <!-- SEQ:109, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZAHLS, M/O:, Type:CHAR, Size:1, Description:Block Key for Payment -->
<xsd:element name="ZAHLS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:110, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:LOEVM, M/O:, Type:VARC, Size:255, Description:Central Deletion Flag for Master Record -->
+ <!-- SEQ:110, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:LOEVM, M/O:, Type:CHAR, Size:1, Description:Central Deletion Flag for Master Record -->
<xsd:element name="LOEVM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:111, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:SPERR, M/O:, Type:VARC, Size:255, Description:Posting block for company code -->
+ <!-- SEQ:111, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:SPERR, M/O:, Type:CHAR, Size:1, Description:Posting block for company code -->
<xsd:element name="SPERR" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZSALES">
<xsd:sequence>
<xsd:element name="ZCPFN" type="p0:ZCPFN" minOccurs="0" maxOccurs="unbounded"/>
- <!-- SEQ:112, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKORG, M/O:M, Type:VARC, Size:255, Description:Sales Org. -->
+ <!-- SEQ:112, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKORG, M/O:M, Type:CHAR, Size:4, Description:Sales Org. -->
<xsd:element name="VKORG" type="xsd:string"/>
- <!-- SEQ:113, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VTWEG, M/O:M, Type:VARC, Size:255, Description:Distr. Channel -->
+ <!-- SEQ:113, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VTWEG, M/O:M, Type:CHAR, Size:2, Description:Distr. Channel -->
<xsd:element name="VTWEG" type="xsd:string"/>
- <!-- SEQ:114, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:SPART, M/O:M, Type:VARC, Size:255, Description:Division -->
+ <!-- SEQ:114, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:SPART, M/O:M, Type:CHAR, Size:2, Description:Division -->
<xsd:element name="SPART" type="xsd:string"/>
- <!-- SEQ:115, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:BZIRK, M/O:, Type:VARC, Size:255, Description:Sales district -->
+ <!-- SEQ:115, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:BZIRK, M/O:, Type:CHAR, Size:6, Description:Sales district -->
<xsd:element name="BZIRK" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:116, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKBUR, M/O:, Type:VARC, Size:255, Description:Sales Office -->
+ <!-- SEQ:116, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKBUR, M/O:, Type:CHAR, Size:4, Description:Sales Office -->
<xsd:element name="VKBUR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:117, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKGRP, M/O:, Type:VARC, Size:255, Description:Sales Group -->
+ <!-- SEQ:117, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKGRP, M/O:, Type:CHAR, Size:3, Description:Sales Group -->
<xsd:element name="VKGRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:118, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KDGRP, M/O:, Type:VARC, Size:255, Description:Customer group -->
+ <!-- SEQ:118, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KDGRP, M/O:, Type:CHAR, Size:2, Description:Customer group -->
<xsd:element name="KDGRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:119, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AWAHR, M/O:, Type:VARC, Size:255, Description:Order probability of the item -->
+ <!-- SEQ:119, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AWAHR, M/O:, Type:NUMC, Size:3, Description:Order probability of the item -->
<xsd:element name="AWAHR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:120, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:WAERS, M/O:, Type:VARC, Size:255, Description:Currency -->
+ <!-- SEQ:120, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:WAERS, M/O:, Type:CUKY, Size:5, Description:Currency -->
<xsd:element name="WAERS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:121, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KURST, M/O:, Type:VARC, Size:255, Description:Exchange Rate Type -->
+ <!-- SEQ:121, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KURST, M/O:, Type:CHAR, Size:4, Description:Exchange Rate Type -->
<xsd:element name="KURST" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:122, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KALKS, M/O:, Type:VARC, Size:255, Description:Pricing procedure assigned to this customer -->
+ <!-- SEQ:122, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KALKS, M/O:, Type:CHAR, Size:1, Description:Pricing procedure assigned to this customer -->
<xsd:element name="KALKS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:123, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VERSG, M/O:, Type:VARC, Size:255, Description:Customer Statistics Group -->
+ <!-- SEQ:123, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VERSG, M/O:, Type:CHAR, Size:1, Description:Customer Statistics Group -->
<xsd:element name="VERSG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:124, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VSBED, M/O:, Type:VARC, Size:255, Description:Shipping Conditions -->
+ <!-- SEQ:124, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VSBED, M/O:, Type:CHAR, Size:2, Description:Shipping Conditions -->
<xsd:element name="VSBED" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:125, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ANTLF, M/O:, Type:VARC, Size:255, Description:Maximum Number of Partial Deliveries Allowed Per I -->
+ <!-- SEQ:125, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ANTLF, M/O:, Type:DEC, Size:1,0, Description:Maximum Number of Partial Deliveries Allowed Per I -->
<xsd:element name="ANTLF" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:126, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO1, M/O:, Type:VARC, Size:255, Description:Incoterms (Part 1) -->
+ <!-- SEQ:126, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO1, M/O:, Type:CHAR, Size:3, Description:Incoterms (Part 1) -->
<xsd:element name="INCO1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:127, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO2, M/O:, Type:VARC, Size:255, Description:Incoterms (Part 2) -->
+ <!-- SEQ:127, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO2, M/O:, Type:CHAR, Size:28, Description:Incoterms (Part 2) -->
<xsd:element name="INCO2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:128, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ZTERM, M/O:, Type:VARC, Size:255, Description:Terms of Payment Key -->
+ <!-- SEQ:128, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ZTERM, M/O:, Type:CHAR, Size:4, Description:Terms of Payment Key -->
<xsd:element name="ZTERM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:129, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KTGRD, M/O:, Type:VARC, Size:255, Description:Account assignment group for this customer -->
+ <!-- SEQ:129, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KTGRD, M/O:, Type:CHAR, Size:2, Description:Account assignment group for this customer -->
<xsd:element name="KTGRD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:130, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LOEVM, M/O:, Type:VARC, Size:255, Description:Central Deletion Flag for Master Record -->
+ <!-- SEQ:130, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LOEVM, M/O:, Type:CHAR, Size:1, Description:Central Deletion Flag for Master Record -->
<xsd:element name="LOEVM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:131, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KONDA, M/O:, Type:VARC, Size:255, Description:Price group -->
+ <!-- SEQ:131, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KONDA, M/O:, Type:CHAR, Size:2, Description:Price group -->
<xsd:element name="KONDA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:132, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LPRIO, M/O:, Type:VARC, Size:255, Description:Delivery Priority -->
+ <!-- SEQ:132, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LPRIO, M/O:, Type:NUMC, Size:2, Description:Delivery Priority -->
<xsd:element name="LPRIO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:133, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:PLTYP, M/O:, Type:VARC, Size:255, Description:Price List -->
+ <!-- SEQ:133, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:PLTYP, M/O:, Type:CHAR, Size:2, Description:Price List -->
<xsd:element name="PLTYP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:134, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VWERK, M/O:, Type:VARC, Size:255, Description:From plant -->
+ <!-- SEQ:134, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VWERK, M/O:, Type:CHAR, Size:4, Description:From plant -->
<xsd:element name="VWERK" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:135, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AUFSD, M/O:, Type:VARC, Size:255, Description:Customer order block (sales area) -->
+ <!-- SEQ:135, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AUFSD, M/O:, Type:CHAR, Size:1, Description:Customer order block (sales area) -->
<xsd:element name="AUFSD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:136, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LIFSD, M/O:, Type:VARC, Size:255, Description:Customer delivery block (sales area) -->
+ <!-- SEQ:136, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LIFSD, M/O:, Type:CHAR, Size:1, Description:Customer delivery block (sales area) -->
<xsd:element name="LIFSD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:137, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:FAKSD, M/O:, Type:VARC, Size:255, Description:Billing block for customer (sales and distribution -->
+ <!-- SEQ:137, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:FAKSD, M/O:, Type:CHAR, Size:1, Description:Billing block for customer (sales and distribution -->
<xsd:element name="FAKSD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:138, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KZAZU, M/O:, Type:VARC, Size:255, Description:Order Combination -->
+ <!-- SEQ:138, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KZAZU, M/O:, Type:CHAR, Size:1, Description:Order Combination -->
<xsd:element name="KZAZU" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZCPFN">
<xsd:sequence>
- <!-- SEQ:139, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARVW, M/O:M, Type:VARC, Size:255, Description:Partner Function -->
+ <!-- SEQ:139, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARVW, M/O:M, Type:CHAR, Size:2, Description:Partner Function -->
<xsd:element name="PARVW" type="xsd:string"/>
- <!-- SEQ:140, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARZA, M/O:M, Type:VARC, Size:255, Description:Partner counter -->
+ <!-- SEQ:140, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARZA, M/O:M, Type:NUMC, Size:3, Description:Partner counter -->
<xsd:element name="PARZA" type="xsd:string"/>
- <!-- SEQ:141, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:DEFPA, M/O:, Type:VARC, Size:255, Description:Default Partner -->
+ <!-- SEQ:141, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:DEFPA, M/O:, Type:CHAR, Size:1, Description:Default Partner -->
<xsd:element name="DEFPA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:142, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:KUNN2, M/O:, Type:VARC, Size:255, Description:Customer number of business partner -->
+ <!-- SEQ:142, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:KUNN2, M/O:, Type:CHAR, Size:10, Description:Customer number of business partner -->
<xsd:element name="KUNN2" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl b/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
index c025ac0f..3bd28b54 100644
--- a/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl
@@ -13,35 +13,35 @@
</xsd:complexType>
<xsd:complexType name="CMCTB_DEPT_MDG">
<xsd:sequence>
- <!-- SEQ:1, Table:CMCTB_DEPT_MDG, Field:DEPTCD, M/O:M, Type:VARC, Size:255, Description:부서코드 -->
+ <!-- SEQ:1, Table:CMCTB_DEPT_MDG, Field:DEPTCD, M/O:M, Type:VARC, Size:10, Description:부서코드 -->
<xsd:element name="DEPTCD" type="xsd:string"/>
- <!-- SEQ:2, Table:CMCTB_DEPT_MDG, Field:CORPCD, M/O:M, Type:VARC, Size:255, Description:법인코드 -->
+ <!-- SEQ:2, Table:CMCTB_DEPT_MDG, Field:CORPCD, M/O:M, Type:VARC, Size:4, Description:법인코드 -->
<xsd:element name="CORPCD" type="xsd:string"/>
- <!-- SEQ:3, Table:CMCTB_DEPT_MDG, Field:COMPCD, M/O:, Type:VARC, Size:255, Description:회사코드 -->
+ <!-- SEQ:3, Table:CMCTB_DEPT_MDG, Field:COMPCD, M/O:, Type:VARC, Size:20, Description:회사코드 -->
<xsd:element name="COMPCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:CMCTB_DEPT_MDG, Field:PDEPTCD, M/O:, Type:VARC, Size:255, Description:상위부서코드 -->
+ <!-- SEQ:4, Table:CMCTB_DEPT_MDG, Field:PDEPTCD, M/O:, Type:VARC, Size:10, Description:상위부서코드 -->
<xsd:element name="PDEPTCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:CMCTB_DEPT_MDG, Field:CCCD, M/O:, Type:VARC, Size:255, Description:코스트센터 -->
+ <!-- SEQ:5, Table:CMCTB_DEPT_MDG, Field:CCCD, M/O:, Type:VARC, Size:10, Description:코스트센터 -->
<xsd:element name="CCCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:CMCTB_DEPT_MDG, Field:PCCD, M/O:, Type:VARC, Size:255, Description:손익센터 -->
+ <!-- SEQ:6, Table:CMCTB_DEPT_MDG, Field:PCCD, M/O:, Type:VARC, Size:10, Description:손익센터 -->
<xsd:element name="PCCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:CMCTB_DEPT_MDG, Field:BICD, M/O:, Type:VARC, Size:255, Description:사업장코드 -->
+ <!-- SEQ:7, Table:CMCTB_DEPT_MDG, Field:BICD, M/O:, Type:VARC, Size:20, Description:사업장코드 -->
<xsd:element name="BICD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:CMCTB_DEPT_MDG, Field:WERKS, M/O:, Type:VARC, Size:255, Description:플랜트코드 -->
+ <!-- SEQ:8, Table:CMCTB_DEPT_MDG, Field:WERKS, M/O:, Type:VARC, Size:4, Description:플랜트코드 -->
<xsd:element name="WERKS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:CMCTB_DEPT_MDG, Field:BIZAREA, M/O:, Type:VARC, Size:255, Description:사업부문 -->
+ <!-- SEQ:9, Table:CMCTB_DEPT_MDG, Field:BIZAREA, M/O:, Type:VARC, Size:4, Description:사업부문 -->
<xsd:element name="BIZAREA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:CMCTB_DEPT_MDG, Field:GNCD, M/O:, Type:VARC, Size:255, Description: -->
+ <!-- SEQ:10, Table:CMCTB_DEPT_MDG, Field:GNCD, M/O:, Type:VARC, Size:20, Description: -->
<xsd:element name="GNCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:CMCTB_DEPT_MDG, Field:DHEMPID, M/O:, Type:VARC, Size:255, Description:부서장사번 -->
+ <!-- SEQ:11, Table:CMCTB_DEPT_MDG, Field:DHEMPID, M/O:, Type:VARC, Size:20, Description:부서장사번 -->
<xsd:element name="DHEMPID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:CMCTB_DEPT_MDG, Field:VALIDFROMDT, M/O:, Type:VARC, Size:255, Description:유효일자(시작) -->
+ <!-- SEQ:12, Table:CMCTB_DEPT_MDG, Field:VALIDFROMDT, M/O:, Type:VARC, Size:8, Description:유효일자(시작) -->
<xsd:element name="VALIDFROMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:CMCTB_DEPT_MDG, Field:VALIDTODT, M/O:, Type:VARC, Size:255, Description:유효일자(끝) -->
+ <!-- SEQ:13, Table:CMCTB_DEPT_MDG, Field:VALIDTODT, M/O:, Type:VARC, Size:8, Description:유효일자(끝) -->
<xsd:element name="VALIDTODT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:CMCTB_DEPT_MDG, Field:DEPTLVL, M/O:, Type:VARC, Size:255, Description:부서레벨 -->
+ <!-- SEQ:14, Table:CMCTB_DEPT_MDG, Field:DEPTLVL, M/O:, Type:VARC, Size:3, Description:부서레벨 -->
<xsd:element name="DEPTLVL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:CMCTB_DEPT_MDG, Field:DEPTPOSNO, M/O:, Type:VARC, Size:255, Description:부서위치 -->
+ <!-- SEQ:15, Table:CMCTB_DEPT_MDG, Field:DEPTPOSNO, M/O:, Type:VARC, Size:30, Description:부서위치 -->
<xsd:element name="DEPTPOSNO" type="xsd:string" minOccurs="0"/>
<xsd:element name="DEPTNM" type="p0:DEPTNM" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="COMPNM" type="p0:COMPNM" minOccurs="0" maxOccurs="unbounded"/>
@@ -50,25 +50,25 @@
</xsd:complexType>
<xsd:complexType name="DEPTNM">
<xsd:sequence>
- <!-- SEQ:16, Table:CMCTB_DEPT_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 -->
+ <!-- SEQ:16, Table:CMCTB_DEPT_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 -->
<xsd:element name="SPRAS" type="xsd:string"/>
- <!-- SEQ:17, Table:CMCTB_DEPT_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:부서명 -->
+ <!-- SEQ:17, Table:CMCTB_DEPT_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:90, Description:부서명 -->
<xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="COMPNM">
<xsd:sequence>
- <!-- SEQ:18, Table:CMCTB_DEPT_MDG/COMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 -->
+ <!-- SEQ:18, Table:CMCTB_DEPT_MDG/COMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 -->
<xsd:element name="SPRAS" type="xsd:string"/>
- <!-- SEQ:19, Table:CMCTB_DEPT_MDG/COMPNM, Field:COMPNM, M/O:, Type:VARC, Size:255, Description:회사명 -->
+ <!-- SEQ:19, Table:CMCTB_DEPT_MDG/COMPNM, Field:COMPNM, M/O:, Type:VARC, Size:90, Description:회사명 -->
<xsd:element name="COMPNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CORPNM">
<xsd:sequence>
- <!-- SEQ:20, Table:CMCTB_DEPT_MDG/CORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 -->
+ <!-- SEQ:20, Table:CMCTB_DEPT_MDG/CORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 -->
<xsd:element name="SPRAS" type="xsd:string"/>
- <!-- SEQ:21, Table:CMCTB_DEPT_MDG/CORPNM, Field:CORPNM, M/O:, Type:VARC, Size:255, Description:법인명 -->
+ <!-- SEQ:21, Table:CMCTB_DEPT_MDG/CORPNM, Field:CORPNM, M/O:, Type:VARC, Size:90, Description:법인명 -->
<xsd:element name="CORPNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
index f8e181e3..0d453e15 100644
--- a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl
@@ -13,149 +13,149 @@
</xsd:complexType>
<xsd:complexType name="CMCTB_EMP_MDG">
<xsd:sequence>
- <!-- SEQ:1, Table:CMCTB_EMP_MDG, Field:EMPID, M/O:M, Type:VARC, Size:255, Description:사원번호 -->
+ <!-- SEQ:1, Table:CMCTB_EMP_MDG, Field:EMPID, M/O:M, Type:CHAR, Size:20, Description:사원번호 -->
<xsd:element name="EMPID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:2, Table:CMCTB_EMP_MDG, Field:SINGLEID, M/O:, Type:VARC, Size:255, Description:싱글 ID -->
+ <!-- SEQ:2, Table:CMCTB_EMP_MDG, Field:SINGLEID, M/O:, Type:CHAR, Size:12, Description:싱글 ID -->
<xsd:element name="SINGLEID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:3, Table:CMCTB_EMP_MDG, Field:EPID, M/O:, Type:VARC, Size:255, Description:EPID -->
+ <!-- SEQ:3, Table:CMCTB_EMP_MDG, Field:EPID, M/O:, Type:CHAR, Size:50, Description:EPID -->
<xsd:element name="EPID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:CMCTB_EMP_MDG, Field:NAME, M/O:, Type:VARC, Size:255, Description:사원이름 -->
+ <!-- SEQ:4, Table:CMCTB_EMP_MDG, Field:NAME, M/O:, Type:CHAR, Size:70, Description:사원이름 -->
<xsd:element name="NAME" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:CMCTB_EMP_MDG, Field:ENGNAME, M/O:, Type:VARC, Size:255, Description:사원영문이름 -->
+ <!-- SEQ:5, Table:CMCTB_EMP_MDG, Field:ENGNAME, M/O:, Type:CHAR, Size:70, Description:사원영문이름 -->
<xsd:element name="ENGNAME" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:CMCTB_EMP_MDG, Field:EMPTYPE, M/O:, Type:VARC, Size:255, Description:인력유형 -->
+ <!-- SEQ:6, Table:CMCTB_EMP_MDG, Field:EMPTYPE, M/O:, Type:CHAR, Size:20, Description:인력유형 -->
<xsd:element name="EMPTYPE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:CMCTB_EMP_MDG, Field:DEPTCD, M/O:, Type:VARC, Size:255, Description:부서코드 -->
+ <!-- SEQ:7, Table:CMCTB_EMP_MDG, Field:DEPTCD, M/O:, Type:CHAR, Size:10, Description:부서코드 -->
<xsd:element name="DEPTCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:CMCTB_EMP_MDG, Field:PDEPTCD, M/O:, Type:VARC, Size:255, Description:상위부서코드 -->
+ <!-- SEQ:8, Table:CMCTB_EMP_MDG, Field:PDEPTCD, M/O:, Type:CHAR, Size:10, Description:상위부서코드 -->
<xsd:element name="PDEPTCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:CMCTB_EMP_MDG, Field:COMPCD, M/O:, Type:VARC, Size:255, Description:회사 코드 -->
+ <!-- SEQ:9, Table:CMCTB_EMP_MDG, Field:COMPCD, M/O:, Type:CHAR, Size:20, Description:회사 코드 -->
<xsd:element name="COMPCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:CMCTB_EMP_MDG, Field:CORPCD, M/O:, Type:VARC, Size:255, Description:법인 코드 -->
+ <!-- SEQ:10, Table:CMCTB_EMP_MDG, Field:CORPCD, M/O:, Type:CHAR, Size:4, Description:법인 코드 -->
<xsd:element name="CORPCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:CMCTB_EMP_MDG, Field:GNCD, M/O:, Type:VARC, Size:255, Description:총괄코드 -->
+ <!-- SEQ:11, Table:CMCTB_EMP_MDG, Field:GNCD, M/O:, Type:CHAR, Size:20, Description:총괄코드 -->
<xsd:element name="GNCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:CMCTB_EMP_MDG, Field:BICD, M/O:, Type:VARC, Size:255, Description:사업장코드 -->
+ <!-- SEQ:12, Table:CMCTB_EMP_MDG, Field:BICD, M/O:, Type:CHAR, Size:20, Description:사업장코드 -->
<xsd:element name="BICD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:CMCTB_EMP_MDG, Field:KTL_EMP, M/O:, Type:VARC, Size:255, Description:비용센터 -->
+ <!-- SEQ:13, Table:CMCTB_EMP_MDG, Field:KTL_EMP, M/O:, Type:CHAR, Size:10, Description:비용센터 -->
<xsd:element name="KTL_EMP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:CMCTB_EMP_MDG, Field:BIZAREA, M/O:, Type:VARC, Size:255, Description:Business Area -->
+ <!-- SEQ:14, Table:CMCTB_EMP_MDG, Field:BIZAREA, M/O:, Type:CHAR, Size:4, Description:Business Area -->
<xsd:element name="BIZAREA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:CMCTB_EMP_MDG, Field:WORKPLC, M/O:, Type:VARC, Size:255, Description:근무처 -->
+ <!-- SEQ:15, Table:CMCTB_EMP_MDG, Field:WORKPLC, M/O:, Type:CHAR, Size:16, Description:근무처 -->
<xsd:element name="WORKPLC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:CMCTB_EMP_MDG, Field:PAYPLC, M/O:, Type:VARC, Size:255, Description:Payplace for Employee -->
+ <!-- SEQ:16, Table:CMCTB_EMP_MDG, Field:PAYPLC, M/O:, Type:CHAR, Size:4, Description:Payplace for Employee -->
<xsd:element name="PAYPLC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:CMCTB_EMP_MDG, Field:COUNTRYCD, M/O:, Type:VARC, Size:255, Description:국가코드 -->
+ <!-- SEQ:17, Table:CMCTB_EMP_MDG, Field:COUNTRYCD, M/O:, Type:CHAR, Size:3, Description:국가코드 -->
<xsd:element name="COUNTRYCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:CMCTB_EMP_MDG, Field:JOBCD, M/O:, Type:VARC, Size:255, Description:직무코드 -->
+ <!-- SEQ:18, Table:CMCTB_EMP_MDG, Field:JOBCD, M/O:, Type:CHAR, Size:20, Description:직무코드 -->
<xsd:element name="JOBCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:19, Table:CMCTB_EMP_MDG, Field:JOBDUTYCD, M/O:, Type:VARC, Size:255, Description:직책코드 -->
+ <!-- SEQ:19, Table:CMCTB_EMP_MDG, Field:JOBDUTYCD, M/O:, Type:CHAR, Size:15, Description:직책코드 -->
<xsd:element name="JOBDUTYCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:20, Table:CMCTB_EMP_MDG, Field:JOBGRDCD, M/O:, Type:VARC, Size:255, Description:직급코드 -->
+ <!-- SEQ:20, Table:CMCTB_EMP_MDG, Field:JOBGRDCD, M/O:, Type:CHAR, Size:12, Description:직급코드 -->
<xsd:element name="JOBGRDCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:21, Table:CMCTB_EMP_MDG, Field:GJOBCD, M/O:, Type:VARC, Size:255, Description:Global 직무 -->
+ <!-- SEQ:21, Table:CMCTB_EMP_MDG, Field:GJOBCD, M/O:, Type:CHAR, Size:20, Description:Global 직무 -->
<xsd:element name="GJOBCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:CMCTB_EMP_MDG, Field:GJOBDUTYCD, M/O:, Type:VARC, Size:255, Description:Global 직책 -->
+ <!-- SEQ:22, Table:CMCTB_EMP_MDG, Field:GJOBDUTYCD, M/O:, Type:CHAR, Size:20, Description:Global 직책 -->
<xsd:element name="GJOBDUTYCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:23, Table:CMCTB_EMP_MDG, Field:GJOBGRDCD, M/O:, Type:VARC, Size:255, Description:Global 직급 -->
+ <!-- SEQ:23, Table:CMCTB_EMP_MDG, Field:GJOBGRDCD, M/O:, Type:CHAR, Size:20, Description:Global 직급 -->
<xsd:element name="GJOBGRDCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:24, Table:CMCTB_EMP_MDG, Field:LVABSENCE, M/O:, Type:VARC, Size:255, Description:휴직여부 -->
+ <!-- SEQ:24, Table:CMCTB_EMP_MDG, Field:LVABSENCE, M/O:, Type:CHAR, Size:1, Description:휴직여부 -->
<xsd:element name="LVABSENCE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:25, Table:CMCTB_EMP_MDG, Field:RETIRE, M/O:, Type:VARC, Size:255, Description:퇴직여부 -->
+ <!-- SEQ:25, Table:CMCTB_EMP_MDG, Field:RETIRE, M/O:, Type:CHAR, Size:1, Description:퇴직여부 -->
<xsd:element name="RETIRE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:26, Table:CMCTB_EMP_MDG, Field:DISPATCH, M/O:, Type:VARC, Size:255, Description:파견여부 -->
+ <!-- SEQ:26, Table:CMCTB_EMP_MDG, Field:DISPATCH, M/O:, Type:CHAR, Size:1, Description:파견여부 -->
<xsd:element name="DISPATCH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:27, Table:CMCTB_EMP_MDG, Field:DPSTARTDT, M/O:, Type:VARC, Size:255, Description:파견발령일 -->
+ <!-- SEQ:27, Table:CMCTB_EMP_MDG, Field:DPSTARTDT, M/O:, Type:DATS, Size:8, Description:파견발령일 -->
<xsd:element name="DPSTARTDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:28, Table:CMCTB_EMP_MDG, Field:DEPENDDT, M/O:, Type:VARC, Size:255, Description:파견종료예정일 -->
+ <!-- SEQ:28, Table:CMCTB_EMP_MDG, Field:DEPENDDT, M/O:, Type:DATS, Size:8, Description:파견종료예정일 -->
<xsd:element name="DEPENDDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:CMCTB_EMP_MDG, Field:ORGDEPTCD, M/O:, Type:VARC, Size:255, Description:원소속부서코드 -->
+ <!-- SEQ:29, Table:CMCTB_EMP_MDG, Field:ORGDEPTCD, M/O:, Type:CHAR, Size:10, Description:원소속부서코드 -->
<xsd:element name="ORGDEPTCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:30, Table:CMCTB_EMP_MDG, Field:ORGPDEPCD, M/O:, Type:VARC, Size:255, Description:원소속부서의 상위부서코드 -->
+ <!-- SEQ:30, Table:CMCTB_EMP_MDG, Field:ORGPDEPCD, M/O:, Type:CHAR, Size:10, Description:원소속부서의 상위부서코드 -->
<xsd:element name="ORGPDEPCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:31, Table:CMCTB_EMP_MDG, Field:ORGCOMPCD, M/O:, Type:VARC, Size:255, Description:원소속회사코드 -->
+ <!-- SEQ:31, Table:CMCTB_EMP_MDG, Field:ORGCOMPCD, M/O:, Type:CHAR, Size:20, Description:원소속회사코드 -->
<xsd:element name="ORGCOMPCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:32, Table:CMCTB_EMP_MDG, Field:ORGCORPCD, M/O:, Type:VARC, Size:255, Description:원소속법인코드 -->
+ <!-- SEQ:32, Table:CMCTB_EMP_MDG, Field:ORGCORPCD, M/O:, Type:CHAR, Size:4, Description:원소속법인코드 -->
<xsd:element name="ORGCORPCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:CMCTB_EMP_MDG, Field:ORGBICD, M/O:, Type:VARC, Size:255, Description:원소속사업장코드 -->
+ <!-- SEQ:33, Table:CMCTB_EMP_MDG, Field:ORGBICD, M/O:, Type:CHAR, Size:20, Description:원소속사업장코드 -->
<xsd:element name="ORGBICD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:34, Table:CMCTB_EMP_MDG, Field:OKTL_EMPL, M/O:, Type:VARC, Size:255, Description:원소속부서 비용센터 -->
+ <!-- SEQ:34, Table:CMCTB_EMP_MDG, Field:OKTL_EMPL, M/O:, Type:CHAR, Size:10, Description:원소속부서 비용센터 -->
<xsd:element name="OKTL_EMPL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:35, Table:CMCTB_EMP_MDG, Field:VALFROMDT, M/O:, Type:VARC, Size:255, Description:근무시작일 -->
+ <!-- SEQ:35, Table:CMCTB_EMP_MDG, Field:VALFROMDT, M/O:, Type:DATS, Size:8, Description:근무시작일 -->
<xsd:element name="VALFROMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:36, Table:CMCTB_EMP_MDG, Field:VALTODT, M/O:, Type:VARC, Size:255, Description:종료예정일(퇴직일자-정규직일경우) -->
+ <!-- SEQ:36, Table:CMCTB_EMP_MDG, Field:VALTODT, M/O:, Type:DATS, Size:8, Description:종료예정일(퇴직일자-정규직일경우) -->
<xsd:element name="VALTODT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:37, Table:CMCTB_EMP_MDG, Field:DHJOBGRDCD, M/O:, Type:VARC, Size:255, Description:부서장 직급코드 -->
+ <!-- SEQ:37, Table:CMCTB_EMP_MDG, Field:DHJOBGRDCD, M/O:, Type:CHAR, Size:29, Description:부서장 직급코드 -->
<xsd:element name="DHJOBGRDCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:38, Table:CMCTB_EMP_MDG, Field:DHNAME, M/O:, Type:VARC, Size:255, Description:부서장 이름 -->
+ <!-- SEQ:38, Table:CMCTB_EMP_MDG, Field:DHNAME, M/O:, Type:CHAR, Size:70, Description:부서장 이름 -->
<xsd:element name="DHNAME" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:39, Table:CMCTB_EMP_MDG, Field:DHSINGLID, M/O:, Type:VARC, Size:255, Description:부서장 SingleID -->
+ <!-- SEQ:39, Table:CMCTB_EMP_MDG, Field:DHSINGLID, M/O:, Type:CHAR, Size:12, Description:부서장 SingleID -->
<xsd:element name="DHSINGLID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:40, Table:CMCTB_EMP_MDG, Field:SOCIALID, M/O:, Type:VARC, Size:255, Description: -->
+ <!-- SEQ:40, Table:CMCTB_EMP_MDG, Field:SOCIALID, M/O:, Type:CHAR, Size:16, Description: -->
<xsd:element name="SOCIALID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:41, Table:CMCTB_EMP_MDG, Field:SOCIALID_DECR, M/O:, Type:VARC, Size:255, Description: -->
+ <!-- SEQ:41, Table:CMCTB_EMP_MDG, Field:SOCIALID_DECR, M/O:, Type:CHAR, Size:16, Description: -->
<xsd:element name="SOCIALID_DECR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:42, Table:CMCTB_EMP_MDG, Field:SEX, M/O:, Type:VARC, Size:255, Description:성별 -->
+ <!-- SEQ:42, Table:CMCTB_EMP_MDG, Field:SEX, M/O:, Type:CHAR, Size:1, Description:성별 -->
<xsd:element name="SEX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:43, Table:CMCTB_EMP_MDG, Field:EMAIL, M/O:, Type:VARC, Size:255, Description:이메일주소 -->
+ <!-- SEQ:43, Table:CMCTB_EMP_MDG, Field:EMAIL, M/O:, Type:CHAR, Size:40, Description:이메일주소 -->
<xsd:element name="EMAIL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:44, Table:CMCTB_EMP_MDG, Field:TELNUM, M/O:, Type:VARC, Size:255, Description:전화번호 -->
+ <!-- SEQ:44, Table:CMCTB_EMP_MDG, Field:TELNUM, M/O:, Type:CHAR, Size:20, Description:전화번호 -->
<xsd:element name="TELNUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:45, Table:CMCTB_EMP_MDG, Field:MBPHONE, M/O:, Type:VARC, Size:255, Description:개인 휴대폰 전화번호 -->
+ <!-- SEQ:45, Table:CMCTB_EMP_MDG, Field:MBPHONE, M/O:, Type:CHAR, Size:20, Description:개인 휴대폰 전화번호 -->
<xsd:element name="MBPHONE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:46, Table:CMCTB_EMP_MDG, Field:EMPADR, M/O:, Type:VARC, Size:255, Description:주소 -->
+ <!-- SEQ:46, Table:CMCTB_EMP_MDG, Field:EMPADR, M/O:, Type:CHAR, Size:10, Description:주소 -->
<xsd:element name="EMPADR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:47, Table:CMCTB_EMP_MDG, Field:PSTLCODE, M/O:, Type:VARC, Size:255, Description:우편번호 -->
+ <!-- SEQ:47, Table:CMCTB_EMP_MDG, Field:PSTLCODE, M/O:, Type:CHAR, Size:10, Description:우편번호 -->
<xsd:element name="PSTLCODE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:48, Table:CMCTB_EMP_MDG, Field:WFREQUIRE, M/O:, Type:VARC, Size:255, Description:전결필요여부 -->
+ <!-- SEQ:48, Table:CMCTB_EMP_MDG, Field:WFREQUIRE, M/O:, Type:CHAR, Size:1, Description:전결필요여부 -->
<xsd:element name="WFREQUIRE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:49, Table:CMCTB_EMP_MDG, Field:HRMANAGE, M/O:, Type:VARC, Size:255, Description:HR시스템에서 관리 여부 -->
+ <!-- SEQ:49, Table:CMCTB_EMP_MDG, Field:HRMANAGE, M/O:, Type:CHAR, Size:1, Description:HR시스템에서 관리 여부 -->
<xsd:element name="HRMANAGE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:50, Table:CMCTB_EMP_MDG, Field:SINGLRQ, M/O:, Type:VARC, Size:255, Description:싱글ID 요청 상태 -->
+ <!-- SEQ:50, Table:CMCTB_EMP_MDG, Field:SINGLRQ, M/O:, Type:CHAR, Size:1, Description:싱글ID 요청 상태 -->
<xsd:element name="SINGLRQ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:51, Table:CMCTB_EMP_MDG, Field:SOJRNEMP, M/O:, Type:VARC, Size:255, Description:주재원 여부 -->
+ <!-- SEQ:51, Table:CMCTB_EMP_MDG, Field:SOJRNEMP, M/O:, Type:CHAR, Size:1, Description:주재원 여부 -->
<xsd:element name="SOJRNEMP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:52, Table:CMCTB_EMP_MDG, Field:ADDRCNTRY, M/O:, Type:VARC, Size:255, Description:우편번호의 국가코드 -->
+ <!-- SEQ:52, Table:CMCTB_EMP_MDG, Field:ADDRCNTRY, M/O:, Type:CHAR, Size:3, Description:우편번호의 국가코드 -->
<xsd:element name="ADDRCNTRY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:53, Table:CMCTB_EMP_MDG, Field:FORIGNFLG, M/O:, Type:VARC, Size:255, Description:[기획]Foreign Flag -->
+ <!-- SEQ:53, Table:CMCTB_EMP_MDG, Field:FORIGNFLG, M/O:, Type:CHAR, Size:1, Description:[기획]Foreign Flag -->
<xsd:element name="FORIGNFLG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:54, Table:CMCTB_EMP_MDG, Field:USEDSYS, M/O:, Type:VARC, Size:255, Description:[기획]Used System -->
+ <!-- SEQ:54, Table:CMCTB_EMP_MDG, Field:USEDSYS, M/O:, Type:CHAR, Size:20, Description:[기획]Used System -->
<xsd:element name="USEDSYS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:55, Table:CMCTB_EMP_MDG, Field:JOBCLASS, M/O:, Type:VARC, Size:255, Description:[에스원]Job Class Code -->
+ <!-- SEQ:55, Table:CMCTB_EMP_MDG, Field:JOBCLASS, M/O:, Type:CHAR, Size:20, Description:[에스원]Job Class Code -->
<xsd:element name="JOBCLASS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:56, Table:CMCTB_EMP_MDG, Field:TMPJDIV, M/O:, Type:VARC, Size:255, Description:[에스원]Non-Regular Code -->
+ <!-- SEQ:56, Table:CMCTB_EMP_MDG, Field:TMPJDIV, M/O:, Type:CHAR, Size:20, Description:[에스원]Non-Regular Code -->
<xsd:element name="TMPJDIV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:CMCTB_EMP_MDG, Field:CSFROMDT, M/O:, Type:VARC, Size:255, Description:[에스원]CS Start Date -->
+ <!-- SEQ:57, Table:CMCTB_EMP_MDG, Field:CSFROMDT, M/O:, Type:DATS, Size:8, Description:[에스원]CS Start Date -->
<xsd:element name="CSFROMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:58, Table:CMCTB_EMP_MDG, Field:CSTODT, M/O:, Type:VARC, Size:255, Description:[에스원]CS End Date -->
+ <!-- SEQ:58, Table:CMCTB_EMP_MDG, Field:CSTODT, M/O:, Type:DATS, Size:8, Description:[에스원]CS End Date -->
<xsd:element name="CSTODT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:59, Table:CMCTB_EMP_MDG, Field:CTIROLE, M/O:, Type:VARC, Size:255, Description:[에스원]CTI Authority -->
+ <!-- SEQ:59, Table:CMCTB_EMP_MDG, Field:CTIROLE, M/O:, Type:CHAR, Size:2, Description:[에스원]CTI Authority -->
<xsd:element name="CTIROLE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:60, Table:CMCTB_EMP_MDG, Field:IDNO, M/O:, Type:VARC, Size:255, Description:[모직]개인ID -->
+ <!-- SEQ:60, Table:CMCTB_EMP_MDG, Field:IDNO, M/O:, Type:CHAR, Size:32, Description:[모직]개인ID -->
<xsd:element name="IDNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:61, Table:CMCTB_EMP_MDG, Field:BSCADDR, M/O:, Type:VARC, Size:255, Description:Basic Address -->
+ <!-- SEQ:61, Table:CMCTB_EMP_MDG, Field:BSCADDR, M/O:, Type:CHAR, Size:35, Description:Basic Address -->
<xsd:element name="BSCADDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:62, Table:CMCTB_EMP_MDG, Field:DTLADDR, M/O:, Type:VARC, Size:255, Description:Detail Address -->
+ <!-- SEQ:62, Table:CMCTB_EMP_MDG, Field:DTLADDR, M/O:, Type:CHAR, Size:35, Description:Detail Address -->
<xsd:element name="DTLADDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:63, Table:CMCTB_EMP_MDG, Field:DTLADDR2, M/O:, Type:VARC, Size:255, Description:Detail Address2 -->
+ <!-- SEQ:63, Table:CMCTB_EMP_MDG, Field:DTLADDR2, M/O:, Type:CHAR, Size:35, Description:Detail Address2 -->
<xsd:element name="DTLADDR2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:64, Table:CMCTB_EMP_MDG, Field:ZZBUKRS, M/O:, Type:VARC, Size:255, Description:ECC Company 코드 (재무법인코드) -->
+ <!-- SEQ:64, Table:CMCTB_EMP_MDG, Field:ZZBUKRS, M/O:, Type:CHAR, Size:4, Description:ECC Company 코드 (재무법인코드) -->
<xsd:element name="ZZBUKRS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:65, Table:CMCTB_EMP_MDG, Field:ZPRFLG, M/O:, Type:VARC, Size:255, Description:업데이트 여부 Flag -->
+ <!-- SEQ:65, Table:CMCTB_EMP_MDG, Field:ZPRFLG, M/O:, Type:CHAR, Size:1, Description:업데이트 여부 Flag -->
<xsd:element name="ZPRFLG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:CMCTB_EMP_MDG, Field:ERNAM, M/O:, Type:VARC, Size:255, Description:생성자 -->
+ <!-- SEQ:66, Table:CMCTB_EMP_MDG, Field:ERNAM, M/O:, Type:CHAR, Size:12, Description:생성자 -->
<xsd:element name="ERNAM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:CMCTB_EMP_MDG, Field:ERDAT, M/O:, Type:VARC, Size:255, Description:생성날짜 -->
+ <!-- SEQ:67, Table:CMCTB_EMP_MDG, Field:ERDAT, M/O:, Type:DATS, Size:8, Description:생성날짜 -->
<xsd:element name="ERDAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:68, Table:CMCTB_EMP_MDG, Field:ERZET, M/O:, Type:VARC, Size:255, Description:생성시간 -->
+ <!-- SEQ:68, Table:CMCTB_EMP_MDG, Field:ERZET, M/O:, Type:TIMS, Size:6, Description:생성시간 -->
<xsd:element name="ERZET" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:CMCTB_EMP_MDG, Field:AENAM, M/O:, Type:VARC, Size:255, Description:수정자 -->
+ <!-- SEQ:69, Table:CMCTB_EMP_MDG, Field:AENAM, M/O:, Type:CHAR, Size:12, Description:수정자 -->
<xsd:element name="AENAM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:70, Table:CMCTB_EMP_MDG, Field:AEDAT, M/O:, Type:VARC, Size:255, Description:수정날짜 -->
+ <!-- SEQ:70, Table:CMCTB_EMP_MDG, Field:AEDAT, M/O:, Type:DATS, Size:8, Description:수정날짜 -->
<xsd:element name="AEDAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:71, Table:CMCTB_EMP_MDG, Field:AEZET, M/O:, Type:VARC, Size:255, Description:최근수정시간 -->
+ <!-- SEQ:71, Table:CMCTB_EMP_MDG, Field:AEZET, M/O:, Type:TIMS, Size:6, Description:최근수정시간 -->
<xsd:element name="AEZET" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:72, Table:CMCTB_EMP_MDG, Field:DEL, M/O:, Type:VARC, Size:255, Description:삭제Flag -->
+ <!-- SEQ:72, Table:CMCTB_EMP_MDG, Field:DEL, M/O:, Type:CHAR, Size:1, Description:삭제Flag -->
<xsd:element name="DEL" type="xsd:string" minOccurs="0"/>
<xsd:element name="DEPTCODE" type="p0:DEPTCODE" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="DEPTNM" type="p0:DEPTNM" minOccurs="0" maxOccurs="unbounded"/>
@@ -185,207 +185,208 @@
</xsd:complexType>
<xsd:complexType name="DEPTCODE">
<xsd:sequence>
- <!-- SEQ:73, Table:CMCTB_EMP_MDG/DEPTCODE, Field:PCCD, M/O:, Type:VARC, Size:255, Description:Profit Center Code (DEPTCD) -->
+ <!-- SEQ:73, Table:CMCTB_EMP_MDG/DEPTCODE, Field:PCCD, M/O:, Type:CHAR, Size:10, Description:Profit Center Code (DEPTCD) -->
<xsd:element name="PCCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:74, Table:CMCTB_EMP_MDG/DEPTCODE, Field:WERKS, M/O:, Type:VARC, Size:255, Description:Plant Code (DEPTCD) -->
+ <!-- SEQ:74, Table:CMCTB_EMP_MDG/DEPTCODE, Field:WERKS, M/O:, Type:CHAR, Size:4, Description:Plant Code (DEPTCD) -->
<xsd:element name="WERKS" type="xsd:string" minOccurs="0"/>
<xsd:element name="PCCDNM" type="p0:PCCDNM" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PCCDNM">
<xsd:sequence>
- <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (DEPTCD) -->
+ <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (DEPTCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:76, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:KTEXT, M/O:, Type:VARC, Size:255, Description:General Name -->
+ <!-- SEQ:76, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:KTEXT, M/O:, Type:CHAR, Size:20, Description:General Name -->
<xsd:element name="KTEXT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:77, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Long Text -->
+ <!-- SEQ:77, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:LTEXT, M/O:, Type:CHAR, Size:40, Description:Long Text -->
<xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DEPTNM">
<xsd:sequence>
- <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (DEPTCD) -->
+ <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (DEPTCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:79, Table:CMCTB_EMP_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (DEPTCD) -->
+ <!-- SEQ:79, Table:CMCTB_EMP_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (DEPTCD) -->
<xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PDEPTNM">
<xsd:sequence>
- <!-- SEQ:80, Table:CMCTB_EMP_MDG/PDEPTNM, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language Key (PDEPTCD) -->
+ <!-- SEQ:80, Table:CMCTB_EMP_MDG/PDEPTNM, Field:SPRAS, M/O:, Type:CHAR, Size:1, Description:Language Key (PDEPTCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:81, Table:CMCTB_EMP_MDG/PDEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (PDEPTCD) -->
+ <!-- SEQ:81, Table:CMCTB_EMP_MDG/PDEPTNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (PDEPTCD) -->
<xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="COMPNM">
<xsd:sequence>
- <!-- SEQ:82, Table:CMCTB_EMP_MDG/COMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (COMPCD) -->
+ <!-- SEQ:82, Table:CMCTB_EMP_MDG/COMPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (COMPCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:83, Table:CMCTB_EMP_MDG/COMPNM, Field:COMPNM, M/O:, Type:VARC, Size:255, Description:Company Name (COMPCD) -->
+ <!-- SEQ:83, Table:CMCTB_EMP_MDG/COMPNM, Field:COMPNM, M/O:, Type:CHAR, Size:60, Description:Company Name (COMPCD) -->
<xsd:element name="COMPNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CORPNM">
<xsd:sequence>
- <!-- SEQ:84, Table:CMCTB_EMP_MDG/CORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (CORPCD) -->
+ <!-- SEQ:84, Table:CMCTB_EMP_MDG/CORPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (CORPCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:85, Table:CMCTB_EMP_MDG/CORPNM, Field:CORPNM, M/O:, Type:VARC, Size:255, Description:Corporate Name (CORPCD) -->
+ <!-- SEQ:85, Table:CMCTB_EMP_MDG/CORPNM, Field:CORPNM, M/O:, Type:CHAR, Size:60, Description:Corporate Name (CORPCD) -->
<xsd:element name="CORPNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GNNM">
<xsd:sequence>
- <!-- SEQ:86, Table:CMCTB_EMP_MDG/GNNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GNCD) -->
+ <!-- SEQ:86, Table:CMCTB_EMP_MDG/GNNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GNCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:87, Table:CMCTB_EMP_MDG/GNNM, Field:GNNM, M/O:, Type:VARC, Size:255, Description:General Name (GNCD) -->
+ <!-- SEQ:87, Table:CMCTB_EMP_MDG/GNNM, Field:GNNM, M/O:, Type:CHAR, Size:60, Description:General Name (GNCD) -->
<xsd:element name="GNNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BINM">
<xsd:sequence>
- <!-- SEQ:88, Table:CMCTB_EMP_MDG/BINM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (BICD) -->
+ <!-- SEQ:88, Table:CMCTB_EMP_MDG/BINM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (BICD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:89, Table:CMCTB_EMP_MDG/BINM, Field:BINM, M/O:, Type:VARC, Size:255, Description:Business Place Name (BICD) -->
+ <!-- SEQ:89, Table:CMCTB_EMP_MDG/BINM, Field:BINM, M/O:, Type:CHAR, Size:60, Description:Business Place Name (BICD) -->
<xsd:element name="BINM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KTLNM">
<xsd:sequence>
- <!-- SEQ:90, Table:CMCTB_EMP_MDG/KTLNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (KTL_EMP) -->
+ <!-- SEQ:90, Table:CMCTB_EMP_MDG/KTLNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (KTL_EMP) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:91, Table:CMCTB_EMP_MDG/KTLNM, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Cost Center (KTL_EMP) -->
+ <!-- SEQ:91, Table:CMCTB_EMP_MDG/KTLNM, Field:LTEXT, M/O:, Type:CHAR, Size:40, Description:Cost Center (KTL_EMP) -->
<xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BANM">
<xsd:sequence>
- <!-- SEQ:92, Table:CMCTB_EMP_MDG/BANM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (BIZAREA) -->
+ <!-- SEQ:92, Table:CMCTB_EMP_MDG/BANM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (BIZAREA) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:93, Table:CMCTB_EMP_MDG/BANM, Field:GTEXT, M/O:, Type:VARC, Size:255, Description:Business area description -->
+ <!-- SEQ:93, Table:CMCTB_EMP_MDG/BANM, Field:GTEXT, M/O:, Type:CHAR, Size:30, Description:Business area description -->
<xsd:element name="GTEXT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="COUNTRYNM">
<xsd:sequence>
- <!-- SEQ:94, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (COUNTRYCD) -->
+ <!-- SEQ:94, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (COUNTRYCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:95, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:COUNTRYNM, M/O:, Type:VARC, Size:255, Description:Country Name (COUNTRYCD) -->
+ <!-- SEQ:95, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:COUNTRYNM, M/O:, Type:CHAR, Size:60, Description:Country Name (COUNTRYCD) -->
<xsd:element name="COUNTRYNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="JOBNM">
<xsd:sequence>
- <!-- SEQ:96, Table:CMCTB_EMP_MDG/JOBNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (JOBCD) -->
+ <!-- SEQ:96, Table:CMCTB_EMP_MDG/JOBNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (JOBCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:97, Table:CMCTB_EMP_MDG/JOBNM, Field:JOBNM, M/O:, Type:VARC, Size:255, Description:Job Name (JOBCD) -->
+ <!-- SEQ:97, Table:CMCTB_EMP_MDG/JOBNM, Field:JOBNM, M/O:, Type:CHAR, Size:60, Description:Job Name (JOBCD) -->
<xsd:element name="JOBNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="JOBDUTYNM">
<xsd:sequence>
- <!-- SEQ:98, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (JOBDUTYCD) -->
+ <!-- SEQ:98, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (JOBDUTYCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:99, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:JOBDUTYNM, M/O:, Type:VARC, Size:255, Description:Job Duty Name (JOBDUTYCD) -->
+ <!-- SEQ:99, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:JOBDUTYNM, M/O:, Type:CHAR, Size:60, Description:Job Duty Name (JOBDUTYCD) -->
<xsd:element name="JOBDUTYNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="JOBGRDNM">
<xsd:sequence>
- <!-- SEQ:100, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (JOBGRDCD) -->
+ <!-- SEQ:100, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (JOBGRDCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:101, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDNM, M/O:, Type:VARC, Size:255, Description:Job Grade Name (JOBGRDCD) -->
+ <!-- SEQ:101, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDNM, M/O:, Type:CHAR, Size:60, Description:Job Grade Name (JOBGRDCD) -->
<xsd:element name="JOBGRDNM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:102, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDTYPE, M/O:, Type:VARC, Size:255, Description:Job Grade Type -->
+ <!-- SEQ:102, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDTYPE, M/O:, Type:CHAR, Size:1, Description:Job Grade Type -->
<xsd:element name="JOBGRDTYPE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:103, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:ISEXECUT, M/O:, Type:VARC, Size:255, Description:Executive Indicator -->
+ <!-- SEQ:103, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:ISEXECUT, M/O:, Type:CHAR, Size:1, Description:Executive Indicator -->
<xsd:element name="ISEXECUT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ORGDEPTNM">
<xsd:sequence>
- <!-- SEQ:104, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGDEPTCD) -->
+ <!-- SEQ:104, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGDEPTCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:105, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (ORGDEPTCD) -->
+ <!-- SEQ:105, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (ORGDEPTCD) -->
<xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ORGPDEPNM">
<xsd:sequence>
- <!-- SEQ:106, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGPDEPCD) -->
+ <!-- SEQ:106, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGPDEPCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:107, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (ORGPDEPCD) -->
+ <!-- SEQ:107, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (ORGPDEPCD) -->
<xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ORGCOMPNM">
<xsd:sequence>
- <!-- SEQ:108, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGCOMPCD) -->
+ <!-- SEQ:108, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGCOMPCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:109, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:COMPNM, M/O:, Type:VARC, Size:255, Description:Company Name (ORGCOMPCD) -->
+ <!-- SEQ:109, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:COMPNM, M/O:, Type:CHAR, Size:60, Description:Company Name (ORGCOMPCD) -->
<xsd:element name="COMPNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ORGCORPNM">
<xsd:sequence>
- <!-- SEQ:110, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGCORPCD) -->
+ <!-- SEQ:110, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGCORPCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:111, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:CORPNM, M/O:, Type:VARC, Size:255, Description:Corporate Name (ORGCORPCD) -->
+ <!-- SEQ:111, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:CORPNM, M/O:, Type:CHAR, Size:60, Description:Corporate Name (ORGCORPCD) -->
<xsd:element name="CORPNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ORGBICDNM">
<xsd:sequence>
- <!-- SEQ:112, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGBICD) -->
+ <!-- SEQ:112, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGBICD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:113, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:BINM, M/O:, Type:VARC, Size:255, Description:Business Place Name (ORGBICD) -->
+ <!-- SEQ:113, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:BINM, M/O:, Type:CHAR, Size:60, Description:Business Place Name (ORGBICD) -->
<xsd:element name="BINM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="OKTLNM">
<xsd:sequence>
- <!-- SEQ:114, Table:CMCTB_EMP_MDG/OKTLNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (OKTL_EMPL) -->
+ <!-- SEQ:114, Table:CMCTB_EMP_MDG/OKTLNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (OKTL_EMPL) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:115, Table:CMCTB_EMP_MDG/OKTLNM, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Cost Center (OKTL_EMPL) -->
+ <!-- SEQ:115, Table:CMCTB_EMP_MDG/OKTLNM, Field:LTEXT, M/O:, Type:CHAR, Size:40, Description:Cost Center (OKTL_EMPL) -->
<xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DHJOBGDNM">
<xsd:sequence>
- <!-- SEQ:116, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (DHJOBGDCD) -->
+ <!-- SEQ:116, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (DHJOBGDCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:117, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:JOBGRDNM, M/O:, Type:VARC, Size:255, Description:Job Grade Name (DHJOBGDCD) -->
+ <!-- SEQ:117, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:JOBGRDNM, M/O:, Type:CHAR, Size:60, Description:Job Grade Name (DHJOBGDCD) -->
<xsd:element name="JOBGRDNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GJOBNM">
<xsd:sequence>
- <!-- SEQ:118, Table:CMCTB_EMP_MDG/GJOBNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GJOBCD) -->
+ <!-- SEQ:118, Table:CMCTB_EMP_MDG/GJOBNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GJOBCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
+ <!-- SEQ:119, Table:CMCTB_EMP_MDG/GJOBNM, Field:GJOBNM, M/O:, Type:CHAR, Size:20, Description:Global Job Name -->
<xsd:element name="GJOBNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GJOBDUTYNM">
<xsd:sequence>
- <!-- SEQ:120, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GJOBDUTYCD) -->
+ <!-- SEQ:120, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GJOBDUTYCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:121, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:GJOBDUTYNM, M/O:, Type:VARC, Size:255, Description:Global Job Duty Name -->
+ <!-- SEQ:121, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:GJOBDUTYNM, M/O:, Type:CHAR, Size:21, Description:Global Job Duty Name -->
<xsd:element name="GJOBDUTYNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GJOBGRDNM">
<xsd:sequence>
- <!-- SEQ:122, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GJOBGRDCD) -->
+ <!-- SEQ:122, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GJOBGRDCD) -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:123, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:GJOBGRDNM, M/O:, Type:VARC, Size:255, Description:Global Job Grade Name -->
+ <!-- SEQ:123, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:GJOBGRDNM, M/O:, Type:CHAR, Size:21, Description:Global Job Grade Name -->
<xsd:element name="GJOBGRDNM" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GJOBGRDTYPE">
<xsd:sequence>
- <!-- SEQ:124, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:JOBGRDTYPE, M/O:, Type:VARC, Size:255, Description:Job Grade Type -->
+ <!-- SEQ:124, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:JOBGRDTYPE, M/O:, Type:CHAR, Size:1, Description:Job Grade Type -->
<xsd:element name="JOBGRDTYPE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:125, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:ISEXECUT, M/O:, Type:VARC, Size:255, Description:Executive Indicator -->
+ <!-- SEQ:125, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:ISEXECUT, M/O:, Type:CHAR, Size:1, Description:Executive Indicator -->
<xsd:element name="ISEXECUT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
index c4d8a78b..4bf85932 100644
--- a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl
@@ -13,28 +13,28 @@
</xsd:complexType>
<xsd:complexType name="CMCTB_EMP_REF_MDG_IF">
<xsd:sequence>
- <!-- SEQ:1, Table:CMCTB_EMP_REF_MDG_IF, Field:GRPCD, M/O:M, Type:VARC, Size:255, Description:그룹코드 -->
+ <!-- SEQ:1, Table:CMCTB_EMP_REF_MDG_IF, Field:GRPCD, M/O:M, Type:VARC, Size:10, Description:그룹코드 -->
<xsd:element name="GRPCD" type="xsd:string"/>
- <!-- SEQ:2, Table:CMCTB_EMP_REF_MDG_IF, Field:CORPCD, M/O:M, Type:VARC, Size:255, Description:법인코드 -->
+ <!-- SEQ:2, Table:CMCTB_EMP_REF_MDG_IF, Field:CORPCD, M/O:M, Type:VARC, Size:4, Description:법인코드 -->
<xsd:element name="CORPCD" type="xsd:string"/>
- <!-- SEQ:3, Table:CMCTB_EMP_REF_MDG_IF, Field:MAINCD, M/O:M, Type:VARC, Size:255, Description:메인코드 -->
+ <!-- SEQ:3, Table:CMCTB_EMP_REF_MDG_IF, Field:MAINCD, M/O:M, Type:VARC, Size:20, Description:메인코드 -->
<xsd:element name="MAINCD" type="xsd:string"/>
- <!-- SEQ:4, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDFROMDT, M/O:, Type:VARC, Size:255, Description:시작유효일자 -->
+ <!-- SEQ:4, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDFROMDT, M/O:, Type:VARC, Size:8, Description:시작유효일자 -->
<xsd:element name="VALIDFROMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDTODT, M/O:, Type:VARC, Size:255, Description:종료유효일자 -->
+ <!-- SEQ:5, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDTODT, M/O:, Type:VARC, Size:8, Description:종료유효일자 -->
<xsd:element name="VALIDTODT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_01, M/O:, Type:VARC, Size:255, Description:추가필드1 -->
+ <!-- SEQ:6, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_01, M/O:, Type:VARC, Size:1, Description:추가필드1 -->
<xsd:element name="ADTL_01" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_02, M/O:, Type:VARC, Size:255, Description:추가필드2 -->
+ <!-- SEQ:7, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_02, M/O:, Type:VARC, Size:1, Description:추가필드2 -->
<xsd:element name="ADTL_02" type="xsd:string" minOccurs="0"/>
<xsd:element name="NAME" type="p0:NAME" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NAME">
<xsd:sequence>
- <!-- SEQ:8, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 -->
+ <!-- SEQ:8, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 -->
<xsd:element name="SPRAS" type="xsd:string"/>
- <!-- SEQ:9, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:NAME, M/O:, Type:VARC, Size:255, Description:코드명 -->
+ <!-- SEQ:9, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:NAME, M/O:, Type:VARC, Size:90, Description:코드명 -->
<xsd:element name="NAME" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl
index 978b3706..efc92dda 100644
--- a/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl
@@ -13,77 +13,77 @@
</xsd:complexType>
<xsd:complexType name="MATL">
<xsd:sequence>
- <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:255, Description:Industry sector -->
+ <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:CHAR, Size:1, Description:Industry sector -->
<xsd:element name="MBRSH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:255, Description:Material Type -->
+ <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:CHAR, Size:4, Description:Material Type -->
<xsd:element name="MTART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion flag -->
+ <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:CHAR, Size:1, Description:Deletion flag -->
<xsd:element name="LVORM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:255, Description:Base Unit of Measure -->
+ <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:UNIT, Size:3, Description:Base Unit of Measure -->
<xsd:element name="MEINS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:255, Description:Material Group -->
+ <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:CHAR, Size:9, Description:Material Group -->
<xsd:element name="MATKL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:255, Description:Old material number -->
+ <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:CHAR, Size:18, Description:Old material number -->
<xsd:element name="BISMT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:255, Description:Division -->
+ <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:CHAR, Size:2, Description:Division -->
<xsd:element name="SPART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:255, Description:Product hierarchy -->
+ <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:CHAR, Size:18, Description:Product hierarchy -->
<xsd:element name="PRDHA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:255, Description:Material Status -->
+ <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:CHAR, Size:2, Description:Material Status -->
<xsd:element name="MSTAE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:255, Description:Date from which the cross-plant material status is -->
+ <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:CHAR, Size:2, Description:Date from which the cross-plant material status is -->
<xsd:element name="MSTDE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight -->
+ <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:QUAN, Size:13, Description:Gross Weight -->
<xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit -->
+ <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit -->
<xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:VARC, Size:255, Description:Net Weight -->
+ <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:QUAN, Size:13, Description:Net Weight -->
<xsd:element name="NTGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume -->
+ <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:QUAN, Size:13,3, Description:Volume -->
<xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit -->
+ <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume unit -->
<xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:255, Description:Size/dimensions -->
+ <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:CHAR, Size:32, Description:Size/dimensions -->
<xsd:element name="GROES" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length -->
+ <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:QUAN, Size:13,1, Description:Length -->
<xsd:element name="LAENG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width -->
+ <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:QUAN, Size:13,1, Description:Width -->
<xsd:element name="BREIT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height -->
+ <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:QUAN, Size:13,1, Description:Height -->
<xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height -->
+ <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit of Dimension for Length/Width/Height -->
<xsd:element name="MEABM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:255, Description:Material Group: Packaging Materials -->
+ <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:CHAR, Size:4, Description:Material Group: Packaging Materials -->
<xsd:element name="MAGRV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:255, Description:Packaging Material Type -->
+ <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:CHAR, Size:4, Description:Packaging Material Type -->
<xsd:element name="VHART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:255, Description:Material Name -->
+ <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:CHAR, Size:40, Description:Material Name -->
<xsd:element name="ZZNAME" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:VARC, Size:255, Description:Specification -->
+ <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:CHAR, Size:255, Description:Specification -->
<xsd:element name="ZZSPEC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:VARC, Size:255, Description:Description -->
+ <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:CHAR, Size:255, Description:Description -->
<xsd:element name="ZZDESC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:27, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date -->
+ <!-- SEQ:27, Table:MATL, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date -->
<xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:28, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time -->
+ <!-- SEQ:28, Table:MATL, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time -->
<xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User -->
+ <!-- SEQ:29, Table:MATL, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User -->
<xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:30, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:255, Description:Approval Date -->
+ <!-- SEQ:30, Table:MATL, Field:ZZAPPDT, M/O:, Type:DATS, Size:8, Description:Approval Date -->
<xsd:element name="ZZAPPDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:31, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:255, Description:Approval Time -->
+ <!-- SEQ:31, Table:MATL, Field:ZZAPPTM, M/O:, Type:TIMS, Size:6, Description:Approval Time -->
<xsd:element name="ZZAPPTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:32, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:255, Description:Approval User -->
+ <!-- SEQ:32, Table:MATL, Field:ZZAPPUS, M/O:, Type:CHAR, Size:12, Description:Approval User -->
<xsd:element name="ZZAPPUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date -->
+ <!-- SEQ:33, Table:MATL, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date -->
<xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:34, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time -->
+ <!-- SEQ:34, Table:MATL, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time -->
<xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:35, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User -->
+ <!-- SEQ:35, Table:MATL, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User -->
<xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:36, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status -->
+ <!-- SEQ:36, Table:MATL, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status -->
<xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/>
<xsd:element name="DESC" type="p0:DESC" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="PLNT" type="p0:PLNT" minOccurs="0" maxOccurs="unbounded"/>
@@ -94,105 +94,105 @@
</xsd:complexType>
<xsd:complexType name="DESC">
<xsd:sequence>
- <!-- SEQ:37, Table:MATL/DESC, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:37, Table:MATL/DESC, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:38, Table:MATL/DESC, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language -->
+ <!-- SEQ:38, Table:MATL/DESC, Field:SPRAS, M/O:, Type:CHAR, Size:1, Description:Language -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:39, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:255, Description:Material Description (Short Text) -->
+ <!-- SEQ:39, Table:MATL/DESC, Field:MAKTX, M/O:, Type:CHAR, Size:40, Description:Material Description (Short Text) -->
<xsd:element name="MAKTX" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PLNT">
<xsd:sequence>
- <!-- SEQ:40, Table:MATL/PLNT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:40, Table:MATL/PLNT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:41, Table:MATL/PLNT, Field:WERKS, M/O:, Type:VARC, Size:255, Description:Plant -->
+ <!-- SEQ:41, Table:MATL/PLNT, Field:WERKS, M/O:, Type:CHAR, Size:4, Description:Plant -->
<xsd:element name="WERKS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:42, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion Flag -->
+ <!-- SEQ:42, Table:MATL/PLNT, Field:LVORM, M/O:, Type:CHAR, Size:4, Description:Deletion Flag -->
<xsd:element name="LVORM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:43, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:255, Description:Plant-Specific Material Status -->
+ <!-- SEQ:43, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:CHAR, Size:2, Description:Plant-Specific Material Status -->
<xsd:element name="MMSTA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:44, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:255, Description:Date from which the plant-specific material status -->
+ <!-- SEQ:44, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:DATS, Size:8, Description:Date from which the plant-specific material status -->
<xsd:element name="MMSTD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:45, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:255, Description:Plant Material Type -->
+ <!-- SEQ:45, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:CHAR, Size:4, Description:Plant Material Type -->
<xsd:element name="ZZMTARP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:46, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date -->
+ <!-- SEQ:46, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date -->
<xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:47, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time -->
+ <!-- SEQ:47, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time -->
<xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:48, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User -->
+ <!-- SEQ:48, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User -->
<xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:49, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date -->
+ <!-- SEQ:49, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date -->
<xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:50, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time -->
+ <!-- SEQ:50, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time -->
<xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:51, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User -->
+ <!-- SEQ:51, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User -->
<xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:52, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status -->
+ <!-- SEQ:52, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status -->
<xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UNIT">
<xsd:sequence>
- <!-- SEQ:53, Table:MATL/UNIT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Matrial Number -->
+ <!-- SEQ:53, Table:MATL/UNIT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Matrial Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:54, Table:MATL/UNIT, Field:MEINH, M/O:, Type:VARC, Size:255, Description:AlternativeUnit -->
+ <!-- SEQ:54, Table:MATL/UNIT, Field:MEINH, M/O:, Type:UNIT, Size:3, Description:AlternativeUnit -->
<xsd:element name="MEINH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:55, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:VARC, Size:255, Description:Numerator -->
+ <!-- SEQ:55, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:DEC, Size:5, Description:Numerator -->
<xsd:element name="UMREZ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:56, Table:MATL/UNIT, Field:UMREN, M/O:, Type:VARC, Size:255, Description:Denominator -->
+ <!-- SEQ:56, Table:MATL/UNIT, Field:UMREN, M/O:, Type:DEC, Size:5, Description:Denominator -->
<xsd:element name="UMREN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:MATL/UNIT, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length -->
+ <!-- SEQ:57, Table:MATL/UNIT, Field:LAENG, M/O:, Type:QUAN, Size:13,3, Description:Length -->
<xsd:element name="LAENG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:58, Table:MATL/UNIT, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width -->
+ <!-- SEQ:58, Table:MATL/UNIT, Field:BREIT, M/O:, Type:QUAN, Size:13,3, Description:Width -->
<xsd:element name="BREIT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:59, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height -->
+ <!-- SEQ:59, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:QUAN, Size:13,3, Description:Height -->
<xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:60, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit -->
+ <!-- SEQ:60, Table:MATL/UNIT, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit -->
<xsd:element name="MEABM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:61, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume Unit -->
+ <!-- SEQ:61, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume Unit -->
<xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:62, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume -->
+ <!-- SEQ:62, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:QUAN, Size:13,3, Description:Volume -->
<xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:63, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross weight -->
+ <!-- SEQ:63, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:QUAN, Size:13,3, Description:Gross weight -->
<xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:64, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit -->
+ <!-- SEQ:64, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit -->
<xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CLASSASGN">
<xsd:sequence>
- <!-- SEQ:65, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:65, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number -->
+ <!-- SEQ:66, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number -->
<xsd:element name="CLASS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type -->
+ <!-- SEQ:67, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type -->
<xsd:element name="KLART" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CHARASGN">
<xsd:sequence>
- <!-- SEQ:68, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:68, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number -->
+ <!-- SEQ:69, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number -->
<xsd:element name="CLASS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:70, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type -->
+ <!-- SEQ:70, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type -->
<xsd:element name="KLART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:71, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:VARC, Size:255, Description:Characteristic Name -->
+ <!-- SEQ:71, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:CHAR, Size:30, Description:Characteristic Name -->
<xsd:element name="ATNAM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:72, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:255, Description:Characteristic Value -->
+ <!-- SEQ:72, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:CHAR, Size:30, Description:Characteristic Value -->
<xsd:element name="ATWRT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:73, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:VARC, Size:255, Description:Internal floating point from -->
+ <!-- SEQ:73, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:FLTP, Size:16, Description:Internal floating point from -->
<xsd:element name="ATFLV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:74, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:255, Description:Unit of Measurement -->
+ <!-- SEQ:74, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement -->
<xsd:element name="ATAWE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:75, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:VARC, Size:255, Description:Internal floating point value to -->
+ <!-- SEQ:75, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:FLTP, Size:16, Description:Internal floating point value to -->
<xsd:element name="ATFLB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:255, Description:Unit of Measurement -->
+ <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement -->
<xsd:element name="ATAW1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:255, Description:특성내역 -->
+ <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:30, Description:특성내역 -->
<xsd:element name="ATBEZ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:255, Description:특성값내역 -->
+ <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:30, Description:특성값내역 -->
<xsd:element name="ATWTB" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
index 0a7b7f02..a3de05a6 100644
--- a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl
@@ -13,105 +13,105 @@
</xsd:complexType>
<xsd:complexType name="MATL">
<xsd:sequence>
- <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string"/>
- <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:255, Description:Industry sector -->
+ <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:1, Description:Industry sector -->
<xsd:element name="MBRSH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:255, Description:Material Type -->
+ <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:4, Description:Material Type -->
<xsd:element name="MTART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion flag -->
+ <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:1, Description:Deletion flag -->
<xsd:element name="LVORM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:255, Description:Base Unit of Measure -->
+ <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:3, Description:Base Unit of Measure -->
<xsd:element name="MEINS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:255, Description:Material Group -->
+ <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:9, Description:Material Group -->
<xsd:element name="MATKL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:255, Description:Old material number -->
+ <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:18, Description:Old material number -->
<xsd:element name="BISMT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:255, Description:Division -->
+ <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:2, Description:Division -->
<xsd:element name="SPART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:255, Description:Product hierarchy -->
+ <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:18, Description:Product hierarchy -->
<xsd:element name="PRDHA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:255, Description:Material Status -->
+ <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:2, Description:Material Status -->
<xsd:element name="MSTAE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:255, Description:Date from which the cross-plant material status is -->
+ <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:2, Description:Date from which the cross-plant material status is -->
<xsd:element name="MSTDE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight -->
+ <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:NUMB, Size:13, Description:Gross Weight -->
<xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit -->
+ <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:3, Description:Weight Unit -->
<xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:VARC, Size:255, Description:Net Weight -->
+ <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:NUMB, Size:13, Description:Net Weight -->
<xsd:element name="NTGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume -->
+ <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:NUMB, Size:13,3, Description:Volume -->
<xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit -->
+ <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:3, Description:Volume unit -->
<xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:255, Description:Size/dimensions -->
+ <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:32, Description:Size/dimensions -->
<xsd:element name="GROES" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length -->
+ <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:NUMB, Size:13,1, Description:Length -->
<xsd:element name="LAENG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width -->
+ <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:NUMB, Size:13,1, Description:Width -->
<xsd:element name="BREIT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height -->
+ <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:NUMB, Size:13,1, Description:Height -->
<xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height -->
+ <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:3, Description:Unit of Dimension for Length/Width/Height -->
<xsd:element name="MEABM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:255, Description:Material Group: Packaging Materials -->
+ <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:4, Description:Material Group: Packaging Materials -->
<xsd:element name="MAGRV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:255, Description:Packaging Material Type -->
+ <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:4, Description:Packaging Material Type -->
<xsd:element name="VHART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:24, Table:MATL, Field:ZZSMID, M/O:, Type:VARC, Size:255, Description:SM ID -->
+ <!-- SEQ:24, Table:MATL, Field:ZZSMID, M/O:, Type:VARC, Size:18, Description:SM ID -->
<xsd:element name="ZZSMID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:25, Table:MATL, Field:ZZMRC, M/O:, Type:VARC, Size:255, Description:MRC -->
+ <!-- SEQ:25, Table:MATL, Field:ZZMRC, M/O:, Type:VARC, Size:1, Description:MRC -->
<xsd:element name="ZZMRC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:26, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:255, Description:Material Name -->
+ <!-- SEQ:26, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:40, Description:Material Name -->
<xsd:element name="ZZNAME" type="xsd:string" minOccurs="0"/>
<!-- SEQ:27, Table:MATL, Field:ZZSPEC, M/O:, Type:VARC, Size:255, Description:Specification -->
<xsd:element name="ZZSPEC" type="xsd:string" minOccurs="0"/>
<!-- SEQ:28, Table:MATL, Field:ZZDESC, M/O:, Type:VARC, Size:255, Description:Description -->
<xsd:element name="ZZDESC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:MATL, Field:ZZMMTYP, M/O:, Type:VARC, Size:255, Description:Material Master Type -->
+ <!-- SEQ:29, Table:MATL, Field:ZZMMTYP, M/O:, Type:VARC, Size:1, Description:Material Master Type -->
<xsd:element name="ZZMMTYP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:30, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date -->
+ <!-- SEQ:30, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:8, Description:Registered Date -->
<xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:31, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time -->
+ <!-- SEQ:31, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:6, Description:Registered Time -->
<xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:32, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User -->
+ <!-- SEQ:32, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:12, Description:Registered User -->
<xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:255, Description:Approval Date -->
+ <!-- SEQ:33, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:8, Description:Approval Date -->
<xsd:element name="ZZAPPDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:34, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:255, Description:Approval Time -->
+ <!-- SEQ:34, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:6, Description:Approval Time -->
<xsd:element name="ZZAPPTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:35, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:255, Description:Approval User -->
+ <!-- SEQ:35, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:12, Description:Approval User -->
<xsd:element name="ZZAPPUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:36, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date -->
+ <!-- SEQ:36, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:8, Description:Last Modified Date -->
<xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:37, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time -->
+ <!-- SEQ:37, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:6, Description:Last Modified Time -->
<xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:38, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User -->
+ <!-- SEQ:38, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:12, Description:Last Modified User -->
<xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:39, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status -->
+ <!-- SEQ:39, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:12, Description:CRUD Status -->
<xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:40, Table:MATL, Field:ZZCERT, M/O:, Type:VARC, Size:255, Description:Certification Code -->
+ <!-- SEQ:40, Table:MATL, Field:ZZCERT, M/O:, Type:VARC, Size:6, Description:Certification Code -->
<xsd:element name="ZZCERT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:89, Table:MATL, Field:ZZPRCD_SCV_CTLP, M/O:, Type:VARC, Size:255, Description:선행후행조정관 -->
+ <!-- SEQ:89, Table:MATL, Field:ZZPRCD_SCV_CTLP, M/O:, Type:VARC, Size:2, Description:선행후행조정관 -->
<xsd:element name="ZZPRCD_SCV_CTLP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:90, Table:MATL, Field:ZZREP_DIA_UOM, M/O:, Type:VARC, Size:255, Description:대표지름단위 -->
+ <!-- SEQ:90, Table:MATL, Field:ZZREP_DIA_UOM, M/O:, Type:VARC, Size:3, Description:대표지름단위 -->
<xsd:element name="ZZREP_DIA_UOM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:91, Table:MATL, Field:ZZREP_DIA, M/O:, Type:VARC, Size:255, Description:대표지름 -->
+ <!-- SEQ:91, Table:MATL, Field:ZZREP_DIA, M/O:, Type:VARC, Size:10, Description:대표지름 -->
<xsd:element name="ZZREP_DIA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:92, Table:MATL, Field:ZZREP_ITM_MATL, M/O:, Type:VARC, Size:255, Description:대표품명재질 -->
+ <!-- SEQ:92, Table:MATL, Field:ZZREP_ITM_MATL, M/O:, Type:VARC, Size:60, Description:대표품명재질 -->
<xsd:element name="ZZREP_ITM_MATL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:41, Table:MATL, Field:ZZINSP, M/O:, Type:VARC, Size:255, Description:Inspection -->
+ <!-- SEQ:41, Table:MATL, Field:ZZINSP, M/O:, Type:VARC, Size:1, Description:Inspection -->
<xsd:element name="ZZINSP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:42, Table:MATL, Field:ZZPJT, M/O:, Type:VARC, Size:255, Description:Project Code -->
+ <!-- SEQ:42, Table:MATL, Field:ZZPJT, M/O:, Type:VARC, Size:24, Description:Project Code -->
<xsd:element name="ZZPJT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:43, Table:MATL, Field:ZZREPMAT, M/O:, Type:VARC, Size:255, Description:REP Material -->
+ <!-- SEQ:43, Table:MATL, Field:ZZREPMAT, M/O:, Type:VARC, Size:18, Description:REP Material -->
<xsd:element name="ZZREPMAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:44, Table:MATL, Field:ZZPLMID, M/O:, Type:VARC, Size:255, Description:PLM ID -->
+ <!-- SEQ:44, Table:MATL, Field:ZZPLMID, M/O:, Type:VARC, Size:50, Description:PLM ID -->
<xsd:element name="ZZPLMID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:45, Table:MATL, Field:ZZACT, M/O:, Type:VARC, Size:255, Description:Activity Code -->
+ <!-- SEQ:45, Table:MATL, Field:ZZACT, M/O:, Type:VARC, Size:18, Description:Activity Code -->
<xsd:element name="ZZACT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:88, Table:MATL, Field:ZZSTL, M/O:, Type:VARC, Size:255, Description:Steel Material -->
+ <!-- SEQ:88, Table:MATL, Field:ZZSTL, M/O:, Type:VARC, Size:50, Description:Steel Material -->
<xsd:element name="ZZSTL" type="xsd:string" minOccurs="0"/>
<xsd:element name="DESC" type="p0:DESC" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="PLNT" type="p0:PLNT" minOccurs="0" maxOccurs="unbounded"/>
@@ -122,105 +122,105 @@
</xsd:complexType>
<xsd:complexType name="DESC">
<xsd:sequence>
- <!-- SEQ:46, Table:MATL/DESC, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:46, Table:MATL/DESC, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string"/>
- <!-- SEQ:47, Table:MATL/DESC, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language -->
+ <!-- SEQ:47, Table:MATL/DESC, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:Language -->
<xsd:element name="SPRAS" type="xsd:string"/>
- <!-- SEQ:48, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:255, Description:Material Description (Short Text) -->
+ <!-- SEQ:48, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:40, Description:Material Description (Short Text) -->
<xsd:element name="MAKTX" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PLNT">
<xsd:sequence>
- <!-- SEQ:50, Table:MATL/PLNT, Field:WERKS, M/O:M, Type:VARC, Size:255, Description:Plant -->
+ <!-- SEQ:50, Table:MATL/PLNT, Field:WERKS, M/O:M, Type:VARC, Size:4, Description:Plant -->
<xsd:element name="WERKS" type="xsd:string"/>
- <!-- SEQ:49, Table:MATL/PLNT, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:49, Table:MATL/PLNT, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string"/>
- <!-- SEQ:51, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion Flag -->
+ <!-- SEQ:51, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:4, Description:Deletion Flag -->
<xsd:element name="LVORM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:52, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:255, Description:Plant-Specific Material Status -->
+ <!-- SEQ:52, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:2, Description:Plant-Specific Material Status -->
<xsd:element name="MMSTA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:53, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:255, Description:Date from which the plant-specific material status -->
+ <!-- SEQ:53, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:8, Description:Date from which the plant-specific material status -->
<xsd:element name="MMSTD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:54, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:255, Description:Plant Material Type -->
+ <!-- SEQ:54, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:4, Description:Plant Material Type -->
<xsd:element name="ZZMTARP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:55, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date -->
+ <!-- SEQ:55, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:8, Description:Registered Date -->
<xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:56, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time -->
+ <!-- SEQ:56, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:6, Description:Registered Time -->
<xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User -->
+ <!-- SEQ:57, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:12, Description:Registered User -->
<xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:58, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date -->
+ <!-- SEQ:58, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:8, Description:Last Modified Date -->
<xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:59, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time -->
+ <!-- SEQ:59, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:6, Description:Last Modified Time -->
<xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:60, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User -->
+ <!-- SEQ:60, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:12, Description:Last Modified User -->
<xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:61, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status -->
+ <!-- SEQ:61, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:1, Description:CRUD Status -->
<xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UNIT">
<xsd:sequence>
- <!-- SEQ:63, Table:MATL/UNIT, Field:MEINH, M/O:M, Type:VARC, Size:255, Description:Alternative Unit of Measure for Stockkeeping Unit -->
+ <!-- SEQ:63, Table:MATL/UNIT, Field:MEINH, M/O:M, Type:VARC, Size:3, Description:Alternative Unit of Measure for Stockkeeping Unit -->
<xsd:element name="MEINH" type="xsd:string"/>
- <!-- SEQ:62, Table:MATL/UNIT, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:62, Table:MATL/UNIT, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string"/>
- <!-- SEQ:64, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:VARC, Size:255, Description:Numerator for Conversion to Base Units of Measure -->
+ <!-- SEQ:64, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:NUMB, Size:5, Description:Numerator for Conversion to Base Units of Measure -->
<xsd:element name="UMREZ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:65, Table:MATL/UNIT, Field:UMREN, M/O:, Type:VARC, Size:255, Description:Denominator for conversion to base units of measur -->
+ <!-- SEQ:65, Table:MATL/UNIT, Field:UMREN, M/O:, Type:NUMB, Size:5, Description:Denominator for conversion to base units of measur -->
<xsd:element name="UMREN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:MATL/UNIT, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length -->
+ <!-- SEQ:66, Table:MATL/UNIT, Field:LAENG, M/O:, Type:NUMB, Size:13, Description:Length -->
<xsd:element name="LAENG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:MATL/UNIT, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width -->
+ <!-- SEQ:67, Table:MATL/UNIT, Field:BREIT, M/O:, Type:NUMB, Size:13, Description:Width -->
<xsd:element name="BREIT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:68, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height -->
+ <!-- SEQ:68, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:NUMB, Size:13, Description:Height -->
<xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height -->
+ <!-- SEQ:69, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:3, Description:Unit of Dimension for Length/Width/Height -->
<xsd:element name="MEABM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:70, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume -->
+ <!-- SEQ:70, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:NUMB, Size:13, Description:Volume -->
<xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:71, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit -->
+ <!-- SEQ:71, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:3, Description:Volume unit -->
<xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:72, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight -->
+ <!-- SEQ:72, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:NUMB, Size:13, Description:Gross Weight -->
<xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:73, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit -->
+ <!-- SEQ:73, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:3, Description:Weight Unit -->
<xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CLASSASGN">
<xsd:sequence>
- <!-- SEQ:74, Table:MATL/CLASSASGN, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:74, Table:MATL/CLASSASGN, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string"/>
- <!-- SEQ:75, Table:MATL/CLASSASGN, Field:CLASS, M/O:M, Type:VARC, Size:255, Description:Class number -->
+ <!-- SEQ:75, Table:MATL/CLASSASGN, Field:CLASS, M/O:M, Type:VARC, Size:18, Description:Class number -->
<xsd:element name="CLASS" type="xsd:string"/>
- <!-- SEQ:76, Table:MATL/CLASSASGN, Field:KLART, M/O:M, Type:VARC, Size:255, Description:Class Type -->
+ <!-- SEQ:76, Table:MATL/CLASSASGN, Field:KLART, M/O:M, Type:VARC, Size:3, Description:Class Type -->
<xsd:element name="KLART" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CHARASGN">
<xsd:sequence>
- <!-- SEQ:77, Table:MATL/CHARASGN, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:77, Table:MATL/CHARASGN, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string"/>
- <!-- SEQ:78, Table:MATL/CHARASGN, Field:CLASS, M/O:M, Type:VARC, Size:255, Description:Class number -->
+ <!-- SEQ:78, Table:MATL/CHARASGN, Field:CLASS, M/O:M, Type:VARC, Size:18, Description:Class number -->
<xsd:element name="CLASS" type="xsd:string"/>
- <!-- SEQ:79, Table:MATL/CHARASGN, Field:KLART, M/O:M, Type:VARC, Size:255, Description:Class Type -->
+ <!-- SEQ:79, Table:MATL/CHARASGN, Field:KLART, M/O:M, Type:VARC, Size:3, Description:Class Type -->
<xsd:element name="KLART" type="xsd:string"/>
- <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATNAM, M/O:M, Type:VARC, Size:255, Description:Characteristic Name -->
+ <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATNAM, M/O:M, Type:VARC, Size:30, Description:Characteristic Name -->
<xsd:element name="ATNAM" type="xsd:string"/>
- <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:255, Description:Characteristic Value -->
+ <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:30, Description:Characteristic Value -->
<xsd:element name="ATWRT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:VARC, Size:255, Description:Internal floating point from -->
+ <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:NUMB, Size:16, Description:Internal floating point from -->
<xsd:element name="ATFLV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:255, Description:Unit of Measurement -->
+ <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:3, Description:Unit of Measurement -->
<xsd:element name="ATAWE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:84, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:VARC, Size:255, Description:Internal floating point value to -->
+ <!-- SEQ:84, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:NUMB, Size:16, Description:Internal floating point value to -->
<xsd:element name="ATFLB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:85, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:255, Description:Unit of Measurement -->
+ <!-- SEQ:85, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:3, Description:Unit of Measurement -->
<xsd:element name="ATAW1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:86, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:255, Description:특성내역 -->
+ <!-- SEQ:86, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:30, Description:특성내역 -->
<xsd:element name="ATBEZ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:87, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:255, Description:특성값내역 -->
+ <!-- SEQ:87, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:30, Description:특성값내역 -->
<xsd:element name="ATWTB" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
index db8261be..2b7ea6a6 100644
--- a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl
@@ -13,13 +13,13 @@
</xsd:complexType>
<xsd:complexType name="CMCTB_MAT_BSE">
<xsd:sequence>
- <!-- SEQ:1, Table:CMCTB_MAT_BSE, Field:MAT_CD, M/O:M, Type:VARC, Size:255, Description:자재코드 -->
+ <!-- SEQ:1, Table:CMCTB_MAT_BSE, Field:MAT_CD, M/O:M, Type:VARC, Size:18, Description:자재코드 -->
<xsd:element name="MAT_CD" type="xsd:string"/>
- <!-- SEQ:2, Table:CMCTB_MAT_BSE, Field:MAT_ID, M/O:, Type:VARC, Size:255, Description:PLM 채번 자재코드 -->
+ <!-- SEQ:2, Table:CMCTB_MAT_BSE, Field:MAT_ID, M/O:, Type:VARC, Size:50, Description:PLM 채번 자재코드 -->
<xsd:element name="MAT_ID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:3, Table:CMCTB_MAT_BSE, Field:IF_STAT, M/O:, Type:VARC, Size:255, Description:IF 상태 -->
+ <!-- SEQ:3, Table:CMCTB_MAT_BSE, Field:IF_STAT, M/O:, Type:VARC, Size:1, Description:IF 상태 -->
<xsd:element name="IF_STAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:CMCTB_MAT_BSE, Field:IF_MSG, M/O:, Type:VARC, Size:255, Description:IF 메시지 -->
+ <!-- SEQ:4, Table:CMCTB_MAT_BSE, Field:IF_MSG, M/O:, Type:VARC, Size:100, Description:IF 메시지 -->
<xsd:element name="IF_MSG" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl
index 5c842b5d..e682bf78 100644
--- a/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl
@@ -13,87 +13,87 @@
</xsd:complexType>
<xsd:complexType name="MATL">
<xsd:sequence>
- <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:255, Description:Industry sector -->
+ <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:CHAR, Size:1, Description:Industry sector -->
<xsd:element name="MBRSH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:255, Description:Material Type -->
+ <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:CHAR, Size:4, Description:Material Type -->
<xsd:element name="MTART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion flag -->
+ <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:CHAR, Size:1, Description:Deletion flag -->
<xsd:element name="LVORM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:255, Description:Base Unit of Measure -->
+ <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:UNIT, Size:3, Description:Base Unit of Measure -->
<xsd:element name="MEINS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:255, Description:Material Group -->
+ <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:CHAR, Size:9, Description:Material Group -->
<xsd:element name="MATKL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:255, Description:Old material number -->
+ <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:CHAR, Size:18, Description:Old material number -->
<xsd:element name="BISMT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:255, Description:Division -->
+ <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:CHAR, Size:2, Description:Division -->
<xsd:element name="SPART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:255, Description:Product hierarchy -->
+ <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:CHAR, Size:18, Description:Product hierarchy -->
<xsd:element name="PRDHA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:255, Description:Material Status -->
+ <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:CHAR, Size:2, Description:Material Status -->
<xsd:element name="MSTAE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:255, Description:Date from which the cross-plant material status is -->
+ <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:CHAR, Size:2, Description:Date from which the cross-plant material status is -->
<xsd:element name="MSTDE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight -->
+ <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:QUAN, Size:13, Description:Gross Weight -->
<xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit -->
+ <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit -->
<xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:VARC, Size:255, Description:Net Weight -->
+ <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:QUAN, Size:13, Description:Net Weight -->
<xsd:element name="NTGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume -->
+ <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:QUAN, Size:13,3, Description:Volume -->
<xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit -->
+ <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume unit -->
<xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:255, Description:Size/dimensions -->
+ <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:CHAR, Size:32, Description:Size/dimensions -->
<xsd:element name="GROES" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length -->
+ <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:QUAN, Size:13,1, Description:Length -->
<xsd:element name="LAENG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width -->
+ <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:QUAN, Size:13,1, Description:Width -->
<xsd:element name="BREIT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height -->
+ <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:QUAN, Size:13,1, Description:Height -->
<xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height -->
+ <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit of Dimension for Length/Width/Height -->
<xsd:element name="MEABM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:255, Description:Material Group: Packaging Materials -->
+ <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:CHAR, Size:4, Description:Material Group: Packaging Materials -->
<xsd:element name="MAGRV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:255, Description:Packaging Material Type -->
+ <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:CHAR, Size:4, Description:Packaging Material Type -->
<xsd:element name="VHART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:255, Description:Material Name -->
+ <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:CHAR, Size:40, Description:Material Name -->
<xsd:element name="ZZNAME" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:VARC, Size:255, Description:Specification -->
+ <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:CHAR, Size:255, Description:Specification -->
<xsd:element name="ZZSPEC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:VARC, Size:255, Description:Description -->
+ <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:CHAR, Size:255, Description:Description -->
<xsd:element name="ZZDESC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:27, Table:MATL, Field:ZZMMTYP, M/O:, Type:VARC, Size:255, Description:Material Master Type -->
+ <!-- SEQ:27, Table:MATL, Field:ZZMMTYP, M/O:, Type:CHAR, Size:1, Description:Material Master Type -->
<xsd:element name="ZZMMTYP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:28, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date -->
+ <!-- SEQ:28, Table:MATL, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date -->
<xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time -->
+ <!-- SEQ:29, Table:MATL, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time -->
<xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:30, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User -->
+ <!-- SEQ:30, Table:MATL, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User -->
<xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:31, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:255, Description:Approval Date -->
+ <!-- SEQ:31, Table:MATL, Field:ZZAPPDT, M/O:, Type:DATS, Size:8, Description:Approval Date -->
<xsd:element name="ZZAPPDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:32, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:255, Description:Approval Time -->
+ <!-- SEQ:32, Table:MATL, Field:ZZAPPTM, M/O:, Type:TIMS, Size:6, Description:Approval Time -->
<xsd:element name="ZZAPPTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:255, Description:Approval User -->
+ <!-- SEQ:33, Table:MATL, Field:ZZAPPUS, M/O:, Type:CHAR, Size:12, Description:Approval User -->
<xsd:element name="ZZAPPUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:34, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date -->
+ <!-- SEQ:34, Table:MATL, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date -->
<xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:35, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time -->
+ <!-- SEQ:35, Table:MATL, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time -->
<xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:36, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User -->
+ <!-- SEQ:36, Table:MATL, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User -->
<xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:37, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status -->
+ <!-- SEQ:37, Table:MATL, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status -->
<xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:38, Table:MATL, Field:ZZDOKAR, M/O:, Type:VARC, Size:255, Description:Document Type -->
+ <!-- SEQ:38, Table:MATL, Field:ZZDOKAR, M/O:, Type:CHAR, Size:3, Description:Document Type -->
<xsd:element name="ZZDOKAR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:39, Table:MATL, Field:ZZDOKNR, M/O:, Type:VARC, Size:255, Description:Document number -->
+ <!-- SEQ:39, Table:MATL, Field:ZZDOKNR, M/O:, Type:CHAR, Size:25, Description:Document number -->
<xsd:element name="ZZDOKNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:40, Table:MATL, Field:ZZDOKTL, M/O:, Type:VARC, Size:255, Description:Document Part -->
+ <!-- SEQ:40, Table:MATL, Field:ZZDOKTL, M/O:, Type:CHAR, Size:3, Description:Document Part -->
<xsd:element name="ZZDOKTL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:41, Table:MATL, Field:ZZDOKVR, M/O:, Type:VARC, Size:255, Description:Document Version -->
+ <!-- SEQ:41, Table:MATL, Field:ZZDOKVR, M/O:, Type:CHAR, Size:2, Description:Document Version -->
<xsd:element name="ZZDOKVR" type="xsd:string" minOccurs="0"/>
<!-- DESC [1:N] -->
<xsd:element name="DESC" type="p0:DESC" minOccurs="0" maxOccurs="unbounded"/>
@@ -109,105 +109,105 @@
</xsd:complexType>
<xsd:complexType name="DESC">
<xsd:sequence>
- <!-- SEQ:42, Table:MATL/DESC, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:42, Table:MATL/DESC, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:43, Table:MATL/DESC, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language -->
+ <!-- SEQ:43, Table:MATL/DESC, Field:SPRAS, M/O:, Type:CHAR, Size:1, Description:Language -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:44, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:255, Description:Material Description (Short Text) -->
+ <!-- SEQ:44, Table:MATL/DESC, Field:MAKTX, M/O:, Type:CHAR, Size:40, Description:Material Description (Short Text) -->
<xsd:element name="MAKTX" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PLNT">
<xsd:sequence>
- <!-- SEQ:45, Table:MATL/PLNT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:45, Table:MATL/PLNT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:46, Table:MATL/PLNT, Field:WERKS, M/O:, Type:VARC, Size:255, Description:Plant -->
+ <!-- SEQ:46, Table:MATL/PLNT, Field:WERKS, M/O:, Type:CHAR, Size:4, Description:Plant -->
<xsd:element name="WERKS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:47, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion Flag -->
+ <!-- SEQ:47, Table:MATL/PLNT, Field:LVORM, M/O:, Type:CHAR, Size:4, Description:Deletion Flag -->
<xsd:element name="LVORM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:48, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:255, Description:Plant-Specific Material Status -->
+ <!-- SEQ:48, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:CHAR, Size:2, Description:Plant-Specific Material Status -->
<xsd:element name="MMSTA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:49, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:255, Description:Date from which the plant-specific material status -->
+ <!-- SEQ:49, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:DATS, Size:8, Description:Date from which the plant-specific material status -->
<xsd:element name="MMSTD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:50, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:255, Description:Plant Material Type -->
+ <!-- SEQ:50, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:CHAR, Size:4, Description:Plant Material Type -->
<xsd:element name="ZZMTARP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:51, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date -->
+ <!-- SEQ:51, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date -->
<xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:52, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time -->
+ <!-- SEQ:52, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time -->
<xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:53, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User -->
+ <!-- SEQ:53, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User -->
<xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:54, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date -->
+ <!-- SEQ:54, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date -->
<xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:55, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time -->
+ <!-- SEQ:55, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time -->
<xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:56, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User -->
+ <!-- SEQ:56, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User -->
<xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status -->
+ <!-- SEQ:57, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status -->
<xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UNIT">
<xsd:sequence>
- <!-- SEQ:58, Table:MATL/UNIT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:58, Table:MATL/UNIT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:59, Table:MATL/UNIT, Field:MEINH, M/O:, Type:VARC, Size:255, Description:Alternative Unit of Measure for Stockkeeping Unit -->
+ <!-- SEQ:59, Table:MATL/UNIT, Field:MEINH, M/O:, Type:UNIT, Size:3, Description:Alternative Unit of Measure for Stockkeeping Unit -->
<xsd:element name="MEINH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:60, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:VARC, Size:255, Description:Numerator for Conversion to Base Units of Measure -->
+ <!-- SEQ:60, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:DEC, Size:5, Description:Numerator for Conversion to Base Units of Measure -->
<xsd:element name="UMREZ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:61, Table:MATL/UNIT, Field:UMREN, M/O:, Type:VARC, Size:255, Description:Denominator for conversion to base units of measur -->
+ <!-- SEQ:61, Table:MATL/UNIT, Field:UMREN, M/O:, Type:DEC, Size:5, Description:Denominator for conversion to base units of measur -->
<xsd:element name="UMREN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:62, Table:MATL/UNIT, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length -->
+ <!-- SEQ:62, Table:MATL/UNIT, Field:LAENG, M/O:, Type:QUAN, Size:13, Description:Length -->
<xsd:element name="LAENG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:63, Table:MATL/UNIT, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width -->
+ <!-- SEQ:63, Table:MATL/UNIT, Field:BREIT, M/O:, Type:QUAN, Size:13, Description:Width -->
<xsd:element name="BREIT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:64, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height -->
+ <!-- SEQ:64, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:QUAN, Size:13, Description:Height -->
<xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:65, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height -->
+ <!-- SEQ:65, Table:MATL/UNIT, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit of Dimension for Length/Width/Height -->
<xsd:element name="MEABM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume -->
+ <!-- SEQ:66, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:QUAN, Size:13, Description:Volume -->
<xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit -->
+ <!-- SEQ:67, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume unit -->
<xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:68, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight -->
+ <!-- SEQ:68, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:QUAN, Size:13, Description:Gross Weight -->
<xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit -->
+ <!-- SEQ:69, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit -->
<xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CLASSASGN">
<xsd:sequence>
- <!-- SEQ:70, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:70, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:71, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number -->
+ <!-- SEQ:71, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number -->
<xsd:element name="CLASS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:72, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type -->
+ <!-- SEQ:72, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type -->
<xsd:element name="KLART" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CHARASGN">
<xsd:sequence>
- <!-- SEQ:73, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number -->
+ <!-- SEQ:73, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number -->
<xsd:element name="MATNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:74, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number -->
+ <!-- SEQ:74, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number -->
<xsd:element name="CLASS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:75, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type -->
+ <!-- SEQ:75, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type -->
<xsd:element name="KLART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:VARC, Size:255, Description:Characteristic Name -->
+ <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:CHAR, Size:30, Description:Characteristic Name -->
<xsd:element name="ATNAM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:255, Description:Characteristic Value -->
+ <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:CHAR, Size:30, Description:Characteristic Value -->
<xsd:element name="ATWRT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:VARC, Size:255, Description:Internal floating point from -->
+ <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:FLTP, Size:16, Description:Internal floating point from -->
<xsd:element name="ATFLV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:79, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:255, Description:Unit of Measurement -->
+ <!-- SEQ:79, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement -->
<xsd:element name="ATAWE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:VARC, Size:255, Description:Internal floating point value to -->
+ <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:FLTP, Size:16, Description:Internal floating point value to -->
<xsd:element name="ATFLB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:255, Description:Unit of Measurement -->
+ <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement -->
<xsd:element name="ATAW1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:255, Description:특성내역 -->
+ <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:30, Description:특성내역 -->
<xsd:element name="ATBEZ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:255, Description:특성값내역 -->
+ <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:30, Description:특성값내역 -->
<xsd:element name="ATWTB" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
index 2711c449..ae44f4ab 100644
--- a/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl
@@ -26,334 +26,334 @@
</xsd:complexType>
<xsd:complexType name="HRHMTB_CCTR">
<xsd:sequence>
- <!-- SEQ:73, Table:HRHMTB_CCTR, Field:CCTR, M/O:M, Type:VARC, Size:255, Description:Cost Center -->
+ <!-- SEQ:73, Table:HRHMTB_CCTR, Field:CCTR, M/O:M, Type:VARC, Size:10, Description:Cost Center -->
<xsd:element name="CCTR" type="xsd:string"/>
- <!-- SEQ:74, Table:HRHMTB_CCTR, Field:DATBI, M/O:M, Type:VARC, Size:255, Description:Valid to -->
+ <!-- SEQ:74, Table:HRHMTB_CCTR, Field:DATBI, M/O:M, Type:VARC, Size:8, Description:Valid to -->
<xsd:element name="DATBI" type="xsd:string"/>
- <!-- SEQ:75, Table:HRHMTB_CCTR, Field:KOKRS, M/O:M, Type:VARC, Size:255, Description:Controlling Area -->
+ <!-- SEQ:75, Table:HRHMTB_CCTR, Field:KOKRS, M/O:M, Type:VARC, Size:4, Description:Controlling Area -->
<xsd:element name="KOKRS" type="xsd:string"/>
- <!-- SEQ:76, Table:HRHMTB_CCTR, Field:ABTEI, M/O:, Type:VARC, Size:255, Description:Department -->
+ <!-- SEQ:76, Table:HRHMTB_CCTR, Field:ABTEI, M/O:, Type:VARC, Size:12, Description:Department -->
<xsd:element name="ABTEI" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:77, Table:HRHMTB_CCTR, Field:BKZER, M/O:, Type:VARC, Size:255, Description:Actual Revenue -->
+ <!-- SEQ:77, Table:HRHMTB_CCTR, Field:BKZER, M/O:, Type:VARC, Size:1, Description:Actual Revenue -->
<xsd:element name="BKZER" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:78, Table:HRHMTB_CCTR, Field:BKZKP, M/O:, Type:VARC, Size:255, Description:Actual Primary Costs -->
+ <!-- SEQ:78, Table:HRHMTB_CCTR, Field:BKZKP, M/O:, Type:VARC, Size:1, Description:Actual Primary Costs -->
<xsd:element name="BKZKP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:79, Table:HRHMTB_CCTR, Field:BKZKS, M/O:, Type:VARC, Size:255, Description:Actual Secondary Costs -->
+ <!-- SEQ:79, Table:HRHMTB_CCTR, Field:BKZKS, M/O:, Type:VARC, Size:1, Description:Actual Secondary Costs -->
<xsd:element name="BKZKS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:80, Table:HRHMTB_CCTR, Field:BKZOB, M/O:, Type:VARC, Size:255, Description:Commitment Update -->
+ <!-- SEQ:80, Table:HRHMTB_CCTR, Field:BKZOB, M/O:, Type:VARC, Size:1, Description:Commitment Update -->
<xsd:element name="BKZOB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:81, Table:HRHMTB_CCTR, Field:BUKRS, M/O:, Type:VARC, Size:255, Description:Company Code -->
+ <!-- SEQ:81, Table:HRHMTB_CCTR, Field:BUKRS, M/O:, Type:VARC, Size:4, Description:Company Code -->
<xsd:element name="BUKRS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:82, Table:HRHMTB_CCTR, Field:DATAB, M/O:, Type:VARC, Size:255, Description:Valid from -->
+ <!-- SEQ:82, Table:HRHMTB_CCTR, Field:DATAB, M/O:, Type:VARC, Size:8, Description:Valid from -->
<xsd:element name="DATAB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:83, Table:HRHMTB_CCTR, Field:KHINR, M/O:, Type:VARC, Size:255, Description:Standard Hierarchy Area -->
+ <!-- SEQ:83, Table:HRHMTB_CCTR, Field:KHINR, M/O:, Type:VARC, Size:12, Description:Standard Hierarchy Area -->
<xsd:element name="KHINR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:84, Table:HRHMTB_CCTR, Field:FUNC_AREA, M/O:, Type:VARC, Size:255, Description:Functional Area -->
+ <!-- SEQ:84, Table:HRHMTB_CCTR, Field:FUNC_AREA, M/O:, Type:VARC, Size:16, Description:Functional Area -->
<xsd:element name="FUNC_AREA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:85, Table:HRHMTB_CCTR, Field:GSBER, M/O:, Type:VARC, Size:255, Description:Business Area -->
+ <!-- SEQ:85, Table:HRHMTB_CCTR, Field:GSBER, M/O:, Type:VARC, Size:4, Description:Business Area -->
<xsd:element name="GSBER" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:86, Table:HRHMTB_CCTR, Field:KOSAR, M/O:, Type:VARC, Size:255, Description:Cost Center Category -->
+ <!-- SEQ:86, Table:HRHMTB_CCTR, Field:KOSAR, M/O:, Type:VARC, Size:1, Description:Cost Center Category -->
<xsd:element name="KOSAR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:87, Table:HRHMTB_CCTR, Field:MGEFL, M/O:, Type:VARC, Size:255, Description:Record Quantity -->
+ <!-- SEQ:87, Table:HRHMTB_CCTR, Field:MGEFL, M/O:, Type:VARC, Size:1, Description:Record Quantity -->
<xsd:element name="MGEFL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:88, Table:HRHMTB_CCTR, Field:PKZER, M/O:, Type:VARC, Size:255, Description:Plan Revenues -->
+ <!-- SEQ:88, Table:HRHMTB_CCTR, Field:PKZER, M/O:, Type:VARC, Size:1, Description:Plan Revenues -->
<xsd:element name="PKZER" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:89, Table:HRHMTB_CCTR, Field:PKZKP, M/O:, Type:VARC, Size:255, Description:Plan Primary Costs -->
+ <!-- SEQ:89, Table:HRHMTB_CCTR, Field:PKZKP, M/O:, Type:VARC, Size:1, Description:Plan Primary Costs -->
<xsd:element name="PKZKP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:90, Table:HRHMTB_CCTR, Field:PKZKS, M/O:, Type:VARC, Size:255, Description:Plan Secondary Costs -->
+ <!-- SEQ:90, Table:HRHMTB_CCTR, Field:PKZKS, M/O:, Type:VARC, Size:1, Description:Plan Secondary Costs -->
<xsd:element name="PKZKS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:91, Table:HRHMTB_CCTR, Field:PRCTR, M/O:, Type:VARC, Size:255, Description:Profit Center -->
+ <!-- SEQ:91, Table:HRHMTB_CCTR, Field:PRCTR, M/O:, Type:VARC, Size:10, Description:Profit Center -->
<xsd:element name="PRCTR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:92, Table:HRHMTB_CCTR, Field:TXJCD, M/O:, Type:VARC, Size:255, Description:Tax Jurisdiction -->
+ <!-- SEQ:92, Table:HRHMTB_CCTR, Field:TXJCD, M/O:, Type:VARC, Size:15, Description:Tax Jurisdiction -->
<xsd:element name="TXJCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:93, Table:HRHMTB_CCTR, Field:VERAK, M/O:, Type:VARC, Size:255, Description:Person Responsible -->
+ <!-- SEQ:93, Table:HRHMTB_CCTR, Field:VERAK, M/O:, Type:VARC, Size:60, Description:Person Responsible -->
<xsd:element name="VERAK" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:94, Table:HRHMTB_CCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:255, Description:User Responsible -->
+ <!-- SEQ:94, Table:HRHMTB_CCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:12, Description:User Responsible -->
<xsd:element name="VERAK_USE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:95, Table:HRHMTB_CCTR, Field:VMETH, M/O:, Type:VARC, Size:255, Description:Allowed Allocation methods -->
+ <!-- SEQ:95, Table:HRHMTB_CCTR, Field:VMETH, M/O:, Type:VARC, Size:2, Description:Allowed Allocation methods -->
<xsd:element name="VMETH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:96, Table:HRHMTB_CCTR, Field:WAERS, M/O:, Type:VARC, Size:255, Description:Currency -->
+ <!-- SEQ:96, Table:HRHMTB_CCTR, Field:WAERS, M/O:, Type:VARC, Size:5, Description:Currency -->
<xsd:element name="WAERS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:97, Table:HRHMTB_CCTR, Field:ZZBRANCH, M/O:, Type:VARC, Size:255, Description:Business Place -->
+ <!-- SEQ:97, Table:HRHMTB_CCTR, Field:ZZBRANCH, M/O:, Type:VARC, Size:4, Description:Business Place -->
<xsd:element name="ZZBRANCH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:98, Table:HRHMTB_CCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Delete Flag -->
+ <!-- SEQ:98, Table:HRHMTB_CCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Delete Flag -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:99, Table:HRHMTB_CCTR, Field:ZZFCTRI, M/O:, Type:VARC, Size:255, Description:Create Fund Center Indicator -->
+ <!-- SEQ:99, Table:HRHMTB_CCTR, Field:ZZFCTRI, M/O:, Type:VARC, Size:1, Description:Create Fund Center Indicator -->
<xsd:element name="ZZFCTRI" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:100, Table:HRHMTB_CCTR, Field:ZZSECCODE, M/O:, Type:VARC, Size:255, Description:Section Code -->
+ <!-- SEQ:100, Table:HRHMTB_CCTR, Field:ZZSECCODE, M/O:, Type:VARC, Size:4, Description:Section Code -->
<xsd:element name="ZZSECCODE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:101, Table:HRHMTB_CCTR, Field:ZZSEGMENT, M/O:, Type:VARC, Size:255, Description:Segment for Segmental Reporting -->
+ <!-- SEQ:101, Table:HRHMTB_CCTR, Field:ZZSEGMENT, M/O:, Type:VARC, Size:10, Description:Segment for Segmental Reporting -->
<xsd:element name="ZZSEGMENT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:102, Table:HRHMTB_CCTR, Field:ANRED, M/O:, Type:VARC, Size:255, Description:Title -->
+ <!-- SEQ:102, Table:HRHMTB_CCTR, Field:ANRED, M/O:, Type:VARC, Size:15, Description:Title -->
<xsd:element name="ANRED" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:103, Table:HRHMTB_CCTR, Field:NAME1, M/O:, Type:VARC, Size:255, Description:Name 1 -->
+ <!-- SEQ:103, Table:HRHMTB_CCTR, Field:NAME1, M/O:, Type:VARC, Size:70, Description:Name 1 -->
<xsd:element name="NAME1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:104, Table:HRHMTB_CCTR, Field:NAME2, M/O:, Type:VARC, Size:255, Description:Name 2 -->
+ <!-- SEQ:104, Table:HRHMTB_CCTR, Field:NAME2, M/O:, Type:VARC, Size:70, Description:Name 2 -->
<xsd:element name="NAME2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:105, Table:HRHMTB_CCTR, Field:NAME3, M/O:, Type:VARC, Size:255, Description:Name 3 -->
+ <!-- SEQ:105, Table:HRHMTB_CCTR, Field:NAME3, M/O:, Type:VARC, Size:70, Description:Name 3 -->
<xsd:element name="NAME3" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:106, Table:HRHMTB_CCTR, Field:NAME4, M/O:, Type:VARC, Size:255, Description:Name 4 -->
+ <!-- SEQ:106, Table:HRHMTB_CCTR, Field:NAME4, M/O:, Type:VARC, Size:70, Description:Name 4 -->
<xsd:element name="NAME4" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:107, Table:HRHMTB_CCTR, Field:ORT01, M/O:, Type:VARC, Size:255, Description:City -->
+ <!-- SEQ:107, Table:HRHMTB_CCTR, Field:ORT01, M/O:, Type:VARC, Size:35, Description:City -->
<xsd:element name="ORT01" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:108, Table:HRHMTB_CCTR, Field:ORT02, M/O:, Type:VARC, Size:255, Description:District -->
+ <!-- SEQ:108, Table:HRHMTB_CCTR, Field:ORT02, M/O:, Type:VARC, Size:35, Description:District -->
<xsd:element name="ORT02" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:109, Table:HRHMTB_CCTR, Field:STRAS, M/O:, Type:VARC, Size:255, Description:House number and street -->
+ <!-- SEQ:109, Table:HRHMTB_CCTR, Field:STRAS, M/O:, Type:VARC, Size:35, Description:House number and street -->
<xsd:element name="STRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:110, Table:HRHMTB_CCTR, Field:PFACH, M/O:, Type:VARC, Size:255, Description:PO Box -->
+ <!-- SEQ:110, Table:HRHMTB_CCTR, Field:PFACH, M/O:, Type:VARC, Size:10, Description:PO Box -->
<xsd:element name="PFACH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:111, Table:HRHMTB_CCTR, Field:PSTLZ, M/O:, Type:VARC, Size:255, Description:Postal Code -->
+ <!-- SEQ:111, Table:HRHMTB_CCTR, Field:PSTLZ, M/O:, Type:VARC, Size:10, Description:Postal Code -->
<xsd:element name="PSTLZ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:112, Table:HRHMTB_CCTR, Field:PSTL2, M/O:, Type:VARC, Size:255, Description:P.O. Box Postal Code -->
+ <!-- SEQ:112, Table:HRHMTB_CCTR, Field:PSTL2, M/O:, Type:VARC, Size:10, Description:P.O. Box Postal Code -->
<xsd:element name="PSTL2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:113, Table:HRHMTB_CCTR, Field:REGIO, M/O:, Type:VARC, Size:255, Description:Region (State, Province, County) -->
+ <!-- SEQ:113, Table:HRHMTB_CCTR, Field:REGIO, M/O:, Type:VARC, Size:3, Description:Region (State, Province, County) -->
<xsd:element name="REGIO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:114, Table:HRHMTB_CCTR, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:114, Table:HRHMTB_CCTR, Field:SPRAS, M/O:, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:115, Table:HRHMTB_CCTR, Field:TELBX, M/O:, Type:VARC, Size:255, Description:Telebox number -->
+ <!-- SEQ:115, Table:HRHMTB_CCTR, Field:TELBX, M/O:, Type:VARC, Size:15, Description:Telebox number -->
<xsd:element name="TELBX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:116, Table:HRHMTB_CCTR, Field:TELF1, M/O:, Type:VARC, Size:255, Description:First telephone number -->
+ <!-- SEQ:116, Table:HRHMTB_CCTR, Field:TELF1, M/O:, Type:VARC, Size:16, Description:First telephone number -->
<xsd:element name="TELF1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:117, Table:HRHMTB_CCTR, Field:TELF2, M/O:, Type:VARC, Size:255, Description:Second telephone number -->
+ <!-- SEQ:117, Table:HRHMTB_CCTR, Field:TELF2, M/O:, Type:VARC, Size:16, Description:Second telephone number -->
<xsd:element name="TELF2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:118, Table:HRHMTB_CCTR, Field:TELFX, M/O:, Type:VARC, Size:255, Description:Fax Number -->
+ <!-- SEQ:118, Table:HRHMTB_CCTR, Field:TELFX, M/O:, Type:VARC, Size:31, Description:Fax Number -->
<xsd:element name="TELFX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:119, Table:HRHMTB_CCTR, Field:TELTX, M/O:, Type:VARC, Size:255, Description:Teletex number -->
+ <!-- SEQ:119, Table:HRHMTB_CCTR, Field:TELTX, M/O:, Type:VARC, Size:30, Description:Teletex number -->
<xsd:element name="TELTX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:120, Table:HRHMTB_CCTR, Field:TELX1, M/O:, Type:VARC, Size:255, Description:Telex number -->
+ <!-- SEQ:120, Table:HRHMTB_CCTR, Field:TELX1, M/O:, Type:VARC, Size:30, Description:Telex number -->
<xsd:element name="TELX1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:121, Table:HRHMTB_CCTR, Field:DATLT, M/O:, Type:VARC, Size:255, Description:Data communication line no. -->
+ <!-- SEQ:121, Table:HRHMTB_CCTR, Field:DATLT, M/O:, Type:VARC, Size:14, Description:Data communication line no. -->
<xsd:element name="DATLT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:122, Table:HRHMTB_CCTR, Field:DRNAM, M/O:, Type:VARC, Size:255, Description:Printer destination for CCtr report -->
+ <!-- SEQ:122, Table:HRHMTB_CCTR, Field:DRNAM, M/O:, Type:VARC, Size:4, Description:Printer destination for CCtr report -->
<xsd:element name="DRNAM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:123, Table:HRHMTB_CCTR, Field:LAND1, M/O:, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:123, Table:HRHMTB_CCTR, Field:LAND1, M/O:, Type:VARC, Size:3, Description:Country Key -->
<xsd:element name="LAND1" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TEXT">
<xsd:sequence>
- <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="LANGU" type="xsd:string"/>
- <!-- SEQ:125, Table:HRHMTB_CCTR/TEXT, Field:KTEXT, M/O:, Type:VARC, Size:255, Description:General Name -->
+ <!-- SEQ:125, Table:HRHMTB_CCTR/TEXT, Field:KTEXT, M/O:, Type:VARC, Size:60, Description:General Name -->
<xsd:element name="KTEXT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:126, Table:HRHMTB_CCTR/TEXT, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Description -->
+ <!-- SEQ:126, Table:HRHMTB_CCTR/TEXT, Field:LTEXT, M/O:, Type:VARC, Size:120, Description:Description -->
<xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_PCTR">
<xsd:sequence>
- <!-- SEQ:127, Table:HRHMTB_PCTR, Field:PCTR, M/O:M, Type:VARC, Size:255, Description:Profit Center -->
+ <!-- SEQ:127, Table:HRHMTB_PCTR, Field:PCTR, M/O:M, Type:VARC, Size:10, Description:Profit Center -->
<xsd:element name="PCTR" type="xsd:string"/>
- <!-- SEQ:128, Table:HRHMTB_PCTR, Field:KOKRS, M/O:M, Type:VARC, Size:255, Description:Controlling Area -->
+ <!-- SEQ:128, Table:HRHMTB_PCTR, Field:KOKRS, M/O:M, Type:VARC, Size:4, Description:Controlling Area -->
<xsd:element name="KOKRS" type="xsd:string"/>
- <!-- SEQ:129, Table:HRHMTB_PCTR, Field:DATBI, M/O:M, Type:VARC, Size:255, Description:Valid to -->
+ <!-- SEQ:129, Table:HRHMTB_PCTR, Field:DATBI, M/O:M, Type:VARC, Size:8, Description:Valid to -->
<xsd:element name="DATBI" type="xsd:string"/>
- <!-- SEQ:130, Table:HRHMTB_PCTR, Field:ABTEI, M/O:, Type:VARC, Size:255, Description:Department -->
+ <!-- SEQ:130, Table:HRHMTB_PCTR, Field:ABTEI, M/O:, Type:VARC, Size:12, Description:Department -->
<xsd:element name="ABTEI" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:131, Table:HRHMTB_PCTR, Field:LOCK_IND, M/O:, Type:VARC, Size:255, Description:Lock indicator -->
+ <!-- SEQ:131, Table:HRHMTB_PCTR, Field:LOCK_IND, M/O:, Type:VARC, Size:1, Description:Lock indicator -->
<xsd:element name="LOCK_IND" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:132, Table:HRHMTB_PCTR, Field:VERAK, M/O:, Type:VARC, Size:255, Description:Person Responsible -->
+ <!-- SEQ:132, Table:HRHMTB_PCTR, Field:VERAK, M/O:, Type:VARC, Size:20, Description:Person Responsible -->
<xsd:element name="VERAK" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:133, Table:HRHMTB_PCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:255, Description:User Responsible -->
+ <!-- SEQ:133, Table:HRHMTB_PCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:12, Description:User Responsible -->
<xsd:element name="VERAK_USE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:134, Table:HRHMTB_PCTR, Field:SEGMENT, M/O:, Type:VARC, Size:255, Description:Segment -->
+ <!-- SEQ:134, Table:HRHMTB_PCTR, Field:SEGMENT, M/O:, Type:VARC, Size:10, Description:Segment -->
<xsd:element name="SEGMENT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:135, Table:HRHMTB_PCTR, Field:TXJCD, M/O:, Type:VARC, Size:255, Description:Tax Jurisdiction -->
+ <!-- SEQ:135, Table:HRHMTB_PCTR, Field:TXJCD, M/O:, Type:VARC, Size:15, Description:Tax Jurisdiction -->
<xsd:element name="TXJCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:136, Table:HRHMTB_PCTR, Field:DATAB, M/O:, Type:VARC, Size:255, Description:Valid from -->
+ <!-- SEQ:136, Table:HRHMTB_PCTR, Field:DATAB, M/O:, Type:VARC, Size:8, Description:Valid from -->
<xsd:element name="DATAB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:137, Table:HRHMTB_PCTR, Field:KHINR, M/O:, Type:VARC, Size:255, Description:Profit center area(Profit center group) -->
+ <!-- SEQ:137, Table:HRHMTB_PCTR, Field:KHINR, M/O:, Type:VARC, Size:12, Description:Profit center area(Profit center group) -->
<xsd:element name="KHINR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:138, Table:HRHMTB_PCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Delete Flag -->
+ <!-- SEQ:138, Table:HRHMTB_PCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Delete Flag -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZBUKRS">
<xsd:sequence>
- <!-- SEQ:1, Table:HRHMTB_ZBUKRS, Field:ZBUKRS, M/O:M, Type:VARC, Size:255, Description:Company Code -->
+ <!-- SEQ:1, Table:HRHMTB_ZBUKRS, Field:ZBUKRS, M/O:M, Type:VARC, Size:4, Description:Company Code -->
<xsd:element name="ZBUKRS" type="xsd:string"/>
- <!-- SEQ:2, Table:HRHMTB_ZBUKRS, Field:ZZBUTXT, M/O:, Type:VARC, Size:255, Description:Company Code Name -->
+ <!-- SEQ:2, Table:HRHMTB_ZBUKRS, Field:ZZBUTXT, M/O:, Type:VARC, Size:50, Description:Company Code Name -->
<xsd:element name="ZZBUTXT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:3, Table:HRHMTB_ZBUKRS, Field:ZZCITY, M/O:, Type:VARC, Size:255, Description:City -->
+ <!-- SEQ:3, Table:HRHMTB_ZBUKRS, Field:ZZCITY, M/O:, Type:VARC, Size:50, Description:City -->
<xsd:element name="ZZCITY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:HRHMTB_ZBUKRS, Field:ZZCOUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:4, Table:HRHMTB_ZBUKRS, Field:ZZCOUNTRY, M/O:, Type:VARC, Size:3, Description:Country Key -->
<xsd:element name="ZZCOUNTRY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:HRHMTB_ZBUKRS, Field:CURR_BUKR, M/O:, Type:VARC, Size:255, Description:Currency -->
+ <!-- SEQ:5, Table:HRHMTB_ZBUKRS, Field:CURR_BUKR, M/O:, Type:VARC, Size:5, Description:Currency -->
<xsd:element name="CURR_BUKR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:HRHMTB_ZBUKRS, Field:ZZLANGU, M/O:, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:6, Table:HRHMTB_ZBUKRS, Field:ZZLANGU, M/O:, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="ZZLANGU" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:HRHMTB_ZBUKRS, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:7, Table:HRHMTB_ZBUKRS, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZEKGRP">
<xsd:sequence>
- <!-- SEQ:26, Table:HRHMTB_ZEKGRP, Field:ZEKGRP, M/O:M, Type:VARC, Size:255, Description:Purchasing Group -->
+ <!-- SEQ:26, Table:HRHMTB_ZEKGRP, Field:ZEKGRP, M/O:M, Type:VARC, Size:3, Description:Purchasing Group -->
<xsd:element name="ZEKGRP" type="xsd:string"/>
- <!-- SEQ:27, Table:HRHMTB_ZEKGRP, Field:ZZEKNAM, M/O:, Type:VARC, Size:255, Description:Purchasing Group Description -->
+ <!-- SEQ:27, Table:HRHMTB_ZEKGRP, Field:ZZEKNAM, M/O:, Type:VARC, Size:36, Description:Purchasing Group Description -->
<xsd:element name="ZZEKNAM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:28, Table:HRHMTB_ZEKGRP, Field:ZZEKTEL, M/O:, Type:VARC, Size:255, Description:Telephone Number -->
+ <!-- SEQ:28, Table:HRHMTB_ZEKGRP, Field:ZZEKTEL, M/O:, Type:VARC, Size:12, Description:Telephone Number -->
<xsd:element name="ZZEKTEL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:HRHMTB_ZEKGRP, Field:ZZTELFX, M/O:, Type:VARC, Size:255, Description:Fax Number -->
+ <!-- SEQ:29, Table:HRHMTB_ZEKGRP, Field:ZZTELFX, M/O:, Type:VARC, Size:31, Description:Fax Number -->
<xsd:element name="ZZTELFX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:30, Table:HRHMTB_ZEKGRP, Field:ZZTEL_NUM, M/O:, Type:VARC, Size:255, Description:Telephone Number (Office) -->
+ <!-- SEQ:30, Table:HRHMTB_ZEKGRP, Field:ZZTEL_NUM, M/O:, Type:VARC, Size:30, Description:Telephone Number (Office) -->
<xsd:element name="ZZTEL_NUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:31, Table:HRHMTB_ZEKGRP, Field:ZZEMPNUM, M/O:, Type:VARC, Size:255, Description:Employee Number -->
+ <!-- SEQ:31, Table:HRHMTB_ZEKGRP, Field:ZZEMPNUM, M/O:, Type:VARC, Size:10, Description:Employee Number -->
<xsd:element name="ZZEMPNUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:32, Table:HRHMTB_ZEKGRP, Field:ZZSINGLE, M/O:, Type:VARC, Size:255, Description:Single ID -->
+ <!-- SEQ:32, Table:HRHMTB_ZEKGRP, Field:ZZSINGLE, M/O:, Type:VARC, Size:241, Description:Single ID -->
<xsd:element name="ZZSINGLE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:HRHMTB_ZEKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:33, Table:HRHMTB_ZEKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZEKORG">
<xsd:sequence>
- <!-- SEQ:23, Table:HRHMTB_ZEKORG, Field:ZEKORG, M/O:M, Type:VARC, Size:255, Description:Purchasing Organization -->
+ <!-- SEQ:23, Table:HRHMTB_ZEKORG, Field:ZEKORG, M/O:M, Type:VARC, Size:4, Description:Purchasing Organization -->
<xsd:element name="ZEKORG" type="xsd:string"/>
- <!-- SEQ:24, Table:HRHMTB_ZEKORG, Field:ZZEKOTX, M/O:, Type:VARC, Size:255, Description:Purchasing Organization Description -->
+ <!-- SEQ:24, Table:HRHMTB_ZEKORG, Field:ZZEKOTX, M/O:, Type:VARC, Size:40, Description:Purchasing Organization Description -->
<xsd:element name="ZZEKOTX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:25, Table:HRHMTB_ZEKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:25, Table:HRHMTB_ZEKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZGSBER">
<xsd:sequence>
- <!-- SEQ:8, Table:HRHMTB_ZGSBER, Field:ZGSBER, M/O:M, Type:VARC, Size:255, Description:Business Area -->
+ <!-- SEQ:8, Table:HRHMTB_ZGSBER, Field:ZGSBER, M/O:M, Type:VARC, Size:4, Description:Business Area -->
<xsd:element name="ZGSBER" type="xsd:string"/>
- <!-- SEQ:9, Table:HRHMTB_ZGSBER, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:9, Table:HRHMTB_ZGSBER, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT2" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TEXT2">
<xsd:sequence>
- <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="LANGU" type="xsd:string"/>
- <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:255, Description:Business area description -->
+ <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:60, Description:Business area description -->
<xsd:element name="TXTMI" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZLGORT">
<xsd:sequence>
- <!-- SEQ:19, Table:HRHMTB_ZLGORT, Field:ZLGORT, M/O:M, Type:VARC, Size:255, Description:Storage Location -->
+ <!-- SEQ:19, Table:HRHMTB_ZLGORT, Field:ZLGORT, M/O:M, Type:VARC, Size:4, Description:Storage Location -->
<xsd:element name="ZLGORT" type="xsd:string"/>
- <!-- SEQ:20, Table:HRHMTB_ZLGORT, Field:ZWERKS, M/O:M, Type:VARC, Size:255, Description:Plant -->
+ <!-- SEQ:20, Table:HRHMTB_ZLGORT, Field:ZWERKS, M/O:M, Type:VARC, Size:4, Description:Plant -->
<xsd:element name="ZWERKS" type="xsd:string"/>
- <!-- SEQ:21, Table:HRHMTB_ZLGORT, Field:ZZLGOBE, M/O:, Type:VARC, Size:255, Description:Storage Location Description -->
+ <!-- SEQ:21, Table:HRHMTB_ZLGORT, Field:ZZLGOBE, M/O:, Type:VARC, Size:32, Description:Storage Location Description -->
<xsd:element name="ZZLGOBE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:HRHMTB_ZLGORT, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:22, Table:HRHMTB_ZLGORT, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZSPART">
<xsd:sequence>
- <!-- SEQ:56, Table:HRHMTB_ZSPART, Field:ZSPART, M/O:, Type:VARC, Size:255, Description:Division -->
+ <!-- SEQ:56, Table:HRHMTB_ZSPART, Field:ZSPART, M/O:, Type:VARC, Size:2, Description:Division -->
<xsd:element name="ZSPART" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:HRHMTB_ZSPART, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:57, Table:HRHMTB_ZSPART, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TEXT3">
<xsd:sequence>
- <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="LANGU" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:255, Description:Business area description -->
+ <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:60, Description:Business area description -->
<xsd:element name="TXTMI" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZVKBUR">
<xsd:sequence>
- <!-- SEQ:42, Table:HRHMTB_ZVKBUR, Field:ZVKBUR, M/O:M, Type:VARC, Size:255, Description:Sales Office -->
+ <!-- SEQ:42, Table:HRHMTB_ZVKBUR, Field:ZVKBUR, M/O:M, Type:VARC, Size:4, Description:Sales Office -->
<xsd:element name="ZVKBUR" type="xsd:string"/>
- <!-- SEQ:43, Table:HRHMTB_ZVKBUR, Field:CTRY_SOFF, M/O:, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:43, Table:HRHMTB_ZVKBUR, Field:CTRY_SOFF, M/O:, Type:VARC, Size:3, Description:Country Key -->
<xsd:element name="CTRY_SOFF" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:44, Table:HRHMTB_ZVKBUR, Field:LANG_SOFF, M/O:, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:44, Table:HRHMTB_ZVKBUR, Field:LANG_SOFF, M/O:, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="LANG_SOFF" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:45, Table:HRHMTB_ZVKBUR, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:45, Table:HRHMTB_ZVKBUR, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZVKGRP">
<xsd:sequence>
- <!-- SEQ:48, Table:HRHMTB_ZVKGRP, Field:ZVKGRP, M/O:M, Type:VARC, Size:255, Description:Sales Group -->
+ <!-- SEQ:48, Table:HRHMTB_ZVKGRP, Field:ZVKGRP, M/O:M, Type:VARC, Size:3, Description:Sales Group -->
<xsd:element name="ZVKGRP" type="xsd:string"/>
- <!-- SEQ:49, Table:HRHMTB_ZVKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:49, Table:HRHMTB_ZVKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZVKORG">
<xsd:sequence>
- <!-- SEQ:34, Table:HRHMTB_ZVKORG, Field:ZVKORG, M/O:M, Type:VARC, Size:255, Description:Sales Organization -->
+ <!-- SEQ:34, Table:HRHMTB_ZVKORG, Field:ZVKORG, M/O:M, Type:VARC, Size:4, Description:Sales Organization -->
<xsd:element name="ZVKORG" type="xsd:string"/>
- <!-- SEQ:35, Table:HRHMTB_ZVKORG, Field:ZZWAERS, M/O:, Type:VARC, Size:255, Description:Statistics currency -->
+ <!-- SEQ:35, Table:HRHMTB_ZVKORG, Field:ZZWAERS, M/O:, Type:VARC, Size:5, Description:Statistics currency -->
<xsd:element name="ZZWAERS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:36, Table:HRHMTB_ZVKORG, Field:ZZVKOKL, M/O:, Type:VARC, Size:255, Description:Sales organization calendar -->
+ <!-- SEQ:36, Table:HRHMTB_ZVKORG, Field:ZZVKOKL, M/O:, Type:VARC, Size:2, Description:Sales organization calendar -->
<xsd:element name="ZZVKOKL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:37, Table:HRHMTB_ZVKORG, Field:ZZKUNNR, M/O:, Type:VARC, Size:255, Description:Customer number for intercompany billing -->
+ <!-- SEQ:37, Table:HRHMTB_ZVKORG, Field:ZZKUNNR, M/O:, Type:VARC, Size:10, Description:Customer number for intercompany billing -->
<xsd:element name="ZZKUNNR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:38, Table:HRHMTB_ZVKORG, Field:ZZBOAVO, M/O:, Type:VARC, Size:255, Description:Rebate processing active in the sales organization -->
+ <!-- SEQ:38, Table:HRHMTB_ZVKORG, Field:ZZBOAVO, M/O:, Type:VARC, Size:1, Description:Rebate processing active in the sales organization -->
<xsd:element name="ZZBOAVO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:39, Table:HRHMTB_ZVKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:39, Table:HRHMTB_ZVKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZVSTEL">
<xsd:sequence>
- <!-- SEQ:60, Table:HRHMTB_ZVSTEL, Field:ZVSTEL, M/O:M, Type:VARC, Size:255, Description:Shipping Point -->
+ <!-- SEQ:60, Table:HRHMTB_ZVSTEL, Field:ZVSTEL, M/O:M, Type:VARC, Size:4, Description:Shipping Point -->
<xsd:element name="ZVSTEL" type="xsd:string"/>
- <!-- SEQ:61, Table:HRHMTB_ZVSTEL, Field:AZON_VSTE, M/O:, Type:VARC, Size:255, Description:Departure country -->
+ <!-- SEQ:61, Table:HRHMTB_ZVSTEL, Field:AZON_VSTE, M/O:, Type:VARC, Size:3, Description:Departure country -->
<xsd:element name="AZON_VSTE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:62, Table:HRHMTB_ZVSTEL, Field:ALAN_VSTE, M/O:, Type:VARC, Size:255, Description:Departure zone -->
+ <!-- SEQ:62, Table:HRHMTB_ZVSTEL, Field:ALAN_VSTE, M/O:, Type:VARC, Size:10, Description:Departure zone -->
<xsd:element name="ALAN_VSTE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:63, Table:HRHMTB_ZVSTEL, Field:ZZFABKL, M/O:, Type:VARC, Size:255, Description:Factory calendar key -->
+ <!-- SEQ:63, Table:HRHMTB_ZVSTEL, Field:ZZFABKL, M/O:, Type:VARC, Size:2, Description:Factory calendar key -->
<xsd:element name="ZZFABKL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:64, Table:HRHMTB_ZVSTEL, Field:ZZLAZBS, M/O:, Type:VARC, Size:255, Description:Determine loading time -->
+ <!-- SEQ:64, Table:HRHMTB_ZVSTEL, Field:ZZLAZBS, M/O:, Type:VARC, Size:1, Description:Determine loading time -->
<xsd:element name="ZZLAZBS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:65, Table:HRHMTB_ZVSTEL, Field:ZZRIZBS, M/O:, Type:VARC, Size:255, Description:Determine pick/pack time -->
+ <!-- SEQ:65, Table:HRHMTB_ZVSTEL, Field:ZZRIZBS, M/O:, Type:VARC, Size:1, Description:Determine pick/pack time -->
<xsd:element name="ZZRIZBS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:HRHMTB_ZVSTEL, Field:ZZLAZZT, M/O:, Type:VARC, Size:255, Description:Default loading time -->
+ <!-- SEQ:66, Table:HRHMTB_ZVSTEL, Field:ZZLAZZT, M/O:, Type:VARC, Size:5,2, Description:Default loading time -->
<xsd:element name="ZZLAZZT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:HRHMTB_ZVSTEL, Field:ZZRIZZT, M/O:, Type:VARC, Size:255, Description:Default pick/pack time -->
+ <!-- SEQ:67, Table:HRHMTB_ZVSTEL, Field:ZZRIZZT, M/O:, Type:VARC, Size:5,2, Description:Default pick/pack time -->
<xsd:element name="ZZRIZZT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:68, Table:HRHMTB_ZVSTEL, Field:CTRY_SHPT, M/O:, Type:VARC, Size:255, Description:Country Key -->
+ <!-- SEQ:68, Table:HRHMTB_ZVSTEL, Field:CTRY_SHPT, M/O:, Type:VARC, Size:3, Description:Country Key -->
<xsd:element name="CTRY_SHPT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:HRHMTB_ZVSTEL, Field:LANG_SHPT, M/O:, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:69, Table:HRHMTB_ZVSTEL, Field:LANG_SHPT, M/O:, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="LANG_SHPT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:70, Table:HRHMTB_ZVSTEL, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:70, Table:HRHMTB_ZVSTEL, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZVTWEG">
<xsd:sequence>
- <!-- SEQ:52, Table:HRHMTB_ZVTWEG, Field:ZVTWEG, M/O:M, Type:VARC, Size:255, Description:Distribution Channel -->
+ <!-- SEQ:52, Table:HRHMTB_ZVTWEG, Field:ZVTWEG, M/O:M, Type:VARC, Size:2, Description:Distribution Channel -->
<xsd:element name="ZVTWEG" type="xsd:string"/>
- <!-- SEQ:53, Table:HRHMTB_ZVTWEG, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:53, Table:HRHMTB_ZVTWEG, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
<xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HRHMTB_ZWERKS">
<xsd:sequence>
- <!-- SEQ:12, Table:HRHMTB_ZWERKS, Field:ZWERKS, M/O:, Type:VARC, Size:255, Description:Plant -->
+ <!-- SEQ:12, Table:HRHMTB_ZWERKS, Field:ZWERKS, M/O:, Type:VARC, Size:4, Description:Plant -->
<xsd:element name="ZWERKS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:HRHMTB_ZWERKS, Field:ZZNAME1, M/O:, Type:VARC, Size:255, Description:Name -->
+ <!-- SEQ:13, Table:HRHMTB_ZWERKS, Field:ZZNAME1, M/O:, Type:VARC, Size:60, Description:Name -->
<xsd:element name="ZZNAME1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:HRHMTB_ZWERKS, Field:ZZNAME2, M/O:, Type:VARC, Size:255, Description:Name2 -->
+ <!-- SEQ:14, Table:HRHMTB_ZWERKS, Field:ZZNAME2, M/O:, Type:VARC, Size:60, Description:Name2 -->
<xsd:element name="ZZNAME2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:HRHMTB_ZWERKS, Field:ZZFABKL, M/O:, Type:VARC, Size:255, Description:Factory Calendar -->
+ <!-- SEQ:15, Table:HRHMTB_ZWERKS, Field:ZZFABKL, M/O:, Type:VARC, Size:2, Description:Factory Calendar -->
<xsd:element name="ZZFABKL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:HRHMTB_ZWERKS, Field:CTRY_PLNT, M/O:, Type:VARC, Size:255, Description:Country -->
+ <!-- SEQ:16, Table:HRHMTB_ZWERKS, Field:CTRY_PLNT, M/O:, Type:VARC, Size:3, Description:Country -->
<xsd:element name="CTRY_PLNT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:HRHMTB_ZWERKS, Field:LANG_PLNT, M/O:, Type:VARC, Size:255, Description:Language Key -->
+ <!-- SEQ:17, Table:HRHMTB_ZWERKS, Field:LANG_PLNT, M/O:, Type:VARC, Size:1, Description:Language Key -->
<xsd:element name="LANG_PLNT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:HRHMTB_ZWERKS, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion -->
+ <!-- SEQ:18, Table:HRHMTB_ZWERKS, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion -->
<xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl
index decf6894..90302d44 100644
--- a/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl
@@ -13,173 +13,173 @@
</xsd:complexType>
<xsd:complexType name="CMCTB_PROJ_MAST">
<xsd:sequence>
- <!-- SEQ:1, Table:CMCTB_PROJ_MAST, Field:PROJ_NO, M/O:M, Type:VARC, Size:255, Description:프로젝트번호 -->
+ <!-- SEQ:1, Table:CMCTB_PROJ_MAST, Field:PROJ_NO, M/O:M, Type:VARC, Size:24, Description:프로젝트번호 -->
<xsd:element name="PROJ_NO" type="xsd:string"/>
- <!-- SEQ:2, Table:CMCTB_PROJ_MAST, Field:PROJ_DSC, M/O:, Type:VARC, Size:255, Description:프로젝트 설명 -->
+ <!-- SEQ:2, Table:CMCTB_PROJ_MAST, Field:PROJ_DSC, M/O:, Type:VARC, Size:120, Description:프로젝트 설명 -->
<xsd:element name="PROJ_DSC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:CMCTB_PROJ_MAST, Field:PROJ_GB, M/O:, Type:VARC, Size:255, Description:프로젝트구분 -->
+ <!-- SEQ:7, Table:CMCTB_PROJ_MAST, Field:PROJ_GB, M/O:, Type:VARC, Size:2, Description:프로젝트구분 -->
<xsd:element name="PROJ_GB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:CMCTB_PROJ_MAST, Field:PROJ_DTL_TP, M/O:, Type:VARC, Size:255, Description:프로젝트 세부타입 -->
+ <!-- SEQ:6, Table:CMCTB_PROJ_MAST, Field:PROJ_DTL_TP, M/O:, Type:VARC, Size:2, Description:프로젝트 세부타입 -->
<xsd:element name="PROJ_DTL_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:3, Table:CMCTB_PROJ_MAST, Field:PROJ_PROF, M/O:, Type:VARC, Size:255, Description:프로젝트 프로파일 -->
+ <!-- SEQ:3, Table:CMCTB_PROJ_MAST, Field:PROJ_PROF, M/O:, Type:VARC, Size:7, Description:프로젝트 프로파일 -->
<xsd:element name="PROJ_PROF" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:CMCTB_PROJ_MAST, Field:PROJ_WBS_TP, M/O:, Type:VARC, Size:255, Description:프로젝트 WBS타입 -->
+ <!-- SEQ:17, Table:CMCTB_PROJ_MAST, Field:PROJ_WBS_TP, M/O:, Type:VARC, Size:2, Description:프로젝트 WBS타입 -->
<xsd:element name="PROJ_WBS_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:20, Table:CMCTB_PROJ_MAST, Field:INQY_NO, M/O:, Type:VARC, Size:255, Description:안건번호 -->
+ <!-- SEQ:20, Table:CMCTB_PROJ_MAST, Field:INQY_NO, M/O:, Type:VARC, Size:30, Description:안건번호 -->
<xsd:element name="INQY_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:21, Table:CMCTB_PROJ_MAST, Field:INQY_SEQ, M/O:, Type:VARC, Size:255, Description:안건순번 -->
+ <!-- SEQ:21, Table:CMCTB_PROJ_MAST, Field:INQY_SEQ, M/O:, Type:VARC, Size:2, Description:안건순번 -->
<xsd:element name="INQY_SEQ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:CMCTB_PROJ_MAST, Field:NTTP, M/O:, Type:VARC, Size:255, Description:국적 -->
+ <!-- SEQ:22, Table:CMCTB_PROJ_MAST, Field:NTTP, M/O:, Type:VARC, Size:3, Description:국적 -->
<xsd:element name="NTTP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:23, Table:CMCTB_PROJ_MAST, Field:CHN_PROJ_TP, M/O:, Type:VARC, Size:255, Description:(중국)프로젝트타입 -->
+ <!-- SEQ:23, Table:CMCTB_PROJ_MAST, Field:CHN_PROJ_TP, M/O:, Type:VARC, Size:1, Description:(중국)프로젝트타입 -->
<xsd:element name="CHN_PROJ_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:CMCTB_PROJ_MAST, Field:RLTD_PROJ, M/O:, Type:VARC, Size:255, Description:연관프로젝트 -->
+ <!-- SEQ:8, Table:CMCTB_PROJ_MAST, Field:RLTD_PROJ, M/O:, Type:VARC, Size:24, Description:연관프로젝트 -->
<xsd:element name="RLTD_PROJ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:24, Table:CMCTB_PROJ_MAST, Field:DIGT_PDT_GRP, M/O:, Type:VARC, Size:255, Description:전기전자 제품군 -->
+ <!-- SEQ:24, Table:CMCTB_PROJ_MAST, Field:DIGT_PDT_GRP, M/O:, Type:VARC, Size:1, Description:전기전자 제품군 -->
<xsd:element name="DIGT_PDT_GRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:25, Table:CMCTB_PROJ_MAST, Field:WP_PROJ_TP, M/O:, Type:VARC, Size:255, Description:(풍력)프로젝트타입 -->
+ <!-- SEQ:25, Table:CMCTB_PROJ_MAST, Field:WP_PROJ_TP, M/O:, Type:VARC, Size:1, Description:(풍력)프로젝트타입 -->
<xsd:element name="WP_PROJ_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:26, Table:CMCTB_PROJ_MAST, Field:TOT_CNRT_CNT, M/O:, Type:VARC, Size:255, Description:전체 계약 대수 -->
+ <!-- SEQ:26, Table:CMCTB_PROJ_MAST, Field:TOT_CNRT_CNT, M/O:, Type:VARC, Size:3, Description:전체 계약 대수 -->
<xsd:element name="TOT_CNRT_CNT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:27, Table:CMCTB_PROJ_MAST, Field:PROJ_ETC_TP, M/O:, Type:VARC, Size:255, Description:프로젝트 기타타입 -->
+ <!-- SEQ:27, Table:CMCTB_PROJ_MAST, Field:PROJ_ETC_TP, M/O:, Type:VARC, Size:1, Description:프로젝트 기타타입 -->
<xsd:element name="PROJ_ETC_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:28, Table:CMCTB_PROJ_MAST, Field:IF_STAT, M/O:, Type:VARC, Size:255, Description:인터페이스 진행단계 -->
+ <!-- SEQ:28, Table:CMCTB_PROJ_MAST, Field:IF_STAT, M/O:, Type:VARC, Size:1, Description:인터페이스 진행단계 -->
<xsd:element name="IF_STAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:CMCTB_PROJ_MAST, Field:SRC_SYS_ID, M/O:, Type:VARC, Size:255, Description:Source System -->
+ <!-- SEQ:29, Table:CMCTB_PROJ_MAST, Field:SRC_SYS_ID, M/O:, Type:VARC, Size:1, Description:Source System -->
<xsd:element name="SRC_SYS_ID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:30, Table:CMCTB_PROJ_MAST, Field:PRGS_STAT, M/O:, Type:VARC, Size:255, Description:진행상태 -->
+ <!-- SEQ:30, Table:CMCTB_PROJ_MAST, Field:PRGS_STAT, M/O:, Type:VARC, Size:1, Description:진행상태 -->
<xsd:element name="PRGS_STAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:CMCTB_PROJ_MAST, Field:DEL_YN, M/O:, Type:VARC, Size:255, Description:삭제 여부 -->
+ <!-- SEQ:9, Table:CMCTB_PROJ_MAST, Field:DEL_YN, M/O:, Type:VARC, Size:1, Description:삭제 여부 -->
<xsd:element name="DEL_YN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:31, Table:CMCTB_PROJ_MAST, Field:OWN_1, M/O:, Type:VARC, Size:255, Description:선주1 -->
+ <!-- SEQ:31, Table:CMCTB_PROJ_MAST, Field:OWN_1, M/O:, Type:VARC, Size:10, Description:선주1 -->
<xsd:element name="OWN_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:32, Table:CMCTB_PROJ_MAST, Field:OWN_NM, M/O:, Type:VARC, Size:255, Description:선주명 -->
+ <!-- SEQ:32, Table:CMCTB_PROJ_MAST, Field:OWN_NM, M/O:, Type:VARC, Size:40, Description:선주명 -->
<xsd:element name="OWN_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:CMCTB_PROJ_MAST, Field:OWN_AB, M/O:, Type:VARC, Size:255, Description:선주약어 -->
+ <!-- SEQ:33, Table:CMCTB_PROJ_MAST, Field:OWN_AB, M/O:, Type:VARC, Size:60, Description:선주약어 -->
<xsd:element name="OWN_AB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:34, Table:CMCTB_PROJ_MAST, Field:DL_CSTM_CD, M/O:, Type:VARC, Size:255, Description:인도고객 ID -->
+ <!-- SEQ:34, Table:CMCTB_PROJ_MAST, Field:DL_CSTM_CD, M/O:, Type:VARC, Size:10, Description:인도고객 ID -->
<xsd:element name="DL_CSTM_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:35, Table:CMCTB_PROJ_MAST, Field:PDT_LVL_4, M/O:, Type:VARC, Size:255, Description:제품 Level 4 -->
+ <!-- SEQ:35, Table:CMCTB_PROJ_MAST, Field:PDT_LVL_4, M/O:, Type:VARC, Size:14, Description:제품 Level 4 -->
<xsd:element name="PDT_LVL_4" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:36, Table:CMCTB_PROJ_MAST, Field:CNRT_DT, M/O:, Type:VARC, Size:255, Description:계약일자 -->
+ <!-- SEQ:36, Table:CMCTB_PROJ_MAST, Field:CNRT_DT, M/O:, Type:VARC, Size:8, Description:계약일자 -->
<xsd:element name="CNRT_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:39, Table:CMCTB_PROJ_MAST, Field:STDT, M/O:, Type:VARC, Size:255, Description:시작일자 -->
+ <!-- SEQ:39, Table:CMCTB_PROJ_MAST, Field:STDT, M/O:, Type:VARC, Size:8, Description:시작일자 -->
<xsd:element name="STDT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:37, Table:CMCTB_PROJ_MAST, Field:CNRT_DL_DT, M/O:, Type:VARC, Size:255, Description:계약인도일자 -->
+ <!-- SEQ:37, Table:CMCTB_PROJ_MAST, Field:CNRT_DL_DT, M/O:, Type:VARC, Size:8, Description:계약인도일자 -->
<xsd:element name="CNRT_DL_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:38, Table:CMCTB_PROJ_MAST, Field:AS_GRNT_PRD, M/O:, Type:VARC, Size:255, Description:A/S 보증기간 -->
+ <!-- SEQ:38, Table:CMCTB_PROJ_MAST, Field:AS_GRNT_PRD, M/O:, Type:NUMB, Size:2, Description:A/S 보증기간 -->
<xsd:element name="AS_GRNT_PRD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:40, Table:CMCTB_PROJ_MAST, Field:RL_DL_DT, M/O:, Type:VARC, Size:255, Description:실인도일자 -->
+ <!-- SEQ:40, Table:CMCTB_PROJ_MAST, Field:RL_DL_DT, M/O:, Type:VARC, Size:8, Description:실인도일자 -->
<xsd:element name="RL_DL_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:41, Table:CMCTB_PROJ_MAST, Field:SA_DT, M/O:, Type:VARC, Size:255, Description:Sail Away Date -->
+ <!-- SEQ:41, Table:CMCTB_PROJ_MAST, Field:SA_DT, M/O:, Type:VARC, Size:8, Description:Sail Away Date -->
<xsd:element name="SA_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:42, Table:CMCTB_PROJ_MAST, Field:SERS_NO, M/O:, Type:VARC, Size:255, Description:시리즈첫공사번호 -->
+ <!-- SEQ:42, Table:CMCTB_PROJ_MAST, Field:SERS_NO, M/O:, Type:VARC, Size:24, Description:시리즈첫공사번호 -->
<xsd:element name="SERS_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:43, Table:CMCTB_PROJ_MAST, Field:REF_NO, M/O:, Type:VARC, Size:255, Description:시리즈번호 -->
+ <!-- SEQ:43, Table:CMCTB_PROJ_MAST, Field:REF_NO, M/O:, Type:VARC, Size:5, Description:시리즈번호 -->
<xsd:element name="REF_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:44, Table:CMCTB_PROJ_MAST, Field:GOV, M/O:, Type:VARC, Size:255, Description:관청명 -->
+ <!-- SEQ:44, Table:CMCTB_PROJ_MAST, Field:GOV, M/O:, Type:VARC, Size:60, Description:관청명 -->
<xsd:element name="GOV" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:45, Table:CMCTB_PROJ_MAST, Field:CLS_1, M/O:, Type:VARC, Size:255, Description:선급1 -->
+ <!-- SEQ:45, Table:CMCTB_PROJ_MAST, Field:CLS_1, M/O:, Type:VARC, Size:20, Description:선급1 -->
<xsd:element name="CLS_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:46, Table:CMCTB_PROJ_MAST, Field:DL_BF_PROJ_NM, M/O:, Type:VARC, Size:255, Description:인도전선명 -->
+ <!-- SEQ:46, Table:CMCTB_PROJ_MAST, Field:DL_BF_PROJ_NM, M/O:, Type:VARC, Size:120, Description:인도전선명 -->
<xsd:element name="DL_BF_PROJ_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:47, Table:CMCTB_PROJ_MAST, Field:IMO_NO, M/O:, Type:VARC, Size:255, Description:IMO 번호 -->
+ <!-- SEQ:47, Table:CMCTB_PROJ_MAST, Field:IMO_NO, M/O:, Type:VARC, Size:8, Description:IMO 번호 -->
<xsd:element name="IMO_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:CMCTB_PROJ_MAST, Field:DIST_PATH, M/O:, Type:VARC, Size:255, Description:유통경로 -->
+ <!-- SEQ:16, Table:CMCTB_PROJ_MAST, Field:DIST_PATH, M/O:, Type:VARC, Size:2, Description:유통경로 -->
<xsd:element name="DIST_PATH" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:CMCTB_PROJ_MAST, Field:SALE_ORG_CD, M/O:, Type:VARC, Size:255, Description:영업조직 -->
+ <!-- SEQ:15, Table:CMCTB_PROJ_MAST, Field:SALE_ORG_CD, M/O:, Type:VARC, Size:4, Description:영업조직 -->
<xsd:element name="SALE_ORG_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:CMCTB_PROJ_MAST, Field:SALE_GRP, M/O:, Type:VARC, Size:255, Description:영업그룹 -->
+ <!-- SEQ:5, Table:CMCTB_PROJ_MAST, Field:SALE_GRP, M/O:, Type:VARC, Size:3, Description:영업그룹 -->
<xsd:element name="SALE_GRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:4, Table:CMCTB_PROJ_MAST, Field:BIZLOC_CD, M/O:, Type:VARC, Size:255, Description:사업장코드 -->
+ <!-- SEQ:4, Table:CMCTB_PROJ_MAST, Field:BIZLOC_CD, M/O:, Type:VARC, Size:4, Description:사업장코드 -->
<xsd:element name="BIZLOC_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:CMCTB_PROJ_MAST, Field:MNG_ACOT_DMN, M/O:, Type:VARC, Size:255, Description:관리회계영역 -->
+ <!-- SEQ:14, Table:CMCTB_PROJ_MAST, Field:MNG_ACOT_DMN, M/O:, Type:VARC, Size:4, Description:관리회계영역 -->
<xsd:element name="MNG_ACOT_DMN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:CMCTB_PROJ_MAST, Field:CO_CD, M/O:, Type:VARC, Size:255, Description:회사코드 -->
+ <!-- SEQ:12, Table:CMCTB_PROJ_MAST, Field:CO_CD, M/O:, Type:VARC, Size:4, Description:회사코드 -->
<xsd:element name="CO_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:CMCTB_PROJ_MAST, Field:BIZ_DMN, M/O:, Type:VARC, Size:255, Description:사업영역 -->
+ <!-- SEQ:13, Table:CMCTB_PROJ_MAST, Field:BIZ_DMN, M/O:, Type:VARC, Size:4, Description:사업영역 -->
<xsd:element name="BIZ_DMN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:CMCTB_PROJ_MAST, Field:PLNT_CD, M/O:, Type:VARC, Size:255, Description:플랜트 코드 -->
+ <!-- SEQ:10, Table:CMCTB_PROJ_MAST, Field:PLNT_CD, M/O:, Type:VARC, Size:4, Description:플랜트 코드 -->
<xsd:element name="PLNT_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:CMCTB_PROJ_MAST, Field:PRCTR, M/O:, Type:VARC, Size:255, Description:손익센터 -->
+ <!-- SEQ:11, Table:CMCTB_PROJ_MAST, Field:PRCTR, M/O:, Type:VARC, Size:10, Description:손익센터 -->
<xsd:element name="PRCTR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:48, Table:CMCTB_PROJ_MAST, Field:CNRT_CNTN_YN, M/O:, Type:VARC, Size:255, Description:계약존속여부 -->
+ <!-- SEQ:48, Table:CMCTB_PROJ_MAST, Field:CNRT_CNTN_YN, M/O:, Type:VARC, Size:1, Description:계약존속여부 -->
<xsd:element name="CNRT_CNTN_YN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:49, Table:CMCTB_PROJ_MAST, Field:CNRT_RESV_YN, M/O:, Type:VARC, Size:255, Description:계약유보여부 -->
+ <!-- SEQ:49, Table:CMCTB_PROJ_MAST, Field:CNRT_RESV_YN, M/O:, Type:VARC, Size:1, Description:계약유보여부 -->
<xsd:element name="CNRT_RESV_YN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:50, Table:CMCTB_PROJ_MAST, Field:PROJ_PRGS_YN, M/O:, Type:VARC, Size:255, Description:공사진행여부 -->
+ <!-- SEQ:50, Table:CMCTB_PROJ_MAST, Field:PROJ_PRGS_YN, M/O:, Type:VARC, Size:1, Description:공사진행여부 -->
<xsd:element name="PROJ_PRGS_YN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:51, Table:CMCTB_PROJ_MAST, Field:SKND, M/O:, Type:VARC, Size:255, Description:선종 -->
+ <!-- SEQ:51, Table:CMCTB_PROJ_MAST, Field:SKND, M/O:, Type:VARC, Size:3, Description:선종 -->
<xsd:element name="SKND" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:52, Table:CMCTB_PROJ_MAST, Field:SHTYPE, M/O:, Type:VARC, Size:255, Description:선형 -->
+ <!-- SEQ:52, Table:CMCTB_PROJ_MAST, Field:SHTYPE, M/O:, Type:VARC, Size:8, Description:선형 -->
<xsd:element name="SHTYPE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:53, Table:CMCTB_PROJ_MAST, Field:SYS_ACOT_CLSD_DT, M/O:, Type:VARC, Size:255, Description:시스템회계마감일자 -->
+ <!-- SEQ:53, Table:CMCTB_PROJ_MAST, Field:SYS_ACOT_CLSD_DT, M/O:, Type:VARC, Size:8, Description:시스템회계마감일자 -->
<xsd:element name="SYS_ACOT_CLSD_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:54, Table:CMCTB_PROJ_MAST, Field:SHTYPE_UOM, M/O:, Type:VARC, Size:255, Description:선형단위 -->
+ <!-- SEQ:54, Table:CMCTB_PROJ_MAST, Field:SHTYPE_UOM, M/O:, Type:VARC, Size:5, Description:선형단위 -->
<xsd:element name="SHTYPE_UOM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:55, Table:CMCTB_PROJ_MAST, Field:PROJ_SCP, M/O:, Type:VARC, Size:255, Description:프로젝트범위 -->
+ <!-- SEQ:55, Table:CMCTB_PROJ_MAST, Field:PROJ_SCP, M/O:, Type:VARC, Size:5, Description:프로젝트범위 -->
<xsd:element name="PROJ_SCP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:56, Table:CMCTB_PROJ_MAST, Field:MSHIP_NO, M/O:, Type:VARC, Size:255, Description:기준호선 -->
+ <!-- SEQ:56, Table:CMCTB_PROJ_MAST, Field:MSHIP_NO, M/O:, Type:VARC, Size:24, Description:기준호선 -->
<xsd:element name="MSHIP_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:CMCTB_PROJ_MAST, Field:LOA, M/O:, Type:VARC, Size:255, Description:L.O.A -->
+ <!-- SEQ:57, Table:CMCTB_PROJ_MAST, Field:LOA, M/O:, Type:NUMB, Size:10,1, Description:L.O.A -->
<xsd:element name="LOA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:58, Table:CMCTB_PROJ_MAST, Field:MN_ENGN_TP_CD, M/O:, Type:VARC, Size:255, Description:Main engine type code -->
+ <!-- SEQ:58, Table:CMCTB_PROJ_MAST, Field:MN_ENGN_TP_CD, M/O:, Type:VARC, Size:30, Description:Main engine type code -->
<xsd:element name="MN_ENGN_TP_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:59, Table:CMCTB_PROJ_MAST, Field:SPD, M/O:, Type:VARC, Size:255, Description:Speed -->
+ <!-- SEQ:59, Table:CMCTB_PROJ_MAST, Field:SPD, M/O:, Type:NUMB, Size:15,3, Description:Speed -->
<xsd:element name="SPD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:60, Table:CMCTB_PROJ_MAST, Field:GT, M/O:, Type:VARC, Size:255, Description:G/T -->
+ <!-- SEQ:60, Table:CMCTB_PROJ_MAST, Field:GT, M/O:, Type:NUMB, Size:15,3, Description:G/T -->
<xsd:element name="GT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:61, Table:CMCTB_PROJ_MAST, Field:BP_DL_DT, M/O:, Type:VARC, Size:255, Description:선표인도일자 -->
+ <!-- SEQ:61, Table:CMCTB_PROJ_MAST, Field:BP_DL_DT, M/O:, Type:VARC, Size:8, Description:선표인도일자 -->
<xsd:element name="BP_DL_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:62, Table:CMCTB_PROJ_MAST, Field:SHTYPE_GRP, M/O:, Type:VARC, Size:255, Description:선형군 -->
+ <!-- SEQ:62, Table:CMCTB_PROJ_MAST, Field:SHTYPE_GRP, M/O:, Type:VARC, Size:4, Description:선형군 -->
<xsd:element name="SHTYPE_GRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:63, Table:CMCTB_PROJ_MAST, Field:DOCK_CD, M/O:, Type:VARC, Size:255, Description:도크 -->
+ <!-- SEQ:63, Table:CMCTB_PROJ_MAST, Field:DOCK_CD, M/O:, Type:VARC, Size:3, Description:도크 -->
<xsd:element name="DOCK_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:64, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_EMPNO, M/O:, Type:VARC, Size:255, Description:프로젝트 생성요청자 -->
+ <!-- SEQ:64, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_EMPNO, M/O:, Type:VARC, Size:13, Description:프로젝트 생성요청자 -->
<xsd:element name="PROJ_CRTE_REQ_EMPNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:65, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_DT, M/O:, Type:VARC, Size:255, Description:프로젝트 생성요청일 -->
+ <!-- SEQ:65, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_DT, M/O:, Type:VARC, Size:8, Description:프로젝트 생성요청일 -->
<xsd:element name="PROJ_CRTE_REQ_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:CMCTB_PROJ_MAST, Field:SERS_YN, M/O:, Type:VARC, Size:255, Description:시리즈여부 -->
+ <!-- SEQ:66, Table:CMCTB_PROJ_MAST, Field:SERS_YN, M/O:, Type:VARC, Size:1, Description:시리즈여부 -->
<xsd:element name="SERS_YN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:CMCTB_PROJ_MAST, Field:IO_GB, M/O:, Type:VARC, Size:255, Description:사내외 구분 -->
+ <!-- SEQ:67, Table:CMCTB_PROJ_MAST, Field:IO_GB, M/O:, Type:VARC, Size:1, Description:사내외 구분 -->
<xsd:element name="IO_GB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:68, Table:CMCTB_PROJ_MAST, Field:CSTM_PO_NO, M/O:, Type:VARC, Size:255, Description:고객발주번호 -->
+ <!-- SEQ:68, Table:CMCTB_PROJ_MAST, Field:CSTM_PO_NO, M/O:, Type:VARC, Size:35, Description:고객발주번호 -->
<xsd:element name="CSTM_PO_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:CMCTB_PROJ_MAST, Field:GENT_CNT, M/O:, Type:VARC, Size:255, Description:세대수/시리즈 -->
+ <!-- SEQ:69, Table:CMCTB_PROJ_MAST, Field:GENT_CNT, M/O:, Type:VARC, Size:5, Description:세대수/시리즈 -->
<xsd:element name="GENT_CNT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:70, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_PRD, M/O:, Type:VARC, Size:255, Description:주문주 보증기간 -->
+ <!-- SEQ:70, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_PRD, M/O:, Type:VARC, Size:2, Description:주문주 보증기간 -->
<xsd:element name="ORDR_GRNT_PRD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:71, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_FN_DT, M/O:, Type:VARC, Size:255, Description:주문주 보증종료일 -->
+ <!-- SEQ:71, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_FN_DT, M/O:, Type:VARC, Size:8, Description:주문주 보증종료일 -->
<xsd:element name="ORDR_GRNT_FN_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:72, Table:CMCTB_PROJ_MAST, Field:FIN_GRNT_FN_DT, M/O:, Type:VARC, Size:255, Description:최종수요자 보증종료일 -->
+ <!-- SEQ:72, Table:CMCTB_PROJ_MAST, Field:FIN_GRNT_FN_DT, M/O:, Type:VARC, Size:8, Description:최종수요자 보증종료일 -->
<xsd:element name="FIN_GRNT_FN_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:73, Table:CMCTB_PROJ_MAST, Field:DSN_CHRGR, M/O:, Type:VARC, Size:255, Description:설계담당자 -->
+ <!-- SEQ:73, Table:CMCTB_PROJ_MAST, Field:DSN_CHRGR, M/O:, Type:VARC, Size:13, Description:설계담당자 -->
<xsd:element name="DSN_CHRGR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:CMCTB_PROJ_MAST, Field:TYPE, M/O:, Type:VARC, Size:255, Description:프로젝트 Top/Hull -->
+ <!-- SEQ:18, Table:CMCTB_PROJ_MAST, Field:TYPE, M/O:, Type:VARC, Size:10, Description:프로젝트 Top/Hull -->
<xsd:element name="TYPE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:19, Table:CMCTB_PROJ_MAST, Field:PRO_PROJ_NO, M/O:, Type:VARC, Size:255, Description:프로포절 프로젝트 -->
+ <!-- SEQ:19, Table:CMCTB_PROJ_MAST, Field:PRO_PROJ_NO, M/O:, Type:VARC, Size:24, Description:프로포절 프로젝트 -->
<xsd:element name="PRO_PROJ_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:81, Table:CMCTB_PROJ_MAST, Field:BIZCLS, M/O:, Type:VARC, Size:255, Description:사업부 -->
+ <!-- SEQ:81, Table:CMCTB_PROJ_MAST, Field:BIZCLS, M/O:, Type:VARC, Size:10, Description:사업부 -->
<xsd:element name="BIZCLS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:74, Table:CMCTB_PROJ_MAST, Field:CLS_2, M/O:, Type:VARC, Size:255, Description:선급2 -->
+ <!-- SEQ:74, Table:CMCTB_PROJ_MAST, Field:CLS_2, M/O:, Type:VARC, Size:20, Description:선급2 -->
<xsd:element name="CLS_2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:75, Table:CMCTB_PROJ_MAST, Field:SHTYPE_CD, M/O:, Type:VARC, Size:255, Description:선형코드 -->
+ <!-- SEQ:75, Table:CMCTB_PROJ_MAST, Field:SHTYPE_CD, M/O:, Type:VARC, Size:6, Description:선형코드 -->
<xsd:element name="SHTYPE_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:76, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_PLN_DT, M/O:, Type:VARC, Size:255, Description:모프로젝트 인도계획일 -->
+ <!-- SEQ:76, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_PLN_DT, M/O:, Type:VARC, Size:8, Description:모프로젝트 인도계획일 -->
<xsd:element name="PROJ_DL_PLN_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:77, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_RT_DT, M/O:, Type:VARC, Size:255, Description:모프로젝트 인도실적일 -->
+ <!-- SEQ:77, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_RT_DT, M/O:, Type:VARC, Size:8, Description:모프로젝트 인도실적일 -->
<xsd:element name="PROJ_DL_RT_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:78, Table:CMCTB_PROJ_MAST, Field:TOT_AREA, M/O:, Type:VARC, Size:255, Description:전체면적 -->
+ <!-- SEQ:78, Table:CMCTB_PROJ_MAST, Field:TOT_AREA, M/O:, Type:NUMB, Size:9,3, Description:전체면적 -->
<xsd:element name="TOT_AREA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:79, Table:CMCTB_PROJ_MAST, Field:EXMPT_AREA, M/O:, Type:VARC, Size:255, Description:면세면적 -->
+ <!-- SEQ:79, Table:CMCTB_PROJ_MAST, Field:EXMPT_AREA, M/O:, Type:NUMB, Size:9,3, Description:면세면적 -->
<xsd:element name="EXMPT_AREA" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:80, Table:CMCTB_PROJ_MAST, Field:EXMPT_RAT, M/O:, Type:VARC, Size:255, Description:면세율 -->
+ <!-- SEQ:80, Table:CMCTB_PROJ_MAST, Field:EXMPT_RAT, M/O:, Type:NUMB, Size:6,2, Description:면세율 -->
<xsd:element name="EXMPT_RAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:82, Table:CMCTB_PROJ_MAST, Field:QM_CLS, M/O:, Type:VARC, Size:255, Description:품질사업부 -->
+ <!-- SEQ:82, Table:CMCTB_PROJ_MAST, Field:QM_CLS, M/O:, Type:VARC, Size:10, Description:품질사업부 -->
<xsd:element name="QM_CLS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:83, Table:CMCTB_PROJ_MAST, Field:NEW_MC_YN, M/O:, Type:VARC, Size:255, Description:MC YN -->
+ <!-- SEQ:83, Table:CMCTB_PROJ_MAST, Field:NEW_MC_YN, M/O:, Type:VARC, Size:10, Description:MC YN -->
<xsd:element name="NEW_MC_YN" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:84, Table:CMCTB_PROJ_MAST, Field:GRNT_STDT, M/O:, Type:VARC, Size:255, Description:Project Warranty Start Date -->
+ <!-- SEQ:84, Table:CMCTB_PROJ_MAST, Field:GRNT_STDT, M/O:, Type:VARC, Size:8, Description:Project Warranty Start Date -->
<xsd:element name="GRNT_STDT" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl
index 69e11683..544e24f9 100644
--- a/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl
+++ b/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl
@@ -8,7 +8,7 @@
<xsd:element name="IF_MDZ_EVCP_VENDOR_MASTERReq" type="IF_MDZ_EVCP_VENDOR_MASTERReq" nillable="true"/>
<xsd:complexType name="ADDRESS">
<xsd:sequence>
- <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADR_NO, M/O:M, Type:VARC, Size:255, Description:주소번호 -->
+ <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADR_NO, M/O:M, Type:VARC, Size:10, Description:주소번호 -->
<xsd:element name="ADDRNO" type="xsd:string"/>
<xsd:element name="AD_POSTAL" type="AD_POSTAL" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="AD_TEL" type="AD_TEL" minOccurs="0" maxOccurs="unbounded"/>
@@ -19,168 +19,168 @@
</xsd:complexType>
<xsd:complexType name="AD_EMAIL">
<xsd:sequence>
- <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 -->
+ <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 -->
<xsd:element name="REPR_SER" type="xsd:string"/>
- <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 -->
+ <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 -->
<xsd:element name="VLD_ST_DT" type="xsd:string"/>
- <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:EMAIL_ADR, M/O:, Type:VARC, Size:255, Description:이메일주소 -->
+ <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:EMAIL_ADR, M/O:, Type:VARC, Size:241, Description:이메일주소 -->
<xsd:element name="EMAIL_ADR" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_FAX">
<xsd:sequence>
- <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 -->
+ <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 -->
<xsd:element name="REPR_SER" type="xsd:string"/>
- <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 -->
+ <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 -->
<xsd:element name="VLD_ST_DT" type="xsd:string"/>
- <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:NTN_CD, M/O:, Type:VARC, Size:255, Description:국가코드 -->
+ <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:NTN_CD, M/O:, Type:VARC, Size:3, Description:국가코드 -->
<xsd:element name="NTN_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAXNO, M/O:, Type:VARC, Size:255, Description:팩스번호 -->
+ <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAXNO, M/O:, Type:VARC, Size:30, Description:팩스번호 -->
<xsd:element name="FAXNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_ETS_NO, M/O:, Type:VARC, Size:255, Description:팩스내선번호 -->
+ <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_ETS_NO, M/O:, Type:VARC, Size:10, Description:팩스내선번호 -->
<xsd:element name="FAX_ETS_NO" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_POSTAL">
<xsd:sequence>
- <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:INTL_ADR_VER_ID, M/O:M, Type:VARC, Size:255, Description:국제주소버전ID -->
+ <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:INTL_ADR_VER_ID, M/O:M, Type:VARC, Size:1, Description:국제주소버전ID -->
<xsd:element name="INTL_ADR_VER_ID" type="xsd:string"/>
- <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY_ZIP_NO, M/O:, Type:VARC, Size:255, Description:도시우편번호 -->
+ <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY_ZIP_NO, M/O:, Type:VARC, Size:10, Description:도시우편번호 -->
<xsd:element name="CITY_ZIP_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX_ZIP_NO, M/O:, Type:VARC, Size:255, Description:사서함우편번호 -->
+ <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX_ZIP_NO, M/O:, Type:VARC, Size:10, Description:사서함우편번호 -->
<xsd:element name="POBX_ZIP_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_1, M/O:, Type:VARC, Size:255, Description:주소1 -->
+ <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_1, M/O:, Type:VARC, Size:190, Description:주소1 -->
<xsd:element name="ADR_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_2, M/O:, Type:VARC, Size:255, Description:주소2 -->
+ <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_2, M/O:, Type:VARC, Size:120, Description:주소2 -->
<xsd:element name="ADR_2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGN_CD, M/O:, Type:VARC, Size:255, Description:지역코드 -->
+ <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGN_CD, M/O:, Type:VARC, Size:5, Description:지역코드 -->
<xsd:element name="REGN_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TTL, M/O:, Type:VARC, Size:255, Description:타이틀 -->
+ <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TTL, M/O:, Type:VARC, Size:90, Description:타이틀 -->
<xsd:element name="TTL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_1, M/O:, Type:VARC, Size:255, Description:VENDOR명약어1 -->
+ <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_1, M/O:, Type:VARC, Size:60, Description:VENDOR명약어1 -->
<xsd:element name="VNDRNM_ABRV_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_2, M/O:, Type:VARC, Size:255, Description:VENDOR명약어2 -->
+ <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_2, M/O:, Type:VARC, Size:60, Description:VENDOR명약어2 -->
<xsd:element name="VNDRNM_ABRV_2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_1, M/O:, Type:VARC, Size:255, Description:VENDOR명1 -->
+ <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_1, M/O:, Type:VARC, Size:120, Description:VENDOR명1 -->
<xsd:element name="VNDRNM_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_2, M/O:, Type:VARC, Size:255, Description:VENDOR명2 -->
+ <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_2, M/O:, Type:VARC, Size:120, Description:VENDOR명2 -->
<xsd:element name="VNDRNM_2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_3, M/O:, Type:VARC, Size:255, Description:VENDOR명3 -->
+ <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_3, M/O:, Type:VARC, Size:120, Description:VENDOR명3 -->
<xsd:element name="VNDRNM_3" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_4, M/O:, Type:VARC, Size:255, Description:VENDOR명4 -->
+ <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_4, M/O:, Type:VARC, Size:120, Description:VENDOR명4 -->
<xsd:element name="VNDRNM_4" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANG_KEY, M/O:, Type:VARC, Size:255, Description:언어키 -->
+ <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANG_KEY, M/O:, Type:VARC, Size:1, Description:언어키 -->
<xsd:element name="LANG_KEY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_1, M/O:, Type:VARC, Size:255, Description:기타주소1 -->
+ <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_1, M/O:, Type:VARC, Size:180, Description:기타주소1 -->
<xsd:element name="ETC_ADR_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_2, M/O:, Type:VARC, Size:255, Description:기타주소2 -->
+ <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_2, M/O:, Type:VARC, Size:180, Description:기타주소2 -->
<xsd:element name="ETC_ADR_2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NTN_CD, M/O:, Type:VARC, Size:255, Description:국가코드 -->
+ <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NTN_CD, M/O:, Type:VARC, Size:3, Description:국가코드 -->
<xsd:element name="NTN_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX, M/O:, Type:VARC, Size:255, Description:사서함 -->
+ <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX, M/O:, Type:VARC, Size:10, Description:사서함 -->
<xsd:element name="POBX" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANS_ZONE, M/O:, Type:VARC, Size:255, Description:운송구역 -->
+ <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANS_ZONE, M/O:, Type:VARC, Size:10, Description:운송구역 -->
<xsd:element name="TRANS_ZONE" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAX_JRDT_ZONE_CD, M/O:, Type:VARC, Size:255, Description:조세관할구역코드 -->
+ <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAX_JRDT_ZONE_CD, M/O:, Type:VARC, Size:15, Description:조세관할구역코드 -->
<xsd:element name="TAX_JRDT_ZONE_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_TMZ, M/O:, Type:VARC, Size:255, Description:주소시간대 -->
+ <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_TMZ, M/O:, Type:VARC, Size:10, Description:주소시간대 -->
<xsd:element name="ADR_TMZ" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_TEL">
<xsd:sequence>
- <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 -->
+ <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 -->
<xsd:element name="REPR_SER" type="xsd:string"/>
- <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 -->
+ <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 -->
<xsd:element name="VLD_ST_DT" type="xsd:string"/>
- <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:NTN_CD, M/O:, Type:VARC, Size:255, Description:국가코드 -->
+ <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:NTN_CD, M/O:, Type:VARC, Size:3, Description:국가코드 -->
<xsd:element name="NTN_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TELNO, M/O:, Type:VARC, Size:255, Description:전화번호 -->
+ <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TELNO, M/O:, Type:VARC, Size:30, Description:전화번호 -->
<xsd:element name="TELNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:ETX_NO, M/O:, Type:VARC, Size:255, Description:내선번호 -->
+ <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:ETX_NO, M/O:, Type:VARC, Size:10, Description:내선번호 -->
<xsd:element name="ETX_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:HP_ORDR, M/O:, Type:VARC, Size:255, Description:핸드폰지시자 -->
+ <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:HP_ORDR, M/O:, Type:VARC, Size:1, Description:핸드폰지시자 -->
<xsd:element name="HP_ORDR" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AD_URL">
<xsd:sequence>
- <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 -->
+ <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 -->
<xsd:element name="REPR_SER" type="xsd:string"/>
- <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 -->
+ <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 -->
<xsd:element name="VLD_ST_DT" type="xsd:string"/>
- <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URL, M/O:, Type:VARC, Size:255, Description:URL -->
+ <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URL, M/O:, Type:VARC, Size:2048, Description:URL -->
<xsd:element name="URL" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BP_COMPNY">
<xsd:sequence>
- <!-- SEQ:95, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CO_CD, M/O:M, Type:VARC, Size:255, Description:회사코드 -->
+ <!-- SEQ:95, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CO_CD, M/O:M, Type:VARC, Size:4, Description:회사코드 -->
<xsd:element name="CO_CD" type="xsd:string"/>
- <!-- SEQ:96, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CTL_ACNT, M/O:, Type:VARC, Size:255, Description:조정계정 -->
+ <!-- SEQ:96, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CTL_ACNT, M/O:, Type:VARC, Size:10, Description:조정계정 -->
<xsd:element name="CTL_ACNT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:97, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRT_KEY, M/O:, Type:VARC, Size:255, Description:정렬키 -->
+ <!-- SEQ:97, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRT_KEY, M/O:, Type:VARC, Size:3, Description:정렬키 -->
<xsd:element name="SRT_KEY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:98, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PLN_GRP, M/O:, Type:VARC, Size:255, Description:계획그룹 -->
+ <!-- SEQ:98, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PLN_GRP, M/O:, Type:VARC, Size:10, Description:계획그룹 -->
<xsd:element name="PLN_GRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:99, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:BF_VNDRCD, M/O:, Type:VARC, Size:255, Description:이전VENDOR코드 -->
+ <!-- SEQ:99, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:BF_VNDRCD, M/O:, Type:VARC, Size:10, Description:이전VENDOR코드 -->
<xsd:element name="BF_VNDRCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:100, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_COND, M/O:, Type:VARC, Size:255, Description:지급조건 -->
+ <!-- SEQ:100, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_COND, M/O:, Type:VARC, Size:4, Description:지급조건 -->
<xsd:element name="SPLY_COND" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:101, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:OVLAP_INVC_ORDR, M/O:, Type:VARC, Size:255, Description:중복송장지시자 -->
+ <!-- SEQ:101, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:OVLAP_INVC_ORDR, M/O:, Type:VARC, Size:1, Description:중복송장지시자 -->
<xsd:element name="OVLAP_INVC_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:102, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_MTHD, M/O:, Type:VARC, Size:255, Description:지급방법 -->
+ <!-- SEQ:102, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_MTHD, M/O:, Type:VARC, Size:10, Description:지급방법 -->
<xsd:element name="SPLY_MTHD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:103, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:지급보류지시자 -->
+ <!-- SEQ:103, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:지급보류지시자 -->
<xsd:element name="SPLY_HOLD_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:104, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:전기보류지시자 -->
+ <!-- SEQ:104, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:전기보류지시자 -->
<xsd:element name="PST_HOLD_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:105, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:DEL_ORDR, M/O:, Type:VARC, Size:255, Description:삭제지시자 -->
+ <!-- SEQ:105, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:DEL_ORDR, M/O:, Type:VARC, Size:1, Description:삭제지시자 -->
<xsd:element name="DEL_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:106, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_NTN_CD, M/O:, Type:VARC, Size:255, Description:원천세국가코드 -->
+ <!-- SEQ:106, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_NTN_CD, M/O:, Type:VARC, Size:3, Description:원천세국가코드 -->
<xsd:element name="SRCE_TX_NTN_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:107, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MIN_ORDR, M/O:, Type:VARC, Size:255, Description:소수지시자 -->
+ <!-- SEQ:107, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MIN_ORDR, M/O:, Type:VARC, Size:1, Description:소수지시자 -->
<xsd:element name="MIN_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:108, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPRT_SPLY_ORDR, M/O:, Type:VARC, Size:255, Description:분리지급지시자 -->
+ <!-- SEQ:108, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPRT_SPLY_ORDR, M/O:, Type:VARC, Size:1, Description:분리지급지시자 -->
<xsd:element name="SPRT_SPLY_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:109, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:TRD_BANK_SHRT_KEY, M/O:, Type:VARC, Size:255, Description:거래은행단축키 -->
+ <!-- SEQ:109, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:TRD_BANK_SHRT_KEY, M/O:, Type:VARC, Size:5, Description:거래은행단축키 -->
<xsd:element name="TRD_BANK_SHRT_KEY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:110, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:IATA_BIC_GB, M/O:, Type:VARC, Size:255, Description:IATA,BIC구분 -->
+ <!-- SEQ:110, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:IATA_BIC_GB, M/O:, Type:VARC, Size:4, Description:IATA,BIC구분 -->
<xsd:element name="IATA_BIC_GB" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:111, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:REP_TP, M/O:, Type:VARC, Size:255, Description:대표유형 -->
+ <!-- SEQ:111, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:REP_TP, M/O:, Type:VARC, Size:6, Description:대표유형 -->
<xsd:element name="REP_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:112, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:LOGST_VNDR_TP, M/O:, Type:VARC, Size:255, Description:물류VENDOR유형 -->
+ <!-- SEQ:112, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:LOGST_VNDR_TP, M/O:, Type:VARC, Size:6, Description:물류VENDOR유형 -->
<xsd:element name="LOGST_VNDR_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:113, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CSTM_VNDR_CLR_ORDR, M/O:, Type:VARC, Size:255, Description:CUSTOMER,VENDOR반제지시자 -->
+ <!-- SEQ:113, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CSTM_VNDR_CLR_ORDR, M/O:, Type:VARC, Size:1, Description:CUSTOMER,VENDOR반제지시자 -->
<xsd:element name="CSTM_VNDR_CLR_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:114, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_CD, M/O:, Type:VARC, Size:255, Description:원천세코드 -->
+ <!-- SEQ:114, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_CD, M/O:, Type:VARC, Size:1, Description:원천세코드 -->
<xsd:element name="SRCE_TX_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:150, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_ACNT_NO, M/O:, Type:VARC, Size:255, Description:VENDOR계정번호 -->
+ <!-- SEQ:150, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_ACNT_NO, M/O:, Type:VARC, Size:12, Description:VENDOR계정번호 -->
<xsd:element name="VNDR_ACNT_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:151, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_CHRGR_NM, M/O:, Type:VARC, Size:255, Description:VENDOR담당자명 -->
+ <!-- SEQ:151, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_CHRGR_NM, M/O:, Type:VARC, Size:45, Description:VENDOR담당자명 -->
<xsd:element name="VNDR_CHRGR_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:152, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_TELNO, M/O:, Type:VARC, Size:255, Description:회계담당자전화번호 -->
+ <!-- SEQ:152, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_TELNO, M/O:, Type:VARC, Size:30, Description:회계담당자전화번호 -->
<xsd:element name="ACOT_CHRGR_TELNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:153, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:AUTH_GRP, M/O:, Type:VARC, Size:255, Description:권한그룹 -->
+ <!-- SEQ:153, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:AUTH_GRP, M/O:, Type:VARC, Size:8, Description:권한그룹 -->
<xsd:element name="AUTH_GRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:154, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_CALC_DT, M/O:, Type:VARC, Size:255, Description:최종이자계산일자 -->
+ <!-- SEQ:154, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_CALC_DT, M/O:, Type:VARC, Size:8, Description:최종이자계산일자 -->
<xsd:element name="FIN_IR_CALC_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:155, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_ACT_DT, M/O:, Type:VARC, Size:255, Description:최종이자실행일자 -->
+ <!-- SEQ:155, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_ACT_DT, M/O:, Type:VARC, Size:8, Description:최종이자실행일자 -->
<xsd:element name="FIN_IR_ACT_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:156, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_FAXNO, M/O:, Type:VARC, Size:255, Description:회계담당자FAX번호 -->
+ <!-- SEQ:156, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_FAXNO, M/O:, Type:VARC, Size:31, Description:회계담당자FAX번호 -->
<xsd:element name="ACOT_CHRGR_FAXNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:157, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MK_CHRGR_EMAIL, M/O:, Type:VARC, Size:255, Description:MAKER담당자이메일 -->
+ <!-- SEQ:157, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MK_CHRGR_EMAIL, M/O:, Type:VARC, Size:241, Description:MAKER담당자이메일 -->
<xsd:element name="MK_CHRGR_EMAIL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:158, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MEMO, M/O:, Type:VARC, Size:255, Description:메모 -->
+ <!-- SEQ:158, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MEMO, M/O:, Type:VARC, Size:120, Description:메모 -->
<xsd:element name="MEMO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:159, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MOFFC_ACNT_NO, M/O:, Type:VARC, Size:255, Description:본사계정번호 -->
+ <!-- SEQ:159, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MOFFC_ACNT_NO, M/O:, Type:VARC, Size:10, Description:본사계정번호 -->
<xsd:element name="MOFFC_ACNT_NO" type="xsd:string" minOccurs="0"/>
<xsd:element name="BP_WHTAX" type="BP_WHTAX" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BP_HEADER">
<xsd:sequence>
- <!-- SEQ:1, Table:BP_HEADER, Field:VNDRCD, M/O:M, Type:VARC, Size:255, Description:VENDOR코드 -->
+ <!-- SEQ:1, Table:BP_HEADER, Field:VNDRCD, M/O:M, Type:VARC, Size:10, Description:VENDOR코드 -->
<xsd:element name="VNDRCD" type="xsd:string"/>
<xsd:element name="ADDRESS" type="ADDRESS" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="BP_TAXNUM" type="BP_TAXNUM" minOccurs="0" maxOccurs="unbounded"/>
@@ -189,162 +189,162 @@
</xsd:complexType>
<xsd:complexType name="BP_PORG">
<xsd:sequence>
- <!-- SEQ:125, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORG_CD, M/O:M, Type:VARC, Size:255, Description:구매조직 -->
+ <!-- SEQ:125, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORG_CD, M/O:M, Type:VARC, Size:4, Description:구매조직 -->
<xsd:element name="PUR_ORG_CD" type="xsd:string"/>
- <!-- SEQ:126, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORD_CUR, M/O:, Type:VARC, Size:255, Description:구매오더통화 -->
+ <!-- SEQ:126, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORD_CUR, M/O:, Type:VARC, Size:5, Description:구매오더통화 -->
<xsd:element name="PUR_ORD_CUR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:127, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SPLY_COND, M/O:, Type:VARC, Size:255, Description:지급조건 -->
+ <!-- SEQ:127, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SPLY_COND, M/O:, Type:VARC, Size:4, Description:지급조건 -->
<xsd:element name="SPLY_COND" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:128, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_1, M/O:, Type:VARC, Size:255, Description:인도조건1 -->
+ <!-- SEQ:128, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_1, M/O:, Type:VARC, Size:3, Description:인도조건1 -->
<xsd:element name="DL_COND_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:129, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_2, M/O:, Type:VARC, Size:255, Description:인도조건2 -->
+ <!-- SEQ:129, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_2, M/O:, Type:VARC, Size:28, Description:인도조건2 -->
<xsd:element name="DL_COND_2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:130, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CALC_SHM_GRP, M/O:, Type:VARC, Size:255, Description:계산스키마그룹 -->
+ <!-- SEQ:130, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CALC_SHM_GRP, M/O:, Type:VARC, Size:2, Description:계산스키마그룹 -->
<xsd:element name="CALC_SHM_GRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:131, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:GR_BSE_INVC_VR, M/O:, Type:VARC, Size:255, Description:GR기준송장검증 -->
+ <!-- SEQ:131, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:GR_BSE_INVC_VR, M/O:, Type:VARC, Size:1, Description:GR기준송장검증 -->
<xsd:element name="GR_BSE_INVC_VR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:132, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:ORD_CNFM_REQ_ORDR, M/O:, Type:VARC, Size:255, Description:오더확인요청지시자 -->
+ <!-- SEQ:132, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:ORD_CNFM_REQ_ORDR, M/O:, Type:VARC, Size:1, Description:오더확인요청지시자 -->
<xsd:element name="ORD_CNFM_REQ_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:133, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:AT_PUR_ORD_ORDR, M/O:, Type:VARC, Size:255, Description:자동구매오더지시자 -->
+ <!-- SEQ:133, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:AT_PUR_ORD_ORDR, M/O:, Type:VARC, Size:1, Description:자동구매오더지시자 -->
<xsd:element name="AT_PUR_ORD_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:134, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:구매보류지시자 -->
+ <!-- SEQ:134, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:구매보류지시자 -->
<xsd:element name="PUR_HOLD_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:135, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DEL_ORDR, M/O:, Type:VARC, Size:255, Description:삭제지시자 -->
+ <!-- SEQ:135, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DEL_ORDR, M/O:, Type:VARC, Size:1, Description:삭제지시자 -->
<xsd:element name="DEL_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:136, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SALE_CHRGR_NM, M/O:, Type:VARC, Size:255, Description:영업담당자명 -->
+ <!-- SEQ:136, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SALE_CHRGR_NM, M/O:, Type:VARC, Size:120, Description:영업담당자명 -->
<xsd:element name="SALE_CHRGR_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:137, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:VNDR_TELNO, M/O:, Type:VARC, Size:255, Description:VENDOR전화번호 -->
+ <!-- SEQ:137, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:VNDR_TELNO, M/O:, Type:VARC, Size:30, Description:VENDOR전화번호 -->
<xsd:element name="VNDR_TELNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:138, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CNFM_CTL_KEY, M/O:, Type:VARC, Size:255, Description:확정제어키 -->
+ <!-- SEQ:138, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CNFM_CTL_KEY, M/O:, Type:VARC, Size:4, Description:확정제어키 -->
<xsd:element name="CNFM_CTL_KEY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:146, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:255, Description:구매보류일자 -->
+ <!-- SEQ:146, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:8, Description:구매보류일자 -->
<xsd:element name="PUR_HOLD_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:147, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_CAUS, M/O:, Type:VARC, Size:255, Description:구매보류사유 -->
+ <!-- SEQ:147, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_CAUS, M/O:, Type:VARC, Size:120, Description:구매보류사유 -->
<xsd:element name="PUR_HOLD_CAUS" type="xsd:string" minOccurs="0"/>
<xsd:element name="ZVPFN" type="ZVPFN" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BP_TAXNUM">
<xsd:sequence>
- <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TX_NO_CTG, M/O:M, Type:VARC, Size:255, Description:세금번호범주 -->
+ <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TX_NO_CTG, M/O:M, Type:VARC, Size:4, Description:세금번호범주 -->
<xsd:element name="TX_NO_CTG" type="xsd:string"/>
- <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:BIZ_PTNR_TX_NO, M/O:, Type:VARC, Size:255, Description:사업파트너세금번호 -->
+ <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:BIZ_PTNR_TX_NO, M/O:, Type:VARC, Size:20, Description:사업파트너세금번호 -->
<xsd:element name="BIZ_PTNR_TX_NO" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BP_VENGEN">
<xsd:sequence>
- <!-- SEQ:43, Table:BP_HEADER/BP_VENGEN, Field:VNDRNO, M/O:M, Type:VARC, Size:255, Description:VENDOR코드 -->
+ <!-- SEQ:43, Table:BP_HEADER/BP_VENGEN, Field:VNDRNO, M/O:M, Type:VARC, Size:10, Description:VENDOR코드 -->
<xsd:element name="VNDRNO" type="xsd:string"/>
- <!-- SEQ:44, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP, M/O:, Type:VARC, Size:255, Description:계정그룹 -->
+ <!-- SEQ:44, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP, M/O:, Type:VARC, Size:4, Description:계정그룹 -->
<xsd:element name="ACNT_GRP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:45, Table:BP_HEADER/BP_VENGEN, Field:CSTM_CD, M/O:, Type:VARC, Size:255, Description:고객코드 -->
+ <!-- SEQ:45, Table:BP_HEADER/BP_VENGEN, Field:CSTM_CD, M/O:, Type:VARC, Size:10, Description:고객코드 -->
<xsd:element name="CSTM_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:46, Table:BP_HEADER/BP_VENGEN, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:전기보류지시자 -->
+ <!-- SEQ:46, Table:BP_HEADER/BP_VENGEN, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:전기보류지시자 -->
<xsd:element name="PST_HOLD_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:47, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:구매보류지시자 -->
+ <!-- SEQ:47, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:구매보류지시자 -->
<xsd:element name="PUR_HOLD_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:48, Table:BP_HEADER/BP_VENGEN, Field:HOLD_CAUS, M/O:, Type:VARC, Size:255, Description:보류사유 -->
+ <!-- SEQ:48, Table:BP_HEADER/BP_VENGEN, Field:HOLD_CAUS, M/O:, Type:VARC, Size:200, Description:보류사유 -->
<xsd:element name="HOLD_CAUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:49, Table:BP_HEADER/BP_VENGEN, Field:DEL_ORDR, M/O:, Type:VARC, Size:255, Description:삭제지시자 -->
+ <!-- SEQ:49, Table:BP_HEADER/BP_VENGEN, Field:DEL_ORDR, M/O:, Type:VARC, Size:1, Description:삭제지시자 -->
<xsd:element name="DEL_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:50, Table:BP_HEADER/BP_VENGEN, Field:CO_ID, M/O:, Type:VARC, Size:255, Description:법인ID -->
+ <!-- SEQ:50, Table:BP_HEADER/BP_VENGEN, Field:CO_ID, M/O:, Type:VARC, Size:6, Description:법인ID -->
<xsd:element name="CO_ID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:51, Table:BP_HEADER/BP_VENGEN, Field:TTL, M/O:, Type:VARC, Size:255, Description:타이틀 -->
+ <!-- SEQ:51, Table:BP_HEADER/BP_VENGEN, Field:TTL, M/O:, Type:VARC, Size:45, Description:타이틀 -->
<xsd:element name="TTL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:52, Table:BP_HEADER/BP_VENGEN, Field:REPR_NM, M/O:, Type:VARC, Size:255, Description:대표자명 -->
+ <!-- SEQ:52, Table:BP_HEADER/BP_VENGEN, Field:REPR_NM, M/O:, Type:VARC, Size:30, Description:대표자명 -->
<xsd:element name="REPR_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:53, Table:BP_HEADER/BP_VENGEN, Field:BIZTP, M/O:, Type:VARC, Size:255, Description:사업유형 -->
+ <!-- SEQ:53, Table:BP_HEADER/BP_VENGEN, Field:BIZTP, M/O:, Type:VARC, Size:30, Description:사업유형 -->
<xsd:element name="BIZTP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:54, Table:BP_HEADER/BP_VENGEN, Field:BIZCON, M/O:, Type:VARC, Size:255, Description:산업유형 -->
+ <!-- SEQ:54, Table:BP_HEADER/BP_VENGEN, Field:BIZCON, M/O:, Type:VARC, Size:30, Description:산업유형 -->
<xsd:element name="BIZCON" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:55, Table:BP_HEADER/BP_VENGEN, Field:REPR_RESNO, M/O:, Type:VARC, Size:255, Description:대표자주민번호 -->
+ <!-- SEQ:55, Table:BP_HEADER/BP_VENGEN, Field:REPR_RESNO, M/O:, Type:VARC, Size:13, Description:대표자주민번호 -->
<xsd:element name="REPR_RESNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:56, Table:BP_HEADER/BP_VENGEN, Field:BIZR_NO, M/O:, Type:VARC, Size:255, Description:사업자번호 -->
+ <!-- SEQ:56, Table:BP_HEADER/BP_VENGEN, Field:BIZR_NO, M/O:, Type:VARC, Size:10, Description:사업자번호 -->
<xsd:element name="BIZR_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:57, Table:BP_HEADER/BP_VENGEN, Field:CO_REG_NO, M/O:, Type:VARC, Size:255, Description:법인등록번호 -->
+ <!-- SEQ:57, Table:BP_HEADER/BP_VENGEN, Field:CO_REG_NO, M/O:, Type:VARC, Size:18, Description:법인등록번호 -->
<xsd:element name="CO_REG_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:58, Table:BP_HEADER/BP_VENGEN, Field:TX_CD_4, M/O:, Type:VARC, Size:255, Description:세금번호4 -->
+ <!-- SEQ:58, Table:BP_HEADER/BP_VENGEN, Field:TX_CD_4, M/O:, Type:VARC, Size:18, Description:세금번호4 -->
<xsd:element name="TX_CD_4" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:59, Table:BP_HEADER/BP_VENGEN, Field:VAT_REG_NO, M/O:, Type:VARC, Size:255, Description:부가세등록번호 -->
+ <!-- SEQ:59, Table:BP_HEADER/BP_VENGEN, Field:VAT_REG_NO, M/O:, Type:VARC, Size:20, Description:부가세등록번호 -->
<xsd:element name="VAT_REG_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:60, Table:BP_HEADER/BP_VENGEN, Field:DEL_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:삭제보류지시자 -->
+ <!-- SEQ:60, Table:BP_HEADER/BP_VENGEN, Field:DEL_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:삭제보류지시자 -->
<xsd:element name="DEL_HOLD_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:61, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_CD, M/O:, Type:VARC, Size:255, Description:GLOBALTOP코드 -->
+ <!-- SEQ:61, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_CD, M/O:, Type:VARC, Size:10, Description:GLOBALTOP코드 -->
<xsd:element name="GBL_TOP_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:62, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_NM, M/O:, Type:VARC, Size:255, Description:GLOBALTOP명 -->
+ <!-- SEQ:62, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_NM, M/O:, Type:VARC, Size:120, Description:GLOBALTOP명 -->
<xsd:element name="GBL_TOP_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:63, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_CD, M/O:, Type:VARC, Size:255, Description:국내TOP코드 -->
+ <!-- SEQ:63, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_CD, M/O:, Type:VARC, Size:10, Description:국내TOP코드 -->
<xsd:element name="DMST_TOP_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:64, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_NM, M/O:, Type:VARC, Size:255, Description:국내TOP명 -->
+ <!-- SEQ:64, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_NM, M/O:, Type:VARC, Size:120, Description:국내TOP명 -->
<xsd:element name="DMST_TOP_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:65, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_CD, M/O:, Type:VARC, Size:255, Description:사업단위코드 -->
+ <!-- SEQ:65, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_CD, M/O:, Type:VARC, Size:10, Description:사업단위코드 -->
<xsd:element name="BIZ_UOM_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:66, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_NM, M/O:, Type:VARC, Size:255, Description:사업단위명 -->
+ <!-- SEQ:66, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_NM, M/O:, Type:VARC, Size:40, Description:사업단위명 -->
<xsd:element name="BIZ_UOM_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:67, Table:BP_HEADER/BP_VENGEN, Field:DNS_NO, M/O:, Type:VARC, Size:255, Description:DUNS번호 -->
+ <!-- SEQ:67, Table:BP_HEADER/BP_VENGEN, Field:DNS_NO, M/O:, Type:VARC, Size:11, Description:DUNS번호 -->
<xsd:element name="DNS_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:68, Table:BP_HEADER/BP_VENGEN, Field:GIRO_VNDR_ORDR, M/O:, Type:VARC, Size:255, Description:지로VENDOR지시자 -->
+ <!-- SEQ:68, Table:BP_HEADER/BP_VENGEN, Field:GIRO_VNDR_ORDR, M/O:, Type:VARC, Size:1, Description:지로VENDOR지시자 -->
<xsd:element name="GIRO_VNDR_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:69, Table:BP_HEADER/BP_VENGEN, Field:FIR_NM, M/O:, Type:VARC, Size:255, Description:FIRST이름 -->
+ <!-- SEQ:69, Table:BP_HEADER/BP_VENGEN, Field:FIR_NM, M/O:, Type:VARC, Size:120, Description:FIRST이름 -->
<xsd:element name="FIR_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:70, Table:BP_HEADER/BP_VENGEN, Field:VNDRNM_1, M/O:, Type:VARC, Size:255, Description:VENDOR명1 -->
+ <!-- SEQ:70, Table:BP_HEADER/BP_VENGEN, Field:VNDRNM_1, M/O:, Type:VARC, Size:10, Description:VENDOR명1 -->
<xsd:element name="VNDRNM_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:71, Table:BP_HEADER/BP_VENGEN, Field:REP_TEL_NO, M/O:, Type:VARC, Size:255, Description:대표전화번호 -->
+ <!-- SEQ:71, Table:BP_HEADER/BP_VENGEN, Field:REP_TEL_NO, M/O:, Type:VARC, Size:30, Description:대표전화번호 -->
<xsd:element name="REP_TEL_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:72, Table:BP_HEADER/BP_VENGEN, Field:REG_DT, M/O:, Type:VARC, Size:255, Description:등록일자 -->
+ <!-- SEQ:72, Table:BP_HEADER/BP_VENGEN, Field:REG_DT, M/O:, Type:VARC, Size:8, Description:등록일자 -->
<xsd:element name="REG_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:73, Table:BP_HEADER/BP_VENGEN, Field:REG_TM, M/O:, Type:VARC, Size:255, Description:등록시간 -->
+ <!-- SEQ:73, Table:BP_HEADER/BP_VENGEN, Field:REG_TM, M/O:, Type:VARC, Size:6, Description:등록시간 -->
<xsd:element name="REG_TM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:74, Table:BP_HEADER/BP_VENGEN, Field:REGR_ID, M/O:, Type:VARC, Size:255, Description:등록자ID -->
+ <!-- SEQ:74, Table:BP_HEADER/BP_VENGEN, Field:REGR_ID, M/O:, Type:VARC, Size:13, Description:등록자ID -->
<xsd:element name="REGR_ID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:75, Table:BP_HEADER/BP_VENGEN, Field:AGR_DT, M/O:, Type:VARC, Size:255, Description:승인일자 -->
+ <!-- SEQ:75, Table:BP_HEADER/BP_VENGEN, Field:AGR_DT, M/O:, Type:VARC, Size:8, Description:승인일자 -->
<xsd:element name="AGR_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:76, Table:BP_HEADER/BP_VENGEN, Field:AGR_TM, M/O:, Type:VARC, Size:255, Description:승인시간 -->
+ <!-- SEQ:76, Table:BP_HEADER/BP_VENGEN, Field:AGR_TM, M/O:, Type:VARC, Size:6, Description:승인시간 -->
<xsd:element name="AGR_TM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:77, Table:BP_HEADER/BP_VENGEN, Field:AGR_R_ID, M/O:, Type:VARC, Size:255, Description:승인자ID -->
+ <!-- SEQ:77, Table:BP_HEADER/BP_VENGEN, Field:AGR_R_ID, M/O:, Type:VARC, Size:13, Description:승인자ID -->
<xsd:element name="AGR_R_ID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:78, Table:BP_HEADER/BP_VENGEN, Field:CHG_DT, M/O:, Type:VARC, Size:255, Description:변경일자 -->
+ <!-- SEQ:78, Table:BP_HEADER/BP_VENGEN, Field:CHG_DT, M/O:, Type:VARC, Size:8, Description:변경일자 -->
<xsd:element name="CHG_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:79, Table:BP_HEADER/BP_VENGEN, Field:CHG_TM, M/O:, Type:VARC, Size:255, Description:변경시간 -->
+ <!-- SEQ:79, Table:BP_HEADER/BP_VENGEN, Field:CHG_TM, M/O:, Type:VARC, Size:6, Description:변경시간 -->
<xsd:element name="CHG_TM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:80, Table:BP_HEADER/BP_VENGEN, Field:CHGR_ID, M/O:, Type:VARC, Size:255, Description:변경자ID -->
+ <!-- SEQ:80, Table:BP_HEADER/BP_VENGEN, Field:CHGR_ID, M/O:, Type:VARC, Size:13, Description:변경자ID -->
<xsd:element name="CHGR_ID" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:81, Table:BP_HEADER/BP_VENGEN, Field:PTNT_VNDRCD, M/O:, Type:VARC, Size:255, Description:잠재VENDOR코드 -->
+ <!-- SEQ:81, Table:BP_HEADER/BP_VENGEN, Field:PTNT_VNDRCD, M/O:, Type:VARC, Size:10, Description:잠재VENDOR코드 -->
<xsd:element name="PTNT_VNDRCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:82, Table:BP_HEADER/BP_VENGEN, Field:ADR_1, M/O:, Type:VARC, Size:255, Description:주소1 -->
+ <!-- SEQ:82, Table:BP_HEADER/BP_VENGEN, Field:ADR_1, M/O:, Type:VARC, Size:120, Description:주소1 -->
<xsd:element name="ADR_1" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:83, Table:BP_HEADER/BP_VENGEN, Field:ADR_2, M/O:, Type:VARC, Size:255, Description:주소2 -->
+ <!-- SEQ:83, Table:BP_HEADER/BP_VENGEN, Field:ADR_2, M/O:, Type:VARC, Size:512, Description:주소2 -->
<xsd:element name="ADR_2" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:84, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP_TP, M/O:, Type:VARC, Size:255, Description:계정그룹유형 -->
+ <!-- SEQ:84, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP_TP, M/O:, Type:VARC, Size:2, Description:계정그룹유형 -->
<xsd:element name="ACNT_GRP_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:85, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_NM, M/O:, Type:VARC, Size:255, Description:품질담당자명 -->
+ <!-- SEQ:85, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_NM, M/O:, Type:VARC, Size:20, Description:품질담당자명 -->
<xsd:element name="QLT_CHRGR_NM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:86, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_TELNO, M/O:, Type:VARC, Size:255, Description:품질담당자전화번호 -->
+ <!-- SEQ:86, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_TELNO, M/O:, Type:VARC, Size:30, Description:품질담당자전화번호 -->
<xsd:element name="QLT_CHRGR_TELNO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:87, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_EMAIL, M/O:, Type:VARC, Size:255, Description:품질담당자이메일 -->
+ <!-- SEQ:87, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_EMAIL, M/O:, Type:VARC, Size:241, Description:품질담당자이메일 -->
<xsd:element name="QLT_CHRGR_EMAIL" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:88, Table:BP_HEADER/BP_VENGEN, Field:SB_WKA_SEQ, M/O:, Type:VARC, Size:255, Description:SUB작업장순서 -->
+ <!-- SEQ:88, Table:BP_HEADER/BP_VENGEN, Field:SB_WKA_SEQ, M/O:, Type:VARC, Size:4, Description:SUB작업장순서 -->
<xsd:element name="SB_WKA_SEQ" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:89, Table:BP_HEADER/BP_VENGEN, Field:OVLAP_CAUS_CD, M/O:, Type:VARC, Size:255, Description:중복사유코드 -->
+ <!-- SEQ:89, Table:BP_HEADER/BP_VENGEN, Field:OVLAP_CAUS_CD, M/O:, Type:VARC, Size:2, Description:중복사유코드 -->
<xsd:element name="OVLAP_CAUS_CD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:90, Table:BP_HEADER/BP_VENGEN, Field:DOC_TP, M/O:, Type:VARC, Size:255, Description:문서유형 -->
+ <!-- SEQ:90, Table:BP_HEADER/BP_VENGEN, Field:DOC_TP, M/O:, Type:VARC, Size:3, Description:문서유형 -->
<xsd:element name="DOC_TP" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:91, Table:BP_HEADER/BP_VENGEN, Field:DOC_NO, M/O:, Type:VARC, Size:255, Description:문서번호 -->
+ <!-- SEQ:91, Table:BP_HEADER/BP_VENGEN, Field:DOC_NO, M/O:, Type:VARC, Size:25, Description:문서번호 -->
<xsd:element name="DOC_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:92, Table:BP_HEADER/BP_VENGEN, Field:PTN_DOC, M/O:, Type:VARC, Size:255, Description:부분문서 -->
+ <!-- SEQ:92, Table:BP_HEADER/BP_VENGEN, Field:PTN_DOC, M/O:, Type:VARC, Size:3, Description:부분문서 -->
<xsd:element name="PTN_DOC" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:93, Table:BP_HEADER/BP_VENGEN, Field:DOC_VER, M/O:, Type:VARC, Size:255, Description:문서버전 -->
+ <!-- SEQ:93, Table:BP_HEADER/BP_VENGEN, Field:DOC_VER, M/O:, Type:VARC, Size:2, Description:문서버전 -->
<xsd:element name="DOC_VER" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:94, Table:BP_HEADER/BP_VENGEN, Field:INB_FLAG, M/O:, Type:VARC, Size:255, Description:인바운드플래그 -->
+ <!-- SEQ:94, Table:BP_HEADER/BP_VENGEN, Field:INB_FLAG, M/O:, Type:VARC, Size:1, Description:인바운드플래그 -->
<xsd:element name="INB_FLAG" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:145, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:255, Description:구매보류일자 -->
+ <!-- SEQ:145, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:8, Description:구매보류일자 -->
<xsd:element name="PUR_HOLD_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:148, Table:BP_HEADER/BP_VENGEN, Field:INTL_LCTN_CHK_NUM, M/O:, Type:VARC, Size:255, Description:국제LOCATION점검숫자 -->
+ <!-- SEQ:148, Table:BP_HEADER/BP_VENGEN, Field:INTL_LCTN_CHK_NUM, M/O:, Type:NUMB, Size:1, Description:국제LOCATION점검숫자 -->
<xsd:element name="INTL_LCTN_CHK_NUM" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:149, Table:BP_HEADER/BP_VENGEN, Field:SRCETX_RP_SEX_KEY, M/O:, Type:VARC, Size:255, Description:원천세의무자성별키 -->
+ <!-- SEQ:149, Table:BP_HEADER/BP_VENGEN, Field:SRCETX_RP_SEX_KEY, M/O:, Type:VARC, Size:1, Description:원천세의무자성별키 -->
<xsd:element name="SRCETX_RP_SEX_KEY" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:160, Table:BP_HEADER/BP_VENGEN, Field:CO_VLM, M/O:, Type:VARC, Size:255, Description:기업규모 -->
+ <!-- SEQ:160, Table:BP_HEADER/BP_VENGEN, Field:CO_VLM, M/O:, Type:VARC, Size:1, Description:기업규모 -->
<xsd:element name="CO_VLM" type="xsd:string" minOccurs="0"/>
<xsd:element name="BP_COMPNY" type="BP_COMPNY" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="BP_PORG" type="BP_PORG" minOccurs="0" maxOccurs="unbounded"/>
@@ -352,25 +352,25 @@
</xsd:complexType>
<xsd:complexType name="BP_WHTAX">
<xsd:sequence>
- <!-- SEQ:115, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_TP, M/O:M, Type:VARC, Size:255, Description:원천세유형 -->
+ <!-- SEQ:115, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_TP, M/O:M, Type:VARC, Size:2, Description:원천세유형 -->
<xsd:element name="SRCE_TX_TP" type="xsd:string"/>
- <!-- SEQ:116, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_REL_ORDR, M/O:, Type:VARC, Size:255, Description:원천세관련지시자 -->
+ <!-- SEQ:116, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_REL_ORDR, M/O:, Type:VARC, Size:1, Description:원천세관련지시자 -->
<xsd:element name="SRCE_TX_REL_ORDR" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:117, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_IDENT_NO, M/O:, Type:VARC, Size:255, Description:원천세식별번호 -->
+ <!-- SEQ:117, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_IDENT_NO, M/O:, Type:VARC, Size:16, Description:원천세식별번호 -->
<xsd:element name="SRCE_TX_IDENT_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:118, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_NO, M/O:, Type:VARC, Size:255, Description:원천세코드 -->
+ <!-- SEQ:118, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_NO, M/O:, Type:VARC, Size:2, Description:원천세코드 -->
<xsd:element name="SRCE_TX_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:119, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CERT_NO, M/O:, Type:VARC, Size:255, Description:면제증명서번호 -->
+ <!-- SEQ:119, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CERT_NO, M/O:, Type:VARC, Size:15, Description:면제증명서번호 -->
<xsd:element name="DCHAG_CERT_NO" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:120, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_RAT, M/O:, Type:VARC, Size:255, Description:면제율 -->
+ <!-- SEQ:120, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_RAT, M/O:, Type:NUMB, Size:6,2, Description:면제율 -->
<xsd:element name="DCHAG_RAT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:121, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ST_DT, M/O:, Type:VARC, Size:255, Description:면제시작일자 -->
+ <!-- SEQ:121, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ST_DT, M/O:, Type:VARC, Size:8, Description:면제시작일자 -->
<xsd:element name="DCHAG_ST_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:122, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ED_DT, M/O:, Type:VARC, Size:255, Description:면제종료일 -->
+ <!-- SEQ:122, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ED_DT, M/O:, Type:VARC, Size:8, Description:면제종료일 -->
<xsd:element name="DCHAG_ED_DT" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:123, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CAUS, M/O:, Type:VARC, Size:255, Description:면제사유 -->
+ <!-- SEQ:123, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CAUS, M/O:, Type:VARC, Size:200, Description:면제사유 -->
<xsd:element name="DCHAG_CAUS" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:124, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:RECIP_TP, M/O:, Type:VARC, Size:255, Description:수취인유형 -->
+ <!-- SEQ:124, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:RECIP_TP, M/O:, Type:VARC, Size:2, Description:수취인유형 -->
<xsd:element name="RECIP_TP" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
@@ -381,17 +381,17 @@
</xsd:complexType>
<xsd:complexType name="ZVPFN">
<xsd:sequence>
- <!-- SEQ:139, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:VNDR_SUB_NO, M/O:M, Type:VARC, Size:255, Description:VENDOR서브번호 -->
+ <!-- SEQ:139, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:VNDR_SUB_NO, M/O:M, Type:VARC, Size:6, Description:VENDOR서브번호 -->
<xsd:element name="VNDR_SUB_NO" type="xsd:string"/>
- <!-- SEQ:140, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PLNT_NO, M/O:M, Type:VARC, Size:255, Description:플랜트번호 -->
+ <!-- SEQ:140, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PLNT_NO, M/O:M, Type:VARC, Size:4, Description:플랜트번호 -->
<xsd:element name="PLNT_NO" type="xsd:string"/>
- <!-- SEQ:141, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_SKL, M/O:M, Type:VARC, Size:255, Description:파트너기능 -->
+ <!-- SEQ:141, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_SKL, M/O:M, Type:VARC, Size:2, Description:파트너기능 -->
<xsd:element name="PTNR_SKL" type="xsd:string"/>
- <!-- SEQ:142, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_CNT, M/O:M, Type:VARC, Size:255, Description:파트너카운터 -->
+ <!-- SEQ:142, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_CNT, M/O:M, Type:NUMB, Size:3, Description:파트너카운터 -->
<xsd:element name="PTNR_CNT" type="xsd:string"/>
- <!-- SEQ:143, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:ETC_REF_VNDRCD, M/O:, Type:VARC, Size:255, Description:기타참조VENDOR코드 -->
+ <!-- SEQ:143, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:ETC_REF_VNDRCD, M/O:, Type:VARC, Size:10, Description:기타참조VENDOR코드 -->
<xsd:element name="ETC_REF_VNDRCD" type="xsd:string" minOccurs="0"/>
- <!-- SEQ:144, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:BSE_PTNR_ORDR, M/O:, Type:VARC, Size:255, Description:기본파트너지시자 -->
+ <!-- SEQ:144, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:BSE_PTNR_ORDR, M/O:, Type:VARC, Size:1, Description:기본파트너지시자 -->
<xsd:element name="BSE_PTNR_ORDR" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
diff --git a/public/wsdl/_util/analyze_mdz_wsdl.py b/public/wsdl/_util/analyze_mdz_wsdl.py
new file mode 100755
index 00000000..216d867b
--- /dev/null
+++ b/public/wsdl/_util/analyze_mdz_wsdl.py
@@ -0,0 +1,847 @@
+#!/usr/bin/env python3
+"""
+MDZ WSDL 파일 분석 스크립트
+- WSDL 파일에서 테이블 구조 추출
+- 현재 Drizzle 스키마와 비교
+- 누락된 테이블/필드 확인
+"""
+
+import os
+import re
+import xml.etree.ElementTree as ET
+from pathlib import Path
+from typing import Dict, List, Set, Tuple
+from collections import defaultdict
+import sys
+from datetime import datetime
+
+class ColorLogger:
+ """컬러 로깅을 위한 클래스"""
+
+ # ANSI 컬러 코드
+ COLORS = {
+ 'RESET': '\033[0m',
+ 'BOLD': '\033[1m',
+ 'DIM': '\033[2m',
+
+ # 기본 컬러
+ 'BLACK': '\033[30m',
+ 'RED': '\033[31m',
+ 'GREEN': '\033[32m',
+ 'YELLOW': '\033[33m',
+ 'BLUE': '\033[34m',
+ 'MAGENTA': '\033[35m',
+ 'CYAN': '\033[36m',
+ 'WHITE': '\033[37m',
+
+ # 밝은 컬러
+ 'BRIGHT_BLACK': '\033[90m',
+ 'BRIGHT_RED': '\033[91m',
+ 'BRIGHT_GREEN': '\033[92m',
+ 'BRIGHT_YELLOW': '\033[93m',
+ 'BRIGHT_BLUE': '\033[94m',
+ 'BRIGHT_MAGENTA': '\033[95m',
+ 'BRIGHT_CYAN': '\033[96m',
+ 'BRIGHT_WHITE': '\033[97m',
+
+ # 배경 컬러
+ 'BG_RED': '\033[41m',
+ 'BG_GREEN': '\033[42m',
+ 'BG_YELLOW': '\033[43m',
+ 'BG_BLUE': '\033[44m',
+ }
+
+ def __init__(self, enable_colors: bool = True):
+ """
+ 컬러 로거 초기화
+ Args:
+ enable_colors: Windows CMD에서는 False로 설정 가능
+ """
+ self.enable_colors = enable_colors and self._supports_color()
+
+ def _supports_color(self) -> bool:
+ """컬러 지원 여부 확인"""
+ # Windows에서 colorama가 없으면 컬러 비활성화
+ if os.name == 'nt':
+ try:
+ import colorama
+ colorama.init()
+ return True
+ except ImportError:
+ return False
+ return True
+
+ def _colorize(self, text: str, color: str) -> str:
+ """텍스트에 컬러 적용"""
+ if not self.enable_colors:
+ return text
+ return f"{self.COLORS.get(color, '')}{text}{self.COLORS['RESET']}"
+
+ def header(self, text: str):
+ """헤더 로그 (굵은 파란색)"""
+ colored_text = self._colorize(text, 'BOLD')
+ colored_text = self._colorize(colored_text, 'BRIGHT_BLUE')
+ print(colored_text)
+
+ def info(self, text: str):
+ """정보 로그 (파란색)"""
+ colored_text = self._colorize(text, 'BLUE')
+ print(colored_text)
+
+ def success(self, text: str):
+ """성공 로그 (초록색)"""
+ colored_text = self._colorize(text, 'BRIGHT_GREEN')
+ print(colored_text)
+
+ def warning(self, text: str):
+ """경고 로그 (노란색)"""
+ colored_text = self._colorize(text, 'BRIGHT_YELLOW')
+ print(colored_text)
+
+ def error(self, text: str):
+ """에러 로그 (빨간색)"""
+ colored_text = self._colorize(text, 'BRIGHT_RED')
+ print(colored_text)
+
+ def debug(self, text: str):
+ """디버그 로그 (회색)"""
+ colored_text = self._colorize(text, 'BRIGHT_BLACK')
+ print(colored_text)
+
+ def table_info(self, text: str):
+ """테이블 정보 로그 (시안색)"""
+ colored_text = self._colorize(text, 'CYAN')
+ print(colored_text)
+
+ def field_info(self, text: str):
+ """필드 정보 로그 (마젠타)"""
+ colored_text = self._colorize(text, 'MAGENTA')
+ print(colored_text)
+
+ def separator(self, char: str = "=", length: int = 80):
+ """구분선 출력 (굵은 흰색)"""
+ line = char * length
+ colored_line = self._colorize(line, 'BOLD')
+ print(colored_line)
+
+# 전역 로거 인스턴스
+logger = ColorLogger()
+
+class WSDLAnalyzer:
+ def __init__(self, wsdl_directory: str):
+ self.wsdl_directory = Path(wsdl_directory)
+ self.tables = defaultdict(dict) # table_name -> {field_name: field_info}
+ self.table_hierarchy = defaultdict(list) # parent -> [children]
+ self.table_sources = defaultdict(set) # table_name -> {wsdl_file_names}
+
+ # 필드명 매핑 규칙 정의 (개별 WSDL을 존중해 테이블 분리하기로 했으므로 사용하지 않음.)
+ self.field_name_mappings = {}
+
+ # 사용법
+ # self.field_name_mappings = {
+ # 'CUSTOMER_MASTER': { # WSDL 파일명에 이 문자열이 포함되면
+ # 'ADDRNO': 'ADR_NO' # ADDRNO를 ADR_NO로 변경
+ # }
+ # }
+
+ def analyze_all_mdz_wsdls(self):
+ """MDZ가 포함된 모든 WSDL 파일 분석"""
+ wsdl_files = list(self.wsdl_directory.glob("*MDZ*.wsdl"))
+
+ logger.info(f"Found {len(wsdl_files)} MDZ WSDL files:")
+ for wsdl_file in wsdl_files:
+ logger.table_info(f" - {wsdl_file.name}")
+ logger.info("")
+
+ for wsdl_file in wsdl_files:
+ self._analyze_wsdl_file(wsdl_file)
+
+ # 테이블별 필드 합집합 처리
+ self._merge_table_fields()
+
+ return self.tables, self.table_hierarchy
+
+ def _merge_table_fields(self):
+ """테이블별 필드 합집합 처리 - 개선된 버전"""
+ merged_tables = defaultdict(dict)
+
+ for table_name, fields in self.tables.items():
+ # MATL_PLNT 테이블의 경우 디버깅 정보 출력
+ if table_name == 'MATL_PLNT':
+ logger.debug(f"\n=== MATL_PLNT 테이블 디버깅 ===")
+ logger.debug(f" 병합 전 필드 수: {len(fields)}")
+ logger.debug(f" 필드 목록:")
+ for field_key, field_info in fields.items():
+ logger.debug(f" {field_key} -> {field_info['field_name']} (from {field_info['wsdl_source']})")
+
+ # 테이블별 필드를 실제 필드명 기준으로 그룹화
+ field_groups = defaultdict(list) # actual_field_name -> [field_infos]
+
+ for field_key, field_info in fields.items():
+ # field_key에서 실제 필드명 추출 (|| 구분자 사용)
+ actual_field_name = field_key.split('||')[0] if '||' in field_key else field_key
+ field_groups[actual_field_name].append(field_info)
+
+ # MATL_PLNT 테이블의 경우 그룹화 결과 출력
+ if table_name == 'MATL_PLNT':
+ logger.debug(f" 그룹화 후 필드 수: {len(field_groups)}")
+ logger.debug(f" 그룹별 필드:")
+ for actual_field_name, field_infos in field_groups.items():
+ sources = [info['wsdl_source'] for info in field_infos]
+ logger.debug(f" {actual_field_name}: {len(field_infos)}개 소스 - {sources}")
+
+ # 각 필드 그룹을 병합
+ for actual_field_name, field_infos in field_groups.items():
+ # 첫 번째 필드 정보를 기준으로 시작
+ merged_field = field_infos[0].copy()
+
+ # 모든 WSDL 소스 수집
+ all_sources = set()
+ all_descriptions = set()
+
+ for field_info in field_infos:
+ all_sources.add(field_info['wsdl_source'])
+ if field_info['description'].strip():
+ all_descriptions.add(field_info['description'].strip())
+
+ # 필수 필드인 경우 유지
+ if field_info['mandatory'] == 'M':
+ merged_field['mandatory'] = 'M'
+
+ # 병합된 정보 설정
+ merged_field['wsdl_sources'] = all_sources
+
+ # 설명 병합 (첫 번째 설명 사용, WSDL 소스 정보는 주석에 추가)
+ if all_descriptions:
+ merged_field['description'] = list(all_descriptions)[0]
+ else:
+ merged_field['description'] = f'From multiple sources'
+
+ # 테이블에 추가 (실제 필드명 사용)
+ merged_tables[table_name][actual_field_name] = merged_field
+
+ # 병합된 테이블 정보로 업데이트
+ self.tables = merged_tables
+
+ # 테이블별 WSDL 소스 정보 출력
+ logger.info("\n테이블별 WSDL 소스 정보 (필드 중복 제거 후):")
+ for table_name, fields in self.tables.items():
+ sources = set()
+ for field_info in fields.values():
+ sources.update(field_info['wsdl_sources'])
+ logger.table_info(f"\n{table_name}:")
+ for source in sorted(sources):
+ logger.table_info(f" - {source}")
+ logger.table_info(f" 총 필드 수: {len(fields)}")
+
+ # MATL_PLNT 테이블의 경우 최종 필드 목록 출력
+ if table_name == 'MATL_PLNT':
+ logger.debug(f" 최종 필드 목록:")
+ for field_name in sorted(fields.keys()):
+ logger.debug(f" - {field_name}")
+
+ def _analyze_wsdl_file(self, wsdl_file: Path):
+ """단일 WSDL 파일 분석"""
+ logger.info(f"Analyzing {wsdl_file.name}...")
+
+ try:
+ with open(wsdl_file, 'r', encoding='utf-8') as f:
+ content = f.read()
+
+ # 우선 정규식으로 분석 시도 (주석에서 테이블 정보 추출)
+ regex_count = self._extract_tables_from_regex(content, wsdl_file.name)
+
+ # 정규식으로 찾지 못했을 때만 XML 파싱 시도
+ if regex_count == 0:
+ try:
+ # XML 네임스페이스 등록
+ namespaces = {
+ 'xsd': 'http://www.w3.org/2001/XMLSchema',
+ 'wsdl': 'http://schemas.xmlsoap.org/wsdl/'
+ }
+
+ root = ET.fromstring(content)
+ self._extract_tables_from_xml(root, wsdl_file.name, namespaces)
+ except ET.ParseError as e:
+ logger.error(f" XML parsing failed: {e}")
+ except Exception as e:
+ logger.error(f" XML analysis error: {e}")
+
+ except Exception as e:
+ logger.error(f" Error analyzing {wsdl_file.name}: {e}")
+
+ def _extract_tables_from_xml(self, root: ET.Element, wsdl_name: str, namespaces: dict):
+ """XML에서 테이블 정보 추출"""
+ # complexType 요소들에서 테이블 구조 추출
+ for complex_type in root.findall(".//xsd:complexType", namespaces):
+ table_name = complex_type.get('name')
+ if table_name:
+ self._extract_fields_from_complex_type(complex_type, table_name, wsdl_name, namespaces)
+
+ def _extract_tables_from_regex(self, content: str, wsdl_name: str) -> int:
+ """정규식으로 테이블 정보 추출"""
+
+ # Table 정보가 포함된 주석 패턴 (Description에서 --> 전까지 모든 문자 매칭)
+ table_pattern = r'<!-- SEQ:\d+, Table:([^,]+), Field:([^,]+), M/O:([^,]*), Type:([^,]+), Size:([^,]+), Description:(.*?) -->'
+
+ matches = re.findall(table_pattern, content)
+
+ # # MATL/PLNT 관련 필드 디버깅
+ # matl_plnt_matches = [match for match in matches if 'MATL/PLNT' in match[0]]
+ # if matl_plnt_matches:
+ # print(f" {wsdl_name}에서 MATL/PLNT 필드 발견: {len(matl_plnt_matches)}개")
+ # for match in matl_plnt_matches:
+ # table_path, field_name = match[0], match[1]
+ # print(f" {field_name} (Table: {table_path})")
+
+ for match in matches:
+ table_path, field_name, mandatory, field_type, size, description = match
+
+ # 필드명 매핑 적용
+ original_field_name = field_name.strip()
+ mapped_field_name = self._apply_field_name_mapping(original_field_name, wsdl_name)
+
+ # 테이블 경로에서 실제 테이블명 추출
+ # 예: "BP_HEADER/ADDRESS/AD_POSTAL" -> ["BP_HEADER", "ADDRESS", "AD_POSTAL"]
+ table_parts = table_path.split('/')
+ main_table = table_parts[0]
+
+ # 계층 구조 기록
+ if len(table_parts) > 1:
+ for i in range(len(table_parts) - 1):
+ parent = '/'.join(table_parts[:i+1])
+ child = '/'.join(table_parts[:i+2])
+ if child not in self.table_hierarchy[parent]:
+ self.table_hierarchy[parent].append(child)
+
+ # 필드 정보 저장 (매핑된 필드명 사용)
+ field_info = {
+ 'field_name': mapped_field_name, # 매핑된 필드명 사용
+ 'original_field_name': original_field_name, # 원본 필드명도 보존
+ 'mandatory': mandatory.strip(),
+ 'type': field_type.strip(),
+ 'size': size.strip(),
+ 'description': description.strip(),
+ 'table_path': table_path,
+ 'wsdl_source': wsdl_name
+ }
+
+ # 테이블별로 필드 저장 (|| 구분자 사용으로 충돌 방지, 매핑된 필드명 사용)
+ # CSV 파일명 기반 테이블 prefix 추가
+ table_prefix = self._get_table_prefix_from_wsdl_name(wsdl_name)
+ full_table_name = f"{table_prefix}_{table_path.replace('/', '_').upper()}"
+ field_key = f"{mapped_field_name}||{table_path}"
+ self.tables[full_table_name][field_key] = field_info
+
+ # # MATL_PLNT 테이블에 필드 추가 시 디버깅
+ # if 'MATL_PLNT' in full_table_name:
+ # print(f" {full_table_name}에 필드 추가: {mapped_field_name} (from {wsdl_name})")
+
+ logger.success(f" Found {len(matches)} field definitions")
+ return len(matches)
+
+ def _extract_fields_from_complex_type(self, complex_type, table_name: str, wsdl_name: str, namespaces: dict):
+ """complexType에서 필드 정보 추출"""
+ for element in complex_type.findall(".//xsd:element", namespaces):
+ field_name = element.get('name')
+ field_type = element.get('type', 'unknown')
+ min_occurs = element.get('minOccurs', '1')
+ max_occurs = element.get('maxOccurs', '1')
+
+ if field_name:
+ field_info = {
+ 'field_name': field_name,
+ 'mandatory': 'M' if min_occurs != '0' else 'O',
+ 'type': field_type,
+ 'size': 'unknown',
+ 'description': f'From {table_name}',
+ 'table_path': table_name,
+ 'wsdl_source': wsdl_name
+ }
+
+ field_key = f"{field_name}||{table_name}"
+ self.tables[table_name.upper()][field_key] = field_info
+
+ def _apply_field_name_mapping(self, field_name: str, wsdl_name: str) -> str:
+ """특정 WSDL 파일의 필드명을 매핑 규칙에 따라 변경"""
+ for wsdl_pattern, mappings in self.field_name_mappings.items():
+ if wsdl_pattern in wsdl_name.upper():
+ if field_name in mappings:
+ original_name = field_name
+ mapped_name = mappings[field_name]
+ logger.debug(f" Field mapping: {original_name} -> {mapped_name} (from {wsdl_name})")
+ return mapped_name
+ return field_name
+
+ def _get_table_prefix_from_wsdl_name(self, wsdl_name: str) -> str:
+ """WSDL 파일명에서 테이블 prefix 추출"""
+ # 단순히 IF_MDZ_EVCP_ 접두사만 제거하고 나머지 그대로 사용
+ # 예: IF_MDZ_EVCP_MATERIAL_PART_RETURN.wsdl -> MATERIAL_PART_RETURN
+ prefix = wsdl_name.replace('IF_MDZ_EVCP_', '').replace('.wsdl', '')
+ return prefix if prefix else 'COMMON'
+
+def analyze_current_drizzle_schema(schema_file: str) -> Set[str]:
+ """현재 Drizzle 스키마에서 테이블 목록 추출"""
+ try:
+ with open(schema_file, 'r', encoding='utf-8') as f:
+ content = f.read()
+
+ # export const 테이블명 패턴 찾기
+ table_pattern = r'export const (\w+) = mdgSchema\.table\('
+ matches = re.findall(table_pattern, content)
+
+ return set(matches)
+
+ except FileNotFoundError:
+ logger.error(f"Schema file not found: {schema_file}")
+ return set()
+
+def compare_wsdl_vs_schema(wsdl_tables: Dict, schema_tables: Set[str]):
+ """WSDL 테이블과 스키마 테이블 비교"""
+ logger.separator()
+ logger.header("WSDL vs Drizzle Schema 비교 결과")
+ logger.separator()
+
+ # WSDL에서 추출한 테이블명 (이미 대문자로 변환됨)
+ wsdl_table_names = set(wsdl_tables.keys())
+
+ logger.info(f"\nWSDL에서 발견된 테이블: {len(wsdl_tables)}개")
+ for table in sorted(wsdl_tables.keys()):
+ field_count = len(wsdl_tables[table])
+ logger.table_info(f" - {table} ({field_count} fields)")
+
+ logger.info(f"\nDrizzle 스키마의 테이블: {len(schema_tables)}개")
+ for table in sorted(schema_tables):
+ logger.table_info(f" - {table}")
+
+ # 테이블명 직접 비교 (대문자로 통일)
+ schema_tables_upper = {table.upper() for table in schema_tables}
+ wsdl_tables_upper = {table.upper() for table in wsdl_table_names}
+
+ # 누락된 테이블 찾기
+ missing_in_schema = wsdl_tables_upper - schema_tables_upper
+ extra_in_schema = schema_tables_upper - wsdl_tables_upper
+
+ if missing_in_schema:
+ logger.warning(f"\n⚠️ 스키마에 누락된 테이블 ({len(missing_in_schema)}개):")
+ for table in sorted(missing_in_schema):
+ logger.warning(f" - {table}")
+
+ if extra_in_schema:
+ logger.success(f"\n✅ 스키마에 추가로 정의된 테이블 ({len(extra_in_schema)}개):")
+ for table in sorted(extra_in_schema):
+ logger.success(f" - {table}")
+
+ return missing_in_schema, extra_in_schema
+
+def generate_missing_tables_schema(wsdl_tables: Dict, missing_tables: Set[str]):
+ """누락된 테이블들의 Drizzle 스키마 코드 생성"""
+ if not missing_tables:
+ return
+
+ logger.separator()
+ logger.header("누락된 테이블들의 Drizzle 스키마 코드")
+ logger.separator()
+
+ for missing_table in sorted(missing_tables):
+ # WSDL 테이블명에서 해당하는 테이블 찾기 (대문자로 직접 매칭)
+ wsdl_table_key = missing_table.upper()
+
+ if wsdl_table_key in wsdl_tables and wsdl_tables[wsdl_table_key]:
+ logger.field_info(f"\n// {wsdl_table_key}")
+ logger.field_info(f"export const {wsdl_table_key} = mdgSchema.table('{wsdl_table_key}', {{")
+ logger.field_info(" id: integer('id').primaryKey().generatedByDefaultAsIdentity(),")
+
+ for field_key, field_info in wsdl_tables[wsdl_table_key].items():
+ # field_key에서 실제 필드명 추출 (|| 구분자 사용)
+ if '||' in field_key:
+ actual_field_name = field_key.split('||')[0]
+ else:
+ actual_field_name = field_key
+
+ # 필드 타입 매핑
+ drizzle_type = map_wsdl_type_to_drizzle(field_info['type'], field_info['size'])
+ mandatory = ".notNull()" if field_info['mandatory'] == 'M' else ""
+ # NOTE: WSDL별로 개별 테이블을 만들기로 했으므로 notNull() 제약조건 복구
+
+ # 주석으로 설명 추가
+ comment = f" // {field_info['description']}" if field_info['description'] else ""
+ wsdl_source = f" // From: {field_info['wsdl_source']}"
+ mandatory_comment = f" // WSDL에서 필수 필드" if field_info['mandatory'] == 'M' else ""
+
+ logger.field_info(f" {actual_field_name}: {drizzle_type}{mandatory},{comment}{wsdl_source}{mandatory_comment}")
+
+ logger.field_info(" ")
+ logger.field_info(" createdAt: timestamp('created_at').defaultNow().notNull(),")
+ logger.field_info(" updatedAt: timestamp('updated_at').defaultNow().notNull(),")
+ logger.field_info("});")
+
+def map_wsdl_type_to_drizzle(wsdl_type: str, size: str) -> str:
+ """WSDL 타입을 Drizzle 타입으로 매핑 (모든 필드를 VARCHAR로 통일, 방어적 사이즈 계산)"""
+ # 기본 길이 설정
+ default_length = 100
+ min_length = 10 # 최소 길이
+ max_length = 2000 # 최대 길이 (PostgreSQL VARCHAR 권장 최대)
+
+ # LCHR 타입은 text()로 처리 (큰 텍스트)
+ if 'LCHR' in wsdl_type.upper():
+ return "text()"
+
+ # 사이즈 처리
+ if size and size.strip():
+ try:
+ size_clean = size.strip()
+
+ # "n,m" 형태 처리 (소수점 있는 숫자 타입)
+ if ',' in size_clean:
+ parts = size_clean.split(',')
+ if len(parts) == 2 and parts[0].isdigit() and parts[1].isdigit():
+ total_digits = int(parts[0]) # 전체 자릿수
+ decimal_places = int(parts[1]) # 소수점 이하 자릿수
+
+ # 방어적 계산: 전체 자릿수 + 부호(1) + 소수점(1) + 여유분(3) = +5
+ safe_length = total_digits + 5
+ logger.debug(f" 📏 소수점 타입 사이즈 계산: {size_clean} -> {safe_length} (원본: {total_digits}, 여유: +5)")
+
+ # 최소/최대 길이 제한
+ safe_length = max(min_length, min(safe_length, max_length))
+ return f"varchar({{ length: {safe_length} }})"
+
+ # 단순 숫자 처리
+ elif size_clean.isdigit():
+ original_length = int(size_clean)
+ # 단순 숫자는 그대로 사용 (여유분 없음)
+ safe_length = max(min_length, min(original_length, max_length))
+
+ if safe_length != original_length:
+ logger.debug(f" 📏 단순 사이즈 조정: {original_length} -> {safe_length} (min/max 제한)")
+ else:
+ logger.debug(f" 📏 단순 사이즈 사용: {safe_length}")
+
+ return f"varchar({{ length: {safe_length} }})"
+
+ # "n.m" 형태 처리 (점으로 구분된 경우도 있을 수 있음)
+ elif '.' in size_clean:
+ parts = size_clean.split('.')
+ if len(parts) == 2 and parts[0].isdigit() and parts[1].isdigit():
+ total_digits = int(parts[0])
+ decimal_places = int(parts[1])
+
+ # 방어적 계산
+ safe_length = total_digits + 5
+ logger.debug(f" 📏 소수점 타입 사이즈 계산 (점 구분): {size_clean} -> {safe_length} (원본: {total_digits}, 여유: +5)")
+
+ safe_length = max(min_length, min(safe_length, max_length))
+ return f"varchar({{ length: {safe_length} }})"
+
+ # 기타 형태는 기본값 사용
+ else:
+ logger.warning(f" ⚠️ 알 수 없는 사이즈 형태: '{size_clean}' -> 기본값 {default_length} 사용")
+ return f"varchar({{ length: {default_length} }})"
+
+ except Exception as e:
+ logger.error(f" ❌ 사이즈 파싱 오류: '{size}' -> 기본값 {default_length} 사용, 오류: {e}")
+ return f"varchar({{ length: {default_length} }})"
+
+ # 사이즈가 없거나 비어있는 경우 기본값
+ return f"varchar({{ length: {default_length} }})"
+
+def validate_schema(wsdl_tables: Dict, schema_tables: Set[str]) -> Dict[str, List[str]]:
+ """스키마 검증"""
+ validation_results = {
+ 'missing_tables': [],
+ 'missing_fields': [],
+ 'type_mismatches': [],
+ 'duplicate_fields': []
+ }
+
+ for table_name, fields in wsdl_tables.items():
+ # 테이블 존재 여부 검증
+ if table_name not in schema_tables:
+ validation_results['missing_tables'].append(table_name)
+ continue
+
+ # 필드 검증
+ field_names = set()
+ for field_key, field_info in fields.items():
+ # field_key에서 실제 필드명 추출 (|| 구분자 사용)
+ actual_field_name = field_key.split('||')[0] if '||' in field_key else field_key
+
+ # 중복 필드 검사
+ if actual_field_name in field_names:
+ validation_results['duplicate_fields'].append(f"{table_name}.{actual_field_name}")
+ field_names.add(actual_field_name)
+
+ # 누락된 필드 검증 (WSDL의 모든 필드가 스키마에 있는지 확인)
+ if actual_field_name not in existing_fields:
+ validation_results['missing_fields'].append(f"{table_name}.{actual_field_name}")
+
+ # 타입 호환성 검증
+ # ? 기존 스키마의 필드 타입과 비교
+ # ! VARCHAR로 처리하기로 했으니 타입 호환성 검사는 필요 없음
+
+ return validation_results
+
+def analyze_existing_schema(schema_file: str) -> Dict[str, Dict[str, str]]:
+ """기존 스키마 파일 분석"""
+ existing_schema = {}
+ try:
+ with open(schema_file, 'r', encoding='utf-8') as f:
+ content = f.read()
+
+ # 테이블 정의 찾기 (변경된 패턴)
+ table_pattern = r'export const (\w+) = mdgSchema\.table\([\'"](\w+)[\'"]'
+ tables = re.findall(table_pattern, content)
+
+ for table_const, table_name in tables:
+ # 테이블의 필드 정의 찾기
+ field_pattern = rf'{table_const} = mdgSchema\.table\([\'"]{table_name}[\'"].*?{{(.*?)}}'
+ table_match = re.search(field_pattern, content, re.DOTALL)
+
+ if table_match:
+ fields = {}
+ field_defs = table_match.group(1)
+
+ # 각 필드 정의 파싱 (변경된 패턴)
+ field_pattern = r'(\w+):\s*(\w+)\([\'"](\w+)[\'"]'
+ field_matches = re.findall(field_pattern, field_defs)
+
+ for field_name, field_type, field_db_name in field_matches:
+ fields[field_name] = {
+ 'type': field_type,
+ 'db_name': field_db_name
+ }
+
+ existing_schema[table_name] = fields
+
+ except Exception as e:
+ logger.error(f"스키마 파일 분석 중 오류 발생: {e}")
+
+ return existing_schema
+
+def compare_field_types(wsdl_type: str, existing_type: str) -> bool:
+ """필드 타입 호환성 검사"""
+ type_mapping = {
+ 'varchar': ['CHAR', 'VARC', 'LCHR'],
+ 'integer': ['NUMB', 'NUMC'],
+ 'decimal': ['CURR'],
+ 'date': ['DATS'],
+ 'time': ['TIMS'],
+ 'text': ['LCHR']
+ }
+
+ wsdl_type = wsdl_type.upper()
+ existing_type = existing_type.lower()
+
+ # 타입 매핑 확인
+ for drizzle_type, wsdl_types in type_mapping.items():
+ if existing_type == drizzle_type:
+ return any(t in wsdl_type for t in wsdl_types)
+
+ return False
+
+def validate_schema(wsdl_tables: Dict, schema_tables: Set[str], existing_schema: Dict[str, Dict[str, str]]) -> Dict[str, List[str]]:
+ """스키마 검증 (개선된 버전)"""
+ validation_results = {
+ 'missing_tables': [],
+ 'missing_fields': [],
+ 'type_mismatches': [],
+ 'duplicate_fields': []
+ }
+
+ for table_name, fields in wsdl_tables.items():
+ # 테이블 존재 여부 검증
+ if table_name not in schema_tables:
+ validation_results['missing_tables'].append(table_name)
+ continue
+
+ # 기존 테이블의 필드 정보 가져오기
+ existing_fields = existing_schema.get(table_name, {})
+
+ # 필드 검증
+ field_names = set()
+ for field_key, field_info in fields.items():
+ # field_key에서 실제 필드명 추출 (|| 구분자 사용)
+ actual_field_name = field_key.split('||')[0] if '||' in field_key else field_key
+
+ # 중복 필드 검사
+ if actual_field_name in field_names:
+ validation_results['duplicate_fields'].append(f"{table_name}.{actual_field_name}")
+ field_names.add(actual_field_name)
+
+ # 누락된 필드 검증 (WSDL의 모든 필드가 스키마에 있는지 확인)
+ # Note: existing_fields는 기존 validate_schema에서는 정의되지 않았으므로 스킵
+
+ # 타입 호환성 검증
+ if actual_field_name in existing_fields:
+ existing_type = existing_fields[actual_field_name]['type']
+ if not compare_field_types(field_info['type'], existing_type):
+ validation_results['type_mismatches'].append(
+ f"{table_name}.{actual_field_name}: WSDL={field_info['type']}, Existing={existing_type}"
+ )
+
+ return validation_results
+
+def generate_schema_code(wsdl_tables: Dict, validation_results: Dict[str, List[str]], existing_schema: Dict[str, Dict[str, str]]) -> str:
+ """스키마 코드 생성 (개선된 버전)"""
+ schema_code = []
+
+ # 누락된 테이블 생성
+ for table_name in validation_results['missing_tables']:
+ table_code = generate_table_code(wsdl_tables[table_name], table_name)
+ schema_code.append(table_code)
+
+ # 누락된 필드 추가
+ for field_info in validation_results['missing_fields']:
+ table_name, field_name = field_info.split('.')
+ if table_name in existing_schema:
+ field_code = generate_field_code(wsdl_tables[table_name][field_name])
+ # 기존 테이블에 필드 추가하는 코드 생성
+ table_code = f"// {table_name}에 추가할 필드:\n{field_code}"
+ schema_code.append(table_code)
+
+ return '\n\n'.join(schema_code)
+
+def generate_table_code(fields: Dict, table_name: str) -> str:
+ """테이블 코드 생성"""
+ code = [
+ f"export const {table_name} = mdgSchema.table('{table_name}', {{",
+ " id: integer('id').primaryKey().generatedByDefaultAsIdentity(),"
+ ]
+
+ # fields에서 실제 필드명과 필드 정보 가져오기
+ # _merge_table_fields에서 이미 actual_field_name을 키로 사용하므로 그대로 사용
+ for actual_field_name, field_info in sorted(fields.items()):
+ # 필드 코드 생성 (actual_field_name 사용)
+ field_code = generate_field_code(field_info)
+ code.append(f" {field_code}")
+
+ code.extend([
+ " ",
+ " createdAt: timestamp('created_at').defaultNow().notNull(),",
+ " updatedAt: timestamp('updated_at').defaultNow().notNull(),",
+ "});"
+ ])
+
+ return '\n'.join(code)
+
+def generate_field_code(field_info: Dict) -> str:
+ """필드 코드 생성"""
+ drizzle_type = map_wsdl_type_to_drizzle(field_info['type'], field_info['size'])
+ mandatory = ".notNull()" if field_info['mandatory'] == 'M' else ""
+ # NOTE: WSDL별로 개별 테이블을 만들기로 했으므로 notNull() 제약조건 복구
+
+ comment = f" // {field_info['description']}" if field_info['description'] else ""
+
+ # 여러 WSDL 소스 정보 추가
+ if 'wsdl_sources' in field_info and len(field_info['wsdl_sources']) > 1:
+ sources_comment = f" // From: {', '.join(sorted(field_info['wsdl_sources']))}"
+ else:
+ wsdl_source = field_info.get('wsdl_source', list(field_info.get('wsdl_sources', ['Unknown']))[0])
+ sources_comment = f" // From: {wsdl_source}"
+
+ # 필수 필드 정보는 주석으로만 표시
+ mandatory_comment = f" // WSDL에서 필수 필드" if field_info['mandatory'] == 'M' else ""
+
+ # 필드명 매핑이 적용된 경우 원본 필드명 표시
+ mapping_comment = ""
+ if 'original_field_name' in field_info and field_info['original_field_name'] != field_info['field_name']:
+ mapping_comment = f" // Original: {field_info['original_field_name']}"
+
+ return f"{field_info['field_name']}: {drizzle_type}{mandatory},{comment}{sources_comment}{mandatory_comment}{mapping_comment}"
+
+def generate_complete_schema(wsdl_tables: Dict) -> str:
+ """완전한 스키마 코드 생성"""
+ schema_code = [
+ "import { integer, varchar, text, timestamp } from 'drizzle-orm/pg-core';",
+ "import { mdgSchema } from '../../../db/schema/MDG/mdg';",
+ "",
+ "// WSDL 기반 자동 생성된 스키마",
+ "// 생성일시: " + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " (UTC로 9시간 빼야 한국 시간)",
+ "// 개선사항:",
+ "// 1. WSDL별로 테이블 만들었음. 인터페이스 정의서에 문제가 많아서 어쩔 수 없었음.",
+ "// 2. 타입은 varchar를 사용하도록 했음. 숫자관련된 건 부호, 소수점 대비 방어적으로 처리함 (사이즈)",
+ "// 3. 테이블명에서 '/' 문자를 '_'로 변경하여 PostgreSQL/TypeScript 호환성 확보함",
+ "",
+ ]
+
+ # 테이블 코드 생성
+ for table_name, fields in sorted(wsdl_tables.items()):
+ table_code = generate_table_code(fields, table_name)
+ schema_code.append(table_code)
+ schema_code.append("") # 빈 줄 추가
+
+ return '\n'.join(schema_code)
+
+def main():
+ # 현재 스크립트 위치에서 프로젝트 루트 찾기
+ script_dir = Path(__file__).parent
+ project_root = script_dir.parent.parent.parent # public/wsdl/_util -> project_root
+
+ wsdl_dir = script_dir.parent # public/wsdl
+ schema_file = project_root / "db" / "schema" / "MDG" / "mdg.ts"
+
+ logger.header("MDZ WSDL 분석 시작...")
+ logger.info(f"WSDL 디렉토리: {wsdl_dir}")
+ logger.info(f"스키마 파일: {schema_file}")
+ logger.info("")
+
+ # WSDL 분석
+ analyzer = WSDLAnalyzer(wsdl_dir)
+ wsdl_tables, table_hierarchy = analyzer.analyze_all_mdz_wsdls()
+
+ # 현재 스키마 분석
+ schema_tables = analyze_current_drizzle_schema(schema_file)
+
+ # 기존 스키마 분석
+ existing_schema = analyze_existing_schema(schema_file)
+
+ # 비교 결과 출력
+ missing_tables, extra_tables = compare_wsdl_vs_schema(wsdl_tables, schema_tables)
+
+ # 누락된 테이블 스키마 생성
+ generate_missing_tables_schema(wsdl_tables, missing_tables)
+
+ # 스키마 검증
+ validation_results = validate_schema(wsdl_tables, schema_tables, existing_schema)
+
+ # 검증 결과 출력
+ logger.separator()
+ logger.header("스키마 검증 결과")
+ logger.separator()
+
+ for category, items in validation_results.items():
+ if items:
+ logger.warning(f"\n{category}:")
+ for item in items:
+ logger.warning(f" - {item}")
+
+ # 완전한 스키마 코드 생성
+ complete_schema = generate_complete_schema(wsdl_tables)
+
+ # 스키마 파일 저장
+ output_file = script_dir / "generated_schema.ts"
+ with open(output_file, 'w', encoding='utf-8') as f:
+ f.write(complete_schema)
+
+ logger.success(f"\n생성된 스키마가 {output_file}에 저장되었습니다.")
+
+ # 상세 필드 정보 출력 (옵션)
+ if len(sys.argv) > 1 and sys.argv[1] == "--detailed":
+ logger.separator()
+ logger.header("상세 필드 정보")
+ logger.separator()
+
+ for table_name, fields in wsdl_tables.items():
+ logger.table_info(f"\n### {table_name}")
+ for field_name, field_info in fields.items():
+ logger.field_info(f" {field_name}: {field_info['type']}({field_info['size']}) - {field_info['description']}")
+
+ logger.success("\n분석 완료!")
+ logger.info(f"- 총 WSDL 테이블: {len(wsdl_tables)}개")
+ logger.info(f"- 현재 스키마 테이블: {len(schema_tables)}개")
+ logger.warning(f"- 누락 테이블: {len(missing_tables)}개") if missing_tables else logger.success(f"- 누락 테이블: {len(missing_tables)}개")
+ logger.info(f"- 추가 테이블: {len(extra_tables)}개")
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/public/wsdl/_util/update_wsdl_with_csv.py b/public/wsdl/_util/update_wsdl_with_csv.py
new file mode 100644
index 00000000..91a9d4dc
--- /dev/null
+++ b/public/wsdl/_util/update_wsdl_with_csv.py
@@ -0,0 +1,674 @@
+#!/usr/bin/env python3
+import csv
+import re
+import shutil
+import os
+from datetime import datetime
+
+# 컬러 로그를 위한 색상 코드 추가
+class Colors:
+ RED = '\033[91m'
+ GREEN = '\033[92m'
+ YELLOW = '\033[93m'
+ BLUE = '\033[94m'
+ MAGENTA = '\033[95m'
+ CYAN = '\033[96m'
+ WHITE = '\033[97m'
+ ENDC = '\033[0m' # End color
+ BOLD = '\033[1m'
+
+def print_color(message, color=Colors.WHITE):
+ """컬러 출력 함수"""
+ print(f"{color}{message}{Colors.ENDC}")
+
+def print_error(message):
+ """에러 메시지 출력"""
+ print_color(f"❌ ERROR: {message}", Colors.RED)
+
+def print_warning(message):
+ """경고 메시지 출력"""
+ print_color(f"⚠️ WARNING: {message}", Colors.YELLOW)
+
+def print_success(message):
+ """성공 메시지 출력"""
+ print_color(f"✅ SUCCESS: {message}", Colors.GREEN)
+
+def print_info(message):
+ """정보 메시지 출력"""
+ print_color(f"ℹ️ INFO: {message}", Colors.CYAN)
+
+"""
+실제 CSV 파일들
+IF_MDZ_EVCP_CUSTOMER_MASTER.csv IF_MDZ_EVCP_EMPLOYEE_REFERENCE.csv IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.csv IF_MDZ_EVCP_PROJECT_MASTER.csv
+IF_MDZ_EVCP_DEPARTMENT_CODE.csv IF_MDZ_EVCP_EQUP_MASTER.csv IF_MDZ_EVCP_MODEL_MASTER.csv IF_MDZ_EVCP_VENDOR_MASTER.csv
+IF_MDZ_EVCP_EMPLOYEE_MASTER.csv IF_MDZ_EVCP_MATERIAL_MASTER_PART.csv IF_MDZ_EVCP_ORGANIZATION_MASTER.csv
+"""
+
+# ===== 설정 =====
+CSV_DIR = './public/wsdl/_csv'
+WSDL_DIR = './public/wsdl'
+
+# 발견된 SAP 타입들을 수집하기 위한 전역 SET
+discovered_sap_types = set()
+type_size_combinations = set() # 타입-사이즈 조합도 수집
+
+# 필드명 매핑 테이블 (CSV -> WSDL)
+FIELD_MAPPING = {
+ # 개별 WSDL 별 테이블 만들기로 했으므로 사용하지 않고 WSDL 그대로 사용
+ # 'ADR_NO': 'ADDRNO',
+ # 필요한 경우 더 추가
+}
+
+# 테이블 매핑 테이블 (complexType -> CSV Table)
+TABLE_MAPPING = {
+ # 'MATL': 'MATL',
+ # 'UNIT': 'MATL/UNIT',
+ # 필요한 경우 더 추가
+}
+
+def normalize_sap_type_and_size(sap_type, size_str):
+ """SAP 타입과 사이즈를 정규화"""
+ global discovered_sap_types, type_size_combinations
+
+ try:
+ # 타입을 대문자로 변환
+ normalized_type = sap_type.upper().strip() if sap_type else 'CHAR'
+
+ # 사이즈 처리
+ normalized_size = size_str.strip() if size_str else ''
+ original_size = normalized_size # 원본 사이즈 보존 (로깅용)
+
+ # 빈 사이즈인 경우 기본값 설정
+ if not normalized_size:
+ normalized_size = '255'
+ else:
+ # 따옴표로 감싸진 경우 제거 (예: "1,0")
+ quote_removed = False
+ if normalized_size.startswith('"') and normalized_size.endswith('"'):
+ before_quote_removal = normalized_size
+ normalized_size = normalized_size[1:-1]
+ quote_removed = True
+ print_color(f"🔍 SIZE 파싱: 따옴표 제거 - '{before_quote_removal}' -> '{normalized_size}' (Type: {normalized_type})", Colors.YELLOW)
+
+ # 로깅: 최종 결과 (따옴표가 없는 경우만)
+ if not quote_removed and original_size:
+ print_color(f"🔍 SIZE 파싱: 따옴표 없음 - '{original_size}' 그대로 사용 (Type: {normalized_type})", Colors.BLUE)
+
+ # 발견된 타입들을 SET에 추가
+ discovered_sap_types.add(normalized_type)
+ type_size_combinations.add(f"{normalized_type}({normalized_size})")
+
+ # 컬럼 구분자나 특수문자가 있는 경우 그대로 유지
+ # DEC, QUAN, NUMB 등에서 "1,0" 형태의 사이즈는 정상
+
+ return normalized_type, normalized_size
+
+ except Exception as e:
+ print_error(f"타입/사이즈 정규화 실패 - Type: {sap_type}, Size: {size_str}, Error: {str(e)}")
+ return 'CHAR', '255' # 기본값 반환
+
+def safe_description_escape(description):
+ """Description 필드의 특수문자를 안전하게 처리"""
+ try:
+ if not description:
+ return ''
+
+ # HTML/XML 특수문자 이스케이프
+ description = description.replace('&', '&amp;')
+ description = description.replace('<', '&lt;')
+ description = description.replace('>', '&gt;')
+ description = description.replace('"', '&quot;')
+ description = description.replace("'", '&apos;')
+
+ return description
+
+ except Exception as e:
+ print_error(f"Description 이스케이프 실패: {description}, Error: {str(e)}")
+ return str(description) if description else ''
+
+def get_csv_files():
+ """CSV 디렉토리에서 모든 CSV 파일 목록을 가져옴"""
+ csv_files = []
+ for file in os.listdir(CSV_DIR):
+ if file.endswith('.csv'):
+ csv_files.append(file.replace('.csv', ''))
+ return csv_files
+
+def get_complex_type_info(wsdl_content):
+ """WSDL 파일에서 complexType 정보를 추출"""
+ complex_types = {}
+ current_type = None
+ current_fields = []
+ type_stack = [] # 중첩된 complexType을 추적하기 위한 스택
+
+ for line in wsdl_content:
+ # complexType 시작 태그 찾기
+ type_match = re.search(r'<xsd:complexType\s+name="([^"]+)"', line)
+ if type_match:
+ if current_type:
+ type_stack.append(current_type)
+ current_type = type_match.group(1)
+ current_fields = []
+ continue
+
+ # complexType 종료 태그 찾기
+ if '</xsd:complexType>' in line:
+ if current_type:
+ complex_types[current_type] = current_fields
+ if type_stack:
+ current_type = type_stack.pop()
+ else:
+ current_type = None
+ continue
+
+ # element 태그 찾기
+ element_match = re.search(r'<xsd:element\s+name="([^"]+)"', line)
+ if element_match and current_type:
+ field_info = {
+ 'name': element_match.group(1),
+ 'type': re.search(r'type="([^"]+)"', line).group(1) if 'type="' in line else None,
+ 'is_array': 'maxOccurs="unbounded"' in line
+ }
+ current_fields.append(field_info)
+
+ return complex_types
+
+def get_table_for_complex_type(table_name, complex_type):
+ """테이블 이름에서 complexType에 해당하는 부분 추출"""
+ # 테이블 이름이 '/'로 구분되어 있다면 마지막 부분을 반환
+ if '/' in table_name:
+ return table_name.split('/')[-1].upper()
+ return table_name.upper()
+
+def load_csv_data(csv_file):
+ """CSV 파일에서 필드 정보를 딕셔너리로 로드"""
+ csv_data = {}
+ csv_path = os.path.join(CSV_DIR, f'{csv_file}.csv')
+
+ try:
+ with open(csv_path, 'r', encoding='utf-8-sig') as f: # BOM 처리
+ reader = csv.DictReader(f)
+ for row_num, row in enumerate(reader, start=2): # 헤더 다음부터 2행
+ try:
+ field_name = row['Field']
+ table_name = row['Table']
+
+ # 매핑된 필드명이 있으면 사용, 없으면 원래 필드명 사용
+ wsdl_field_name = FIELD_MAPPING.get(field_name, field_name)
+
+ # 테이블 정보를 키에 포함 (구분자를 || 로 변경)
+ key = f"{wsdl_field_name}||{table_name}"
+
+ # 타입과 사이즈 정규화
+ normalized_type, normalized_size = normalize_sap_type_and_size(
+ row.get('Type', ''), row.get('Size', '')
+ )
+
+ # Description 안전 처리
+ safe_desc = safe_description_escape(row.get('Description', ''))
+
+ csv_data[key] = {
+ 'seq': row.get('SEQ', ''),
+ 'table': table_name,
+ 'field': row.get('Field', ''), # 원래 CSV 필드명 저장
+ 'mo': row.get('M/O', ''),
+ 'type': normalized_type, # 정규화된 타입
+ 'size': normalized_size, # 정규화된 사이즈
+ 'description': safe_desc, # 안전 처리된 Description
+ 'original_type': row.get('Type', ''), # 원본 타입 보존
+ 'original_size': row.get('Size', '') # 원본 사이즈 보존
+ }
+
+ except Exception as e:
+ print_error(f"CSV 행 {row_num} 처리 실패 - {csv_file}: {str(e)}")
+ print_error(f"문제 행 데이터: {row}")
+ continue
+
+ except Exception as e:
+ print_error(f"CSV 파일 로딩 실패 - {csv_path}: {str(e)}")
+ return {}
+
+ return csv_data
+
+def extract_field_name_from_line(line):
+ """라인에서 name="필드명" 추출"""
+ match = re.search(r'name="([^"]+)"', line)
+ return match.group(1) if match else None
+
+def extract_field_from_comment(comment_line):
+ """주석에서 Field: 부분의 필드명 추출"""
+ match = re.search(r'Field:([^,]+)', comment_line)
+ return match.group(1).strip() if match else None
+
+def has_seq_in_comment(comment_line):
+ """주석에 SEQ가 있는지 확인"""
+ return 'SEQ:' in comment_line
+
+def get_indentation(line):
+ """라인의 들여쓰기 반환"""
+ return len(line) - len(line.lstrip())
+
+def create_comment(field_name, csv_data, indentation, complex_type):
+ """CSV 데이터를 기반으로 주석 생성"""
+ try:
+ # 필드명으로 시작하는 키들을 찾음 (대소문자 구분 없이)
+ matching_keys = [key for key in csv_data.keys() if key.split('||')[0].upper() == field_name.upper()]
+ if not matching_keys:
+ indent = ' ' * indentation
+ print_warning(f"매칭되지 않은 필드: {field_name}")
+ return f"{indent}<!-- TODO: UNMATCHED FIELD OCCURS - {field_name} -->"
+
+ # complexType과 일치하는 테이블 정보 찾기
+ matching_data = None
+
+ # 1. complexType 이름과 완전히 일치하는 테이블 찾기
+ for key in matching_keys:
+ table_name = key.split('||', 1)[1]
+ if complex_type.upper() == table_name.upper():
+ matching_data = csv_data[key]
+ break
+
+ # 2. CSV 테이블명을 '/'로 스플릿한 마지막 부분이 complexType과 일치하는 경우
+ if not matching_data:
+ for key in matching_keys:
+ table_name = key.split('||', 1)[1]
+ if '/' in table_name:
+ last_part = table_name.split('/')[-1]
+ if complex_type.upper() == last_part.upper():
+ matching_data = csv_data[key]
+ break
+
+ # 3. 필드명만 일치하는 경우 (첫 번째 매칭 데이터 사용)
+ if not matching_data:
+ matching_data = csv_data[matching_keys[0]]
+
+ # 4. 매칭된 데이터가 있으면 주석 생성, 없으면 매칭 실패 주석
+ if matching_data:
+ indent = ' ' * indentation
+
+ # CSV의 실제 타입과 사이즈 사용
+ comment = f"{indent}<!-- SEQ:{matching_data['seq']}, Table:{matching_data['table']}, Field:{matching_data['field']}, M/O:{matching_data['mo']}, Type:{matching_data['type']}, Size:{matching_data['size']}, Description:{matching_data['description']} -->"
+
+ print_info(f"주석 생성 완료: {field_name} -> Type:{matching_data['type']}, Size:{matching_data['size']}")
+ return comment
+ else:
+ indent = ' ' * indentation
+ print_warning(f"매칭 데이터를 찾을 수 없음: {field_name}")
+ return f"{indent}<!-- TODO: NO MATCHING DATA FOUND - {field_name} -->"
+
+ except Exception as e:
+ indent = ' ' * indentation
+ print_error(f"주석 생성 실패 - 필드: {field_name}, 에러: {str(e)}")
+ return f"{indent}<!-- ERROR: COMMENT GENERATION FAILED - {field_name} -->"
+
+def normalize_comment(comment_line):
+ """주석을 정규화 (공백 제거, 소문자 변환 등)"""
+ # <!-- 와 --> 제거하고 내용만 추출
+ content = re.sub(r'^\s*<!--\s*|\s*-->\s*$', '', comment_line.strip())
+ # 여러 공백을 하나로 통합
+ content = re.sub(r'\s+', ' ', content)
+ return content.strip()
+
+def comments_are_equal(existing_comment, expected_comment):
+ """두 주석이 같은 내용인지 비교"""
+ existing_normalized = normalize_comment(existing_comment)
+ expected_normalized = normalize_comment(expected_comment)
+ return existing_normalized == expected_normalized
+
+def should_process_line(line, csv_data):
+ """라인이 처리 대상인지 확인"""
+ # 네 조건을 모두 만족해야 함:
+ # 1. <xsd:element 태그
+ # 2. name=" 속성이 있는 태그
+ # 3. maxOccurs=" 속성이 없는 태그 (배열 데이터 제외)
+ # 4. CSV에 해당 필드가 있는 경우
+
+ if not ('<xsd:element' in line and 'name="' in line):
+ return False
+
+ # maxOccurs=" 가 있으면 배열 데이터이므로 제외 (모든 maxOccurs 속성)
+ if 'maxOccurs="' in line:
+ return False
+
+ field_name = extract_field_name_from_line(line)
+ if not field_name:
+ return False
+
+ # 필드명이 CSV 데이터의 키에 정확히 일치하는지 확인 (대소문자 구분 없이)
+ return any(field_name.upper() == key.split('||')[0].upper() for key in csv_data.keys())
+
+def get_skip_reason(line, csv_data):
+ """필드를 건너뛰는 이유를 반환"""
+ if not ('<xsd:element' in line and 'name="' in line):
+ return None
+
+ field_name = extract_field_name_from_line(line)
+ if not field_name:
+ return None
+
+ # maxOccurs 체크 (배열 타입)
+ if 'maxOccurs="' in line:
+ return "ARRAY_TYPE"
+
+ # 복합객체인 경우
+ if 'MASTER' in field_name:
+ return "COMPLEX_TYPE"
+
+ # CSV에 있는지 체크
+ has_csv_data = any(field_name.upper() == key.split('||')[0].upper() for key in csv_data.keys())
+ if not has_csv_data:
+ # Req로 끝나는 경우는 래퍼 타입이므로 정상
+ if field_name.endswith('Req'):
+ return "REQ_WRAPPER_TYPE"
+ else:
+ return "NO_CSV_DATA"
+
+ return None
+
+def get_table_prefix_from_csv_name(csv_name: str) -> str:
+ """CSV 파일명에서 테이블 prefix 추출"""
+ csv_upper = csv_name.upper()
+
+ # CSV 파일명 패턴에서 마스터 타입 추출
+ if 'CUSTOMER_MASTER' in csv_upper:
+ return 'CUSTOMER'
+ elif 'VENDOR_MASTER' in csv_upper:
+ return 'VENDOR'
+ elif 'EMPLOYEE_MASTER' in csv_upper:
+ return 'EMPLOYEE'
+ elif 'PROJECT_MASTER' in csv_upper:
+ return 'PROJECT'
+ elif 'DEPARTMENT_CODE' in csv_upper:
+ return 'DEPARTMENT'
+ elif 'ORGANIZATION_MASTER' in csv_upper:
+ return 'ORGANIZATION'
+ elif 'EQUP_MASTER' in csv_upper:
+ return 'EQUP'
+ elif 'MODEL_MASTER' in csv_upper:
+ return 'MODEL'
+ elif 'MATERIAL_MASTER' in csv_upper:
+ return 'MATERIAL'
+ elif 'EMPLOYEE_REFERENCE' in csv_upper:
+ return 'EMPLOYEE_REF'
+ else:
+ # 기본적으로 MDZ 부분 제거 후 첫 번째 단어 사용
+ parts = csv_name.replace('IF_MDZ_EVCP_', '').split('_')
+ return parts[0] if parts else 'COMMON'
+
+def backup_file(filepath):
+ """파일을 백업"""
+ timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
+ backup_path = f"{filepath}.backup_{timestamp}"
+ shutil.copy2(filepath, backup_path)
+ print(f"백업 파일 생성: {backup_path}")
+ return backup_path
+
+def process_wsdl_file(target):
+ """WSDL 파일 처리"""
+ csv_file_path = os.path.join(CSV_DIR, f'{target}.csv')
+ wsdl_file_path = os.path.join(WSDL_DIR, f'{target}.wsdl')
+
+ try:
+ # 백업 생성
+ backup_path = backup_file(wsdl_file_path)
+
+ print_color(f"\n🚀 처리 시작: {target}", Colors.BOLD)
+ print_info("CSV 데이터 로딩 중...")
+ csv_data = load_csv_data(target)
+ print_success(f"CSV에서 {len(csv_data)}개 필드 정보 로드됨")
+
+ # WSDL 파일 읽기
+ with open(wsdl_file_path, 'r', encoding='utf-8') as f:
+ lines = f.readlines()
+
+ # complexType 정보 추출
+ complex_types = get_complex_type_info(lines)
+ print_success(f"WSDL에서 {len(complex_types)}개 complexType 정보 추출됨")
+ except Exception as e:
+ print_error(f"파일 초기화 실패 - {target}: {str(e)}")
+ return
+
+ # complexType 구조 출력 (디버깅용)
+ for type_name, fields in complex_types.items():
+ print_color(f"\nComplexType: {type_name}", Colors.MAGENTA)
+ for field in fields:
+ print(f" - {field['name']} ({field['type']}) {'[Array]' if field['is_array'] else ''}")
+
+ new_lines = []
+ i = 0
+ changes_made = 0
+ processed_fields = []
+ skipped_fields = []
+ skipped_array_fields = []
+ skipped_no_csv_fields = []
+ skipped_req_wrapper_fields = []
+ verified_correct = 0
+ corrected_seq = 0
+ error_count = 0
+
+ current_complex_type = None
+ type_stack = [] # 중첩된 complexType을 추적하기 위한 스택
+
+ while i < len(lines):
+ line = lines[i]
+ line_processed = False
+
+ try:
+ # complexType 시작 태그 확인
+ type_match = re.search(r'<xsd:complexType\s+name="([^"]+)"', line)
+ if type_match:
+ if current_complex_type:
+ type_stack.append(current_complex_type)
+ current_complex_type = type_match.group(1)
+ print_color(f"현재 complexType: {current_complex_type}", Colors.BLUE)
+
+ # complexType 종료 태그 확인
+ if '</xsd:complexType>' in line:
+ if type_stack:
+ current_complex_type = type_stack.pop()
+ print_color(f"이전 complexType으로 복귀: {current_complex_type}", Colors.BLUE)
+ else:
+ current_complex_type = None
+
+ # CSV에 있는 xsd:element 필드인지 확인
+ if should_process_line(line, csv_data):
+ field_name = extract_field_name_from_line(line)
+
+ if field_name and current_complex_type:
+ processed_fields.append(field_name)
+ print_color(f"처리 중인 필드: {field_name} (complexType: {current_complex_type})", Colors.CYAN)
+
+ # 바로 위 라인이 주석인지 확인 (공백 라인 건너뛰면서)
+ comment_line_index = -1
+ j = len(new_lines) - 1
+
+ while j >= 0:
+ prev_line = new_lines[j].strip()
+ if prev_line == '':
+ j -= 1
+ continue
+ elif prev_line.startswith('<!--') and prev_line.endswith('-->'):
+ comment_line_index = j
+ break
+ else:
+ break
+
+ if comment_line_index >= 0:
+ existing_comment = new_lines[comment_line_index]
+
+ if has_seq_in_comment(existing_comment):
+ indentation = get_indentation(line)
+ expected_comment = create_comment(field_name, csv_data, indentation, current_complex_type)
+
+ if expected_comment:
+ if comments_are_equal(existing_comment, expected_comment):
+ verified_correct += 1
+ print_success(f" 주석 검증 통과")
+ else:
+ new_lines[comment_line_index] = expected_comment + '\n'
+ changes_made += 1
+ corrected_seq += 1
+ print_warning(f" SEQ 주석 수정: {field_name}")
+ print(f" 기존: {existing_comment.strip()}")
+ print(f" 수정: {expected_comment}")
+ else:
+ indentation = get_indentation(line)
+ new_comment = create_comment(field_name, csv_data, indentation, current_complex_type)
+ if new_comment:
+ new_lines[comment_line_index] = new_comment + '\n'
+ changes_made += 1
+ print_warning(f" 주석 교체: {field_name}")
+ else:
+ indentation = get_indentation(line)
+ new_comment = create_comment(field_name, csv_data, indentation, current_complex_type)
+ if new_comment:
+ new_lines.append(new_comment + '\n')
+ changes_made += 1
+ print_info(f" 주석 추가: {field_name}")
+
+ line_processed = True
+ elif '<xsd:element' in line and 'name="' in line:
+ field_name = extract_field_name_from_line(line)
+ if field_name:
+ skip_reason = get_skip_reason(line, csv_data)
+ if skip_reason == "ARRAY_TYPE":
+ skipped_array_fields.append(field_name)
+ skipped_fields.append(field_name)
+ print_color(f"건너뛴 필드: {field_name} (배열 타입 - maxOccurs 속성)", Colors.YELLOW)
+ elif skip_reason == "REQ_WRAPPER_TYPE":
+ skipped_req_wrapper_fields.append(field_name)
+ skipped_fields.append(field_name)
+ print_color(f"건너뛴 필드: {field_name} (요청 래퍼 타입 - 정상)", Colors.BLUE)
+ elif skip_reason == "NO_CSV_DATA":
+ skipped_no_csv_fields.append(field_name)
+ skipped_fields.append(field_name)
+ print_error(f"건너뛴 필드: {field_name} (CSV에 데이터 없음 - 확인 필요!)")
+ else:
+ # 기타 이유로 건너뛴 경우
+ skipped_fields.append(field_name)
+ print_warning(f"건너뛴 필드: {field_name} (기타 이유)")
+
+ except Exception as e:
+ print_error(f"라인 처리 중 오류 발생 (라인 {i+1}): {str(e)}")
+ print_error(f"문제 라인: {line.strip()}")
+ error_count += 1
+
+ new_lines.append(line)
+ i += 1
+
+ # 결과 저장
+ try:
+ with open(wsdl_file_path, 'w', encoding='utf-8') as f:
+ f.writelines(new_lines)
+ print_success("WSDL 파일 저장 완료")
+ except Exception as e:
+ print_error(f"WSDL 파일 저장 실패: {str(e)}")
+ return
+
+ # 결과 출력
+ print_color(f"\n{'='*50}", Colors.BOLD)
+ print_color(f"처리 완료: {target}", Colors.BOLD)
+ print_color(f"{'='*50}", Colors.BOLD)
+
+ print_info(f"CSV 파일: {csv_file_path}")
+ print_info(f"WSDL 파일: {wsdl_file_path}")
+ print_info(f"백업 파일: {backup_path}")
+
+ print_color(f"\n📊 처리 통계:", Colors.MAGENTA)
+ print(f" 총 변경사항: {changes_made}개")
+ print(f" 처리된 CSV 필드 수: {len(processed_fields)}")
+ print(f" 건너뛴 필드 총계: {len(skipped_fields)}")
+ print(f" ├─ 배열 타입 (정상): {len(skipped_array_fields)}개")
+ print(f" ├─ 요청 래퍼 타입 (정상): {len(skipped_req_wrapper_fields)}개")
+ print_color(f" └─ CSV 누락 (문제): {len(skipped_no_csv_fields)}개", Colors.RED if len(skipped_no_csv_fields) > 0 else Colors.WHITE)
+ print(f" 검증 통과한 SEQ 주석: {verified_correct}개")
+ print(f" 수정된 SEQ 주석: {corrected_seq}개")
+ print(f" 오류 발생 횟수: {error_count}개")
+
+ # CSV 누락 필드 상세 표시
+ if len(skipped_no_csv_fields) > 0:
+ print_error(f"\n⚠️ CSV에 누락된 필드 목록 (확인 필요):")
+ for field in skipped_no_csv_fields:
+ print_error(f" - {field}")
+
+ # 최종 결과
+ if error_count > 0:
+ print_error(f"\n⚠️ {error_count}개의 오류가 발생했습니다. 로그를 확인해주세요.")
+
+ if len(skipped_no_csv_fields) > 0:
+ print_error(f"\n🚨 주의: {len(skipped_no_csv_fields)}개의 필드가 CSV에 누락되어 있습니다!")
+ print_error("이 필드들은 WSDL에 정의되어 있지만 CSV 스펙에 없어 주석이 생성되지 않았습니다.")
+
+ if changes_made == 0:
+ print_success(f"\n모든 주석이 정확합니다! (검증된 SEQ 주석: {verified_correct}개)")
+ else:
+ print_success(f"\n{changes_made}개의 주석이 수정되었습니다.")
+ if corrected_seq > 0:
+ print(f" - 기존 SEQ 주석 수정: {corrected_seq}개")
+ if changes_made - corrected_seq > 0:
+ print(f" - 새로 추가/교체된 주석: {changes_made - corrected_seq}개")
+
+if __name__ == "__main__":
+ try:
+ csv_files = get_csv_files()
+ print_color(f"\n🎯 발견된 CSV 파일: {len(csv_files)}개", Colors.BOLD)
+ print_info(f"처리할 파일 목록: {csv_files}")
+
+ total_files = len(csv_files)
+ success_count = 0
+ error_count = 0
+
+ for i, target in enumerate(csv_files, 1):
+ print_color(f"\n{'='*60}", Colors.BOLD)
+ print_color(f"진행률: {i}/{total_files} - {target}", Colors.BOLD)
+ print_color(f"{'='*60}", Colors.BOLD)
+
+ try:
+ process_wsdl_file(target)
+ success_count += 1
+ except Exception as e:
+ print_error(f"파일 처리 실패 - {target}: {str(e)}")
+ error_count += 1
+
+ # 최종 통계
+ print_color(f"\n{'='*60}", Colors.BOLD)
+ print_color("🏁 전체 처리 완료", Colors.BOLD)
+ print_color(f"{'='*60}", Colors.BOLD)
+
+ print_success(f"성공: {success_count}개 파일")
+ if error_count > 0:
+ print_error(f"실패: {error_count}개 파일")
+ else:
+ print_success("모든 파일이 성공적으로 처리되었습니다!")
+
+ # 발견된 SAP 타입들 출력 (PostgreSQL 매핑용)
+ print_color(f"\n{'='*60}", Colors.BOLD)
+ print_color("📊 발견된 SAP 타입 통계 (PostgreSQL 매핑용)", Colors.MAGENTA)
+ print_color(f"{'='*60}", Colors.BOLD)
+
+ print_color(f"\n🔤 고유 SAP 타입 ({len(discovered_sap_types)}개):", Colors.CYAN)
+ for sap_type in sorted(discovered_sap_types):
+ print(f" - {sap_type}")
+
+ print_color(f"\n📏 타입-사이즈 조합 ({len(type_size_combinations)}개):", Colors.YELLOW)
+ for combination in sorted(type_size_combinations):
+ print(f" - {combination}")
+
+ print_color(f"\n💡 PostgreSQL 타입 매핑 가이드 (XML 파싱/조회용):", Colors.GREEN)
+ print(" 🎯 실용적 접근법:")
+ print(" - 대부분 → VARCHAR(500) 또는 TEXT (XML에서 모든 데이터가 문자열로 전송)")
+ print(" - 숫자 검색/정렬이 필요한 경우만 → NUMERIC")
+ print(" - 날짜 검색/정렬이 필요한 경우만 → DATE/TIMESTAMP")
+ print("")
+ print(" 📋 SAP 타입별 상세:")
+ print(" - CHAR, VARC, LCHR → VARCHAR(해당사이즈) 또는 TEXT")
+ print(" - DATS (날짜) → VARCHAR(8) 또는 DATE (YYYYMMDD 형식)")
+ print(" - TIMS (시간) → VARCHAR(6) 또는 TIME (HHMMSS 형식)")
+ print(" - CURR, DEC, QUAN, NUMB, NUMC, FLTP → VARCHAR 또는 NUMERIC")
+ print(" - CUKY (통화), UNIT (단위), LANG (언어) → VARCHAR(10)")
+ print("")
+ print(" ⚡ 권장: 초기에는 모두 VARCHAR/TEXT로 시작하고 필요시 변환")
+
+ except Exception as e:
+ print_error(f"스크립트 실행 중 치명적 오류 발생: {str(e)}")
+ exit(1) \ No newline at end of file