2014-07-22 18 views
-1

我有一個完全定製的SAP屏幕用於創建租賃協議。當使用幫助/對話框(即F4按鈕)選項選擇稅收管轄區時,會導致填寫不可編輯的州和縣稅務字段。這兩個字段是嚴格顯示的,以便用戶可以根據實際州和縣驗證其稅收管轄權。SAP流程邏輯導致屏幕不更新

爲確保整個屏幕上的所有字段都有效,程序使用PAI字段鏈接,如下所示。問題是,如果我在稅務管理區域手動輸入新值並按回車鍵,則除非鏈中的所有其他字段也有效,否則狀態和縣不會更新。

我手動強制使用功能模塊DYNP_VALUES_UPDATE更新州和縣字段,除非下列其中一個字段無效,否則效果很好。即使鏈條中的其他字段無效,我如何強制州和縣字段在屏幕上更新?我開始認爲這根本不可能。

的稅收管轄權場被稱爲kna1-txjcd

PROCESS BEFORE OUTPUT. 
MODULE status_0100. 

MODULE setup_defaults.    

MODULE screen_modify.     

MODULE ltext_add_comments_0100. 

PROCESS AFTER INPUT. 

MODULE cancel AT EXIT-COMMAND. 
MODULE user_command_0100. 


FIELD t001-bukrs MODULE check_sales_org.     "DV1K933404 


FIELD kna1-j_3gagext 
MODULE check_customer_sales_area. 

CHAIN. 

FIELD: kna1-j_3gagext 
     MODULE check_cust_num. 
MODULE verify_recipient.        "DV1K935780 
FIELD: zsd_etm_contract-bill_to_party 
     MODULE check_bill_to_party. 
FIELD zsd_etm_contract-payer 
     MODULE check_payer_number.      "CHG12588 

ENDCHAIN. 
CHAIN. 
FIELD: kna1-txjcd 
     MODULE check_txjcd.        "DV1K933404 

FIELD: zsd_etm_contract-rig_num, 
     zsd_etm_contract-ship_via. 

FIELD zsd_etm_contract-well_name. 

FIELD: 
     zdls_ls, zdls_sc, zdls_twp, zdls_rg, zdls_m. 
FIELD: znts_qtr_unit, znts_unit, znts_block, 
     znts_map. 
FIELD: zlsd_other. 
MODULE check_lsd_num . 

FIELD: zsd_etm_contract-contact_tel_num, 
     zsd_etm_contract-cus_rep_loc, 
     zsd_etm_contract-cus_rep_tel_num, 
     zsd_etm_contract-cus_rep_fax_num, 
     zsd_etm_contract-cus_rep_email,     "dv1k931160 
     zsd_etm_contract-lrg_contract,     "DV1K935629 
     t001-bukrs,          "DV1K935752 
     zsd_etm_contract-lrg_camp,      "DV1K935752 
     zsd_etm_contract-customer_contact.    "DV1K931062 

FIELD: 
    zsd_etm_contract-cus_rep_loc 
     MODULE check_cus_rep_loc, 
    zsd_etm_contract-afe, 
    zsd_etm_contract-po, 
    zsd_etm_contract-msa, 
    zsd_etm_contract-cost_center, 
    zsd_etm_contract-gl 
      MODULE check_afe_po_msa_num, 
    zsd_etm_contract-invoice_approval 
     MODULE check_invoice_approval, 
    zsd_etm_contract-usage_type 
     MODULE check_usage_type. 
FIELD: zsd_etm_contract-lrg_contract,     "DV1K935629 
     t001-bukrs,          "DV1K935752 
     zsd_etm_contract-lrg_camp.      "DV1K935752 
MODULE check_lrg_entries.        "DV1K935752 


FIELD: 
    zsd_etm_contract-prl_rep 
     MODULE check_prl_rep, 
    zsd_etm_contract-branch 
     MODULE check_branch, 
    zsd_etm_contract-bill_region, t001-bukrs 
     MODULE check_bill_region, 
    zsd_etm_contract-eoj_bill 
     MODULE check_eoj_bill, 
    zsd_etm_contract-sd_shd_flag, 
    zsd_etm_contract-next_set_date 
     MODULE check_next_set_date, 
    zsd_etm_contract-audit_flag, 
    zsd_etm_contract-ratetype. " CHG13225 DV1K939527 

ENDCHAIN. 


CHAIN. 
FIELD: zsd_etm_contract-usage_type, 
     zsd_etm_contract-well_type. 
MODULE check_well_type. 
ENDCHAIN. 

FIELD zsd_etm_contract-well_type. 
MODULE get_well_type_text. 

FIELD zsd_etm_contract-unit_num MODULE check_unit_num. 

CHAIN. 
FIELD: zsd_etm_contract-afe, 
     zsd_etm_contract-po, 
     zsd_etm_contract-msa, 
     zsd_etm_contract-gl. 
MODULE combine_fields. 
ENDCHAIN. 

MODULE fill_wa_etm_contract. 
MODULE check_ltext. 

MODULE user_command_create_0100. 

PROCESS ON VALUE-REQUEST. 
FIELD: kna1-txjcd 
     MODULE help_txjcd, 
    zsd_etm_contract-prl_rep 
     MODULE help_prel_rep, 
    zsd_etm_contract-bill_to_party 
     MODULE help_bill_to_party. 
FIELD: zsd_etm_contract-payer 
     MODULE help_payer. 
FIELD: zsd_etm_contract-ratetype " CHG13225 DV1K939527 
     MODULE help_ratetype. " CHG13225 DV1K939527 

UPDATE 下面是截圖,顯示畫面時,我最初提供使用F4選項的稅收轄區代碼。請注意,州,縣和城市以及相應的稅收都會更新。

enter image description here

在下面的圖像I通過提供一個新的值輸入手動改變稅務管轄,接着按回車。請注意,州,縣和市以及相應的稅收保持不變。它們應該更新爲完全不同的值,但由於CHAIN問題(即屏幕更新不會發生,因爲字段處於無效狀態),似乎沒有這樣做。

enter image description here

+0

您還可以發佈一些屏幕截圖來直觀地描述您遇到的問題。與dynpros的事情是,他們是不容易從ABAP代碼複製,因爲屏幕畫家是必要的。 – Jagger

+1

如果您提供* MINIMAL *工作示例,那麼您很可能會得到有用的答案。至少對我而言,僅僅傾銷半噸代碼就不太可能使這個研究有趣。 – vwegert

+0

@vwegert沒有意識到你可以用噸來衡量代碼。謝謝。 –

回答

-1

你可以在 「黑客」 利用CALL FUNCTION 'DYNP_VALUES_UPDATE'

重新考慮何時以及如何錯誤拋出的屏幕。 避免現場模塊與鏈模塊問題。 eg在所有現場模塊和鏈模塊之後發出錯誤

+0

-1這個傢伙在他的問題中提到了這個功能模塊,所以我不明白你爲什麼把它作爲答案發布...... – Jagger

+0

這就是爲什麼你重新考慮錯誤是什麼時候問題,所以PAI和PBO運行。只嘗試沒有連接到OKCODE的PAI中的黑客和問題錯誤。我喜歡你解釋downvote的事實。很高興有禮貌。 –

+0

然後寫出應該刪除函數'DYNP_VALUES_UPDATE'的調用。第一句話有點模棱兩可,你不覺得。我把'你可以'HACK''解釋爲'嘗試黑客...'。 – Jagger