on 02-03-2012 4:40 PM
Hi,
There is a requirement to validate custom fields in ASN web UI. These fields are already been added to ASN web UI.
I have created custom validation checks for the fields and assigned them to the respective messages of the message class.
Also I have assigned the custom validation checks with standard validation profiles P001 and P003 with the following settings -
P001 ZASN_BILLOFLADINGNO_MISSING Active E Do Not Save Message Continue Checks
P001 ZASN_LOADDATE_MISSING Active E Do Not Save Message Continue Checks
P001 ZASN_PORTOFDISCHARGE_MISSING Active E Do Not Save Message Continue Checks
P001 ZASN_PORTOFLOADING_MISSING Active E Do Not Save Message Continue Checks
P001 ZASN_SEALNO_MISSING Active E Do Not Save Message Continue Checks
P001 ZASN_TRAILER_ID_MISSING Active E Do Not Save Message Continue Checks
P001 ZASN_VENDORINVOICENO_MISSING Active E Do Not Save Message Continue Checks
P001 ZASN_VESSEL_ID_MISSING Active E Do Not Save Message Continue Checks
P001 ZDLV_ITEM_MANUFACTURING_DATE_MIS Active E Do Not Save Message Continue Checks
Also implemented the BADI /SCMB/BOL_VALFRMWRK with the following code in the method /SCMB/IF_EX_BOL_VALFRMWRK~VALIDATE -
Edited by: rkb_1984 on Feb 3, 2012 5:42 PM
method /SCMB/IF_EX_BOL_VALFRMWRK~VALIDATE.
DATA: lo_svdelivery TYPE REF TO /sca/cl_svdelivery,
ls_delivery TYPE /SCMB/DM_DELVRY_STR,
lt_delivery TYPE /scmb/dm_delvry_tab,
lw_item LIKE LINE OF ls_delivery-item,
lo_log_prot TYPE REF TO /scmb/cl_bol_prot,
lv_msgv1 TYPE symsgv,
lv_ztest_date TYPE dats.
* Check that we have called for the check(s) we want to implement.
CHECK ip_val_chk-val_profile EQ 'P003' OR
ip_val_chk-val_profile EQ 'P001'.
CHECK ip_val_chk-val_check EQ 'ZASN_VESSEL_ID_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_LOADDATE_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_PORTOFLOADING_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_PORTOFDISCHARGE_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_SEALNO_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_VENDORINVOICENO_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_TRAILER_ID_MISSING' OR
ip_val_chk-val_check EQ 'ZDLV_ITEM_MANUFACTURING_DATE_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_BILLOFLADINGNO_MISSING'.
* Initialize the local log
CREATE OBJECT lo_log_prot.
CALL METHOD lo_log_prot->init( ).
* get service class
lo_svdelivery ?= ip_object.
* get the order to be checked
CALL METHOD lo_svdelivery->GET
IMPORTING
* ES_DLV =
ET_DLV = lt_delivery.
READ TABLE lt_delivery INTO ls_delivery INDEX 1.
IF sy-subrc EQ 0.
CASE ip_val_chk-val_check.
WHEN 'ZASN_VESSEL_ID_MISSING'.
IF ls_delivery-vessel IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_LOADDATE_MISSING'.
IF ls_delivery-loaded_date IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_PORTOFLOADING_MISSING'.
IF ls_delivery-port_of_loading IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_PORTOFDISCHARGE_MISSING'.
IF ls_delivery-port_of_dischar IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_SEALNO_MISSING'.
IF ls_delivery-seat_no IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_VENDORINVOICENO_MISSING'.
IF ls_delivery-vendor_inv_no IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_TRAILER_ID_MISSING'.
IF ls_delivery-transport_means-id IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZDLV_ITEM_MANUFACTURING_DATE_MISSING'.
LOOP AT ls_delivery-item INTO lw_item.
IF lw_item-product-manufacturing_date IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
ENDLOOP.
WHEN 'ZASN_BILLOFLADINGNO_MISSING'.
IF ls_delivery-waybill_id IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
ENDCASE.
ENDIF.
endmethod.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I tried by coding an implicit enhancement in the method SAVE_HDR_DATA of classes /SCF/CL_FRMBOX_ASNM_HDR1 and /SCF/CL_FRMBOX_ASNM_HDR2 -
IF ls_dlvdetails_enh-loaded_date IS INITIAL.
MESSAGE e713 INTO lv_trash_enh.
p_msglog->add_message(
iv_msgty = sy-msgty
iv_msgno = sy-msgno
iv_msgid = sy-msgid
iv_probclass = '4'
).
RAISE EXCEPTION TYPE /scf/cx_uifrm_stop_evtprop.
ENDIF.
However it interferes with the standard Validation messages and prevents many warnings to be displayed.
Is there any way out?
Thanks,
Rohit
The code in the BADI implementation is as follows -
method /SCMB/IF_EX_BOL_VALFRMWRK~VALIDATE.
DATA: lo_svdelivery TYPE REF TO /sca/cl_svdelivery,
ls_delivery TYPE /SCMB/DM_DELVRY_STR,
lt_delivery TYPE /scmb/dm_delvry_tab,
lw_item LIKE LINE OF ls_delivery-item,
lo_log_prot TYPE REF TO /scmb/cl_bol_prot,
lv_msgv1 TYPE symsgv,
lv_ztest_date TYPE dats.
* Check that we have called for the check(s) we want to implement.
CHECK ip_val_chk-val_profile EQ 'P003' OR
ip_val_chk-val_profile EQ 'P001'.
CHECK ip_val_chk-val_check EQ 'ZASN_VESSEL_ID_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_LOADDATE_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_PORTOFLOADING_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_PORTOFDISCHARGE_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_SEALNO_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_VENDORINVOICENO_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_TRAILER_ID_MISSING' OR
ip_val_chk-val_check EQ 'ZDLV_ITEM_MANUFACTURING_DATE_MISSING' OR
ip_val_chk-val_check EQ 'ZASN_BILLOFLADINGNO_MISSING'.
* Initialize the local log
CREATE OBJECT lo_log_prot.
CALL METHOD lo_log_prot->init( ).
* get service class
lo_svdelivery ?= ip_object.
* get the order to be checked
CALL METHOD lo_svdelivery->GET
IMPORTING
* ES_DLV =
ET_DLV = lt_delivery.
READ TABLE lt_delivery INTO ls_delivery INDEX 1.
IF sy-subrc EQ 0.
CASE ip_val_chk-val_check.
WHEN 'ZASN_VESSEL_ID_MISSING'.
IF ls_delivery-vessel IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_LOADDATE_MISSING'.
IF ls_delivery-loaded_date IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_PORTOFLOADING_MISSING'.
IF ls_delivery-port_of_loading IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_PORTOFDISCHARGE_MISSING'.
IF ls_delivery-port_of_dischar IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_SEALNO_MISSING'.
IF ls_delivery-seat_no IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_VENDORINVOICENO_MISSING'.
IF ls_delivery-vendor_inv_no IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZASN_TRAILER_ID_MISSING'.
IF ls_delivery-transport_means-id IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
WHEN 'ZDLV_ITEM_MANUFACTURING_DATE_MISSING'.
LOOP AT ls_delivery-item INTO lw_item.
IF lw_item-product-manufacturing_date IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
ENDLOOP.
WHEN 'ZASN_BILLOFLADINGNO_MISSING'.
IF ls_delivery-waybill_id IS INITIAL.
CALL METHOD lo_log_prot->add_message
EXPORTING
ip_msgty = 'E'
ip_msgid = ip_chkcmp-msg_id
ip_msgno = ip_chkcmp-msg_no
ip_msgv1 = 'DUMMY'.
et_prot = lo_log_prot->get_prot( ).
ENDIF.
ENDCASE.
ENDIF.
endmethod.
User | Count |
---|---|
7 | |
4 | |
3 | |
2 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.