Below program is for PO Document Report.

*&———————————————————————*
*& Report ZTESTRZCZ01
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT ZTESTRZCZ01 NO STANDARD PAGE HEADING LINE-COUNT 30
LINE-SIZE 128.

TABLES:EKKO,EKPO,MARA,MAKT,EKET,LFA1.

DATA: BEGIN OF ITAB OCCURS 0 ,
EBELP LIKE EKPO-EBELP,
BISMT LIKE MARA-BISMT,
MATNR LIKE EKPO-MATNR,
MAKTX LIKE MAKT-MAKTX,
TXZ01 LIKE EKPO-TXZ01,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
PEINH LIKE EKPO-PEINH,
NETPR LIKE EKPO-NETPR,
EINDT LIKE EKET-EINDT,
END OF ITAB.

DATA: INCO1 LIKE EKKO-INCO1, “Incoterms
WAERS LIKE EKKO-WAERS, “CURRENCY
NAME1 LIKE LFA1-NAME1,
LAND1 LIKE LFA1-LAND1, “Origin
NAME LIKE THEAD-TDNAME,
MENGE1 LIKE EKPO-MENGE,
NETPR1 LIKE EKPO-NETPR,
MENGE2 LIKE EKPO-MENGE,
NETPR2 LIKE EKPO-NETPR,
L_PAGE_COUNT(5),
LINES LIKE TLINE occurs 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE T1.
PARAMETERS: EBELN LIKE EKPO-EBELN.
SELECTION-SCREEN END OF BLOCK 1.

TOP-OF-PAGE.
PERFORM WRITE_HEAD.

*END-OF-PAGE.
* PERFORM WRITE_FOOTER.

START-OF-SELECTION.
PERFORM SELECT_DATA.
PERFORM WRITE_OUT.

WRITE SY-PAGNO TO L_PAGE_COUNT LEFT-JUSTIFIED.
DO SY-PAGNO TIMES.
READ LINE 5 OF PAGE SY-INDEX.
REPLACE ‘&&&&&’ WITH L_PAGE_COUNT INTO SY-LISEL.
MODIFY CURRENT LINE.
READ LINE 1 OF PAGE SY-INDEX.
REPLACE ‘&&&&&’ WITH L_PAGE_COUNT INTO SY-LISEL.
MODIFY CURRENT LINE.
ENDDO.

*&———————————————————————*
*& Form WRITE_HEAD
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM WRITE_HEAD .
*DATA: x TYPE i, y TYPE i, l TYPE i.
*DEFINE write_frame.
* x = sy-colno. y = sy-linno.
* WRITE: ‘|’ NO-GAP, &1 NO-GAP, ‘|’ NO-GAP.
* l = sy-colno - x.
* y = y - 1. SKIP TO LINE y. POSITION x.
* ULINE AT x(l).
* y = y + 2. SKIP TO LINE y. POSITION x.
* ULINE AT x(l).
* y = y - 1. x = sy-colno. SKIP TO LINE y. POSITION x.
*END-OF-DEFINITION.
*SKIP.
*write_frame ‘In a frame!’.

*TOP-OF-PAGE.

IF SY-PAGNO = 1.
WRITE: 100 ‘Purchase order’ COLOR 5.
WRITE:/100 SY-ULINE.
WRITE:/ ‘TO:’,LFA1-NAME1,
100 SY-VLINE , ‘PO number:’, 115 EBELN COLOR 5,128 SY-VLINE.
WRITE:/100 SY-VLINE , ‘Date:’, 115 SY-DATUM,128 SY-VLINE.
WRITE:/ ‘FROM:’,SY-UNAME ,
100 SY-VLINE , ‘Page:’ , 111 SY-PAGNO , ‘/’,(5) ‘&&&&&’,128 SY-VLINE.
WRITE:/100 SY-ULINE.
WRITE:/50(30) ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’.
WRITE:/ ‘Messers:’, LFA1-NAME1.
WRITE:/5 ‘We have pleasure to purchase the following goods on the terms and conditions stated as below:’.
skip 2.
WRITE:/ ‘Payment:’,EKKO-ZTERM,100 ‘Origin:’,LFA1-LAND1.
WRITE:/ ‘Incoterms:’,EKKO-INCO1.
LOOP AT LINES.
WRITE:/ ‘Destination:’,(20) LINES-TDLINE.
ENDLOOP.
WRITE: 100 ‘Currency:’,EKKO-WAERS.
ELSE.
WRITE:/ ‘TO:’,LFA1-NAME1, 60 ‘PO number:’COLOR 5,EBELN COLOR 5,105 ‘Page:’, SY-PAGNO,’/’,’&&&&&’.
ENDIF.

WRITE:/ SY-ULINE.
WRITE:/ ‘Item’,20 ‘KKC MPN’, 40 ‘MPN’, 60 ‘Description’, 100 ‘Remark’.
WRITE:/10 ‘Order qty’, 30 ‘Unit’, 50 ‘Price per unit’, 80 ‘Amount’, 100 ‘Devery date’.
WRITE:/ SY-ULINE.

ENDFORM. ” WRITE_HEAD
*&———————————————————————*
*& Form SELECT_DATA
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM SELECT_DATA .
* PO Header
SELECT SINGLE LIFNR ZTERM INCO1 WAERS
FROM EKKO INTO (EKKO-LIFNR,EKKO-ZTERM,EKKO-INCO1,EKKO-WAERS)
WHERE EBELN = EBELN.
* Vendor
SELECT SINGLE LAND1 NAME1 INTO (LFA1-LAND1,LFA1-NAME1)
FROM LFA1
WHERE LIFNR = EKKO-LIFNR.
* Header Notes
NAME = EBELN.
* CALL FUNCTION ‘READ_TEXT’
* EXPORTING
* CLIENT = SY-MANDT
* ID = ‘F02′
* LANGUAGE = ‘E’
* NAME = NAME
* OBJECT = ‘EKKO’
** IMPORTING
* TABLES
* LINES = LINES.

* PO Item
SELECT *
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM EKPO
WHERE EBELN = EBELN.

LOOP AT ITAB.
SELECT SINGLE BISMT INTO ITAB-BISMT
FROM MARA
WHERE MATNR = ITAB-MATNR.

SELECT SINGLE MAKTX INTO ITAB-MAKTX
FROM MAKT
WHERE MATNR = ITAB-MATNR
AND SPRAS = ‘E’.
SELECT SINGLE EINDT INTO ITAB-EINDT
FROM EKET
WHERE EBELN = EBELN
AND EBELP = ITAB-EBELP.
MODIFY ITAB.CLEAR ITAB.

ENDLOOP.

ENDFORM. ” SELECT_DATA
*&———————————————————————*
*& Form WRITE_OUT
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM WRITE_OUT .
MENGE1 = 0.
NETPR1 = 0.

LOOP AT ITAB.
MENGE1 = MENGE1 + ITAB-MENGE.
NETPR1 = NETPR1 + ITAB-NETPR.
MENGE2 = MENGE2 + ITAB-MENGE.
NETPR2 = NETPR2 + ITAB-NETPR.

WRITE:/ ITAB-EBELP, 20 ITAB-BISMT,40 ITAB-MATNR, 60 ITAB-MAKTX.
WRITE:/10 ITAB-MENGE, 30 ITAB-MEINS, 50 ITAB-PEINH,80 ITAB-NETPR,100 ITAB-EINDT.
WRITE:/ SY-ULINE.
IF SY-LINNO = 29.
WRITE:/ ‘Sub total’, 10 MENGE1, 80 NETPR1.
MENGE1 = 0.
NETPR1 = 0.
ENDIF.
ENDLOOP.
WRITE:/ ‘Sub total’, 10 MENGE1, 80 NETPR1.
WRITE:/ ‘TOTAL’, 10 MENGE2, 80 NETPR2.
SKIP 2.
WRITE:/ ‘Other condition:’.
SKIP 3.
WRITE:/5 LFA1-NAME1, 75 ‘ACCEPTED BY’.
WRITE:/5 ‘SIGNED BY’.
ENDFORM. ” WRITE_OUT
*&———————————————————————*
*& Form WRITE_FOOTER
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM WRITE_FOOTER .
WRITE:/ ‘Sub total’, 10 MENGE1, 80 NETPR1.
ENDFORM. ” WRITE_FOOTER

Related posts