Friday, December 22, 2006

Example Report

REPORT ZMMR7018
NO STANDARD PAGE HEADING
LINE-SIZE 132
LINE-COUNT 65(0)
MESSAGE-ID ZMM.
*-----------------------------------------------------------------------
* PROGRAM SPECIFICATION *
*----------------------------------------------------------------------*
* Programming Date :
* *
* Report Title : Issue Record file

* Description : This program creates a report,which list
* out all the materials issued to a service
* order with the issued qty and outstanding
* well qty.This report include planned issued as
* as unplanned issued.For unplanned issued,
* reservation no, required qty, date raised,
* qty duesout info will not be available.
*
*
* INPUT:
* Logical Database: None
* Database tables : mesg,mkpf,mara,makt,ausp,resb.
* Tables : None
*----------------------------------------------------------------------*
*SELECTION:
* Select-options : None.
* Parameters : Order like aufk-aufnr. " For Order no.
*----------------------------------------------------------------------*
*PROCESS:
* Planned issued to service order
* 1. User will enter the servie order no. to execute the report.
* 2. Select all the reservation items from RESB table using the service
* order number. There will be only one reservation no. as one service
* order can generate one reservation only.
* 3. Access the selected records sequentially. With the Order No.,
* reservation no., material code and reservation item no. access
* MSEG table, pick up records for MVT 261 and 262.
* 4. Subtract the issued quantity for records with mvmnt 261 by return
* quantity for records with mvmnt type 262.
* 5. If the item was issued from consignment stock, update the customer
* issue field else update the ST Elect issue.
* 6. Repeat step 3 to 5 until all selected records are processed.
*
* Unplanned issued to service order
* 7. With the input service order no., access MSEG table, select records
* with mvmnt type 261 and 262, reservation no is blank.
* 8. Sort the selected records by material code, special stock
* indicator and movement type.
* 9. Access the selected records sequentially.
* 10. Calculate the unplanned issue qty for an item from ST Elect stock
* to a service order, by subtracting issued qty for records with
* mvmnt 261 by returned qty for records with mvmnt 262 and special
* stock indicator equal to blank.
* 11. Calculate the unplanned issue qty for an item from Mindef stock
* to a service order, by subtracting issued qty for records with
* mvmnt 261 by returned qty for records with mvmnt 262 and special
* stock indicator equal to K.
* 12. Repeat step 8 to step 10 until all records have been proessed.
* 13. Output report as the specified format.
*
* Output:
* Database Tables : None.
* Dataset Name : None.
* Report : Issue record file
* Sort Fields : Reservation No., Desc, Matl code, Date raised
* Page Breaks : None
*----------------------------------------------------------------------*
* Modification Number :
* Analyst : *
* Specification Date : DD.MM.YYYY *
* Programmer :
* Programming Date : *
* Description : Issue Record File
*
*-----------------------------------------------------------------------
*----------------------------------------------------------------------*
* TABLES AND DATA DECLARATION *
*----------------------------------------------------------------------*
TABLES : MKPF, " Material Document - Header detail
MSEG, " Material Document - Item Detail
MARA, " Material master : General data
MAKT, " Material description
AUSP, " Characteristics Values
RESB. " Reservation/dependent requirements

DATA : C_PLAND TYPE C, " Planned issue indicator
C_UNPLND TYPE C, " Unplanned issue indicator
P_ENMNG LIKE RESB-ENMNG, " Issued qty. - Total
P_ENMNGU LIKE RESB-ENMNG, " Issued qty. - Total
P_MENGE LIKE MSEG-MENGE, " ST Elect issue qty.
P_MENGEU LIKE MSEG-MENGE, " ST Elect issue qty.
P_MENGK LIKE MSEG-MENGE, " Mindef vendor consignment issue qty.
P_MENGKU LIKE MSEG-MENGE. " Mindef vendor consignment issue qty.
*----------------------------------------------------------------------*
* Internal Table Declaration *
*----------------------------------------------------------------------*
DATA : BEGIN OF ITAB OCCURS 0,
AUFNR LIKE RESB-AUFNR, " Service order number
RSNUM LIKE RESB-RSNUM, " Reservation number
RSPOS LIKE RESB-RSPOS, " Reservation item no.
MATNR LIKE MSEG-MATNR, " Material code
BDTER LIKE RESB-BDTER, " Date raised
NSN LIKE CAWN-ATWRT, " Nato serial number
MFRPN LIKE MARA-MFRPN, " Manufacturer part number
MAKTX LIKE MAKT-MAKTX, " Material description
PDUES LIKE RESB-ENMNG, " Qty. Outstanding
ENMNG LIKE RESB-ENMNG, " Issued qty.
BDMNG LIKE RESB-BDMNG, " Requirements quantity
BWART LIKE MSEG-BWART, " Movement type
MENGE1 LIKE MSEG-MENGE, " ST Elect issue qty. mvmnt type 261
MENGE2 LIKE MSEG-MENGE, " ST Elect issue qty. mvmnt type 262
MENGK1 LIKE MSEG-MENGE, " Mindef consignment issue qty. - 261
MENGK2 LIKE MSEG-MENGE. " Mindef consignment issue qty. - 262
DATA : END OF ITAB.

DATA : BEGIN OF ITAB1 OCCURS 0,
AUFNR LIKE RESB-AUFNR, " Service order number
RSNUM LIKE RESB-RSNUM, " Reservation number
RSPOS LIKE RESB-RSPOS, " Reservation item no.
MATNR LIKE MSEG-MATNR, " Material code
NSN LIKE CAWN-ATWRT, " Nato serial number
MFRPN LIKE MARA-MFRPN, " Manufacturer part number
MAKTX LIKE MAKT-MAKTX, " Material description
BDTER LIKE RESB-BDTER, " Date raised
BWART LIKE MSEG-BWART, " Movement type
MENGEU1 LIKE MSEG-MENGE, " ST Elect issue qty. mvmnt type 261
MENGEU2 LIKE MSEG-MENGE, " ST Elect issue qty. mvmnt type 262
MENGKU1 LIKE MSEG-MENGE, " Mindef consignment issue qty. - 261
MENGKU2 LIKE MSEG-MENGE. " Mindef consignment issue qty. - 262
DATA : END OF ITAB1.

DATA: BEGIN OF REC.
INCLUDE STRUCTURE ITAB.
DATA: END OF REC.

DATA: BEGIN OF REC1.
INCLUDE STRUCTURE ITAB1.
DATA: END OF REC1.

DATA: IMAKT LIKE MAKT OCCURS 0 WITH HEADER LINE,
IMARA LIKE MARA OCCURS 0 WITH HEADER LINE,
IRESB LIKE RESB OCCURS 0 WITH HEADER LINE,
IMSEG LIKE MSEG OCCURS 0 WITH HEADER LINE.
*----------------------------------------------------------------------*
* SELECTION SCREEN *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK1
WITH FRAME TITLE TEXT-001.
PARAMETERS : P_AUFNR LIKE AUFK-AUFNR OBLIGATORY. " Service order no.
SELECTION-SCREEN END OF BLOCK BLK1.

AT SELECTION-SCREEN.
SELECT SINGLE * FROM MSEG WHERE AUFNR = P_AUFNR.
IF SY-SUBRC NE 0.
MESSAGE E201 WITH P_AUFNR. " No GI document for Order no.
ENDIF.
CLEAR C_PLAND.
SELECT SINGLE * FROM RESB WHERE AUFNR = P_AUFNR.
IF SY-SUBRC = 0.
C_PLAND = 'Y'. " planned issue indicator
ENDIF.
*----------------------------------------------------------------------*
* START OF SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
SELECT * FROM MSEG INTO TABLE IMSEG
WHERE AUFNR = P_AUFNR
AND ( BWART = '261' OR BWART = '262' ).

*/ Selecting planned issue data from tables RESB, MSEG.
IF C_PLAND EQ 'Y'.
PERFORM GET_PLANNED_ISSUE_DATA.
ENDIF.
*/ Selecting unplanned issue data from table MSEG.
PERFORM GET_UNPLANNED_ISSUE_DATA.

SELECT * FROM MAKT INTO TABLE IMAKT WHERE SPRAS = 'E'
ORDER BY MATNR.
SELECT * FROM MARA INTO TABLE IMARA ORDER BY MATNR.

LOOP AT ITAB.
CLEAR IMAKT.
READ TABLE IMAKT WITH KEY MATNR = ITAB-MATNR BINARY SEARCH.
MOVE IMAKT-MAKTX TO ITAB-MAKTX. " Material description

CLEAR IMARA.
READ TABLE IMARA WITH KEY MATNR = ITAB-MATNR BINARY SEARCH.
MOVE IMARA-MFRPN TO ITAB-MFRPN. " Manufacturer part no.

PERFORM GET_NSN_DATA USING ITAB-MATNR
CHANGING ITAB-NSN. " Nato Serial Number

MODIFY ITAB.
CLEAR ITAB.
ENDLOOP.
LOOP AT ITAB1.
CLEAR IMAKT.
READ TABLE IMAKT WITH KEY MATNR = ITAB1-MATNR BINARY SEARCH.
MOVE IMAKT-MAKTX TO ITAB1-MAKTX. " Material description

CLEAR IMARA.
READ TABLE IMARA WITH KEY MATNR = ITAB1-MATNR BINARY SEARCH.
MOVE IMARA-MFRPN TO ITAB1-MFRPN. " Manufacturer part no.

PERFORM GET_NSN_DATA USING ITAB1-MATNR
CHANGING ITAB1-NSN. " Nato Serial Number

MODIFY ITAB1.
CLEAR ITAB1.
ENDLOOP.

*----------------------------------------------------------------------*
* END OF SELECTION *
*----------------------------------------------------------------------*
END-OF-SELECTION.
PERFORM PRINT_REPORT.
PERFORM PRINT_FOOTER.

TOP-OF-PAGE.
PERFORM PRINT_TITLE.
PERFORM PRINT_HEADER.
*&---------------------------------------------------------------------*
*& Form GET_PLANNED_ISSUE_DATA
*&---------------------------------------------------------------------*
* Selecting values from tables MSEG and RESB
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_PLANNED_ISSUE_DATA.
SELECT * FROM RESB INTO TABLE IRESB WHERE AUFNR = P_AUFNR
AND ( BWART = '261' OR BWART = '262' )
AND XLOEK NE 'X'.

LOOP AT IRESB.
CLEAR IMSEG.
*/ checking planned goods issue against reservation number.
LOOP AT IMSEG
WHERE RSNUM = IRESB-RSNUM
AND RSPOS = IRESB-RSPOS.
*/ Checking for issue from vendor consignment stock.
IF IMSEG-SOBKZ EQ 'K'.
*/ Checking for issue movement type 261 and reversal mvmt 262.
CASE IMSEG-BWART.
WHEN '261'.
ADD IMSEG-MENGE TO ITAB-MENGK1.
WHEN '262'.
ADD IMSEG-MENGE TO ITAB-MENGK2.
ENDCASE.
ELSE.
CASE IMSEG-BWART.
WHEN '261'.
ADD IMSEG-MENGE TO ITAB-MENGE1.
WHEN '262'.
ADD IMSEG-MENGE TO ITAB-MENGE2.
ENDCASE.
ENDIF.
ENDLOOP.
ITAB-PDUES = IRESB-BDMNG - IRESB-ENMNG.
ITAB-BDTER = IRESB-BDTER.
ITAB-ENMNG = IRESB-ENMNG.
ITAB-MATNR = IRESB-MATNR.
ITAB-RSNUM = IRESB-RSNUM.
ITAB-RSPOS = IRESB-RSPOS.
APPEND ITAB.CLEAR ITAB.
ENDLOOP.
ENDFORM. " GET_PLANNED_ISSUE_DATA
*&---------------------------------------------------------------------*
*& Form GET_UNPLANNED_ISSUE_DATA
*&---------------------------------------------------------------------*
FORM GET_UNPLANNED_ISSUE_DATA.
LOOP AT IMSEG
WHERE RSNUM IS INITIAL
AND RSPOS IS INITIAL.
*/ Setting unplanned issue indicator.
IF SY-SUBRC = 0.
MOVE 'Y' TO C_UNPLND.
ENDIF.
*/ Checking for issue from vendor consignment stock.
IF IMSEG-SOBKZ EQ 'K'.
*/ Checking for issue movement type 261 and reversal mvmt 262.
CASE IMSEG-BWART.
WHEN '261'.
MOVE IMSEG-MENGE TO ITAB1-MENGKU1.
WHEN '262'.
MOVE IMSEG-MENGE TO ITAB1-MENGKU2.
ENDCASE.
ELSE.
CASE IMSEG-BWART.
WHEN '261'.
MOVE IMSEG-MENGE TO ITAB1-MENGEU1.
WHEN '262'.
MOVE IMSEG-MENGE TO ITAB1-MENGEU2.
ENDCASE.
ENDIF.
MOVE : IMSEG-MATNR TO ITAB1-MATNR,
IMSEG-AUFNR TO ITAB1-AUFNR,
IMSEG-BWART TO ITAB1-BWART.
APPEND ITAB1.
CLEAR ITAB1.
ENDLOOP.
ENDFORM. " GET_UNPLANNED_ISSUE_DATA
*&---------------------------------------------------------------------*
*& Form PRINT_REPORT
*&---------------------------------------------------------------------*
FORM PRINT_REPORT.
*/ Printing the item details.
IF C_PLAND EQ 'Y'.
WRITE: 46 '<<<<>>>>' COLOR 6 INVERSE ON.
SKIP.
SORT ITAB BY MATNR BDTER.
* delete adjacent duplicates from itab.
LOOP AT ITAB.
MOVE-CORRESPONDING ITAB TO REC.
AT NEW BDTER.
SUM.
CLEAR : P_MENGE, P_MENGK, P_ENMNG.
*/ Calculations.
P_MENGE = ITAB-MENGE1 - ITAB-MENGE2. " ST Elect issue
P_MENGK = ITAB-MENGK1 - ITAB-MENGK2. " Mindef issue
IF REC-MFRPN EQ SPACE.
MOVE '-' TO REC-MFRPN. " Manufacturer part no.
ENDIF.
IF REC-NSN EQ SPACE.
MOVE '-' TO REC-NSN. " Nato stock no.
ENDIF.

*/ Item serial number generation
DATA : COUNTER(4) TYPE N. " Item Serial No.
COUNTER = COUNTER + 1.
*/ Printing.
FORMAT COLOR 2.
WRITE: /(4) COUNTER NO-ZERO,
7(30) REC-MATNR,
(40) REC-NSN,
(17) REC-ENMNG NO-SIGN,
(17) REC-PDUES,
(17) P_MENGE,
/7(30) REC-MAKTX,
(40) REC-MFRPN,
(17) REC-BDTER RIGHT-JUSTIFIED,
(17) SPACE,
(17) P_MENGK.
SKIP.
ENDAT. " bdter
ENDLOOP. " itab
IF SY-LINNO NE 1.
ULINE /.
ENDIF.
ENDIF. " for c_pland

*/ Printing unplanned issue details in a new page always.
IF C_UNPLND EQ 'Y' AND C_PLAND EQ 'Y'.
NEW-PAGE NO-TITLE.
ENDIF.
IF C_UNPLND EQ 'Y'.
FORMAT COLOR OFF.
WRITE: 45 '<<<<>>>>' COLOR 6 INVERSE ON.
SKIP.

SORT ITAB1 BY MATNR.
LOOP AT ITAB1.
MOVE-CORRESPONDING ITAB1 TO REC1.
AT NEW MATNR.
SUM.
CLEAR : P_MENGEU, P_MENGKU, P_ENMNGU.
*/ Calculations.
P_MENGEU = ITAB1-MENGEU1 - ITAB1-MENGEU2. " ST Elect issue
P_MENGKU = ITAB1-MENGKU1 - ITAB1-MENGKU2. " Mindef issue
P_ENMNGU = P_MENGEU + P_MENGKU." Issued qty -total unplnd
IF REC1-MFRPN CA '?' OR REC1-MFRPN IS INITIAL.
MOVE '-' TO REC1-MFRPN. " Manufacturer part no.
ENDIF.
IF REC1-NSN CA '?' OR REC1-NSN EQ SPACE.
MOVE '-' TO REC1-NSN. " Nato stock no.
ENDIF.
*/ Item serial number generation
DATA : COUNTERU(4) TYPE N. " Item Serial No.
COUNTERU = COUNTERU + 1.
*/ Printing.
FORMAT COLOR 2.
WRITE: /(4) COUNTERU NO-ZERO,
7(30) REC1-MATNR,
(40) REC1-NSN,
(17) P_ENMNGU NO-SIGN,
(17) '0.00' RIGHT-JUSTIFIED,
(17) P_MENGEU,
/7(30) REC1-MAKTX,
(40) REC1-MFRPN,
(17) REC1-BDTER RIGHT-JUSTIFIED,
(17) SPACE,
(17) P_MENGKU.
SKIP.
ENDAT.
ENDLOOP. " itab1
ENDIF.
IF SY-LINNO NE 1.
ULINE /.
ENDIF.
ENDFORM. " PRINT_REPORT

*&---------------------------------------------------------------------*
*& Form PRINT_TITLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRINT_TITLE.
FORMAT COLOR 3 INTENSIFIED ON.
WRITE : /.
WRITE : /5 'PROG ID :',SY-REPID,
44 'SINGAPORE TECHNOLOGIES ELECTRONICS LIMITED',
114 'DATE :', SY-DATUM,
/51 'ISSUE RECORDS FILE',
114 'PAGE :', SY-PAGNO.

WRITE : /.
FORMAT COLOR 4.
WRITE : /5 'SERVICE ORDER NO. :', P_AUFNR.
FORMAT COLOR OFF.
ENDFORM. " PRINT_TITLE

*&---------------------------------------------------------------------*
*& Form GET_NSN_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_NSN_DATA USING F_MATNR LIKE ITAB-MATNR
CHANGING F_NSN LIKE ITAB-NSN.

DATA: V_OBJEK LIKE AUSP-OBJEK,
F_SMBEZ LIKE CLOBJDAT-SMBEZ.

DATA: BEGIN OF ISCLASS OCCURS 0.
INCLUDE STRUCTURE SCLASS.
DATA: END OF ISCLASS.

DATA: BEGIN OF ICLOBJDAT OCCURS 0.
INCLUDE STRUCTURE CLOBJDAT.
DATA: END OF ICLOBJDAT.

MOVE F_MATNR TO V_OBJEK+0(18).

CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
* CLASS = ' '
* CLASSTEXT = 'X'
CLASSTYPE = '001'
* CLINT = ' '
* FEATURES = 'X'
* LANGUAGE = SY-LANGU
OBJECT = V_OBJEK
* OBJECTTABLE = ' '
* KEY_DATE = SY-DATUM
* INITIAL_CHARACT = 'X'
* NO_VALUE_DESCRIPT =
* CHANGE_SERVICE_CLF = 'X'
INHERITED_CHAR = 'X'
TABLES
T_CLASS = ISCLASS
T_OBJECTDATA = ICLOBJDAT
* I_SEL_CHARACTERISTIC =
EXCEPTIONS
NO_CLASSIFICATION = 1
NO_CLASSTYPES = 2
INVALID_CLASS_TYPE = 3
OTHERS = 4.


IF SY-SUBRC EQ 0.
APPEND ICLOBJDAT.
CLEAR ICLOBJDAT.
LOOP AT ICLOBJDAT
WHERE SMBEZ+0(17) = 'Nato Stock Number'.
MOVE ICLOBJDAT-AUSP1 TO F_NSN.
ENDLOOP.
REFRESH ICLOBJDAT.
ELSE.
REFRESH ICLOBJDAT.
ENDIF.

ENDFORM. " GET_NSN_DATA
*&---------------------------------------------------------------------*
*& Form PRINT_FOOTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRINT_FOOTER.
FORMAT COLOR 6.
IF SY-PAGNO = 1
AND SY-LINNO = 1
AND SY-COLNO = 1.
IF SY-LINSZ > 80.
WRITE: /51 '*** NO DATA TO REPORT ***', 132 ' ' .
ELSE.
WRITE: /27 '*** NO DATA TO REPORT ***', 80 ' '.
ENDIF.
ELSE.
IF SY-LINSZ > 80.
WRITE: /53 '*** END OF REPORT ***', 132 ' '.
ELSE.
WRITE: /29 '*** END OF REPORT ***', 80 ' '.
ENDIF.
ENDIF.
FORMAT COLOR OFF.
ENDFORM. " PRINT_FOOTER

*&---------------------------------------------------------------------*
*& Form PRINT_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRINT_HEADER.
*/ Printing the Header.
FORMAT COLOR 1.
ULINE /.
WRITE: /(5) 'S/NO.' LEFT-JUSTIFIED,
(30) 'MATERIAL CODE' LEFT-JUSTIFIED,
(40) 'NSN' LEFT-JUSTIFIED,
(17) 'ISSUE QTY' RIGHT-JUSTIFIED,
(17) 'QTY DUESOUT' RIGHT-JUSTIFIED,
(16) 'ST Elect ISSUE' RIGHT-JUSTIFIED,
/7(30) 'DESCRIPTION' LEFT-JUSTIFIED,
(40) 'MPN' LEFT-JUSTIFIED,
(17) 'DATE RAISED' RIGHT-JUSTIFIED,
(17) ' ',
(16) 'MINDEF ISSUE' RIGHT-JUSTIFIED.
ULINE /.

ENDFORM. " PRINT_HEADER

0 comments:

Blogger template 'YellowFlower' by Ourblogtemplates.com 2008