Anda di halaman 1dari 7

1

2
3
4
5
IF flt_val IS NOT INITIAL.
lv_message_type = flt_val.
*Check if the Message Type is ZGSD_DOC_UPDATES
CALL FUNCTION 'Y_IGSO_CHK_VALUE'
EXPORTING
project_id = 'SRM_GSD'
prog_include_name = 'IF_EX_BDCP_BEFORE_WRITE~FILTER_BDCPV_BEF'
form_name = 'MAIN'
code_name = 'BDCP_BEFORE_MESS_TYPE'
code_value = lv_message_type
pass_related_val = 'X'
EXCEPTIONS
no_header_recs_found = 1
no_item_recs_found = 2
OTHERS = 3.
IF sy-subrc = 0.
*Get valid list of Document Types
CALL FUNCTION 'Y_IGSO_CHK_VALUE'
EXPORTING
project_id = 'SRM_GSD'
prog_include_name = 'IF_EX_BDCP_BEFORE_WRITE~FILTER_BDCPV_BEF'
form_name = 'MAIN'
code_name = 'BDCP_BEFORE_WRITE'
TABLES
t_items = lt_before_write
EXCEPTIONS
no_header_recs_found = 1
no_item_recs_found = 2
OTHERS = 3.
IF sy-subrc = 0.
*Make a list of valid document types according to CODEI values
LOOP AT lt_before_write INTO ls_before_write.
ls_auart-sign = 'I'.
ls_auart-option = 'EQ'.
ls_auart-low = ls_before_write-zvalues.
APPEND ls_auart TO lr_auart.
ENDLOOP.
*Now lets see if this is a doc type that we need to do a change pointer for
CLEAR: lt_change_points.
IF change_pointers[] IS NOT INITIAL.
*Get the doc type from vbak
SELECT vbeln auart
INTO TABLE lt_change_points
FROM vbak
FOR ALL ENTRIES IN change_pointers
WHERE vbeln = change_pointers-cdobjid(10).
ENDIF.
IF sy-subrc = 0.
*Remove documents not included into valid list
LOOP AT lt_change_points INTO ls_change_points WHERE auart NOT IN l
r_auart.
DELETE change_pointers WHERE cdobjid = ls_change_points-vbeln.
ENDLOOP.

6
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.

Anda mungkin juga menyukai