11-21-2007 6:52 AM
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
11-21-2007 6:56 AM
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, "--
lv_sec(2) TYPE c, "--
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.
11-21-2007 7:08 AM
hi rahul,
i hope it will work for my desired report ,anyways here are the points for ur help.
regards,
ric.s