Skip to Content
๋ฐ”์ฝ”๋“œ ์„œ๋ฒ„์„์ง€ ํŒŒ์ดํ”„๋ผ์ธ

์„์ง€ ํŒŒ์ดํ”„๋ผ์ธ โ€” 3์—ด ์—‘์…€ ์กฐ๋ฆฝ

์—ญํ• : ๊ฐœ๋…
๋Œ€์ƒ ๋…์ž: ์ด์‹ ๋‹ด๋‹น ยท ๋ถ„์„๊ฐ€ ยท ๊ฐœ๋ฐœ์ž
์„ ํ–‰ ์กฐ๊ฑด: ์•„ํ‚คํ…์ฒ˜ ๋จผ์ € ์ฝ๊ธฐ ๊ถŒ์žฅ

๐Ÿ—บ ๊ด€๊ณ„๋„ ๋ฐ”๋กœ ๊ฐ€๊ธฐ โ†’ ย ยทย  ์ด ํŽ˜์ด์ง€๋Š” SQLยท์ปฌ๋Ÿผ ๊ธฐ์ค€. 6ํ…Œ์ด๋ธ” ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์€ ๊ด€๊ณ„๋„ ํŽ˜์ด์ง€ ํ’€ ํ™”๋ฉด์—์„œ.

MSSQL RTEGMS_BARCODE_UNION ์˜ dbo.SP_SUPPLY_REPORT ์ €์žฅ ํ”„๋กœ์‹œ์ €๊ฐ€ ๊ณต๊ธ‰๋‚ด์—ญ๋ณด๊ณ  ์„์ง€ 3์—ด ์—‘์…€์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •. ์ด ํŽ˜์ด์ง€๋Š” โ€œB์—ด ์ผ๋ จ๋ฒˆํ˜ธโ€ยทโ€œC์—ด ๋ฌถ์Œ๋ฒˆํ˜ธโ€ ๊ฐ€ ์–ด๋””์—์„œ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ง€๋Š”์ง€์— ์ง‘์ค‘ํ•œ๋‹ค.

์‹œ์Šคํ…œ ๊ฒฝ๊ณ„ยท์™ธ๋ถ€ ์—ฐ๊ฒฐยทํ†ต๊ณ„๋Š” ์•„ํ‚คํ…์ฒ˜ ์ฐธ๊ณ .

TL;DR

  • SP_SUPPLY_REPORT @GUBUN='S' ํ˜ธ์ถœ ํ•œ ๋ฒˆ์— ์‹ค์‹œ๊ฐ„ SELECT ๋กœ ์กฐ๋ฆฝ. ๊ฒฐ๊ณผ๋Š” ์–ด๋””์—๋„ ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • A์—ด = ROW_NO, B์—ด = BARCODE ์—์„œ SUBSTRING, C์—ด = ๋‘ ํฌ์žฅ ํ…Œ์ด๋ธ”์˜ MAPPING_GS1_BARCODE CASE ์กฐ๋ฆฝ, D/E์—ด = ๋นˆ ๋ฌธ์ž์—ด.
  • ์žฌ๋ฃŒ ํ…Œ์ด๋ธ” 5๊ฐœ + ๊ฐ‘์ง€ ์‚ฌ๋ณธ 1๊ฐœ = ์ด 6๊ฐœ ํ…Œ์ด๋ธ”์„ JOIN. ๋‹ค๋ฅธ ์บ์‹œ ๊ฒฝ๋กœ๋Š” ์—†์Œ.

๐Ÿ” โ›ถ ์„์ง€ ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ํ’€ ํ™”๋ฉด ์—ด๊ธฐ โ†’ ยท ๊ด€๊ณ„๋„ ํ—ˆ๋ธŒ ยท ์ฐธ์กฐ ํ…Œ์ด๋ธ” ์ƒ์„ธ

์ฝ๋Š” ๋ฒ•

  • ๋…ธ๋“œ ์ˆ˜: 14 (SP ๊ฐ€ ์ง์ ‘ ์ฐธ์กฐํ•˜๋Š” 6 + ์ฃผ๋ณ€ ํ—ˆ๋ธŒ 7 + Oracle ์›์ฒœ 1).
  • ์—ฃ์ง€: ์‹ค์„  14 (FK 5 ยท Strong 5 ยท Weak 4) โ€” ์‹ค์ œ ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ๋…ผ๋ฆฌ ์—ฐ๊ฒฐ ๋ชจ๋‘ ํฌํ•จ.
  • ์นดํ…Œ๊ณ ๋ฆฌ ์ƒ‰: ๊ฐ์‚ฌ(_AT)ยท๋ฐฑ์—… ์„ฑ๊ฒฉ ๋…ธ๋“œ๋Š” ์—ฐํ•œ ํ†ค, ์™ธ๋ถ€(Oracle) ๋Š” ์™ธ๊ณฝ ์ ์„  ๋А๋‚Œ. ๋‚˜๋จธ์ง€๋Š” ๊ณตํ†ต ํ†ค.

ํ•ต์‹ฌ ํ—ˆ๋ธŒ

  • GD_ITEM_ISSUE โ€” ์ถœ๊ณ  ํ—ค๋”. ITEM_ISSUE_ID ๋กœ HISTORYยทRETURN_GOODS ์™€ 1:N, DESPATCH_ORDER_NO ๋กœ GD_CUST_ISSUE ์™€ ํ˜•์ œ.
  • GD_ITEM_ISSUE_HISTORY โ€” ๋‚ฑ๊ฐœ BARCODE ๋ณด๊ด€. MARKING_ORDER.PUBLISH_GS1_128 ์—์„œ ๋ฐœํ–‰๋œ ๊ฐ’์ด ๋ณต์‚ฌ๋จ.
  • GD_PACKING_RESULT_ITEM โ†’ GD_PACKING_RESULT_PACK โ€” ๋‚ฑ๊ฐœโ†’์ค‘๋ฐ•์Šคโ†’๋Œ€๋ฐ•์Šค SSCC ์ฒด์ธ, ITEM_STOCK_ID ๋กœ GD_ITEM_STOCK ๊ณต์œ .
  • SUPPLY_REPORT โ€” ๊ฐ‘์ง€ 21์—ด ๋กœ์ปฌ ์‚ฌ๋ณธ(Oracle OPENQUERY ๋ณต์ œ).

1. 3์—ด ์—‘์…€ ์—ด ๋งคํ•‘

์—ด์ด๋ฆ„์กฐ๋ฆฝ ๊ทœ์น™์›์ฒœ ์ปฌ๋Ÿผ
A์—ฐ๋ฒˆAA.ROW_NOSUPPLY_REPORT.ROW_NO
B์ผ๋ จ๋ฒˆํ˜ธBARCODE ์—์„œ '21' ๋’ค 20์ž๋ฆฌ SUBSTRINGGD_ITEM_ISSUE_HISTORY.BARCODE ยท RETURN_GOODS.BARCODE
C๋ฌถ์Œ๋ฒˆํ˜ธ(00)x[/(00)y] ๋˜๋Š” (01)g(21)s[/(01)g(21)s]GD_PACKING_RESULT_ITEM.MAPPING_GS1_BARCODE ยท GD_PACKING_RESULT_PACK.MAPPING_GS1_BARCODE
DRFID tag ์ฝ”๋“œ'' ๊ณ ์ •โ€”
E๋น„๊ณ '' ๊ณ ์ •โ€”

2. ์ฐธ์กฐ ํ…Œ์ด๋ธ” 6๊ฐœ + FK

MARKING_ORDER.PUBLISH_GS1_128 โ”€โ”€(๋ณต์‚ฌ)โ”€โ”€โ–ถ GD_ITEM_ISSUE_HISTORY.BARCODE โ”‚ ITEM_ISSUE_ID (FK) โ–ผ GD_ITEM_ISSUE (์ถœ๊ณ  ํ—ค๋”) โ”‚ ๋˜๋Š” RETURN_GOODS (๋ฐ˜ํ’ˆ, ๊ฐ™์€ FK) โ”‚ BARCODE = GS1_BOX_BARCODE_NO โ”‚ โ–ผ โ”‚ GD_PACKING_RESULT_ITEM โ”€โ”€ MAPPING_GS1_BARCODE โ”€โ–ถ GD_PACKING_RESULT_PACK (๋‚ฑ๊ฐœโ†’์ค‘๋ฐ•์Šค) (์ค‘๋ฐ•์Šคโ†’๋Œ€๋ฐ•์Šค, ๊ฐ™์€ SSCC ์ฒด์ธ) SUPPLY_REPORT (๊ฐ‘์ง€ ์‚ฌ๋ณธ) โ”€โ”€ ORDER_NO/ORDER_SEQ ๋กœ GD_ITEM_ISSUE ์™€ ์กฐ์ธ
  • SUPPLY_REPORT ๋งŒ SP ๊ฐ€ INSERT ํ•œ๋‹ค (๊ฐ‘์ง€ 21์—ด ์ €์žฅ). ๋‚˜๋จธ์ง€ 5๊ฐœ๋Š” SELECT ์ „์šฉ.
  • ๋‚ฑ๊ฐœ BARCODE ์˜ ๋ฐœํ–‰ ์›์ฒœ์€ MARKING_ORDER.PUBLISH_GS1_128 โ€” ๋ฐœํ–‰ ํ›„ ์ถœ๊ณ  ์‹œ GD_ITEM_ISSUE_HISTORY.BARCODE ๋กœ ๋ณต์‚ฌ๋˜๋ฉฐ ๋‘ ์ปฌ๋Ÿผ ๊ฐ’์€ ์‹ค์ธก์ƒ ๋ฌธ์ž์—ด ๋™์ผ.

3. ํ”„๋กœ์‹œ์ € ์‹œ๊ทธ๋‹ˆ์ฒ˜

EXEC dbo.SP_SUPPLY_REPORT @GUBUN nvarchar(20), -- 'ERP' = ๊ฐ‘์ง€ ๋ณต์ œ, 'S' = ์„์ง€ ์กฐํšŒ @search_date nvarchar(20), -- DELIV_DATE, 'YYYYMMDD' @message nvarchar(1000) OUTPUT;

4. ํ•ต์‹ฌ SQL

4-1. ๊ฐ‘์ง€ ๋ณต์ œ โ€” @GUBUN='ERP' (๋ณธ๋ฌธ 63~77ํ–‰)

-- Oracle UNION_ERP.SUPPLY_REPORT 21์—ด โ†’ MSSQL dbo.SUPPLY_REPORT ๋กœ ๋‚ ์งœ ๋‹จ์œ„ ๋ณต์ œ EXEC ('INSERT INTO #SUPPLY_REPORT_TEMP (...) SELECT ..., SALES_CODE AS CUST_CD, ITEM_CODE AS ITEM_CD FROM OPENQUERY(UNION_ERP, ''SELECT ROW_NUMBER() OVER (ORDER BY ORDER_NO,ORDER_SEQ) AS ROW_NO, SUPPLIER_BISNO, ..., SALES_CODE, ITEM_CODE FROM SUPPLY_REPORT WHERE DELIV_DATE = <search_date>'')') DELETE SUPPLY_REPORT WHERE DELIV_DATE = @search_date INSERT INTO SUPPLY_REPORT SELECT * FROM #SUPPLY_REPORT_TEMP

4-2. ์„์ง€ ์กฐ๋ฆฝ โ€” @GUBUN='S' (๋ณธ๋ฌธ 207~235ํ–‰)

SELECT AA.ROW_NO, -- A RTRIM(SUBSTRING(BB.BARCODE, CHARINDEX('21', BB.BARCODE)+3, 20)) -- B AS SERIAL_NO, CASE WHEN SUBSTRING(CC.MAPPING_GS1_BARCODE,1,2)='00' THEN -- C '(00)'+SUBSTRING(CC.MAPPING_GS1_BARCODE,3,18) + CASE WHEN ISNULL(DD.MAPPING_GS1_BARCODE,'')='' THEN '' ELSE '/(00)'+SUBSTRING(DD.MAPPING_GS1_BARCODE,3,18) END WHEN SUBSTRING(CC.MAPPING_GS1_BARCODE,1,2)='01' THEN '(01)'+SUBSTRING(CC.MAPPING_GS1_BARCODE,3,14) +'(21)'+SUBSTRING(CC.MAPPING_GS1_BARCODE,19,LEN(CC.MAPPING_GS1_BARCODE)-18) + CASE WHEN ISNULL(DD.MAPPING_GS1_BARCODE,'')='' THEN '' ELSE '/(01)'+SUBSTRING(DD.MAPPING_GS1_BARCODE,3,14) +'(21)'+SUBSTRING(DD.MAPPING_GS1_BARCODE,19,LEN(DD.MAPPING_GS1_BARCODE)-18) END END AS PACKING_NO, '' AS RFID_CODE, '' AS REMARK, BB.DESPATCH_ORDER_NO, BB.ORDER_SEQ FROM SUPPLY_REPORT AA INNER JOIN ( SELECT DESPATCH_ORDER_NO, ORDER_SEQ, BARCODE FROM GD_ITEM_ISSUE A INNER JOIN GD_ITEM_ISSUE_HISTORY B ON A.ITEM_ISSUE_ID=B.ITEM_ISSUE_ID WHERE B.BARCODE LIKE '%21%' UNION ALL SELECT DESPATCH_ORDER_NO, ORDER_SEQ, BARCODE FROM GD_ITEM_ISSUE A INNER JOIN RETURN_GOODS B ON A.ITEM_ISSUE_ID=B.ITEM_ISSUE_ID WHERE B.BARCODE LIKE '%21%' ) BB ON AA.ORDER_NO=BB.DESPATCH_ORDER_NO AND AA.ORDER_SEQ=BB.ORDER_SEQ LEFT JOIN GD_PACKING_RESULT_ITEM CC ON BB.BARCODE = CC.GS1_BOX_BARCODE_NO LEFT JOIN GD_PACKING_RESULT_PACK DD ON CC.MAPPING_GS1_BARCODE = DD.GS1_BOX_BARCODE_NO WHERE AA.DELIV_DATE = @search_date ORDER BY ROW_NO

์ฝ๋Š” ๋ฒ•

  • BARCODE LIKE '%21%' : GS1-128 AI(21) SN ํฌํ•จ ๋‚ฑ๊ฐœ๋งŒ. ์‹ค์ธก 20๋งŒ ์ƒ˜ํ”Œ ์ผ์น˜์œจ 99.9% (์ˆœ์ˆ˜ GTIN-13 170๊ฑด๋งŒ ์ œ์™ธ โ€” ์ด ๊ฒฝ์šฐ SN ์—†๋Š” ๋ ˆ๊ฑฐ์‹œ).
  • B์—ด SN: '21' ์œ„์น˜ +3 ๋ถ€ํ„ฐ 20์ž๋ฆฌ (FNC1 \x1D ๊ตฌ๋ถ„์ž ๋’ค).
  • C์—ด ๋ฌถ์Œ๋ฒˆํ˜ธ: CC prefix 00 โ†’ (00)x[/(00)y] (SSCC ํฌ๋งท), 01 โ†’ (01)g(21)s[/(01)g(21)s] (GTIN+SN). DD NULL ์ด๋ฉด / ์—†์ด 1๋‹จ.

5. ์ €์žฅ ์—ฌ๋ถ€ ยท ์„ฑ๋Šฅ

๋ฐ์ดํ„ฐMSSQL ์ €์žฅ๋น„๊ณ 
๊ฐ‘์ง€ 21์—ดO โ€” SUPPLY_REPORTOracle ๋ณต์ œ๋ณธ, ๋‚ ์งœ ๋‹จ์œ„ DELETE+INSERT
์„์ง€ AยทBยทC์—ดX@GUBUN='S' ํ˜ธ์ถœ๋งˆ๋‹ค SELECT ๋กœ ์‹ค์‹œ๊ฐ„ ์กฐ๋ฆฝ
๋‚ฑ๊ฐœ BARCODEO โ€” GD_ITEM_ISSUE_HISTORY / RETURN_GOODS๋ฐœํ–‰ ์›์ฒœ MARKING_ORDER.PUBLISH_GS1_128
๋ฐ•์Šค ๋งคํ•‘O โ€” GD_PACKING_RESULT_ITEM/PACKMAPPING_GS1_BARCODE ์ฒด์ธ

์žฌ์กฐํšŒ๊ฐ€ ๋น ๋ฅธ ์ด์œ ๋Š” ๊ฐ‘์ง€ ์‚ฌ๋ณธ์ด MSSQL ์— ์ด๋ฏธ ์žˆ๊ธฐ ๋•Œ๋ฌธ. ์„์ง€ ์กฐ๋ฆฝ์€ ์‹ ๊ทœยท์žฌ์กฐํšŒ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์‹ค์‹œ๊ฐ„ ์ˆ˜ํ–‰.

6. ์‹ค ์ƒ˜ํ”Œ (2026-04-23 ์‹ค์ธก)

ํ•ญ๋ชฉ๊ฐ’
์ „ํ‘œ๋ฒˆํ˜ธ20260423-0039
๊ฑฐ๋ž˜ ๊ตฌ๋ถ„11 (์ •์ƒ๋งค์ถœ โ€” common.GD301)
ITEM_ISSUE_ID892220
๋‚ฑ๊ฐœ BARCODE010880665502133717290111102603\x1D212603000000007249
GTIN(01) / EXP(17) / LOT(10) / SN(21)08806655021337 / 290111 / 2603 / 2603000000007249
์ค‘๋ฐ•์Šค SSCC (CC.MAPPING_GS1_BARCODE)00188066550010319025
๋Œ€๋ฐ•์Šค SSCC (DD.MAPPING_GS1_BARCODE)00288066550000362441
์„์ง€ B์—ด2603000000007249
์„์ง€ C์—ด(00)188066550010319025/(00)288066550000362441

์žฌํ˜„ SQL

EXEC dbo.SP_SUPPLY_REPORT @GUBUN='S', @search_date='20260423', @message=NULL; -- ๋‚ฑ๊ฐœ BARCODE ํ•˜๋‚˜๋กœ ๋ฐ•์Šค ์ฒด์ธ ์—ญ์ถ”์  DECLARE @bc nvarchar(300) = '010880665502133717290111102603' + CHAR(29) + '212603000000007249'; SELECT LEFT(ci.MAPPING_GS1_BARCODE,30) AS ์ค‘๋ฐ•์Šค_SSCC, ci.MAPPING_BOX_TYPE AS ์ค‘๋ฐ•์Šค_TYPE, pk.BOX_TYPE AS ์ค‘๋ฐ•์Šค_์ž์‹ _TYPE, LEFT(pk.MAPPING_GS1_BARCODE,30) AS ๋Œ€๋ฐ•์Šค_SSCC, pk.MAPPING_BOX_TYPE AS ๋Œ€๋ฐ•์Šค_TYPE FROM dbo.GD_PACKING_RESULT_ITEM ci LEFT JOIN dbo.GD_PACKING_RESULT_PACK pk ON pk.GS1_BOX_BARCODE_NO = ci.MAPPING_GS1_BARCODE WHERE ci.GS1_BOX_BARCODE_NO = @bc;

๊ทผ๊ฑฐ: dbo.SP_SUPPLY_REPORT ๋ณธ๋ฌธ + DMV ์ฐธ์กฐ ๋ชฉ๋ก + FK + ๋ฐ”์ฝ”๋“œ ํฌ๋งท 20๋งŒ ์ƒ˜ํ”Œ + ์‹ค ์ƒ˜ํ”Œ 1๊ฑด (2026-04-23).


๊ด€๋ จ ๋ฌธ์„œ

๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ: ์„์ง€ ํŒŒ์ดํ”„๋ผ์ธ, supply report, pipeline, ์กฐ๋ฆฝ, assembly, SP_SUPPLY_REPORT, ๋ฌถ์Œ๋ฒˆํ˜ธ, PACKING_NO

Last updated on