• BPC 脚本


    // //税款计算(现金流)
    // //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、预缴企业所得税;71.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  //71.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.
  • 相关阅读:
    读你必须知道的.NET(二)
    读你必须知道的.NET(四)
    读你必须知道的.NET(三)
    顺序表(线性表)操作的思想及实现之C#版
    HBase原理、基本概念、基本架构3
    HBase学习之深入理解Memstore6
    hadoop学习笔记之hbase完全分布模式安装5
    hbase学习 rowKey的设计4
    WPF开源收集
    请注释你那该死的代码(转载类)
  • 原文地址:https://www.cnblogs.com/JackeyLove/p/14272461.html
Copyright © 2020-2023  润新知