|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > English > ABAP Report > Display Output > Report (204) - Create Report Purchase Order List |
Objective |
|
Transaction Code |
AS03 - Display Asset |
Tables |
EKKO - Purchasing Document Header EKPO - Purchasing Document Item |
Support |
|
1.Open SE38.
2.Copy Program "YPRACTICE_203" menjadi "YPRACTICE_204".
3.Change Program "YPRACTICE_204".
4.Open Goto > Attributes, and change "Title" with "204 - Purchase Order List".
5.Modified Report Declaration.
Before
REPORT ypractice_203
NO STANDARD PAGE HEADING.
After
REPORT ypractice_204
NO STANDARD PAGE HEADING.
6.Learn about the relationships between tables for transactions in the SAP Purchase Order. Ask about the functional needs.
Documents PO (PO Number) on EKKO has more than 1 Item (Details) on the table EKPO.
View tCode ME23N (Example use PO Number 4500004823)
Check Data on SE16
|
7.Modified "Tables".
Before
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
TABLES : anla, anlz, t499s.
After
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
TABLES : ekko, ekpo.
8.Modified Define "macro_data_possition" according to field length
| Before |
| if &1 = 'HEADER'. |
| write : /'|' no-gap,(12) &2 no-gap centered, |
'|' no-gap,(4) &3 no-gap centered,
'|' no-gap,(50) &4 no-gap centered,
'|' no-gap,(10) &5 no-gap centered,
'|' no-gap,(40) &6 no-gap centered,
'|' no-gap,(12) &7 no-gap centered,
'|' no-gap.
else.
write : /'|' no-gap,(12) &2 no-gap centered,
'|' no-gap,(4) &3 no-gap centered,
'|' no-gap,(50) &4 no-gap,
'|' no-gap,(10) &5 no-gap centered,
'|' no-gap,(40) &6 no-gap,
'|' no-gap,(12) &7 no-gap centered,
'|' no-gap.
endif.
After
if &1 = 'HEADER'.
write : /'|' no-gap,(9) &2 centered,
'|' no-gap,(10) &3 centered,
'|' no-gap,(10) &4 centered,
'|' no-gap,(10) &5 centered,
'|' no-gap,(5) &6 centered,
'|' no-gap,(15) &7 centered,
'|' no-gap,(30) &8 centered,
'|' no-gap,(14) &9 centered,
'|' no-gap.
else.
write : /'|' no-gap,(9) &2 centered,
'|' no-gap,(10) &3 ,
'|' no-gap,(10) &4 ,
'|' no-gap,(10) &5 ,
'|' no-gap,(5) &6 ,
'|' no-gap,(15) &7 ,
'|' no-gap,(30) &8 ,
'|' no-gap,(14) &9 right-justified,
'|' no-gap.
endif.
9.Modified Global Variables
| Before |
*----------------------------------------------------------------------*
*GLOBAL VARIABLE DECRALATION
*----------------------------------------------------------------------*
TYPES: BEGIN OF ty_header,
anln1 LIKE anla-anln1, " Main Asset Number
anln2 LIKE anla-anln2, " Asset Subnumber
txt50 LIKE anla-txt50, " Asset description
stort LIKE anlz-stort, " Asset location
ktext LIKE t499s-ktext, " Location description
aktiv LIKE anla-aktiv, " Asset capitalization date
END OF ty_header.
DATA : gi_header TYPE STANDARD TABLE OF ty_header WITH HEADER LINE,
gi_anla LIKE STANDARD TABLE OF anla WITH HEADER LINE,
gi_t499s LIKE STANDARD TABLE OF t499s WITH HEADER LINE.
After
*----------------------------------------------------------------------*
*GLOBAL VARIABLE DECRALATION
*----------------------------------------------------------------------*
TYPES : BEGIN OF ty_header,
* Information of PO Header
bsart LIKE ekko-bsart,
ebeln LIKE ekko-ebeln,
bukrs LIKE ekko-bukrs,
lifnr LIKE ekko-lifnr,
* Information of PO Detail
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
txz01 LIKE ekpo-txz01,
menge LIKE ekpo-menge,
END OF ty_header.
DATA : gi_header TYPE STANDARD TABLE OF ty_header WITH HEADER LINE,
gi_ekko TYPE STANDARD TABLE OF ekko WITH HEADER LINE,
gi_ekpo TYPE STANDARD TABLE OF ekpo WITH HEADER LINE.
10.Modified "Input Screen/Selection".
Before
*----------------------------------------------------------------------*
*Input Screen/Selection
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK groupbox1 WITH FRAME TITLE text_101. "Declare Group Box 1
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(14) text_102 FOR FIELD so_stort.
SELECT-OPTIONS so_stort FOR anlz-stort.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(14) text_103 FOR FIELD so_anln1.
SELECT-OPTIONS so_anln1 FOR anla-anln1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(14) text_104 FOR FIELD so_anln2.
SELECT-OPTIONS so_anln2 FOR anla-anln2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK groupbox1. "End Group Box 1
SELECTION-SCREEN BEGIN OF BLOCK groupbox2 WITH FRAME TITLE text_201. "Declare Group Box 2
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_202 FOR FIELD p_mwidth.
PARAMETERS p_mwidth TYPE n DEFAULT 135 LENGTH 4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_203 FOR FIELD p_mline .
PARAMETERS p_mline TYPE n DEFAULT 65 LENGTH 4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK groupbox2. "End Group Box 2
...
...
After
*----------------------------------------------------------------------*
*Input Screen/Selection
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK groupbox1 WITH FRAME TITLE text_101. "declare group box 1
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_102 FOR FIELD so_bsart.
SELECT-OPTIONS so_bsart FOR ekko-bsart.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_103 FOR FIELD so_ebeln.
SELECT-OPTIONS so_ebeln FOR ekko-ebeln.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_104 FOR FIELD so_bukrs.
SELECT-OPTIONS so_bukrs FOR ekko-bukrs.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK groupbox1. "End Group Box 1
SELECTION-SCREEN BEGIN OF BLOCK groupbox2 WITH FRAME TITLE text_201. "Declare Group Box 2
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_202 FOR FIELD p_mwidth.
PARAMETERS p_mwidth TYPE n DEFAULT 120 LENGTH 4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_203 FOR FIELD p_mline .
PARAMETERS p_mline TYPE n DEFAULT 10 LENGTH 4.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK groupbox2. "End Group Box 2
...
...
11.Modified "EVENT"
Before
text_101 = 'Selection Parameter'.
text_102 = 'Location ID'.
text_103 = 'Asset Number'.
text_104 = 'Sub Number'.
After
text_101 = 'Selection Parameter'.
text_102 = 'Order Type'.
text_103 = 'PO Number'.
text_104 = 'Co Code'.
12.Modified sub routine "fm_collect_data".
| Before |
* Collect Master Asset
SELECT anln1 anln2 stort
INTO CORRESPONDING FIELDS OF TABLE gi_header
FROM anlz
WHERE
anln1 IN so_anln1 AND
anln2 IN so_anln2 AND
stort IN so_stort.
* "For SAP 4.6C
* DATA : lv_total_data type i.
* DESCRIBE TABLE gi_header LINES lv_total_data.
* IF LINES( lv_total_data ) > 0.
IF LINES( gi_header ) > 0." For SAP 4.7 above
* Collect Asset Decription
SELECT anln1 anln2 txt50 aktiv
INTO CORRESPONDING FIELDS OF TABLE gi_anla
FROM anla
FOR ALL ENTRIES IN gi_header
WHERE
anln1 = gi_header-anln1 AND
anln2 = gi_header-anln2.
* Collect Measurement Text
SELECT stand ktext
INTO CORRESPONDING FIELDS OF TABLE gi_t499s
FROM t499s
FOR ALL ENTRIES IN gi_header
WHERE
stand = gi_header-stort.
| ENDIF. |
| After |
| * Select PO Header. |
SELECT ebeln bsart bukrs lifnr
INTO CORRESPONDING FIELDS OF TABLE gi_ekko
FROM ekko
WHERE bsart IN so_bsart AND
ebeln IN so_ebeln AND
bukrs IN so_bukrs AND
bstyp = 'F'.
* Select PO detail.
IF NOT gi_ekko[] IS INITIAL.
SELECT ebeln ebelp matnr txz01 menge
INTO CORRESPONDING FIELDS OF TABLE gi_ekpo
FROM ekpo
FOR ALL ENTRIES IN gi_ekko
WHERE ebeln = gi_ekko-ebeln.
ENDIF.
13.Modified sub routine "fm_process_data".
| Before |
*Get other requirement information
LOOP AT gi_header.
* Get Asset Description
READ TABLE gi_anla WITH KEY anln1 = gi_header-anln1
anln2 = gi_header-anln2.
IF sy-subrc = 0.
gi_header-txt50 = gi_anla-txt50.
gi_header-aktiv = gi_anla-aktiv.
ENDIF.
* Get Measurement Text
READ TABLE gi_t499s WITH KEY stand = gi_header-stort.
IF sy-subrc = 0.
gi_header-ktext = gi_t499s-ktext.
ENDIF.
MODIFY gi_header.
ENDLOOP.
| After |
* Get requirement information
LOOP AT gi_ekko.
LOOP AT gi_ekpo WHERE ebeln = gi_ekko-ebeln.
CLEAR gi_header.
* Get PO Header
gi_header-bsart = gi_ekko-bsart.
gi_header-ebeln = gi_ekko-ebeln.
gi_header-bukrs = gi_ekko-bukrs.
gi_header-lifnr = gi_ekko-lifnr.
* Get dari PO Detail
gi_header-ebelp = gi_ekpo-ebelp.
gi_header-matnr = gi_ekpo-matnr.
gi_header-txz01 = gi_ekpo-txz01.
gi_header-menge = gi_ekpo-menge.
APPEND gi_header.
ENDLOOP.
ENDLOOP.
14.Modified sub routine "fm_display_data".
| Before |
* Menampilkan Data ke Layar
LOOP AT gi_header.
macro_data_possition : 'CONTENT'
gi_header-anln1
gi_header-anln2
gi_header-txt50
gi_header-stort
gi_header-ktext
gi_header-aktiv.
IF sy-linno = lv_max_data.
PERFORM fm_footer USING lv_page_count.
NEW-PAGE.
ENDIF.
ENDLOOP.
| After |
| * Displaying Data to Screen |
LOOP AT gi_header.
macro_data_possition : 'CONTENT'
gi_header-bsart
gi_header-ebeln
gi_header-bukrs
gi_header-lifnr
gi_header-ebelp
gi_header-matnr
gi_header-txz01
gi_header-menge.
IF sy-linno = lv_max_data.
PERFORM fm_footer USING lv_page_count.
NEW-PAGE.
ENDIF.
ENDLOOP.
15.Modifed Standard Event "TOP-OF-PAGE"
| Before |
* Membuat Teks Header ( 5 Baris )
ULINE AT (p_mwidth). " Upper frame border
FORMAT COLOR COL_HEADING INTENSIFIED. " Title color
"Line 1
write : /'|' no-gap,(12) ' ' no-gap,
'|' no-gap,(4) ' ' no-gap,
'|' no-gap,(50) ' ' no-gap,
'|' no-gap,(51) 'Location' no-gap centered,
'|' no-gap,(12) ' ' no-gap,
'|' no-gap.
"Line 2
macro_data_possition : 'HEADER' 'Asset Number' 'Sub. No' 'Description' SY-ULINE SY-ULINE 'Cap. Date'.
"Line 1
macro_data_possition : 'HEADER' ' ' ' ' ' ' 'ID' 'Description' ' '.
ULINE AT (p_mwidth). " Line below titles
FORMAT COLOR OFF.
| After |
* Creating Text Header ( 3 Lines )
ULINE AT (p_mwidth). " Upper frame border
FORMAT COLOR COL_HEADING INTENSIFIED. " Title color
macro_data_possition : 'HEADER' 'Doc. Type' 'PO No.' 'Com. Code' 'Vendor' 'Item No.' 'Mat. No.' 'Description' 'Price' .
ULINE AT (p_mwidth). " Line below titles
FORMAT COLOR OFF.
16.Activated and Run Program
18.Finish
▪Input Selection

▪Output
