*&---------------------------------------------------------------------*
*& Report ZTEST_Y006
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_Y006 NO STANDARD PAGE HEADING .
TABLES : STPOX ,MARA .
CLASS : CL_GUI_COLUMN_TREE DEFINITION LOAD ,
CL_GUI_CFW DEFINITION LOAD .
DATA : TREE1 TYPE REF TO CL_HRPAYNA_GUI_ALV_TREE , " CL_GUI_ALV_TREE ,
MR_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR .
DATA : GS_STPOX TYPE STPOX ,
GT_STPOX TYPE STPOX OCCURS 0 ,
GT_FIELDCATALOG TYPE LVC_T_FCAT ,
GT_ITEM_LAYOUT TYPE LVC_T_LACI ,
GS_ITEM_LAYOUT TYPE LVC_S_LACI ,
OKCODE LIKE SY -UCOMM .
TYPES : BEGIN OF GS_F .
INCLUDE STRUCTURE STPOX .
TYPES : NODE_KEY TYPE LVC_NKEY ,
* MENGE_EA TYPE stpo-menge, "CHANGE BY XULE 20160308
MENGE_EA TYPE P DECIMALS 0 , "ADD BY XULE 20160308
MEINS_EA TYPE STRING ,
* MENGE_DEL TYPE stpo-menge,
STATUS_STR ( 255 ) TYPE C ,
END OF GS_F .
DATA : GS_XSTPOX TYPE GS_F ,
WA_XSTPOX TYPE GS_F ,
GT_XSTPOX TYPE GS_F OCCURS 0 .
DATA GT_TREETAB TYPE GS_F OCCURS 0 .
DATA : L_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER .
DATA : WA_TOPMAT TYPE CSTMAT ,
WA_DSTST TYPE CSDATA -XFELD .
DATA : IT_MATCAT TYPE STANDARD TABLE OF CSCMAT .
DATA : BEGIN OF GT_MSPR OCCURS 0 ,
MATNR LIKE MSPR -MATNR , "物料
WERKS LIKE MSPR -WERKS , "工厂
LGORT LIKE MSPR -LGORT , "库存地点
LGOBE LIKE T001L -LGOBE , "库存地点描述
SOBKZ LIKE MSPR -SOBKZ , "特殊库存标识
PSPNR LIKE MSPR -PSPNR , "WBS
PRLAB LIKE MSPR -PRLAB , "项目库存数量
END OF GT_MSPR .
DATA : BEGIN OF GT_MARM OCCURS 0 ,
MATNR TYPE MARM -MATNR ,
MEINH TYPE MARM -MEINH ,
BRGEW TYPE MARM -BRGEW ,
UMREN TYPE MARM -UMREN ,
END OF GT_MARM .
DATA : BEGIN OF GT_AFKO OCCURS 0 ,
AUFNR LIKE AFKO -AUFNR ,
PLNBEZ LIKE AFKO -PLNBEZ ,
GAMNG LIKE AFKO -GAMNG ,
END OF GT_AFKO .
DATA : BEGIN OF GT_MSEG OCCURS 0 ,
MBLNR LIKE MSEG -MBLNR ,
MATNR LIKE MSEG -MATNR ,
END OF GT_MSEG .
PARAMETERS :
*p_matnr LIKE mara-matnr ,
P_WERKS LIKE EKPO -WERKS DEFAULT 'HB01' .
SELECT-OPTIONS S_MATNR FOR MARA -MATNR .
*INCLUDE ZPPR016_LCL.
START-OF-SELECTION .
PERFORM GETDATA USING 'X' .
PERFORM FRM_PROCESS_DATA .
START-OF-SELECTION .
CALL SCREEN 0100 .
*&---------------------------------------------------------------------*
*& Form getdata
*&---------------------------------------------------------------------*
FORM GETDATA USING PV_MEHRS .
REFRESH GT_MARM .
DATA : BEGIN OF LT_MATNR OCCURS 0 ,
MATNR TYPE MATNR ,
MAKTX TYPE MAKT -MAKTX ,
MEINS TYPE MARA -MEINS ,
END OF LT_MATNR .
SELECT A ~MATNR B ~MAKTX C ~MEINS INTO TABLE LT_MATNR
FROM MARC AS A JOIN MAKT AS B
ON A ~MATNR = B ~MATNR
JOIN MARA AS C
ON C ~MATNR = A ~MATNR
WHERE A ~MATNR IN S_MATNR AND A ~WERKS = P_WERKS
AND B ~SPRAS = SY -LANGU .
LOOP AT LT_MATNR .
REFRESH GT_STPOX .
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP01' " p_capid
DATUV = SY -DATUM
MEHRS = PV_MEHRS
* stlal = '01' "可选BOM
* stlan = '2' "BOM 用途
MTNRV = LT_MATNR -MATNR
WERKS = P_WERKS
* emeng = 1
IMPORTING
TOPMAT = WA_TOPMAT
DSTST = WA_DSTST
TABLES
STB = GT_STPOX
MATCAT = IT_MATCAT
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
CONVERSION_ERROR = 8
OTHERS = 9 .
CLEAR GS_XSTPOX .
GS_XSTPOX -STUFE = 1 .
GS_XSTPOX -OJTXB = LT_MATNR -MAKTX .
GS_XSTPOX -IDNRK = LT_MATNR -MATNR .
SELECT SINGLE BMENG INTO GS_XSTPOX -MENGE
FROM STKO AS A
JOIN MAST AS B
ON A ~STLNR = B ~STLNR
AND A ~STLAL = B ~STLAL
WHERE A ~STLTY = 'M'
AND B ~STLAN = '1'
AND B ~MATNR = LT_MATNR -MATNR
AND B ~WERKS = P_WERKS .
GS_XSTPOX -MEINS = LT_MATNR -MEINS .
GS_XSTPOX -OJTXP = LT_MATNR -MAKTX .
GS_XSTPOX -XTLTY = 1 .
GS_XSTPOX -XTLNR = 1 .
GS_XSTPOX -XTLAN = 1 .
GS_XSTPOX -XTLAL = 1 .
APPEND GS_XSTPOX TO GT_TREETAB .
APPEND GS_XSTPOX TO GT_XSTPOX .
LOOP AT GT_STPOX INTO GS_STPOX .
MOVE-CORRESPONDING GS_STPOX TO GS_XSTPOX .
GS_XSTPOX -STUFE = GS_XSTPOX -STUFE + 1 .
APPEND GS_XSTPOX TO GT_XSTPOX .
ENDLOOP .
ENDLOOP .
IF GT_XSTPOX[] IS NOT INITIAL .
SELECT MATNR
MEINH
BRGEW
UMREN
INTO TABLE GT_MARM FROM MARM
FOR ALL ENTRIES IN GT_XSTPOX
WHERE MATNR = GT_XSTPOX -IDNRK
AND MEINH <> GT_XSTPOX -MEINS .
LOOP AT GT_XSTPOX INTO GS_XSTPOX .
CLEAR GT_MARM .
READ TABLE GT_MARM WITH KEY MATNR = GS_XSTPOX -IDNRK .
IF SY -SUBRC EQ