SAP XSD Nillable veya xsi:nil=”true” Belirleme
Bu konu xml tarafına belirli bir alanın nill olarak belirlenmesi ile ilgilidir. (Bazı noktalarda ingilizce terimler özellikle kullanılmıştır.)
Symptom:
– Can you provide hints to a xsl to map the xsi:nil=”true” for certain parameters of type dateTime to the target in a soap message environment
Çözüm:
“Consumer proxy generate” yapıldıktan sonra se80 üzerinde ilgili nesne nillable olarak set edilmiş oluyor.
Yalnız kodlamada nil olarak bir alanı nasıl belirleyebileceğimize dair internette tam bir bilgi bulunamıyor. Aşağıda örnek çözümü görebilirsiniz.
1- Generate edilen proxy class içinde controller yer alıyor. Bunun içinde yer alan prxctrltab tablosunun doldurulması gerekiyor. Value için alanın value range içinde alabileceği değerler görünmektedir. 2 değeri nill = true
Field alanına da structure içindeki alan adı yazılmalıdır.
DATA : lt_prxctrltab TYPE prxctrltab.
DATA : ls_prxctrltab TYPE prxctrl.ls_prxctrltab–field = ‘TALEP_COZUM_ZAMANI’.
ls_prxctrltab–value = ‘2’.
2- Sistemin kullandığı protokol belirlenmekte.
DATA : lr_payload TYPE REF TO if_wsprotocol_payload .
TRY.
lr_payload ?= lr_service->get_protocol( protocol_name = if_wsprotocol=>payload ) .
CATCH cx_ai_system_fault. “
ENDTRY.
3- Extended xml handling aktifleştiriliyor.
TRY.
lr_payload->set_extended_xml_handling(
EXPORTING
extended_xml_handling = abap_true
).
CATCH cx_ai_system_fault. “
ENDTRY.
4-Ardından servisin methodu çağrılmalı
TRY.
lr_service->add_record(
EXPORTING
add_record_request = ls_isemri_in
IMPORTING
add_record_response = ls_isemri_out ).
CATCH cx_ai_system_fault .
lv_fault = abap_true.ENDTRY.