多阶BOM展开详解编程语言

*&---------------------------------------------------------------------*

    

*&
Report  Z_PP_FIND_MULTBOM_MAT
    

*&

    

*&---------------------------------------------------------------------*

    

*&

    

*&

    

*&---------------------------------------------------------------------*

    
*-----------------------------------------------------------------------

    

*
Identification
    

*
   Modul
-
Name     : ZPPPR005
    

*
   Author         : Samuel Liu Atos Origin    Modified by:wiele
    

*
   Creation date  :
11.09
.
2006
                Modified on:
01.2005

    

*
   Owner          : PP module
    

*
   Dev. under SAP : ECC6.
0

    

*
   Description    : MRP物料清单
    

*-----------------------------------------------------------------------

    REPORT Z_PP_FIND_MULTBOM_MAT   NO STANDARD PAGE HEADING
                      MESSAGE

-
ID ymm
                      LINE

-
COUNT
81

                      LINE

-
SIZE
650
.  
"
207


    
************************************************************************

    

*
INCLUDE
    

************************************************************************

    INCLUDE

<
LINE
>
.
    

************************************************************************

    

*
DDIC
    

************************************************************************

    TABLES:MARA,MARC,BKPF,MARD,MAST.
    

************************************************************************

    

*
ALV层级关系定义
    

************************************************************************

    TYPE

-
POOLS: SLIS.
    DATA: WT_FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV,
          WT_LAYOUT    TYPE SLIS_LAYOUT_ALV,
          WT_EVENTS    TYPE SLIS_T_EVENT.
    DATA: WS_EVENTS LIKE LINE OF WT_EVENTS.
    

************************************************************************

    

*
DATA
    

************************************************************************

    DATA: BEGIN OF WT_ITAB OCCURS

10
,
          MATNR    LIKE MARA

-
MATNR,
"
父件物料编码


          IDNRK    LIKE MARA
-
MATNR,
"
子件物料编码


          OJTXP    LIKE MAKT
-
MAKTX,
"
子件物料描述


          MEINS    LIKE MARA
-
MEINS,
"
子件计量单位


          MNGLG    LIKE STPOX
-
MNGLG,
"
子件用量


          LABST    LIKE MARD
-
LABST,
"
子件库存量


          LABST_01 LIKE MARD
-
LABST,
"
附加工厂一库存量


          LABST_02 LIKE MARD
-
LABST.
"
附加工厂二库存量


    DATA: END OF WT_ITAB.

    SELECTION
-
SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text
-
001
.
    PARAMETERS:     P_WERKS LIKE MAST

-
WERKS OBLIGATORY  DEFAULT
'
FZ01
'
.
    SELECT

-
OPTIONS: P_MATNR FOR MAST
-
MATNR.
"
物料号


    PARAMETERS:     P_STLAN LIKE MAST
-
STLAN DEFAULT
'
1
'
,
"
BOM 用途


                    P_BMENG LIKE STKO
-
BMENG,
"
需求数量


                    x_werks LIKE marc
-
werks OBLIGATORY DEFAULT
'
G001
'
,
                    z_werks LIKE marc

-
werks OBLIGATORY DEFAULT
'
G001
'
.
    SELECTION

-
SCREEN END OF BLOCK B1.

    SELECTION
-
SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text
-
002
.
    PARAMETERS:   P_SING RADIOBUTTON GROUP RAD1 DEFAULT

'
X
'
.
    PARAMETERS:   P_MULT RADIOBUTTON GROUP RAD1.
    SELECTION

-
SCREEN END OF BLOCK b2.

    INITIALIZATION.

    START
-
OF
-
SELECTION.
    

*
得到物料的子项目
      PERFORM GET_DATA.
    

*
打印该BOM的数据
      PERFORM PRINT_ALV_DATA.

    END
-
OF
-
SELECTION.
    

*&---------------------------------------------------------------------*

    

*&
      Form  GET_DATA
    

*&---------------------------------------------------------------------*

    

*
       text
    

*----------------------------------------------------------------------*

    

*
  
-->
  p1        text
    

*
  
<--
  p2        text
    

*----------------------------------------------------------------------*

    FORM GET_DATA .

    
*
数据定义
      DATA: BEGIN OF WTL_MATNR OCCURS

0
,
              WERKS LIKE MARC

-
WERKS,
              MATNR LIKE MARA

-
MATNR.
      DATA: END OF WTL_MATNR.

    
*
展开BOM的字阶
      DATA: WTL_STB LIKE STPOX OCCURS

10
WITH HEADER LINE.

      SELECT WERKS MATNR
      APPENDING CORRESPONDING FIELDS OF TABLE WTL_MATNR
      FROM MAST
      WHERE MATNR IN P_MATNR
      AND WERKS EQ P_WERKS.

    
*
根据选项产生不同BOM的结构
    

*
展多层BOM
      IF P_MULT EQ

'
X
'
.

        LOOP AT WTL_MATNR.

          REFRESH WTL_STB.
          CLEAR WTL_STB.

          CALL FUNCTION
'
CS_BOM_EXPL_MAT_V2
'

                EXPORTING
                  CAPID                

=

'
PP02
'
  
"
BOM Application


                  DATUV                
=
SY
-
DATUM
                  EMENG                

=
P_BMENG  
"
BASE QUANTITY


                  MTNRV                
=
WTL_MATNR
-
MATNR  
"
MATERAIL NUMBER


                  STLAN                
=
P_STLAN
    

*
              STLAL                
=
P_STLAL
    

*
              CUOBJ                
=
CUOBJ
                  MKTLS                

=

'
X
'

                  MEHRS                

=

'
X
'

                  WERKS                

=
WTL_MATNR
-
WERKS    
"
'PDGM'


                TABLES
                  STB                  

=
WTL_STB
                EXCEPTIONS
                  ALT_NOT_FOUND        

=

1

                  CALL_INVALID          

=

2

                  MATERIAL_NOT_FOUND    

=

3

                  MISSING_AUTHORIZATION

=

4

                  NO_BOM_FOUND          

=

5

                  NO_PLANT_DATA        

=

6

                  NO_SUITABLE_BOM_FOUND

=

7

                  OTHERS                

=

8
.

          IF SY
-
SUBRC EQ
0
.

            LOOP AT WTL_STB.

              WT_ITAB
-
MATNR
=
WTL_MATNR
-
MATNR.
              WT_ITAB

-
OJTXP
=
WTL_STB
-
OJTXP.
              WT_ITAB

-
IDNRK
=
WTL_STB
-
IDNRK.
              WT_ITAB

-
MEINS
=
WTL_STB
-
MEINS.
              WT_ITAB

-
MNGLG
=
WTL_STB
-
MNGLG.
    

*
         P_ITAB_ITEM
-
STLAL
=

-
STLAL.
    

*
         P_ITAB_ITEM
-
STUFE  
=
STB
-
STUFE.
    

*
查找物料的库存
              PERFORM  GET_KCDATA USING   WT_ITAB

-
IDNRK
                                  CHANGING WT_ITAB

-
LABST
                                           WT_ITAB

-
LABST_01
                                           WT_ITAB

-
LABST_02.
              APPEND  WT_ITAB.
              CLEAR WT_ITAB.

            ENDLOOP.

          ENDIF.

        ENDLOOP.
      ENDIF.

    
*
展单层BOM

      IF P_SING EQ
'
X
'
.
        LOOP AT WTL_MATNR.

          CALL FUNCTION
'
CS_BOM_EXPL_MAT_V2
'

                EXPORTING
                  CAPID                

=

'
PP02
'
  
"
BOM Application


                  DATUV                
=
SY
-
DATUM
                  EMENG                

=
P_BMENG  
"
BASE QUANTITY


                  MTNRV                
=
WTL_MATNR
-
MATNR  
"
MATERAIL NUMBER


                  STLAN                
=
P_STLAN
    

*
              STLAL                  
=
P_STLAL
    

*
           CUOBJ                
=
CUOBJ
    

*
            MKTLS                
=

'
X
'

    

*
            MEHRS                
=

'
X
'

                  WERKS                

=
WTL_MATNR
-
WERKS    
"
'PDGM'


                TABLES
                  STB                  

=
WTL_STB
                EXCEPTIONS
                  ALT_NOT_FOUND        

=

1

                  CALL_INVALID          

=

2

                  MATERIAL_NOT_FOUND    

=

3

                  MISSING_AUTHORIZATION

=

4

                  NO_BOM_FOUND          

=

5

                  NO_PLANT_DATA        

=

6

                  NO_SUITABLE_BOM_FOUND

=

7

                  OTHERS                

=

8
.

          IF SY
-
SUBRC EQ
0
.
            LOOP AT WTL_STB.

              WT_ITAB
-
MATNR
=
WTL_MATNR
-
MATNR.
              WT_ITAB

-
OJTXP
=
WTL_STB
-
OJTXP.
              WT_ITAB

-
IDNRK
=
WTL_STB
-
IDNRK.
              WT_ITAB

-
MEINS
=
WTL_STB
-
MEINS.
              WT_ITAB

-
MNGLG
=
WTL_STB
-
MNGLG.
    

*
          P_ITAB_ITEM
-
STLAL
=

-
STLAL.
    

*
          P_ITAB_ITEM
-
STUFE  
=
STB
-
STUFE.

              PERFORM  GET_KCDATA USING   WT_ITAB
-
IDNRK
                                  CHANGING WT_ITAB

-
LABST
                                           WT_ITAB

-
LABST_01
                                           WT_ITAB

-
LABST_02.

              APPEND  WT_ITAB.
              CLEAR WT_ITAB.

            ENDLOOP.
          ENDIF.

        ENDLOOP.
      ENDIF.
    ENDFORM.                    
"
GET_DATA


    
*&---------------------------------------------------------------------*

    

*&
      Form  PRINT_ALV_DATA
    

*&---------------------------------------------------------------------*

    

*
       text
    

*----------------------------------------------------------------------*

    

*
  
-->
  p1        text
    

*
  
<--
  p2        text
    

*----------------------------------------------------------------------*

    FORM PRINT_ALV_DATA .

      DATA:  WLT_FIELDCAT LIKE LINE OF WT_FIELDCAT.

    
*
  PERFORM FILL_EVENTCAT_ALV.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
MATNR
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
父件物料编码
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
IDNRK
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
子件物料编码
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
OJTXP
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
子件物料描述
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
MEINS
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
单位
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
MNGLG
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
子件用量
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
LABST
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
子件库存量
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
LABST_01
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
附加工厂一库存量
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      CLEAR WLT_FIELDCAT.
      WLT_FIELDCAT
-
FIELDNAME    
=

'
LABST_02
'
.
      WLT_FIELDCAT

-
TABNAME      
=

'
WT_ITAB
'
.
      WLT_FIELDCAT

-
NO_OUT      
=

'

'
.
      WLT_FIELDCAT

-
SELTEXT_L    
=

'
附加工厂二库存量
'
.
      APPEND WLT_FIELDCAT TO WT_FIELDCAT.

      WT_LAYOUT
-
ZEBRA
=

'
X
'
.
      WT_LAYOUT

-
F2CODE
=

'
&ETA
'
.
      WT_LAYOUT

-
COLWIDTH_OPTIMIZE
=

'
X
'
.

      CALL FUNCTION
'
REUSE_ALV_GRID_DISPLAY
'

          EXPORTING
            I_CALLBACK_PROGRAM          

=
SY
-
CPROG
            IS_LAYOUT                  

=
WT_LAYOUT
            I_CALLBACK_HTML_TOP_OF_PAGE

=

'
ALV_TOP_OF_PAGE
'

    

*
      I_callback_pf_status_set    
=

'
STANDARD1
'

            I_DEFAULT                  

=

'
X
'

            I_SAVE                      

=

'
X
'

    

*
      I_CALLBACK_USER_COMMAND    
=

'
PROCESS_USER_COMMAND
'

            IT_FIELDCAT                

=
WT_FIELDCAT[]
            IT_EVENTS                  

=
WT_EVENTS
          TABLES
            T_OUTTAB                    

=
WT_ITAB.

    ENDFORM.                    
"
PRINT_ALV_DATA



    

*---------------------------------------------------------------------*

    

*
       FORM ALV_TOP_OF_PAGE                                          
*

    

*---------------------------------------------------------------------*

    

*
       ........                                                      
*

    

*---------------------------------------------------------------------*

    

*
  
-->
  R_DYDO                                                        
*

    

*
  
-->
  TO                                                            
*

    

*
  
-->
  CL_DD_DOCUMENT                                                
*

    

*---------------------------------------------------------------------*

    FORM ALV_TOP_OF_PAGE USING CL_DD TYPE REF TO CL_DD_DOCUMENT.
    

*
  SET PF
-
STATUS
'
STANDARD1
'
.

      DATA: M_P TYPE I.
      DATA: M_BUFF TYPE STRING.

    
*
表头其实完全可以是一个html文件,自己使用html语言进行格式控制
      M_BUFF

=

'
<html>
'
.
      CALL METHOD CL_DD

->
HTML_INSERT
        EXPORTING
          CONTENTS

=
M_BUFF
        CHANGING
          POSITION

=
M_P.

    
*
  CONCATENATE
'
<body bgcolor="#008000">
'
   INTO M_BUFF.
    

*

    

**
    M_BUFF
=

'
<body background="BACKGROUND.GIF">
'
.
    

*
  CALL METHOD CL_DD
->
HTML_INSERT
    

*
    EXPORTING
    

*
      CONTENTS
=
M_BUFF
    

*
    CHANGING
    

*
      POSITION
=
M_P.

      M_BUFF
=

'
<center><font size="5">库存配套分析表</font></center>
'
.
      CALL METHOD CL_DD

->
HTML_INSERT
        EXPORTING
          CONTENTS

=
M_BUFF
        CHANGING
          POSITION

=
M_P.

    
**
  CONCATENATE
'
客户名称:
'
KNA1
-
NAME1 KNA1
-
NAME2
'
<BR>
'
INTO M_BUFF.
    

*

    

*
  CALL METHOD CL_DD
->
HTML_INSERT
    

*
    EXPORTING
    

*
      CONTENTS
=
M_BUFF
    

*
    CHANGING
    

*
      POSITION
=
M_P.
    

*

    
**
  CONCATENATE
'
SAP报价单号:
'
WT_VBAP_01
-
VBELN
'
<BR>
'
INTO M_BUFF.
    

*

    

*
  CALL METHOD CL_DD
->
HTML_INSERT
    

*
    EXPORTING
    

*
      CONTENTS
=
M_BUFF
    

*
    CHANGING
    

*
      POSITION
=
M_P.

    
*
  CONCATENATE
'
字段说明:1)交货已完成:X代表已经全部服务确认
'
  
'
<BR>
'

    

*
INTO M_BUFF.

    
*
  CALL METHOD CL_DD
->
HTML_INSERT
    

*
    EXPORTING
    

*
      CONTENTS
=
M_BUFF
    

*
    CHANGING
    

*
      POSITION
=
M_P.
    

**
文字移动
    

*
  CONCATENATE
'
<marquee


    
*
behavior
=
alternate
>
啦啦啦,我来回走耶!
</
marquee
>
  
'
  
'
<
BR
>
'
INTO


    
*
M_BUFF.
    

*

    

*
  CALL METHOD CL_DD
->
HTML_INSERT
    

*
    EXPORTING
    

*
      CONTENTS
=
M_BUFF
    

*
    CHANGING
    

*
      POSITION
=
M_P.

    
*
  CONCATENATE
'
选择参数:为1 删除交货已完成 为2 删除相等无误的 为3


    
*
删除完成以及无误的
'
  
'
<
BR
>
'
INTO M_BUFF.


    
*

    

*
  CALL METHOD CL_DD
->
HTML_INSERT
    

*
    EXPORTING
    

*
      CONTENTS
=
M_BUFF
    

*
    CHANGING
    

*
      POSITION
=
M_P.

    
*
  SELECT SINGLE
*
FROM T001
    

*
         WHERE BUKRS
=
WS_VBELN
    

*
         AND SPRAS
=

'
1
'
.
    

*

      CONCATENATE
'
报表日期 :
'
SY
-
DATUM
'
<BR>
'
INTO M_BUFF.
      CALL METHOD CL_DD

->
HTML_INSERT
        EXPORTING
          CONTENTS

=
M_BUFF
        CHANGING
          POSITION

=
M_P.

    DATA: WTL_NAME1 LIKE T001W
-
NAME1.
    CLEAR WTL_NAME1.
    SELECT SINGLE NAME1
    INTO WTL_NAME1
    FROM T001W
    WHERE WERKS EQ P_WERKS.

    CONCATENATE
'
工     厂:
'
P_WERKS WTL_NAME1
'
<BR>
'
INTO M_BUFF.
      CALL METHOD CL_DD

->
HTML_INSERT
        EXPORTING
          CONTENTS

=
M_BUFF
        CHANGING
          POSITION

=
M_P.

    DATA: WTL_NAME2 LIKE T001W
-
NAME1.
    CLEAR WTL_NAME2.
    SELECT SINGLE NAME1
    INTO WTL_NAME2
    FROM T001W
    WHERE WERKS EQ X_WERKS.

    CONCATENATE
'
附加工厂1:
'
X_WERKS WTL_NAME2
'
<BR>
'
INTO M_BUFF.
      CALL METHOD CL_DD

->
HTML_INSERT
        EXPORTING
          CONTENTS

=
M_BUFF
        CHANGING
          POSITION

=
M_P.

    DATA: WTL_NAME3 LIKE T001W
-
NAME1.
    CLEAR WTL_NAME3.
    SELECT SINGLE NAME1
    INTO WTL_NAME3
    FROM T001W
    WHERE WERKS EQ Z_WERKS.

    CONCATENATE
'
附加工厂2:
'
  Z_WERKS WTL_NAME3
'
<BR>
'
INTO M_BUFF.
      CALL METHOD CL_DD

->
HTML_INSERT
        EXPORTING
          CONTENTS

=
M_BUFF
        CHANGING
          POSITION

=
M_P.

    
*
  M_BUFF
=

'
</body>
'
.
    

*
  CALL METHOD CL_DD
->
HTML_INSERT
    

*
    EXPORTING
    

*
      CONTENTS
=
M_BUFF
    

*
    CHANGING
    

*
      POSITION
=
M_P.
    

*

      M_BUFF
=

'
</html>
'
.
      CALL METHOD CL_DD

->
HTML_INSERT
        EXPORTING
          CONTENTS

=
M_BUFF
        CHANGING
          POSITION

=
M_P.
    ENDFORM.                    

"
ALV_TOP_OF_PAGE



    

*&---------------------------------------------------------------------*

    

*&
      Form  GET_KCDATA
    

*&---------------------------------------------------------------------*

    

*
       text
    

*----------------------------------------------------------------------*

    

*
      
-->
P_WT_ITAB_IDNRK  text
    

*
      
<--
P_WT_ITAB_LABST  text
    

*
      
<--
P_WT_ITAB_LABST_01  text
    

*
      
<--
P_WT_ITAB_LABST_02  text
    

*----------------------------------------------------------------------*

    FORM GET_KCDATA  USING    P_WT_ITAB_IDNRK
                     CHANGING P_WT_ITAB_LABST
                              P_WT_ITAB_LABST_01
                              P_WT_ITAB_LABST_02.
     DATA: WTL_RESULT TYPE C.
     CLEAR WTL_RESULT.

    DATA: BEGIN OF WTL_ITAB_101 OCCURS
0
,
            MANDT LIKE MARD

-
MANDT,
            MATNR LIKE MARD

-
MATNR,
            WERKS LIKE MARD

-
WERKS,
            LGORT LIKE MARD

-
LGORT,
            LABST LIKE MARD

-
LABST,
            INSME LIKE MARD

-
INSME,
            DISKZ LIKE MARD

-
DISKZ,
            KLABS LIKE MARD

-
KLABS.
    DATA: END OF WTL_ITAB_101.

      SELECT  MANDT   MATNR  WERKS LGORT  INSME    LABST  DISKZ  klabs
        FROM    MARD
        INTO CORRESPONDING FIELDS OF TABLE WTL_ITAB_101
        WHERE WERKS EQ p_werks
             AND  MATNR
=
P_WT_ITAB_IDNRK
             AND  DISKZ  

<>

'
1
'

             ORDER BY MATNR .

        P_WT_ITAB_LABST
=

0
.
    

*
    KSTOR
=

0
.

        IF  WTL_ITAB_101[] IS INITIAL.
          P_WT_ITAB_LABST
=

0
.
    

*
      KSTOR
=

0
.
        ENDIF.

        LOOP  AT  WTL_ITAB_101 .
          P_WT_ITAB_LABST
=
P_WT_ITAB_LABST
+
WTL_ITAB_101
-
LABST
+

    WTL_ITAB_101

-
klabs.
    

*
      KSTOR
=
KSTOR
+
ITAB_101
-
LABST
+
ITAB_101
-
klabs.
        ENDLOOP.

    
*
检查物料的工厂是否存在
      PERFORM CHECK_MAT USING P_WT_ITAB_IDNRK
                              X_WERKS
                        CHANGING WTL_RESULT.

    
*
检查参考工厂1的库存

      IF WTL_RESULT NE
'
X
'
.
        SELECT  MANDT   MATNR  WERKS LGORT  INSME    LABST  DISKZ  klabs
        FROM    MARD
        INTO CORRESPONDING FIELDS OF TABLE WTL_ITAB_101
        WHERE WERKS EQ X_werks
             AND  MATNR

=
P_WT_ITAB_IDNRK
             AND  DISKZ  

<>

'
1
'

             ORDER BY MATNR .

        IF  WTL_ITAB_101[] IS INITIAL.
         P_WT_ITAB_LABST_01
=

0
.
    

*
      KSTOR
=

0
.
        ENDIF.

        LOOP  AT  WTL_ITAB_101.
          P_WT_ITAB_LABST_01
=
P_WT_ITAB_LABST_01
+
  WTL_ITAB_101
-
LABST
+

    WTL_ITAB_101

-
klabs.
    

*
      KSTOR
=
KSTOR
+
ITAB_101
-
LABST
+
ITAB_101
-
klabs.
        ENDLOOP.
      ENDIF.

    
*
检查参考工厂2
      PERFORM CHECK_MAT USING P_WT_ITAB_IDNRK
                              Z_WERKS
                        CHANGING WTL_RESULT.
    

*
从参考工厂2中取数据

      IF WTL_RESULT NE
'
X
'
.

      SELECT  MANDT   MATNR  WERKS LGORT  INSME    LABST  DISKZ  klabs
      FROM    MARD
      INTO CORRESPONDING FIELDS OF TABLE WTL_ITAB_101
      WHERE WERKS EQ Z_werks
           AND  MATNR
=
P_WT_ITAB_IDNRK
           AND  DISKZ  

<>

'
1
'

           ORDER BY MATNR .

      IF  WTL_ITAB_101[] IS INITIAL.
         P_WT_ITAB_LABST_02
=

0
.
    

*
    KSTOR
=

0
.
      ENDIF.

      LOOP  AT  WTL_ITAB_101.
        P_WT_ITAB_LABST_02
=
P_WT_ITAB_LABST_02
+
  WTL_ITAB_101
-
LABST
+

    WTL_ITAB_101

-
klabs.
    

*
    KSTOR
=
KSTOR
+
ITAB_101
-
LABST
+
ITAB_101
-
klabs.
      ENDLOOP.
      ENDIF.

    ENDFORM.                    
"
GET_KCDATA



    

*&---------------------------------------------------------------------*

    

*&
      Form  CHECK_MAT
    

*&---------------------------------------------------------------------*

    

*
       text
    

*----------------------------------------------------------------------*

    

*
      
-->
P_CH_ITEM  text
    

*
      
-->
P_X_WERKS  text
    

*
      
<--
P_WTL_RESULT  text
    

*----------------------------------------------------------------------*

    FORM CHECK_MAT  USING    P_CH_ITEM
                             P_X_WERKS
                    CHANGING P_WTL_RESULT.

      IF P_X_WERKS NE P_WERKS.

        SELECT SINGLE
*

        FROM MARC
        WHERE MATNR EQ P_CH_ITEM
        AND WERKS EQ P_X_WERKS.

        IF SY
-
SUBRC NE SPACE.
          P_WTL_RESULT

=

'
X
'
.
        ENDIF.

      ELSE.

        P_WTL_RESULT
=

'
X
'
.

      ENDIF.

    ENDFORM.                    
"
CHECK_MAT   

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18239.html

(0)
上一篇 2021年7月19日 20:57
下一篇 2021年7月19日 20:57

相关推荐

发表回复

登录后才能评论