网站开发报价合同范本,彭水县网站开发,成熟网站开发单位,响应式儿童网站源码文章目录 ABAP 字段类型不一样导致相加之后金额错误写在前面的总结示例程序1汇总MSEG表和MLDOC表 ABAP 字段类型不一样导致相加之后金额错误
写在前面的总结
如果需要不同底表的字段相加的值#xff0c;那么最好是根据条件去分别算出那些值放在临时内表里面#xff0c;再去… 文章目录 ABAP 字段类型不一样导致相加之后金额错误写在前面的总结示例程序1汇总MSEG表和MLDOC表 ABAP 字段类型不一样导致相加之后金额错误
写在前面的总结
如果需要不同底表的字段相加的值那么最好是根据条件去分别算出那些值放在临时内表里面再去根据条件读取临时内表读取完之后取出对应的值进行计算不然可能会因为字段有不同长度计算的结果出错如果要多个表连接一定要注意连接的条件和思路思路要清晰连接条件要正确在select语句里面如果使用sum函数字段长度不相等可能会导致计算出来的值有问题尽量在select语句的筛选条件里面筛选数据使得到的内表的行数尽量更少更准确一些。 原来的代码
原来的代码( CASE WHEN c~aufnr IS INITIALTHEN ( SUM( CASE WHEN c~bwart 102 THEN c~dmbtr * -1 ELSE c~dmbtr END ) )ELSE SUM( CASE WHEN c~bwart 102 THEN c~dmbtr * -1 ELSE c~dmbtr END ) d~prd END ) AS dmbtr, 模具入库金额现在修改成( CASE WHEN c~aufnr IS INITIALTHEN ( SUM( CASE WHEN c~bwart 102 THEN c~dmbtr * -1 ELSE c~dmbtr END ) )ELSE SUM( CASE WHEN c~bwart 102 THEN c~dmbtr * -1 ELSE c~dmbtr END ) ( CASE WHEN abs( d~prd ) 0 THEN d~prd ELSE 0 END ) END ) AS dmbtr, 模具入库金额程序名z_test_lhy2
示例程序1
REPORT z_test_lhy2.
*--------------------------Variables----------------------------------*
TYPES: BEGIN OF ty_out,werks TYPE mseg-werks, 工厂matnr2 TYPE mara-matnr, 物料aufnr TYPE mseg-aufnr, 订单END OF ty_out.
DATA: gs_out TYPE ty_out,gt_out TYPE TABLE OF ty_out.*------------------------------Logic----------------------------------*
gs_out-werks 1710.
gs_out-matnr2 MZ-FG-C990.
gs_out-aufnr 000001000920.
APPEND gs_out TO gt_out.SELECTa~werks, 工厂a~matnr2, 物料( CASE WHEN b~aufnr IS INITIALTHEN SUM( CASE WHEN b~bwart 102 THEN b~dmbtr * -1 ELSE b~dmbtr END )ELSE SUM( CASE WHEN b~bwart 102 THEN b~dmbtr * -1 ELSE b~dmbtr END ) c~prd END ) AS dmbtr_hj, 合计金额c~prd,b~aufnr,SUM( CASE WHEN b~bwart 102 THEN b~dmbtr * -1 ELSE b~dmbtr END ) AS dmbtr 原始金额FROM gt_out AS aLEFT JOIN mseg AS b ON a~werks b~werks AND a~matnr2 b~matnrLEFT JOIN mldoc AS c ON b~aufnr c~aufnr AND c~tcode KO88WHERE substring( b~budat_mkpf,1,4 ) 2021GROUP BY a~werks,a~matnr2,b~aufnr,c~prd,b~aufnrINTO TABLE DATA(lt_temp).
单独定义两个变量之后再相加数值是没有问题的都是正确的
汇总MSEG表和MLDOC表
这里想先汇总MSEG的金额再去mldoc表去查询价格差异字段prd并汇总价格差异的金额可以用下面的做法
SELECTa~werks, 工厂a~matnr2, 物料
* ( CASE WHEN b~aufnr IS INITIAL
* THEN SUM( CASE WHEN b~bwart 102 THEN b~dmbtr * -1 ELSE b~dmbtr END )
* ELSE SUM( CASE WHEN b~bwart 102 THEN b~dmbtr * -1 ELSE b~dmbtr END ) c~prd END ) AS dmbtr_hj, 合计金额
* c~prd,b~aufnr,SUM( CASE WHEN b~bwart 102 THEN b~dmbtr * -1 ELSE b~dmbtr END ) AS dmbtr 原始金额FROM gt_out AS aLEFT JOIN mseg AS b ON a~werks b~werks AND a~matnr2 b~matnr AND a~aufnr b~aufnrLEFT JOIN mldoc AS c ON a~aufnr c~aufnr AND c~tcode KO88WHERE substring( b~budat_mkpf,1,4 ) 2021GROUP BY a~werks,a~matnr2,b~aufnrINTO TABLE DATA(lt_mseg).SORT lt_mseg BY werks matnr2 dmbtr.cl_demo_outputdisplay( lt_mseg ).SELECTa~werks,工厂a~matnr2,物料a~aufnr, 订单SUM( b~prd ) AS prd 价格差异FROM lt_mseg AS aLEFT JOIN mldoc AS b ON a~aufnr b~aufnr AND b~tcode KO88GROUP BY a~werks,a~matnr2,a~aufnrINTO TABLE DATA(lt_mldoc).SORT lt_mldoc BY werks matnr2 aufnr.cl_demo_outputdisplay( lt_mldoc ).