diff --git a/src/zbp_hs_i_rappartner.clas.locals_imp.abap b/src/zbp_hs_i_rappartner.clas.locals_imp.abap index 469b181..977f623 100644 --- a/src/zbp_hs_i_rappartner.clas.locals_imp.abap +++ b/src/zbp_hs_i_rappartner.clas.locals_imp.abap @@ -3,6 +3,10 @@ CLASS lhc_Partner DEFINITION INHERITING FROM cl_abap_behavior_handler. METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION IMPORTING keys REQUEST requested_authorizations FOR Partner RESULT result. + METHODS validatekeyisfilled FOR VALIDATE ON SAVE + IMPORTING keys FOR partner~validatekeyisfilled. + METHODS validatecoredata FOR VALIDATE ON SAVE + IMPORTING keys FOR partner~validatecoredata. ENDCLASS. @@ -11,4 +15,62 @@ CLASS lhc_Partner IMPLEMENTATION. METHOD get_instance_authorizations. ENDMETHOD. + METHOD validateKeyisFilled. + + LOOP AT keys INTO DATA(ls_key) WHERE PartnerNumber IS INITIAL. + + INSERT VALUE #( PartnerNumber = ls_key-PartnerNumber ) INTO TABLE failed-partner. + + INSERT VALUE #( PartnerNumber = ls_key-PartnerNumber + %msg = new_message_with_text( severity = if_abap_behv_message=>severity-error + text = 'Partnernumber is mandatory' ) + ) INTO TABLE reported-partner. + ENDLOOP. + + ENDMETHOD. + + METHOD validateCoreData. + + READ ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE + ENTITY Partner + FIELDS ( Country PaymentCurrency ) + WITH CORRESPONDING #( keys ) + RESULT DATA(lt_partner_data) + FAILED DATA(ls_failed) + REPORTED DATA(ls_reported). + + LOOP AT lt_partner_data INTO DATA(ls_partner). + SELECT SINGLE FROM i_country + FIELDS Country + WHERE Country = @ls_partner-country + INTO @DATA(ld_found_country). + + IF sy-subrc <> 0. + INSERT VALUE #( PartnerNumber = ls_partner-PartnerNumber ) INTO TABLE failed-partner. + + INSERT VALUE #( + PartnerNumber = ls_partner-PartnerNumber + %msg = new_message_with_text( text = 'Country not found in I_Country' ) + %element-country = if_abap_behv=>mk-on + ) INTO TABLE reported-partner. + ENDIF. + + SELECT SINGLE FROM I_Currency + FIELDS Currency + WHERE Currency = @ls_partner-PaymentCurrency + INTO @DATA(ld_found_currency). + IF sy-subrc <> 0. + INSERT VALUE #( PartnerNumber = ls_partner-PartnerNumber ) INTO TABLE failed-partner. + + INSERT VALUE #( + PartnerNumber = ls_partner-PartnerNumber + %msg = new_message_with_text( text = 'Currency not found in I_Currency' ) + %element-paymentcurrency = if_abap_behv=>mk-on + ) INTO TABLE reported-partner. + ENDIF. + + ENDLOOP. + + ENDMETHOD. + ENDCLASS. diff --git a/src/zhs_i_rappartner.bdef.asbdef b/src/zhs_i_rappartner.bdef.asbdef index aed0845..69005c4 100644 --- a/src/zhs_i_rappartner.bdef.asbdef +++ b/src/zhs_i_rappartner.bdef.asbdef @@ -11,6 +11,10 @@ authorization master ( instance ) update; delete; + validation validateKeyisFilled on save { create; } + validation validateCoreData on save { create; field Country, PaymentCurrency; } + + mapping for zhs_dmo_partner { PartnerNumber = partner;