内表和取数

银河舰队 1人参与 0 次点击







*&---------------------------------------------------------------------*
 *& Report ZM_0815_01
 *&---------------------------------------------------------------------*
 *&
 *&---------------------------------------------------------------------*
 REPORT ZM_0815_01 LINE-SIZE 250.
 
 TABLES:VBRK,TVKOT,VBRP,TSPAT,KNA1.
 
 TYPES:BEGIN OF TAB_01,
   VKORG   TYPE VBRK-VKORG,    "1  销售组织
   VTEXT   TYPE TVKOT-VTEXT,   "2  销售组织描述
   SPART   TYPE VBRP-SPART,     "3  产品组
   VTEXT1  TYPE TSPAT-VTEXT,    "4  产品组描述
   KUNAG   TYPE VBRK-KUNAG,     "5   客户编码
   NAME1   TYPE KNA1-NAME1,
   NAME2   TYPE KNA1-NAME2,
   NAME3   TYPE KNA1-NAME3,
   NAME    TYPE CHAR50,   "自己定义的要拼接的字段   "6 客户名称
   FKIMG   TYPE VBRP-FKIMG,      "7  销售数量
   VRKME   TYPE VBRP-VRKME,      "8  销售单位
   NETWR   TYPE VBRP-NETWR,      "9(1)
   STCUR   TYPE VBRP-STCUR,       "9(2)  10(2)
   XSJZ    TYPE P DECIMALS 2,    "自己定义的销售净值  9
   MWSBP   TYPE VBRP-MWSBP,      "10(1)
   XXS     TYPE P DECIMALS 2,     "销项税
   YSC     TYPE CHAR20,           "自己定义的已售出未提产品金额
   VBTYP   TYPE VBRK-VBTYP,      "销售数量的条件
   AUGRU_AUFT  TYPE VBRP-AUGRU_AUFT,   "根据已售未提产品金额条件得到的
   KUNNR   TYPE KNA1-KUNNR,     "根据客户名称连接条件得到的
   "KUNAG   TYPE VBRK-KUNAG,
   END OF TAB_01.
 
 
   DATA GT_01 TYPE STANDARD TABLE OF TAB_01.
   DATA GS_01 TYPE TAB_01.
 
 
   TYPES:BEGIN OF TAB_02,
         VTEXT TYPE TSPAT-VTEXT,
         SPART TYPE TSPAT-SPART,
         SPRAS TYPE TSPAT-SPRAS,
     END OF TAB_02.
 
     DATA GT_02 TYPE STANDARD TABLE OF TAB_02.
     DATA GS_02 TYPE TAB_02.
   SELECT VBRK~VKORG
          TVKOT~VTEXT
          VBRP~SPART
          "TSPAT~VTEXT
          VBRK~KUNAG
          KNA1~NAME1
          KNA1~NAME2
          KNA1~NAME3
          VBRP~FKIMG
          VBRP~VRKME
          VBRP~NETWR
          VBRP~STCUR
          VBRP~MWSBP
          VBRK~VBTYP
          VBRP~AUGRU_AUFT
          KNA1~KUNNR
          VBRK~KUNAG
     FROM VBRK
     INNER JOIN VBRP  ON VBRP~VBELN  = VBRK~VBELN
     INNER JOIN TVKOT ON TVKOT~VKORG = VBRK~VKORG
     INNER JOIN TSPAT ON TSPAT~SPART = VBRP~SPART
     INNER JOIN KNA1  ON KNA1~KUNNR  = VBRK~KUNAG
     INTO CORRESPONDING FIELDS OF TABLE GT_01
     WHERE ( TVKOT~SPRAS = '1' ) AND ( TSPAT~SPRAS = '1' ).
 
     SELECT TSPAT~VTEXT
            TSPAT~SPART
            TSPAT~SPRAS
       FROM TSPAT
       INTO CORRESPONDING FIELDS OF  TABLE GT_02
       FOR ALL ENTRIES IN  GT_01 WHERE SPART = GT_01-SPART AND SPRAS = '1'.
 
 
 
     "BREAK-POINT.
         WRITE:AT /1(232)  SY-ULINE,
               AT /1(1)    SY-VLINE,
               AT 2(20)    '客户编码',
               AT 22(1)    SY-VLINE,
               AT 23(20)   '客户名称',
               AT 43(1)    SY-VLINE,
               AT 44(20)   '产品组',
               AT 64(1)    SY-VLINE,
               AT 65(20)   '描述',
               AT 85(1)    SY-VLINE,
               AT 86(20)   '销售组织',
               AT 106(1)    SY-VLINE,
               AT 107(20)   '销售组织描述',
               AT 127(1)   SY-VLINE,
               AT 128(20)   '销售数量',
               AT 148(1)    SY-VLINE,
               AT 149(20)   '单位',
               AT 169(1)    SY-VLINE,
               AT 170(20)   '销售净值',
               AT 190(1)    SY-VLINE,
               AT 191(20)   '销项税',
               AT 211(1)    SY-VLINE,
               AT 212(20)   '已售未提产品金额',
               AT 232(1)    SY-VLINE.
     LOOP AT GT_01 INTO GS_01.
       GS_01-NAME = GS_01-NAME1 && GS_01-NAME2 && GS_01-NAME3.
       GS_01-XSJZ = GS_01-NETWR * GS_01-STCUR.
       GS_01-XXS  = GS_01-MWSBP * GS_01-STCUR.
 
       IF ( GS_01-VBTYP = 'O' ) OR ( GS_01-VBTYP = 'N' ) OR ( GS_01-VBTYP = '6' ).
          GS_01-FKIMG = GS_01-FKIMG * ( -1 ).
          GS_01-XSJZ = GS_01-XSJZ * ( -1 ).
          GS_01-XXS = GS_01-XXS * ( -1 ).
       ENDIF.
       IF ( GS_01-AUGRU_AUFT = '001' ) AND ( GS_01-VBTYP = 'O' ).
           GS_01-YSC = ( GS_01-NETWR + GS_01-MWSBP ) * GS_01-STCUR.
       ENDIF.
       READ TABLE GT_02 INTO GS_02 WITH KEY SPART = GS_01-SPART.
       GS_01-VTEXT1 = GS_02-VTEXT.
       MODIFY GT_01 FROM GS_01.
         WRITE:AT /1(232)  SY-ULINE,
               AT /1(1)    SY-VLINE,
               AT 2(20)    GS_01-KUNAG,
               AT 22(1)    SY-VLINE,
               AT 23(20)   GS_01-NAME,
               AT 43(1)    SY-VLINE,
               AT 44(20)   GS_01-SPART,
               AT 64(1)    SY-VLINE,
               AT 65(20)   GS_01-VTEXT1,
               AT 85(1)    SY-VLINE,
               AT 86(20)   GS_01-VKORG,
               AT 106(1)    SY-VLINE,
               AT 107(20)   GS_01-VTEXT,
               AT 127(1)   SY-VLINE,
               AT 128(20)   GS_01-FKIMG,
               AT 148(1)    SY-VLINE,
               AT 149(20)   GS_01-VRKME,
               AT 169(1)    SY-VLINE,
               AT 170(20)   GS_01-XSJZ,
               AT 190(1)    SY-VLINE,
               AT 191(20)   GS_01-XXS,
               AT 211(1)    SY-VLINE,
               AT 212(20)   GS_01-YSC,
               AT 232(1)    SY-VLINE.
     ENDLOOP.
     WRITE:AT /1(232)  SY-ULINE.
 
 
 SKIP 20.
 
 
 
              WRITE:AT /1(232)  SY-ULINE,
               AT /1(1)    SY-VLINE,
               AT 2(20)    '客户小计',
               AT 22(1)    SY-VLINE,
               AT 23(20)   '客户名称',
               AT 43(1)    SY-VLINE,
               AT 44(20)   '产品组',
               AT 64(1)    SY-VLINE,
               AT 65(20)   '描述',
               AT 85(1)    SY-VLINE,
               AT 86(20)   '销售组织',
               AT 106(1)    SY-VLINE,
               AT 107(20)   '销售组织描述',
               AT 127(1)   SY-VLINE,
               AT 128(20)   '销售数量汇总',
               AT 148(1)    SY-VLINE,
               AT 149(20)   '单位',
               AT 169(1)    SY-VLINE,
               AT 170(20)   '销售净值汇总',
               AT 190(1)    SY-VLINE,
               AT 191(20)   '销项税汇总',
               AT 211(1)    SY-VLINE,
               AT 212(20)   '已售未提产品金额汇总',
               AT 232(1)    SY-VLINE.
 
 
    DATA A TYPE CHAR10.
    "DATA B TYPE CHAR20.
    DATA N TYPE I.
    DATA:C TYPE I,
         D TYPE P DECIMALS 2,
         E TYPE P DECIMALS 2,
         F TYPE P DECIMALS 2.
    SORT GT_01 BY KUNAG  NAME ASCENDING.
    LOOP AT GT_01 INTO GS_01.
     A = GS_01-KUNAG.
     "B = GS_01-NAME.
     C = C + GS_01-FKIMG.
     D = D + GS_01-XSJZ.
     E = E + GS_01-XXS.
     F = F + GS_01-YSC.
      AT END OF KUNAG.
        N = N + 1.
        READ TABLE GT_01 INTO GS_01 WITH KEY KUNAG = A.
 *         LOOP AT GT_01 INTO GS_01 WHERE KUNAG = A.
              GS_01-KUNAG = N.
              GS_01-FKIMG = C.
              GS_01-XSJZ  = D.
              GS_01-XXS   = E.
              GS_01-YSC   = F.
 *         ENDLOOP.
         WRITE:AT /1(232)   SY-ULINE,
               AT /1(1)     SY-VLINE,
               AT 2(20)     GS_01-KUNAG,
               AT 22(1)     SY-VLINE,
               AT 23(20)    GS_01-NAME,
               AT 43(1)     SY-VLINE,
               AT 44(20)    GS_01-SPART,
               AT 64(1)     SY-VLINE,
               AT 65(20)    GS_01-VTEXT1,
               AT 85(1)     SY-VLINE,
               AT 86(20)    GS_01-VKORG,
               AT 106(1)    SY-VLINE,
               AT 107(20)   GS_01-VTEXT,
               AT 127(1)    SY-VLINE,
               AT 128(20)   GS_01-FKIMG,
               AT 148(1)    SY-VLINE,
               AT 149(20)   GS_01-VRKME,
               AT 169(1)    SY-VLINE,
               AT 170(20)   GS_01-XSJZ,
               AT 190(1)    SY-VLINE,
               AT 191(20)   GS_01-XXS,
               AT 211(1)    SY-VLINE,
               AT 212(20)   GS_01-YSC,
               AT 232(1)    SY-VLINE.
         "ENDLOOP.
         CLEAR:C,D,E,F.
         ENDAT.
     ENDLOOP.
     WRITE:AT /1(232)  SY-ULINE.