Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Regarding Purchase Requsition Report

Former Member
0 Kudos

hi,

i am making report in which i want to display that<b> these are the requisitions which are approved by these persons at these dates.

</b>

its really urgent for me and if anybody help me out he or she will be definitely rewarded.

regards,

ric.s

2 REPLIES 2

Former Member
0 Kudos

Here is the code.

and it will display list of approvers and their status also upto 5/6 approvers.

check the code.

&----


*& Report ZPR *

*& *

&----


*& *

*& *

&----


REPORT zpr

MESSAGE-ID zmsg.

include <icon>.

TABLES eban. "Purchase Requisition Table

  • For selection screen that it should give error only on F8(execution) not on enter

TABLES: sscrfields.

TYPE-POOLS: slis. " Structure for ALV

  • Table for storing data from eban table

DATA: BEGIN OF it_eban OCCURS 0,

banfn LIKE eban-banfn, " Purchase Requisition

bnfpo LIKE eban-bnfpo, " Item No. of Purchase Req.

bsart LIKE eban-bsart, " Purchase Req. Type

loekz LIKE eban-loekz, " Deletion Indicator

frgzu like eban-frgzu, " Release status "#rg

werks like eban-werks, "#rg

frgst LIKE eban-frgst, " Release Startegy

ernam LIKE eban-ernam, " Name of Person who Created the Object

txz01 LIKE eban-txz01, " Description

matnr LIKE eban-matnr, " Material No.

menge LIKE eban-menge, " Quantity

meins(10) TYPE c, " Unit

badat LIKE eban-badat, " Date

knttp LIKE eban-knttp, " Account Assignment

ebeln LIKE eban-ebeln, " Purchase Order

frggr LIKE eban-frggr, " Release Group

banpr LIKE eban-banpr, " Approval Status

rlwrt LIKE eban-rlwrt, " Dollar Value

status TYPE string, " Status Text

ernam1 LIKE eban-ernam, " Approver Name

stat1 type string,

ernam2 LIKE eban-ernam, " Approver Name

stat2 type string,

ernam3 LIKE eban-ernam, " Approver Name

stat3 type string,

ernam4 LIKE eban-ernam, " Approver Name

stat4 type string,

ernam5 LIKE eban-ernam, " Approver Name

stat5 type string,

ernam6 LIKE eban-ernam, " Approver Name

stat6 type string,

END OF it_eban.

  • Table for extracting codes of approver on the basis of release strategy

DATA: BEGIN OF it_t16fs OCCURS 0,

frggr LIKE t16fs-frggr, " Release group

frgsx LIKE t16fs-frgsx, " Release Strategy

frgc1 LIKE t16fs-frgc1, " Release Code

frgc2 LIKE t16fs-frgc2, " Release Code

frgc3 LIKE t16fs-frgc3, " Release Code

frgc4 LIKE t16fs-frgc4, " Release Code

frgc5 LIKE t16fs-frgc5, " Release Code

frgc6 LIKE t16fs-frgc6, " Release Code

END OF it_t16fs.

  • Table for extracting names of approver on the basis of codes from t16fs

  • #rg

*DATA: BEGIN OF it_t16fw OCCURS 0,

  • frggr LIKE t16fw-frggr, " Release Group

  • frgco LIKE t16fw-frgco, " Release Code

  • objid LIKE t16fw-objid, " Object ID

  • END OF it_t16fw.

*

data: it_t16fw type t16fw occurs 0 with header line.

  • #rg end

  • Variables

DATA: v_flag TYPE c, " Control Flag

v_date(10) TYPE c, " To Store Date

v_data TYPE i. " To Store No. of Records

***********************************************************************************

  • VARIABLES FOR ALV *

***********************************************************************************

DATA: v_report_id LIKE sy-repid,

v_layout TYPE slis_layout_alv,

v_fieldcatalog TYPE slis_t_fieldcat_alv,

v_header TYPE slis_t_listheader.

DATA: it_alv_sort TYPE slis_t_sortinfo_alv.

  • #rg

data: begin of it_eban_approval occurs 0,

banfn LIKE eban-banfn, " Purchase Requisition

bnfpo LIKE eban-bnfpo, " Item No. of Purchase Req.

bsart LIKE eban-bsart, " Purchase Req. Type

loekz LIKE eban-loekz, " Deletion Indicator

frgst LIKE eban-frgst, " Release Startegy

frgzu like eban-frgzu, " Release Status

frgco like t16fw-frgco, " Release code

objid like t16fw-objid,

rel_stat type c,

end of it_eban_approval.

***********************************************************************************

  • SELECTION SCREEN *

***********************************************************************************

  • first block of selection screen

*SELECTION-SCREEN PUSHBUTTON /10(20) name USER-COMMAND ucom.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_banpr FOR eban-banpr, " Approval Status

s_date FOR sy-datum OBLIGATORY, " Date

s_rlwrt FOR eban-rlwrt, " Dollar Value

s_ernam FOR eban-ernam, " Approver

s_afnam FOR eban-afnam, " Requisitioner

p_loekz FOR eban-loekz " Deletion Indicator

NO-EXTENSION

NO INTERVALS.

SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN.

IF s_date-high IS INITIAL.

s_date-high = s_date-low.

ENDIF.

START-OF-SELECTION.

PERFORM select_data.

END-OF-SELECTION.

  • checking whether any data selected then only process further performs

IF v_flag = 'X'.

MESSAGE i004.

EXIT.

ENDIF.

perform build_data.

PERFORM prepare_output.

***********************************************************************************

  • PERFORMS TO GENERATE ALV *

***********************************************************************************

PERFORM alv_build_layout CHANGING v_layout.

PERFORM alv_build_fieldcat CHANGING v_fieldcatalog.

PERFORM alv_build_header CHANGING v_header.

PERFORM alv_sort_data.

PERFORM alv_display_list.

&----


*& Form select_data

&----


  • text

----


FORM select_data.

SELECT banfn bnfpo

bsart loekz

frgzu werks "#rg

frgst ernam

txz01 matnr

menge meins

badat knttp

ebeln frggr

banpr rlwrt

FROM eban

INTO CORRESPONDING FIELDS OF TABLE it_eban

WHERE loekz IN p_loekz

AND afnam IN s_afnam

AND badat IN s_date

AND banpr IN s_banpr

AND ernam IN s_ernam

AND rlwrt IN s_rlwrt.

IF sy-subrc NE 0.

v_flag = 'X'. "setting flag that wont allow to process further performs

EXIT.

ENDIF.

SORT it_eban BY banfn badat.

IF it_eban[] IS NOT INITIAL.

SELECT frggr frgsx

frgc1 frgc2

frgc3 frgc4

frgc5 frgc6

FROM t16fs

INTO CORRESPONDING FIELDS OF TABLE it_t16fs

FOR ALL ENTRIES IN it_eban

WHERE frggr = it_eban-frggr

AND frgsx = it_eban-frgst.

IF sy-subrc EQ 0.

SELECT *

FROM t16fw

INTO TABLE it_t16fw.

ENDIF.

ENDIF.

ENDFORM. " select_data

form build_data.

data: l_start type n value is initial.

data: l_off type i value is initial.

data: l_len type i value is initial.

data: l_x type c value is initial.

data: l_app_count type n value is initial.

data: l_index like sy-tabix value is initial.

  • build table it_eban_approver using it_eban, it_t16fs, it_t16fw

loop at it_eban.

  • get the release strategy and codes

clear it_t16fs.

read table it_t16fs with key frggr = it_eban-frggr

frgsx = it_eban-frgst.

if sy-subrc = 0.

if it_t16fs-frgc1 is not initial.

clear it_t16fw.

read table it_t16fw with key frggr = it_eban-frggr

frgco = it_t16fs-frgc1

werks = it_eban-werks.

if sy-subrc = 0.

move-corresponding it_eban to it_eban_approval.

it_eban_approval-frgco = it_t16fs-frgc1.

it_eban_approval-objid = it_t16fw-objid.

insert it_eban_approval index 1.

clear it_eban_approval.

endif.

endif.

if it_t16fs-frgc2 is not initial.

clear it_t16fw.

read table it_t16fw with key frggr = it_eban-frggr

frgco = it_t16fs-frgc2

werks = it_eban-werks.

if sy-subrc = 0.

move-corresponding it_eban to it_eban_approval.

it_eban_approval-frgco = it_t16fs-frgc2.

it_eban_approval-objid = it_t16fw-objid.

insert it_eban_approval index 1.

clear it_eban_approval.

endif.

endif.

if it_t16fs-frgc3 is not initial.

clear it_t16fw.

read table it_t16fw with key frggr = it_eban-frggr

frgco = it_t16fs-frgc3

werks = it_eban-werks.

if sy-subrc = 0.

move-corresponding it_eban to it_eban_approval.

it_eban_approval-frgco = it_t16fs-frgc3.

it_eban_approval-objid = it_t16fw-objid.

insert it_eban_approval index 1.

clear it_eban_approval.

endif.

endif.

if it_t16fs-frgc4 is not initial.

clear it_t16fw.

read table it_t16fw with key frggr = it_eban-frggr

frgco = it_t16fs-frgc4

werks = it_eban-werks.

if sy-subrc = 0.

move-corresponding it_eban to it_eban_approval.

it_eban_approval-frgco = it_t16fs-frgc4.

it_eban_approval-objid = it_t16fw-objid.

insert it_eban_approval index 1.

clear it_eban_approval.

endif.

endif.

if it_t16fs-frgc5 is not initial.

clear it_t16fw.

read table it_t16fw with key frggr = it_eban-frggr

frgco = it_t16fs-frgc5

werks = it_eban-werks.

if sy-subrc = 0.

move-corresponding it_eban to it_eban_approval.

it_eban_approval-frgco = it_t16fs-frgc5.

it_eban_approval-objid = it_t16fw-objid.

insert it_eban_approval index 1.

clear it_eban_approval.

endif.

endif.

if it_t16fs-frgc6 is not initial.

clear it_t16fw.

read table it_t16fw with key frggr = it_eban-frggr

frgco = it_t16fs-frgc6

werks = it_eban-werks.

if sy-subrc = 0.

move-corresponding it_eban to it_eban_approval.

it_eban_approval-frgco = it_t16fs-frgc6.

it_eban_approval-objid = it_t16fw-objid.

insert it_eban_approval index 1.

clear it_eban_approval.

endif.

endif.

endif.

endloop.

  • loop over it_eban_approval to mark the release status for each approver

l_index = 1.

loop at it_eban_approval.

at new bnfpo.

read table it_eban with key banfn = it_eban_approval-banfn

bnfpo = it_eban_approval-bnfpo.

if sy-subrc = 0.

l_index = sy-tabix.

endif.

l_start = 1.

l_len = 0.

l_off = 0.

l_app_count = 0.

endat.

  • find 'X' in it_eban_approval-frgzu match offset l_off match length l_len.

l_app_count = l_app_count + 1.

if l_start = 1.

search it_eban_approval-frgzu for 'X' starting at 1.

if sy-subrc = 0.

l_off = sy-fdpos.

endif.

l_start = 0.

endif.

l_x = it_eban_approval-frgzu+l_off(1).

if l_x = 'X'.

it_eban_approval-rel_stat = 'X'.

modify it_eban_approval.

l_off = l_off + 1.

endif.

case l_app_count.

when '1'.

it_eban-ernam1 = it_eban_approval-objid.

if it_eban_approval-rel_stat = 'X'.

it_eban-stat1 = icon_checked.

else.

it_eban-stat1 = icon_led_yellow.

endif.

modify it_eban index l_index transporting ernam1 stat1 .

when '2'.

it_eban-ernam2 = it_eban_approval-objid.

if it_eban_approval-rel_stat = 'X'.

it_eban-stat2 = icon_checked.

else.

it_eban-stat2 = icon_led_yellow.

endif.

modify it_eban index l_index transporting ernam2 stat2.

when '3'.

it_eban-ernam3 = it_eban_approval-objid.

if it_eban_approval-rel_stat = 'X'.

it_eban-stat3 = icon_checked.

else.

it_eban-stat3 = icon_led_yellow.

endif.

modify it_eban index l_index transporting ernam3 stat3.

when '4'.

it_eban-ernam4 = it_eban_approval-objid.

if it_eban_approval-rel_stat = 'X'.

it_eban-stat4 = icon_checked.

else.

it_eban-stat4 = icon_led_yellow.

endif.

modify it_eban index l_index transporting ernam4 stat4.

when '5'.

it_eban-ernam5 = it_eban_approval-objid.

if it_eban_approval-rel_stat = 'X'.

it_eban-stat5 = icon_checked.

else.

it_eban-stat5 = icon_led_yellow.

endif.

modify it_eban index l_index transporting ernam5 stat5.

when '6'.

it_eban-ernam6 = it_eban_approval-objid.

if it_eban_approval-rel_stat = 'X'.

it_eban-stat6 = icon_checked.

else.

it_eban-stat6 = icon_led_yellow.

endif.

modify it_eban index l_index transporting ernam6 stat6.

endcase.

clear eban.

endloop.

endform.

&----


*& Form alv_build_layout

&----


FORM alv_build_layout CHANGING v_layout TYPE slis_layout_alv.

CLEAR v_layout.

v_layout-no_input = 'X'.

v_layout-zebra = 'X'.

ENDFORM. " alv_build_layout

&----


*& Form alv_build_fieldcat

&----


FORM alv_build_fieldcat CHANGING v_fieldcatalog TYPE slis_t_fieldcat_alv.

DATA: line_fieldcat TYPE slis_fieldcat_alv.

line_fieldcat-fieldname = 'BANFN'.

line_fieldcat-seltext_m = text-002.

line_fieldcat-col_pos = 0.

line_fieldcat-outputlen = 11.

line_fieldcat-key = 'X'.

line_fieldcat-fix_column = 'X'.

APPEND line_fieldcat TO v_fieldcatalog.

CLEAR line_fieldcat.

line_fieldcat-fieldname = 'BNFPO'.

line_fieldcat-seltext_m = text-004.

line_fieldcat-col_pos = 1.

line_fieldcat-outputlen = 11.

line_fieldcat-key = 'X'.

line_fieldcat-fix_column = 'X'.

APPEND line_fieldcat TO v_fieldcatalog.

CLEAR line_fieldcat.

line_fieldcat-fieldname = 'EBELN'.

line_fieldcat-seltext_m = text-003.

line_fieldcat-col_pos = 2.

line_fieldcat-outputlen = 11.

APPEND line_fieldcat TO v_fieldcatalog.

CLEAR line_fieldcat.

line_fieldcat-fieldname = 'BSART'.

line_fieldcat-seltext_m = text-005.

line_fieldcat-col_pos = 3.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'BADAT'.

line_fieldcat-seltext_m = text-006.

line_fieldcat-col_pos = 4.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'KNTTP'.

line_fieldcat-seltext_m = text-007.

line_fieldcat-col_pos = 5.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'MATNR'.

line_fieldcat-seltext_m = text-008.

line_fieldcat-col_pos = 6.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'TXZ01'.

line_fieldcat-seltext_m = text-009.

line_fieldcat-col_pos = 7.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'MENGE'.

line_fieldcat-seltext_m = text-010.

line_fieldcat-col_pos = 8.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'MEINS'.

line_fieldcat-seltext_m = text-011.

line_fieldcat-col_pos = 9.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'ERNAM'.

line_fieldcat-seltext_m = text-012.

line_fieldcat-col_pos = 10.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'FRGST'.

line_fieldcat-seltext_m = text-013.

line_fieldcat-col_pos = 11.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'STATUS'.

line_fieldcat-seltext_m = text-014.

line_fieldcat-col_pos = 12.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'ERNAM1'.

line_fieldcat-seltext_m = text-015.

line_fieldcat-col_pos = 13.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'STAT1'.

line_fieldcat-seltext_m = text-035.

line_fieldcat-col_pos = 14.

line_fieldcat-outputlen = 2.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'ERNAM2'.

line_fieldcat-seltext_m = text-024.

line_fieldcat-col_pos = 15.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'STAT2'.

line_fieldcat-seltext_m = text-035.

line_fieldcat-col_pos = 16.

line_fieldcat-outputlen = 2.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'ERNAM3'.

line_fieldcat-seltext_m = text-025.

line_fieldcat-col_pos = 17.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'STAT3'.

line_fieldcat-seltext_m = text-035.

line_fieldcat-col_pos = 18.

line_fieldcat-outputlen = 2.

APPEND line_fieldcat TO v_fieldcatalog.

loop at it_eban where ernam4 is not initial.

endloop.

if sy-subrc = 0.

line_fieldcat-fieldname = 'ERNAM4'.

line_fieldcat-seltext_m = text-026.

line_fieldcat-col_pos = 19.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'STAT4'.

line_fieldcat-seltext_m = text-035.

line_fieldcat-col_pos = 20.

line_fieldcat-outputlen = 2.

APPEND line_fieldcat TO v_fieldcatalog.

endif.

loop at it_eban where ernam5 is not initial.

endloop.

if sy-subrc = 0.

line_fieldcat-fieldname = 'ERNAM5'.

line_fieldcat-seltext_m = text-027.

line_fieldcat-col_pos = 21.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'STAT5'.

line_fieldcat-seltext_m = text-035.

line_fieldcat-col_pos = 22.

line_fieldcat-outputlen = 2.

APPEND line_fieldcat TO v_fieldcatalog.

endif.

loop at it_eban where ernam6 is not initial.

endloop.

if sy-subrc = 0.

line_fieldcat-fieldname = 'ERNAM6'.

line_fieldcat-seltext_m = text-028.

line_fieldcat-col_pos = 23.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'STAT6'.

line_fieldcat-seltext_m = text-035.

line_fieldcat-col_pos = 24.

line_fieldcat-outputlen = 2.

APPEND line_fieldcat TO v_fieldcatalog.

endif.

line_fieldcat-fieldname = 'RLWRT'.

line_fieldcat-seltext_m = text-017.

line_fieldcat-col_pos = 25.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

line_fieldcat-fieldname = 'LOEKZ'.

line_fieldcat-seltext_m = text-018.

line_fieldcat-col_pos = 26.

line_fieldcat-outputlen = 12.

APPEND line_fieldcat TO v_fieldcatalog.

ENDFORM. "alv_build_fieldcat

&----


*& Form alv_build_header

&----


FORM alv_build_header CHANGING v_header TYPE slis_t_listheader.

v_report_id = sy-repid.

DATA: lv_st_line TYPE slis_listheader, "variable for header that needs to pass to ALV

lv_date(57) TYPE c, "variable for passing run date to header

lv_hour(2) TYPE c, "variable for extracting hour from current time

lv_min(2) TYPE c, "--


min--


lv_sec(2) TYPE c, "--


sec--


lv_time(25) TYPE c, "variable for passing run time to header

lv_header(60) TYPE c, "variable for displaying second line of header

v_count(5) TYPE c.

CLEAR lv_st_line.

lv_st_line-typ = 'H'.

  • building first line of header

lv_st_line-info = text-019.

APPEND lv_st_line TO v_header.

  • passing low date value to FM that will convert into external format

PERFORM date_to_external_format USING s_date-low.

  • concatinating result of FM into second line header

CONCATENATE v_date text-020 INTO lv_header SEPARATED BY space.

CLEAR v_date. " clearing variable that passed to FM

  • passing high date value to FM that will change its format

PERFORM date_to_external_format USING s_date-high.

  • concatinating result of FM into second line of header

CONCATENATE text-029 lv_header v_date INTO lv_header SEPARATED BY space.

CLEAR v_date. "clearing date variable

lv_st_line-info = lv_header.

lv_st_line-typ = 'S'.

APPEND lv_st_line TO v_header.

  • extracting hour , min and sec from curent time

lv_hour = sy-timlo+0(2).

lv_min = sy-timlo+2(2).

lv_sec = sy-timlo+4(2).

  • building alv header for runtime and run date

PERFORM date_to_external_format USING sy-datlo. " changing date to output format

  • concatinating values of hour min and sec into run time variable

CONCATENATE lv_hour ':' lv_min ':' lv_sec INTO lv_time.

  • concatinating date and time with text element

CONCATENATE text-022 v_date text-023 lv_time text-030 sy-uname INTO lv_date SEPARATED BY space.

  • appending header , date and time to alv header.

lv_st_line-info = lv_date.

lv_st_line-typ = 'A'. "setting type of header for date

APPEND lv_st_line TO v_header.

CLEAR lv_header.

DESCRIBE TABLE it_eban LINES v_data.

v_count = v_data.

CONCATENATE text-031 v_count INTO lv_header SEPARATED BY space.

lv_st_line-info = lv_header.

lv_st_line-typ = 'A'. "setting type of header for no. of records

APPEND lv_st_line TO v_header.

ENDFORM. " f3000_build_header

&----


*& Form date_to_external_format1

&----


  • for converting system date to output format as system date and

  • s_date type are different thats why we used another same FM.

----


FORM date_to_external_format USING lv_date LIKE sy-datum .

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'

EXPORTING

date_internal = lv_date

IMPORTING

date_external = v_date

EXCEPTIONS

date_internal_is_invalid = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " date_to_external_format

&----


*& Form alv_sort_data

&----


FORM alv_sort_data.

DATA: wa_alv_sort TYPE slis_sortinfo_alv.

wa_alv_sort-spos = 1.

wa_alv_sort-fieldname = 'BANFN'.

wa_alv_sort-up = 'X'.

APPEND wa_alv_sort TO it_alv_sort.

ENDFORM. "alv_top_of_page

&----


*& Form alv_top_of_page

&----


FORM alv_top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = v_header.

ENDFORM. "alv_top_of_page

&----


*& Form alv_display_list

&----


FORM alv_display_list.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = v_report_id

is_layout = v_layout

it_fieldcat = v_fieldcatalog

it_sort = it_alv_sort

i_save = 'A'

i_callback_top_of_page = 'ALV_TOP_OF_PAGE'

i_callback_user_command = 'USER_COMMAND'

TABLES

t_outtab = it_eban

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. "alv_display_list

&----


*& Form prepare_output

&----


----


FORM prepare_output .

LOOP AT it_eban.

CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'

EXPORTING

input = it_eban-meins

language = sy-langu

IMPORTING

long_text = it_eban-meins

EXCEPTIONS

unit_not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CALL FUNCTION 'CONVERSION_EXIT_MATN2_OUTPUT'

EXPORTING

input = it_eban-matnr

IMPORTING

output = it_eban-matnr.

CASE it_eban-banpr.

WHEN '01'.

it_eban-status = text-032.

WHEN '02'.

it_eban-status = text-032.

WHEN '03'.

it_eban-status = text-032.

WHEN '04'.

it_eban-status = text-032.

WHEN '05'.

it_eban-status = text-033.

WHEN '08'.

it_eban-status = text-034.

ENDCASE.

  • #rg

  • READ TABLE it_t16fs WITH KEY frggr = it_eban-frggr frgsx = it_eban-frgst.

  • IF sy-subrc = 0.

  • READ TABLE it_t16fw WITH KEY frggr = it_t16fs-frggr frgco = it_t16fs-frgc1.

  • IF sy-subrc = 0.

  • it_eban-ernam1 = it_t16fw-objid.

  • ENDIF.

*

  • READ TABLE it_t16fw WITH KEY frggr = it_t16fs-frggr frgco = it_t16fs-frgc2.

  • IF sy-subrc = 0.

  • it_eban-ernam2 = it_t16fw-objid.

  • ENDIF.

*

  • READ TABLE it_t16fw WITH KEY frggr = it_t16fs-frggr frgco = it_t16fs-frgc3.

  • IF sy-subrc = 0.

  • it_eban-ernam3 = it_t16fw-objid.

  • ENDIF.

*

  • READ TABLE it_t16fw WITH KEY frggr = it_t16fs-frggr frgco = it_t16fs-frgc4.

  • IF sy-subrc = 0.

  • it_eban-ernam4 = it_t16fw-objid.

  • ENDIF.

*

  • READ TABLE it_t16fw WITH KEY frggr = it_t16fs-frggr frgco = it_t16fs-frgc5.

  • IF sy-subrc = 0.

  • it_eban-ernam5 = it_t16fw-objid.

  • ENDIF.

*

  • READ TABLE it_t16fw WITH KEY frggr = it_t16fs-frggr frgco = it_t16fs-frgc6.

  • IF sy-subrc = 0.

  • it_eban-ernam6 = it_t16fw-objid.

  • ENDIF.

  • ENDIF.

  • #rg end

MODIFY it_eban.

ENDLOOP.

ENDFORM. " prepare_output

&----


*& Form user_command

&----


  • For the 3 Buttons (View, Print Order & Print List)

----


  • R_UCOMM Capturing the User Intervention Code

  • RS_SELFIELD

----


FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.

DATA: v_ebeln TYPE ebeln,

v_banfn TYPE banfn.

CASE rs_selfield-fieldname.

  • To View Purchase Requisition

WHEN 'BANFN'.

v_banfn = rs_selfield-value.

CALL FUNCTION 'MMHR_REQUISITION_DISPLAY'

EXPORTING

preqnr = v_banfn.

  • To View Purchase Order

WHEN 'EBELN'.

v_ebeln = rs_selfield-value.

CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'

EXPORTING

i_ebeln = v_ebeln

EXCEPTIONS

not_found = 1

no_authority = 2

invalid_call = 3

preview_not_possible = 4

OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDCASE.

ENDFORM. " user_command

PS:plz award points if iit helps.

0 Kudos

hi rahul,

i hope it will work for my desired report ,anyways here are the points for ur help.

regards,

ric.s