|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > Indonesia > ABAP Report > Display Output > Report (204) |
Objektif |
|
Kode Transaksi |
AS03 - Display Asset |
Tabel |
EKKO - Purchasing Document Header EKPO - Purchasing Document Item |
Support |
|
1.Buka SE38.
2.Salin Program "YPRACTICE_203" menjadi "YPRACTICE_204".
3.Ubah Program "YPRACTICE_204".
4.Buka Goto > Attributes, dan ubah "Title" dengan "204 - Purchase Order List".
5.Modifikasi Deklarasi Report.
Sebelum
REPORT ypractice_203
NO STANDARD PAGE HEADING.
Setelah
REPORT ypractice_204
NO STANDARD PAGE HEADING.
6.Pelajari tentang relasi antar table untuk transaksi Purchase Order di SAP. Tanyakan ke functional tentang kebutuhannnya.
Dokumen PO (PO Number) pada EKKO bisa memiliki lebih dari 1 Item (Detail) pada table EKPO.
View tCode ME23N (Contoh Gunakan PO Number 4500004823)
Cek Datanya pada SE16
|
7.Modifikasi "Tables".
Sebelum
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
TABLES : anla, anlz, t499s.
Setelah
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
TABLES : ekko, ekpo.
8.Modified Define "macro_data_possition" according to field length
| Sebelum |
| 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.
Setelah
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
| Sebelum |
*----------------------------------------------------------------------*
*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.
Setelah
*----------------------------------------------------------------------*
*GLOBAL VARIABLE DECRALATION
*----------------------------------------------------------------------*
TYPES : BEGIN OF ty_header,
* Info dari PO Header
bsart LIKE ekko-bsart,
ebeln LIKE ekko-ebeln,
bukrs LIKE ekko-bukrs,
lifnr LIKE ekko-lifnr,
* Info dari 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.Modifikasi "Input Screen/Selection".
Sebelum
*----------------------------------------------------------------------*
*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
...
...
Setelah
*----------------------------------------------------------------------*
*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.Modifikasi "EVENT"
Sebelum
text_101 = 'Selection Parameter'.
text_102 = 'Location ID'.
text_103 = 'Asset Number'.
text_104 = 'Sub Number'.
Setelah
text_101 = 'Selection Parameter'.
text_102 = 'Order Type'.
text_103 = 'PO Number'.
text_104 = 'Co Code'.
12.Modifikasi sub routine "fm_collect_data".
| Sebelum |
* 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. |
| Setelah |
| * 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.Modifikasi sub routine "fm_process_data".
| Sebelum |
*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.
| Setelah |
* 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.Modifikasi sub routine "fm_display_data".
| Sebelum |
* 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.
| Setelah |
| * Menampilkan Data ke 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.Modifikasi Standard Event "TOP-OF-PAGE"
| Sebelum |
* 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.
| Setelah |
* 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.Aktivasi dan Jalankan Program
18. Selesai
▪Seleksi Input

▪Output
