2012-10-16 20 views
2

我試圖檢查一個字段是否初始化或不在sm30中,並創建了一個表。我去了表維護髮電機,然後環境 - >變通>活動,並與下面的代碼(在保存在數據庫中的數據之前)由具有01型入口命名check_class:維護視圖事件,用於檢查字段是否是初始的

FORM CHECK_CLASS. 

IF z10ficlassfica-z_class IS INITIAL. 
    MESSAGE text-001 TYPE 'E'. 
ENDIF. 

ENDFORM. 

它的工作原理所有除了當z10ficlassfica是初始時,它不會停留在表格的維護中並轉到sm30的第一個屏幕。我怎樣才能讓它留在sm30的維護屏幕上?希望我已經說清楚了。謝謝。

+0

時,如果使用爲messageType「E」時,當前上下文被中止。嘗試另一種更適合您的案例的消息類型,例如'S'或'I'。請參閱此處瞭解不同的消息類型及其對正在運行的程序的影響:http://help.sap.com/saphelp_470/helpdata/en/9f/dbaae335c111d1829f0000e829fbfe/content.htm –

+0

是的,但我不希望它保存填寫該字段的條目。 S是爲了成功,所以它不是很適合。我的信息,不知道它是否是正確的。但我會嘗試。謝謝。 –

+1

請編輯原始問題,而不是添加另一個。我已經回答了這個問題:不要使用事件,而是修改生成的屏幕。事件在這裏是不合適的,因爲你必須在屏幕LOOP語句中提高MESSAGE。 – vwegert

回答

2

請參閱本link

  • 您可以使用事件,並要使用它們,不去修改生成的屏幕,這就是爲什麼SAP提供的事件。
  • 你只需要兩件事情來阻止保存和留在屏幕上
    • MESSAGE 'Currency must be USD or IDR' TYPE 'S' DISPLAY LIKE 'E'.
    • vim_abort_saving = 'X'.
  • 閱讀的鏈接,有很多的,你在這裏需要的信息。
  • 作爲一個很好的做法,使用了錯誤的錯誤信息記錄的關鍵,因此用戶可以查找記錄的後面進入了數以千計的新紀錄
+0

謝謝你,這也是有效的,它比我取得的成就更加優雅。 –

+0

從我的角度來看,這是一種低劣的方法:您失去了突出顯示包含無效值的字段的選項。想象一張擁有數千行的表格 - 您必須爲自己搜索無效的條目。這是一個糟糕的飛行方式。 – vwegert

+0

@vwegert,這僅適用於新條目,當您單擊SM30中的「添加新條目」時,沒有數千行,所有現有條目都被隱藏。 – tomdemuyt

2

請編輯your original question而不是添加另一個。我已經回答了這個問題:不要使用事件,而是修改生成的屏幕。事件在這裏不合適,因爲您必須在屏幕LOOP聲明中提高MESSAGE