Report (204)

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > Indonesia > ABAP Report > Display Output >

Report (204)

Objektif

Membuat Report

Hasil

Kode Sintak

Kode Transaksi

SE38 - ABAP Editor

AS03 - Display Asset

Tabel

EKKO - Purchasing Document Header

EKPO - Purchasing Document Item

Support

 

 

Membuat Report

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.

Tampilkan langkah-langkahnya

 

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

17.Buat T-Code "YP204"

18. Selesai

 

 

 

 

Hasil

Seleksi Input

ar0290

 

Output

ar0291