SAP Business One 9.2: 系统存储过程之一

SAP Bysiness one 9.2在 示例 系统里 SQL Server 数据库名称: sap560 ,

以下是部分存储过程代码:

use sap560
go

CREATE PROCEDURE _TmSp_BinLocationContentDetailListCRPrint
	@type int,
	@binSublevels nvarchar(500),-- (sublevel1From|sublevel1To|sublevel2From|sublevel2To|...)
	@binAttributes nvarchar(500),-- (attr1From|attr1To|attr2From|attr2To|...)
	@binCodeFromTo nvarchar(500),-- (binLocationFrom|binLocationTo|)
	@itemCodeFromTo nvarchar(110),
	@itemGroups nvarchar(max),
	@batchFromTo nvarchar(300),
	@serialFromTo nvarchar(300),
	@binAbsSet nvarchar(max),
	@batchAbs nvarchar(100),
	@serialAbs nvarchar(100),
	@whsCodeFromTo nvarchar(100), -- (warehouseIncludingFrom|warehouseIncludingTo|warehouseExcludingFrom|warehouseExcludingTo|)
	@flag int
	
	AS
	DECLARE
		@BIN_LOC_CONTENT_DETAIL_LIST int = 3,
		@snbOnly nvarchar(1),
		@includeNonBinWhs nvarchar(1),
		@T_SQL nvarchar(max),
		@ADD_RANGE_COND_STR nvarchar(max) = 
		N'IF @from_value <> '''' 
			SET @T_SQL = @T_SQL + '' AND '' + @table_alias + ''.'' + @table_field + ''>=(N'''''' + @from_value + '''''')''
		IF @to_value <> ''''
			SET @T_SQL = @T_SQL + '' AND '' + @table_alias + ''.'' + @table_field + ''<=(N'''''' + @to_value + '''''')''',
		
		@ADD_BIN_SUBLEVEL_COND nvarchar(max) = 
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''SL1Code''
		SET @from_value = @binSbl1From
		SET @to_value = @binSbl1To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''SL2Code''
		SET @from_value = @binSbl2From
		SET @to_value = @binSbl2To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''SL3Code''
		SET @from_value = @binSbl3From
		SET @to_value = @binSbl3To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''SL4Code''
		SET @from_value = @binSbl4From
		SET @to_value = @binSbl4To
		$ADD_RANGE_COND_STR',
		
		@ADD_BIN_ATTR_COND nvarchar(max) =
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''Attr1Val''
		SET @from_value = @binAttr1From
		SET @to_value = @binAttr1To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr2Val''
		SET @from_value = @binAttr2From
		SET @to_value = @binAttr2To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr3Val''
		SET @from_value = @binAttr3From
		SET @to_value = @binAttr3To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr4Val''
		SET @from_value = @binAttr4From
		SET @to_value = @binAttr4To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr5Val''
		SET @from_value = @binAttr5From
		SET @to_value = @binAttr5To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr6Val''
		SET @from_value = @binAttr6From
		SET @to_value = @binAttr6To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr7Val''
		SET @from_value = @binAttr7From
		SET @to_value = @binAttr7To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr8Val''
		SET @from_value = @binAttr8From
		SET @to_value = @binAttr8To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr9Val''
		SET @from_value = @binAttr9From
		SET @to_value = @binAttr9To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr10Val''
		SET @from_value = @binAttr10From
		SET @to_value = @binAttr10To
		$ADD_RANGE_COND_STR',
		
		@ADD_BIN_CODE_COND nvarchar(max) =
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''BinCode''
		SET @from_value = @binLocCodeFrom
		SET @to_value = @binLocCodeTo
		$ADD_RANGE_COND_STR',
		
		@ADD_WHS_INCLUD_COND nvarchar(max) =
		N'SET @table_field = ''WhsCode''
		SET @from_value = @whsIncludingFrom
		SET @to_value = @whsIncludingTo
		$ADD_RANGE_COND_STR',
		
		@ADD_WHS_EXCLUD_COND nvarchar(max) =
		N'SET @table_field = ''WhsCode''
		SET @from_value = @whsExcludingFrom
		SET @to_value = @whsExcludingTo
		IF @from_value <> '''' OR @to_value <> ''''
			BEGIN
				SET @T_SQL = @T_SQL + '' AND (''
				IF @from_value <> ''''
					SET @T_SQL = @T_SQL + @table_alias + ''.'' + @table_field + ''<(N'''''' + @from_value + '''''')''
				IF @to_value <> ''''
					BEGIN
						IF @from_value <> ''''
							SET @T_SQL = @T_SQL + '' OR '' + @table_alias + ''.'' + @table_field + ''>(N'''''' + @to_value + '''''')''
					
	ELSE
							SET @T_SQL = @T_SQL + @table_alias + ''.'' + @table_field + ''>(N'''''' + @to_value + '''''')''
					END
				SET @T_SQL = @T_SQL + '') ''
			END',
			
		@ADD_BATCH_RANGE_COND nvarchar(max) =
		N'SET @table_field = ''BatchNumber''
		SET @from_value = @batchNumberFrom
		SET @to_value = @batchNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''BatchAttr1''
		SET @from_value = @batchAttr1From
		SET @to_value = @batchAttr1To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''BatchAttr2''
		SET @from_value = @batchAttr2From
		SET @to_value = @batchAttr2To
		$ADD_RANGE_COND_STR',
		
		@ADD_SERIAL_RANGE_COND nvarchar(max) = 
		N'SET @table_field = ''SerialNumber''
		SET @from_value = @serialNumberFrom
		SET @to_value = @serialNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''MnfSerial''
		SET @from_value = @mfrSerialNumberFrom
		SET @to_value = @mfrSerialNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''LotNumber''
		SET @from_value = @lotNumberFrom
		SET @to_value = @lotNumberTo
		$ADD_RANGE_COND_STR',
		
		@ADD_BTN_BATCH_RANGE_COND nvarchar(max) =
		N'SET @table_alias = @T_OBTN
		SET @table_field = ''DistNumber''
		SET @from_value = @batchNumberFrom
		SET @to_value = @batchNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''MnfSerial''
		SET @from_value = @batchAttr1From
		SET @to_value = @batchAttr1To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''LotNumber''
		SET @from_value = @batchAttr2From
		SET @to_value = @batchAttr2To
		$ADD_RANGE_COND_STR',
		
		@ADD_SRN_SERIAL_RANGE_COND nvarchar(max) = 
		N'SET @table_alias = @T_OSRN
		SET @table_field = ''DistNumber''
		SET @from_value = @serialNumberFrom
		SET @to_value = @serialNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''MnfSerial''
		SET @from_value = @mfrSerialNumberFrom
		SET @to_value = @mfrSerialNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''LotNumber''
		SET @from_value = @lotNumberFrom
		SET @to_value = @lotNumberTo
		$ADD_RANGE_COND_STR',
		
		@ADD_ITEM_CODE_RANGE_COND nvarchar(max) =
		N'SET @table_alias = @T_OITM
		SET @table_field = ''ItemCode''
		SET @from_value = @itemCodeFrom
		SET @to_value = @itemCodeTo
		$ADD_RANGE_COND_STR',
		
		@ADD_ITEM_GRP_CODE_COND nvarchar(max) =
		N'IF @itemGroups <> ''''
			SET @T_SQL = @T_SQL + '' AND '' + @T_OITM + ''.ItmsGrpCod IN ('' + @itemGroups + '') ''',
			
		@ADD_DISPLAY_INACTIVE_ITEM_COND nvarchar(max) =
		N'SELECT @displayInactiveItem = DspFrznITM FROM OADM
		IF @displayInactiveItem = ''N''
			SET @T_SQL = @T_SQL + '' AND ('' + @T_OITM + ''.ItemCode IS NULL OR (''+ @T_OITM + ''.validFor = (N''''Y'''') OR ('' 
						+ @T_OITM + ''.frozenFor = (N''''Y'''') AND ('' + @T_OITM + ''.frozenFrom IS NOT NULL OR '' + @T_OITM
						+ ''.frozenTo IS NOT NULL)) OR ('' + @T_OITM + ''.validFor = (N''''N'''') AND '' + @T_OITM 
						+ ''.frozenFor = (N''''N'''') )))'' ',
		
		@ParmDefinition nvarchar(max) =
		N'
		@binSublevels nvarchar(500),
		@binAttributes nvarchar(500),
		@binCodeFromTo nvarchar(500),
		@itemCodeFromTo nvarchar(110),
		@itemGroups nvarchar(max),
		@batchFromTo nvarchar(300),
		@serialFromTo nvarchar(300),
		@binAbsSet nvarchar(max),
		@batchAbs nvarchar(100),
		@serialAbs nvarchar(100),
		@whsCodeFromTo nvarchar(100),
		@snbOnly nvarchar(1),
		@includeNonBinWhs nvarchar(1),
	
		@T_SQL nvarchar(max) = N'''',
		
		@BIN_SUBLEVEL_LENGTH int = 50,
		@BIN_ATTR_LENGTH int = 20,
		@BIN_LOC_CODE_LENGTH int = 228,
		@ITEM_CODE_LENGTH int = 50,
		@SNB_NUMBER_LENGTH int = 36,
		@SNB_ATTR_LENGTH int = 32,
		@WHS_CODE_LENGTH int = 8,
		
		@BIN_SUBLEVEL_COUNT int = 4,
		@BIN_ATTR_COUNT int = 10,
		
		@T_OBIN nvarchar(4) = N''OBIN'',
		@T_OIBQ nvarchar(4) = N''OIBQ'',
		@T_OBBQ nvarchar(4) = N''OBBQ'',
		@T_OSBQ nvarchar(4) = N''OSBQ'',
		@T_OITM nvarchar(4) = N''OITM'',
		@T_OBTN nvarchar(4) = N''OBTN'',
		@T_OSRN nvarchar(4) = N''OSRN'',
		@T_OITB nvarchar(4) = N''OITB'',
		@T_OITW nvarchar(4) = N''OITW'',
		@T_OWHS nvarchar(4) = N''OWHS'',
		@T_OBTQ nvarchar(4) = N''OBTQ'',
		@T_OSRQ nvarchar(4) = N''OSRQ'',
		
		@T_ITM_RTRICT nvarchar(10) = N''ITM_RTRICT'',
		@T_BATCH_RTRICT nvarchar(12) = N''BATCH_RTRICT'',
		
		@ITM_RTRICT_SPC_ITM nvarchar(4) = N''1'',
		@ITM_RTRICT_SNG_ITM nvarchar(4) = N''2'',
		@ITM_RTRICT_SPC_ITM_GROUP nvarchar(4) = N''3'',
		@ITM_RTRICT_SNG_ITM_GROUP nvarchar(4) = N''4'',

		@binSbl1From nvarchar(50) = N'''',
		@binSbl1To nvarchar(50) = N'''',
		@binSbl2From nvarchar(50) = N'''',
		@binSbl2To nvarchar(50) = N'''',
		@binSbl3From nvarchar(50) = N'''',
		@binSbl3To nvarchar(50) = N'''',		
		@binSbl4From nvarchar(50) = N'''',
		@binSbl4To nvarchar(50) = N'''',
		
		@binAttr1From nvarchar(20) = N'''',
		@binAttr1To nvarchar(20) = N'''',
		@binAttr2From nvarchar(20) = N'''',
		@binAttr2To nvarchar(20) = N'''',
		@binAttr3From nvarchar(20) = N'''',
		@binAttr3To nvarchar(20) = N'''',
		@binAttr4From nvarchar(20) = N'''',
		@binAttr4To nvarchar(20) = N'''',
		@binAttr5From nvarchar(20) = N'''',
		@binAttr5To nvarchar(20) = N'''',
		@binAttr6From nvarchar(20) = N'''',
		@binAttr6To nvarchar(20) = N'''',
		@binAttr7From nvarchar(20) = N'''',
		@binAttr7To nvarchar(20) = N'''',
		@binAttr8From nvarchar(20) = N'''',
		@binAttr8To nvarchar(20) = N'''',
		@binAttr9From nvarchar(20) = N'''',
		@binAttr9To nvarchar(20) = N'''',
		@binAttr10From nvarchar(20) = N'''',
		@binAttr10To nvarchar(20) = N'''',
		
		@binLocCodeFrom nvarchar(228) = N'''',
		@binLocCodeTo nvarchar(228) = N'''',
		
		@itemCodeFrom nvarchar(50) = N'''',
		@itemCodeTo nvarchar(50) = N'''',
		
		@batchNumberFrom nvarchar(36) = N'''',
		@batchNumberTo nvarchar(36) = N'''',
		@batchAttr1From nvarchar(32) = N'''',
		@batchAttr1To nvarchar(32) = N'''',
		@batchAttr2From nvarchar(32) = N'''',
		@batchAttr2To nvarchar(32) = N'''',
		
		@serialNumberFrom nvarchar(36) = N'''',
		@serialNumberTo nvarchar(36) = N'''',
		@mfrSerialNumberFrom nvarchar(32) = N'''',
		@mfrSerialNumberTo nvarchar(32) = N'''',
		@lotNumberFrom nvarchar(32) = N'''',
		@lotNumberTo nvarchar(32) = N'''',
		
		@whsIncludingFrom nvarchar(8) = N'''',
		@whsIncludingTo nvarchar(8) = N'''',
		
		@whsExcludingFrom nvarchar(8) = N'''',
		@whsExcludingTo nvarchar(8) = N'''',
		
		@displayInactiveItem nvarchar(1) = N'''',
		
		@T_SQL_ITEM_RTRICT nvarchar(3000) = N'''',
		@T_SQL_BATCH_RTRICT nvarchar(1000) = N'''',
		
		@V_INT int = 0,
		@table_alias nvarchar(20) = N'''',
		@table_field nvarchar(20) = N'''',
		@from_value nvarchar(250) = N'''',
		@to_value nvarchar(250) = N'''',
		
		@COMMA nvarchar(1) = N'','',
		
		@BIN_LOC_TABLE_BASE_FIELD nvarchar(2000) = N'''' ',
		
		@PREPARE_SQL nvarchar(max) =
		N'IF @binSublevels <> ''''
			BEGIN
				SET @V_INT = 1
				SET @binSbl1From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl1To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl2From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl2To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl3From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl3To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl4From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl4To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
			END
			
		IF @binAttributes <> ''''
			BEGIN	
				SET @V_INT = 1
				SET @binAttr1From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr1To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr2From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr2To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr3From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr3To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr4From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr4To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr5From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr5To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr6From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr6To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr7From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr7To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr8From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr8To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr9From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr9To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr10From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr10To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
			END
			
		IF @binCodeFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @binLocCodeFrom = RTRIM(SUBSTRING(@binCodeFromTo, @V_INT, @BIN_LOC_CODE_LENGTH))
				SET @V_INT = @V_INT + @BIN_LOC_CODE_LENGTH
				SET @binLocCodeTo = RTRIM(SUBSTRING(@binCodeFromTo, @V_INT, @BIN_LOC_CODE_LENGTH))
			END
			
		IF @itemCodeFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @itemCodeFrom = RTRIM(SUBSTRING(@itemCodeFromTo, @V_INT, @ITEM_CODE_LENGTH))
				SET @V_INT = @V_INT + @ITEM_CODE_LENGTH
				SET @itemCodeTo = RTRIM(SUBSTRING(@itemCodeFromTo, @V_INT, @ITEM_CODE_LENGTH))
			END
			
		IF @batchFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @batchNumberFrom = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				SET @batchNumberTo = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				
				SET @batchAttr1From = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @batchAttr1To = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @batchAttr2From = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @batchAttr2To = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
			END
			
		IF @serialFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @serialNumberFrom = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				SET @serialNumberTo = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				
				SET @mfrSerialNumberFrom = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @mfrSerialNumberTo = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @lotNumberFrom = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @lotNumberTo = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
			END
			
		IF @whsCodeFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @whsIncludingFrom = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
				SET @V_INT = @V_INT + @WHS_CODE_LENGTH
				SET @whsIncludingTo = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
				SET @V_INT = @V_INT + @WHS_CODE_LENGTH
				SET @whsExcludingFrom = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
				SET @V_INT = @V_INT + @WHS_CODE_LENGTH
				SET @whsExcludingTo = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
			END

		SET @binAbsSet = LTRIM(RTRIM(@binAbsSet))
		IF @binAbsSet <> ''''
			BEGIN
				DECLARE
					@start int = 1,
					@length int = 1,
					@BinAbs nvarchar(10)
					
				CREATE TABLE #TMP_TABLE_BIN_ABS (BinAbs INTEGER)
				SET @V_INT = CHARINDEX(@COMMA, @binAbsSet)
					
				WHILE @V_INT <> 0
					BEGIN
						SET @length = @V_INT - @start
						SET @BinAbs = SUBSTRING(@binAbsSet, @start, @length)
						
						INSERT INTO #TMP_TABLE_BIN_ABS VALUES(@BinAbs)
						
						SET @start = @V_INT + 1
						SET @V_INT = CHARINDEX(@COMMA, @binAbsSet, @start)
					END
						
				IF @V_INT = 0
					BEGIN
						SET @length = LEN(@binAbsSet) + 1 - @start
						SET @BinAbs = SUBSTRING(@binAbsSet, @start, @length)
						INSERT INTO #TMP_TABLE_BIN_ABS VALUES(@BinAbs)
					END		
			END
			
		SET @BIN_LOC_TABLE_BASE_FIELD = 
		@T_OBIN + ''.BinCode,'' 
		+ @T_OBIN + ''.WhsCode,'' 
		+ @T_OBIN + ''.SL1Code,'' 
		+ @T_OBIN + ''.SL2Code,'' 
		+ @T_OBIN + ''.SL3Code,''
		+ @T_OBIN + ''.SL4Code,'' 
		+ @T_OBIN + ''.Disabled,'' 
		+ @T_OBIN + ''.ReceiveBin,'' 
		+ @T_OBIN + ''.Descr,'' 
		+ @T_OBIN + ''.AltSortCod,''
		+ @T_OBIN + ''.BarCode,'' 
		+ ''CASE WHEN '' + @T_OBIN + ''.MinLevel = 0 THEN NULL ELSE '' + @T_OBIN + ''.MinLevel END AS MinLevel, '' 
		+ ''CASE WHEN '' + @T_OBIN + ''.MaxLevel = 0 THEN NULL ELSE '' + @T_OBIN + ''.MaxLevel END AS MaxLevel, ''  
		+ @T_OBIN + ''.Attr1Val,'' 
		+ @T_OBIN + ''.Attr2Val,'' 
		+ @T_OBIN + ''.Attr3Val,'' 
		+ @T_OBIN + ''.Attr4Val,'' 
		+ @T_OBIN + ''.Attr5Val,'' 
		+ @T_OBIN + ''.Attr6Val,'' 
		+ @T_OBIN + ''.Attr7Val,''
		+ @T_OBIN + ''.Attr8Val,'' 
		+ @T_OBIN + ''.Attr9Val,''
		+ @T_OBIN + ''.Attr10Val,'' 
		+ @T_OBIN + ''.RtrictType,'' 
		+ @T_OBIN + ''.RtrictResn,''
		+ @T_OBIN + ''.RtrictDate,'' 
			
		SET @T_SQL_ITEM_RTRICT = 
		N''(SELECT '' + @T_OBIN + ''.AbsEntry AS ''''BinAbs'''','' 
			+ @T_OBIN + ''.SpcItmCode AS ''''RestrictedTo'''' FROM '' 
			+ @T_OBIN + '' WHERE '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SPC_ITM 
		+ '' UNION ALL ''
		+ '' SELECT '' + @T_OIBQ + ''.BinAbs AS ''''BinAbs'''', '' + @T_OIBQ + ''.ItemCode AS ''''RestrictedTo'''' FROM '' 
		+ @T_OIBQ + '' WHERE '' + @T_OIBQ + ''.BinAbs IN (SELECT AbsEntry FROM '' + @T_OBIN + '' WHERE '' 
		+ @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SNG_ITM + '') AND '' + @T_OIBQ + ''.OnHandQty > 0 GROUP BY '' 
		+ @T_OIBQ + ''.BinAbs, '' + @T_OIBQ + ''.ItemCode HAVING COUNT('' + @T_OIBQ + ''.BinAbs) < 2 '' 
		+ '' UNION ALL '' 
		+ '' SELECT '' + @T_OBIN + ''.AbsEntry AS ''''BinAbs'''', '' + @T_OITB + ''.ItmsGrpNam AS ''''RestrictedTo'''' FROM '' 
		+ @T_OBIN + '' INNER JOIN '' + @T_OITB + '' ON '' + @T_OBIN + ''.SpcItmGrpC = '' + @T_OITB + ''.ItmsGrpCod''
		+ '' WHERE '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SPC_ITM_GROUP + 
		'' UNION ALL '' +
		'' SELECT '' + @T_OIBQ + ''.BinAbs AS ''''BinAbs'''', '' + '' MAX('' + @T_OITB + ''.ItmsGrpNam) '' 
		+ '' AS ''''RestrictedTo'''' FROM '' + @T_OIBQ + '' INNER JOIN '' + @T_OITM + '' ON '' 
		+ @T_OIBQ + ''.ItemCode = '' + @T_OITM + ''.ItemCode '' + '' INNER JOIN '' + @T_OITB + '' ON ''
		+ @T_OITM + ''.ItmsGrpCod = '' + @T_OITB + ''.ItmsGrpCod '' + '' WHERE '' 
		+ @T_OIBQ + ''.BinAbs IN (SELECT AbsEntry FROM '' + @T_OBIN + '' WHERE '' + @T_OBIN + ''.ItmRtrictT = '' 
		+ @ITM_RTRICT_SNG_ITM_GROUP + '') AND '' + @T_OIBQ + ''.OnHandQty > 0 GROUP BY '' + @T_OIBQ
		+ ''.BinAbs, '' + @T_OITM + ''.ItmsGrpCod HAVING COUNT('' + @T_OIBQ + ''.BinAbs) < 2) AS '' + @T_ITM_RTRICT
		
		SET @T_SQL_BATCH_RTRICT =
		N''(SELECT '' + @T_OBBQ + ''.BinAbs AS ''''BinAbs'''', '' + ''Min('' + @T_OBTN + ''.DistNumber) AS ''''Batch'''' FROM '' 
		+ @T_OBBQ + '' INNER JOIN '' + @T_OBTN + '' ON '' + @T_OBBQ + ''.SnBMDAbs = '' + @T_OBTN + ''.AbsEntry WHERE '' 
		+ @T_OBBQ + ''.BinAbs IN (SELECT AbsEntry FROM '' + @T_OBIN + '' WHERE '' + @T_OBIN + ''.SngBatch = ''''Y'''') AND '' 
		+ @T_OBBQ + ''.OnHandQty <> 0 GROUP BY '' + @T_OBBQ + ''.BinAbs, '' + @T_OBBQ
		+ ''.SnBMDAbs HAVING COUNT(*) < 2) AS '' + @T_BATCH_RTRICT '
		
	BEGIN
	SET NOCOUNT ON;
	IF @type = @BIN_LOC_CONTENT_DETAIL_LIST
	BEGIN
		IF @flag & 2 = 2
			SET @snbOnly = N'Y'
		ELSE
			SET @snbOnly = N'N'
			
		IF @flag & 8 = 8
			SET @includeNonBinWhs = N'Y'
		ELSE
			SET @includeNonBinWhs = N'N'
				
		SET @ADD_BIN_SUBLEVEL_COND = REPLACE(@ADD_BIN_SUBLEVEL_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_BIN_ATTR_COND = REPLACE(@ADD_BIN_ATTR_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_BIN_CODE_COND = REPLACE(@ADD_BIN_CODE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_WHS_INCLUD_COND = REPLACE(@ADD_WHS_INCLUD_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_BATCH_RANGE_COND = REPLACE(@ADD_BATCH_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_SERIAL_RANGE_COND = REPLACE(@ADD_SERIAL_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_BTN_BATCH_RANGE_COND = REPLACE(@ADD_BTN_BATCH_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_SRN_SERIAL_RANGE_COND = REPLACE(@ADD_SRN_SERIAL_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_ITEM_CODE_RANGE_COND = REPLACE(@ADD_ITEM_CODE_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		
		SET @T_SQL =
		N'DECLARE
			@FROM_TABLE_SQL nvarchar(max),
			@BATCH_NOT_DEFINED_SQL nvarchar(max),
			@SERIAL_NOT_DEFINED_SQL nvarchar(max),
			@BATCH_DEFINED_SQL nvarchar(max),
			@SERIAL_DEFINED_SQL nvarchar(max),
			@NOT_SNB_SQL nvarchar(max),
			@T_QTY nvarchar(10) = N''QTY_TABLE'',
			@T_QTY_NON_BIN nvarchar(20) = N''T_QTY_NON_BIN'',
			
			@SELECT_BASE_SQL_4_NON_BIN_WHS nvarchar(max),
			@FROM_TABLE_SQL_4_NON_BIN_WHS nvarchar(max),
			@BATCH_NOT_DEFINED_SQL_4_NON_BIN_WHS nvarchar(max),
			@SERIAL_NOT_DEFINED_SQL_4_NON_BIN_WHS nvarchar(max),
			@BATCH_DEFINED_SQL_4_NON_BIN_WHS nvarchar(max),
			@SERIAL_DEFINED_SQL_4_NON_BIN_WHS nvarchar(max),
			@NOT_SNB_SQL_4_NON_BIN_WHS nvarchar(max)
		BEGIN
			$PREPARE_SQL
			
			SET @FROM_TABLE_SQL = 
			N'' FROM '' + @T_OIBQ + '' LEFT OUTER JOIN '' + @T_OBBQ + '' ON '' + @T_OIBQ + ''.BinAbs = ''
			+ @T_OBBQ + ''.BinAbs AND '' + @T_OIBQ + ''.ItemCode = '' + @T_OBBQ + ''.ItemCode AND ''
			+ @T_OBBQ + ''.OnHandQty <> 0 LEFT OUTER JOIN '' + @T_OSBQ + '' ON '' + @T_OIBQ + ''.BinAbs = ''
			+ @T_OSBQ + ''.BinAbs AND '' + @T_OIBQ + ''.ItemCode = '' + @T_OSBQ + ''.ItemCode AND ''
			+ @T_OSBQ + ''.OnHandQty <> 0 LEFT OUTER JOIN '' + @T_OBTN + '' ON '' + @T_OBBQ + ''.SnBMDAbs = ''
			+ @T_OBTN + ''.AbsEntry AND '' + @T_OBBQ + ''.ItemCode = '' + @T_OBTN + ''.ItemCode ''
			+ '' LEFT OUTER JOIN '' + @T_OSRN + '' ON '' + @T_OSBQ + ''.SnBMDAbs = '' + @T_OSRN + ''.AbsEntry AND ''
			+ @T_OSBQ + ''.ItemCode = '' + @T_OSRN + ''.ItemCode ''
					
			SET @BATCH_NOT_DEFINED_SQL =
			N'' SELECT '' + @T_OIBQ + ''.BinAbs,''
			+ @T_OIBQ + ''.ItemCode,''
			+ ''MAX('' + @T_OIBQ + ''.OnHandQty) - '' + ''SUM('' + @T_OBBQ + ''.OnHandQty) AS ''''OnHandQty'''',''
			+ ''NULL AS ''''BatchNumber'''',''
			+ ''NULL AS ''''BatchAttr1'''',''
			+ ''NULL AS ''''BatchAttr2'''',''
			+ ''NULL AS ''''SerialNumber'''',''
			+ ''NULL AS ''''MnfSerial'''',''
			+ ''NULL AS ''''LotNumber'''',''
			+ ''NULL AS ''''BatchAbs'''',''
			+ ''NULL AS ''''SerialAbs'''' ''
			+ @FROM_TABLE_SQL
			+ '' WHERE '' + @T_OIBQ + ''.OnHandQty <> 0 AND '' + @T_OBBQ + ''.AbsEntry IS NOT NULL ''
			+ '' GROUP BY '' + @T_OIBQ + ''.BinAbs,'' + @T_OIBQ + ''.ItemCode '' 
			+ '' HAVING MAX('' + @T_OIBQ + ''.OnHandQty) > '' + ''SUM('' + @T_OBBQ + ''.OnHandQty) ''
					
			SET @SERIAL_NOT_DEFINED_SQL = 
			N'' SELECT '' + @T_OIBQ + ''.BinAbs,''
			+ @T_OIBQ + ''.ItemCode,''
			+ ''MAX('' + @T_OIBQ + ''.OnHandQty) - '' + ''SUM('' + @T_OSBQ + ''.OnHandQty) AS ''''OnHandQty'''',''
			+ ''NULL AS ''''BatchNumber'''',''
			+ ''NULL AS ''''BatchAttr1'''',''
			+ ''NULL AS ''''BatchAttr2'''',''
			+ ''NULL AS ''''SerialNumber'''',''
			+ ''NULL AS ''''MnfSerial'''',''
			+ ''NULL AS ''''LotNumber'''',''
			+ ''NULL AS ''''BatchAbs'''',''
			+ ''NULL AS ''''SerialAbs'''' ''
			+ @FROM_TABLE_SQL
			+ '' WHERE '' + @T_OIBQ + ''.OnHandQty <> 0 AND '' + @T_OSBQ + ''.AbsEntry IS NOT NULL ''
			+ '' GROUP BY '' + @T_OIBQ + ''.BinAbs,'' + @T_OIBQ + ''.ItemCode '' 
			+ '' HAVING MAX('' + @T_OIBQ + ''.OnHandQty) > '' + ''SUM('' + @T_OSBQ + ''.OnHandQty) ''
					
			SET @BATCH_DEFINED_SQL =
			N'' SELECT '' + @T_OIBQ + ''.BinAbs,''
			+ @T_OIBQ + ''.ItemCode,''
			+ @T_OBBQ + ''.OnHandQty,''
			+ @T_OBTN + ''.DistNumber AS ''''BatchNumber'''',''
			+ @T_OBTN + ''.MnfSerial AS ''''BatchAttr1'''',''
			+ @T_OBTN + ''.LotNumber AS ''''BatchAttr2'''',''
			+ @T_OSRN + ''.DistNumber AS ''''SerialNumber'''',''
			+ @T_OSRN + ''.MnfSerial AS ''''MnfSerial'''',''
			+ @T_OSRN + ''.LotNumber AS ''''LotNumber'''',''
			+ @T_OBTN + ''.AbsEntry AS ''''BatchAbs'''',''
			+ @T_OSRN + ''.AbsEntry AS ''''SerialAbs'''' ''
			+ @FROM_TABLE_SQL
			+ '' WHERE '' + @T_OIBQ + ''.OnHandQty <> 0 AND '' + @T_OBBQ + ''.AbsEntry IS NOT NULL ''
					
			SET @SERIAL_DEFINED_SQL = 
			N'' SELECT '' + @T_OIBQ + ''.BinAbs,''
			+ @T_OIBQ + ''.ItemCode,''
			+ @T_OSBQ + ''.OnHandQty,''
			+ @T_OBTN + ''.DistNumber AS ''''BatchNumber'''',''
			+ @T_OBTN + ''.MnfSerial AS ''''BatchAttr1'''',''
			+ @T_OBTN + ''.LotNumber AS ''''BatchAttr2'''',''
			+ @T_OSRN + ''.DistNumber AS ''''SerialNumber'''',''
			+ @T_OSRN + ''.MnfSerial AS ''''MnfSerial'''',''
			+ @T_OSRN + ''.LotNumber AS ''''LotNumber'''',''
			+ @T_OBTN + ''.AbsEntry AS ''''BatchAbs'''',''
			+ @T_OSRN + ''.AbsEntry AS ''''SerialAbs'''' ''
			+ @FROM_TABLE_SQL
			+ '' WHERE '' + @T_OIBQ + ''.OnHandQty <> 0 AND '' + @T_OSBQ + ''.AbsEntry IS NOT NULL ''
					
			SET @NOT_SNB_SQL = 
			N'' SELECT '' + @T_OIBQ + ''.BinAbs,''
			+ @T_OIBQ + ''.ItemCode,''
			+ @T_OIBQ + ''.OnHandQty,''
			+ @T_OBTN + ''.DistNumber AS ''''BatchNumber'''',''
			+ @T_OBTN + ''.MnfSerial AS ''''BatchAttr1'''',''
			+ @T_OBTN + ''.LotNumber AS ''''BatchAttr2'''',''
			+ @T_OSRN + ''.DistNumber AS ''''SerialNumber'''',''
			+ @T_OSRN + ''.MnfSerial AS ''''MnfSerial'''',''
			+ @T_OSRN + ''.LotNumber AS ''''LotNumber'''',''
			+ @T_OBTN + ''.AbsEntry AS ''''BatchAbs'''',''
			+ @T_OSRN + ''.AbsEntry AS ''''SerialAbs'''' ''
			+ @FROM_TABLE_SQL
			+ '' WHERE '' + @T_OIBQ + ''.OnHandQty <> 0 AND '' + @T_OBBQ + ''.AbsEntry IS NULL AND ''
			+ @T_OSBQ + ''.AbsEntry IS NULL ''
			
			SET @SELECT_BASE_SQL_4_NON_BIN_WHS = 
			N'' SELECT NULL AS BinCode, '' + @T_QTY_NON_BIN + ''.WhsCode AS WhsCode, ''
			+ '' NULL AS SL1Code, NULL AS SL2Code, NULL AS SL3Code, NULL AS SL4Code, ''
			+ '' NULL AS Disabled, NULL AS ReceiveBin, NULL AS Descr, NULL AS AltSortCod, ''
			+ '' NULL AS BarCode, NULL AS MinLevel, NULL AS MaxLevel, NULL AS Attr1Val, NULL AS Attr2Val, ''
			+ '' NULL AS Attr3Val, NULL AS Attr4Val, NULL AS Attr5Val, NULL AS Attr6Val, NULL AS Attr7Val, ''
			+ '' NULL AS Attr8Val, NULL AS Attr9Val, NULL AS Attr10Val, NULL AS RtrictType, NULL AS RtrictResn, ''
			+ '' NULL AS RtrictDate, NULL AS ItmRtrictT, NULL AS RestrictedTo, NULL AS SngBatch, NULL AS Batch, ''
			+ @T_OITM + ''.ItemCode AS ItemCode, '' + @T_OITM + ''.ItemName AS ItemName, ''
			+ ''(SELECT ItmsGrpNam FROM '' + @T_OITB
			+ '' WHERE '' + @T_OITB + ''.ItmsGrpCod = '' + @T_OITM + ''.ItmsGrpCod ) AS ItmsGrpNam, ''
			+ @T_OITM + ''.CodeBars AS CodeBars, '' + @T_OITM + ''.InvntryUom AS InvntryUom, ''
			
			SET @FROM_TABLE_SQL_4_NON_BIN_WHS =
			N'' FROM '' + @T_OITW + '' INNER JOIN '' + @T_OWHS + '' ON ''
			+ @T_OITW + ''.WhsCode = '' + @T_OWHS + ''.WhsCode ''
			+ '' LEFT OUTER JOIN '' + @T_OBTQ + '' ON '' + @T_OBTQ
			+ ''.WhsCode = '' + @T_OITW + ''.WhsCode AND '' + @T_OBTQ
			+ ''.ItemCode = '' + @T_OITW + ''.ItemCode LEFT OUTER JOIN ''
			+ @T_OSRQ + '' ON '' + @T_OSRQ + ''.WhsCode = '' + @T_OITW + ''.WhsCode ''
			+ '' AND '' + @T_OSRQ + ''.ItemCode = '' + @T_OITW + ''.ItemCode ''
			+ '' WHERE '' + @T_OWHS + ''.BinActivat = ''''N'''' ''
			
			SET @BATCH_NOT_DEFINED_SQL_4_NON_BIN_WHS = 
			N'' SELECT '' + @T_OITW + ''.ItemCode, ''
			+ @T_OITW + ''.WhsCode, ''
			+ '' MAX( '' + @T_OITW + ''.OnHand) - SUM('' + @T_OBTQ + ''.Quantity) AS OnHandQty, ''
			+ '' NULL AS BatchAbs, NULL AS SerialAbs ''
			+ @FROM_TABLE_SQL_4_NON_BIN_WHS
			+ '' AND '' + @T_OITW + ''.OnHand <> 0 AND '' + @T_OBTQ + ''.AbsEntry IS NOT NULL ''
			+ '' GROUP BY '' + @T_OITW + ''.WhsCode, '' + @T_OITW + ''.ItemCode ''
			+ '' HAVING MAX( '' + @T_OITW + ''.OnHand) > SUM('' + @T_OBTQ + ''.Quantity) ''
			
			SET @SERIAL_NOT_DEFINED_SQL_4_NON_BIN_WHS = 
			N'' SELECT '' + @T_OITW + ''.ItemCode, ''
			+ @T_OITW + ''.WhsCode, ''
			+ '' MAX( '' + @T_OITW + ''.OnHand) - SUM('' + @T_OSRQ + ''.Quantity) AS OnHandQty, ''
			+ '' NULL AS BatchAbs, NULL AS SerialAbs ''
			+ @FROM_TABLE_SQL_4_NON_BIN_WHS
			+ '' AND '' + @T_OITW + ''.OnHand <> 0 AND '' + @T_OSRQ + ''.AbsEntry IS NOT NULL ''
			+ '' GROUP BY '' + @T_OITW + ''.WhsCode, '' + @T_OITW + ''.ItemCode ''
			+ '' HAVING MAX( '' + @T_OITW + ''.OnHand) > SUM('' + @T_OSRQ + ''.Quantity) ''
			
			SET @BATCH_DEFINED_SQL_4_NON_BIN_WHS =
			N'' SELECT '' + @T_OITW + ''.ItemCode, ''
			+ @T_OITW + ''.WhsCode, ''
			+ @T_OBTQ + ''.Quantity AS OnHandQty, ''
			+ @T_OBTQ + ''.MdAbsEntry AS BatchAbs, ''
			+ @T_OSRQ + ''.MdAbsEntry AS SerialAbs ''
			+ @FROM_TABLE_SQL_4_NON_BIN_WHS
			+ '' AND '' + @T_OBTQ + ''.Quantity <> 0 AND '' + @T_OBTQ + ''.AbsEntry IS NOT NULL ''	

			SET @SERIAL_DEFINED_SQL_4_NON_BIN_WHS = 
			N'' SELECT '' + @T_OITW + ''.ItemCode, ''
			+ @T_OITW + ''.WhsCode, ''
			+ @T_OSRQ + ''.Quantity AS OnHandQty, ''
			+ @T_OBTQ + ''.MdAbsEntry AS BatchAbs, ''
			+ @T_OSRQ + ''.MdAbsEntry AS SerialAbs ''
			+ @FROM_TABLE_SQL_4_NON_BIN_WHS
			+ '' AND '' + @T_OSRQ + ''.Quantity <> 0 AND '' + @T_OSRQ + ''.AbsEntry IS NOT NULL ''

			SET @NOT_SNB_SQL_4_NON_BIN_WHS = 
			N'' SELECT '' + @T_OITW + ''.ItemCode, ''
			+ @T_OITW + ''.WhsCode, ''
			+ @T_OITW + ''.OnHand AS OnHandQty, ''
			+ @T_OBTQ + ''.MdAbsEntry AS BatchAbs, ''
			+ @T_OSRQ + ''.MdAbsEntry AS SerialAbs ''
			+ @FROM_TABLE_SQL_4_NON_BIN_WHS
			+ '' AND '' + @T_OITW + ''.OnHand <> 0 AND '' + @T_OBTQ + ''.AbsEntry IS NULL AND ''
			+ @T_OSRQ + ''.AbsEntry IS NULL ''
			
			IF @includeNonBinWhs = N''Y''
				SET @T_SQL =
				N''SELECT A.BinCode, A.WhsCode, A.SL1Code, A.SL2Code, A.SL3Code, A.SL4Code, ''
				+ '' A.Disabled, A.ReceiveBin, A.Descr, A.AltSortCod, A.BarCode, A.MinLevel, ''
				+ '' A.MaxLevel, A.Attr1Val, A.Attr2Val, A.Attr3Val, A.Attr4Val, A.Attr5Val, ''
				+ '' A.Attr6Val, A.Attr7Val, A.Attr8Val, A.Attr9Val, A.Attr10Val, A.RtrictType, ''
				+ '' A.RtrictResn, A.RtrictDate, A.ItmRtrictT, A.RestrictedTo, A.SngBatch, A.Batch, ''
				+ '' A.ItemCode, A.ItemName, A.ItmsGrpNam, A.CodeBars, A.InvntryUom, A.OnHandQty, ''
				+ '' A.BatchNumber, A.BatchAttr1, A.BatchAttr2, A.SerialNumber, A.MnfSerial, A.LotNumber, ''
				+ '' A.QtyBelowMin, A.ReplenishmentQty FROM (''
					
			SET @T_SQL = @T_SQL +
			N''SELECT '' + @BIN_LOC_TABLE_BASE_FIELD
				+ @T_OBIN + ''.ItmRtrictT, '' 
				+ @T_ITM_RTRICT + ''.RestrictedTo, '' 
				+ @T_OBIN + ''.SngBatch, '' 
				+ @T_BATCH_RTRICT + ''.Batch,''
				+ @T_OITM + ''.ItemCode,''
				+ @T_OITM + ''.ItemName,''
				+ ''(SELECT ItmsGrpNam FROM '' + @T_OITB
				+ '' WHERE '' + @T_OITB + ''.ItmsGrpCod = '' + @T_OITM + ''.ItmsGrpCod ) AS ItmsGrpNam, ''
				+ @T_OITM + ''.CodeBars,''
				+ @T_OITM + ''.InvntryUom,''
				+ @T_QTY + ''.OnHandQty,''
				+ @T_QTY + ''.BatchNumber,''
				+ @T_QTY + ''.BatchAttr1,''
				+ @T_QTY + ''.BatchAttr2,''
				+ @T_QTY + ''.SerialNumber,''
				+ @T_QTY + ''.MnfSerial,''
				+ @T_QTY + ''.LotNumber,''
				+ ''NULL AS QtyBelowMin, NULL AS ReplenishmentQty ''
			
			IF @includeNonBinWhs = N''Y''
				SET @T_SQL = @T_SQL + '', '' + @T_QTY + ''.BatchAbs AS BatchAbs, ''
							+ @T_QTY + ''.serialAbs AS serialAbs ''
			
			SET @T_SQL = @T_SQL + '' FROM '' + @T_OBIN + '' INNER JOIN ''
			+ '' ('' + @BATCH_DEFINED_SQL
			+ '' UNION ALL '' + @SERIAL_DEFINED_SQL
					
			IF @snbOnly = ''N''
				BEGIN
				SET @T_SQL = @T_SQL + '' UNION ALL '' + @NOT_SNB_SQL
							+ '' UNION ALL '' + @BATCH_NOT_DEFINED_SQL
							+ '' UNION ALL '' + @SERIAL_NOT_DEFINED_SQL
				END
					
			SET @T_SQL = @T_SQL + '') AS '' + @T_QTY + '' ON ''
						+ @T_OBIN + ''.AbsEntry = '' + @T_QTY + ''.BinAbs ''
						+ '' INNER JOIN '' + @T_OITM
						+ '' ON '' + @T_QTY + ''.ItemCode = '' + @T_OITM + ''.ItemCode ''
						+ '' LEFT OUTER JOIN ''
						+ @T_SQL_ITEM_RTRICT + '' ON '' + @T_OBIN + ''.AbsEntry = '' + @T_ITM_RTRICT + ''.BinAbs''
						+ '' LEFT OUTER JOIN '' 
						+ @T_SQL_BATCH_RTRICT + '' ON '' + @T_OBIN + ''.AbsEntry = '' + @T_BATCH_RTRICT + ''.BinAbs''
						+ '' WHERE '' + @T_OBIN + ''.[AbsEntry] > 0 ''
						
			IF @binAbsSet <> ''''
				SET @T_SQL = @T_SQL + '' AND '' + @T_OBIN + ''.AbsEntry IN (SELECT BinAbs FROM #TMP_TABLE_BIN_ABS) ''
			
			SET @table_alias = @T_OBIN			
			$ADD_WHS_INCLUD_COND
			$ADD_WHS_EXCLUD_COND
			$ADD_BIN_SUBLEVEL_COND
			$ADD_BIN_ATTR_COND
			$ADD_BIN_CODE_COND
			$ADD_ITEM_CODE_RANGE_COND
			$ADD_ITEM_GRP_CODE_COND
			
			SET @table_alias = @T_QTY
			$ADD_BATCH_RANGE_COND
			$ADD_SERIAL_RANGE_COND
					
			IF @batchAbs <> ''''
				SET @T_SQL = @T_SQL + '' AND '' + @T_QTY + ''.BatchAbs IN ('' + @batchAbs + '')''
			IF @serialAbs <> ''''
				SET @T_SQL = @T_SQL + '' AND '' + @T_QTY + ''.SerialAbs IN ('' + @serialAbs + '')''
					
			$ADD_DISPLAY_INACTIVE_ITEM_COND
			
			IF @includeNonBinWhs = N''N''			
				SET @T_SQL = @T_SQL + '' ORDER BY '' + @T_OBIN + ''.BinCode,'' + @T_OITM + ''.ItemCode,''
						+ @T_QTY + ''.BatchAbs,'' + @T_QTY + ''.SerialAbs''
						
			IF @includeNonBinWhs = N''Y''
			BEGIN
				SET @T_SQL = @T_SQL + ''UNION ALL ''
				+ @SELECT_BASE_SQL_4_NON_BIN_WHS
				+ @T_QTY_NON_BIN + ''.OnHandQty, ''
				+ @T_OBTN + ''.DistNumber AS BatchNumber, '' + @T_OBTN + ''.MnfSerial AS BatchAttr1, '' + @T_OBTN + ''.LotNumber AS BatchAttr2, ''
				+ @T_OSRN + ''.DistNumber AS SerialNumber, '' + @T_OSRN + ''.MnfSerial AS MnfSerial, '' + @T_OSRN + ''.LotNumber AS LotNumber, ''
				+ '' NULL AS QtyBelowMin, NULL AS ReplenishmentQty, ''
				+ @T_OBTN + ''.AbsEntry AS BatchAbs, ''
				+ @T_OSRN + ''.AbsEntry AS SerialAbs ''
				+ '' FROM ( '' + @BATCH_DEFINED_SQL_4_NON_BIN_WHS
				+ '' UNION ALL '' + @SERIAL_DEFINED_SQL_4_NON_BIN_WHS
				
				IF @snbOnly = ''N''
				BEGIN
					SET @T_SQL = @T_SQL + '' UNION ALL '' + @NOT_SNB_SQL_4_NON_BIN_WHS
							+ '' UNION ALL '' + @BATCH_NOT_DEFINED_SQL_4_NON_BIN_WHS
							+ '' UNION ALL '' + @SERIAL_NOT_DEFINED_SQL_4_NON_BIN_WHS
				END
				
				SET @T_SQL = @T_SQL + '') AS '' + @T_QTY_NON_BIN + '' INNER JOIN ''
							+ @T_OITM + '' ON '' + @T_QTY_NON_BIN + ''.ItemCode = '' + @T_OITM + ''.ItemCode ''
							+ '' LEFT OUTER JOIN '' + @T_OBTN + '' ON '' + @T_QTY_NON_BIN + ''.BatchAbs = ''
							+ @T_OBTN + ''.AbsEntry LEFT OUTER JOIN '' + @T_OSRN + '' ON '' + @T_QTY_NON_BIN + ''.SerialAbs = ''
							+ @T_OSRN + ''.AbsEntry ''
							+ '' WHERE '' + @T_OITM + ''.ItemCode IS NOT NULL ''
							
				SET @table_alias = @T_QTY_NON_BIN			
				$ADD_WHS_INCLUD_COND
				$ADD_WHS_EXCLUD_COND
			
				$ADD_ITEM_CODE_RANGE_COND
				$ADD_ITEM_GRP_CODE_COND
				$ADD_DISPLAY_INACTIVE_ITEM_COND
			
				$ADD_BTN_BATCH_RANGE_COND
				$ADD_SRN_SERIAL_RANGE_COND
				
				SET @T_SQL = @T_SQL + '') AS A ORDER BY A.WhsCode, A.BinCode, A.ItemCode, A.BatchAbs, A.SerialAbs ''
				
			END
				
					
			--PRINT(@T_SQL)
			EXEC(@T_SQL)
		END'
				
		SET @T_SQL = REPLACE(@T_SQL, N'$PREPARE_SQL', @PREPARE_SQL)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_WHS_INCLUD_COND', @ADD_WHS_INCLUD_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_WHS_EXCLUD_COND', @ADD_WHS_EXCLUD_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BIN_SUBLEVEL_COND', @ADD_BIN_SUBLEVEL_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BIN_ATTR_COND', @ADD_BIN_ATTR_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BIN_CODE_COND', @ADD_BIN_CODE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_ITEM_CODE_RANGE_COND', @ADD_ITEM_CODE_RANGE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_ITEM_GRP_CODE_COND', @ADD_ITEM_GRP_CODE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BATCH_RANGE_COND', @ADD_BATCH_RANGE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_SERIAL_RANGE_COND', @ADD_SERIAL_RANGE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_DISPLAY_INACTIVE_ITEM_COND', @ADD_DISPLAY_INACTIVE_ITEM_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BTN_BATCH_RANGE_COND', @ADD_BTN_BATCH_RANGE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_SRN_SERIAL_RANGE_COND', @ADD_SRN_SERIAL_RANGE_COND)
		
		EXEC sp_executesql
			@T_SQL,
			@ParmDefinition,
			@binSublevels = @binSublevels,
			@binAttributes = @binAttributes,
			@binCodeFromTo = @binCodeFromTo,
			@itemCodeFromTo = @itemCodeFromTo,
			@itemGroups = @itemGroups,
			@batchFromTo = @batchFromTo,
			@serialFromTo = @serialFromTo,
			@binAbsSet = @binAbsSet,
			@batchAbs = @batchAbs,
			@serialAbs = @serialAbs,
			@whsCodeFromTo = @whsCodeFromTo,
			@snbOnly = @snbOnly,
			@includeNonBinWhs = @includeNonBinWhs
	END
	ELSE
	BEGIN
		SET @T_SQL =
		N'SELECT
		BinCode,
		WhsCode,
		SL1Code,
		SL2Code,
		SL3Code,
		SL4Code,
		Disabled,
		ReceiveBin,
		Descr,
		AltSortCod,
		BarCode,
		MinLevel,
		MaxLevel,
		Attr1Val,
		Attr2Val,
		Attr3Val,
		Attr4Val,
		Attr5Val,
		Attr6Val,
		Attr7Val,
		Attr8Val,
		Attr9Val,
		Attr10Val,
		RtrictType,
		RtrictResn,
		RtrictDate,
		ItmRtrictT,
		NULL AS RestrictedTo,
		SngBatch,
		NULL AS Batch,
		NULL AS ItemCode,
		NULL AS ItemName,
		NULL AS ItmsGrpNam,
		NULL AS CodeBars,
		NULL AS InvntryUom,
		NULL AS OnHandQty,
		NULL AS BatchNumber,
		NULL AS BatchAttr1,
		NULL AS BatchAttr2,
		NULL AS SerialNumber,
		NULL AS MnfSerial,
		NULL AS LotNumber,
		NULL AS QtyBelowMin,
		NULL AS ReplenishmentQty
		FROM OBIN
		WHERE 1 <> 1'
		
		--PRINT(@T_SQL)
		EXEC(@T_SQL)
	END -- IF @type = @BIN_LOC_CONTENT_DETAIL_LIST
	END
 
GO 

CREATE PROCEDURE _TmSp_BinLocationContentListCRPrint
	@type int,
	@binSublevels nvarchar(500),-- (sublevel1From|sublevel1To|sublevel2From|sublevel2To|...)
	@binAttributes nvarchar(500),-- (attr1From|attr1To|attr2From|attr2To|...)
	@binCodeFromTo nvarchar(500),-- (binLocationFrom|binLocationTo|)
	@itemCodeFromTo nvarchar(110),
	@itemGroups nvarchar(max),
	@batchFromTo nvarchar(300),
	@serialFromTo nvarchar(300),
	@binAbsSet nvarchar(max),
	@batchAbs nvarchar(100),
	@serialAbs nvarchar(100),
	@whsCodeFromTo nvarchar(100), -- (warehouseIncludingFrom|warehouseIncludingTo|warehouseExcludingFrom|warehouseExcludingTo|)
	@flag int
	
	AS
	DECLARE
		@BIN_LOC_CONTENT_LIST int = 2,
		@snbOnly nvarchar(1),
		@includeNonBinWhs nvarchar(1),
		@T_SQL nvarchar(max),
		@ADD_RANGE_COND_STR nvarchar(max) = 
		N'IF @from_value <> '''' 
			SET @T_SQL = @T_SQL + '' AND '' + @table_alias + ''.'' + @table_field + ''>=(N'''''' + @from_value + '''''')''
		IF @to_value <> ''''
			SET @T_SQL = @T_SQL + '' AND '' + @table_alias + ''.'' + @table_field + ''<=(N'''''' + @to_value + '''''')''',
		
		@ADD_BIN_SUBLEVEL_COND nvarchar(max) = 
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''SL1Code''
		SET @from_value = @binSbl1From
		SET @to_value = @binSbl1To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''SL2Code''
		SET @from_value = @binSbl2From
		SET @to_value = @binSbl2To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''SL3Code''
		SET @from_value = @binSbl3From
		SET @to_value = @binSbl3To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''SL4Code''
		SET @from_value = @binSbl4From
		SET @to_value = @binSbl4To
		$ADD_RANGE_COND_STR',
		
		@ADD_BIN_ATTR_COND nvarchar(max) =
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''Attr1Val''
		SET @from_value = @binAttr1From
		SET @to_value = @binAttr1To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr2Val''
		SET @from_value = @binAttr2From
		SET @to_value = @binAttr2To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr3Val''
		SET @from_value = @binAttr3From
		SET @to_value = @binAttr3To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr4Val''
		SET @from_value = @binAttr4From
		SET @to_value = @binAttr4To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr5Val''
		SET @from_value = @binAttr5From
		SET @to_value = @binAttr5To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr6Val''
		SET @from_value = @binAttr6From
		SET @to_value = @binAttr6To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr7Val''
		SET @from_value = @binAttr7From
		SET @to_value = @binAttr7To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr8Val''
		SET @from_value = @binAttr8From
		SET @to_value = @binAttr8To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr9Val''
		SET @from_value = @binAttr9From
		SET @to_value = @binAttr9To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''Attr10Val''
		SET @from_value = @binAttr10From
		SET @to_value = @binAttr10To
		$ADD_RANGE_COND_STR',
		
		@ADD_BIN_CODE_COND nvarchar(max) =
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''BinCode''
		SET @from_value = @binLocCodeFrom
		SET @to_value = @binLocCodeTo
		$ADD_RANGE_COND_STR',
		
		@ADD_WHS_INCLUD_COND nvarchar(max) =
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''WhsCode''
		SET @from_value = @whsIncludingFrom
		SET @to_value = @whsIncludingTo
		$ADD_RANGE_COND_STR',
		
		@ADD_WHS_EXCLUD_COND nvarchar(max) =
		N'SET @table_alias = @T_OBIN
		SET @table_field = ''WhsCode''
		SET @from_value = @whsExcludingFrom
		SET @to_value = @whsExcludingTo
		IF @from_value <> '''' OR @to_value <> ''''
			BEGIN
				SET @T_SQL = @T_SQL + '' AND (''
				IF @from_value <> ''''
					SET @T_SQL = @T_SQL + @table_alias + ''.'' + @table_field + ''<(N'''''' + @from_value + '''''')''
				IF @to_value <> ''''
					BEGIN
						IF @from_value <> ''''
							SET @T_SQL = @T_SQL + '' OR '' + @table_alias + ''.'' + @table_field + ''>(N'''''' + @to_value + '''''')''
						ELSE
							SET @T_SQL = @T_SQL + @table_alias + ''.'' + @table_field + ''>(N'''''' + @to_value + '''''')''
					END
				SET @T_SQL = @T_SQL + '') ''
			END',
			
		@ADD_BATCH_RANGE_COND nvarchar(max) =
		N'SET @table_alias = @T_OBTN
		SET @table_field = ''DistNumber''
		SET @from_value = @batchNumberFrom
		SET @to_value = @batchNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''MnfSerial''
		SET @from_value = @batchAttr1From
		SET @to_value = @batchAttr1To
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''LotNumber''
		SET @from_value = @batchAttr2From
		SET @to_value = @batchAttr2To
		$ADD_RANGE_COND_STR',
		
		@ADD_SERIAL_RANGE_COND nvarchar(max) = 
		N'SET @table_alias = @T_OSRN
		SET @table_field = ''DistNumber''
		SET @from_value = @serialNumberFrom
		SET @to_value = @serialNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''MnfSerial''
		SET @from_value = @mfrSerialNumberFrom
		SET @to_value = @mfrSerialNumberTo
		$ADD_RANGE_COND_STR
		
		SET @table_field = ''LotNumber''
		SET @from_value = @lotNumberFrom
		SET @to_value = @lotNumberTo
		$ADD_RANGE_COND_STR',
		
		@ADD_ITEM_CODE_RANGE_COND nvarchar(max) =
		N'SET @table_alias = @T_OITM
		SET @table_field = ''ItemCode''
		SET @from_value = @itemCodeFrom
		SET @to_value = @itemCodeTo
		$ADD_RANGE_COND_STR',
		
		@ADD_ITEM_GRP_CODE_COND nvarchar(max) =
		N'IF @itemGroups <> ''''
			SET @T_SQL = @T_SQL + '' AND '' + @T_OITM + ''.ItmsGrpCod IN ('' + @itemGroups + '') ''',
			
		@ADD_DISPLAY_INACTIVE_ITEM_COND nvarchar(max) =
		N'SELECT @displayInactiveItem = DspFrznITM FROM OADM
		IF @displayInactiveItem = ''N''
			SET @T_SQL = @T_SQL + '' AND ('' + @T_OITM + ''.ItemCode IS NULL OR (''+ @T_OITM + ''.validFor = (N''''Y'''') OR ('' 
						+ @T_OITM + ''.frozenFor = (N''''Y'''') AND ('' + @T_OITM + ''.frozenFrom IS NOT NULL OR '' + @T_OITM
						+ ''.frozenTo IS NOT NULL)) OR ('' + @T_OITM + ''.validFor = (N''''N'''') AND '' + @T_OITM 
						+ ''.frozenFor = (N''''N'''') )))'' ',
		
		@ParmDefinition nvarchar(max) =
		N'
		@binSublevels nvarchar(500),
		@binAttributes nvarchar(500),
		@binCodeFromTo nvarchar(500),
		@itemCodeFromTo nvarchar(110),
		@itemGroups nvarchar(max),
		@batchFromTo nvarchar(300),
		@serialFromTo nvarchar(300),
		@binAbsSet nvarchar(max),
		@batchAbs nvarchar(100),
		@serialAbs nvarchar(100),
		@whsCodeFromTo nvarchar(100),
		@snbOnly nvarchar(1),
		@includeNonBinWhs nvarchar(1),
	
		@T_SQL nvarchar(max) = N'''',
		
		@BIN_SUBLEVEL_LENGTH int = 50,
		@BIN_ATTR_LENGTH int = 20,
		@BIN_LOC_CODE_LENGTH int = 228,
		@ITEM_CODE_LENGTH int = 50,
		@SNB_NUMBER_LENGTH int = 36,
		@SNB_ATTR_LENGTH int = 32,
		@WHS_CODE_LENGTH int = 8,
		
		@BIN_SUBLEVEL_COUNT int = 4,
		@BIN_ATTR_COUNT int = 10,
		
		@T_OBIN nvarchar(4) = N''OBIN'',
		@T_OIBQ nvarchar(4) = N''OIBQ'',
		@T_OBBQ nvarchar(4) = N''OBBQ'',
		@T_OSBQ nvarchar(4) = N''OSBQ'',
		@T_OITM nvarchar(4) = N''OITM'',
		@T_OBTN nvarchar(4) = N''OBTN'',
		@T_OSRN nvarchar(4) = N''OSRN'',
		@T_OITB nvarchar(4) = N''OITB'',
		@T_ITM_RTRICT nvarchar(10) = N''ITM_RTRICT'',
		@T_BATCH_RTRICT nvarchar(12) = N''BATCH_RTRICT'',
		
		@ITM_RTRICT_SPC_ITM nvarchar(4) = N''1'',
		@ITM_RTRICT_SNG_ITM nvarchar(4) = N''2'',
		@ITM_RTRICT_SPC_ITM_GROUP nvarchar(4) = N''3'',
		@ITM_RTRICT_SNG_ITM_GROUP nvarchar(4) = N''4'',

		@binSbl1From nvarchar(50) = N'''',
		@binSbl1To nvarchar(50) = N'''',
		@binSbl2From nvarchar(50) = N'''',
		@binSbl2To nvarchar(50) = N'''',
		@binSbl3From nvarchar(50) = N'''',
		@binSbl3To nvarchar(50) = N'''',		
		@binSbl4From nvarchar(50) = N'''',
		@binSbl4To nvarchar(50) = N'''',
		
		@binAttr1From nvarchar(20) = N'''',
		@binAttr1To nvarchar(20) = N'''',
		@binAttr2From nvarchar(20) = N'''',
		@binAttr2To nvarchar(20) = N'''',
		@binAttr3From nvarchar(20) = N'''',
		@binAttr3To nvarchar(20) = N'''',
		@binAttr4From nvarchar(20) = N'''',
		@binAttr4To nvarchar(20) = N'''',
		@binAttr5From nvarchar(20) = N'''',
		@binAttr5To nvarchar(20) = N'''',
		@binAttr6From nvarchar(20) = N'''',
		@binAttr6To nvarchar(20) = N'''',
		@binAttr7From nvarchar(20) = N'''',
		@binAttr7To nvarchar(20) = N'''',
		@binAttr8From nvarchar(20) = N'''',
		@binAttr8To nvarchar(20) = N'''',
		@binAttr9From nvarchar(20) = N'''',
		@binAttr9To nvarchar(20) = N'''',
		@binAttr10From nvarchar(20) = N'''',
		@binAttr10To nvarchar(20) = N'''',
		
		@binLocCodeFrom nvarchar(228) = N'''',
		@binLocCodeTo nvarchar(228) = N'''',
		
		@itemCodeFrom nvarchar(50) = N'''',
		@itemCodeTo nvarchar(50) = N'''',
		
		@batchNumberFrom nvarchar(36) = N'''',
		@batchNumberTo nvarchar(36) = N'''',
		@batchAttr1From nvarchar(32) = N'''',
		@batchAttr1To nvarchar(32) = N'''',
		@batchAttr2From nvarchar(32) = N'''',
		@batchAttr2To nvarchar(32) = N'''',
		
		@serialNumberFrom nvarchar(36) = N'''',
		@serialNumberTo nvarchar(36) = N'''',
		@mfrSerialNumberFrom nvarchar(32) = N'''',
		@mfrSerialNumberTo nvarchar(32) = N'''',
		@lotNumberFrom nvarchar(32) = N'''',
		@lotNumberTo nvarchar(32) = N'''',
		
		@whsIncludingFrom nvarchar(8) = N'''',
		@whsIncludingTo nvarchar(8) = N'''',
		
		@whsExcludingFrom nvarchar(8) = N'''',
		@whsExcludingTo nvarchar(8) = N'''',
		
		@displayInactiveItem nvarchar(1) = N'''',
		
		@T_SQL_ITEM_RTRICT nvarchar(3000) = N'''',
		@T_SQL_BATCH_RTRICT nvarchar(1000) = N'''',
		
		@V_INT int = 0,
		@table_alias nvarchar(10) = N'''',
		@table_field nvarchar(20) = N'''',
		@from_value nvarchar(250) = N'''',
		@to_value nvarchar(250) = N'''',
		
		@COMMA nvarchar(1) = N'','',
		
		@BIN_LOC_TABLE_BASE_FIELD nvarchar(2000) = N'''' ',
		
		@PREPARE_SQL nvarchar(max) =
		N'IF @binSublevels <> ''''
			BEGIN
				SET @V_INT = 1
				SET @binSbl1From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl1To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl2From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl2To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl3From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl3To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl4From = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
				SET @V_INT = @V_INT + @BIN_SUBLEVEL_LENGTH
				SET @binSbl4To = RTRIM(SUBSTRING(@binSublevels, @V_INT, @BIN_SUBLEVEL_LENGTH))
			END
			
		IF @binAttributes <> ''''
			BEGIN	
				SET @V_INT = 1
				SET @binAttr1From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr1To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr2From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr2To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr3From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr3To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr4From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr4To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr5From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr5To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr6From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr6To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr7From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr7To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr8From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr8To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr9From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr9To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr10From = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
				SET @V_INT = @V_INT + @BIN_ATTR_LENGTH
				SET @binAttr10To = RTRIM(SUBSTRING(@binAttributes, @V_INT, @BIN_ATTR_LENGTH))
			END
			
		IF @binCodeFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @binLocCodeFrom = RTRIM(SUBSTRING(@binCodeFromTo, @V_INT, @BIN_LOC_CODE_LENGTH))
				SET @V_INT = @V_INT + @BIN_LOC_CODE_LENGTH
				SET @binLocCodeTo = RTRIM(SUBSTRING(@binCodeFromTo, @V_INT, @BIN_LOC_CODE_LENGTH))
			END
			
		IF @itemCodeFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @itemCodeFrom = RTRIM(SUBSTRING(@itemCodeFromTo, @V_INT, @ITEM_CODE_LENGTH))
				SET @V_INT = @V_INT + @ITEM_CODE_LENGTH
				SET @itemCodeTo = RTRIM(SUBSTRING(@itemCodeFromTo, @V_INT, @ITEM_CODE_LENGTH))
			END
			
		IF @batchFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @batchNumberFrom = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				SET @batchNumberTo = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				
				SET @batchAttr1From = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @batchAttr1To = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @batchAttr2From = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @batchAttr2To = RTRIM(SUBSTRING(@batchFromTo, @V_INT, @SNB_ATTR_LENGTH))
			END
			
		IF @serialFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @serialNumberFrom = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				SET @serialNumberTo = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_NUMBER_LENGTH))
				SET @V_INT = @V_INT + @SNB_NUMBER_LENGTH
				
				SET @mfrSerialNumberFrom = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @mfrSerialNumberTo = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @lotNumberFrom = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
				SET @V_INT = @V_INT + @SNB_ATTR_LENGTH
				SET @lotNumberTo = RTRIM(SUBSTRING(@serialFromTo, @V_INT, @SNB_ATTR_LENGTH))
			END
			
		IF @whsCodeFromTo <> ''''
			BEGIN
				SET @V_INT = 1
				SET @whsIncludingFrom = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
				SET @V_INT = @V_INT + @WHS_CODE_LENGTH
				SET @whsIncludingTo = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
				SET @V_INT = @V_INT + @WHS_CODE_LENGTH
				SET @whsExcludingFrom = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
				SET @V_INT = @V_INT + @WHS_CODE_LENGTH
				SET @whsExcludingTo = RTRIM(SUBSTRING(@whsCodeFromTo, @V_INT, @WHS_CODE_LENGTH))
			END

		SET @binAbsSet = LTRIM(RTRIM(@binAbsSet))
		IF @binAbsSet <> ''''
			BEGIN
				DECLARE
					@start int = 1,
					@length int = 1,
					@BinAbs nvarchar(10)
					
				CREATE TABLE #TMP_TABLE_BIN_ABS (BinAbs INTEGER)
				SET @V_INT = CHARINDEX(@COMMA, @binAbsSet)
					
				WHILE @V_INT <> 0
					BEGIN
						SET @length = @V_INT - @start
						SET @BinAbs = SUBSTRING(@binAbsSet, @start, @length)
						
						INSERT INTO #TMP_TABLE_BIN_ABS VALUES(@BinAbs)
						
						SET @start = @V_INT + 1
						SET @V_INT = CHARINDEX(@COMMA, @binAbsSet, @start)
					END
						
				IF @V_INT = 0
					BEGIN
						SET @length = LEN(@binAbsSet) + 1 - @start
						SET @BinAbs = SUBSTRING(@binAbsSet, @start, @length)
						INSERT INTO #TMP_TABLE_BIN_ABS VALUES(@BinAbs)
					END		
			END
			
		SET @BIN_LOC_TABLE_BASE_FIELD = 
		@T_OBIN + ''.BinCode,'' 
		+ @T_OBIN + ''.WhsCode,'' 
		+ @T_OBIN + ''.SL1Code,'' 
		+ @T_OBIN + ''.SL2Code,'' 
		+ @T_OBIN + ''.SL3Code,''
		+ @T_OBIN + ''.SL4Code,'' 
		+ @T_OBIN + ''.Disabled,'' 
		+ @T_OBIN + ''.ReceiveBin,'' 
		+ @T_OBIN + ''.Descr,'' 
		+ @T_OBIN + ''.AltSortCod,''
		+ @T_OBIN + ''.BarCode,'' 
		+ ''CASE WHEN '' + @T_OBIN + ''.MinLevel = 0 THEN NULL ELSE '' + @T_OBIN + ''.MinLevel END AS MinLevel, ''
		+ ''CASE WHEN '' + @T_OBIN + ''.MaxLevel = 0 THEN NULL ELSE '' + @T_OBIN + ''.MaxLevel END AS MaxLevel, '' 
		+ @T_OBIN + ''.Attr1Val,'' 
		+ @T_OBIN + ''.Attr2Val,'' 
		+ @T_OBIN + ''.Attr3Val,'' 
		+ @T_OBIN + ''.Attr4Val,'' 
		+ @T_OBIN + ''.Attr5Val,'' 
		+ @T_OBIN + ''.Attr6Val,'' 
		+ @T_OBIN + ''.Attr7Val,''
		+ @T_OBIN + ''.Attr8Val,'' 
		+ @T_OBIN + ''.Attr9Val,''
		+ @T_OBIN + ''.Attr10Val,'' 
		+ @T_OBIN + ''.RtrictType,'' 
		+ @T_OBIN + ''.RtrictResn,''
		+ @T_OBIN + ''.RtrictDate,'' 
			
		SET @T_SQL_ITEM_RTRICT = 
		N''(SELECT '' + @T_OBIN + ''.AbsEntry AS ''''BinAbs'''','' 
			+ @T_OBIN + ''.SpcItmCode AS ''''RestrictedTo'''' FROM '' 
			+ @T_OBIN + '' WHERE '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SPC_ITM 
		+ '' UNION ALL ''
		+ '' SELECT '' + @T_OIBQ + ''.BinAbs AS ''''BinAbs'''', '' + @T_OIBQ + ''.ItemCode AS ''''RestrictedTo'''' FROM '' 
		+ @T_OIBQ + '' WHERE '' + @T_OIBQ + ''.BinAbs IN (SELECT AbsEntry FROM '' + @T_OBIN + '' WHERE '' 
		+ @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SNG_ITM + '') AND '' + @T_OIBQ + ''.OnHandQty > 0 GROUP BY '' 
		+ @T_OIBQ + ''.BinAbs, '' + @T_OIBQ + ''.ItemCode HAVING COUNT('' + @T_OIBQ + ''.BinAbs) < 2 '' 
		+ '' UNION ALL '' 
		+ '' SELECT '' + @T_OBIN + ''.AbsEntry AS ''''BinAbs'''', '' + @T_OITB + ''.ItmsGrpNam AS ''''RestrictedTo'''' FROM '' 
		+ @T_OBIN + '' INNER JOIN '' + @T_OITB + '' ON '' + @T_OBIN + ''.SpcItmGrpC = '' + @T_OITB + ''.ItmsGrpCod''
		+ '' WHERE '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SPC_ITM_GROUP + 
		'' UNION ALL '' +
		'' SELECT '' + @T_OIBQ + ''.BinAbs AS ''''BinAbs'''', '' + '' MAX('' + @T_OITB + ''.ItmsGrpNam) '' 
		+ '' AS ''''RestrictedTo'''' FROM '' + @T_OIBQ + '' INNER JOIN '' + @T_OITM + '' ON '' 
		+ @T_OIBQ + ''.ItemCode = '' + @T_OITM + ''.ItemCode '' + '' INNER JOIN '' + @T_OITB + '' ON ''
		+ @T_OITM + ''.ItmsGrpCod = '' + @T_OITB + ''.ItmsGrpCod '' + '' WHERE '' 
		+ @T_OIBQ + ''.BinAbs IN (SELECT AbsEntry FROM '' + @T_OBIN + '' WHERE '' + @T_OBIN + ''.ItmRtrictT = '' 
		+ @ITM_RTRICT_SNG_ITM_GROUP + '') AND '' + @T_OIBQ + ''.OnHandQty > 0 GROUP BY '' + @T_OIBQ
		+ ''.BinAbs, '' + @T_OITM + ''.ItmsGrpCod HAVING COUNT('' + @T_OIBQ + ''.BinAbs) < 2) AS '' + @T_ITM_RTRICT
		
		SET @T_SQL_BATCH_RTRICT =
		N''(SELECT '' + @T_OBBQ + ''.BinAbs AS ''''BinAbs'''', '' + ''Min('' + @T_OBTN + ''.DistNumber) AS ''''Batch'''' FROM '' 
		+ @T_OBBQ + '' INNER JOIN '' + @T_OBTN + '' ON '' + @T_OBBQ + ''.SnBMDAbs = '' + @T_OBTN + ''.AbsEntry WHERE '' 
		+ @T_OBBQ + ''.BinAbs IN (SELECT AbsEntry FROM '' + @T_OBIN + '' WHERE '' + @T_OBIN + ''.SngBatch = ''''Y'''') AND '' 
		+ @T_OBBQ + ''.OnHandQty <> 0 GROUP BY '' + @T_OBBQ + ''.BinAbs, '' + @T_OBBQ
		+ ''.SnBMDAbs HAVING COUNT(*) < 2) AS '' + @T_BATCH_RTRICT '
		
	BEGIN
	SET NOCOUNT ON;
		
	IF @type = @BIN_LOC_CONTENT_LIST
	BEGIN
		
		IF @flag & 2 = 2
			SET @snbOnly = N'Y'
		ELSE
			SET @snbOnly = N'N'
			
		IF @flag & 8 = 8
			SET @includeNonBinWhs = N'Y'
		ELSE
			SET @includeNonBinWhs = N'N'
				
		SET @ADD_BIN_SUBLEVEL_COND = REPLACE(@ADD_BIN_SUBLEVEL_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_BIN_ATTR_COND = REPLACE(@ADD_BIN_ATTR_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_BIN_CODE_COND = REPLACE(@ADD_BIN_CODE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_WHS_INCLUD_COND = REPLACE(@ADD_WHS_INCLUD_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_BATCH_RANGE_COND = REPLACE(@ADD_BATCH_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_SERIAL_RANGE_COND = REPLACE(@ADD_SERIAL_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		SET @ADD_ITEM_CODE_RANGE_COND = REPLACE(@ADD_ITEM_CODE_RANGE_COND, N'$ADD_RANGE_COND_STR', @ADD_RANGE_COND_STR)
		

		SET @T_SQL =
		N'
		BEGIN
			$PREPARE_SQL
			
			IF @includeNonBinWhs = N''Y''
				SET @T_SQL =
				N''SELECT A.BinCode, A.WhsCode, A.SL1Code, A.SL2Code, A.SL3Code, A.SL4Code, ''
				+ '' A.Disabled, A.ReceiveBin, A.Descr, A.AltSortCod, A.BarCode, A.MinLevel, ''
				+ '' A.MaxLevel, A.Attr1Val, A.Attr2Val, A.Attr3Val, A.Attr4Val, A.Attr5Val, ''
				+ '' A.Attr6Val, A.Attr7Val, A.Attr8Val, A.Attr9Val, A.Attr10Val, A.RtrictType, ''
				+ '' A.RtrictResn, A.RtrictDate, A.ItmRtrictT, A.RestrictedTo, A.SngBatch, A.Batch, ''
				+ '' A.ItemCode, A.ItemName, A.ItmsGrpNam, A.CodeBars, A.InvntryUom, A.OnHandQty, ''
				+ '' A.SnBCount, A.QtyBelowMin, A.ReplenishmentQty FROM (''
					
			SET @T_SQL = @T_SQL +
				N''SELECT '' + @BIN_LOC_TABLE_BASE_FIELD
				+ @T_OBIN + ''.ItmRtrictT, '' 
				+ @T_ITM_RTRICT + ''.RestrictedTo, '' 
				+ @T_OBIN + ''.SngBatch, '' 
				+ @T_BATCH_RTRICT + ''.Batch,''
				+ @T_OITM + ''.ItemCode,''
				+ @T_OITM + ''.ItemName,''
				+ ''(SELECT ItmsGrpNam FROM '' + @T_OITB
					+ '' WHERE '' + @T_OITB + ''.ItmsGrpCod = '' + @T_OITM + ''.ItmsGrpCod ) AS ItmsGrpNam, ''
				+ @T_OITM + ''.CodeBars,''
				+ @T_OITM + ''.InvntryUom,''
				+ ''CASE WHEN QTY.OnHandQty = 0 THEN NULL ELSE QTY.OnHandQty END AS OnHandQty, ''
				+ ''CASE WHEN QTY.SnBCount = 0 THEN NULL ELSE QTY.SnBCount END AS SnBCount, ''
				+ '' CASE ''
				+ '' WHEN BinTrans.ItemCount = 1 AND '' + @T_OBIN + ''.ItmRtrictT <> '' + @ITM_RTRICT_SPC_ITM + '' AND '' + @T_OBIN + ''.MinLevel <> ISNULL(QTY.OnHandQty, 0) ''
				+ '' THEN '' + @T_OBIN + ''.MinLevel - ISNULL(QTY.OnHandQty, 0) ''
				+ '' WHEN '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SPC_ITM + '' AND '' + @T_OBIN + ''.SpcItmCode = '' + @T_OITM + ''.ItemCode ''
				+ '' AND '' + @T_OBIN + ''.MinLevel <> ISNULL(QTY.OnHandQty, 0) ''
				+ '' THEN '' + @T_OBIN + ''.MinLevel - ISNULL(QTY.OnHandQty, 0) ''
				+ '' WHEN BinTrans.ItemCount <> 1 AND '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SNG_ITM + '' AND QTY.OnHandQty > 0 ''
				+ '' AND '' + @T_OBIN + ''.MinLevel <> ISNULL(QTY.OnHandQty, 0) THEN '' 
				+ @T_OBIN + ''.MinLevel - ISNULL(QTY.OnHandQty, 0) ''
				+ '' ELSE NULL END AS QtyBelowMin,''
				+ '' CASE ''
				+ '' WHEN BinTrans.ItemCount = 1 AND '' + @T_OBIN + ''.MaxLevel <> 0 AND '' 
				+ @T_OBIN + ''.MaxLevel > ISNULL(QTY.OnHandQty, 0) AND '' + @T_OBIN + ''.ItmRtrictT <> '' + @ITM_RTRICT_SPC_ITM
				+ '' THEN '' + @T_OBIN + ''.MaxLevel - ISNULL(QTY.OnHandQty, 0) ''
				+ '' WHEN '' + @T_OBIN + ''.MaxLevel <> 0 AND ''
				+ @T_OBIN + ''.MaxLevel > ISNULL(QTY.OnHandQty, 0) AND '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SPC_ITM + '' AND
 ''
				+ @T_OBIN + ''.SpcItmCode = '' + @T_OITM + ''.ItemCode ''
				+ '' THEN '' + @T_OBIN + ''.MaxLevel - ISNULL(QTY.OnHandQty, 0) ''
				+ '' WHEN BinTrans.ItemCount <> 1 AND '' + @T_OBIN + ''.MaxLevel <> 0 AND ''
				+ @T_OBIN + ''.MaxLevel > ISNULL(QTY.OnHandQty, 0) AND '' + @T_OBIN + ''.ItmRtrictT = '' + @ITM_RTRICT_SNG_ITM + '' AND QTY.OnHandQty > 0 ''
				+ '' THEN '' + @T_OBIN + ''.MaxLevel - ISNULL(QTY.OnHandQty, 0) ''
				+ '' ELSE NULL END AS ReplenishmentQty ''
			+ '' FROM '' + @T_OBIN + '' INNER JOIN ''					
			+ '' (SELECT '' + @T_OIBQ + ''.BinAbs AS ''''BinAbs'''','' 
							+ @T_OIBQ + ''.ItemCode AS ''''ItemCode'''',''
			IF @snbOnly = ''Y''
				SET @T_SQL = @T_SQL + ''ISNULL(SUM('' + @T_OBBQ + ''.OnHandQty), 0)'' 
							+ '' + ISNULL(SUM('' + @T_OSBQ + ''.OnHandQty), 0) AS ''''OnHandQty'''',''
			ELSE
				IF @batchFromTo = '''' AND @serialFromTo = '''' AND @batchAbs = '''' AND @serialAbs = ''''
					SET @T_SQL = @T_SQL + ''ISNULL(MAX('' + @T_OIBQ + ''.OnHandQty), 0) AS ''''OnHandQty'''',''
				ELSE
					SET @T_SQL = @T_SQL + ''ISNULL(SUM('' + @T_OBBQ + ''.OnHandQty), 0)'' 
								+ '' + ISNULL(SUM('' + @T_OSBQ + ''.OnHandQty), 0) AS ''''OnHandQty'''',''
			SET @T_SQL = @T_SQL 
						+ ''Count(DISTINCT '' + @T_OBBQ + ''.SnBMDAbs) '' 
						+ '' + Count(DISTINCT '' + @T_OSBQ + ''.SnBMDAbs) AS ''''SnBCount'''' '' 
						+ '' FROM '' + @T_OIBQ + '' LEFT OUTER JOIN ''
						+ @T_OBBQ + '' ON '' + @T_OIBQ + ''.BinAbs = '' + @T_OBBQ + ''.BinAbs''
						+ '' AND '' + @T_OIBQ + ''.ItemCode = '' + @T_OBBQ + ''.ItemCode''
						+ '' AND '' + @T_OBBQ + ''.OnHandQty <> 0 ''
						+ '' LEFT OUTER JOIN '' + @T_OSBQ + '' ON '' + @T_OIBQ + ''.BinAbs = ''
						+ @T_OSBQ + ''.BinAbs AND '' + @T_OIBQ + ''.ItemCode = ''
						+ @T_OSBQ + ''.ItemCode AND '' + @T_OSBQ + ''.OnHandQty <> 0 ''
						+ '' WHERE '' + @T_OIBQ + ''.OnHandQty <> 0 ''
						
			IF @snbOnly = ''Y''
				SET @T_SQL = @T_SQL + '' AND '' + @T_OBBQ + ''.AbsEntry IS NOT NULL OR ''
						+ @T_OSBQ + ''.AbsEntry IS NOT NULL '' 
					
			IF @batchFromTo <> ''''
				BEGIN
				SET @T_SQL = @T_SQL + '' AND '' + @T_OBBQ + ''.SnBMDAbs IN (SELECT AbsEntry FROM ''
						+ @T_OBTN + '' WHERE '' + @T_OBTN + ''.AbsEntry > 0 ''	
				$ADD_BATCH_RANGE_COND
				SET @T_SQL = @T_SQL + '') ''
				END
						
			IF @serialFromTo <> ''''
				BEGIN
				SET @T_SQL = @T_SQL + '' AND '' + @T_OSBQ + ''.SnBMDAbs IN (SELECT AbsEntry FROM ''
						+ @T_OSRN + '' WHERE '' + @T_OSRN + ''.AbsEntry > 0 ''
				$ADD_SERIAL_RANGE_COND
				SET @T_SQL = @T_SQL + '') ''
				END
					
			IF @batchAbs <> ''''
				SET @T_SQL = @T_SQL + '' AND '' + @T_OBBQ + ''.SnBMDAbs IN ('' + @batchAbs + '')''
			IF @serialAbs <> ''''
				SET @T_SQL = @T_SQL + '' AND '' + @T_OSBQ + ''.SnBMDAbs IN ('' + @serialAbs + '')''
					
			SET @T_SQL = @T_SQL + ''GROUP BY '' + @T_OIBQ + ''.BinAbs, '' 
						+ @T_OIBQ + ''.ItemCode ) AS QTY '' 
						+ '' ON QTY.BinAbs = '' + @T_OBIN + ''.AbsEntry ''
						+ '' INNER JOIN '' + @T_OITM + '' ON '' + @T_OITM + ''.ItemCode = ''
						+ '' QTY.ItemCode ''
						+ '' LEFT OUTER JOIN ''
						+ @T_SQL_ITEM_RTRICT + '' ON '' + @T_OBIN + ''.AbsEntry = '' + @T_ITM_RTRICT + ''.BinAbs''
						+ '' LEFT OUTER JOIN '' 
						+ @T_SQL_BATCH_RTRICT + '' ON '' + @T_OBIN + ''.AbsEntry = '' + @T_BATCH_RTRICT + ''.BinAbs''
						+ '' LEFT OUTER JOIN (SELECT '' + @T_OIBQ + ''.BinAbs, COUNT(DISTINCT '' + @T_OIBQ
						+ ''.ItemCode) AS ItemCount FROM '' + @T_OIBQ + '' WHERE '' + @T_OIBQ + ''.OnHandQty <> 0 GROUP BY ''
						+ @T_OIBQ + ''.BinAbs ) AS BinTrans ON BinTrans.BinAbs = ''
						+ @T_OBIN + ''.AbsEntry ''
						+ '' WHERE '' + @T_OBIN + ''.[AbsEntry] > 0 ''
						
			IF @binAbsSet <> ''''
				SET @T_SQL = @T_SQL + '' AND '' + @T_OBIN + ''.AbsEntry IN (SELECT BinAbs FROM #TMP_TABLE_BIN_ABS) ''
					
			$ADD_WHS_INCLUD_COND
			$ADD_WHS_EXCLUD_COND
			$ADD_BIN_SUBLEVEL_COND
			$ADD_BIN_ATTR_COND
			$ADD_BIN_CODE_COND
			$ADD_ITEM_CODE_RANGE_COND
			$ADD_ITEM_GRP_CODE_COND
			$ADD_DISPLAY_INACTIVE_ITEM_COND
					
			IF @includeNonBinWhs = N''N''
				SET @T_SQL = @T_SQL + '' ORDER BY '' + @T_OBIN + ''.BinCode,'' + @T_OITM + ''.ItemCode ''
			
			IF @includeNonBinWhs = N''Y''
			BEGIN
				DECLARE @SNB_FILTER NVARCHAR(1)
				
				IF @batchFromTo <> '''' OR @serialFromTo <> '''' OR @batchAbs <> '''' OR @serialAbs <> ''''
					SET @SNB_FILTER = N''Y''
				ELSE
					SET @SNB_FILTER = N''N''
				
				SET @T_SQL = @T_SQL + '' UNION ALL ''
				+ '' SELECT NULL AS BinCode, T0.WhsCode, NULL AS SL1Code, NULL AS SL2Code, NULL AS SL3Code, NULL AS SL4Code, NULL AS Disabled, ''
				+ '' NULL AS ReceiveBin, NULL AS Descr, NULL AS AltSortCod, NULL AS BarCode, NULL AS MinLevel, NULL AS MaxLevel, NULL AS Attr1Val, ''
				+ '' NULL AS Attr2Val, NULL AS Attr3Val, NULL AS Attr4Val, NULL AS Attr5Val, NULL AS Attr6Val, NULL AS Attr7Val, NULL AS Attr8Val, ''
				+ '' NULL AS Attr9Val, NULL AS Attr10Val, NULL AS RtrictType, NULL AS RtrictResn, NULL AS RtrictDate, NULL AS ItmRtrictT, NULL AS RestrictedTo, ''
				+ '' NULL AS SngBatch, NULL AS Batch, ''
				
				IF @SNB_FILTER = ''Y''
					SET @T_SQL = @T_SQL + '' MIN (T2.ItemCode) AS ItemCode, MIN (T2.ItemName) AS ItemName, ''
								+ '' (SELECT ItmsGrpNam FROM OITB WHERE OITB.ItmsGrpCod = MIN (T2.ItmsGrpCod)) AS ItmsGrpNam, ''
								+ '' MIN (T2.CodeBars) AS CodeBars, MIN (T2.InvntryUom) AS InvntryUom, ''
				ELSE
					SET @T_SQL = @T_SQL + '' T2.ItemCode, T2.ItemName, ''
					+ '' (SELECT ItmsGrpNam FROM OITB WHERE OITB.ItmsGrpCod = T2.ItmsGrpCod) AS ItmsGrpNam, ''
					+ '' T2.CodeBars, T2.InvntryUom, ''
				
				IF @SNB_FILTER = ''Y''
					SET @T_SQL = @T_SQL + '' SUM (ISNULL(T4.Quantity, 0)) + SUM (ISNULL(T5.Quantity, 0)) AS OnHandQty, ''
				ELSE
					SET @T_SQL = @T_SQL + '' T0.OnHand AS OnHandQty, ''
					
				SET @T_SQL = @T_SQL + '' NULL AS SnBCount, NULL AS QtyBelowMin, NULL AS ReplenishmentQty ''
					+ '' FROM OITW T0 INNER JOIN OWHS T1 ON T0.WhsCode = T1.WhsCode ''
					+ '' INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode ''
				
				IF @SNB_FILTER = ''Y''
				BEGIN
					SET @T_SQL = @T_SQL + '' LEFT OUTER JOIN OBTQ T4 ON T4.WhsCode = T0.WhsCode AND T4.ItemCode = T0.ItemCode AND T4.Quantity <> 0''
					SET @T_SQL = @T_SQL + '' LEFT OUTER JOIN OSRQ T5 ON T5.WhsCode = T0.WhsCode AND T5.ItemCode = T0.ItemCode AND T5.Quantity <> 0''
				END
				
				SET @T_SQL = @T_SQL + '' WHERE T1.BinActivat = ''''N'''' AND T0.OnHand <> 0 ''
				
				IF @batchFromTo <> ''''
				BEGIN
					SET @T_SQL = @T_SQL + '' AND T4.MdAbsEntry IN (SELECT AbsEntry FROM ''
						+ @T_OBTN + '' WHERE '' + @T_OBTN + ''.AbsEntry > 0 ''	
					$ADD_BATCH_RANGE_COND
					SET @T_SQL = @T_SQL + '') ''
				END
				
				IF @serialFromTo <> ''''
				BEGIN
					SET @T_SQL = @T_SQL + '' AND T5.MdAbsEntry IN (SELECT AbsEntry FROM ''
						+ @T_OSRN + '' WHERE '' + @T_OSRN + ''.AbsEntry > 0 ''
					$ADD_SERIAL_RANGE_COND
					SET @T_SQL = @T_SQL + '') ''
				END
				
				SET @T_OBIN = ''T1''
				$ADD_WHS_INCLUD_COND
				$ADD_WHS_EXCLUD_COND
				
				SET @T_OITM = ''T2''
				$ADD_ITEM_CODE_RANGE_COND
				$ADD_ITEM_GRP_CODE_COND
				$ADD_DISPLAY_INACTIVE_ITEM_COND
				
				IF @SNB_FILTER = ''Y''
					SET @T_SQL = @T_SQL + '' GROUP BY T0.WhsCode, T0.ItemCode ''
					
				SET @T_SQL = @T_SQL + '' ) AS A ORDER BY A.BinCode, A.WhsCode, A.ItemCode ''		
			END
					
			--PRINT(@T_SQL)
			EXEC(@T_SQL)
		END'
				
		SET @T_SQL = REPLACE(@T_SQL, N'$PREPARE_SQL', @PREPARE_SQL)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BATCH_RANGE_COND', @ADD_BATCH_RANGE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_SERIAL_RANGE_COND', @ADD_SERIAL_RANGE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_WHS_INCLUD_COND', @ADD_WHS_INCLUD_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_WHS_EXCLUD_COND', @ADD_WHS_EXCLUD_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BIN_SUBLEVEL_COND', @ADD_BIN_SUBLEVEL_COND)

		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BIN_ATTR_COND', @ADD_BIN_ATTR_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_BIN_CODE_COND', @ADD_BIN_CODE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_ITEM_CODE_RANGE_COND', @ADD_ITEM_CODE_RANGE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_ITEM_GRP_CODE_COND', @ADD_ITEM_GRP_CODE_COND)
		SET @T_SQL = REPLACE(@T_SQL, N'$ADD_DISPLAY_INACTIVE_ITEM_COND', @ADD_DISPLAY_INACTIVE_ITEM_COND)
		
		EXEC sp_executesql
			@T_SQL,
			@ParmDefinition,
			@binSublevels = @binSublevels,
			@binAttributes = @binAttributes,
			@binCodeFromTo = @binCodeFromTo,
			@itemCodeFromTo = @itemCodeFromTo,
			@itemGroups = @itemGroups,
			@batchFromTo = @batchFromTo,
			@serialFromTo = @serialFromTo,
			@binAbsSet = @binAbsSet,
			@batchAbs = @batchAbs,
			@serialAbs = @serialAbs,
			@whsCodeFromTo = @whsCodeFromTo,
			@snbOnly = @snbOnly,
			@includeNonBinWhs = @includeNonBinWhs
	END
	ELSE
	BEGIN
		SET @T_SQL =
		N'SELECT
		BinCode,
		WhsCode,
		SL1Code,
		SL2Code,
		SL3Code,
		SL4Code,
		Disabled,
		ReceiveBin,
		Descr,
		AltSortCod,
		BarCode,
		MinLevel,
		MaxLevel,
		Attr1Val,
		Attr2Val,
		Attr3Val,
		Attr4Val,
		Attr5Val,
		Attr6Val,
		Attr7Val,
		Attr8Val,
		Attr9Val,
		Attr10Val,
		RtrictType,
		RtrictResn,
		RtrictDate,
		ItmRtrictT,
		NULL AS RestrictedTo,
		SngBatch,
		NULL AS Batch,
		NULL AS ItemCode,
		NULL AS ItemName,
		NULL AS ItmsGrpNam,
		NULL AS CodeBars,
		NULL AS InvntryUom,
		NULL AS OnHandQty,
		NULL AS SnBCount,
		NULL AS QtyBelowMin,
		NULL AS ReplenishmentQty
		FROM OBIN
		WHERE 1 <> 1'
		
		--PRINT(@T_SQL)
		EXEC(@T_SQL)	
	END --END (IF @type = @BIN_LOC_CONTENT_LIST)
	END
 
GO 

  

posted @ 2026-01-21 07:02  samrv  阅读(1)  评论(0)    收藏  举报