SAP ABAP SQL CASE 套 CASE

直接上代码

"数据提取
  SELECT a~bukrs, a~werks, a~matnr, a~blart, a~gjahr, a~poper,    "a表上的年度  期间
         a~racct, c~wadat_ist, a~wsl, a~msl,
        CASE WHEN d~xchar = 'X' THEN
               CASE WHEN a~msl < 0 THEN d~kcmeng * -1       
                                   ELSE d~kcmeng
                         END
             ELSE
               CASE WHEN a~msl < 0 THEN d~lgmng * -1       
                                   ELSE d~lgmng
                         END
          END AS fklmg,
                  d~meins ,    
         CAST( substring( c~wadat_ist, 1, 4 ) AS NUMC ) AS gjahr_dn, CAST( concat( '0', substring( c~wadat_ist, 5, 2 ) ) AS NUMC ) AS poper_dn   "发货单上的年度 期间
    FROM @lt_acdoca_bkpf_rv AS a
    INNER JOIN vbrp AS b ON a~awref = b~vbeln AND a~awitem = b~posnr
    INNER JOIN likp AS c ON b~vgbel = c~vbeln
    INNER JOIN lips AS d ON b~vgbel = d~vbeln AND b~vgpos = d~posnr 
    INTO TABLE @DATA(lt_rv_sum_t).

 下面是CASE--CASE--CASE三层

  SELECT a~bukrs, b~werks, a~matnr, a~blart, a~gjahr, a~poper,    "a表上的年度  期间
         a~racct, a~rassc, c~wadat_ist, a~wsl, a~msl,             "20280228  增加rassc字段
        "20260302  先判断交货单行项次类别   在判断批次是否启用批次
        CASE WHEN d~pstyv = 'Z017' THEN
               CASE WHEN a~msl < 0 THEN b~fklmg * -1
                                   ELSE b~fklmg
                         END
             ELSE
               CASE WHEN d~xchar = 'X' THEN
                      CASE WHEN a~msl < 0 THEN d~kcmeng * -1
                                          ELSE d~kcmeng
                           END
                    ELSE
                      CASE WHEN a~msl < 0 THEN d~lgmng * -1
                                          ELSE d~lgmng
                           END
               END
          END AS fklmg,
                  d~meins ,    "交货单的基本计量单位  20260221
         b~vbeln, b~fklmg AS ff, d~pstyv,
         CAST( substring( c~wadat_ist, 1, 4 ) AS NUMC ) AS gjahr_dn, CAST( concat( '0', substring( c~wadat_ist, 5, 2 ) ) AS NUMC ) AS poper_dn   "发货单上的年度 期间
    FROM @lt_acdoca_bkpf_rv AS a
    INNER JOIN vbrp AS b ON a~awref = b~vbeln AND a~awitem = b~posnr
    INNER JOIN likp AS c ON b~vgbel = c~vbeln
    INNER JOIN lips AS d ON b~vgbel = d~vbeln AND b~vgpos = d~posnr "20260215
    INTO TABLE @DATA(lt_rv_sum_t).

 

posted on 2026-02-25 08:22  seven1314pp  阅读(32)  评论(0)    收藏  举报