2014-07-22 2 views
-1

대여 계약 생성에 사용되는 완전히 사용자 지정된 SAP 화면이 있습니다. 세금/관할 구역이 도움말/대화 상자 (즉, F4 버튼) 옵션을 사용하여 선택되면 편집 할 수없는 주 및 카운티 세금 필드가 채워집니다. 이 두 필드는 사용자가 실제 주와 카운티에 대한 세금 관할권을 확인할 수 있도록 표시하기위한 것입니다.SAP 흐름 화면이 업데이트되지 않는 로직

전체 화면의 모든 필드가 유효하도록하려면 프로그램은 아래와 같이 PAI 필드 연결을 사용합니다. 문제는 세금 관할 구역에 새 값을 직접 입력하고 Enter 키를 누르면 체인의 다른 모든 필드도 유효하지 않으면 주와 카운티가 업데이트되지 않는다는 것입니다.

아래의 다른 필드 중 하나가 유효하지 않은 경우를 제외하고 수동으로 기능 모듈 DYNP_VALUES_UPDATE을 사용하여 수동으로 상태 및 카운티 필드를 업데이트해야합니다. 체인의 다른 필드 중 하나가 유효하지 않은 경우에도 화면에서 상태 필드와 카운티 필드를 강제로 업데이트 할 수 있습니까? 나는 이것이 단순히 불가능하다고 생각하기 시작했습니다.

세금 관할 필드는 아래는 내가 처음에 F4 옵션을 사용하여 세금 관할 구역 코드를 제공 할 때 화면을 보여주는 스크린 샷입니다 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 

이라고합니다. 주, 카운티 및시뿐만 아니라 해당 세금이 업데이트됩니다. 다음을 누르면

나는 새 값을 입력하여 수동으로 세금 관할 구역을 변경 한 아래 이미지에서

enter image description here

를 누릅니다. 주, 카운티 및시뿐만 아니라 해당 세금은 동일하게 유지됩니다. 완전히 다른 값으로 업데이트해야하지만 CHAIN 문제 (즉, 필드가 유효하지 않은 상태이므로 화면 업데이트가 발생하지 않음)로 인해 나타나지 않아야합니다.

enter image description here

+0

발생한 문제를 시각적으로 설명하는 스크린 샷을 게시 할 수 있습니까? dynpros를 사용하는 것은 화면 화가가 필요하기 때문에 ABAP 코드에서 쉽게 재생산 할 수 없다는 것입니다. – Jagger

+1

* MINIMAL * 작업 예제를 제공하면 도움이되는 대답을 얻을 가능성이 훨씬 더 높습니다. 절반의 코드를 버리는 것만으로도 적어도 나를 연구 할만큼 흥미롭게 만들지는 않을 것입니다. – vwegert

+0

@vwegert는 톤 단위로 코드의 무게를 측정 할 수 있음을 깨닫지 못했습니다. 감사. –

답변

-1

당신은 언제, 어떻게 오류가 발생하는 CALL FUNCTION 'DYNP_VALUES_UPDATE'

가 재검토 사용하여 화면을 "HACK"할 수 있습니다. 현장 모듈 대 체인 모듈 문제를 피하려면. 예 : 모든 필드 모듈 및 체인 모듈 이후 오류 발생

+0

-1 그 사람이 그의 질문에이 함수 모듈을 언급했는데, 왜 당신이 대답으로 게시했는지 이해하지 못합니다 ... – Jagger

+0

PAI와 PBO가 오류가 발생했을 때 재검토하는 이유는 무엇입니까? 해킹없이 시도하고 OKCODE에 연결된 PAI에서만 오류를 발급하십시오. 나는 당신이 downvote를 설명한다는 사실을 좋아한다. 좋은 매너가 인정됩니다. –

+0

그런 다음 함수'DYNP_VALUES_UPDATE'에 대한 호출을 제거해야한다고 씁니다. 첫 번째 문장은 약간 모호합니다. 생각하지 마십시오. 나는 '해킹 해봐'라고 해석한다. – Jagger

관련 문제