‎2008 Apr 16 1:04 PM
HI Guys,
I am new to Abap kam someone send one sample report.please its urgent
‎2008 Apr 16 1:08 PM
*&----
*
*& Report Z_OPEN_CLOSE *
*& *
*&----
*
*& *
*& *
*&----
*
REPORT Z_OPEN_CLOSE MESSAGE-ID YW2 LINE-SIZE 231 LINE-COUNT 45
NO STANDARD PAGE HEADING.
*----
*
Type Declaration *
*----
*
TYPE-POOLS SLIS.
*----
*
Tables *
*----
*
TABLES: MKPF, " Material Document: Header Data
MSEG, " Material Document: Item Data
MARA,
MARD,
S031,
EKKO,
EKPO,
LIKP,
MAKT,
J_1IWRKCUS,
T001W,
WB2_V_MKPF_MSEG2,
MMIM_REP_PRINT,
YW2_STKMOVEMENTS,
YPLNT,
MARDH.
*----
*
Internal Tables *
*----
*
DATA: I_WERKS LIKE J_1IWRKCUS OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_YPLNT OCCURS 0,
PPLNT LIKE YPLNT-PPLNT,
WPLNT LIKE YPLNT-WPLNT,
END OF I_YPLNT.
DATA: BEGIN OF I_MKPF OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
BUDAT LIKE MKPF-BUDAT,
VGART LIKE MKPF-VGART,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
KUNNR LIKE MSEG-KUNNR,
ZEILE LIKE MSEG-ZEILE,
XAUTO LIKE MSEG-XAUTO,
SHKZG LIKE MSEG-SHKZG,
MATNR1 LIKE MSEG-MATNR,
END OF I_MKPF.
DATA: BEGIN OF I_MARDH OCCURS 0,
WERKS LIKE MARDH-WERKS,
MEINS LIKE MARA-MEINS,
MATNR LIKE MARDH-MATNR,
LGORT LIKE MARDH-LGORT,
LABST LIKE MARDH-LABST,
LFGJA LIKE MARDH-LFGJA, "Added -MB
LFMON LIKE MARDH-LFMON, "Added -MB
PERIO(6),
INSME LIKE MARDH-LABST,
EINME LIKE MARDH-LABST,
SPEME LIKE MARDH-LABST,
RETME LIKE MARDH-LABST,
O_STK LIKE MARDH-LABST, " Opening Stock
C_STK LIKE MARDH-LABST, " Closing Stock
END OF I_MARDH.
DATA: BEGIN OF I_MARD OCCURS 0,
WERKS LIKE MARD-WERKS,
MATNR LIKE MARD-MATNR,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
INSME LIKE MARD-LABST,
MEINS LIKE MARA-MEINS,
EINME LIKE MARD-LABST,
SPEME LIKE MARD-LABST,
RETME LIKE MARD-LABST,
END OF I_MARD.
DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: I_MARDH1 LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_MKPF1 OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
WERKS LIKE MSEG-WERKS,
MATNR LIKE MSEG-MATNR,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
XAUTO LIKE MSEG-XAUTO,
SHKZG LIKE MSEG-SHKZG,
END OF I_MKPF1.
DATA: BEGIN OF I_MKPF2 OCCURS 0,
WERKS LIKE MSEG-WERKS,
MATNR LIKE MSEG-MATNR,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
XAUTO LIKE MSEG-XAUTO,
END OF I_MKPF2.
DATA: BEGIN OF I_FINAL5 OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
LGORT LIKE MSEG-LGORT, " Storage Location
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TLOSS LIKE MARDH-LABST, " Total Loss
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
C_STK LIKE MARDH-LABST, " Closing Stock
TRFSTK LIKE MARDH-LABST, "Transfer stock
MENGE LIKE MSEG-MENGE,
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL5.
DATA: BEGIN OF I_FINAL OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL.
DATA: I_FINAL1 LIKE I_FINAL OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_FINAL_TEMP OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
MTART LIKE MARA-MTART, " Material Type
MAKTX LIKE MAKT-MAKTX, " Description
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL_TEMP.
For Materials
DATA: BEGIN OF I_MARA OCCURS 0,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS LIKE MARA-MEINS,
LABST TYPE MARD-LABST,
MAKTX LIKE MAKT-MAKTX,
END OF I_MARA.
DATA: BEGIN OF I_STKMVMNTS OCCURS 0,
BWART LIKE MSEG-BWART,
SHKZG LIKE MSEG-SHKZG,
VZBEW LIKE YW2_STKMOVEMENTS-VZBEW,
END OF I_STKMVMNTS.
DATA: BEGIN OF I_FINALT OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
MONTH(8) ,
END OF I_FINALT.
DATA: IMKPFT LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT1 LIKE I_MKPF1 OCCURS 0 WITH HEADER LINE.
DATA: IMARDT LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: IMARDHT LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: T_FINAL LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT2 LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
FCAT is used for the field catalog
DATA: FCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
for excluding the ICONs from the application toolbar
FEXC TYPE TABLE OF SLIS_EXTAB WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FS_LAYO is used for Grid Layout
FS_LAYO TYPE SLIS_LAYOUT_ALV,
FEVENTS to handle the events TOP OF PAGE & USER_COMMAND
FEVENTS TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FHEADER is used for List header
FHEADER TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
sort is used for sorting
FSORT TYPE TABLE OF SLIS_SORTINFO_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FCAT1 TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FS_LAYO1 TYPE SLIS_LAYOUT_ALV,
GT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,
FEVENTS1 TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FHEADER1 TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT
KEY WITH HEADER LINE INITIAL SIZE 0,
G_STATU_071 TYPE SLIS_FORMNAME VALUE 'Z_PFSTATUS',
ALV_VARIANT1 LIKE DISVARIANT.
*----
*
Variable Declaration *
*----
*
TYPES: TRFF_TYPE_DEC_6_5(6) TYPE P DECIMALS 5.
DATA: FYEAR(4),
MON(2),
FYEAR1(4),
MON1(2),
OBAL LIKE MARD-LABST,
CBAL LIKE MARD-LABST,
INDEX TYPE I,
COUNT,
COUNT1 TYPE I,
O_STK TYPE P DECIMALS 3,
C_STK TYPE P DECIMALS 3,
V_MJAHR LIKE MKPF-MJAHR,
MONTHS TYPE TRFF_TYPE_DEC_6_5,
MONTH TYPE I.
Global variables for handling ALV functionality
DATA: ALV_KEYINFO TYPE SLIS_KEYINFO_ALV,
ALV_VARIANT LIKE DISVARIANT,
ALV_LAYOUT TYPE SLIS_LAYOUT_ALV,
ALV_REPID LIKE SY-REPID,
ALV_PRINT TYPE SLIS_PRINT_ALV,
ALV_DETAIL_FUNC(30),
ALV_DEFAULT_VARIANT LIKE DISVARIANT-VARIANT,
ALV_COLOURIZE_FIELDS LIKE MMIM_REP_PRINT-COLOR.
RANGES: R_BUDAT FOR MKPF-BUDAT.
*Added by Prabhu for year on 26.4.05.
DATA: IDATE LIKE R_BUDAT OCCURS 0 WITH HEADER LINE.
*----
*
Selection Screen Elements *
*----
*
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MARD-WERKS OBLIGATORY NO INTERVALS.
PARAMETER: P_SPMON LIKE S031-SPMON NO-DISPLAY .
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
S_LGORT FOR MSEG-LGORT NO-EXTENSION NO INTERVALS,
S_MBLNR FOR MKPF-MBLNR,
S_BUDAT FOR MKPF-BUDAT OBLIGATORY .
SELECTION-SCREEN END OF BLOCK BLK.
SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-004.
PARAMETER : MTART LIKE MARA-MTART DEFAULT 'FERT' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK BLK3.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-003.
SELECTION-SCREEN END OF BLOCK BLK2.
ADDED BY PRABHU FOR DAY-WISE REPORT.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-007.
PARAMETERS: D1 RADIOBUTTON GROUP P1 DEFAULT 'X',
M1 RADIOBUTTON GROUP P1,
Y1 RADIOBUTTON GROUP P1.
SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-006.
PARAMETERS: ALV_DEF LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK B2.
DATA: S_BUDAT1 LIKE S_BUDAT OCCURS 0 WITH HEADER LINE."prabhu
*----
*
Initialization *
*----
*
INITIALIZATION.
PERFORM ALV_INIT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ALV_DEF.
PERFORM ALV_F4.
*----
-
*
At Selection Screen
*
*----
-
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_spmon.
PERFORM monat_f4.
*
*----
*
At Selection Screen *
*----
*
AT SELECTION-SCREEN.
checking for the layout
PERFORM ALV_CHECK.
authorisation check for the Plant
PERFORM auth_check.
Validation for the Plant
PERFORM VALIDITY_CHECK.
IF MTART NE 'FERT'.
MESSAGE E041 WITH 'Material Type must be FERT Only...'.
ENDIF.
IF D1 = 'X'." On 26.4.05.
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
ELSE.
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
ENDIF.
LOOP AT S_BUDAT.
IF S_BUDAT-HIGH IS INITIAL.
S_BUDAT-HIGH = S_BUDAT-LOW.
MODIFY S_BUDAT.
ENDIF.
ENDLOOP.
IDATE-LOW = S_BUDAT-LOW.
IDATE-HIGH = S_BUDAT-HIGH.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
I_DATE_FROM = IDATE-LOW
I_DATE_TO = IDATE-HIGH
IMPORTING
E_DAYS =
E_MONTHS = MONTH
E_YEARS =
.
DATA: I(3) TYPE C.
I = S_BUDAT-LOW+4(2).
CLEAR: R_BUDAT.
REFRESH: R_BUDAT.
*added by Prabhu for Only for Oneday.on 18.5.5
IF MONTH EQ '0'.
MONTH = MONTH + 1.
ENDIF.
*added by Prabhu for Only for Oneday.on 18.5.5
DO MONTH TIMES.
R_BUDAT-LOW = S_BUDAT-LOW.
APPEND R_BUDAT.
ENDDO.
I = 0.
LOOP AT R_BUDAT.
R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2) + I.
I = I + 1.
R_BUDAT-LOW+6(2) = '01'.
MODIFY R_BUDAT.
ENDLOOP.
LOOP AT R_BUDAT.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = R_BUDAT-LOW
IMPORTING
LAST_DAY_OF_MONTH = R_BUDAT-HIGH
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2
.
MODIFY R_BUDAT.
ENDLOOP.
LOOP AT R_BUDAT.
IF R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2).
R_BUDAT-LOW = S_BUDAT-LOW.
MODIFY R_BUDAT.
ENDIF.
IF R_BUDAT-HIGH4(2) = S_BUDAT-HIGH4(2).
R_BUDAT-HIGH = S_BUDAT-HIGH.
MODIFY R_BUDAT.
ENDIF.
For Summary on 26.4.05.
IF Y1 = 'X'.
CLEAR R_BUDAT.
REFRESH R_BUDAT.
R_BUDAT-LOW = S_BUDAT-LOW.
R_BUDAT-HIGH = S_BUDAT-HIGH.
APPEND R_BUDAT.
CLEAR R_BUDAT.
ENDIF.
ENDLOOP.
*----
*
At Selection Screen *
*----
*
AT SELECTION-SCREEN OUTPUT.
*----
*
Start of Selection *
*----
*
START-OF-SELECTION.
V_MJAHR = P_SPMON+0(4).
Get plant distinction warehouse/production
PERFORM GET_PLANT_DISTINCTION.
Collect the data from various tables
PERFORM GETDATA_FG_STOCK.
here the number of rows in the output table is found
PERFORM OUTPUT_TABLE_CHECK.
here the top of the page code is written, that is to be displayed
in the output
PERFORM Z_TOP_OF_PAGE.
here ALV layout properties are set
PERFORM Z_LAYOUT_SETTINGS.
ALV EVENTS for TOP OF PAGE and for USER COMMAND
PERFORM Z_ALV_EVENTS.
The field catalog is defined for the Primary List is defined in
the subroutine CREATE_FIELD_CATALOG include program ZPRRDOCR_FCAT
PERFORM Z_CREATE_FIELD_CATALOG.
This is for displaying the output
PERFORM Z_REUSE_ALV_GRID_DISPLAY.
*&----
*
*& Form getdata_fg_stock
*&----
*
Getting data from standard tables
*----
*
FORM GETDATA_FG_STOCK.
For getting the Start date & end date of the month
PERFORM get_month_dates.
Getting the Opening Stock from MARDH table
IF MON EQ '01'.
MON1 = MON.
FYEAR1 = FYEAR.
MON = '12'.
FYEAR = FYEAR - 1.
ELSE.
MON1 = MON.
FYEAR1 = FYEAR.
MON = MON - 1.
FYEAR = FYEAR.
ENDIF.
PERFORM GET_RECORDS_FROM_DB.
*added for Month Summary on 26.4.05.
LOOP AT R_BUDAT.
S_BUDAT-LOW = R_BUDAT-LOW.
S_BUDAT-HIGH = R_BUDAT-HIGH.
*for Month
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
*for summary.
IF Y1 = 'X'.
LOOP AT S_BUDAT.
S_BUDAT1-SIGN = 'I'.
S_BUDAT1-OPTION = 'NB'.
S_BUDAT1-LOW = S_BUDAT-LOW.
S_BUDAT1-HIGH = S_BUDAT-HIGH.
APPEND S_BUDAT1.
CLEAR S_BUDAT1.
ENDLOOP.
ENDIF.
IMKPFT[] = I_MKPF[].
IMKPFT2[] = I_MKPF[].
IMARDT[] = I_MARD[].
IMARDHT[] = I_MARDH[].
PERFORM MONTH_WISE.
PERFORM PROCESS_MOVEMENTS.
PERFORM CALCULATE_OPENING_STOCK.
PERFORM UPDATE_NON_TRANSACTION_ITMS.
PERFORM DELETE_EMPTY_RECORDS.
CLEAR: IMARDHT,IMARDT,IMKPFT1,IMKPFT,I_FINAL,I_FINAL5.
REFRESH: IMARDHT,IMARDT,IMKPFT1,I_FINAL,I_FINAL5,IMKPFT.
ENDLOOP.
CLEAR: R_BUDAT.
REFRESH: R_BUDAT.
*end of changes for month.
ENDFORM. " getdata_fg_stock
*----
*
FORM MONAT_F4 *
*----
*
F4-Hilfe für Monat *
*----
*
FORM MONAT_F4.
DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF MF_DYNPFIELDS.
DATA: MF_RETURNCODE LIKE SY-SUBRC,
MF_MONAT LIKE ISELLIST-MONTH,
MF_HLP_REPID LIKE SY-REPID.
FIELD-SYMBOLS: .
Wert von Dynpro lesen
GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.
APPEND MF_DYNPFIELDS.
MF_HLP_REPID = SY-REPID.
DO 2 TIMES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = MF_HLP_REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = MF_DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 01
INVALID_DYNPROFIELD = 02
INVALID_DYNPRONAME = 03
INVALID_DYNPRONUMMER = 04
INVALID_REQUEST = 05
NO_FIELDDESCRIPTION = 06
UNDEFIND_ERROR = 07.
IF SY-SUBRC = 3.
Aktuelles Dynpro ist Wertemengenbild
MF_HLP_REPID = 'SAPLALDB'.
ELSE.
READ TABLE MF_DYNPFIELDS INDEX 1.
Unterstriche durch Blanks ersetzen
TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.
EXIT.
ENDIF.
ENDDO.
IF SY-SUBRC = 0.
Konvertierung ins interne Format
CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
EXPORTING
INPUT = MF_DYNPFIELDS-FIELDVALUE
IMPORTING
OUTPUT = MF_MONAT
EXCEPTIONS
ERROR_MESSAGE = 1.
IF MF_MONAT IS INITIAL.
Monat ist initial => Vorschlagswert aus akt. Datum ableiten
MF_MONAT = SY-DATLO(6).
ENDIF.
CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
EXPORTING
ACTUAL_MONTH = MF_MONAT
IMPORTING
SELECTED_MONTH = MF_MONAT
RETURN_CODE = MF_RETURNCODE
EXCEPTIONS
FACTORY_CALENDAR_NOT_FOUND = 01
HOLIDAY_CALENDAR_NOT_FOUND = 02
MONTH_NOT_FOUND = 03.
IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.
ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804
<MF_FELD> = MF_MONAT.
CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'
EXPORTING
INPUT = MF_MONAT
IMPORTING
OUTPUT = MF_DYNPFIELDS-FIELDVALUE.
COLLECT MF_DYNPFIELDS.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = MF_HLP_REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = MF_DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 01
INVALID_DYNPROFIELD = 02
INVALID_DYNPRONAME = 03
INVALID_DYNPRONUMMER = 04
INVALID_REQUEST = 05
NO_FIELDDESCRIPTION = 06
UNDEFIND_ERROR = 07. "<<== note 148804
ENDIF.
ENDIF.
ENDFORM. "MONAT_F4
*&----
*
*& Form get_month_dates
*&----
*
Calculating the Month Start & End Date
*----
*
FORM GET_MONTH_DATES.
IF M1 = 'X'.
FYEAR = P_SPMON+0(4).
MON = P_SPMON+4(2).
CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
R_BUDAT-SIGN = 'I'.
R_BUDAT-OPTION = 'BT'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = R_BUDAT-LOW
IMPORTING
E_DATE = R_BUDAT-HIGH.
APPEND R_BUDAT.
CLEAR S_BUDAT.
REFRESH S_BUDAT.
S_BUDAT-SIGN = 'I'.
S_BUDAT-OPTION = 'BT'.
S_BUDAT-LOW = R_BUDAT-LOW.
S_BUDAT-HIGH = R_BUDAT-HIGH.
APPEND S_BUDAT.
ELSE.
FYEAR = P_SPMON+0(4).
MON = P_SPMON+4(2).
CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
R_BUDAT-SIGN = 'I'.
R_BUDAT-OPTION = 'BT'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = R_BUDAT-LOW
IMPORTING
E_DATE = R_BUDAT-HIGH.
APPEND R_BUDAT.
ENDIF.
ENDFORM. " get_month_dates
*&----
*
*& Form output_table_Check
*&----
*
checking for records for output
*----
*
FORM OUTPUT_TABLE_CHECK .
DESCRIBE TABLE I_FINALT LINES INDEX.
IF INDEX EQ 0.
MESSAGE I041 WITH TEXT-005.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. "OUTPUT_TABLE_CHECK
*&----
*
*& Form Z_TOP_OF_PAGE
*&----
*
for setting the details in the top of page *
*----
*
has no formal paramters *
*----
*
FORM Z_TOP_OF_PAGE.
DATA: V_MON(2),
V_YR(40),
V_FIN(18),
V_FIN1(48),
LOW(10),
HIGH(10).
V_MON = P_SPMON+4(2).
V_YR = P_SPMON+0(4).
FHEADER-TYP = 'H'.
FHEADER-INFO = 'Stock Register Report (FG Stock)'.
APPEND FHEADER.
CLEAR FHEADER.
*if m1 = 'X'.
CONCATENATE 'Month = ' v_mon '.' v_yr INTO v_fin.
fheader-typ = 'H'.
fheader-info = v_fin.
APPEND fheader.
CLEAR fheader.
*endif."prabhu on 18.5.5
IF D1 = 'X'.
CLEAR S_BUDAT.
LOOP AT S_BUDAT.
CONCATENATE S_BUDAT-LOW6(2) '/' S_BUDAT-LOW4(2) '/'
S_BUDAT-LOW+0(4) INTO LOW.
CONCATENATE S_BUDAT-HIGH6(2) '/' S_BUDAT-HIGH4(2) '/'
S_BUDAT-HIGH+0(4) INTO HIGH.
CONCATENATE 'Date = ' LOW ' - ' HIGH INTO V_FIN1.
FHEADER-TYP = 'H'.
FHEADER-INFO = V_FIN1.
APPEND FHEADER.
CLEAR FHEADER.
ENDLOOP.
ENDIF.
ENDFORM. " Z_TOP_OF_PAGE
*&----
*
*& Form Z_LAYOUT_SETTINGS
*&----
*
this is done for setting the properties for the layout of the *
grid *
*----
*
has no formal paramters *
*----
*
FORM Z_LAYOUT_SETTINGS.
FS_LAYO-ZEBRA = 'X'. " Output in Zebra pattern
FS_LAYO-DETAIL_POPUP = 'X'. " A popup window appears to give
FS_LAYO-DETAIL_TITLEBAR = TEXT-022.
FS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " Z_LAYOUT_SETTINGS
*&----
*
*& Form Z_ALV_EVENTS
*&----
*
This is used for handling the events TOP OF PAGE and the USER *
COMMAND event *
*----
*
has no formal paramters *
*----
*
FORM Z_ALV_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = FEVENTS[].
READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_TOPOFPAGE'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF.
READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_USER_COMMAND'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF.
ENDFORM. "Z_ALV_EVENTS
*&----
*
*& Form Z_CREATE_FIELD_CATALOG
*&----
*
here the field catalog is created for the primary list *
*----
*
no formal parameters *
*----
*
FORM Z_CREATE_FIELD_CATALOG.
for the Plant
FCAT-FIELDNAME = 'WERKS'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '000005'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Plant'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material Type
FCAT-FIELDNAME = 'MTART'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '000006'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'MatTyp'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material No.
FCAT-FIELDNAME = 'MATNR'.
FCAT-KEY = 'X'.
fcat-hotspot = 'X'.
FCAT-OUTPUTLEN = '000018'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Material'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material Description
FCAT-FIELDNAME = 'MAKTX'.
FCAT-KEY = ''.
FCAT-OUTPUTLEN = '000040'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Description'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Unit of Measure
FCAT-FIELDNAME = 'MEINS'.
FCAT-KEY = ''.
FCAT-OUTPUTLEN = '03'.
FCAT-JUST = 'C'.
FCAT-SELTEXT_M = 'UOM'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'UNIT'.
APPEND FCAT.
CLEAR FCAT.
for the Plant
FCAT-FIELDNAME = 'MONTH'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '08'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'MONTH'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Opening Stock
FCAT-FIELDNAME = 'C_STK'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Opening Stock'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
fcat-do_sum = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Total Receipts
FCAT-FIELDNAME = 'TRECEP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Receipts'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Production
FCAT-FIELDNAME = 'PRODU'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Production'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Other Plant Receipts
FCAT-FIELDNAME = 'RECEP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Othr Plnt Recpts'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Sales Return
FCAT-FIELDNAME = 'SAL_RET'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Sales Return'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Total Dispatches
FCAT-FIELDNAME = 'TDISP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Dispatches'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Distributor Dispatches
FCAT-FIELDNAME = 'CUSTMR'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Distr Dispatches/HLL'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Other Plants Dispatches
FCAT-FIELDNAME = 'OPLANT'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000020'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Othr Plnt Dispatches'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Material Transfer
FCAT-FIELDNAME = 'TRFSTK'.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'M.Transfer'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Transit Loss
FCAT-FIELDNAME = 'TRLOSS'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Transit Loss'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Warehouse Loss
FCAT-FIELDNAME = 'WHLOSS'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Warehouse Loss'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Total Loss
FCAT-FIELDNAME = 'TLOSS'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Loss'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Closing Stock
FCAT-FIELDNAME = 'O_STK'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Closing Stock'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
fcat-do_sum = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Other Plant Receipts
FCAT-FIELDNAME = 'OTHADJ'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Othr Adjst'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
ENDFORM. " Z_CREATE_FIELD_CATALOG
*&----
*
*& Form Z_REUSE_ALV_GRID_DISPLAY
*&----
*
here the function module REUSE_ALV_GRID_DISPLAY function module *
is called. The inputs given to it are as follows: *
W_REPID : contains the Report Name *
USER_COMMAND : is set as default *
FS_LAYO : Here the layout related properties are set *
FCAT : here the field catalog is create for the output *
fields *
FEXCLUDE : Some Application toolbar links are deactivated *
here *
FEVENTS : Here top of Page & User command events are defined*
IT_AFPO : It is the table which contains the data to be *
displayed in the output *
*----
*
has no formal paramters *
*----
*
FORM Z_REUSE_ALV_GRID_DISPLAY.
DATA: BEGIN OF I_MAKTX OCCURS 0,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF I_MAKTX,
V_TEMP(18).
IF NOT I_FINALT[] IS INITIAL.
SELECT MATNR
MAKTX
INTO TABLE I_MAKTX
FROM MAKT
FOR ALL ENTRIES IN I_FINALT
WHERE MAKT~MATNR = I_FINALT-MATNR.
ENDIF.
SORT I_MAKTX BY MATNR.
LOOP AT I_FINALT.
READ TABLE I_MAKTX WITH KEY MATNR = I_FINALT-MATNR
BINARY SEARCH.
IF SY-SUBRC = 0.
I_FINALT-MAKTX = I_MAKTX-MAKTX.
MODIFY I_FINALT.
ENDIF.
ENDLOOP.
SORT I_FINALT BY MATNR.
DELETE I_FINALT WHERE MATNR EQ ''.
DATA: LV_REPID LIKE SY-REPID.
LV_REPID = SY-REPID.
DATA: V_MATNR(18).
LOOP AT I_FINALT.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = I_FINALT-MATNR
IMPORTING
OUTPUT = V_MATNR.
I_FINALT-MATNR = V_MATNR.
MODIFY I_FINALT.
ENDLOOP.
SORT I_FINALT BY MATNR MONTH.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = LV_REPID
I_CALLBACK_USER_COMMAND = 'Z_USER_COMMAND'
IS_LAYOUT = FS_LAYO
IT_FIELDCAT = FCAT[]
IT_EXCLUDING = FEXC[]
IT_SORT = FSORT[]
I_DEFAULT = 'X'
I_SAVE = 'U'
IS_VARIANT = ALV_VARIANT
IT_EVENTS = FEVENTS[]
TABLES
T_OUTTAB = I_FINALT[].
ENDFORM. " Z_REUSE_ALV_GRID_DISPLAY
*&----
*
*& Form Z_TOPOFPAGE
*&----
*
This Subroutine is called Dynamically *
This is for creating the headings of the output fields *
*----
*
has no formal paramters *
*----
*
FORM Z_TOPOFPAGE. "#EC NEEDED
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = FHEADER[].
ENDFORM. " FORM Z_TOPOFPAGE
*&----
*
*& Form Z_USER_COMMAND
*&----
*
This Subroutine is called Dynamically *
if the user double clicks the Production Order Number or the *
Material Number, the Complete transaction details will be *
displayed *
*----
*
R_UCOMM *
RS_SELFIELD *
*----
*
FORM Z_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD. "#EC NEEDED
CHECK R_UCOMM = '&IC1'. "User Double Clicked on Some field
CHECK NOT RS_SELFIELD-VALUE IS INITIAL.
LOOP AT IMKPFT2.
PERFORM REMOVE_ZEROS USING IMKPFT2-MATNR
CHANGING IMKPFT2-MATNR1.
MODIFY IMKPFT2.
ENDLOOP.
SORT IMKPFT2 BY BUDAT MATNR WERKS.
CASE RS_SELFIELD-FIELDNAME.
WHEN 'MATNR'.
READ TABLE I_FINALT INDEX RS_SELFIELD-TABINDEX.
IF D1 = 'X' OR M1 ='X'.
LOOP AT IMKPFT2 WHERE MATNR1 = I_FINALT-MATNR AND
WERKS = I_FINALT-WERKS AND
( BUDAT0(4) EQ I_FINALT-MONTH0(4) AND
BUDAT4(2) EQ I_FINALT-MONTH5(2) ) .
MOVE IMKPFT2 TO T_FINAL.
APPEND T_FINAL.
CLEAR T_FINAL.
ENDLOOP.
ELSEIF Y1 = 'X'.
LOOP AT IMKPFT2 WHERE MATNR1 = I_FINALT-MATNR AND
WERKS = I_FINALT-WERKS AND
BUDAT IN S_BUDAT.
MOVE IMKPFT2 TO T_FINAL.
APPEND T_FINAL.
CLEAR T_FINAL.
ENDLOOP.
ENDIF.
SORT T_FINAL BY BUDAT MATNR WERKS.
PERFORM DISPLAY_ALV1 USING T_FINAL.
ENDCASE.
ENDFORM. " FORM Z_USER_COMMAND
*&----
*
*& Form ALV_F4
*&----
*
FORM ALV_F4.
ALV_VARIANT-REPORT = ALV_REPID.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = ALV_VARIANT
I_SAVE = 'A'
IMPORTING
ES_VARIANT = ALV_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ALV_DEF = ALV_VARIANT-VARIANT.
ENDIF.
ENDFORM. "alv_f4
*&----
*
*& Form ALV_INIT
*&----
*
FORM ALV_INIT.
CLEAR: ALV_KEYINFO, ALV_VARIANT, ALV_LAYOUT, ALV_PRINT.
CLEAR ALV_DEF.
ALV_REPID = SY-REPID.
CLEAR ALV_VARIANT.
ALV_VARIANT-REPORT = ALV_REPID.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = ALV_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
ALV_DEF = ALV_VARIANT-VARIANT.
MOVE ALV_VARIANT-VARIANT TO ALV_DEFAULT_VARIANT.
ENDIF.
Printing settings
ALV_LAYOUT-GET_SELINFOS = 'X'.
ALV_LAYOUT-GROUP_CHANGE_EDIT = 'X'.
SELECT SINGLE * FROM MMIM_REP_PRINT WHERE REPORT = SY-REPID.
IF SY-SUBRC = 0.
IF MMIM_REP_PRINT-SELINFO = 'X'.
ALV_PRINT-NO_PRINT_SELINFOS = ' '.
ELSE.
ALV_PRINT-NO_PRINT_SELINFOS = 'X'.
ENDIF.
IF MMIM_REP_PRINT-COVERPAGE = 'X'.
ALV_PRINT-NO_COVERPAGE = ' '.
ELSE.
ALV_PRINT-NO_COVERPAGE = 'X'.
ENDIF.
IF MMIM_REP_PRINT-LISTINFO = 'X'.
ALV_PRINT-NO_PRINT_LISTINFOS = ' '.
ELSE.
ALV_PRINT-NO_PRINT_LISTINFOS = 'X'.
ENDIF.
IF MMIM_REP_PRINT-GRIDCONTROL = 'X'.
ALV_DETAIL_FUNC = 'REUSE_ALV_GRID_DISPLAY'.
ELSE.
ALV_DETAIL_FUNC = 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
IF MMIM_REP_PRINT-COLOR = 'X'.
CLEAR ALV_COLOURIZE_FIELDS.
ELSE.
MOVE 'X' TO ALV_COLOURIZE_FIELDS.
ENDIF.
ELSE.
MOVE 'X' TO ALV_COLOURIZE_FIELDS.
ALV_PRINT-NO_PRINT_SELINFOS = 'X'.
ALV_PRINT-NO_COVERPAGE = ' '.
ALV_PRINT-NO_PRINT_LISTINFOS = 'X'.
ALV_DETAIL_FUNC = 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. "ALV_INIT
*----
*
*& Form AUTH_CHECK
*&----
*
for checking authorisations
*----
*
FORM AUTH_CHECK.
DATA: BEGIN OF I_AUTH OCCURS 0,
WERKS LIKE T001W-WERKS,
END OF I_AUTH.
SELECT WERKS
INTO TABLE I_AUTH
FROM T001W
WHERE WERKS IN S_WERKS.
LOOP AT I_AUTH.
AUTHORITY-CHECK OBJECT 'Z_PLNT_AUT'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD I_AUTH-WERKS.
IF SY-SUBRC NE 0 .
MESSAGE E398(00) WITH
'User' SY-UNAME 'not authorised for Plant' I_AUTH-WERKS.
ENDIF.
ENDLOOP.
ENDFORM. " AUTH_CHECK
*&----
*
*& Form VALIDITY_CHECK
*&----
*
text
*----
*
FORM VALIDITY_CHECK.
LOOP AT S_WERKS.
SELECT SINGLE * FROM T001W
WHERE WERKS = S_WERKS-LOW.
IF SY-SUBRC EQ 4 .
MESSAGE E398(00) WITH
'Plant' S_WERKS-LOW 'Does not Exist' .
ENDIF.
ENDLOOP .
ENDFORM. " VALIDITY_CHECK
*&----
*
*& Form alv_check
*&----
*
text
*----
*
FORM ALV_CHECK.
ALV_VARIANT-REPORT = ALV_REPID.
ALV_VARIANT-VARIANT = ALV_DEF.
IF NOT ALV_DEF IS INITIAL.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = ALV_VARIANT
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE E321(M7) WITH ALV_DEF ALV_REPID.
ENDIF. " IF sy-subrc <> 0.
ELSE.
the user wants no initial display variant
IF NOT ALV_DEFAULT_VARIANT IS INITIAL.
but the SAP-LIST-VIEWER will apply the existing
initial display variant / emerge warning 393 ?
CALL FUNCTION 'ME_CHECK_T160M'
EXPORTING
I_ARBGB = 'M7'
I_MSGNR = '393'
EXCEPTIONS
NOTHING = 0
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE W393(M7) WITH ALV_DEFAULT_VARIANT.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "alv_check
*&----
*
*& Form delete_empty_records
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM DELETE_EMPTY_RECORDS .
deleting the records with empty quantities
LOOP AT I_FINAL.
IF I_FINAL-O_STK EQ 0 AND
I_FINAL-TRECEP EQ 0 AND
I_FINAL-PRODU EQ 0 AND
I_FINAL-RECEP EQ 0 AND
I_FINAL-SAL_RET EQ 0 AND
I_FINAL-TDISP EQ 0 AND
I_FINAL-CUSTMR EQ 0 AND
I_FINAL-OPLANT EQ 0 AND
I_FINAL-TLOSS EQ 0 AND
I_FINAL-TRLOSS EQ 0 AND
I_FINAL-WHLOSS EQ 0 AND
I_FINAL-OTHADJ EQ 0 AND
I_FINAL-C_STK EQ 0.
DELETE I_FINAL.
CLEAR I_FINAL.
ENDIF.
MOVE-CORRESPONDING I_FINAL TO I_FINALT.
*For Month
IF Y1 NE 'X'.
CONCATENATE P_SPMON0(4) '.' P_SPMON4(2)
INTO I_FINALT-MONTH.
ELSE.
CONCATENATE P_SPMON+0(4) '.' '00'
INTO I_FINALT-MONTH.
ENDIF.
APPEND I_FINALT.
CLEAR I_FINALT.
ENDLOOP.
ENDFORM. " delete_empty_records
*&----
*
*& Form calculate_opening_stock
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM CALCULATE_OPENING_STOCK .
LOOP AT IMARDHT.
AT NEW MATNR.
I_FINAL-MATNR = IMARDHT-MATNR.
I_FINAL-WERKS = IMARDHT-WERKS.
I_FINAL-MEINS = IMARDHT-MEINS.
I_FINAL-MTART = MTART.
APPEND I_FINAL.
ENDAT.
ENDLOOP.
SORT I_FINAL BY WERKS MATNR.
LOOP AT I_FINAL.
READ TABLE IMARDHT WITH KEY MATNR = I_FINAL-MATNR
WERKS = I_FINAL-WERKS.
IF SY-SUBRC EQ 0.
IF D1 = 'X'.
OBAL = IMARDHT-LABST + IMARDHT-O_STK + IMARDHT-C_STK.
CBAL = IMARDHT-LABST + IMARDHT-C_STK .
ELSE.
OBAL = IMARDHT-LABST .
CBAL = IMARDHT-LABST + IMARDHT-C_STK .
ENDIF.
I_FINAL-C_STK = CBAL.
I_FINAL-O_STK = OBAL.
MODIFY I_FINAL.
ENDIF.
ENDLOOP.
LOOP AT I_FINAL.
LOOP AT I_FINAL5 WHERE MATNR = I_FINAL-MATNR AND
WERKS = I_FINAL-WERKS.
I_FINAL-PRODU = I_FINAL-PRODU + I_FINAL5-PRODU.
I_FINAL-RECEP = I_FINAL-RECEP + I_FINAL5-RECEP.
I_FINAL-SAL_RET = I_FINAL-SAL_RET + I_FINAL5-SAL_RET.
I_FINAL-CUSTMR = I_FINAL-CUSTMR + I_FINAL5-CUSTMR.
I_FINAL-OPLANT = I_FINAL-OPLANT + I_FINAL5-OPLANT.
I_FINAL-WHLOSS = I_FINAL-WHLOSS + I_FINAL5-WHLOSS.
I_FINAL-TRLOSS = I_FINAL-TRLOSS + I_FINAL5-TRLOSS.
I_FINAL-TRFSTK = I_FINAL-TRFSTK + I_FINAL5-TRFSTK.
I_FINAL-OTHADJ = I_FINAL-OTHADJ + I_FINAL5-OTHADJ.
MODIFY I_FINAL.
ENDLOOP.
*----
Total Receipts----
*
I_FINAL-TRECEP = I_FINAL-PRODU
+ I_FINAL-RECEP
+ I_FINAL-SAL_RET.
*----
Total Dispatches----
*
I_FINAL-TDISP = I_FINAL-CUSTMR
+ I_FINAL-OPLANT.
*----
Total Loss----
*
I_FINAL-TLOSS = I_FINAL-TRLOSS
+ I_FINAL-WHLOSS.
MODIFY I_FINAL.
ENDLOOP.
ENDFORM. " calculate_opening_stock
*&----
*
*& Form update_non_transaction_itms
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM UPDATE_NON_TRANSACTION_ITMS .
Pushing NON TRANSACTION ITEMS TO i_final table
LOOP AT IMARDHT.
READ TABLE I_FINAL WITH KEY MATNR = IMARDHT-MATNR
WERKS = IMARDHT-WERKS .
IF SY-SUBRC NE 0.
CLEAR I_FINAL. "Added by manisha for correction
I_FINAL-MATNR = IMARDHT-MATNR.
I_FINAL-WERKS = IMARDHT-WERKS.
I_FINAL-SPMON = P_SPMON.
I_FINAL-MTART = MTART.
I_FINAL-C_STK = IMARDHT-LABST + IMARDHT-C_STK.
I_FINAL-O_STK = I_FINAL-C_STK.
I_FINAL-MEINS = IMARDHT-MEINS.
APPEND I_FINAL.
CLEAR I_FINAL.
ENDIF.
ENDLOOP.
ENDFORM. " update_non_transaction_itms
*&----
*
*& Form get_records_from_DB
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM GET_RECORDS_FROM_DB .
DATA: WA_MTART LIKE MARA-MTART .
DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: I_MARDH2 LIKE I_MARDH1 OCCURS 0 WITH HEADER LINE.
added by prabhu .
SELECT MATNR MTART MEINS FROM MARA
INTO CORRESPONDING FIELDS OF TABLE I_MARA
WHERE MATNR IN S_MATNR AND
MTART = 'FERT'.
*added by prabu for performance.
SORT I_MARA BY MATNR.
DELETE ADJACENT DUPLICATES FROM I_MARA COMPARING MATNR.
SORT I_MARA BY MATNR.
end of changes by prabhu for CPO.
SELECT BWART SHKZG VZBEW
FROM YW2_STKMOVEMENTS
INTO TABLE I_STKMVMNTS.
Getting the Stocks from the MARD table for the Previous Months
for Slow Moving Materials
SELECT MARD~MATNR
MARD~WERKS
MARD~LGORT
MARD~LABST
MARD~INSME
MARD~EINME "+
MARD~SPEME "+
MARD~RETME "-
FROM MARD
INTO CORRESPONDING FIELDS OF TABLE I_MARD
FOR ALL ENTRIES IN I_MARA
WHERE MARD~MATNR EQ I_MARA-MATNR
AND MARD~WERKS IN S_WERKS
AND MARD~LGORT IN S_LGORT.
added by prabhu for CPO.
SORT I_MARD BY MATNR.
LOOP AT I_MARD.
READ TABLE I_MARA WITH KEY MATNR = I_MARD-MATNR.
IF SY-SUBRC NE 0.
DELETE I_MARD.
ELSE.
I_MARD-MEINS = I_MARA-MEINS.
MODIFY I_MARD.
ENDIF.
ENDLOOP.
getting the details from the MKPF & MSEG table
IF NOT I_MARD[] IS INITIAL.
SELECT MKPF~MBLNR
MKPF~MJAHR
MKPF~VGART
MKPF~BUDAT
MSEG~ZEILE
MSEG~BWART
MSEG~XAUTO
MSEG~MATNR
MSEG~WERKS
MSEG~LGORT
MSEG~SHKZG
MSEG~MENGE
MSEG~MEINS
FROM MKPF AS MKPF INNER JOIN
MSEG AS MSEG
ON MKPFMBLNR = MSEGMBLNR
AND MKPFMJAHR = MSEGMJAHR
INTO CORRESPONDING FIELDS OF TABLE I_MKPF
FOR ALL ENTRIES IN I_MARD
WHERE
MKPF~BUDAT GE S_BUDAT-LOW
AND MSEG~MATNR EQ I_MARD-MATNR
AND MSEG~WERKS EQ I_MARD-WERKS
AND MSEG~LGORT NE ''.
ENDIF.
ENDFORM. " get_records_from_DB
*&----
*
*& Form process_movements
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM PROCESS_MOVEMENTS .
DATA: WA_MAKTX LIKE MAKT-MAKTX.
LOOP AT IMKPFT WHERE BUDAT IN S_BUDAT.
IF IMKPFT-SHKZG = 'S'.
IMKPFT-MENGE = IMKPFT-MENGE * ( -1 ).
MODIFY IMKPFT.
ELSE.
ENDIF.
ENDLOOP.
LOOP AT IMKPFT WHERE BUDAT IN S_BUDAT.
I_FINAL5-WERKS = IMKPFT-WERKS.
I_FINAL5-LGORT = IMKPFT-LGORT.
I_FINAL5-MATNR = IMKPFT-MATNR.
GET SIGN.
READ TABLE I_STKMVMNTS WITH KEY BWART = IMKPFT-BWART
SHKZG = IMKPFT-SHKZG.
IF SY-SUBRC = 0.
IF I_STKMVMNTS-VZBEW = '+'.
I_FINAL5-MENGE = IMKPFT-MENGE .
ELSE.
I_FINAL5-MENGE = IMKPFT-MENGE * ( -1 ).
ENDIF.
not to consider movements not found in y table
ELSE.
i_final5-menge = imkpft-menge.
CLEAR I_FINAL5-MENGE.
ENDIF."prabhu.
CASE IMKPFT-BWART.
PRODUCTION - 1
WHEN '101' OR '102' .
I_FINAL5-PRODU = I_FINAL5-PRODU + I_FINAL5-MENGE.
SALES RETURNS - 3
WHEN '653' OR '654'.
I_FINAL5-SAL_RET = I_FINAL5-SAL_RET + I_FINAL5-MENGE.
CUSTOMER DISPATCHES - 5
WHEN '624' OR '625' OR '601' OR '602' OR '951' OR '952'
OR '645' OR '646' .
I_FINAL5-CUSTMR = I_FINAL5-CUSTMR + I_FINAL5-MENGE.
OTHER PLANT DISPATCHES - 6 / RECEIPTS - 2
WHEN '641' OR '941' OR '643'.
IF IMKPFT-SHKZG = 'H'.
I_FINAL5-OPLANT = I_FINAL5-OPLANT + I_FINAL5-MENGE.
ELSE.
I_FINAL5-RECEP = I_FINAL5-RECEP + I_FINAL5-MENGE.
ENDIF.
WHEN '642' OR '942' OR '644'.
IF IMKPFT-SHKZG = 'S'.
I_FINAL5-OPLANT = I_FINAL5-OPLANT + I_FINAL5-MENGE.
ELSE.
I_FINAL5-RECEP = I_FINAL5-RECEP + I_FINAL5-MENGE.
ENDIF.
TRANSIT LOSS
WHEN '251' OR '252' OR 'Z51' OR 'Z52'.
I_FINAL5-TRLOSS = I_FINAL5-TRLOSS + I_FINAL5-MENGE.
WAREHOUSE LOSS
WHEN '551' OR '552' OR 'Y51' OR 'Y52' OR '555' OR '556'.
I_FINAL5-WHLOSS = I_FINAL5-WHLOSS + I_FINAL5-MENGE.
TRANSFER STOCK
WHEN '309' OR '310'.
I_FINAL5-TRFSTK = I_FINAL5-TRFSTK + I_FINAL5-MENGE.
OTHER ADJUSTMENTS
WHEN OTHERS.
I_FINAL5-OTHADJ = I_FINAL5-OTHADJ + I_FINAL5-MENGE.
ENDCASE.
Added by prabhu on 12.3.05 CPO.
*read table i_final5 with key matnr = imkpft-matnr.
*if sy-subrc ne 0.
I_FINAL5-MEINS = IMKPFT-MEINS.
I_FINAL5-BUDAT = IMKPFT-BUDAT.
APPEND I_FINAL5.
CLEAR I_FINAL5.
*endif.
ENDLOOP.
SORT I_FINAL5 BY WERKS MATNR BUDAT ASCENDING.
ENDFORM. " process_movements
*----
*
*----
-
*&----
*
*& Form get_plant_distinction
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM GET_PLANT_DISTINCTION .
SELECT PPLNT WPLNT FROM YPLNT
INTO CORRESPONDING FIELDS OF TABLE I_YPLNT WHERE
PPLNT IN S_WERKS.
SELECT PPLNT WPLNT FROM YPLNT
APPENDING CORRESPONDING FIELDS OF TABLE I_YPLNT WHERE
WPLNT IN S_WERKS.
ENDFORM. " get_plant_distinction
*
*----
*
*----
-
*&----
*
*& Form month_wise
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM MONTH_WISE .
IF Y1 = ''.
LOOP AT IMKPFT WHERE (
( BUDAT4(2) GT P_SPMON4(2) AND
MJAHR EQ P_SPMON+0(4) ) OR
( BUDAT4(2) LE P_SPMON4(2) AND
MJAHR NE P_SPMON+0(4) ) OR
( BUDAT4(2) GE P_SPMON4(2) AND
MJAHR NE P_SPMON+0(4) ) ).
IMKPFT1-MJAHR = IMKPFT-MJAHR.
IMKPFT1-MBLNR = IMKPFT-MBLNR.
IMKPFT1-BUDAT = IMKPFT-BUDAT.
IMKPFT1-VGART = IMKPFT-VGART.
IMKPFT1-BWART = IMKPFT-BWART.
IMKPFT1-MATNR = IMKPFT-MATNR.
IMKPFT1-WERKS = IMKPFT-WERKS.
IMKPFT1-LGORT = IMKPFT-LGORT.
IMKPFT1-MENGE = IMKPFT-MENGE.
IMKPFT1-MEINS = IMKPFT-MEINS.
IMKPFT1-XAUTO = IMKPFT-XAUTO.
IMKPFT1-SHKZG = IMKPFT-SHKZG.
APPEND IMKPFT1.
CLEAR IMKPFT1.
ENDLOOP.
ELSE.
LOOP AT IMKPFT WHERE BUDAT IN S_BUDAT1.
IMKPFT1-MJAHR = IMKPFT-MJAHR.
IMKPFT1-MBLNR = IMKPFT-MBLNR.
IMKPFT1-BUDAT = IMKPFT-BUDAT.
IMKPFT1-VGART = IMKPFT-VGART.
IMKPFT1-BWART = IMKPFT-BWART.
IMKPFT1-MATNR = IMKPFT-MATNR.
IMKPFT1-WERKS = IMKPFT-WERKS.
IMKPFT1-LGORT = IMKPFT-LGORT.
IMKPFT1-MENGE = IMKPFT-MENGE.
IMKPFT1-MEINS = IMKPFT-MEINS.
IMKPFT1-XAUTO = IMKPFT-XAUTO.
IMKPFT1-SHKZG = IMKPFT-SHKZG.
APPEND IMKPFT1.
CLEAR IMKPFT1.
ENDLOOP.
ENDIF.
SORT IMKPFT1 BY WERKS MATNR BUDAT BWART ASCENDING.
LOOP AT IMARDT.
AT NEW MATNR .
IMARDHT-MATNR = IMARDT-MATNR.
IMARDHT-WERKS = IMARDT-WERKS.
APPEND IMARDHT.
CLEAR IMARDHT.
ENDAT.
ENDLOOP.
LOOP AT IMARDHT.
LOOP AT IMARDT WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS.
IMARDHT-MATNR = IMARDT-MATNR.
IMARDHT-WERKS = IMARDT-WERKS.
IMARDHT-LGORT = IMARDT-LGORT.
IMARDHT-LABST = IMARDT-LABST + IMARDT-EINME +
IMARDT-SPEME + IMARDT-RETME + IMARDHT-LABST +
IMARDT-INSME.
IMARDHT-MEINS = IMARDT-MEINS.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
sorting the data by matnr werks lgort.
SORT IMARDHT BY WERKS LGORT MATNR.
to get closing stock.
SORT IMKPFT1 BY MATNR.
DATA: BEGIN OF DATA OCCURS 0,
LGORT LIKE MARD-LGORT,
MATNR LIKE MARD-MATNR,
LABST LIKE MARD-LABST,
WERKS LIKE MARD-WERKS,
END OF DATA.
LOOP AT IMARDT.
AT NEW MATNR.
DATA-LGORT = IMARDT-LGORT.
DATA-MATNR = IMARDT-MATNR.
DATA-WERKS = IMARDT-WERKS.
APPEND DATA.
CLEAR DATA.
ENDAT.
ENDLOOP.
SORT IMKPFT1 BY MATNR SHKZG.
LOOP AT IMKPFT1.
IF IMKPFT1-SHKZG = 'S'.
IMKPFT1-MENGE = IMKPFT1-MENGE * ( -1 ).
MODIFY IMKPFT1.
ELSE.
ENDIF.
ENDLOOP.
SORT IMKPFT1 BY MATNR BUDAT.
LOOP AT IMARDHT.
LOOP AT IMKPFT1 WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS .
IMARDHT-LABST = IMARDHT-LABST + IMKPFT1-MENGE.
MODIFY IMARDHT.
ENDLOOP.
MODIFY IMARDHT.
ENDLOOP.
SORT IMKPFT BY MATNR BUDAT.
IF Y1 =''.
DELETE IMKPFT WHERE
( BUDAT4(2) NE P_SPMON4(2) OR
( BUDAT4(2) EQ P_SPMON4(2) AND
MJAHR NE P_SPMON+0(4) ) ) OR
( BUDAT+4(2) GT P_SPMON AND
MJAHR NE P_SPMON+0(4) ) .
ELSE.
DELETE IMKPFT WHERE BUDAT IN S_BUDAT1.
ENDIF.
*for Closing stock.
LOOP AT IMKPFT.
IF IMKPFT-SHKZG = 'S'.
IMKPFT-MENGE = IMKPFT-MENGE * ( -1 ).
MODIFY IMKPFT.
ENDIF.
ENDLOOP.
IF D1 = 'X'.
LOOP AT IMARDHT.
LOOP AT IMKPFT WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS.
IMARDHT-C_STK = IMARDHT-C_STK + IMKPFT-MENGE.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
*for day cal only on 19.4.5
LOOP AT IMARDHT.
LOOP AT IMKPFT WHERE MATNR = IMARDHT-MATNR AND
BUDAT IN S_BUDAT AND
WERKS = IMARDHT-WERKS .
IMARDHT-O_STK = IMARDHT-O_STK - IMKPFT-MENGE.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
ELSE.
LOOP AT IMARDHT.
LOOP AT IMKPFT WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS.
IMARDHT-C_STK = IMARDHT-C_STK + IMKPFT-MENGE.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM. " month_wise
*&----
*
*& Form z_alv_events1
*&----
*
text
*----
*
FORM Z_ALV_EVENTS1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = FEVENTS1[].
READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_TOPOFPAGE'.
fevents-form = 'Z_LIST'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF. " IF SY-SUBRC = 0.
Drill down
READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_USER_COMMAND1'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS1.
ENDIF.
ENDFORM. "Z_ALV_EVENTS
Drill Down In Alv
FORM Z_USER_COMMAND1 USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD. "#EC NEEDED
*sel_tab_field type slis_sel_tab_field
CHECK R_UCOMM = '&IC1'. "User Double Clicked on Some field
CHECK NOT RS_SELFIELD-VALUE IS INITIAL.
CASE RS_SELFIELD-FIELDNAME.
ENDCASE.
ENDFORM. "Z_USER_COMMAND
*&----
*
*& Form display_alv
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM DISPLAY_ALV1 USING P_T_FINAL.
DATA:
LV_REPID LIKE SY-REPID.
CLEAR: FCAT1.
PERFORM CREATE_FIELDCAT1.
PERFORM Z_ALV_EVENTS1.
LV_REPID = SY-REPID.
SORT T_FINAL BY MATNR BUDAT WERKS .
DATA: W_MATNR(18).
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = LV_REPID
I_CALLBACK_USER_COMMAND = 'Z_USER_COMMAND'
IS_LAYOUT = FS_LAYO1
IT_FIELDCAT = FCAT1[]
I_DEFAULT = 'X'
I_SAVE = 'U'
IT_EVENTS = FEVENTS1[]
TABLES
T_OUTTAB = T_FINAL[].
CLEAR: FCAT1,T_FINAL.
REFRESH: FCAT1,T_FINAL.
ENDFORM. " display_alv
*&----
*
*& Form create_fieldcat
*&----
*
Create a field catalogue for Alv Report
*----
*
--> p1 text
<-- p2 text
*----
*
FORM CREATE_FIELDCAT1 .
for the Material No.
FCAT1-FIELDNAME = 'MATNR'.
FCAT1-KEY = 'X'.
fcat-hotspot = 'X'.
FCAT1-OUTPUTLEN = '00006'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Material'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the Plant
FCAT1-FIELDNAME = 'WERKS'.
FCAT1-KEY = 'X'.
FCAT1-OUTPUTLEN = '000005'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Plant'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the MatDoc
FCAT1-FIELDNAME = 'MBLNR'.
FCAT1-OUTPUTLEN = '000010'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Mat.Doc'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the Date
FCAT1-FIELDNAME = 'BUDAT'.
FCAT1-OUTPUTLEN = '000010'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Mat.Date'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'D'.
FCAT1-DATATYPE = 'DATS'.
APPEND FCAT1.
CLEAR FCAT1.
for the MOVETYPE
FCAT1-FIELDNAME = 'BWART'.
FCAT1-OUTPUTLEN = '000003'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Move.TyPE'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the MOVETYPE
FCAT1-FIELDNAME = 'MENGE'.
FCAT1-OUTPUTLEN = '000013'.
FCAT1-JUST = 'R'.
FCAT1-SELTEXT_M = 'Move.TyPE'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'Q'.
FCAT1-DATATYPE = 'QUAN'.
APPEND FCAT1.
CLEAR FCAT1.
ENDFORM. " create_fieldcat
**&----
-
**
**& Form remove_zeros
**&----
-
**
text
**----
-
**
-->P_I_VBAK_DETAIL_MATNR text
<--P_I_VBAK_DETAIL_MATNR text
**----
-
*
FORM REMOVE_ZEROS USING P_IMKPFT2-MATNR
CHANGING P_IMKPFT2-MATNR1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = IMKPFT2-MATNR
IMPORTING
OUTPUT = IMKPFT2-MATNR1.
ENDFORM. " remove_zeros
‎2008 Apr 16 1:07 PM
Hi,
Below is the classcal report.
REPORT z_sd_rep5_assign2
NO STANDARD PAGE HEADING
LINE-SIZE 158
LINE-COUNT 31(2)
MESSAGE-ID ysd.
INCLUDE <list>.
***************************************************************
***************************************************************
*G L O B A L D A T A D E C L E R A T I O N *
***************************************************************
***************************************************************
***************************************************************
*T Y P E S *
***************************************************************
TYPES: BEGIN OF t_vbak,
vbeln TYPE vbeln_va, "Sales Document
erdat TYPE erdat, "Date on which the record was created
erzet TYPE erzet, "Entry time
ernam TYPE ernam, "Name of Person who Created the Object
audat TYPE audat, "Document date (date received/sent)
vbtyp TYPE vbtyp, "SD document category
END OF t_vbak,
BEGIN OF t_vbap,
vbeln TYPE vbeln_va, "Sales Document
posnr TYPE posnr_va, "Sales Document Item
matnr TYPE matnr, "Material Number
matkl TYPE matkl, "Material Group
netwr TYPE netwr_ap, "Net value of the order item in document currency
prodh TYPE prodh_d, "Product hierarchy
aufnr TYPE aufnr, "Order Number
END OF t_vbap,
BEGIN OF t_vbep ,
vbeln TYPE vbeln_va, "Sales Document
posnr TYPE posnr_va, "Sales Document Item
etenr TYPE etenr, "Delivery Schedule Line Counter
wmeng TYPE wmeng, "Order quantity in sales units
bmeng TYPE bmeng, "Confirmed quantity
edatu TYPE edatu, "Schedule line date
END OF t_vbep,
BEGIN OF t_final,
vbeln TYPE vbeln_va, "Sales Document
erdat TYPE erdat, "Date on which the record was created
erzet TYPE erzet, "Entry time
ernam TYPE ernam, "Name of Person who Created the Object
audat TYPE audat, "Document date (date received/sent)
vbtyp TYPE vbtyp, "SD document category
posnr TYPE posnr_va, "Sales Document Item
matnr TYPE matnr, "Material Number
matkl TYPE matkl, "Material Group
netwr TYPE netwr_ap, "Net value of the order item in document currency
prodh TYPE prodh_d, "Product hierarchy
aufnr TYPE aufnr, "Order Number
END OF t_final,
BEGIN OF t_makt,
matnr TYPE matnr,
maktx TYPE maktx,
END OF t_makt,
BEGIN OF t_mara1,
matnr TYPE matnr, "Material Number
ersda TYPE ersda, "Creation date
ernam TYPE ernam, "Name of Person who Created the Object
mtart TYPE mtart, "Material type
mbrsh TYPE mbrsh, "Material type
matkl TYPE matkl, "Material group
meins TYPE meins, "Base Unit of Measure
brgew TYPE brgew, "Gross weight
volum TYPE volum, "Volume
kunnr TYPE wettb, "Competitor
END OF t_mara1,
BEGIN OF t_mara,
matnr TYPE matnr, "Material Number
maktx TYPE maktx, "Material Descriptiopn
ersda TYPE ersda, "Creation date
ernam TYPE ernam, "Name of Person who Created the Object
mtart TYPE mtart, "Material type
mbrsh TYPE mbrsh, "Material type
matkl TYPE matkl, "Material group
meins TYPE meins, "Base Unit of Measure
brgew TYPE brgew, "Gross weight
volum TYPE volum, "Volume
kunnr TYPE wettb, "Competitor
END OF t_mara.
***************************************************************
*T A B L E S T Y P E S *
***************************************************************
TABLES: vbak, mara, makt.
***************************************************************
*INTERNAL TABLES, WORK AREAS & VARIABLES *
***************************************************************
DATA:
Internal Tables
i_vbak TYPE STANDARD TABLE OF t_vbak,
i_vbap TYPE STANDARD TABLE OF t_vbap,
i_vbep TYPE STANDARD TABLE OF t_vbep,
i_final TYPE STANDARD TABLE OF t_final,
i_final2 TYPE STANDARD TABLE OF t_final,
i_mara TYPE STANDARD TABLE OF t_mara,
i_mara1 TYPE STANDARD TABLE OF t_mara1,
i_makt TYPE STANDARD TABLE OF t_makt,
Work areas
wa_vbak TYPE t_vbak,
wa_vbap TYPE t_vbap,
wa_vbep TYPE t_vbep,
wa_final TYPE t_final,
wa_mara1 TYPE t_mara1,
wa_makt TYPE t_makt,
wa_mara TYPE t_mara,
Variables
v_vbeln LIKE vbak-vbeln, "Sales document
v_matnr LIKE mara-matnr, "Material
v_kunnr LIKE mara-kunnr, "Competitor
v_chk TYPE c, "For checkbox
fname(30) TYPE c.
***************************************************************
***************************************************************
*S E L E C T I O N - S C R E E N D E F I N I T I O N *
***************************************************************
***************************************************************
INITIALIZATION.
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-004.
SELECT-OPTIONS: so_vbeln FOR v_vbeln MODIF ID md1,
so_matnr FOR v_matnr MODIF ID md2.
SELECTION-SCREEN: END OF BLOCK blk1.
SELECTION-SCREEN: BEGIN OF BLOCK blk2 WITH FRAME TITLE text-005.
PARAMETERS: p_vbeln RADIOBUTTON GROUP rd1
DEFAULT 'X'
USER-COMMAND ucom,
p_matnr RADIOBUTTON GROUP rd1.
SELECTION-SCREEN: END OF BLOCK blk2.
***************************************************************
***************************************************************
M A I N P R O G R A M *
***************************************************************
***************************************************************
AT SELECTION-SCREEN.
Validating the user inputs
PERFORM validate_sales_order.
PERFORM validate_material.
AT SELECTION-SCREEN OUTPUT.
PERFORM change_display_behaviour.
TOP-OF-PAGE.
PERFORM display_header.
START-OF-SELECTION.
SET PF-STATUS 'ZGUI'.
Processing step by step in order to implement logic
* IF ELSE COND.
IF p_vbeln = 'X'.
PERFORM get_vbak_data.
PERFORM get_vbap_data.
PERFORM populate_final_data.
ELSEIF p_matnr = 'X'.
PERFORM get_vbap_data_3.
PERFORM get_vbak_data_3.
PERFORM populate_final_data.
SORT i_final BY matnr.
ENDIF.
END-OF-SELECTION.
IF p_vbeln = 'X'.
PERFORM display_report.
ELSEIF p_matnr = 'X'.
PERFORM display_report_3.
ENDIF.
END-OF-PAGE.
PERFORM display_footer.
Event for user-command for both at line-selection and at user-command
AT USER-COMMAND.
CLEAR: v_chk,
wa_final.
IF p_vbeln = 'X'.
CASE sy-ucomm.
WHEN 'DIS'.
DO.
In order to get the selected records
READ LINE sy-index FIELD VALUE v_chk
wa_final-vbeln
wa_final-posnr.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF NOT v_chk IS INITIAL.
READ TABLE i_final INTO wa_final WITH KEY
vbeln = wa_final-vbeln
posnr = wa_final-posnr
BINARY SEARCH.
APPEND wa_final TO i_final2.
Disabling the recheckbox so that next time user cannot select
MODIFY LINE sy-index FIELD VALUE v_chk
FROM space
FIELD FORMAT v_chk INPUT OFF.
ENDIF.
CLEAR: wa_final.
ENDDO.
IF NOT i_final2 IS INITIAL.
SORT i_final2 BY vbeln posnr.
Fetching Schedule line data
PERFORM get_schedule_data.
Displaying Schedule line data
PERFORM display_schedule_data.
REFRESH: i_final2,
i_vbep.
ENDIF.
WHEN 'BACK' OR 'CANC' OR 'EXIT'.
LEAVE LIST-PROCESSING.
ENDCASE.
ELSEIF p_matnr = 'X'.
CASE sy-ucomm.
WHEN 'DISPLAY'.
DO.
*
ENDDO.
IF NOT i_final2 IS INITIAL.
SORT i_final2 BY vbeln posnr.
Fetching Schedule line data
PERFORM get_schedule_data.
Displaying Schedule line data
PERFORM display_schedule_data.
REFRESH: i_final2,
i_vbep.
ENDIF.
WHEN 'BACK' OR 'CANC' OR 'EXIT'.
LEAVE LIST-PROCESSING.
ENDCASE.
ENDIF.
CASE sy-lsind .
WHEN 1.
GET CURSOR FIELD fname VALUE v_matnr.
IF fname = 'WA_FINAL-MATNR'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_matnr
IMPORTING
output = v_matnr.
PERFORM get_material_details USING v_matnr.
PERFORM display_mara.
ENDIF.
WHEN 2.
GET CURSOR FIELD fname VALUE v_kunnr.
IF fname = 'KUNNR'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_kunnr
IMPORTING
output = v_kunnr.
SET PARAMETER ID 'KUN' FIELD v_kunnr.
CALL TRANSACTION 'XD03' AND
SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
***************************************************************
S U B R O U T I N E S *
***************************************************************
&----
*& Form change_display_behaviour
&----
Change the display behviour of screen elements
----
FORM change_display_behaviour .
LOOP AT SCREEN.
IF p_vbeln = 'X'.
IF screen-group1 = 'MD1'.
screen-input = 1.
MODIFY SCREEN.
ELSEIF screen-group1 = 'MD2'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ELSEIF p_matnr = 'X'.
IF screen-group1 = 'MD1'.
screen-input = 0.
MODIFY SCREEN.
ELSEIF screen-group1 = 'MD2'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " change_display_behaviour
&----
*& Form validate_sales_order
&----
For validating sales document no
----
FORM validate_sales_order .
Local declearations
DATA: lv_vbeln TYPE vbeln_va. "Sales Document
SELECT vbeln
INTO (lv_vbeln)
UP TO 1 ROWS
FROM vbak
WHERE vbeln IN so_vbeln.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e000 with so_vbeln-LOW so_vbeln-HIGH . "Invalid Sales Order
" Passing arguments to message.
ENDIF.
ENDFORM. " validate_sales_order
&----
*& Form validate_material
&----
For validating sales document no
----
FORM validate_material .
Local declearations
DATA: lv_matnr TYPE vbeln_va. "Material
SELECT matnr
INTO (lv_matnr)
UP TO 1 ROWS
FROM mara
WHERE matnr IN so_matnr.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e001. "Invalid Material
ENDIF.
ENDFORM. " validate_material
&----
*& Form get_vbak_data
&----
Foor fetching the vbak data
----
--> p1 text
<-- p2 text
----
FORM get_vbak_data .
SELECT vbeln
erdat
erzet
ernam
audat
vbtyp
INTO TABLE i_vbak
FROM vbak
WHERE vbeln IN so_vbeln.
IF sy-subrc EQ 0.
SORT i_vbak BY vbeln.
ELSE.
MESSAGE i002. "No Data Exists for the selection
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " get_vbak_data
&----
*& Form get_vbap_data
&----
For fetching the vbap data
----
--> p1 text
<-- p2 text
----
FORM get_vbap_data .
IF NOT i_vbak[] IS INITIAL.
SELECT vbeln
posnr
matnr
matkl
netwr
prodh
aufnr
INTO TABLE i_vbap
FROM vbap
FOR ALL ENTRIES IN i_vbak
WHERE vbeln EQ i_vbak-vbeln.
IF sy-subrc EQ 0.
SORT i_vbap BY vbeln posnr.
ELSE.
MESSAGE i002. "No Data Exists for the selection
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " get_vbap_data
&----
*& Form populate_final_data
&----
For populating final data
----
--> p1 text
<-- p2 text
----
FORM populate_final_data .
Local data
DATA: lv_index TYPE sytabix. "To preserve the index pos
Implementing the parallel cursor technique
LOOP AT i_vbak INTO wa_vbak.
LOOP AT i_vbap INTO wa_vbap FROM lv_index.
IF wa_vbak-vbeln <> wa_vbap-vbeln.
lv_index = sy-tabix.
EXIT.
ENDIF.
Assignment from vbak & vbap work area to final
wa_final-vbeln = wa_vbak-vbeln.
wa_final-erdat = wa_vbak-erdat.
wa_final-erzet = wa_vbak-erzet.
wa_final-ernam = wa_vbak-ernam.
wa_final-audat = wa_vbak-audat.
wa_final-vbtyp = wa_vbak-vbtyp.
wa_final-posnr = wa_vbap-posnr.
wa_final-matnr = wa_vbap-matnr.
wa_final-matkl = wa_vbap-matkl.
wa_final-netwr = wa_vbap-netwr.
wa_final-prodh = wa_vbap-prodh.
wa_final-aufnr = wa_vbap-aufnr.
Populating a record in final
APPEND wa_final TO i_final.
CLEAR: wa_final,
wa_vbap.
ENDLOOP.
CLEAR: wa_vbap,
wa_vbak.
ENDLOOP.
ENDFORM. " populate_final_data
&----
*& Form display_report
&----
For displaying the reports
----
--> p1 text
<-- p2 text
----
FORM display_report .
IF NOT i_final[] IS INITIAL.
LOOP AT i_final INTO wa_final.
AT NEW vbeln.
WRITE: /1(15) sy-uline, 15 line_top_right_corner AS LINE,
/1 sy-vline, sym_documents AS SYMBOL,
wa_final-vbeln COLOR COL_GROUP,15 sy-vline,
/1(158) sy-uline.
ENDAT.
WRITE: /1 sy-vline,
2 v_chk AS CHECKBOX,
4(6) wa_final-posnr COLOR COL_KEY,
11 sy-vline,
12(10) wa_final-erdat COLOR COL_NORMAL,
23 sy-vline,
24(8) wa_final-erzet COLOR COL_NORMAL,
33 sy-vline,
34(12) wa_final-ernam COLOR COL_NORMAL,
47 sy-vline,
48(10) wa_final-audat COLOR COL_NORMAL,
59 sy-vline,
60(10) wa_final-vbtyp COLOR COL_NORMAL,
71 sy-vline,
72(18) wa_final-matnr HOTSPOT ON COLOR COL_POSITIVE,
91 sy-vline,
92(9) wa_final-matkl COLOR COL_NORMAL,
102 sy-vline,
103(20) wa_final-netwr COLOR COL_NORMAL,
124 sy-vline,
125(18) wa_final-prodh COLOR COL_NORMAL,
144 sy-vline,
145(12) wa_final-aufnr COLOR COL_NORMAL,
158 sy-vline,
/1(158) sy-uline.
HIDE: wa_final-vbeln,
wa_final-posnr.
AT END OF vbeln.
SUM.
WRITE: /101(20) wa_final-netwr COLOR COL_GROUP.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " display_report
&----
*& Form display_header
&----
For displaying Header
----
FORM display_header .
WRITE: /1(11) sy-uline,
/1 sy-vline,
2 text-006 COLOR COL_KEY INTENSIFIED ON,
11 sy-vline,
/1(158) sy-uline,
/1 sy-vline,
4(6) text-007 COLOR COL_KEY ,
11 sy-vline,
12(10) text-008 COLOR COL_HEADING,
23 sy-vline,
24(8) text-009 COLOR COL_HEADING,
33 sy-vline,
34(12) text-010 COLOR COL_HEADING,
47 sy-vline,
48(10) text-011 COLOR COL_HEADING,
59 sy-vline,
60(10) text-012 COLOR COL_HEADING,
71 sy-vline,
72(18) text-013 COLOR COL_HEADING,
91 sy-vline,
92(9) text-014 COLOR COL_HEADING,
102 sy-vline,
103(20) text-015 COLOR COL_TOTAL,
124 sy-vline,
125(18) text-016 COLOR COL_HEADING,
144 sy-vline,
145(12) text-017 COLOR COL_HEADING,
158 sy-vline,
/1(158) sy-uline.
ENDFORM. " display_header
&----
*& Form display_footer
&----
For Displaying footer
----
--> p1 text
<-- p2 text
----
FORM display_footer .
WRITE:/1 text-018, sy-uname,
/1 text-019, sy-pagno.
ENDFORM. " display_footer
&----
*& Form get_schedule_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_schedule_data .
IF NOT i_final2[] IS INITIAL.
SELECT vbeln
posnr
etenr
wmeng
bmeng
edatu
INTO TABLE i_vbep
FROM vbep
FOR ALL ENTRIES IN i_final2
WHERE vbeln EQ i_final2-vbeln AND
posnr EQ i_final2-posnr.
IF sy-subrc NE 0.
MESSAGE i001.
LEAVE LIST-PROCESSING. "No Data exists for the selection
ELSEIF sy-subrc EQ 0.
SORT i_vbep BY vbeln posnr etenr.
ENDIF.
ENDIF.
ENDFORM. " get_schedule_data
&----
*& Form display_schedule_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_schedule_data .
Local Declerations
DATA:
Work Areas
lwa_vbep TYPE t_vbep.
IF NOT i_vbep[] IS INITIAL.
LOOP AT i_vbep INTO lwa_vbep.
AT NEW vbeln.
WRITE: /1(15) sy-uline, 15 line_top_right_corner AS LINE,
/1 sy-vline, sym_documents AS SYMBOL,
lwa_vbep-vbeln COLOR COL_GROUP,15 sy-vline,
/1(65) sy-uline.
ENDAT.
WRITE: /1 sy-vline,
2(6) lwa_vbep-posnr COLOR COL_KEY HOTSPOT ON,
9 sy-vline,
10(4) lwa_vbep-etenr COLOR COL_NORMAL,
15 sy-vline,
16(17) lwa_vbep-wmeng COLOR COL_NORMAL,
34 sy-vline,
35(17) lwa_vbep-bmeng COLOR COL_NORMAL,
53 sy-vline,
54(10) lwa_vbep-edatu COLOR COL_NORMAL,
65 sy-vline,
/1(65) sy-uline.
AT END OF vbeln.
SUM.
WRITE: /16(17) lwa_vbep-wmeng COLOR COL_GROUP,
35(17) lwa_vbep-bmeng COLOR COL_GROUP.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " display_schedule_data
&----
*& Form get_vbap_data_3
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_vbap_data_3 .
SELECT vbeln
posnr
matnr
matkl
netwr
prodh
aufnr
INTO TABLE i_vbap
FROM vbap
WHERE matnr IN so_matnr.
IF sy-subrc EQ 0.
SORT i_vbap BY vbeln posnr.
ELSE.
MESSAGE i002. "No Data Exists for the selection
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " get_vbap_data_3
&----
*& Form get_vbak_data_3
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_vbak_data_3 .
IF NOT i_vbap[] IS INITIAL.
SELECT vbeln
erdat
erzet
ernam
audat
vbtyp
INTO TABLE i_vbak
FROM vbak
FOR ALL ENTRIES IN i_vbap
WHERE vbeln EQ i_vbap-vbeln.
IF sy-subrc EQ 0.
SORT i_vbap BY vbeln posnr.
ELSE.
MESSAGE i002. "No Data Exists for the selection
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " get_vbak_data_3
&----
*& Form display_report_3
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_report_3 .
IF NOT i_final[] IS INITIAL.
LOOP AT i_final INTO wa_final.
AT NEW vbeln.
WRITE: /1(15) sy-uline, 15 line_top_right_corner AS LINE,
/1 sy-vline, sym_documents AS SYMBOL,
wa_final-vbeln COLOR COL_GROUP,15 sy-vline,
/1(158) sy-uline.
ENDAT.
WRITE: /1 sy-vline,
2 v_chk AS CHECKBOX,
4(6) wa_final-posnr COLOR COL_KEY,
11 sy-vline,
12(10) wa_final-erdat COLOR COL_NORMAL,
23 sy-vline,
24(8) wa_final-erzet COLOR COL_NORMAL,
33 sy-vline,
34(12) wa_final-ernam COLOR COL_NORMAL,
47 sy-vline,
48(10) wa_final-audat COLOR COL_NORMAL,
59 sy-vline,
60(10) wa_final-vbtyp COLOR COL_NORMAL,
71 sy-vline,
72(18) wa_final-matnr HOTSPOT ON COLOR COL_POSITIVE,
91 sy-vline,
92(9) wa_final-matkl COLOR COL_NORMAL,
102 sy-vline,
103(20) wa_final-netwr COLOR COL_NORMAL,
124 sy-vline,
125(18) wa_final-prodh COLOR COL_NORMAL,
144 sy-vline,
145(12) wa_final-aufnr COLOR COL_NORMAL,
158 sy-vline,
/1(158) sy-uline.
HIDE: wa_final-vbeln,
wa_final-posnr.
AT END OF vbeln.
SUM.
WRITE: /101(20) wa_final-netwr COLOR COL_GROUP.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " display_report_3
&----
*& Form get_material_details
&----
text
----
-->P_V_MATNR text
<--P_I_MARA text
----
FORM get_material_details USING p_v_matnr.
Local data
DATA: lv_index TYPE sytabix. "To preserve the index pos
SELECT matnr,ersda, ernam, mtart, mbrsh, matkl, meins, brgew, volum, kunnr from mara into i_mara1 where matnr = p_v_matnr. " Getting data for mara table
SELECT matnr,maktx into i_makt from maktx where matnr = p_v_matnr. " Getting data for makt table
Implementing the parallel cursor technique
LOOP AT i_mara1 INTO wa_mara1.
LOOP AT i_makt INTO wa_makt FROM lv_index.
IF wa_mara1-matnr <> wa_makt-matnr.
lv_index = sy-tabix.
EXIT.
ENDIF.
Assignment from mara & makt work area to i_mara
wa_mara-matnr = wa_mara1-matnr.
wa_mara-maktx = wa_makt-maktx.
wa_mara-ersda = wa_mara1-ersda.
wa_mara-ernam = wa_mara1-ernam.
wa_mara-mtart = wa_mara1-mtart.
wa_mara-mbrsh = wa_mara1-mbrsh.
wa_mara-matkl = wa_mara1-matkl.
wa_mara-meins = wa_mara1-meins .
wa_mara-brgew = wa_mara1-brgew.
wa_mara-volum = wa_mara1-volum.
wa_mara-kunnr = wa_mara1-kunnr.
Populating a record in final i_mara table
APPEND wa_mara TO i_mara.
CLEAR: wa_mara,
wa_makt.
ENDLOOP.
CLEAR: wa_mara,
wa_makt.
ENDLOOP.
SORT i_mara BY matnr.
ENDFORM. " get_material_details
&----
*& Form display_mara
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_mara .
PERFORM display_header_mara.
LOOP AT i_mara INTO wa_mara.
FORMAT COLOR 5.
WRITE 😕 sy-uline,
wa_mara-matnr,sy-vline,
wa_mara-maktx,sy-vline,
wa_mara-ersda,sy-vline,
wa_mara-ernam,sy-vline,
wa_mara-mtart,sy-vline,
wa_mara-mbrsh,sy-vline,
wa_mara-matkl,sy-vline,
wa_mara-meins,sy-vline,
wa_mara-brgew,sy-vline,
wa_mara-volum,sy-vline,
wa_mara-kunnr,sy-vline.
ENDLOOP.
ENDFORM. " display_mara
&----
*& Form display_header_mara
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_header_mara .
WRITE: /2 text-013 COLOR COL_KEY INTENSIFIED ON,
11 sy-vline,
/1 sy-vline,
9(10) text-017 COLOR COL_KEY ,
20 sy-vline,
21(14) text-018 COLOR COL_HEADING,
36 sy-vline,
37(8) text-019 COLOR COL_HEADING,
46 sy-vline,
47(12) text-020 COLOR COL_HEADING,
59 sy-vline,
60(10) text-021 COLOR COL_HEADING,
71 sy-vline,
72(10) text-022 COLOR COL_HEADING,
83 sy-vline,
84(18) text-023 COLOR COL_HEADING,
103 sy-vline,
104(9) text-024 COLOR COL_HEADING,
114 sy-vline,
115(20) text-025 COLOR COL_TOTAL,
136 sy-vline,
137(18) text-026 COLOR COL_HEADING,
156 sy-vline,
/1(156) sy-uline.
ENDFORM. " display_header_mara
Please reward points if useful.
‎2008 Apr 16 1:07 PM
‎2008 Apr 16 1:08 PM
Goto transaction code : ABAPDOCU ...
U'll find many examples ....
‎2008 Apr 16 1:08 PM
*&----
*
*& Report Z_OPEN_CLOSE *
*& *
*&----
*
*& *
*& *
*&----
*
REPORT Z_OPEN_CLOSE MESSAGE-ID YW2 LINE-SIZE 231 LINE-COUNT 45
NO STANDARD PAGE HEADING.
*----
*
Type Declaration *
*----
*
TYPE-POOLS SLIS.
*----
*
Tables *
*----
*
TABLES: MKPF, " Material Document: Header Data
MSEG, " Material Document: Item Data
MARA,
MARD,
S031,
EKKO,
EKPO,
LIKP,
MAKT,
J_1IWRKCUS,
T001W,
WB2_V_MKPF_MSEG2,
MMIM_REP_PRINT,
YW2_STKMOVEMENTS,
YPLNT,
MARDH.
*----
*
Internal Tables *
*----
*
DATA: I_WERKS LIKE J_1IWRKCUS OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_YPLNT OCCURS 0,
PPLNT LIKE YPLNT-PPLNT,
WPLNT LIKE YPLNT-WPLNT,
END OF I_YPLNT.
DATA: BEGIN OF I_MKPF OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
BUDAT LIKE MKPF-BUDAT,
VGART LIKE MKPF-VGART,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
KUNNR LIKE MSEG-KUNNR,
ZEILE LIKE MSEG-ZEILE,
XAUTO LIKE MSEG-XAUTO,
SHKZG LIKE MSEG-SHKZG,
MATNR1 LIKE MSEG-MATNR,
END OF I_MKPF.
DATA: BEGIN OF I_MARDH OCCURS 0,
WERKS LIKE MARDH-WERKS,
MEINS LIKE MARA-MEINS,
MATNR LIKE MARDH-MATNR,
LGORT LIKE MARDH-LGORT,
LABST LIKE MARDH-LABST,
LFGJA LIKE MARDH-LFGJA, "Added -MB
LFMON LIKE MARDH-LFMON, "Added -MB
PERIO(6),
INSME LIKE MARDH-LABST,
EINME LIKE MARDH-LABST,
SPEME LIKE MARDH-LABST,
RETME LIKE MARDH-LABST,
O_STK LIKE MARDH-LABST, " Opening Stock
C_STK LIKE MARDH-LABST, " Closing Stock
END OF I_MARDH.
DATA: BEGIN OF I_MARD OCCURS 0,
WERKS LIKE MARD-WERKS,
MATNR LIKE MARD-MATNR,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
INSME LIKE MARD-LABST,
MEINS LIKE MARA-MEINS,
EINME LIKE MARD-LABST,
SPEME LIKE MARD-LABST,
RETME LIKE MARD-LABST,
END OF I_MARD.
DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: I_MARDH1 LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_MKPF1 OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
WERKS LIKE MSEG-WERKS,
MATNR LIKE MSEG-MATNR,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
XAUTO LIKE MSEG-XAUTO,
SHKZG LIKE MSEG-SHKZG,
END OF I_MKPF1.
DATA: BEGIN OF I_MKPF2 OCCURS 0,
WERKS LIKE MSEG-WERKS,
MATNR LIKE MSEG-MATNR,
BUDAT LIKE MKPF-BUDAT,
BWART LIKE MSEG-BWART,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
XAUTO LIKE MSEG-XAUTO,
END OF I_MKPF2.
DATA: BEGIN OF I_FINAL5 OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
LGORT LIKE MSEG-LGORT, " Storage Location
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TLOSS LIKE MARDH-LABST, " Total Loss
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
C_STK LIKE MARDH-LABST, " Closing Stock
TRFSTK LIKE MARDH-LABST, "Transfer stock
MENGE LIKE MSEG-MENGE,
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL5.
DATA: BEGIN OF I_FINAL OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL.
DATA: I_FINAL1 LIKE I_FINAL OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_FINAL_TEMP OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
MTART LIKE MARA-MTART, " Material Type
MAKTX LIKE MAKT-MAKTX, " Description
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
END OF I_FINAL_TEMP.
For Materials
DATA: BEGIN OF I_MARA OCCURS 0,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS LIKE MARA-MEINS,
LABST TYPE MARD-LABST,
MAKTX LIKE MAKT-MAKTX,
END OF I_MARA.
DATA: BEGIN OF I_STKMVMNTS OCCURS 0,
BWART LIKE MSEG-BWART,
SHKZG LIKE MSEG-SHKZG,
VZBEW LIKE YW2_STKMOVEMENTS-VZBEW,
END OF I_STKMVMNTS.
DATA: BEGIN OF I_FINALT OCCURS 0,
WERKS LIKE MSEG-WERKS, " Plant
MATNR LIKE MSEG-MATNR, " Material
BUDAT LIKE MKPF-BUDAT, " Posting Date
MTART LIKE MARA-MTART, " Material Type
SPMON LIKE S031-SPMON, " Month
MAKTX LIKE MAKT-MAKTX, " Description
meins(3), " UOM
MEINS LIKE MSEG-MEINS,
O_STK LIKE MARDH-LABST, " opening stock
TRECEP LIKE MARDH-LABST, " total receipts
PRODU LIKE MARDH-LABST, " Net Receipts - Production
RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
TDISP LIKE MARDH-LABST, " total dispatches
CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
TRFSTK LIKE MARDH-LABST, "Material Transfer stock
TRLOSS LIKE MARDH-LABST, " Transit Loss
WHLOSS LIKE MARDH-LABST, " Warehouse Loss
TLOSS LIKE MARDH-LABST, " Total Loss
C_STK LIKE MARDH-LABST, " Closing Stock
OTHADJ LIKE MARDH-LABST,
MONTH(8) ,
END OF I_FINALT.
DATA: IMKPFT LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT1 LIKE I_MKPF1 OCCURS 0 WITH HEADER LINE.
DATA: IMARDT LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: IMARDHT LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
DATA: T_FINAL LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
DATA: IMKPFT2 LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
FCAT is used for the field catalog
DATA: FCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
for excluding the ICONs from the application toolbar
FEXC TYPE TABLE OF SLIS_EXTAB WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FS_LAYO is used for Grid Layout
FS_LAYO TYPE SLIS_LAYOUT_ALV,
FEVENTS to handle the events TOP OF PAGE & USER_COMMAND
FEVENTS TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FHEADER is used for List header
FHEADER TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
sort is used for sorting
FSORT TYPE TABLE OF SLIS_SORTINFO_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FCAT1 TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FS_LAYO1 TYPE SLIS_LAYOUT_ALV,
GT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,
FEVENTS1 TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0,
FHEADER1 TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT
KEY WITH HEADER LINE INITIAL SIZE 0,
G_STATU_071 TYPE SLIS_FORMNAME VALUE 'Z_PFSTATUS',
ALV_VARIANT1 LIKE DISVARIANT.
*----
*
Variable Declaration *
*----
*
TYPES: TRFF_TYPE_DEC_6_5(6) TYPE P DECIMALS 5.
DATA: FYEAR(4),
MON(2),
FYEAR1(4),
MON1(2),
OBAL LIKE MARD-LABST,
CBAL LIKE MARD-LABST,
INDEX TYPE I,
COUNT,
COUNT1 TYPE I,
O_STK TYPE P DECIMALS 3,
C_STK TYPE P DECIMALS 3,
V_MJAHR LIKE MKPF-MJAHR,
MONTHS TYPE TRFF_TYPE_DEC_6_5,
MONTH TYPE I.
Global variables for handling ALV functionality
DATA: ALV_KEYINFO TYPE SLIS_KEYINFO_ALV,
ALV_VARIANT LIKE DISVARIANT,
ALV_LAYOUT TYPE SLIS_LAYOUT_ALV,
ALV_REPID LIKE SY-REPID,
ALV_PRINT TYPE SLIS_PRINT_ALV,
ALV_DETAIL_FUNC(30),
ALV_DEFAULT_VARIANT LIKE DISVARIANT-VARIANT,
ALV_COLOURIZE_FIELDS LIKE MMIM_REP_PRINT-COLOR.
RANGES: R_BUDAT FOR MKPF-BUDAT.
*Added by Prabhu for year on 26.4.05.
DATA: IDATE LIKE R_BUDAT OCCURS 0 WITH HEADER LINE.
*----
*
Selection Screen Elements *
*----
*
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MARD-WERKS OBLIGATORY NO INTERVALS.
PARAMETER: P_SPMON LIKE S031-SPMON NO-DISPLAY .
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
S_LGORT FOR MSEG-LGORT NO-EXTENSION NO INTERVALS,
S_MBLNR FOR MKPF-MBLNR,
S_BUDAT FOR MKPF-BUDAT OBLIGATORY .
SELECTION-SCREEN END OF BLOCK BLK.
SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-004.
PARAMETER : MTART LIKE MARA-MTART DEFAULT 'FERT' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK BLK3.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-003.
SELECTION-SCREEN END OF BLOCK BLK2.
ADDED BY PRABHU FOR DAY-WISE REPORT.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-007.
PARAMETERS: D1 RADIOBUTTON GROUP P1 DEFAULT 'X',
M1 RADIOBUTTON GROUP P1,
Y1 RADIOBUTTON GROUP P1.
SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-006.
PARAMETERS: ALV_DEF LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK B2.
DATA: S_BUDAT1 LIKE S_BUDAT OCCURS 0 WITH HEADER LINE."prabhu
*----
*
Initialization *
*----
*
INITIALIZATION.
PERFORM ALV_INIT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR ALV_DEF.
PERFORM ALV_F4.
*----
-
*
At Selection Screen
*
*----
-
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_spmon.
PERFORM monat_f4.
*
*----
*
At Selection Screen *
*----
*
AT SELECTION-SCREEN.
checking for the layout
PERFORM ALV_CHECK.
authorisation check for the Plant
PERFORM auth_check.
Validation for the Plant
PERFORM VALIDITY_CHECK.
IF MTART NE 'FERT'.
MESSAGE E041 WITH 'Material Type must be FERT Only...'.
ENDIF.
IF D1 = 'X'." On 26.4.05.
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
ELSE.
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
ENDIF.
LOOP AT S_BUDAT.
IF S_BUDAT-HIGH IS INITIAL.
S_BUDAT-HIGH = S_BUDAT-LOW.
MODIFY S_BUDAT.
ENDIF.
ENDLOOP.
IDATE-LOW = S_BUDAT-LOW.
IDATE-HIGH = S_BUDAT-HIGH.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
I_DATE_FROM = IDATE-LOW
I_DATE_TO = IDATE-HIGH
IMPORTING
E_DAYS =
E_MONTHS = MONTH
E_YEARS =
.
DATA: I(3) TYPE C.
I = S_BUDAT-LOW+4(2).
CLEAR: R_BUDAT.
REFRESH: R_BUDAT.
*added by Prabhu for Only for Oneday.on 18.5.5
IF MONTH EQ '0'.
MONTH = MONTH + 1.
ENDIF.
*added by Prabhu for Only for Oneday.on 18.5.5
DO MONTH TIMES.
R_BUDAT-LOW = S_BUDAT-LOW.
APPEND R_BUDAT.
ENDDO.
I = 0.
LOOP AT R_BUDAT.
R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2) + I.
I = I + 1.
R_BUDAT-LOW+6(2) = '01'.
MODIFY R_BUDAT.
ENDLOOP.
LOOP AT R_BUDAT.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = R_BUDAT-LOW
IMPORTING
LAST_DAY_OF_MONTH = R_BUDAT-HIGH
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2
.
MODIFY R_BUDAT.
ENDLOOP.
LOOP AT R_BUDAT.
IF R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2).
R_BUDAT-LOW = S_BUDAT-LOW.
MODIFY R_BUDAT.
ENDIF.
IF R_BUDAT-HIGH4(2) = S_BUDAT-HIGH4(2).
R_BUDAT-HIGH = S_BUDAT-HIGH.
MODIFY R_BUDAT.
ENDIF.
For Summary on 26.4.05.
IF Y1 = 'X'.
CLEAR R_BUDAT.
REFRESH R_BUDAT.
R_BUDAT-LOW = S_BUDAT-LOW.
R_BUDAT-HIGH = S_BUDAT-HIGH.
APPEND R_BUDAT.
CLEAR R_BUDAT.
ENDIF.
ENDLOOP.
*----
*
At Selection Screen *
*----
*
AT SELECTION-SCREEN OUTPUT.
*----
*
Start of Selection *
*----
*
START-OF-SELECTION.
V_MJAHR = P_SPMON+0(4).
Get plant distinction warehouse/production
PERFORM GET_PLANT_DISTINCTION.
Collect the data from various tables
PERFORM GETDATA_FG_STOCK.
here the number of rows in the output table is found
PERFORM OUTPUT_TABLE_CHECK.
here the top of the page code is written, that is to be displayed
in the output
PERFORM Z_TOP_OF_PAGE.
here ALV layout properties are set
PERFORM Z_LAYOUT_SETTINGS.
ALV EVENTS for TOP OF PAGE and for USER COMMAND
PERFORM Z_ALV_EVENTS.
The field catalog is defined for the Primary List is defined in
the subroutine CREATE_FIELD_CATALOG include program ZPRRDOCR_FCAT
PERFORM Z_CREATE_FIELD_CATALOG.
This is for displaying the output
PERFORM Z_REUSE_ALV_GRID_DISPLAY.
*&----
*
*& Form getdata_fg_stock
*&----
*
Getting data from standard tables
*----
*
FORM GETDATA_FG_STOCK.
For getting the Start date & end date of the month
PERFORM get_month_dates.
Getting the Opening Stock from MARDH table
IF MON EQ '01'.
MON1 = MON.
FYEAR1 = FYEAR.
MON = '12'.
FYEAR = FYEAR - 1.
ELSE.
MON1 = MON.
FYEAR1 = FYEAR.
MON = MON - 1.
FYEAR = FYEAR.
ENDIF.
PERFORM GET_RECORDS_FROM_DB.
*added for Month Summary on 26.4.05.
LOOP AT R_BUDAT.
S_BUDAT-LOW = R_BUDAT-LOW.
S_BUDAT-HIGH = R_BUDAT-HIGH.
*for Month
P_SPMON0(4) = S_BUDAT-LOW0(4).
P_SPMON4(2) = S_BUDAT-LOW4(2).
*for summary.
IF Y1 = 'X'.
LOOP AT S_BUDAT.
S_BUDAT1-SIGN = 'I'.
S_BUDAT1-OPTION = 'NB'.
S_BUDAT1-LOW = S_BUDAT-LOW.
S_BUDAT1-HIGH = S_BUDAT-HIGH.
APPEND S_BUDAT1.
CLEAR S_BUDAT1.
ENDLOOP.
ENDIF.
IMKPFT[] = I_MKPF[].
IMKPFT2[] = I_MKPF[].
IMARDT[] = I_MARD[].
IMARDHT[] = I_MARDH[].
PERFORM MONTH_WISE.
PERFORM PROCESS_MOVEMENTS.
PERFORM CALCULATE_OPENING_STOCK.
PERFORM UPDATE_NON_TRANSACTION_ITMS.
PERFORM DELETE_EMPTY_RECORDS.
CLEAR: IMARDHT,IMARDT,IMKPFT1,IMKPFT,I_FINAL,I_FINAL5.
REFRESH: IMARDHT,IMARDT,IMKPFT1,I_FINAL,I_FINAL5,IMKPFT.
ENDLOOP.
CLEAR: R_BUDAT.
REFRESH: R_BUDAT.
*end of changes for month.
ENDFORM. " getdata_fg_stock
*----
*
FORM MONAT_F4 *
*----
*
F4-Hilfe für Monat *
*----
*
FORM MONAT_F4.
DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF MF_DYNPFIELDS.
DATA: MF_RETURNCODE LIKE SY-SUBRC,
MF_MONAT LIKE ISELLIST-MONTH,
MF_HLP_REPID LIKE SY-REPID.
FIELD-SYMBOLS: .
Wert von Dynpro lesen
GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.
APPEND MF_DYNPFIELDS.
MF_HLP_REPID = SY-REPID.
DO 2 TIMES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = MF_HLP_REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = MF_DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 01
INVALID_DYNPROFIELD = 02
INVALID_DYNPRONAME = 03
INVALID_DYNPRONUMMER = 04
INVALID_REQUEST = 05
NO_FIELDDESCRIPTION = 06
UNDEFIND_ERROR = 07.
IF SY-SUBRC = 3.
Aktuelles Dynpro ist Wertemengenbild
MF_HLP_REPID = 'SAPLALDB'.
ELSE.
READ TABLE MF_DYNPFIELDS INDEX 1.
Unterstriche durch Blanks ersetzen
TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.
EXIT.
ENDIF.
ENDDO.
IF SY-SUBRC = 0.
Konvertierung ins interne Format
CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
EXPORTING
INPUT = MF_DYNPFIELDS-FIELDVALUE
IMPORTING
OUTPUT = MF_MONAT
EXCEPTIONS
ERROR_MESSAGE = 1.
IF MF_MONAT IS INITIAL.
Monat ist initial => Vorschlagswert aus akt. Datum ableiten
MF_MONAT = SY-DATLO(6).
ENDIF.
CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
EXPORTING
ACTUAL_MONTH = MF_MONAT
IMPORTING
SELECTED_MONTH = MF_MONAT
RETURN_CODE = MF_RETURNCODE
EXCEPTIONS
FACTORY_CALENDAR_NOT_FOUND = 01
HOLIDAY_CALENDAR_NOT_FOUND = 02
MONTH_NOT_FOUND = 03.
IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.
ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804
<MF_FELD> = MF_MONAT.
CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'
EXPORTING
INPUT = MF_MONAT
IMPORTING
OUTPUT = MF_DYNPFIELDS-FIELDVALUE.
COLLECT MF_DYNPFIELDS.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = MF_HLP_REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = MF_DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 01
INVALID_DYNPROFIELD = 02
INVALID_DYNPRONAME = 03
INVALID_DYNPRONUMMER = 04
INVALID_REQUEST = 05
NO_FIELDDESCRIPTION = 06
UNDEFIND_ERROR = 07. "<<== note 148804
ENDIF.
ENDIF.
ENDFORM. "MONAT_F4
*&----
*
*& Form get_month_dates
*&----
*
Calculating the Month Start & End Date
*----
*
FORM GET_MONTH_DATES.
IF M1 = 'X'.
FYEAR = P_SPMON+0(4).
MON = P_SPMON+4(2).
CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
R_BUDAT-SIGN = 'I'.
R_BUDAT-OPTION = 'BT'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = R_BUDAT-LOW
IMPORTING
E_DATE = R_BUDAT-HIGH.
APPEND R_BUDAT.
CLEAR S_BUDAT.
REFRESH S_BUDAT.
S_BUDAT-SIGN = 'I'.
S_BUDAT-OPTION = 'BT'.
S_BUDAT-LOW = R_BUDAT-LOW.
S_BUDAT-HIGH = R_BUDAT-HIGH.
APPEND S_BUDAT.
ELSE.
FYEAR = P_SPMON+0(4).
MON = P_SPMON+4(2).
CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
R_BUDAT-SIGN = 'I'.
R_BUDAT-OPTION = 'BT'.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
I_DATE = R_BUDAT-LOW
IMPORTING
E_DATE = R_BUDAT-HIGH.
APPEND R_BUDAT.
ENDIF.
ENDFORM. " get_month_dates
*&----
*
*& Form output_table_Check
*&----
*
checking for records for output
*----
*
FORM OUTPUT_TABLE_CHECK .
DESCRIBE TABLE I_FINALT LINES INDEX.
IF INDEX EQ 0.
MESSAGE I041 WITH TEXT-005.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. "OUTPUT_TABLE_CHECK
*&----
*
*& Form Z_TOP_OF_PAGE
*&----
*
for setting the details in the top of page *
*----
*
has no formal paramters *
*----
*
FORM Z_TOP_OF_PAGE.
DATA: V_MON(2),
V_YR(40),
V_FIN(18),
V_FIN1(48),
LOW(10),
HIGH(10).
V_MON = P_SPMON+4(2).
V_YR = P_SPMON+0(4).
FHEADER-TYP = 'H'.
FHEADER-INFO = 'Stock Register Report (FG Stock)'.
APPEND FHEADER.
CLEAR FHEADER.
*if m1 = 'X'.
CONCATENATE 'Month = ' v_mon '.' v_yr INTO v_fin.
fheader-typ = 'H'.
fheader-info = v_fin.
APPEND fheader.
CLEAR fheader.
*endif."prabhu on 18.5.5
IF D1 = 'X'.
CLEAR S_BUDAT.
LOOP AT S_BUDAT.
CONCATENATE S_BUDAT-LOW6(2) '/' S_BUDAT-LOW4(2) '/'
S_BUDAT-LOW+0(4) INTO LOW.
CONCATENATE S_BUDAT-HIGH6(2) '/' S_BUDAT-HIGH4(2) '/'
S_BUDAT-HIGH+0(4) INTO HIGH.
CONCATENATE 'Date = ' LOW ' - ' HIGH INTO V_FIN1.
FHEADER-TYP = 'H'.
FHEADER-INFO = V_FIN1.
APPEND FHEADER.
CLEAR FHEADER.
ENDLOOP.
ENDIF.
ENDFORM. " Z_TOP_OF_PAGE
*&----
*
*& Form Z_LAYOUT_SETTINGS
*&----
*
this is done for setting the properties for the layout of the *
grid *
*----
*
has no formal paramters *
*----
*
FORM Z_LAYOUT_SETTINGS.
FS_LAYO-ZEBRA = 'X'. " Output in Zebra pattern
FS_LAYO-DETAIL_POPUP = 'X'. " A popup window appears to give
FS_LAYO-DETAIL_TITLEBAR = TEXT-022.
FS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " Z_LAYOUT_SETTINGS
*&----
*
*& Form Z_ALV_EVENTS
*&----
*
This is used for handling the events TOP OF PAGE and the USER *
COMMAND event *
*----
*
has no formal paramters *
*----
*
FORM Z_ALV_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = FEVENTS[].
READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_TOPOFPAGE'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF.
READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_USER_COMMAND'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF.
ENDFORM. "Z_ALV_EVENTS
*&----
*
*& Form Z_CREATE_FIELD_CATALOG
*&----
*
here the field catalog is created for the primary list *
*----
*
no formal parameters *
*----
*
FORM Z_CREATE_FIELD_CATALOG.
for the Plant
FCAT-FIELDNAME = 'WERKS'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '000005'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Plant'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material Type
FCAT-FIELDNAME = 'MTART'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '000006'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'MatTyp'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material No.
FCAT-FIELDNAME = 'MATNR'.
FCAT-KEY = 'X'.
fcat-hotspot = 'X'.
FCAT-OUTPUTLEN = '000018'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Material'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Material Description
FCAT-FIELDNAME = 'MAKTX'.
FCAT-KEY = ''.
FCAT-OUTPUTLEN = '000040'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Description'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Unit of Measure
FCAT-FIELDNAME = 'MEINS'.
FCAT-KEY = ''.
FCAT-OUTPUTLEN = '03'.
FCAT-JUST = 'C'.
FCAT-SELTEXT_M = 'UOM'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'UNIT'.
APPEND FCAT.
CLEAR FCAT.
for the Plant
FCAT-FIELDNAME = 'MONTH'.
FCAT-KEY = 'X'.
FCAT-OUTPUTLEN = '08'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'MONTH'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'C'.
FCAT-DATATYPE = 'CHAR'.
APPEND FCAT.
CLEAR FCAT.
for the Opening Stock
FCAT-FIELDNAME = 'C_STK'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Opening Stock'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
fcat-do_sum = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Total Receipts
FCAT-FIELDNAME = 'TRECEP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Receipts'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Production
FCAT-FIELDNAME = 'PRODU'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Production'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Other Plant Receipts
FCAT-FIELDNAME = 'RECEP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Othr Plnt Recpts'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Sales Return
FCAT-FIELDNAME = 'SAL_RET'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Sales Return'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Total Dispatches
FCAT-FIELDNAME = 'TDISP'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Dispatches'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Distributor Dispatches
FCAT-FIELDNAME = 'CUSTMR'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Distr Dispatches/HLL'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Other Plants Dispatches
FCAT-FIELDNAME = 'OPLANT'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000020'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Othr Plnt Dispatches'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Material Transfer
FCAT-FIELDNAME = 'TRFSTK'.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'M.Transfer'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Transit Loss
FCAT-FIELDNAME = 'TRLOSS'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Transit Loss'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Warehouse Loss
FCAT-FIELDNAME = 'WHLOSS'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Warehouse Loss'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Total Loss
FCAT-FIELDNAME = 'TLOSS'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Total Loss'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
Closing Stock
FCAT-FIELDNAME = 'O_STK'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Closing Stock'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
fcat-do_sum = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
for the Other Plant Receipts
FCAT-FIELDNAME = 'OTHADJ'.
FCAT-HOTSPOT = ' '.
FCAT-OUTPUTLEN = '000016'.
FCAT-JUST = 'L'.
FCAT-SELTEXT_M = 'Othr Adjst'.
FCAT-DDICTXT = 'M'.
FCAT-INTTYPE = 'Q'.
FCAT-DATATYPE = 'QUAN'.
FCAT-DO_SUM = 'X'.
FCAT-JUST = 'R'.
FCAT-NO_ZERO = 'X'.
APPEND FCAT.
CLEAR FCAT.
ENDFORM. " Z_CREATE_FIELD_CATALOG
*&----
*
*& Form Z_REUSE_ALV_GRID_DISPLAY
*&----
*
here the function module REUSE_ALV_GRID_DISPLAY function module *
is called. The inputs given to it are as follows: *
W_REPID : contains the Report Name *
USER_COMMAND : is set as default *
FS_LAYO : Here the layout related properties are set *
FCAT : here the field catalog is create for the output *
fields *
FEXCLUDE : Some Application toolbar links are deactivated *
here *
FEVENTS : Here top of Page & User command events are defined*
IT_AFPO : It is the table which contains the data to be *
displayed in the output *
*----
*
has no formal paramters *
*----
*
FORM Z_REUSE_ALV_GRID_DISPLAY.
DATA: BEGIN OF I_MAKTX OCCURS 0,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF I_MAKTX,
V_TEMP(18).
IF NOT I_FINALT[] IS INITIAL.
SELECT MATNR
MAKTX
INTO TABLE I_MAKTX
FROM MAKT
FOR ALL ENTRIES IN I_FINALT
WHERE MAKT~MATNR = I_FINALT-MATNR.
ENDIF.
SORT I_MAKTX BY MATNR.
LOOP AT I_FINALT.
READ TABLE I_MAKTX WITH KEY MATNR = I_FINALT-MATNR
BINARY SEARCH.
IF SY-SUBRC = 0.
I_FINALT-MAKTX = I_MAKTX-MAKTX.
MODIFY I_FINALT.
ENDIF.
ENDLOOP.
SORT I_FINALT BY MATNR.
DELETE I_FINALT WHERE MATNR EQ ''.
DATA: LV_REPID LIKE SY-REPID.
LV_REPID = SY-REPID.
DATA: V_MATNR(18).
LOOP AT I_FINALT.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = I_FINALT-MATNR
IMPORTING
OUTPUT = V_MATNR.
I_FINALT-MATNR = V_MATNR.
MODIFY I_FINALT.
ENDLOOP.
SORT I_FINALT BY MATNR MONTH.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = LV_REPID
I_CALLBACK_USER_COMMAND = 'Z_USER_COMMAND'
IS_LAYOUT = FS_LAYO
IT_FIELDCAT = FCAT[]
IT_EXCLUDING = FEXC[]
IT_SORT = FSORT[]
I_DEFAULT = 'X'
I_SAVE = 'U'
IS_VARIANT = ALV_VARIANT
IT_EVENTS = FEVENTS[]
TABLES
T_OUTTAB = I_FINALT[].
ENDFORM. " Z_REUSE_ALV_GRID_DISPLAY
*&----
*
*& Form Z_TOPOFPAGE
*&----
*
This Subroutine is called Dynamically *
This is for creating the headings of the output fields *
*----
*
has no formal paramters *
*----
*
FORM Z_TOPOFPAGE. "#EC NEEDED
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = FHEADER[].
ENDFORM. " FORM Z_TOPOFPAGE
*&----
*
*& Form Z_USER_COMMAND
*&----
*
This Subroutine is called Dynamically *
if the user double clicks the Production Order Number or the *
Material Number, the Complete transaction details will be *
displayed *
*----
*
R_UCOMM *
RS_SELFIELD *
*----
*
FORM Z_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD. "#EC NEEDED
CHECK R_UCOMM = '&IC1'. "User Double Clicked on Some field
CHECK NOT RS_SELFIELD-VALUE IS INITIAL.
LOOP AT IMKPFT2.
PERFORM REMOVE_ZEROS USING IMKPFT2-MATNR
CHANGING IMKPFT2-MATNR1.
MODIFY IMKPFT2.
ENDLOOP.
SORT IMKPFT2 BY BUDAT MATNR WERKS.
CASE RS_SELFIELD-FIELDNAME.
WHEN 'MATNR'.
READ TABLE I_FINALT INDEX RS_SELFIELD-TABINDEX.
IF D1 = 'X' OR M1 ='X'.
LOOP AT IMKPFT2 WHERE MATNR1 = I_FINALT-MATNR AND
WERKS = I_FINALT-WERKS AND
( BUDAT0(4) EQ I_FINALT-MONTH0(4) AND
BUDAT4(2) EQ I_FINALT-MONTH5(2) ) .
MOVE IMKPFT2 TO T_FINAL.
APPEND T_FINAL.
CLEAR T_FINAL.
ENDLOOP.
ELSEIF Y1 = 'X'.
LOOP AT IMKPFT2 WHERE MATNR1 = I_FINALT-MATNR AND
WERKS = I_FINALT-WERKS AND
BUDAT IN S_BUDAT.
MOVE IMKPFT2 TO T_FINAL.
APPEND T_FINAL.
CLEAR T_FINAL.
ENDLOOP.
ENDIF.
SORT T_FINAL BY BUDAT MATNR WERKS.
PERFORM DISPLAY_ALV1 USING T_FINAL.
ENDCASE.
ENDFORM. " FORM Z_USER_COMMAND
*&----
*
*& Form ALV_F4
*&----
*
FORM ALV_F4.
ALV_VARIANT-REPORT = ALV_REPID.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = ALV_VARIANT
I_SAVE = 'A'
IMPORTING
ES_VARIANT = ALV_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ALV_DEF = ALV_VARIANT-VARIANT.
ENDIF.
ENDFORM. "alv_f4
*&----
*
*& Form ALV_INIT
*&----
*
FORM ALV_INIT.
CLEAR: ALV_KEYINFO, ALV_VARIANT, ALV_LAYOUT, ALV_PRINT.
CLEAR ALV_DEF.
ALV_REPID = SY-REPID.
CLEAR ALV_VARIANT.
ALV_VARIANT-REPORT = ALV_REPID.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = ALV_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
ALV_DEF = ALV_VARIANT-VARIANT.
MOVE ALV_VARIANT-VARIANT TO ALV_DEFAULT_VARIANT.
ENDIF.
Printing settings
ALV_LAYOUT-GET_SELINFOS = 'X'.
ALV_LAYOUT-GROUP_CHANGE_EDIT = 'X'.
SELECT SINGLE * FROM MMIM_REP_PRINT WHERE REPORT = SY-REPID.
IF SY-SUBRC = 0.
IF MMIM_REP_PRINT-SELINFO = 'X'.
ALV_PRINT-NO_PRINT_SELINFOS = ' '.
ELSE.
ALV_PRINT-NO_PRINT_SELINFOS = 'X'.
ENDIF.
IF MMIM_REP_PRINT-COVERPAGE = 'X'.
ALV_PRINT-NO_COVERPAGE = ' '.
ELSE.
ALV_PRINT-NO_COVERPAGE = 'X'.
ENDIF.
IF MMIM_REP_PRINT-LISTINFO = 'X'.
ALV_PRINT-NO_PRINT_LISTINFOS = ' '.
ELSE.
ALV_PRINT-NO_PRINT_LISTINFOS = 'X'.
ENDIF.
IF MMIM_REP_PRINT-GRIDCONTROL = 'X'.
ALV_DETAIL_FUNC = 'REUSE_ALV_GRID_DISPLAY'.
ELSE.
ALV_DETAIL_FUNC = 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
IF MMIM_REP_PRINT-COLOR = 'X'.
CLEAR ALV_COLOURIZE_FIELDS.
ELSE.
MOVE 'X' TO ALV_COLOURIZE_FIELDS.
ENDIF.
ELSE.
MOVE 'X' TO ALV_COLOURIZE_FIELDS.
ALV_PRINT-NO_PRINT_SELINFOS = 'X'.
ALV_PRINT-NO_COVERPAGE = ' '.
ALV_PRINT-NO_PRINT_LISTINFOS = 'X'.
ALV_DETAIL_FUNC = 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. "ALV_INIT
*----
*
*& Form AUTH_CHECK
*&----
*
for checking authorisations
*----
*
FORM AUTH_CHECK.
DATA: BEGIN OF I_AUTH OCCURS 0,
WERKS LIKE T001W-WERKS,
END OF I_AUTH.
SELECT WERKS
INTO TABLE I_AUTH
FROM T001W
WHERE WERKS IN S_WERKS.
LOOP AT I_AUTH.
AUTHORITY-CHECK OBJECT 'Z_PLNT_AUT'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD I_AUTH-WERKS.
IF SY-SUBRC NE 0 .
MESSAGE E398(00) WITH
'User' SY-UNAME 'not authorised for Plant' I_AUTH-WERKS.
ENDIF.
ENDLOOP.
ENDFORM. " AUTH_CHECK
*&----
*
*& Form VALIDITY_CHECK
*&----
*
text
*----
*
FORM VALIDITY_CHECK.
LOOP AT S_WERKS.
SELECT SINGLE * FROM T001W
WHERE WERKS = S_WERKS-LOW.
IF SY-SUBRC EQ 4 .
MESSAGE E398(00) WITH
'Plant' S_WERKS-LOW 'Does not Exist' .
ENDIF.
ENDLOOP .
ENDFORM. " VALIDITY_CHECK
*&----
*
*& Form alv_check
*&----
*
text
*----
*
FORM ALV_CHECK.
ALV_VARIANT-REPORT = ALV_REPID.
ALV_VARIANT-VARIANT = ALV_DEF.
IF NOT ALV_DEF IS INITIAL.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = ALV_VARIANT
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE E321(M7) WITH ALV_DEF ALV_REPID.
ENDIF. " IF sy-subrc <> 0.
ELSE.
the user wants no initial display variant
IF NOT ALV_DEFAULT_VARIANT IS INITIAL.
but the SAP-LIST-VIEWER will apply the existing
initial display variant / emerge warning 393 ?
CALL FUNCTION 'ME_CHECK_T160M'
EXPORTING
I_ARBGB = 'M7'
I_MSGNR = '393'
EXCEPTIONS
NOTHING = 0
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE W393(M7) WITH ALV_DEFAULT_VARIANT.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "alv_check
*&----
*
*& Form delete_empty_records
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM DELETE_EMPTY_RECORDS .
deleting the records with empty quantities
LOOP AT I_FINAL.
IF I_FINAL-O_STK EQ 0 AND
I_FINAL-TRECEP EQ 0 AND
I_FINAL-PRODU EQ 0 AND
I_FINAL-RECEP EQ 0 AND
I_FINAL-SAL_RET EQ 0 AND
I_FINAL-TDISP EQ 0 AND
I_FINAL-CUSTMR EQ 0 AND
I_FINAL-OPLANT EQ 0 AND
I_FINAL-TLOSS EQ 0 AND
I_FINAL-TRLOSS EQ 0 AND
I_FINAL-WHLOSS EQ 0 AND
I_FINAL-OTHADJ EQ 0 AND
I_FINAL-C_STK EQ 0.
DELETE I_FINAL.
CLEAR I_FINAL.
ENDIF.
MOVE-CORRESPONDING I_FINAL TO I_FINALT.
*For Month
IF Y1 NE 'X'.
CONCATENATE P_SPMON0(4) '.' P_SPMON4(2)
INTO I_FINALT-MONTH.
ELSE.
CONCATENATE P_SPMON+0(4) '.' '00'
INTO I_FINALT-MONTH.
ENDIF.
APPEND I_FINALT.
CLEAR I_FINALT.
ENDLOOP.
ENDFORM. " delete_empty_records
*&----
*
*& Form calculate_opening_stock
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM CALCULATE_OPENING_STOCK .
LOOP AT IMARDHT.
AT NEW MATNR.
I_FINAL-MATNR = IMARDHT-MATNR.
I_FINAL-WERKS = IMARDHT-WERKS.
I_FINAL-MEINS = IMARDHT-MEINS.
I_FINAL-MTART = MTART.
APPEND I_FINAL.
ENDAT.
ENDLOOP.
SORT I_FINAL BY WERKS MATNR.
LOOP AT I_FINAL.
READ TABLE IMARDHT WITH KEY MATNR = I_FINAL-MATNR
WERKS = I_FINAL-WERKS.
IF SY-SUBRC EQ 0.
IF D1 = 'X'.
OBAL = IMARDHT-LABST + IMARDHT-O_STK + IMARDHT-C_STK.
CBAL = IMARDHT-LABST + IMARDHT-C_STK .
ELSE.
OBAL = IMARDHT-LABST .
CBAL = IMARDHT-LABST + IMARDHT-C_STK .
ENDIF.
I_FINAL-C_STK = CBAL.
I_FINAL-O_STK = OBAL.
MODIFY I_FINAL.
ENDIF.
ENDLOOP.
LOOP AT I_FINAL.
LOOP AT I_FINAL5 WHERE MATNR = I_FINAL-MATNR AND
WERKS = I_FINAL-WERKS.
I_FINAL-PRODU = I_FINAL-PRODU + I_FINAL5-PRODU.
I_FINAL-RECEP = I_FINAL-RECEP + I_FINAL5-RECEP.
I_FINAL-SAL_RET = I_FINAL-SAL_RET + I_FINAL5-SAL_RET.
I_FINAL-CUSTMR = I_FINAL-CUSTMR + I_FINAL5-CUSTMR.
I_FINAL-OPLANT = I_FINAL-OPLANT + I_FINAL5-OPLANT.
I_FINAL-WHLOSS = I_FINAL-WHLOSS + I_FINAL5-WHLOSS.
I_FINAL-TRLOSS = I_FINAL-TRLOSS + I_FINAL5-TRLOSS.
I_FINAL-TRFSTK = I_FINAL-TRFSTK + I_FINAL5-TRFSTK.
I_FINAL-OTHADJ = I_FINAL-OTHADJ + I_FINAL5-OTHADJ.
MODIFY I_FINAL.
ENDLOOP.
*----
Total Receipts----
*
I_FINAL-TRECEP = I_FINAL-PRODU
+ I_FINAL-RECEP
+ I_FINAL-SAL_RET.
*----
Total Dispatches----
*
I_FINAL-TDISP = I_FINAL-CUSTMR
+ I_FINAL-OPLANT.
*----
Total Loss----
*
I_FINAL-TLOSS = I_FINAL-TRLOSS
+ I_FINAL-WHLOSS.
MODIFY I_FINAL.
ENDLOOP.
ENDFORM. " calculate_opening_stock
*&----
*
*& Form update_non_transaction_itms
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM UPDATE_NON_TRANSACTION_ITMS .
Pushing NON TRANSACTION ITEMS TO i_final table
LOOP AT IMARDHT.
READ TABLE I_FINAL WITH KEY MATNR = IMARDHT-MATNR
WERKS = IMARDHT-WERKS .
IF SY-SUBRC NE 0.
CLEAR I_FINAL. "Added by manisha for correction
I_FINAL-MATNR = IMARDHT-MATNR.
I_FINAL-WERKS = IMARDHT-WERKS.
I_FINAL-SPMON = P_SPMON.
I_FINAL-MTART = MTART.
I_FINAL-C_STK = IMARDHT-LABST + IMARDHT-C_STK.
I_FINAL-O_STK = I_FINAL-C_STK.
I_FINAL-MEINS = IMARDHT-MEINS.
APPEND I_FINAL.
CLEAR I_FINAL.
ENDIF.
ENDLOOP.
ENDFORM. " update_non_transaction_itms
*&----
*
*& Form get_records_from_DB
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM GET_RECORDS_FROM_DB .
DATA: WA_MTART LIKE MARA-MTART .
DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
DATA: I_MARDH2 LIKE I_MARDH1 OCCURS 0 WITH HEADER LINE.
added by prabhu .
SELECT MATNR MTART MEINS FROM MARA
INTO CORRESPONDING FIELDS OF TABLE I_MARA
WHERE MATNR IN S_MATNR AND
MTART = 'FERT'.
*added by prabu for performance.
SORT I_MARA BY MATNR.
DELETE ADJACENT DUPLICATES FROM I_MARA COMPARING MATNR.
SORT I_MARA BY MATNR.
end of changes by prabhu for CPO.
SELECT BWART SHKZG VZBEW
FROM YW2_STKMOVEMENTS
INTO TABLE I_STKMVMNTS.
Getting the Stocks from the MARD table for the Previous Months
for Slow Moving Materials
SELECT MARD~MATNR
MARD~WERKS
MARD~LGORT
MARD~LABST
MARD~INSME
MARD~EINME "+
MARD~SPEME "+
MARD~RETME "-
FROM MARD
INTO CORRESPONDING FIELDS OF TABLE I_MARD
FOR ALL ENTRIES IN I_MARA
WHERE MARD~MATNR EQ I_MARA-MATNR
AND MARD~WERKS IN S_WERKS
AND MARD~LGORT IN S_LGORT.
added by prabhu for CPO.
SORT I_MARD BY MATNR.
LOOP AT I_MARD.
READ TABLE I_MARA WITH KEY MATNR = I_MARD-MATNR.
IF SY-SUBRC NE 0.
DELETE I_MARD.
ELSE.
I_MARD-MEINS = I_MARA-MEINS.
MODIFY I_MARD.
ENDIF.
ENDLOOP.
getting the details from the MKPF & MSEG table
IF NOT I_MARD[] IS INITIAL.
SELECT MKPF~MBLNR
MKPF~MJAHR
MKPF~VGART
MKPF~BUDAT
MSEG~ZEILE
MSEG~BWART
MSEG~XAUTO
MSEG~MATNR
MSEG~WERKS
MSEG~LGORT
MSEG~SHKZG
MSEG~MENGE
MSEG~MEINS
FROM MKPF AS MKPF INNER JOIN
MSEG AS MSEG
ON MKPFMBLNR = MSEGMBLNR
AND MKPFMJAHR = MSEGMJAHR
INTO CORRESPONDING FIELDS OF TABLE I_MKPF
FOR ALL ENTRIES IN I_MARD
WHERE
MKPF~BUDAT GE S_BUDAT-LOW
AND MSEG~MATNR EQ I_MARD-MATNR
AND MSEG~WERKS EQ I_MARD-WERKS
AND MSEG~LGORT NE ''.
ENDIF.
ENDFORM. " get_records_from_DB
*&----
*
*& Form process_movements
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM PROCESS_MOVEMENTS .
DATA: WA_MAKTX LIKE MAKT-MAKTX.
LOOP AT IMKPFT WHERE BUDAT IN S_BUDAT.
IF IMKPFT-SHKZG = 'S'.
IMKPFT-MENGE = IMKPFT-MENGE * ( -1 ).
MODIFY IMKPFT.
ELSE.
ENDIF.
ENDLOOP.
LOOP AT IMKPFT WHERE BUDAT IN S_BUDAT.
I_FINAL5-WERKS = IMKPFT-WERKS.
I_FINAL5-LGORT = IMKPFT-LGORT.
I_FINAL5-MATNR = IMKPFT-MATNR.
GET SIGN.
READ TABLE I_STKMVMNTS WITH KEY BWART = IMKPFT-BWART
SHKZG = IMKPFT-SHKZG.
IF SY-SUBRC = 0.
IF I_STKMVMNTS-VZBEW = '+'.
I_FINAL5-MENGE = IMKPFT-MENGE .
ELSE.
I_FINAL5-MENGE = IMKPFT-MENGE * ( -1 ).
ENDIF.
not to consider movements not found in y table
ELSE.
i_final5-menge = imkpft-menge.
CLEAR I_FINAL5-MENGE.
ENDIF."prabhu.
CASE IMKPFT-BWART.
PRODUCTION - 1
WHEN '101' OR '102' .
I_FINAL5-PRODU = I_FINAL5-PRODU + I_FINAL5-MENGE.
SALES RETURNS - 3
WHEN '653' OR '654'.
I_FINAL5-SAL_RET = I_FINAL5-SAL_RET + I_FINAL5-MENGE.
CUSTOMER DISPATCHES - 5
WHEN '624' OR '625' OR '601' OR '602' OR '951' OR '952'
OR '645' OR '646' .
I_FINAL5-CUSTMR = I_FINAL5-CUSTMR + I_FINAL5-MENGE.
OTHER PLANT DISPATCHES - 6 / RECEIPTS - 2
WHEN '641' OR '941' OR '643'.
IF IMKPFT-SHKZG = 'H'.
I_FINAL5-OPLANT = I_FINAL5-OPLANT + I_FINAL5-MENGE.
ELSE.
I_FINAL5-RECEP = I_FINAL5-RECEP + I_FINAL5-MENGE.
ENDIF.
WHEN '642' OR '942' OR '644'.
IF IMKPFT-SHKZG = 'S'.
I_FINAL5-OPLANT = I_FINAL5-OPLANT + I_FINAL5-MENGE.
ELSE.
I_FINAL5-RECEP = I_FINAL5-RECEP + I_FINAL5-MENGE.
ENDIF.
TRANSIT LOSS
WHEN '251' OR '252' OR 'Z51' OR 'Z52'.
I_FINAL5-TRLOSS = I_FINAL5-TRLOSS + I_FINAL5-MENGE.
WAREHOUSE LOSS
WHEN '551' OR '552' OR 'Y51' OR 'Y52' OR '555' OR '556'.
I_FINAL5-WHLOSS = I_FINAL5-WHLOSS + I_FINAL5-MENGE.
TRANSFER STOCK
WHEN '309' OR '310'.
I_FINAL5-TRFSTK = I_FINAL5-TRFSTK + I_FINAL5-MENGE.
OTHER ADJUSTMENTS
WHEN OTHERS.
I_FINAL5-OTHADJ = I_FINAL5-OTHADJ + I_FINAL5-MENGE.
ENDCASE.
Added by prabhu on 12.3.05 CPO.
*read table i_final5 with key matnr = imkpft-matnr.
*if sy-subrc ne 0.
I_FINAL5-MEINS = IMKPFT-MEINS.
I_FINAL5-BUDAT = IMKPFT-BUDAT.
APPEND I_FINAL5.
CLEAR I_FINAL5.
*endif.
ENDLOOP.
SORT I_FINAL5 BY WERKS MATNR BUDAT ASCENDING.
ENDFORM. " process_movements
*----
*
*----
-
*&----
*
*& Form get_plant_distinction
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM GET_PLANT_DISTINCTION .
SELECT PPLNT WPLNT FROM YPLNT
INTO CORRESPONDING FIELDS OF TABLE I_YPLNT WHERE
PPLNT IN S_WERKS.
SELECT PPLNT WPLNT FROM YPLNT
APPENDING CORRESPONDING FIELDS OF TABLE I_YPLNT WHERE
WPLNT IN S_WERKS.
ENDFORM. " get_plant_distinction
*
*----
*
*----
-
*&----
*
*& Form month_wise
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM MONTH_WISE .
IF Y1 = ''.
LOOP AT IMKPFT WHERE (
( BUDAT4(2) GT P_SPMON4(2) AND
MJAHR EQ P_SPMON+0(4) ) OR
( BUDAT4(2) LE P_SPMON4(2) AND
MJAHR NE P_SPMON+0(4) ) OR
( BUDAT4(2) GE P_SPMON4(2) AND
MJAHR NE P_SPMON+0(4) ) ).
IMKPFT1-MJAHR = IMKPFT-MJAHR.
IMKPFT1-MBLNR = IMKPFT-MBLNR.
IMKPFT1-BUDAT = IMKPFT-BUDAT.
IMKPFT1-VGART = IMKPFT-VGART.
IMKPFT1-BWART = IMKPFT-BWART.
IMKPFT1-MATNR = IMKPFT-MATNR.
IMKPFT1-WERKS = IMKPFT-WERKS.
IMKPFT1-LGORT = IMKPFT-LGORT.
IMKPFT1-MENGE = IMKPFT-MENGE.
IMKPFT1-MEINS = IMKPFT-MEINS.
IMKPFT1-XAUTO = IMKPFT-XAUTO.
IMKPFT1-SHKZG = IMKPFT-SHKZG.
APPEND IMKPFT1.
CLEAR IMKPFT1.
ENDLOOP.
ELSE.
LOOP AT IMKPFT WHERE BUDAT IN S_BUDAT1.
IMKPFT1-MJAHR = IMKPFT-MJAHR.
IMKPFT1-MBLNR = IMKPFT-MBLNR.
IMKPFT1-BUDAT = IMKPFT-BUDAT.
IMKPFT1-VGART = IMKPFT-VGART.
IMKPFT1-BWART = IMKPFT-BWART.
IMKPFT1-MATNR = IMKPFT-MATNR.
IMKPFT1-WERKS = IMKPFT-WERKS.
IMKPFT1-LGORT = IMKPFT-LGORT.
IMKPFT1-MENGE = IMKPFT-MENGE.
IMKPFT1-MEINS = IMKPFT-MEINS.
IMKPFT1-XAUTO = IMKPFT-XAUTO.
IMKPFT1-SHKZG = IMKPFT-SHKZG.
APPEND IMKPFT1.
CLEAR IMKPFT1.
ENDLOOP.
ENDIF.
SORT IMKPFT1 BY WERKS MATNR BUDAT BWART ASCENDING.
LOOP AT IMARDT.
AT NEW MATNR .
IMARDHT-MATNR = IMARDT-MATNR.
IMARDHT-WERKS = IMARDT-WERKS.
APPEND IMARDHT.
CLEAR IMARDHT.
ENDAT.
ENDLOOP.
LOOP AT IMARDHT.
LOOP AT IMARDT WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS.
IMARDHT-MATNR = IMARDT-MATNR.
IMARDHT-WERKS = IMARDT-WERKS.
IMARDHT-LGORT = IMARDT-LGORT.
IMARDHT-LABST = IMARDT-LABST + IMARDT-EINME +
IMARDT-SPEME + IMARDT-RETME + IMARDHT-LABST +
IMARDT-INSME.
IMARDHT-MEINS = IMARDT-MEINS.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
sorting the data by matnr werks lgort.
SORT IMARDHT BY WERKS LGORT MATNR.
to get closing stock.
SORT IMKPFT1 BY MATNR.
DATA: BEGIN OF DATA OCCURS 0,
LGORT LIKE MARD-LGORT,
MATNR LIKE MARD-MATNR,
LABST LIKE MARD-LABST,
WERKS LIKE MARD-WERKS,
END OF DATA.
LOOP AT IMARDT.
AT NEW MATNR.
DATA-LGORT = IMARDT-LGORT.
DATA-MATNR = IMARDT-MATNR.
DATA-WERKS = IMARDT-WERKS.
APPEND DATA.
CLEAR DATA.
ENDAT.
ENDLOOP.
SORT IMKPFT1 BY MATNR SHKZG.
LOOP AT IMKPFT1.
IF IMKPFT1-SHKZG = 'S'.
IMKPFT1-MENGE = IMKPFT1-MENGE * ( -1 ).
MODIFY IMKPFT1.
ELSE.
ENDIF.
ENDLOOP.
SORT IMKPFT1 BY MATNR BUDAT.
LOOP AT IMARDHT.
LOOP AT IMKPFT1 WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS .
IMARDHT-LABST = IMARDHT-LABST + IMKPFT1-MENGE.
MODIFY IMARDHT.
ENDLOOP.
MODIFY IMARDHT.
ENDLOOP.
SORT IMKPFT BY MATNR BUDAT.
IF Y1 =''.
DELETE IMKPFT WHERE
( BUDAT4(2) NE P_SPMON4(2) OR
( BUDAT4(2) EQ P_SPMON4(2) AND
MJAHR NE P_SPMON+0(4) ) ) OR
( BUDAT+4(2) GT P_SPMON AND
MJAHR NE P_SPMON+0(4) ) .
ELSE.
DELETE IMKPFT WHERE BUDAT IN S_BUDAT1.
ENDIF.
*for Closing stock.
LOOP AT IMKPFT.
IF IMKPFT-SHKZG = 'S'.
IMKPFT-MENGE = IMKPFT-MENGE * ( -1 ).
MODIFY IMKPFT.
ENDIF.
ENDLOOP.
IF D1 = 'X'.
LOOP AT IMARDHT.
LOOP AT IMKPFT WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS.
IMARDHT-C_STK = IMARDHT-C_STK + IMKPFT-MENGE.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
*for day cal only on 19.4.5
LOOP AT IMARDHT.
LOOP AT IMKPFT WHERE MATNR = IMARDHT-MATNR AND
BUDAT IN S_BUDAT AND
WERKS = IMARDHT-WERKS .
IMARDHT-O_STK = IMARDHT-O_STK - IMKPFT-MENGE.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
ELSE.
LOOP AT IMARDHT.
LOOP AT IMKPFT WHERE MATNR = IMARDHT-MATNR AND
WERKS = IMARDHT-WERKS.
IMARDHT-C_STK = IMARDHT-C_STK + IMKPFT-MENGE.
MODIFY IMARDHT.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM. " month_wise
*&----
*
*& Form z_alv_events1
*&----
*
text
*----
*
FORM Z_ALV_EVENTS1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = FEVENTS1[].
READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_TOPOFPAGE'.
fevents-form = 'Z_LIST'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS.
ENDIF. " IF SY-SUBRC = 0.
Drill down
READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
FEVENTS-FORM = 'Z_USER_COMMAND1'.
MODIFY FEVENTS INDEX SY-TABIX.
CLEAR FEVENTS1.
ENDIF.
ENDFORM. "Z_ALV_EVENTS
Drill Down In Alv
FORM Z_USER_COMMAND1 USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD. "#EC NEEDED
*sel_tab_field type slis_sel_tab_field
CHECK R_UCOMM = '&IC1'. "User Double Clicked on Some field
CHECK NOT RS_SELFIELD-VALUE IS INITIAL.
CASE RS_SELFIELD-FIELDNAME.
ENDCASE.
ENDFORM. "Z_USER_COMMAND
*&----
*
*& Form display_alv
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM DISPLAY_ALV1 USING P_T_FINAL.
DATA:
LV_REPID LIKE SY-REPID.
CLEAR: FCAT1.
PERFORM CREATE_FIELDCAT1.
PERFORM Z_ALV_EVENTS1.
LV_REPID = SY-REPID.
SORT T_FINAL BY MATNR BUDAT WERKS .
DATA: W_MATNR(18).
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = LV_REPID
I_CALLBACK_USER_COMMAND = 'Z_USER_COMMAND'
IS_LAYOUT = FS_LAYO1
IT_FIELDCAT = FCAT1[]
I_DEFAULT = 'X'
I_SAVE = 'U'
IT_EVENTS = FEVENTS1[]
TABLES
T_OUTTAB = T_FINAL[].
CLEAR: FCAT1,T_FINAL.
REFRESH: FCAT1,T_FINAL.
ENDFORM. " display_alv
*&----
*
*& Form create_fieldcat
*&----
*
Create a field catalogue for Alv Report
*----
*
--> p1 text
<-- p2 text
*----
*
FORM CREATE_FIELDCAT1 .
for the Material No.
FCAT1-FIELDNAME = 'MATNR'.
FCAT1-KEY = 'X'.
fcat-hotspot = 'X'.
FCAT1-OUTPUTLEN = '00006'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Material'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the Plant
FCAT1-FIELDNAME = 'WERKS'.
FCAT1-KEY = 'X'.
FCAT1-OUTPUTLEN = '000005'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Plant'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the MatDoc
FCAT1-FIELDNAME = 'MBLNR'.
FCAT1-OUTPUTLEN = '000010'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Mat.Doc'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the Date
FCAT1-FIELDNAME = 'BUDAT'.
FCAT1-OUTPUTLEN = '000010'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Mat.Date'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'D'.
FCAT1-DATATYPE = 'DATS'.
APPEND FCAT1.
CLEAR FCAT1.
for the MOVETYPE
FCAT1-FIELDNAME = 'BWART'.
FCAT1-OUTPUTLEN = '000003'.
FCAT1-JUST = 'L'.
FCAT1-SELTEXT_M = 'Move.TyPE'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'C'.
FCAT1-DATATYPE = 'CHAR'.
APPEND FCAT1.
CLEAR FCAT1.
for the MOVETYPE
FCAT1-FIELDNAME = 'MENGE'.
FCAT1-OUTPUTLEN = '000013'.
FCAT1-JUST = 'R'.
FCAT1-SELTEXT_M = 'Move.TyPE'.
FCAT1-DDICTXT = 'M'.
FCAT1-INTTYPE = 'Q'.
FCAT1-DATATYPE = 'QUAN'.
APPEND FCAT1.
CLEAR FCAT1.
ENDFORM. " create_fieldcat
**&----
-
**
**& Form remove_zeros
**&----
-
**
text
**----
-
**
-->P_I_VBAK_DETAIL_MATNR text
<--P_I_VBAK_DETAIL_MATNR text
**----
-
*
FORM REMOVE_ZEROS USING P_IMKPFT2-MATNR
CHANGING P_IMKPFT2-MATNR1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = IMKPFT2-MATNR
IMPORTING
OUTPUT = IMKPFT2-MATNR1.
ENDFORM. " remove_zeros
‎2008 Apr 16 1:08 PM
Hi,
Please refer the simple alv program.
*&---------------------------------------------------------------------*
*& Report ZDEMO_ALVGRID *
*& *
*&---------------------------------------------------------------------*
*& *
*& Example of a simple ALV Grid Report *
*& ................................... *
*& *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
*&---------------------------------------------------------------------*
REPORT zdemo_alvgrid .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
*----------------
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
************************************************************************
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
form build_fieldcatalog.
* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you more control of the final product.
* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
* I.e. Field type may be required in-order for
* the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
* fieldcatalog-do_sum = 'X'.
* fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-do_sum = 'X'. "Display column total
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
* gd_layout-totals_only = 'X'.
* gd_layout-f2code = 'DISP'. "Sets fcode for when double
* "click(press f2)
* gd_layout-zebra = 'X'.
* gd_layout-group_change_edit = 'X'.
* gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* Display report using ALV grid
*----------------------------------------------------------------------*
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
* i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
* i_callback_user_command = 'USER_COMMAND'
* i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
* it_special_groups = gd_tabgroup
* IT_EVENTS = GT_XEVENTS
i_save = 'X'
* is_variant = z_template
tables
t_outtab = it_ekko
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. " DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
form data_retrieval.
select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into table it_ekko.
endform. " DATA_RETRIEVAL
Thanks,
Sriram Ponna.
‎2008 Apr 16 1:11 PM
‎2008 Apr 16 1:21 PM
Hi
Try in this link.
[http://abapprogramming.blogspot.com/search/label/ABAP%20REPORTS%20%20SAMPLE%20CODES]