Sunteți pe pagina 1din 15

REPORT ZMM_REP_MB51.

TYPE-POOLS: SLIS.
TABLES:
MARA,
MSEG,
MBEW,
MKPF,
MARC,
BLPK,
BLPP,
SSCRFIELDS.
TYPES: T_LIST TYPE ZCL_REP_MB51=>T_LIST.

TYPES: BEGIN OF T_VENDOR,


LIFNR TYPE LFA1-LIFNR,
NAME1 TYPE LFA1-NAME1,
NAME2 TYPE LFA1-NAME2,
END OF T_VENDOR.

TYPES: BEGIN OF T_MKPF,


MBLNR TYPE MKPF-MBLNR,
MJAHR TYPE MKPF-MJAHR,
BKTXT TYPE MKPF-BKTXT,
XABLN TYPE MKPF-XABLN,
BLDAT TYPE MKPF-BLDAT,
END OF T_MKPF.

TYPES: BEGIN OF T_ALV.


INCLUDE TYPE T_LIST.
TYPES: DISPO LIKE MARC-DISPO,
EKGRP LIKE MARC-EKGRP,
VERID LIKE BLPK-VERID,
SPART LIKE MARA-SPART,
BKLAS LIKE MBEW-BKLAS,
ROWS TYPE EPSSSROWS,
VENDOR_NAME TYPE MEPO_VENDOR,
GRTXT LIKE T157E-GRTXT,
XABLN LIKE MKPF-XABLN,
BLDAT TYPE MKPF-BLDAT,
*********************************************Required Fields
MKTX1 TYPE MARA-MKTX1,
MKTX2 TYPE MARA-MKTX2,
MKTX3 TYPE MARA-MKTX3,
MKTX4 TYPE MARA-MKTX4,
QUALF TYPE MARA-QUALF,
ATTRI1 TYPE MARA-ATTRI1,
ATTRI2 TYPE MARA-ATTRI2,
ATTRI3 TYPE MARA-ATTRI3,
ATTRI4 TYPE MARA-ATTRI4,
ATTRI5 TYPE MARA-ATTRI5,
ATTRI6 TYPE MARA-ATTRI6,
ATTRI7 TYPE MARA-ATTRI7,
ATTU1 TYPE MARA-ATTU1,
ATTU2 TYPE MARA-ATTU2,
ATTU3 TYPE MARA-ATTU3,
ATTU4 TYPE MARA-ATTU4,
ATTU5 TYPE MARA-ATTU5,
ATTU6 TYPE MARA-ATTU6,
ATTU7 TYPE MARA-ATTU7,
HAZTY TYPE MARA-HAZTY,
DCREF TYPE MARA-DCREF,
BOMFLAG TYPE MARA-BOMFLAG,
COSHH TYPE MARA-COSHH,
FAMATNR TYPE MARA-FAMATNR,
OBSOL TYPE MARA-OBSOL,
REING TYPE MARA-REING,
RESPO TYPE MARA-RESPO,
MMATNR1 TYPE MARA-MMATNR1,
MMATNR2 TYPE MARA-MMATNR2,
MMATNR3 TYPE MARA-MMATNR3,
MMATNR4 TYPE MARA-MMATNR4,
SHLIF TYPE MARA-SHLIF,
SMKTX TYPE MARA-SMKTX,
MINTEMP TYPE MARA-MINTEMP,
MAXTEMP TYPE MARA-MAXTEMP,
UNITTEMP TYPE MARA-UNITTEMP,

LGPBE TYPE MARD-LGPBE,


* ZFUNCA TYPE ZMM_MGD2-FUNCA,
* FNSUB TYPE ZMM_MGD2-FNSUB,
ZFUNCA(15) TYPE C,
MFRPN TYPE MARA-MFRPN,
MFRNR TYPE MARA-MFRNR,
ZZOEMPART TYPE MARA-ZZOEMPART,
ZZOEM_MANF TYPE MARA-ZZOEM_MANF,
ZZCONSTKIND TYPE MARC-ZZCONSTKIND,
KZKRI TYPE MARC-KZKRI,
MATKL TYPE MARA-MATKL,
END OF T_ALV.

DATA: GT_MB51RES TYPE ZCL_REP_MB51=>TT_LIST.

DATA: BEGIN OF GS_MATERL,


MATNR TYPE MARC-MATNR,
WERKS TYPE MARC-WERKS,
EKGRP TYPE MARC-EKGRP,
DISPO TYPE MARC-DISPO,
SPART TYPE MARA-SPART,
BKLAS TYPE MBEW-BKLAS,
MFRPN TYPE MARA-MFRPN,
MFRNR TYPE MARA-MFRNR,
ZZOEMPART TYPE MARA-ZZOEMPART,
ZZOEM_MANF TYPE MARA-ZZOEM_MANF,
*************************************** MARA ADDITIONS
MKTX1 TYPE MARA-MKTX1,
MKTX2 TYPE MARA-MKTX2,
MKTX3 TYPE MARA-MKTX3,
MKTX4 TYPE MARA-MKTX4,
QUALF TYPE MARA-QUALF,
ATTRI1 TYPE MARA-ATTRI1,
ATTRI2 TYPE MARA-ATTRI2,
ATTRI3 TYPE MARA-ATTRI3,
ATTRI4 TYPE MARA-ATTRI4,
ATTRI5 TYPE MARA-ATTRI5,
ATTRI6 TYPE MARA-ATTRI6,
ATTRI7 TYPE MARA-ATTRI7,
ATTU1 TYPE MARA-ATTU1,
ATTU2 TYPE MARA-ATTU2,
ATTU3 TYPE MARA-ATTU3,
ATTU4 TYPE MARA-ATTU4,
ATTU5 TYPE MARA-ATTU5,
ATTU6 TYPE MARA-ATTU6,
ATTU7 TYPE MARA-ATTU7,
HAZTY TYPE MARA-HAZTY,
DCREF TYPE MARA-DCREF,
BOMFLAG TYPE MARA-BOMFLAG,
COSHH TYPE MARA-COSHH,
FAMATNR TYPE MARA-FAMATNR,
OBSOL TYPE MARA-OBSOL,
REING TYPE MARA-REING,
RESPO TYPE MARA-RESPO,
MMATNR1 TYPE MARA-MMATNR1,
MMATNR2 TYPE MARA-MMATNR2,
MMATNR3 TYPE MARA-MMATNR3,
MMATNR4 TYPE MARA-MMATNR4,
SHLIF TYPE MARA-SHLIF,
SMKTX TYPE MARA-SMKTX,
MINTEMP TYPE MARA-MINTEMP,
MAXTEMP TYPE MARA-MAXTEMP,
UNITTEMP TYPE MARA-UNITTEMP,
MATKL TYPE MARA-MATKL,
END OF GS_MATERL.

DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID.

DATA: BEGIN OF GS_BLPP,


BELNR TYPE BLPP-BELNR,
PRTNR TYPE BLPP-PRTNR,
VERID TYPE BLPK-VERID,
END OF GS_BLPP.

DATA: BEGIN OF GS_PRTNR,


PRTNR TYPE BLPP-PRTNR,
END OF GS_PRTNR.

DATA: BEGIN OF GS_BLPK,


PRTNR TYPE BLPK-PRTNR,
VERID TYPE BLPK-VERID,
END OF GS_BLPK.

DATA: IT_SELTAB TYPE RSPARAMS_TT.

DATA: GT_FCAT TYPE SLIS_T_FIELDCAT_ALV,


GS_FCAT LIKE LINE OF GT_FCAT,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_VARIANT_LOG TYPE DISVARIANT,
GS_VARIANT TYPE DISVARIANT.
DATA: GT_FCATLVC TYPE LVC_T_FCAT.
DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.

DATA: GT_BLPP LIKE TABLE OF GS_BLPP.


DATA: GT_PRTNR LIKE TABLE OF GS_PRTNR.
DATA: GT_BLPK LIKE STANDARD TABLE OF GS_BLPK.
DATA: GT_T157E LIKE STANDARD TABLE OF T157E,
GS_T157E TYPE T157E.

DATA: GT_MATERL LIKE STANDARD TABLE OF GS_MATERL.


DATA: GT_ALV TYPE TABLE OF T_ALV.
DATA: GS_ALV TYPE T_ALV.

DATA: SALV_TABLE TYPE REF TO CL_SALV_TABLE.


DATA: COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE.
DATA: AGGREGATIONS TYPE REF TO CL_SALV_AGGREGATIONS.
DATA: LVC_FCAT TYPE LVC_T_FCAT.

DATA: TMARA TYPE STANDARD TABLE OF MARA.


DATA: WMARA TYPE MARA.
DATA: TMBEW TYPE STANDARD TABLE OF MBEW.
DATA: WMBEW TYPE MBEW.
DATA: TMARC TYPE STANDARD TABLE OF MARC.
DATA: WMARC TYPE MARC.

DATA: GT_VENDOR TYPE TABLE OF T_VENDOR.


DATA: GT_MKPF TYPE TABLE OF T_MKPF.

DATA: GV_FUNCA TYPE ZDE_FUNCA ,


GV_FNSUB TYPE ZDE_FNSUB .

DATA:
GV_ATTRI1 TYPE ZDE_ATTRI1 ,
GV_ATTRI2 TYPE ZDE_ATTRI2 ,
GV_ATTRI3 TYPE ZDE_ATTRI3 ,
GV_ATTRI4 TYPE ZDE_ATTRI4 ,
GV_ATTRI5 TYPE ZDE_ATTRI5 ,
GV_ATTRI6 TYPE ZDE_ATTRI6 ,
GV_ATTRI7 TYPE ZDE_ATTRI7 .

DATA: GV_DCREF TYPE ZDE_DCREF ,


GV_COSHH TYPE ZDE_COSHH ,
GV_SHLIF TYPE ZDE_SHLIF ,
GT_MGD2 TYPE STANDARD TABLE OF ZMM_MGD2 ,
GW_MGD2 TYPE ZMM_MGD2.

DATA T_GT_MGD2 TYPE STANDARD TABLE OF ZMM_MGD2.


DATA W_GT_MGD2 TYPE ZMM_MGD2.
DATA TT TYPE STANDARD TABLE OF ZMM_MGD2.
DATA TW TYPE ZMM_MGD2.

***&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'TC'


*&SPWIZARD: DEFINITION OF DDIC-TABLE
TABLES: ZMM_MGD2.

*&SPWIZARD: TYPE FOR THE DATA OF TABLECONTROL 'TC'


TYPES: BEGIN OF T_TC,
MATNR LIKE ZMM_MGD2-MATNR,
WERKS LIKE ZMM_MGD2-WERKS,
FUNCA LIKE ZMM_MGD2-FUNCA,
FNSUB LIKE ZMM_MGD2-FNSUB,
END OF T_TC.

*&SPWIZARD: INTERNAL TABLE FOR TABLECONTROL 'TC'


DATA: G_TC_ITAB TYPE T_TC OCCURS 0,
G_TC_WA TYPE T_TC. "work area
DATA: G_TC_COPIED. "copy flag

*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC' ITSELF


CONTROLS: TC TYPE TABLEVIEW USING SCREEN 9000.

*&SPWIZARD: LINES OF TABLECONTROL 'TC'


DATA: G_TC_LINES LIKE SY-LOOPC.

DATA: OK_CODE LIKE SY-UCOMM.

*&SPWizard: Include inserted by SP Wizard. DO NOT CHANGE THIS LINE!


INCLUDE ZMM_REP_MB51_PBO .
INCLUDE ZMM_REP_MB51_PAI .
INCLUDE ZMM_REP_MB51_FORM .

SELECTION-SCREEN BEGIN OF BLOCK MKPF WITH FRAME TITLE TEXT-002.


SELECT-OPTIONS BUDAT FOR MKPF-BUDAT. "OBLIGATORY.
SELECT-OPTIONS USNAM FOR MKPF-USNAM MEMORY ID USR.
SELECT-OPTIONS VGART FOR MKPF-VGART.
SELECT-OPTIONS BKTXT FOR MKPF-BKTXT.
SELECT-OPTIONS MBLNR FOR MKPF-MBLNR." memory id mbn.
SELECT-OPTIONS XBLNR FOR MKPF-XBLNR.
*additional fields
SELECT-OPTIONS S_BLDAT FOR MKPF-BLDAT.
"end of additional fields

SELECTION-SCREEN END OF BLOCK MKPF.


SELECTION-SCREEN BEGIN OF BLOCK MSEG WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS MATNR FOR MSEG-MATNR MEMORY ID MAT
MATCHCODE OBJECT MAT1.
SELECT-OPTIONS WERKS FOR MSEG-WERKS MEMORY ID WRK. "OBLIGATORY.
SELECT-OPTIONS LGORT FOR MSEG-LGORT MEMORY ID LAG.
SELECT-OPTIONS CHARG FOR MSEG-CHARG MEMORY ID CHA.
SELECT-OPTIONS LIFNR FOR MSEG-LIFNR MEMORY ID LIF.
SELECT-OPTIONS KUNNR FOR MSEG-KUNNR MEMORY ID KUN.
SELECT-OPTIONS BWART FOR MSEG-BWART MEMORY ID BWA.
SELECT-OPTIONS SOBKZ FOR MSEG-SOBKZ.
SELECT-OPTIONS AUFNR FOR MSEG-AUFNR MEMORY ID ANR.
SELECT-OPTIONS INSMK FOR MSEG-INSMK.
SELECT-OPTIONS KOSTL FOR MSEG-KOSTL MEMORY ID KOS.
SELECT-OPTIONS SGTXT FOR MSEG-SGTXT.
SELECT-OPTIONS UMLGO FOR MSEG-UMLGO.
SELECT-OPTIONS UMWRK FOR MSEG-UMWRK.
SELECT-OPTIONS WEMPF FOR MSEG-WEMPF.
SELECTION-SCREEN END OF BLOCK MSEG.

SELECTION-SCREEN BEGIN OF BLOCK ADD WITH FRAME TITLE TEXT-004.


SELECT-OPTIONS : SO_FUNCA FOR GV_FUNCA ,
SO_FNSUB FOR GV_FNSUB ,
SO_ATT1 FOR GV_ATTRI1 ,
SO_ATT2 FOR GV_ATTRI2 ,
SO_ATT3 FOR GV_ATTRI3 ,
SO_ATT4 FOR GV_ATTRI4 ,
SO_ATT5 FOR GV_ATTRI5 ,
SO_ATT6 FOR GV_ATTRI6 ,
SO_ATT7 FOR GV_ATTRI7 ,
SO_DCREF FOR GV_DCREF ,
SO_COSHH FOR GV_COSHH ,
SO_SHLIF FOR GV_SHLIF .
*"end of additional fields
SELECTION-SCREEN END OF BLOCK ADD.
*----------------------------------------------------------------------*
* definition of the selections screen
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK DISP WITH FRAME TITLE TEXT-003.
PARAMETERS: P_LAYOUT LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK DISP.
SELECTION-SCREEN BEGIN OF BLOCK ARCH WITH FRAME TITLE TEXT-005.
PARAMETERS: DATABASE LIKE AM07M-AR_FLAG AS CHECKBOX DEFAULT 'X',
SHORTDOC LIKE AM07M-AR_FLAG2 AS CHECKBOX DEFAULT ' ',
ARCHIVE LIKE AM07M-AR_FLAG1 AS CHECKBOX DEFAULT ' ' USER-COMMAND
US_ARCHIVE.

* parameter for the archive info structure "n732471


SELECTION-SCREEN : BEGIN OF LINE. "n732471
SELECTION-SCREEN COMMENT 1(28) CO_AISTR "n732471
FOR FIELD PA_AISTR. "n732471
SELECTION-SCREEN POSITION 33. "n732471
PARAMETERS : PA_AISTR LIKE AIND_STR1-ARCHINDEX
DEFAULT 'YOUR_ARCHIVE_HERE'. "n732471
SELECTION-SCREEN : END OF LINE. "n732471
SELECTION-SCREEN END OF BLOCK ARCH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAYOUT.


PERFORM F4_FOR_VARIANT.

INITIALIZATION.
PERFORM AUTHORIZATION_CHECK.

START-OF-SELECTION.
PERFORM PRE-SELECTION.
PERFORM MB51_CALL.
PERFORM ADDITIONAL_SELECTION.
PERFORM DATA_COLLECTION.

END-OF-SELECTION.
PERFORM BUILD_FCAT.
PERFORM REUSE_ALV.
*&---------------------------------------------------------------------*
*& Form PRE-SELECTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRE-SELECTION .
FIELD-SYMBOLS: <MATERL> LIKE GS_MATERL.

SELECT
MARC~MATNR
MARC~WERKS
MARC~DISPO
MARC~EKGRP
MARA~SPART
MBEW~BKLAS
****************************
MARA~MATKL
MARA~MKTX1
MARA~MKTX2
MARA~MKTX3
MARA~MKTX4
MARA~QUALF
MARA~ATTRI1
MARA~ATTRI2
MARA~ATTRI3
MARA~ATTRI4
MARA~ATTRI5
MARA~ATTRI6
MARA~ATTRI7
MARA~ATTU1
MARA~ATTU2
MARA~ATTU3
MARA~ATTU4
MARA~ATTU5
MARA~ATTU6
MARA~ATTU7
MARA~HAZTY
MARA~DCREF
MARA~BOMFLAG
MARA~COSHH
MARA~FAMATNR
MARA~OBSOL
MARA~REING
MARA~RESPO
MARA~MMATNR1
MARA~MMATNR2
MARA~MMATNR3
MARA~MMATNR4
MARA~SHLIF
MARA~SMKTX
MARA~MINTEMP
MARA~MAXTEMP
MARA~UNITTEMP
MARA~MFRPN
MARA~MFRNR
MARA~ZZOEMPART
MARA~ZZOEM_MANF
MARC~ZZCONSTKIND
MARC~KZKRI
INTO CORRESPONDING FIELDS OF TABLE GT_MATERL
FROM MARC
INNER JOIN MARA
ON MARC~MANDT EQ MARA~MANDT
AND MARC~MATNR EQ MARA~MATNR
INNER JOIN MBEW
ON MBEW~MANDT EQ MARC~MANDT
AND MBEW~MATNR EQ MARC~MATNR
AND MBEW~BWKEY EQ MARC~WERKS
AND MBEW~BWTAR EQ SPACE
WHERE MARC~MATNR IN MATNR
AND MARC~WERKS IN WERKS
AND MARA~DCREF IN SO_DCREF
AND MARA~SHLIF IN SO_SHLIF
AND MARA~COSHH IN SO_COSHH
AND MARA~ATTRI1 IN SO_ATT1
AND MARA~ATTRI2 IN SO_ATT2
AND MARA~ATTRI3 IN SO_ATT3
AND MARA~ATTRI4 IN SO_ATT4
AND MARA~ATTRI5 IN SO_ATT5
AND MARA~ATTRI6 IN SO_ATT6
AND MARA~ATTRI7 IN SO_ATT7.

IF GT_MATERL[] IS NOT INITIAL.


REFRESH MATNR[].
LOOP AT GT_MATERL ASSIGNING <MATERL>.
CLEAR MATNR.
MATNR-SIGN = 'I'.
MATNR-OPTION = 'EQ'.
MATNR-LOW = <MATERL>-MATNR.
COLLECT MATNR.
ENDLOOP.
ELSE.
MESSAGE 'No Data Found For The Selection.' TYPE 'I'.
LEAVE PROGRAM.
ENDIF.
ENDFORM. " PRE-SELECTION
*&---------------------------------------------------------------------*
*& Form MB51_CALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MB51_CALL.
TRY.
ZCL_REP_MB51=>CALL_MB51_STATIC(
EXPORTING
I_SELECTION_FROM_PROGRAM = 'X'
I_PROGNAME = SY-REPID
CHANGING
IT_SELTAB = IT_SELTAB
CT_LIST = GT_MB51RES
).
ENDTRY.

IF GT_MB51RES[] IS INITIAL.
MESSAGE 'No Data Found For The Selection.' TYPE 'I'.
LEAVE PROGRAM.
ENDIF.
ENDFORM. " MB51_CALL
*&---------------------------------------------------------------------*
*& Form ADDITIONAL_SELECTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ADDITIONAL_SELECTION .
DATA: BEGIN OF LS_MATNR,
MATNR TYPE MARC-MATNR,
WERKS TYPE MARC-WERKS,
END OF LS_MATNR.
DATA: LT_MATNR LIKE TABLE OF LS_MATNR.
DATA: LS_VENDOR TYPE T_VENDOR.
DATA: LT_VENDOR LIKE TABLE OF LS_VENDOR.
DATA: BEGIN OF LS_MBLNR,
MBLNR LIKE MSEG-MBLNR,
MJAHR LIKE MSEG-MJAHR,
END OF LS_MBLNR.
DATA: LT_MBLNR LIKE TABLE OF LS_MBLNR.
FIELD-SYMBOLS: <MB51> LIKE LINE OF GT_MB51RES.
CHECK GT_MB51RES[] IS NOT INITIAL.
REFRESH: LT_MATNR[], LT_VENDOR[], GT_VENDOR[].

LOOP AT GT_MB51RES ASSIGNING <MB51>.


MOVE-CORRESPONDING <MB51> TO LS_MATNR.
MOVE <MB51>-LIFNR TO LS_VENDOR-LIFNR.
MOVE <MB51>-MBLNR TO LS_MBLNR-MBLNR.
MOVE <MB51>-MJAHR TO LS_MBLNR-MJAHR.
COLLECT LS_MBLNR INTO LT_MBLNR.
COLLECT LS_MATNR INTO LT_MATNR.
COLLECT LS_VENDOR INTO LT_VENDOR.
ENDLOOP.

SORT LT_MATNR BY MATNR WERKS.

SELECT BLPP~BELNR BLPP~PRTNR VERID


FROM BLPP
INNER JOIN BLPK AS BLPK
ON BLPK~MANDT EQ BLPP~MANDT
AND BLPK~PRTNR EQ BLPP~PRTNR

INTO CORRESPONDING FIELDS OF TABLE GT_BLPP


FOR ALL ENTRIES IN GT_MB51RES
WHERE BLPP~BELNR EQ GT_MB51RES-MBLNR.

SORT GT_BLPP BY BELNR VERID PRTNR.

IF LT_MBLNR[] IS NOT INITIAL.


SORT LT_MBLNR BY MJAHR MBLNR.

SELECT MJAHR MBLNR BKTXT XABLN BLDAT FROM MKPF


INTO CORRESPONDING FIELDS OF TABLE GT_MKPF
FOR ALL ENTRIES IN LT_MBLNR
WHERE MJAHR EQ LT_MBLNR-MJAHR
AND MBLNR EQ LT_MBLNR-MBLNR
AND BLDAT IN S_BLDAT.

SORT GT_MKPF BY MJAHR MBLNR.


ENDIF.

IF GT_MATERL[] IS INITIAL AND LT_MATNR[] IS NOT INITIAL.


SELECT MARC~WERKS MARC~MATNR MARC~DISPO MARC~EKGRP MARA~SPART
MBEW~BKLAS
INTO CORRESPONDING FIELDS OF TABLE GT_MATERL
FROM MARC
INNER JOIN MARA
ON MARC~MANDT EQ MARA~MANDT
AND MARC~MATNR EQ MARA~MATNR
INNER JOIN MBEW
ON MBEW~MANDT EQ MARC~MANDT
AND MBEW~MATNR EQ MARC~MATNR
AND MBEW~BWKEY EQ MARC~WERKS
AND MBEW~BWTAR EQ SPACE
FOR ALL ENTRIES IN LT_MATNR
WHERE MARC~MATNR EQ LT_MATNR-MATNR
AND MARC~WERKS EQ LT_MATNR-WERKS.
ENDIF.
SORT GT_MATERL BY MATNR WERKS.

IF LT_VENDOR[] IS NOT INITIAL.


SELECT LIFNR NAME1 NAME2
FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE GT_VENDOR
FOR ALL ENTRIES IN LT_VENDOR
WHERE LIFNR EQ LT_VENDOR-LIFNR.
SORT GT_VENDOR BY LIFNR.
ENDIF.

SELECT * FROM T157E INTO CORRESPONDING FIELDS OF TABLE GT_T157E


WHERE SPRAS EQ SY-LANGU.

SORT GT_T157E BY SPRAS BWART GRUND ASCENDING.


ENDFORM. " ADDITIONAL_SELECTION
*&---------------------------------------------------------------------*
*& Form DATA_COLLECTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DATA_COLLECTION .
FIELD-SYMBOLS: <MB51> LIKE LINE OF GT_MB51RES,
<MKPF> LIKE LINE OF GT_MKPF.
DATA: LS_VENDOR TYPE T_VENDOR.

LOOP AT GT_MB51RES ASSIGNING <MB51>.


MOVE-CORRESPONDING <MB51> TO GS_ALV.
MOVE 1 TO GS_ALV-ROWS.
READ TABLE GT_BLPP INTO GS_BLPP
WITH KEY BELNR = <MB51>-MBLNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
GS_ALV-VERID = GS_BLPP-VERID.
ENDIF.

READ TABLE GT_MATERL INTO GS_MATERL


WITH KEY MATNR = <MB51>-MATNR
WERKS = <MB51>-WERKS BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING GS_MATERL TO GS_ALV.
ENDIF.

"select vendor name.


IF <MB51>-LIFNR IS NOT INITIAL.
READ TABLE GT_VENDOR INTO LS_VENDOR
WITH KEY LIFNR = <MB51>-LIFNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE LS_VENDOR-NAME1 LS_VENDOR-NAME2
INTO GS_ALV-VENDOR_NAME SEPARATED BY SPACE.
ENDIF.
ENDIF.

IF <MB51>-BWART IS NOT INITIAL AND <MB51>-GRUND IS NOT INITIAL.


READ TABLE GT_T157E INTO GS_T157E WITH KEY SPRAS = SY-LANGU
BWART = <MB51>-BWART
GRUND = <MB51>-GRUND
BINARY SEARCH.
IF SY-SUBRC EQ 0.
GS_ALV-GRTXT = GS_T157E-GRTXT.
CLEAR GS_T157E.
ENDIF.
ENDIF.

READ TABLE GT_MKPF WITH KEY MJAHR = <MB51>-MJAHR


MBLNR = <MB51>-MBLNR
ASSIGNING <MKPF>
BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE <MKPF>-BKTXT TO GS_ALV-BKTXT.
MOVE <MKPF>-XABLN TO GS_ALV-XABLN.
MOVE <MKPF>-BLDAT TO GS_ALV-BLDAT.
ENDIF.

* SELECT SINGLE FUNCA FNSUB


* INTO (GS_ALV-ZFUNCA,GS_ALV-FNSUB)
* FROM ZMM_MGD2
* WHERE MATNR = <MB51>-MATNR
* AND WERKS = <MB51>-WERKS
* AND FUNCA IN SO_FUNCA
* AND FNSUB IN SO_FNSUB.

GS_ALV-ZFUNCA = 'Funct. Area'.

IF GS_ALV-BKTXT IN BKTXT.
APPEND GS_ALV TO GT_ALV.
CLEAR GS_ALV.
ENDIF.
ENDLOOP.

REFRESH: GT_MKPF[], GT_T157E, GT_VENDOR[], GT_MATERL[], GT_BLPP[],


GT_MB51RES[].

IF SO_FUNCA[] IS NOT INITIAL


OR SO_FNSUB[] IS NOT INITIAL.

SELECT * FROM ZMM_MGD2


INTO CORRESPONDING FIELDS OF TABLE TT
FOR ALL ENTRIES IN GT_ALV
WHERE MATNR = GT_ALV-MATNR
AND WERKS = GT_ALV-WERKS
AND FUNCA IN SO_FUNCA
AND FNSUB IN SO_FNSUB.
ENDIF.

DATA: FTEMP LIKE GT_ALV.


DATA: WTEMP LIKE LINE OF GT_ALV.

IF TT[] IS NOT INITIAL.


FTEMP = GT_ALV.
REFRESH: GT_ALV.
LOOP AT TT INTO TW.
LOOP AT FTEMP INTO WTEMP WHERE MATNR = TW-MATNR
AND WERKS = TW-WERKS.
APPEND WTEMP TO GT_ALV.
CLEAR WTEMP.
ENDLOOP.
ENDLOOP.
ENDIF.

DELETE ADJACENT DUPLICATES FROM GT_ALV COMPARING ALL FIELDS.


ENDFORM. " DATA_COLLECTION
*&---------------------------------------------------------------------*
*& Form BUILD_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FCAT .
TRY.

GS_FCAT-SELTEXT_L = 'SELECT'.
GS_FCAT-FIELDNAME = 'CHECK'.
GS_FCAT-CHECKBOX = 'X'.
GS_FCAT-TABNAME = 'GT_ALV'.
GS_FCAT-OUTPUTLEN = '4'.
GS_FCAT-INPUT(1) = 'X'.
GS_FCAT-EDIT_MASK(1) = 'X'.
GS_FCAT-EDIT(1) = 'X'.
APPEND GS_FCAT TO GT_FCAT.

CL_SALV_TABLE=>FACTORY( IMPORTING
R_SALV_TABLE = SALV_TABLE
CHANGING
T_TABLE = GT_ALV ).

COLUMNS = SALV_TABLE->GET_COLUMNS( ). " ALV Filter


AGGREGATIONS = SALV_TABLE->GET_AGGREGATIONS( ). " ALV Aggregations

LVC_FCAT = CL_SALV_CONTROLLER_METADATA=>GET_LVC_FIELDCATALOG(
R_COLUMNS = COLUMNS
R_AGGREGATIONS = AGGREGATIONS
).

CALL FUNCTION 'LVC_TRANSFER_TO_SLIS'


EXPORTING
IT_FIELDCAT_LVC = LVC_FCAT " Field Catalog
IMPORTING
ET_FIELDCAT_ALV = GT_FCAT " Field Catalog
TABLES
IT_DATA = GT_ALV " Data Table
EXCEPTIONS
IT_DATA_MISSING = 1
IT_FIELDCAT_LVC_MISSING = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* message id sy-msgid type sy-msgty number sy-msgno
* with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT GT_FCAT INTO GS_FCAT WHERE FIELDNAME = 'ZFUNCA'.
GS_FCAT-HOTSPOT = 'X'.
GS_FCAT-SELTEXT_L = 'Funct. Area'.
GS_FCAT-SELTEXT_M = 'Funct. Area'.
GS_FCAT-SELTEXT_S = 'Funct. Area'.
GS_FCAT-REPTEXT_DDIC = 'Funct. Area'.
MODIFY GT_FCAT FROM GS_FCAT.
CLEAR: GS_FCAT.
ENDLOOP.
CATCH CX_ROOT.
ENDTRY.
ENDFORM. " BUILD_FCAT
*&---------------------------------------------------------------------*
*& Form REUSE_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM REUSE_ALV .
GS_LAYOUT-NO_INPUT = ''.
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYOUT-COLTAB_FIELDNAME = 'COLOR'.
GS_LAYOUT-ZEBRA = 'X'.
GS_VARIANT-VARIANT = P_LAYOUT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
* i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* i_grid_title = outtext
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FCAT[]
* it_special_groups = gd_tabgroup
* it_events = gt_events
* is_print = gd_prntparams
I_SAVE = 'A'
IS_VARIANT = GS_VARIANT
TABLES
T_OUTTAB = GT_ALV[] "output table
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " REUSE_ALV
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT .
DATA: F_VARIANT TYPE DISVARIANT.
F_VARIANT-REPORT = SY-REPID.
* move 'MAIN' to f_variant-log_group.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'


EXPORTING
IS_VARIANT = F_VARIANT
I_SAVE = 'A'
I_DISPLAY_VIA_GRID = 'X'
IMPORTING
ES_VARIANT = F_VARIANT
EXCEPTIONS
NOT_FOUND = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC = 0.
P_LAYOUT = F_VARIANT-VARIANT.
ENDIF.
ENDFORM. " F4_FOR_VARIANT

*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->F_UCOMM text
* -->FS_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM
FS_SELFIELD TYPE SLIS_SELFIELD.

FIELD-SYMBOLS: <ALV> LIKE LINE OF GT_ALV.


DATA: F_VBAK TYPE VBAK.
CASE F_UCOMM.
WHEN '&IC1'. "double-click
CASE FS_SELFIELD-FIELDNAME.
WHEN 'ZFUNCA'.
IF FS_SELFIELD-TABINDEX > 0 AND FS_SELFIELD-SUMINDEX LE 0.
READ TABLE GT_ALV ASSIGNING <ALV> INDEX FS_SELFIELD-TABINDEX.
IF SY-SUBRC EQ 0.

REFRESH: T_GT_MGD2.
SELECT * FROM
ZMM_MGD2
INTO TABLE T_GT_MGD2
WHERE MATNR IN MATNR AND
WERKS IN WERKS AND
FUNCA IN SO_FUNCA AND
FNSUB IN SO_FNSUB.

REFRESH: GT_MGD2.

CLEAR: W_GT_MGD2, GW_MGD2.


LOOP AT T_GT_MGD2 INTO W_GT_MGD2 WHERE MATNR = <ALV>-MATNR
AND WERKS = <ALV>-WERKS.
MOVE-CORRESPONDING W_GT_MGD2 TO GW_MGD2.
APPEND GW_MGD2 TO GT_MGD2.
CLEAR: W_GT_MGD2, GW_MGD2.
ENDLOOP.
CALL SCREEN 9000 STARTING AT 10 5
ENDING AT 85 16.
ENDIF.
ENDIF.
ENDCASE.
WHEN '&NFO'.
DATA: FT_ISETAB TYPE KKBLO_SELDIS.
CALL FUNCTION 'K_KKB_SELECTIONS_READ'
EXPORTING
V_PROGRAM = SY-REPID
TABLES
CT_ISETAB = FT_ISETAB.
*
PERFORM INFO_POPUP(SAPLKKBL) USING FT_ISETAB[] SPACE IF FOUND.
REFRESH FT_ISETAB[].
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form authorization_check
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM AUTHORIZATION_CHECK.

AUTHORITY-CHECK OBJECT 'S_TCODE'


ID 'TCD' FIELD 'ZMB51'.
IF SY-SUBRC NE 0.
MESSAGE E172(00) WITH 'ZMB51'.
* You are not authorized to use Transaction &
ENDIF.

ENDFORM. "authorization_check
*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD'.
IF GO_GRID IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = GO_GRID.
ENDIF.
ENDFORM. "Set_pf_status

S-ar putea să vă placă și