Views 354
Visitors 221

Report (204) - Create Report Purchase Order List

Home 
| Top Page | Threads |
Previous  Next

Objective

Transaction Code

SE38 - ABAP Editor

AS03 - Display Asset

Tables

EKKO - Purchasing Document Header

EKPO - Purchasing Document Item

Support

 

 

Membuat Report

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.

Display Steps

Documents PO (PO Number) on EKKO has more than 1 Item (Details) on the table EKPO.

 

ar0283

 

ar0284 ar0285

 

 

View tCode ME23N   (Example use PO Number 4500004823)

 

ar0286

 

Check Data on SE16

 

ar0287

 

 

ar0288

 

 

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

 

 

Result

Input Selection

ar0290

 

Output

ar0291

 

 

User Threads | New Thread ( Only for Donators )

Threads Last Post Replies Views