Saturday, December 23, 2006

Example Report 2

*-----------------------------------------------------------------------
* PROGRAM SPECIFICATION *
*----------------------------------------------------------------------*
* Consultant Name :
* Programmer Name :
* Programming Date :
* *
* Report Title : PURCHASE ORDER DETAIL
* *
* Description : This program prints out the purchase order
* detail of goods received with PO number
* posted to GR blocked stock.
* The purchase order detail include a portion
* of empty QC data fields for IQC to fill-in.
* *
* INPUT:
* Logical Database : None *
*Database Tables :
* Database Tables : MSEG, "Document Segment:
* MKPF, "Header: Material Document
* MARA, "Material Master: General Data
* MAKT, "Material Descriptions
* EKKO, "Purchasing Document Header
* EKPO, "Purchasing Document Item
* EKET, "Delivery Schedules
* CABN, "Characteristic
* AUSP, "Characteristic Values
* LFA1. "Vendor master
*
* *
* Tables : None *
* *
* SELECTION: *
* Select-Options : None *
* Parameters : docno for material document no. *
* year for material document year *
*
* PROCESS: *
* 1. Print out the report for goods receipt performed for GR Blocked
* stock.
* 2. From the Material document number generated,pick up the PO number,
* material code,received quantity,DO number, and delivery date.
* 3. From the PO number pick up the unit price,ordered qty,tracking no,
* vendor no and vendor material no from the purchasing document.
* 4. From the vendor no pick up the supplier name and county key in the
* vendor master.
* 5. From the material number,pick up the MPN,drawing number,description
* and NSN number in the material master.
* 6. Output the extracted fields to the report.
* *
* OUTPUT: *
* Database Tables : None *
* Dataset Name : None *
* Report : none *
* Sort Fields : Item no in material document *
*----------------------------------------------------------------------*
* Modification Number : *
* Analyst : *
* Specification Date : DD.MM.YYYY *
* Programmer : *
* Programming Date : DD.MM.YYYY *
* Description : *
* *
* *
*
*----------------------------------------------------------------------*
REPORT ZSOMTEST1 MESSAGE-ID M7
NO STANDARD PAGE HEADING
LINE-SIZE 218
LINE-COUNT 56.
*----------------------------------------------------------------------*
* DECLARATION SECTION *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TABLES *
*----------------------------------------------------------------------*

TABLES: MSEG, "Document Segment: Material
MKPF, "Header: Material Document
MARA, "Material Master: General Data
MAKT, "Material Descriptions
EKKO, "Purchasing Document Header
EKPO, "Purchasing Document Item
EKET, "Delivery Schedules
CABN, "Characteristic
AUSP, "Characteristic Values
LFA1. "Vendor master
*----------------------------------------------------------------------*
* INTERNAL TABLES *
*----------------------------------------------------------------------*
* STRUCTURE TO HOLD DATA

DATA: BEGIN OF IMSEG OCCURS 0,
MBLNR LIKE MSEG-MBLNR,
MATNR LIKE MSEG-MATNR,
LIFNR LIKE MSEG-LIFNR,
BSTMG LIKE MSEG-BSTMG,
EBELN LIKE MSEG-EBELN,
EBELP LIKE MSEG-EBELP,
ZEINR LIKE MARA-ZEINR,
MFRPN LIKE MARA-MFRPN,
EINDT LIKE EKET-EINDT,
MAKTX LIKE MAKT-MAKTX,
BEDNR LIKE EKPO-BEDNR,
CC LIKE AUSP-ATWRT,
IDNLF LIKE EKPO-IDNLF,
MENG LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
PEINH LIKE EKPO-PEINH,
BANFN LIKE EKPO-BANFN,
ATWRT LIKE AUSP-ATWRT,
ZEILE LIKE MSEG-ZEILE,
END OF IMSEG.

DATA: BEGIN OF ITLINE OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA: END OF ITLINE.

DATA: BEGIN OF ILFA1 OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
LAND1 LIKE LFA1-LAND1,
NAME1 LIKE LFA1-NAME1,
END OF ILFA1.

DATA: BEGIN OF IEKPO OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
BEDNR LIKE EKPO-BEDNR,
IDNLF LIKE EKPO-IDNLF,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
PEINH LIKE EKPO-PEINH,
END OF IEKPO.

DATA: BEGIN OF IMKPF ,
MBLNR LIKE MKPF-MBLNR,
BUDAT LIKE MKPF-BUDAT,
XBLNR LIKE MKPF-XBLNR,
END OF IMKPF.

DATA: BEGIN OF IMARA OCCURS 0,
MATNR LIKE MARA-MATNR,
ZEINR LIKE MARA-ZEINR,
MFRPN LIKE MARA-MFRPN,
END OF IMARA.

DATA: BEGIN OF IEKET OCCURS 0,
EBELN LIKE EKET-EBELN,
EBELP LIKE EKET-EBELP,
BANFN LIKE EKET-BANFN,
EINDT LIKE EKET-EINDT,
END OF IEKET.

DATA: BEGIN OF IEKKO, " OCCURS 0,
EBELN LIKE EKKO-EBELN,
BEDAT LIKE EKKO-BEDAT,
WAERS LIKE EKKO-WAERS,
END OF IEKKO.

DATA: BEGIN OF IMAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF IMAKT.

DATA: BEGIN OF IAUSP OCCURS 0,
OBJEK LIKE AUSP-OBJEK,
ATWRT LIKE AUSP-ATWRT,
END OF IAUSP.
*----------------------------------------------------------------------*
* WORKING VARIABLES *
*----------------------------------------------------------------------*

DATA : CHARNO LIKE AUSP-ATINN.
DATA: TEXT-NAME LIKE THEAD-TDNAME.
*----------------------------------------------------------------------*
* SELECTION PARAMETERS *
*----------------------------------------------------------------------*

SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
PARAMETERS DOCNO LIKE MSEG-MBLNR MATCHCODE OBJECT MBMP.
PARAMETERS YEAR LIKE MKPF-MJAHR.
SELECTION-SCREEN END OF BLOCK BLK.
*----------------------------------------------------------------------*
* VALIDATION OF SELECTION PARAMETERS
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON DOCNO.
IF DOCNO IS INITIAL.
MESSAGE E018(M7) WITH 'Material Doc no'.
ENDIF.
IF NOT DOCNO IS INITIAL.
SELECT * FROM MKPF
WHERE MBLNR = DOCNO.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E063(M7) WITH DOCNO.
ENDIF.
ENDIF.

AT SELECTION-SCREEN ON YEAR.
IF YEAR IS INITIAL.
MESSAGE E018(M7) WITH 'Material Doc. year'.
ENDIF.
IF NOT YEAR IS INITIAL.
SELECT * FROM MKPF
WHERE MBLNR = DOCNO
AND MJAHR = YEAR.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E062(M7) WITH DOCNO YEAR.
ENDIF.
ENDIF.

AT SELECTION-SCREEN ON BLOCK BLK.
IF NOT DOCNO IS INITIAL.
SELECT * FROM MSEG
WHERE MBLNR = DOCNO
AND BWART = '103'.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E018(M7) WITH 'Doc. no of mvt type 103'.
ENDIF.
ENDIF.

*----------------------------------------------------------------------*
* HEADER TEXTS *
*----------------------------------------------------------------------*

TOP-OF-PAGE.
PERFORM TEXT.

*----------------------------------------------------------------------*
* PROCESSING *
*----------------------------------------------------------------------*

START-OF-SELECTION.

SELECT * FROM MKPF INTO CORRESPONDING FIELDS OF IMKPF
WHERE MBLNR = DOCNO
AND MJAHR = YEAR .
ENDSELECT.

SELECT ZEILE MBLNR MATNR LIFNR BSTMG EBELN EBELP
FROM MSEG INTO CORRESPONDING FIELDS OF TABLE IMSEG
WHERE MBLNR = DOCNO
AND MJAHR = YEAR
AND BWART = '103'.

LOOP AT IMSEG.
SELECT SINGLE * FROM EKKO INTO CORRESPONDING FIELDS OF IEKKO
WHERE EBELN = IMSEG-EBELN.

SELECT SINGLE * FROM LFA1 INTO CORRESPONDING FIELDS OF ILFA1
WHERE LIFNR = IMSEG-LIFNR.

ENDLOOP.

SELECT ATINN FROM CABN INTO CHARNO WHERE ATNAM = 'NSN'.
ENDSELECT.

SELECT EBELN EBELP BEDNR IDNLF MENGE MEINS NETPR PEINH
FROM EKPO INTO CORRESPONDING FIELDS OF TABLE IEKPO
FOR ALL ENTRIES IN IMSEG
WHERE EBELN = IMSEG-EBELN
AND EBELP = IMSEG-EBELP.

SELECT MATNR ZEINR MFRPN
FROM MARA INTO CORRESPONDING FIELDS OF TABLE IMARA
FOR ALL ENTRIES IN IMSEG
WHERE MATNR = IMSEG-MATNR.

SELECT EBELN EBELP EINDT BANFN
FROM EKET INTO CORRESPONDING FIELDS OF TABLE IEKET
FOR ALL ENTRIES IN IMSEG
WHERE EBELN = IMSEG-EBELN
AND EBELP = IMSEG-EBELP.

SELECT MATNR MAKTX
FROM MAKT INTO CORRESPONDING FIELDS OF TABLE IMAKT
FOR ALL ENTRIES IN IMSEG
WHERE MATNR = IMSEG-MATNR.
DATA OBJ LIKE AUSP-OBJEK.

LOOP AT IMSEG.
MOVE IMSEG-MATNR TO OBJ.
SELECT * FROM AUSP WHERE OBJEK = OBJ
AND ATINN = CHARNO
AND MAFID = 'O'
AND KLART = '001'.
MOVE-CORRESPONDING AUSP TO IAUSP.
APPEND IAUSP.
ENDSELECT.
PERFORM CRITICALITY_CODE.
CLEAR OBJ.
MODIFY IMSEG.
ENDLOOP.

LOOP AT IMSEG.
READ TABLE IMARA WITH KEY MATNR = IMSEG-MATNR.
MOVE IMARA-ZEINR TO IMSEG-ZEINR.
MOVE IMARA-MFRPN TO IMSEG-MFRPN.
READ TABLE IMAKT WITH KEY MATNR = IMSEG-MATNR.
MOVE IMAKT-MAKTX TO IMSEG-MAKTX.
READ TABLE IEKPO WITH KEY EBELN = IMSEG-EBELN EBELP = IMSEG-EBELP.
MOVE IEKPO-IDNLF TO IMSEG-IDNLF.
MOVE IEKPO-NETPR TO IMSEG-NETPR.
MOVE IEKPO-MENGE TO IMSEG-MENG.
MOVE IEKPO-MEINS TO IMSEG-MEINS.
* move iekpo-bednr to imseg-bednr.
MOVE IEKPO-PEINH TO IMSEG-PEINH.
READ TABLE IEKET WITH KEY EBELN = IMSEG-EBELN EBELP = IMSEG-EBELP.
MOVE IEKET-BANFN TO IMSEG-BANFN.
MOVE IEKET-EINDT TO IMSEG-EINDT.
READ TABLE IAUSP WITH KEY OBJEK = IMSEG-MATNR.
MOVE IAUSP-ATWRT TO IMSEG-ATWRT.
MODIFY IMSEG.
CLEAR: IMARA,IMAKT,IEKPO,IEKET,IAUSP.
ENDLOOP.

SORT IMSEG BY ZEILE.
LOOP AT IMSEG.
AT NEW ZEILE.
PERFORM VALUE.
ENDAT.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form TEXT
*&---------------------------------------------------------------------*
* FORATTING FOR HEADER TEXT
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TEXT.
WRITE: 80 'SINGAPORE TECHNOLOGIES ELECTRONICS LIMITED'
COLOR COL_HEADING INTENSIFIED ON,
195 'DATE:'
COLOR COL_HEADING INTENSIFIED ON,
202 SY-DATUM
COLOR COL_BACKGROUND INTENSIFIED OFF.
SKIP.
WRITE: 90 'PURCHASE ORDER DETAIL'
COLOR COL_HEADING INTENSIFIED ON,
195 'PAGE:'
COLOR COL_HEADING INTENSIFIED ON,
202 SY-PAGNO
COLOR COL_BACKGROUND INTENSIFIED OFF.
SKIP 2.

WRITE: 'MAT DOC NO:'
COLOR COL_HEADING INTENSIFIED ON,
014 IMKPF-MBLNR
COLOR COL_BACKGROUND INTENSIFIED OFF,
/ 'PO NO:'
COLOR COL_HEADING INTENSIFIED ON,
014 IEKKO-EBELN
COLOR COL_BACKGROUND INTENSIFIED OFF,
150 'SUPPLIER NUMBER:'
COLOR COL_HEADING INTENSIFIED ON,
167 ILFA1-LIFNR
COLOR COL_BACKGROUND INTENSIFIED OFF,
'TYPE:'
COLOR COL_HEADING INTENSIFIED ON.
IF ILFA1-LAND1 = 'SG'.
WRITE 185 'LOCAL'
COLOR COL_BACKGROUND INTENSIFIED OFF.
ELSE.
WRITE 185 'OVERSEA'
COLOR COL_BACKGROUND INTENSIFIED OFF.
ENDIF.
WRITE: / 'PO DATE:'
COLOR COL_HEADING INTENSIFIED ON,
014 IEKKO-BEDAT
COLOR COL_BACKGROUND INTENSIFIED OFF,
150 'SUPPLIER NAME:'
COLOR COL_HEADING INTENSIFIED ON,
167 ILFA1-NAME1
COLOR COL_BACKGROUND INTENSIFIED OFF,
/ 'DO NO:'
COLOR COL_HEADING INTENSIFIED ON,
014 IMKPF-XBLNR
COLOR COL_BACKGROUND INTENSIFIED OFF,
030 'DELIVERY DATE:'
COLOR COL_HEADING INTENSIFIED ON,
IMKPF-BUDAT
COLOR COL_BACKGROUND INTENSIFIED OFF,
060 'CURRENCY:'
COLOR COL_HEADING INTENSIFIED ON,
IEKKO-WAERS
COLOR COL_BACKGROUND INTENSIFIED OFF.
ULINE.
FORMAT COLOR COL_KEY INTENSIFIED ON.
WRITE: /001 SY-VLINE,
002 'S/N',
006 'MATERIAL CODE',
043 'UOM',
055 '[_________________ FOR STORE USE ONLY
________________]',
133 '[_________________ FOR IQC USE ONLY
________________________]',
SY-VLINE,

/ SY-VLINE,
006 'NSN',
057(11) 'UNIT PRICE' RIGHT-JUSTIFIED,
069(13) 'PO QTY' RIGHT-JUSTIFIED,
083(13) 'RECEIVED QTY' RIGHT-JUSTIFIED,
101 'PR NO',
108 'EST DEL',
119 'QTY',
135 'QTY',
142 'QTY',
149 'QTY',
156 'QTY',
163 'P/N',
168 'PHY',
173 'S/L',
178 'R-NO',
187 'REMARKS',
218 SY-VLINE,
/001 SY-VLINE,
006 'VENDOR PART NO',
043 'CC',
108 'DATE',
119 'IN P/L',
135 'ACCD',
142 'REJD',
149 'O/S',
156 'CNT',
163 'FCT',
168 'DOC',
173 'PSERV',
218 SY-VLINE,
/001 SY-VLINE,
006 'MPN',
218 SY-VLINE,
/001 SY-VLINE,
006 'DRAWING NUMBER',
218 SY-VLINE,
/001 SY-VLINE,
006 'DESCRIPTION',
218 SY-VLINE.
ULINE.
ENDFORM. " TEXT

*&---------------------------------------------------------------------*
*& Form VALUE
*&---------------------------------------------------------------------*
* FORMATTING OF VALUES
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM VALUE.
FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
RESERVE 7 LINES.
WRITE: /002(4) IMSEG-ZEILE+1(3),
006(35) IMSEG-MATNR.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE: 043(3) IMSEG-MEINS,
057(11) IMSEG-NETPR,
069(13) IMSEG-MENG,
083(13) IMSEG-BSTMG,
097(10) IMSEG-BANFN,
108(10) IMSEG-EINDT.
FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.
WRITE: 163 '[ ]',
168 '[ ]',
173 '[ ]',
/006 IMSEG-ATWRT,
119 '______',
135 '______',
142 '______',
149 '______',
156 '______',
163 '[ ]',
168 '[ ]',
173 '[ ]',
178 '______',
/006 IMSEG-IDNLF.
* 043 imseg-bednr,
* 043 imseg-cc,
IF NOT IMSEG-MATNR IS INITIAL.
WRITE: 043 IMSEG-CC.
ELSE.
CONCATENATE IMSEG-EBELN IMSEG-EBELP INTO TEXT-NAME.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = 'F07'
LANGUAGE = SY-LANGU
NAME = TEXT-NAME
OBJECT = 'EKPO'
* ARCHIVE_HANDLE = 0
* IMPORTING
* HEADER =
TABLES
LINES = ITLINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
LOOP AT ITLINE.
WRITE : 46 ITLINE-TDLINE.
ENDLOOP.
REFRESH ITLINE.
ENDIF.

WRITE: 119 SY-ULINE(99),
/006 IMSEG-MFRPN,
163 '[ ]',
168 '[ ]',
173 '[ ]',
/006 IMSEG-ZEINR,
119 '______',
135 '______',
142 '______',
149 '______',
156 '______',
163 '[ ]',
168 '[ ]',
173 '[ ]',
178 '______',
/006 IMSEG-MAKTX.
ULINE.
CLEAR: IMSEG,IMKPF,IEKKO,ILFA1,DOCNO.

ENDFORM. " VALUE
*&---------------------------------------------------------------------*
*& Form CRITICALITY_CODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CRITICALITY_CODE.

IF NOT IMSEG-MATNR IS INITIAL.
CLEAR: CABN, AUSP.
SELECT SINGLE * FROM CABN WHERE ATNAM = 'CRITICALITY_CODE'.
SELECT SINGLE * FROM AUSP WHERE OBJEK = IMSEG-MATNR
AND ATINN = CABN-ATINN
AND MAFID = 'O'
AND KLART = '001'.
MOVE AUSP-ATWRT TO IMSEG-CC.
ENDIF.
ENDFORM. " CRITICALITY_CODE

1 comments:

Anonymous

Nice dispatch and this mail helped me alot in my college assignement. Thanks you seeking your information.

Blogger template 'YellowFlower' by Ourblogtemplates.com 2008