You are on page 1of 7

*&---------------------------------------------------------------------*

*& Report ZTEST_ALV_WORKFLOW


*
*&
*
*&---------------------------------------------------------------------*
*&
*
*&
*
*&---------------------------------------------------------------------*
REPORT ZTEST_ALV_WORKFLOW
.
*&---------------------------------------------------------------------*
*Data Declarations
*&---------------------------------------------------------------------*
PARAMETERS : p_status(30).
DATA status_variant LIKE swr_struct-selstavar.
DATA
DATA
DATA
DATA

workitem1 TYPE STANDARD TABLE OF swr_wihdr WITH HEADER LINE.


workitem TYPE STANDARD TABLE OF swr_wihdr WITH HEADER LINE.
I_EKKO TYPE STANDARD TABLE OF EKKO WITH HEADER LINE.
I_EKKO1 TYPE STANDARD TABLE OF EKKO WITH HEADER LINE.

DATA: WA_EKKO TYPE EKKO.


DATA: wa_EKKO1 TYPE EKKO.
Data ibf_object type SIBFLPORBT .
DATA objkey LIKE swotobjid-objkey.
Data : Begin of t_outtab occurs 0,
WI_ID TYPE SWWWIHEAD-WI_ID,
WI_TYPE TYPE SWWWIHEAD-WI_TYPE,
WI_TEXT TYPE SWWWIHEAD-WI_TEXT,
WI_STAT TYPE SWWWIHEAD-WI_STAT,
STATUSTEXT TYPE swr_wihdr-STATUSTEXT,
WI_CD TYPE SWWWIHEAD-WI_CD,
WI_CT TYPE SWWWIHEAD-WI_CT,
WI_CD_FTD TYPE SWR_WIHDR-WI_CD_FTD,
WI_CT_FTD TYPE SWR_WIHDR-WI_CT_FTD,
WI_AAGENT LIKE SWWWIHEAD-WI_AAGENT,
WI_AA_NAME LIKE SWR_WIHDR-WI_AA_NAME,
WI_RH_TASK LIKE SWWWIHEAD-WI_RH_TASK,
WI_RHTEXT LIKE SWWWIHEAD-WI_RHTEXT,
TYPEID LIKE SIBFLPORB-TYPEID,
EBELN LIKE EKKO-EBELN,
End of t_outtab.
DATA OBJECT TYPE SWOTOBJID.
DATA element_ibf_object TYPE SIBFLPORB.
Data wa_ibf_object type SIBFLPORB.
Data: wf_cdate TYPE bkpf-bldat.
data : c_date type SWWWIRET-WI_AED.
Data WORKITEM_WI_ID like SWWWIHEAD-WI_ID VALUE '597635' .
*&---------------------------------------------------------------------*
*ALV Declarations
TYPE-POOLS: SLIS.
data: FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV.
***********************************************************************
*
Declarations for ALV
***********************************************************************
data: st_cat

type

slis_fieldcat_alv,

st_keyinfo
st_sort
st_events
st_layout
st_excluding
data : itab_fldcat
itab_variant
itab_sort
itab_events

type
type
type
type
type
type
like
type
type

slis_keyinfo_alv,
slis_sortinfo_alv,
slis_alv_event,
slis_layout_alv,
slis_extab.
slis_t_fieldcat_alv,
disvariant occurs 0 with header line,
slis_t_sortinfo_alv,
slis_t_event.

data: gt_header type SLIS_T_LISTHEADER occurs 0.


data : itab_wi type standard table of SWWWIHEAD with header line.
data : i_wi type STANDARD TABLE OF swwwihead WITH HEADER LINE,
i_agent_list TYPE STANDARD TABLE OF swhactor WITH HEADER LINE.
*&---------------------------------------------------------------------*
*START-OF-SELECTION
*&---------------------------------------------------------------------*
IF p_status IS INITIAL .
*All Instances
status_variant = 0000.
ELSE.
IF p_status = 'COMPLETED'.
* Finished Instances (Completed, Cancelled)
status_variant = 0002 .
ELSE.
* Active Instances (Running, Ready, Committed,...)
status_variant = 0001.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*Function call to get work items based on Business Document
objkey = '4500012164'.
CALL FUNCTION 'SAP_WAPI_WORKITEMS_TO_OBJECT'
EXPORTING
objtype
= 'ZOBJ71'
objkey
= objkey
selection_status_variant = status_variant
text
= 'X'
language
= sy-langu
TABLES
worklist
= workitem1.
*-----------------------------------------------------------*
IF workitem1[] IS NOT INITIAL.
LOOP AT workitem1.
*-----------------------------------------------------------*
*Workitem ID
t_outtab-WI_ID = workitem1-WI_ID.
*Workitem Type
t_outtab-WI_TYPE = workitem1-WI_TYPE.
*Workitem Text
t_outtab-WI_TEXT = workitem1-WI_TEXT.
*-----------------------------------------------------------*
*Workitem Creation Date
t_outtab-WI_CD = workitem1-WI_CD.
*Workitem Creation Time

t_outtab-WI_CT = workitem1-WI_CT.
*Workitem Completion Date
t_outtab-WI_CD_FTD = workitem1-WI_CD_FTD.
*Workitem Completion Time
t_outtab-WI_CT_FTD = workitem1-WI_CT_FTD.
*-----------------------------------------------------------*
*Workitem Status
t_outtab-WI_STAT = workitem1-WI_STAT.
*Workitem Status Text
t_outtab-STATUSTEXT = workitem1-STATUSTEXT.
*-----------------------------------------------------------*
*Workitem Agent
t_outtab-WI_AAGENT = workitem1-WI_AAGENT.
*Workitem Agent Name
t_outtab-WI_AA_NAME = workitem1-WI_AA_NAME.
*-----------------------------------------------------------*
*Workflow Template
t_outtab-WI_RH_TASK = workitem1-WI_RH_TASK.
*Workflow Template Desc
t_outtab-WI_RHTEXT = workitem1-WI_RHTEXT.
*Get BO From container elements for workitems
CALL FUNCTION 'SWW_WI_CONTAINER_READ_OBJECTS'
EXPORTING
wi_id
= workitem1-wi_id
IMPORTING
ibf_objects
= ibf_object
EXCEPTIONS
no_objects_found = 1
OTHERS
= 2.
IF sy-subrc <> 0.
ENDIF.
*PO Number
READ TABLE ibf_object into wa_ibf_object index 1.
t_outtab-EBELN = wa_ibf_object-INSTID.
t_outtab-TYPEID = wa_ibf_object-TYPEID.
Append t_outtab.
ENDLOOP.
ENDIF.
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*Prepare ALV Catalog
*Fill field catalog details:
perform fieldcat_init using FIELD_CAT[].
*Get ALV Events
** Populate Events table
perform alv_prepare_event_list.
** modify events table.
perform alv_modify_event_list.
*Call ALV Grid Function
* display the list using alv
perform display.
*---------------------------------------------------------------------*
*
FORM DISPLAY
*
*---------------------------------------------------------------------*

*
........
*
*---------------------------------------------------------------------*
form display.
data item like ekko occurs 0 with header line.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= sy-repid
IT_FIELDCAT
= field_cat
IT_EVENTS
= itab_events
TABLES
t_outtab
= t_outtab
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.
*&---------------------------------------------------------------------*
*Display Workflow log: When Workitem text is clicked, display workflow
*log
*&---------------------------------------------------------------------*
*&
Form USER_COMMAND
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->R_UCOMM
text
*
-->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA v_row TYPE slis_selfield-tabindex.
DATA element_ibf_object LIKE sibflporb .
DATA object TYPE swotobjid.
*Data r_ucomm like sy-ucomm.
CASE r_ucomm.
WHEN '&IC1'.
IF rs_selfield-fieldname = 'WI_TEXT'.
v_row = rs_selfield-tabindex.
READ TABLE t_outtab INDEX v_row.
CALL FUNCTION 'SWL_WI_DISPLAY'
EXPORTING
wi_id
= t_outtab-wi_id
show_steplog = 'X'.
CLEAR: v_row.
ELSEIF rs_selfield-fieldname = 'EBELN'.
SET PARAMETER ID 'RID' FIELD t_outtab-EBELN.
CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.
ENDIF.

ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form fieldcat_init
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_GT_FIELDCAT[] text
*----------------------------------------------------------------------*
FORM fieldcat_init USING
P_FIELDCAT type SLIS_T_FIELDCAT_ALV.
data: L_FIELDCAT type slis_fieldcat_alv.
data : pos type i value 1.
*Workitem ID:
clear L_FIELDCAT.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_ID'.
= 'Workitem ID'.
p_fieldcat.

*Workitem TYPE:
clear L_FIELDCAT.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_TYPE'.
= 'Workitem Type'.
p_fieldcat.

*Workitem TEXT:
clear L_FIELDCAT.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_TEXT'.
= 'Workitem Text'.
p_fieldcat.

*Creation Date:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_CD'.
= 'Creation Date'.
p_fieldcat.

*Creation Time:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_CT'.
= 'Creation Time'.
p_fieldcat.

*Completion Date:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_CD_FTD'.
= 'Completion Date'.
p_fieldcat.

*Completion Time:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_CT_FTD'.
= 'Completion Time'.
p_fieldcat.

*Status:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_STAT'.
= 'WI Status'.
p_fieldcat.

*Status Text:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'STATUSTEXT'.
= 'WI Status Text'.
p_fieldcat.

*Agent:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_AAGENT'.
= 'WI Agent'.
p_fieldcat.

*Agent Name:
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_AA_NAME'.
= 'WI Agent Name'.
p_fieldcat.

*Workflow Template :
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_RH_TASK'.
= 'Workflow Template'.
p_fieldcat.

*Workflow Template Text:


pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'WI_RHTEXT'.
= 'Workflow Template Desc'.
p_fieldcat.

*Document Number
pos = pos + 1.

clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to
*Business Object
pos = pos + 1.
clear l_fieldcat.
l_fieldcat-col_pos
l_fieldcat-fieldname
l_fieldcat-SELTEXT_M
append l_fieldcat to

= POS.
= 'EBELN'.
= 'PO Number'.
p_fieldcat.

= POS.
= 'TYPEID'.
= 'Business Object'.
p_fieldcat.

ENDFORM.
" fieldcat_init
*&---------------------------------------------------------------------*
*&
Form alv_PREPARE_EVENT_LIST
*&---------------------------------------------------------------------*
*
Call all the events of ALV.
*----------------------------------------------------------------------*
form alv_prepare_event_list.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type
= 0
importing
et_events
= itab_events
exceptions
list_type_wrong = 1
others
= 2.
endform.
" ALV_PREPARE_EVENT_LIST
*&---------------------------------------------------------------------*
*&
Form ALV_MODIFY_EVENT_LIST
*&---------------------------------------------------------------------*
form alv_modify_event_list.
* USER_COMMAND.
clear st_events.
read table itab_events
into st_events with key name = 'USER_COMMAND'.
if sy-subrc eq 0.
st_events-form = 'USER_COMMAND'.
modify itab_events from st_events index sy-tabix.
endif.
endform.

You might also like