// //税款计算(现金流) // //2018年5月11日修改,去除之前的送数逻辑,新增BADI计算相关科目 // *SELECT(%010804ZH%, "ID", "TIME", "[PLAN] = Y") // *SELECT(%010804ZH1%, "ID", "TIME", "[PLAN] = S") // //计算分期分产品,管理口径的1.1.1.1、预缴增值税基数 A01030402,1.1.1、预缴增值税 A01030401010101以及分期分产品(普通、非普通、其他) // //的1.1.1.1、预缴土地增值税基数 A01030404,1.1、预缴土地增值税 A01030403010101 // //清数开始 // *XDIM_MEMBERSET TIME = %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030402,A01030401010101 //1.1.1.1、预缴增值税基数,1.1.1、预缴增值税 // *XDIM_MEMBERSET PRODUCT = BAS(P01) // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 //管理 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030402,A01030401010101 // *WHEN P_ENTITY.LEVEL // *IS <>"L5.1" // *REC(EXPRESSION=0) // *ENDWHEN // *ENDWHEN // *XDIM_MEMBERSET TIME = %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030404,A01030403010101 //1.1.1.1、预缴土地增值税基数、1.1、预缴土地增值税 // *XDIM_MEMBERSET PRODUCT = BAS(P01) // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD01020301,AD01020302,AD01020303 //普通,非普通,其他 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030404,A01030403010101 // *WHEN P_ENTITY.LEVEL // *IS "L6","L7" // *REC(EXPRESSION=0) // *ENDWHEN // *ENDWHEN // *COMMIT // //清数结束 // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET PRODUCT = BAS(P01) // *XDIM_MEMBERSET TIME = BAS(PTIME_TOTAL) // *XDIM_MEMBERSET P_ACCOUNT =A010104,A010105 // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *START_BADI SKJS_XJL // QUERY = OFF // WRITE = ON // *END_BADI // //计算项目.INP,不区分产品,管理口径的1.1.1.1、预缴增值税基数 A01030402,1.1.1、预缴增值税 A01030401010101 // //将分期分产品的数据写到项目.INP,不区分产品上 // //清数开始 // *XDIM_MEMBERSET TIME = %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030402,A01030401010101 //1.1.1.1、预缴增值税基数,1.1.1、预缴增值税 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 //管理 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030402,A01030401010101 // *WHEN P_ENTITY.LEVEL // *IS "L5.1" // *REC(EXPRESSION=0) // *ENDWHEN // *ENDWHEN // *COMMIT // //清数结束 // *XDIM_MEMBERSET TIME = %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030402,A01030401010101 //1.1.1.1、预缴增值税基数,1.1.1、预缴增值税 // *XDIM_MEMBERSET PRODUCT = BAS(P01) // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 //管理 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030402,A01030401010101 // *WHEN P_ENTITY.LEVEL // *IS "L6","L7" // *REC(EXPRESSION=%VALUE%,PRODUCT = WO_PRODUCT,P_ENTITY = P_ENTITY.MAPPINGT) // *ENDWHEN // *ENDWHEN // //计算项目.INP,不区分产品,普通/非普通/其他口径的1.1.1.1、预缴土地增值税基数 A01030404,1.1、预缴土地增值税 A01030403010101,上月实际手录 // //将分期分产品的数据写到项目.INP,不区分产品上 // //清数开始 // *XDIM_MEMBERSET TIME = %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030404,A01030403010101 //1.1.1.1、预缴土地增值税基数、1.1、预缴土地增值税 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD01020301,AD01020302,AD01020303 //普通,非普通,其他 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030404,A01030403010101 // *WHEN P_ENTITY.LEVEL // *IS "L5.1" // *REC(EXPRESSION=0) // *ENDWHEN // *ENDWHEN // *COMMIT // //清数结束 // *XDIM_MEMBERSET TIME = %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030404,A01030403010101 //1.1.1.1、预缴土地增值税基数、1.1、预缴土地增值税 // *XDIM_MEMBERSET PRODUCT = BAS(P01) // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD01020301,AD01020302,AD01020303 //普通,非普通,其他 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030404,A01030403010101 // *WHEN P_ENTITY.LEVEL // *IS "L6","L7" // *WHEN P_ENTITY.MAPPINGT // *IS <> "" // *REC(EXPRESSION=%VALUE%,PRODUCT = WO_PRODUCT,P_ENTITY = P_ENTITY.MAPPINGT) //普通,非普通,其他 // *ENDWHEN // *ENDWHEN // *ENDWHEN // *COMMIT // //计算项目.INP,不区分产品,管理口径的1.1.1.1、预缴土地增值税基数 A01030404,1.1、预缴土地增值税 A01030403010101,上月实际计算 // //清数开始 // *XDIM_MEMBERSET TIME = %010804ZH1%,%010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030404,A01030403010101 //1.1.1.1、预缴土地增值税基数、1.1、预缴土地增值税 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 //管理 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030404,A01030403010101 // *WHEN P_ENTITY.LEVEL // *IS "L5.1" // *REC(EXPRESSION=0) // *ENDWHEN // *ENDWHEN // *COMMIT // //清数结束 // *XDIM_MEMBERSET TIME = %010804ZH1%,%010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET P_ACCOUNT = A01030404,A01030403010101 //1.1.1.1、预缴土地增值税基数、1.1、预缴土地增值税 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD01020301,AD01020302,AD01020303 //普通,非普通,其他 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A01030404,A01030403010101 // *WHEN P_ENTITY.LEVEL // *IS "L5.1" // *REC(EXPRESSION=%VALUE%,ADDITION=AD010101) //管理 // *ENDWHEN // *ENDWHEN // *COMMIT // //计算预缴附加税 // //“预缴增值税小计”*《税率表》“附加税率” // //清数开始 // // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // // *XDIM_MEMBERSET TIME = BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL) // // *XDIM_ADDMEMBERSET TIME = %010804ZH%,3010.01 // // *XDIM_MEMBERSET P_ACCOUNT = A01030401020101 // // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // // *XDIM_MEMBERSET AUDITTRAIL = INPUT // // *XDIM_MEMBERSET ADDITION = AD010101 // // *XDIM_MEMBERSET ITEM = WO_ITEM // // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // // *XDIM_MEMBERSET RESERVE = WO_RESERVE // // *WHEN P_ACCOUNT // // *IS * // // *REC(EXPRESSION = 0) // // *ENDWHEN // // *COMMIT // //清数结束 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET TIME = BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL) // *XDIM_ADDMEMBERSET TIME = %010804ZH%,3010.01 // *XDIM_MEMBERSET P_ACCOUNT = BAS(A010304010101) //预缴增值税小计 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS BAS(A010304010101) // *REC(EXPRESSION = %VALUE%*([P_ACCOUNT].[A01050504],[TIME].[WO_TIME],[ADDITION].[WO_ADDITION]),P_ACCOUNT=A01030401020101) // *ENDWHEN // //计算3.小税种(土地使用税+房产税+印花税+车船税+其他) // //《税款计算(小税种)》(“土地使用税合计”+“房产税合计”+“印花税合计”+“车船税”+其他) // //清数开始 // // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // // *XDIM_MEMBERSET TIME = BAS(PTIME_TOTAL) // // *XDIM_MEMBERSET P_ACCOUNT = A0103040103 // // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // // *XDIM_MEMBERSET AUDITTRAIL = INPUT // // *XDIM_MEMBERSET ADDITION = AD010101 // // *XDIM_MEMBERSET ITEM = WO_ITEM // // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // // *XDIM_MEMBERSET RESERVE = WO_RESERVE // // *WHEN P_ACCOUNT // // *IS * // // *REC(EXPRESSION = 0) // // *ENDWHEN // // *COMMIT // //清数结束 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET TIME = BAS(PTIME_TOTAL) // *XDIM_MEMBERSET P_ACCOUNT = BAS(A01030301),BAS(A01030303),BAS(A01030305),A01030306,A01030307,A01030309 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS * // *REC(EXPRESSION = %VALUE%,P_ACCOUNT=A0103040103) // *ENDWHEN // //计算按纳税义务发生时间补缴增值税对应附加税 // //清数开始 // // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // // *XDIM_MEMBERSET TIME = BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL) // // *XDIM_ADDMEMBERSET TIME = %010804ZH%,3010.01 // // *XDIM_MEMBERSET P_ACCOUNT = A010304010202 // // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // // *XDIM_MEMBERSET AUDITTRAIL = INPUT // // *XDIM_MEMBERSET ADDITION = AD010101 // // *XDIM_MEMBERSET ITEM = WO_ITEM // // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // // *XDIM_MEMBERSET RESERVE = WO_RESERVE // // *WHEN P_ACCOUNT // // *IS * // // *REC(EXPRESSION = 0) // // *ENDWHEN // // *COMMIT // //清数结束 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET TIME = BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL) // *XDIM_ADDMEMBERSET TIME = %010804ZH%,3010.01 // *XDIM_MEMBERSET P_ACCOUNT = A010304010102 //按纳税义务发生时间补缴增值税 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS A010304010102 // *REC(EXPRESSION = %VALUE%*([P_ACCOUNT].[A01050504],[TIME].[WO_TIME],[ADDITION].[WO_ADDITION]),P_ACCOUNT=A010304010202) // *ENDWHEN // //计算上一年一月及以后的1.1.1.1、利润总额,1.1.1.2、预缴企业所得税回款基数,1.1.1.3、预缴企业所得税结转收入基数,1.1.1.4、土增税(现金流口径),1.1.1.5、附加税(现金流口径) // //1.1.1.6、土增税(利润口径),1.1.1.7、附加税(利润口径),1.1.1、应税利润,1.1.2、当年累计应税利润 // //当前版本及以后年月的1.1、预缴企业所得税 // //清数开始 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET TIME = %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 // *XDIM_MEMBERSET P_ACCOUNT = A010304070101 //1.1、预缴企业所得税 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS * // *REC(EXPRESSION = 0) // *ENDWHEN // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET TIME =BAS(2999.TOTAL),BAS(3000.TOTAL),BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL) // *XDIM_MEMBERSET P_ACCOUNT = A01030408,A01030409,A01030412,A01030413,A01030414,A01030415,A01030416,A01030417,A01030418 // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET ADDITION = AD010101 // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *WHEN P_ACCOUNT // *IS * // *REC(EXPRESSION = 0) // *ENDWHEN // *COMMIT // //清数结束 // *XDIM_MEMBERSET TIME = BAS(2999.TOTAL),BAS(3000.TOTAL),BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),WO_TIME //计划时间 // *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) // *XDIM_MEMBERSET P_ACCOUNT = A010601,A0201010201,A02010101010105,A02010101010101,A010105,A01050506,A01050505,A01030411,A010304070101,A010304070102 //利润总额 // *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% // *XDIM_MEMBERSET AUDITTRAIL = INPUT // *XDIM_MEMBERSET PRODUCT = WO_PRODUCT,BAS(P01) // *XDIM_MEMBERSET ADDITION = AD010101,AD010103,WO_ADDITION // *XDIM_MEMBERSET ITEM = WO_ITEM // *XDIM_MEMBERSET D_TYPE = WO_D_TYPE // *XDIM_MEMBERSET RESERVE = WO_RESERVE // *START_BADI TAX_CF // QUERY = ON // WRITE = ON // *END_BADI //税款计算(现金流) 20190310 优化by zhoulf //20190814 modify by yanglf:对于管理口径预缴土增税,新增当年调实期的计算 *SELECT(%010804ZH%, "ID", "TIME", "[PLAN] = Y") // *SELECT(%010804ZH1%, "ID", "TIME", "[PLAN] = S") // *SELECT(%010804ZH2%, "ID", "TIME", "[PLAN] = X") *SELECT(%010804ZH1%, "ID", "TIME", "[ID]>=2985.12 AND [ID]<3001.01 AND [PLAN]<>Y") //上年及以前实际数 //计算清0; //分期分产品:1、管理口径的预缴增值税基数,预缴增值税;2、普通、非普通、其他的预缴土地增值税基数、预缴土地增值税; //项目不区分产品:3、管理口径的预缴增值税基数,预缴增值税;4、普通,非普通,其他的预缴土地增值税基数、预缴土地增值税;5、管理口径的预缴土地增值税基数、预缴土地增值税 //项目不区分产品:6、预缴企业所得税;7、1.1.1.2-1.1.1.8 *XDIM_MEMBERSET TIME = %010804ZH1%,%010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% *XDIM_MEMBERSET P_ACCOUNT = A01030402,A01030401010101,A01030404,A01030403010101,A01030402,A01030401010101,A010304070101,A01030408,A01030409,A01030412,A01030413,A01030414,A01030415,A01030416,A01030417,A01030418 *XDIM_MEMBERSET PRODUCT = BAS(P01),WO_PRODUCT *XDIM_MEMBERSET AUDITTRAIL = INPUT *XDIM_MEMBERSET ADDITION = AD010101,AD01020301,AD01020302,AD01020303 *XDIM_MEMBERSET ITEM = WO_ITEM *XDIM_MEMBERSET D_TYPE = WO_D_TYPE *XDIM_MEMBERSET RESERVE = WO_RESERVE *WHEN TIME *IS %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 *WHEN PRODUCT *IS BAS(P01) *WHEN ADDITION *IS AD010101 *WHEN P_ACCOUNT *IS A01030402,A01030401010101 //分期分产品:1、管理口径的预缴增值税基数,预缴增值税; *WHEN P_ENTITY.LEVEL *IS <>"L5.1" *REC(FACTOR = 0) *ENDWHEN *ENDWHEN *IS AD01020301,AD01020302,AD01020303 *WHEN P_ACCOUNT *IS A01030404,A01030403010101 //分期分产品:2、普通、非普通、其他的预缴土地增值税基数、预缴土地增值税; *WHEN P_ENTITY.LEVEL *IS "L6","L7" *REC(FACTOR = 0) *ENDWHEN *ENDWHEN *ENDWHEN *IS WO_PRODUCT *WHEN ADDITION *IS AD010101 *WHEN P_ACCOUNT *IS A01030402,A01030401010101,A01030401020101 //不区分产品:3、管理口径的预缴增值税基数,预缴增值税、2.1.1、预缴附加税(20190504新增附加税清数); *WHEN P_ENTITY.LEVEL *IS "L5.1" *REC(FACTOR = 0) *ENDWHEN *IS A010304070101 //不区分产品:6、预缴企业所得税 *WHEN P_ENTITY.LEVEL *IS "L5.1" *REC(FACTOR = 0) *ENDWHEN *ENDWHEN *IS AD01020301,AD01020302,AD01020303 *WHEN P_ACCOUNT *IS A01030404,A01030403010101 //不区分产品:4、普通,非普通,其他的预缴土地增值税基数、预缴土地增值税; *WHEN P_ENTITY.LEVEL *IS "L5.1" *REC(FACTOR = 0) *ENDWHEN *ENDWHEN *ENDWHEN *ENDWHEN *IS %010804ZH1%,%010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 *WHEN PRODUCT *IS WO_PRODUCT *WHEN ADDITION *IS AD010101 *WHEN P_ACCOUNT *IS A01030404,A01030403010101 //不区分产品:5、管理口径的预缴土地增值税基数、预缴土地增值税 *WHEN P_ENTITY.LEVEL *IS "L5.1" *REC(FACTOR = 0) *ENDWHEN *ENDWHEN *ENDWHEN *ENDWHEN *IS BAS(2999.TOTAL),BAS(3000.TOTAL),BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL) *WHEN PRODUCT *IS WO_PRODUCT *WHEN ADDITION *IS AD010101 *WHEN P_ACCOUNT //7、1.1.1.2-1.1.1.8 *IS A01030408,A01030409,A01030412,A01030413,A01030414,A01030415,A01030416,A01030417,A01030418 *WHEN P_ENTITY.LEVEL *IS "L5.1" *REC(FACTOR = 0) *ENDWHEN *ENDWHEN *ENDWHEN *ENDWHEN *ENDWHEN //计算分期分产品,管理口径的预缴增值税基数、预缴增值税以及分期分产品(普通、非普通、其他)预缴土地增值税基数、预缴土地增值税 *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) *XDIM_MEMBERSET PRODUCT = BAS(P01) *XDIM_MEMBERSET TIME = BAS(PTIME_TOTAL) *XDIM_MEMBERSET P_ACCOUNT =A010104,A010105 *XDIM_MEMBERSET AUDITTRAIL = INPUT *XDIM_MEMBERSET ADDITION = AD010101 *XDIM_MEMBERSET ITEM = WO_ITEM *XDIM_MEMBERSET D_TYPE = WO_D_TYPE *XDIM_MEMBERSET RESERVE = WO_RESERVE *START_BADI SKJS_XJL QUERY = OFF WRITE = ON *END_BADI //1.计算项目.INP,不区分产品,管理口径的预缴增值税基数、预缴增值税,将分期分产品的数据写到项目.INP,不区分产品上; //2.计算项目.INP,不区分产品,普通/非普通/其他口径的预缴土地增值税基数、预缴土地增值税、上月实际手录,将分期分产品的数据写到项目.INP,不区分产品上; //3.计算项目.INP,不区分产品,管理口径的预缴土地增值税基数、预缴土地增值税,含第2点手工调实数,上月实际计算 *XDIM_MEMBERSET TIME = %010804ZH1%,%010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //全周期 *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% *XDIM_MEMBERSET P_ACCOUNT = A01030402,A01030401010101,A01030404,A01030403010101 *XDIM_MEMBERSET PRODUCT = BAS(P01),WO_PRODUCT *XDIM_MEMBERSET AUDITTRAIL = INPUT *XDIM_MEMBERSET ADDITION = AD010101,AD01020301,AD01020302,AD01020303 *XDIM_MEMBERSET ITEM = WO_ITEM *XDIM_MEMBERSET D_TYPE = WO_D_TYPE *XDIM_MEMBERSET RESERVE = WO_RESERVE *WHEN TIME *IS %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 //计划时间 *WHEN PRODUCT *IS BAS(P01) *WHEN ADDITION *IS AD010101 *WHEN P_ACCOUNT *IS A01030402,A01030401010101 //1、管理口径的预缴增值税基数、预缴增值税 *WHEN P_ENTITY.LEVEL *IS "L6","L7" *REC(EXPRESSION=%VALUE%,PRODUCT = WO_PRODUCT,P_ENTITY = P_ENTITY.MAPPINGT) *ENDWHEN *ENDWHEN *IS AD01020301,AD01020302,AD01020303 *WHEN P_ACCOUNT *IS A01030404,A01030403010101 //2、普通/非普通/其他口径的预缴土地增值税基数、预缴土地增值税;3、管理口径的预缴土地增值税基数、预缴土地增值税 *WHEN P_ENTITY.LEVEL *IS "L6","L7" *REC(EXPRESSION=%VALUE%,PRODUCT = WO_PRODUCT,P_ENTITY = P_ENTITY.MAPPINGT) *REC(EXPRESSION=%VALUE%,PRODUCT = WO_PRODUCT,P_ENTITY = P_ENTITY.MAPPINGT,ADDITION=AD010101) //管理 *ENDWHEN *ENDWHEN *ENDWHEN *ENDWHEN *IS %010804ZH1% //加上实际期 *WHEN PRODUCT *IS WO_PRODUCT *WHEN ADDITION *IS AD01020301,AD01020302,AD01020303 *WHEN P_ACCOUNT *IS A01030404,A01030403010101 //3、管理口径的预缴土地增值税基数、预缴土地增值税 *WHEN P_ENTITY.LEVEL *IS "L5.1" *REC(EXPRESSION=%VALUE%,PRODUCT = WO_PRODUCT,ADDITION=AD010101) //管理 *ENDWHEN *ENDWHEN *ENDWHEN *ENDWHEN *ENDWHEN //1.计算预缴附加税;2.小税种;3.计算按纳税义务发生时间补缴增值税对应附加税; *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% *XDIM_MEMBERSET TIME = BAS(PTIME_TOTAL) *XDIM_MEMBERSET P_ACCOUNT = BAS(A010304010101),BAS(A01030301),BAS(A01030303),BAS(A01030305),A01030306,A01030307,A01030309,A010304010102 *XDIM_MEMBERSET PRODUCT = WO_PRODUCT *XDIM_MEMBERSET AUDITTRAIL = INPUT *XDIM_MEMBERSET ADDITION = AD010101 *XDIM_MEMBERSET ITEM = WO_ITEM *XDIM_MEMBERSET D_TYPE = WO_D_TYPE *XDIM_MEMBERSET RESERVE = WO_RESERVE *WHEN TIME *IS %010804ZH%,BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),3010.01 *WHEN P_ACCOUNT *IS BAS(A010304010101) //1.计算预缴附加税; *REC(EXPRESSION = %VALUE%*([P_ACCOUNT].[A01050504],[TIME].[WO_TIME],[ADDITION].[WO_ADDITION]),P_ACCOUNT=A01030401020101) *IS A010304010102 //3.计算按纳税义务发生时间补缴增值税对应附加税 *REC(EXPRESSION = %VALUE%*([P_ACCOUNT].[A01050504],[TIME].[WO_TIME],[ADDITION].[WO_ADDITION]),P_ACCOUNT=A010304010202) *ENDWHEN *IS BAS(PTIME_TOTAL) *WHEN P_ACCOUNT //2.小税种 *IS BAS(A01030301),BAS(A01030303),BAS(A01030305),A01030306,A01030307,A01030309 *REC(EXPRESSION = %VALUE%,P_ACCOUNT=A0103040103) *ENDWHEN *ENDWHEN //计算上一年一月及以后的1.1.1.1、利润总额,1.1.1.2、预缴企业所得税回款基数,1.1.1.3、预缴企业所得税结转收入基数,1.1.1.4、土增税(现金流口径),1.1.1.5、附加税(现金流口径) //1.1.1.6、土增税(利润口径),1.1.1.7、附加税(利润口径),1.1.1、应税利润,1.1.2、当年累计应税利润 //当前版本及以后年月的1.1、预缴企业所得税 *XDIM_MEMBERSET TIME = BAS(2999.TOTAL),BAS(3000.TOTAL),BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL),WO_TIME //计划时间 *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) *XDIM_MEMBERSET P_ACCOUNT = A010601,A0201010201,A02010101010105,A02010101010101,A010105,A01050506,A01050505,A01030411,A010304070101,A010304070102 //利润总额 *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% *XDIM_MEMBERSET AUDITTRAIL = INPUT *XDIM_MEMBERSET PRODUCT = WO_PRODUCT,BAS(P01) *XDIM_MEMBERSET ADDITION = AD010101,AD010103,WO_ADDITION *XDIM_MEMBERSET ITEM = WO_ITEM *XDIM_MEMBERSET D_TYPE = WO_D_TYPE *XDIM_MEMBERSET RESERVE = WO_RESERVE *START_BADI TAX_CF QUERY = ON WRITE = ON *END_BADI
*SELECT(%010803ZH1%, "ID", "TIME", "[PLAN] = 'Y'") *XDIM_MEMBERSET P_ENTITY = BAS(%P_ENTITY_SET%) *XDIM_MEMBERSET CATEGORY = %CATEGORY_SET% *XDIM_MEMBERSET TIME = BAS(3001.TOTAL),BAS(3002.TOTAL),BAS(3003.TOTAL),BAS(3004.TOTAL),BAS(3005.TOTAL),BAS(3006.TOTAL),BAS(3007.TOTAL),BAS(3008.TOTAL),BAS(3009.TOTAL) *XDIM_ADDMEMBERSET TIME = %010803ZH1%,3010.01 *XDIM_MEMBERSET P_ACCOUNT = A01030202,A01030203,A01030204,A01030205 *XDIM_MEMBERSET PRODUCT = BAS(P01) *XDIM_MEMBERSET AUDITTRAIL = INPUT *XDIM_MEMBERSET ADDITION = AD010103 *XDIM_MEMBERSET ITEM = WO_ITEM *XDIM_MEMBERSET D_TYPE = WO_D_TYPE *XDIM_MEMBERSET RESERVE = WO_RESERVE *WHEN P_ACCOUNT *IS A01030202,A01030203 *REC(EXPRESSION =%VALUE%*([P_ACCOUNT].[A01050504],[PRODUCT].[WO_PRODUCT],[TIME].[WO_TIME],[ADDITION].[WO_ADDITION],[AUDITTRAIL].[INPUT_COPY],[D_TYPE].[WO_D_TYPE]),P_ACCOUNT = A0103020101,D_TYPE=WO_D_TYPE) *IS A01030204,A01030205 *REC(EXPRESSION =-1*%VALUE%*([P_ACCOUNT].[A01050504],[PRODUCT].[WO_PRODUCT],[TIME].[WO_TIME],[ADDITION].[WO_ADDITION],[AUDITTRAIL].[INPUT_COPY],[D_TYPE].[WO_D_TYPE]),P_ACCOUNT = A0103020101,D_TYPE=WO_D_TYPE) *ENDWHEN METHOD if_uj_custom_logic~execute. "//定义常量 CONSTANTS: cns_parent1 TYPE char20 VALUE 'PARENTH1', cns_parent2 TYPE char20 VALUE 'PARENTH2'. "//定义类型 TYPES: BEGIN OF ty_data. INCLUDE TYPE zbpcs_0003. TYPES:signeddata TYPE /b28/oisdata, END OF ty_data. TYPES:BEGIN OF ty_dim, zdimension TYPE char20, zlevel TYPE char20, zvalue TYPE char32, zrange TYPE char20, END OF ty_dim. "//定义变量 DATA:lv_in_entity TYPE char32, lv_in_category TYPE char32, lv_in_time TYPE char32, lv_in_p_account TYPE char32, lv_in_product TYPE char32, lv_in_audittrail TYPE char32, lv_in_addition TYPE char32, lv_in_item TYPE char32, lv_in_d_type TYPE char32, lv_in_reserve TYPE char32. "//定义内表 DATA: lt_dim TYPE TABLE OF ty_dim, rt_product TYPE RANGE OF char32, rt_account TYPE RANGE OF char32, rt_account1 TYPE RANGE OF char32, rt_account_other TYPE RANGE OF char32, rt_entity TYPE RANGE OF char32, rt_audittrail TYPE RANGE OF char32, rt_time TYPE RANGE OF char32. "Y "//定义结果/工作区 DATA:lt_result TYPE TABLE OF ty_data, ls_result TYPE ty_data. DATA:et_member TYPE uja_t_dim_member. "//定义工作区 DATA:ls_data TYPE ty_data, lt_data TYPE STANDARD TABLE OF ty_data, lt_data1 TYPE STANDARD TABLE OF ty_data, "internal table data1 ls_data1 TYPE ty_data, lt_data2 TYPE STANDARD TABLE OF ty_data, "internal table data2 ls_data2 TYPE ty_data, lt_data_a TYPE STANDARD TABLE OF ty_data, "internal table a ls_data_a TYPE ty_data, lt_data_b TYPE STANDARD TABLE OF ty_data, "internal table b lt_data_b_sum TYPE STANDARD TABLE OF ty_data, "internal table b sum ls_data_b TYPE ty_data, lt_data_c TYPE STANDARD TABLE OF ty_data, "internal table c ls_data_c TYPE ty_data, ls_member LIKE LINE OF et_member, ls_dim TYPE ty_dim, rs_range LIKE LINE OF rt_time. "//定义类 DATA: lo_hier TYPE REF TO if_uja_hier, lo_dim TYPE REF TO cl_uja_dim. FIELD-SYMBOLS:<fs_range> LIKE rt_entity. "//定义宏 DEFINE add_lt_dim. ls_dim-zdimension = &1. ls_dim-zlevel = &2. ls_dim-zvalue = &3. ls_dim-zrange = &4. append ls_dim to lt_dim. clear ls_dim. END-OF-DEFINITION. DEFINE insert_range. clear:&1. &1-sign = &3. &1-option = &4. &1-dimension = &5. &1-low = &6. &1-high = &7. collect &1 into &2. END-OF-DEFINITION. "//-模型维护 数据 DATA: lo_dataref TYPE REF TO data. DATA: lt_selections TYPE uj0_t_sel. DATA: ls_selections LIKE LINE OF lt_selections. *&--------------------------------------- Get Input Parameters LOOP AT it_param INTO data(ls_param). CASE ls_param-hashkey. WHEN 'P_ENTITY'. lv_in_entity = ls_param-hashvalue. WHEN 'CATEGORY'. lv_in_category = ls_param-hashvalue. WHEN OTHERS. ENDCASE. ENDLOOP. "//取叶子节点 CLEAR:rt_product,rt_entity,rt_time. add_lt_dim 'P_ENTITY' cns_parent1 lv_in_entity 'RT_ENTITY'. "BAS(%P_ENTITY_SET%) add_lt_dim 'PRODUCT ' cns_parent1 'P01' 'RT_PRODUCT'. "BAS(P01) LOOP AT lt_dim INTO ls_dim. TRY. CREATE OBJECT lo_dim EXPORTING i_appset_id = i_appset_id "PROVIDE APPSET NAME i_dimension = ls_dim-zdimension. "PROVIDE DIMENSION NAME CATCH cx_uja_admin_error. ENDTRY. TRY . lo_hier = lo_dim->get_hier_ref( ls_dim-zlevel ). CATCH cx_uja_admin_error. ENDTRY. CHECK lo_hier IS NOT INITIAL. CALL METHOD lo_hier->get_children EXPORTING i_member = ls_dim-zvalue i_level = 99 if_self = abap_true IMPORTING et_mbr_name = et_member. ASSIGN (ls_dim-zrange) TO <fs_range>. LOOP AT et_member INTO ls_member. rs_range-sign = 'I'. rs_range-option = 'EQ'. rs_range-low = ls_member. APPEND rs_range TO <fs_range>. ENDLOOP. CLEAR :et_member[],ls_member. ENDLOOP. *TIME筛选逻辑3 CALL METHOD zbpccl_comm_api=>get_filter_time EXPORTING iv_type = '3' CHANGING it_time = rt_time. "//从RT_TIME,RT_PRODUCT,RT_ENTITY,RT_AUDITTRAIL筛选数据 CLEAR:lt_selections,ls_selections. "RT_ENTITY LOOP AT rt_entity INTO rs_range. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ENTITY' rs_range-low space. ENDLOOP. "CATEGORY insert_range ls_selections lt_selections 'I' 'EQ' 'CATEGORY' lv_in_category space. "RT_TIME LOOP AT rt_time INTO rs_range. insert_range ls_selections lt_selections 'I' 'EQ' 'TIME' rs_range-low space. ENDLOOP. "RT_ACCOUNT insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030202' space. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030203' space. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030204' space. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030205' space. "RT_PRODUCT LOOP AT rt_product INTO rs_range. insert_range ls_selections lt_selections 'I' 'EQ' 'PROCUCT' rs_range-low space. ENDLOOP. "AUDITTRAIL insert_range ls_selections lt_selections 'I' 'EQ' 'AUDITTRAIL' 'INPUT' space. "ADDITION insert_range ls_selections lt_selections 'I' 'EQ' 'ADDITION' 'AD010103' space. "ITEM insert_range ls_selections lt_selections 'I' 'EQ' 'ITEM' 'WO_ITEM' space. "D_TYPE insert_range ls_selections lt_selections 'I' 'EQ' 'D_TYPE' 'WO_D_TYPE' space. "RESERVE insert_range ls_selections lt_selections 'I' 'EQ' 'RESERVE' 'WO_RESERVE' space. "//取PRODUCT属性数据 IF rt_product IS NOT INITIAL. SELECT /b28/s_ipd6tnw AS product, /b28/s_ippv8n1 as barn into table @data(lt_product) from /b28/pipd6tnw where /b28/s_ipd6tnw in @rt_product and objvers eq 'A'. ENDIF. DATA:ls_product LIKE LINE OF lt_product. SORT lt_product BY product. "//根据维度条件取数 CLEAR:lt_data. CALL METHOD zbpccl_comm_api=>get_model_data EXPORTING iv_appset_id = i_appset_id iv_appl_id = i_appl_id it_selections = lt_selections CHANGING it_data = lt_data. lt_data_a = lt_data."主数据 "//将原模型中P_ACCOUNT、TIME、ADDITION删除,取出数据LT_DATA1 DELETE lt_selections WHERE dimension = 'ADDITION' OR dimension = 'P_ACCOUNT' OR dimension = 'PRODUCT' OR dimension = 'AUDITTRAIL' OR dimension = 'D_TYPE' OR dimension = 'TIME' . insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01050504' space. insert_range ls_selections lt_selections 'I' 'EQ' 'PRODUCT' 'WO_PRODUCT' space. insert_range ls_selections lt_selections 'I' 'EQ' 'TIME' 'WO_TIME' space. insert_range ls_selections lt_selections 'I' 'EQ' 'ADDITION' 'WO_ADDITION' space. insert_range ls_selections lt_selections 'I' 'EQ' 'AUDITTRAIL' 'INPUT_COPY' space. insert_range ls_selections lt_selections 'I' 'EQ' 'D_TYPE' 'WO_D_TYPE' space. "//根据维度条件取数LT_DATA1 CLEAR:lt_data. CALL METHOD zbpccl_comm_api=>get_model_data EXPORTING iv_appset_id = i_appset_id iv_appl_id = i_appl_id it_selections = lt_selections CHANGING it_data = lt_data1. "进行数据合计 CLEAR:lt_data_b_sum,ls_data1. LOOP AT lt_data1 INTO ls_data1. COLLECT ls_data1 INTO lt_data_b_sum. ENDLOOP. "开始结果赋值 LOOP AT lt_data_a INTO ls_data_a . READ TABLE lt_data_b_sum INTO ls_data WITH KEY audittrail = ls_data_a-audittrail category = ls_data_a-category item = ls_data_a-item measures = ls_data_a-measures p_entity = ls_data_a-p_entity reserve = ls_data_a-reserve. CHECK sy-subrc = 0. CLEAR ls_result. ls_result-p_account = 'A0103020101'. ls_result-d_type = 'WO_D_TYPE'. IF ls_data_a-p_account = 'A01030202' OR ls_data_a-p_account = 'A01030203'. ls_result-signeddata = ls_data_a-signeddata * ls_data-signeddata. COLLECT ls_result INTO lt_result. ELSEIF ls_data_a-p_account = 'A01030204' OR ls_data_a-p_account = 'A01030205'. ls_result-signeddata = -1 * ls_data_a-signeddata * ls_data-signeddata. COLLECT ls_result INTO lt_result. ENDIF. ENDLOOP . ct_data = lt_result. ENDMETHOD. "if_uj_custom_logic~execute
METHOD if_uj_custom_logic~execute. CONSTANTS: * cns_n TYPE c VALUE 'N', * cns_p TYPE c VALUE 'P', * cns_cn TYPE char32 VALUE 'C_CN', cns_parent1 TYPE char20 VALUE 'PARENTH1', cns_parent2 TYPE char20 VALUE 'PARENTH2'. * cns_01 TYPE char3 VALUE '01*', * cns_02 TYPE char3 VALUE '02*'. TYPES: BEGIN OF ty_data. INCLUDE TYPE zbpcs_0003. TYPES:signeddata TYPE /b28/oisdata, END OF ty_data. TYPES:BEGIN OF ty_dim, zdimension TYPE char20, zlevel TYPE char20, zvalue TYPE char32, zrange TYPE char20, END OF ty_dim. DATA: lv_in_entity TYPE char32, lv_in_category TYPE char32, lv_in_time TYPE char32. * lv_in_p_account TYPE char32, * lv_in_product TYPE char32, * lv_in_audittrail TYPE char32, * lv_in_addition TYPE char32, * lv_in_item TYPE char32, * lv_in_d_type TYPE char32, * lv_in_reserve TYPE char32. DATA: lt_dim TYPE TABLE OF ty_dim, rt_product TYPE RANGE OF char32, rt_account TYPE RANGE OF char32, * rt_account_other TYPE RANGE OF char32, rt_entity TYPE RANGE OF char32, rt_audittrail TYPE RANGE OF char32, rt_time TYPE RANGE OF char32, "YS rt_time_logic3 TYPE RANGE OF char32. "Y DATA:lt_result TYPE TABLE OF ty_data, ls_result TYPE ty_data. DATA:et_member TYPE uja_t_dim_member. DATA:ls_data TYPE ty_data, lt_data TYPE STANDARD TABLE OF ty_data, lt_data1 TYPE STANDARD TABLE OF ty_data, ls_data1 TYPE ty_data, lt_data2 TYPE STANDARD TABLE OF ty_data, ls_data2 TYPE ty_data, lt_data_a TYPE STANDARD TABLE OF ty_data, ls_data_a TYPE ty_data, lt_data_b TYPE STANDARD TABLE OF ty_data, lt_data_b_sum TYPE STANDARD TABLE OF ty_data, ls_data_b TYPE ty_data, lt_data_c TYPE STANDARD TABLE OF ty_data, ls_data_c TYPE ty_data, ls_member LIKE LINE OF et_member, ls_dim TYPE ty_dim, rs_range LIKE LINE OF rt_time. DATA: lo_hier TYPE REF TO if_uja_hier, lo_dim TYPE REF TO cl_uja_dim. FIELD-SYMBOLS:<fs_range> LIKE rt_entity. DEFINE add_lt_dim. ls_dim-zdimension = &1. ls_dim-zlevel = &2. ls_dim-zvalue = &3. ls_dim-zrange = &4. APPEND ls_dim TO lt_dim. CLEAR ls_dim. END-OF-DEFINITION. DEFINE insert_range. CLEAR:&1. &1-sign = &3. &1-option = &4. &1-dimension = &5. &1-low = &6. &1-high = &7. COLLECT &1 INTO &2. END-OF-DEFINITION. DATA: lo_dataref TYPE REF TO data. DATA: lt_selections TYPE uj0_t_sel. DATA: ls_selections LIKE LINE OF lt_selections. *&--------------------------------------- Get Input Parameters LOOP AT it_param INTO DATA(ls_param). CASE ls_param-hashkey. WHEN 'P_ENTITY'. lv_in_entity = ls_param-hashvalue. WHEN 'CATEGORY'. lv_in_category = ls_param-hashvalue. WHEN 'TIME'. lv_in_time = ls_param-hashvalue. WHEN OTHERS. ENDCASE. ENDLOOP. CLEAR:rt_product,rt_entity,rt_time. add_lt_dim 'PRODUCT' cns_parent1 'P01' 'RT_PRODUCT'. add_lt_dim 'P_ENTITY' cns_parent1 lv_in_entity 'RT_ENTITY'. LOOP AT lt_dim INTO ls_dim. TRY. CREATE OBJECT lo_dim EXPORTING i_appset_id = i_appset_id "PROVIDE APPSET NAME i_dimension = ls_dim-zdimension. " PROVIDE DIMENSION NAME CATCH cx_uja_admin_error. ENDTRY. TRY . lo_hier = lo_dim->get_hier_ref( ls_dim-zlevel ). CATCH cx_uja_admin_error. ENDTRY. CHECK lo_hier IS NOT INITIAL. CALL METHOD lo_hier->get_children EXPORTING i_member = ls_dim-zvalue i_level = 99 if_self = abap_true IMPORTING et_mbr_name = et_member. ASSIGN (ls_dim-zrange) TO <fs_range>. LOOP AT et_member INTO ls_member. rs_range-sign = 'I'. rs_range-option = 'EQ'. rs_range-low = ls_member. APPEND rs_range TO <fs_range>. ENDLOOP. CLEAR :et_member[],ls_member. ENDLOOP. *TIME筛选逻辑1 CALL METHOD zbpccl_comm_api=>get_filter_time EXPORTING iv_type = '1' CHANGING it_time = rt_time. *TIME筛选逻辑3 CALL METHOD zbpccl_comm_api=>get_filter_time EXPORTING iv_type = '3' CHANGING it_time = rt_time_logic3. CLEAR:lt_selections,ls_selections. LOOP AT rt_time INTO rs_range. insert_range ls_selections lt_selections 'I' 'EQ' 'TIME' rs_range-low space. ENDLOOP. insert_range ls_selections lt_selections 'I' 'EQ' 'CATEGORY' lv_in_category space. LOOP AT rt_entity INTO rs_range. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ENTITY' rs_range-low space. ENDLOOP. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030402' space. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030401010101' space. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030404' space. insert_range ls_selections lt_selections 'I' 'EQ' 'P_ACCOUNT' 'A01030403010101' space. LOOP AT rt_product INTO rs_range. insert_range ls_selections lt_selections 'I' 'EQ' 'PRODUCT' rs_range-low space. ENDLOOP. insert_range ls_selections lt_selections 'I' 'EQ' 'PRODUCT' 'WO_PRODUCT' space. insert_range ls_selections lt_selections 'I' 'EQ' 'AUDITTRAIL' 'INPUT' space. insert_range ls_selections lt_selections 'I' 'EQ' 'ITEM' 'WO_ITEM' space. insert_range ls_selections lt_selections 'I' 'EQ' 'D_TYPE' 'WO_D_TYPE' space. insert_range ls_selections lt_selections 'I' 'EQ' 'RESERVE' 'WO_RESERVE' space. insert_range ls_selections lt_selections 'I' 'EQ' 'ADDITION' 'AD010101' space. insert_range ls_selections lt_selections 'I' 'EQ' 'ADDITION' 'AD01020301' space. insert_range ls_selections lt_selections 'I' 'EQ' 'ADDITION' 'AD01020302' space. insert_range ls_selections lt_selections 'I' 'EQ' 'ADDITION' 'AD01020303' space. IF rt_product IS NOT INITIAL. SELECT /b28/s_ipd6tnw AS product, /b28/s_ippv8n1 AS barn INTO TABLE @DATA(lt_product) FROM /b28/pipd6tnw WHERE /b28/s_ipd6tnw IN @rt_product AND objvers EQ 'A'. ENDIF. DATA:ls_product LIKE LINE OF lt_product. SORT lt_product BY product. IF rt_entity IS NOT INITIAL. SELECT /b28/s_ipdmtib AS p_entity, /b28/s_ippun5d AS level, /b28/s_ipp5qst AS mappingt INTO TABLE @DATA(lt_entity) FROM /b28/pipdmtib WHERE /b28/s_ipdmtib IN @rt_entity. ENDIF. CLEAR:lt_data. CALL METHOD zbpccl_comm_api=>get_model_data EXPORTING iv_appset_id = i_appset_id iv_appl_id = i_appl_id it_selections = lt_selections CHANGING it_data = lt_data. lt_data_a = lt_data. LOOP AT lt_data_a INTO ls_data_a . IF ls_data_a-time IN rt_time_logic3. IF ls_data_a-product IN rt_product. IF ls_data_a-addition = 'AD010101'. IF ls_data_a-p_account = 'A01030402' OR ls_data_a-p_account = 'A01030401010101'. READ TABLE lt_entity ASSIGNING FIELD-SYMBOL(<lfs_entity>) WITH KEY p_entity = ls_data_a-p_entity. IF sy-subrc = 0. IF <lfs_entity>-level = 'L6' OR <lfs_entity>-level = 'L7'. CLEAR ls_result. ls_result = ls_data_a. ls_result-product = 'WO_PRODUCT'. ls_result-p_entity = <lfs_entity>-mappingt. COLLECT ls_result INTO lt_result. ENDIF. ENDIF. ENDIF. ENDIF. IF ls_data_a-addition = 'AD01020301' OR ls_data_a-addition = 'AD01020302' OR ls_data_a-addition = 'AD01020303'. IF ls_data_a-p_account = 'A01030404' OR ls_data_a-p_account = 'A01030403010101'. READ TABLE lt_entity ASSIGNING FIELD-SYMBOL(<lfs_entity>) WITH KEY p_entity = ls_data_a-p_entity. IF sy-subrc = 0. IF <lfs_entity>-level = 'L6' OR <lfs_entity>-level = 'L7'. CLEAR ls_result. ls_result = ls_data_a. ls_result-product = 'WO_PRODUCT'. ls_result-p_entity = <lfs_entity>-mappingt. COLLECT ls_result INTO lt_result. CLEAR ls_result. ls_result = ls_data_a. ls_result-product = 'WO_PRODUCT'. ls_result-addition = 'AD010101'. ls_result-p_entity = <lfs_entity>-mappingt. COLLECT ls_result INTO lt_result. ENDIF. ENDIF. ENDIF. ENDIF. ENDIF. ENDIF. ******* ?????这里有问题 IF ls_data_a-time = lv_in_time. IF ls_data_a-product = 'WO_PRODUCT'. IF ls_data_a-addition = 'AD01020301' OR ls_data_a-addition = 'AD01020302' OR ls_data_a-addition = 'AD01020303'. IF ls_data_a-p_account = 'A01030404' OR ls_data_a-p_account = 'A01030403010101'. READ TABLE lt_entity ASSIGNING FIELD-SYMBOL(<lfs_entity>) WITH KEY p_entity = ls_data_a-p_entity. IF sy-subrc = 0. IF <lfs_entity>-level = 'L5.1'. CLEAR ls_result. ls_result = ls_data_a. ls_result-addition = 'AD010101'. COLLECT ls_result INTO lt_result. ENDIF. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP . ct_data = lt_result.