Skip to Content
0
Former Member
Mar 06, 2009 at 03:41 AM

regarding po details report

70 Views

Hi I have 2 check boxes in the selection screen

if we check p_gr then the details of created by changed by released by good recipted by should be displayed for only goods recipted purchase orders.

if we dont check p_gr then the details of created by changed by released by good recipted by should be displayed for goods recipted purchase orders as well as released purchased orders though they are not goods recipted.

in this code i have problem with line items .ie the details of line items if they are changed released

i need the correct logic of using cdhdr and cdpos in the below code.

the record in cdpos is like this for tabkey-200450001639800020 for po 4500016398 if i change line item 20 in the below code.

TABLES: ekko,t16fd,cdhdr,cdpos,t000,lfa1,t024,ekbe,mkpf.

TYPE-POOLS slis.

DATA:BEGIN OF st_output,

ebeln LIKE ekko-ebeln,

batxt LIKE t161t-batxt,

banfn LIKE eban-banfn,

bukrs LIKE ekko-bukrs,

frggr LIKE ekko-frggr,

frgsx LIKE ekko-frgsx,

frgct LIKE t16fd-frgct,

udate LIKE cdhdr-udate,

utime like cdhdr-utime,

username LIKE cdhdr-username,

lifnr LIKE ekko-lifnr, " vendor

name1 LIKE lfa1-name1, " vendor name

ebelp LIKE ekpo-ebelp, " line no.

afnam LIKE ekpo-afnam, " requisitioner

netwr LIKE ekpo-netwr,

ekgrp LIKE ekko-ekgrp,

eknam LIKE t024-eknam,

ernam LIKE ekko-ernam,

grnam LIKE ekbe-ernam,

bedat LIKE ekko-bedat,

budat LIKE ekbe-budat,

belnr LIKE ekbe-belnr,

dmbtr LIKE ekbe-dmbtr,

cdate LIKE cdhdr-username,

END OF st_output.

DATA: l_ponum LIKE ekko-ebeln,

l_poline LIKE ekpo-ebelp.

DATA: BEGIN OF t_EKbe OCCURS 0,

ebeln LIKE EKbe-ebeln,

belnr LIKE EKbe-Belnr,

budat LIKE EKbe-Budat,

cputm LIKE EKbe-cputm,

END OF T_EKbe.

DATA: BEGIN OF T_mkpf OCCURS 0,

mblnr LIKE mkpf-mblnr,

usnam LIKE mkpf-usnam,

END OF T_mkpf.

DATA: t_cdhdr LIKE cdhdr OCCURS 0 WITH HEADER LINE,

t_cdhdr1 LIKE cdhdr OCCURS 0 WITH HEADER LINE,

po_ekko LIKE ekko OCCURS 0 WITH HEADER LINE.

data: begin of t_cdpos occurs 0,

tabkey type cdpos-tabkey,

end of t_cdpos.

data: begin of t_cdpos1 occurs 0,

tabkey(5) type c,

end of t_cdpos1.

DATA: BEGIN OF tbl_output OCCURS 0.

INCLUDE STRUCTURE st_output.

DATA: END OF tbl_output.

DATA: BEGIN OF tbl_ekpo OCCURS 0.

INCLUDE STRUCTURE ekpo.

DATA: END OF tbl_ekpo.

DATA: BEGIN OF tbl_ekbe OCCURS 0.

INCLUDE STRUCTURE ekbe.

DATA: END OF tbl_ekbe.

DATA: BEGIN OF t_ekko OCCURS 0,

ebeln TYPE ebeln,

ebelp TYPE ebelp,

belnr TYPE MBLNR,

bukrs TYPE bukrs,

bsart TYPE bsart,

bedat TYPE bedat,

budat TYPE budat,

ernam TYPE ernam,

grnam TYPE ernam,

dmbtr TYPE dmbtr,

END OF t_ekko.

DATA: c_tcode(25) TYPE c.

DATA: st_fieldcat TYPE slis_fieldcat_alv.

DATA: tbl_fieldcat TYPE slis_t_fieldcat_alv.

DATA: st_event TYPE slis_alv_event.

DATA: tbl_events TYPE slis_t_event.

DATA: fieldname(30) TYPE c.

DATA: st_layout TYPE slis_layout_alv.

DATA: g_status TYPE slis_formname VALUE 'STANDARD01'.

DATA: g_user_command TYPE slis_formname VALUE 'USER_COMMAND'.

DATA: st_status TYPE slis_status.

DATA: tbl_status TYPE slis_status OCCURS 0 WITH HEADER LINE.

DATA: f_ebeln LIKE ekko-ebeln.

DATA: cursorfield LIKE ekko-ebeln.

DATA: ws_ebeln LIKE ekko-ebeln,

ws_netwr LIKE ekpo-netwr,

ws_ernam LIKE ekbe-ernam,

rs_selfield TYPE slis_selfield,

ws_dmbtr LIKE ekbe-dmbtr.

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

SELECT-OPTIONS: s_bukrs FOR ekko-bukrs OBLIGATORY,

s_ekorg FOR ekko-ekorg OBLIGATORY,

s_ebeln FOR ekko-ebeln,

s_groups FOR ekko-ekgrp,

s_lifnr FOR ekko-lifnr,

s_bedat FOR ekko-bedat,

s_budat FOR ekbe-budat,

s_bsart FOR ekko-bsart.

SELECTION-SCREEN END OF BLOCK title .

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

PARAMETERS: p_gr AS CHECKBOX DEFAULT 'X',

p_excep AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK title2 .

AT SELECTION-SCREEN.

IF NOT p_gr IS INITIAL.

IF s_budat IS INITIAL.

MESSAGE s000 WITH 'Please enter Goods Receipt Date.'.

STOP.

ENDIF.

ELSE.

IF s_bedat IS INITIAL.

MESSAGE s000 WITH 'Please enter Purch Doc Date.'.

STOP.

ENDIF.

ENDIF.

*

START-OF-SELECTION.

PERFORM select_data. " Select data

PERFORM sort_table.

PERFORM get_events. " Include header in display

PERFORM get_eventstatus. " Set the GUI status

PERFORM get_layout. " Define ALV Layout

PERFORM get_fieldcat. " Fill report fields

PERFORM create_report. " Write ALV format

AT LINE-SELECTION.

PERFORM user_command USING sy-ucomm

rs_selfield.

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

DATA: l_ta TYPE sy-tcode VALUE 'SLIS_DUMMY'.

CLEAR: f_ebeln.

CASE r_ucomm.

WHEN 'CF1'.

READ TABLE tbl_output INDEX rs_selfield-tabindex.

IF sy-subrc = 0.

f_ebeln = tbl_output-ebeln.

ENDIF.

SET PARAMETER ID 'BES' FIELD f_ebeln.

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

  • Begin of R3DK912404

WHEN 'EXIT' OR 'CANC'.

LEAVE PROGRAM.

  • End of R3DK912404

WHEN 'OTHERS'.

ENDCASE.

ENDFORM. "user_command

FORM standard_01 USING extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD01' EXCLUDING extab .

ENDFORM. "standard_01

FORM get_events.

CLEAR st_event.

st_event-name = 'TOP_OF_PAGE'.

st_event-form = 'PROCESS_TOP_OF_PAGE'.

APPEND st_event TO tbl_events.

ENDFORM. " get_events

FORM get_eventstatus.

CLEAR st_status.

st_status-callback_pf_status_set = 'STANDARD_01'.

APPEND st_status TO tbl_status.

ENDFORM. " get_eventstatus

FORM get_layout.

CLEAR st_layout.

st_layout-zebra = 'X'.

ENDFORM. " get_layout

FORM get_fieldcat.

PERFORM write_fieldcat USING 'EBELN' 'TBL_OUTPUT' 'EKKO' 'X' 1 ' '.

PERFORM write_fieldcat USING 'BUKRS' 'TBL_OUTPUT' 'EKKO' 'X' 2 ' '.

PERFORM write_fieldcat USING 'EBELP' 'TBL_OUTPUT' 'EKPO' 'X' 3 ' '.

PERFORM write_fieldcat USING 'UDATE' 'TBL_OUTPUT' ' ' ' ' 4

'Doc. Date'.

PERFORM write_fieldcat USING 'UTIME' 'TBL_OUTPUT' ' ' ' ' 13

'Doc. Time'.

PERFORM write_fieldcat USING 'BUDAT' 'TBL_OUTPUT' ' ' ' ' 5

'GR Date'.

PERFORM write_fieldcat USING 'ERNAM' 'TBL_OUTPUT' ' ' ' ' 6

'Created By'.

PERFORM write_fieldcat USING 'USERNAME' 'TBL_OUTPUT' ' ' ' ' 7

'Released By'.

PERFORM write_fieldcat USING 'GRNAM' 'TBL_OUTPUT' ' ' ' ' 8

'Goods Receipted By'.

PERFORM write_fieldcat USING 'CDATE' 'TBL_OUTPUT' ' ' ' ' 9

'Changed By'.

PERFORM write_fieldcat USING 'NETWR' 'TBL_OUTPUT' ' ' ' ' 10

'Total Value'.

PERFORM write_fieldcat USING 'EKGRP' 'TBL_OUTPUT' 'EKKO' ' ' 11 ' '.

PERFORM write_fieldcat USING 'DMBTR' 'TBL_OUTPUT' ' ' ' ' 12

'GR Value '.

PERFORM write_fieldcat USING 'NAME1' 'TBL_OUTPUT' ' ' ' ' 13

'Vendor Name'.

ENDFORM. " get_fieldcat

FORM process_top_of_page.

SKIP.

ULINE.

FORMAT COLOR COL_HEADING INTENSIFIED OFF .

WRITE:/ 'Report Name : Purchase Order Actions Report',

/ 'Run Date : ', sy-datum,

/ 'Run Time : ', sy-uzeit,

/ 'Company code : ', s_bukrs-low.

IF NOT s_bukrs-high IS INITIAL.

WRITE: 'To', s_bukrs-high.

ENDIF.

WRITE:/ 'Purch Org : ', s_ekorg-low.

IF NOT s_ekorg-high IS INITIAL.

WRITE: 'To', s_ekorg-high.

ENDIF.

WRITE:/ 'Goods Receipt Date:', s_budat-low.

IF NOT s_budat-high IS INITIAL.

WRITE: 'To', s_budat-high.

ENDIF.

WRITE:/ 'Purch Doc Date : ', s_bedat-low.

IF NOT s_bedat-high IS INITIAL.

WRITE: 'To', s_bedat-high.

ENDIF.

ULINE.

FORMAT COLOR COL_HEADING INTENSIFIED OFF.

ENDFORM. " process_top_of_page

FORM create_report.

SORT tbl_output BY ebeln ebelp.