diff --git a/src/zbp_hs_i_rappartner.clas.locals_imp.abap b/src/zbp_hs_i_rappartner.clas.locals_imp.abap index de32bb3..860937a 100644 --- a/src/zbp_hs_i_rappartner.clas.locals_imp.abap +++ b/src/zbp_hs_i_rappartner.clas.locals_imp.abap @@ -13,7 +13,9 @@ CLASS lhc_Partner DEFINITION INHERITING FROM cl_abap_behavior_handler. IMPORTING keys FOR ACTION partner~clearallemptystreets. METHODS fillemptystreets FOR MODIFY - IMPORTING keys FOR ACTION partner~fillemptystreets. + IMPORTING keys FOR ACTION partner~fillemptystreets RESULT result. + METHODS copyline FOR MODIFY + IMPORTING keys FOR ACTION partner~copyline. ENDCLASS. @@ -99,39 +101,82 @@ CLASS lhc_Partner IMPLEMENTATION. METHOD clearAllEmptyStreets. - SELECT FROM zhs_dmo_partner - FIELDS partner, street - WHERE street = 'EMPTY' - INTO TABLE @DATA(lt_partner_data). + SELECT FROM zhs_dmo_partner + FIELDS partner, street + WHERE street = 'EMPTY' + INTO TABLE @DATA(lt_partner_data). - LOOP AT lt_partner_data INTO DATA(ls_partner). - MODIFY ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE - ENTITY Partner - UPDATE FIELDS ( Street ) - WITH VALUE #( ( PartnerNumber = ls_partner-partner Street = '' %control-Street = if_abap_behv=>mk-on ) ). - ENDLOOP. + LOOP AT lt_partner_data INTO DATA(ls_partner). + MODIFY ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE + ENTITY Partner + UPDATE FIELDS ( Street ) + WITH VALUE #( ( PartnerNumber = ls_partner-partner Street = '' %control-Street = if_abap_behv=>mk-on ) ). + ENDLOOP. - INSERT VALUE #( - %msg = new_message_with_text( text = |{ lines( lt_partner_data ) } records changed| - severity = if_abap_behv_message=>severity-success ) - ) INTO TABLE reported-partner. + INSERT VALUE #( + %msg = new_message_with_text( text = |{ lines( lt_partner_data ) } records changed| + severity = if_abap_behv_message=>severity-success ) + ) INTO TABLE reported-partner. ENDMETHOD. METHOD fillEmptyStreets. - READ ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE - ENTITY Partner - FIELDS ( Street ) - WITH CORRESPONDING #( keys ) - RESULT DATA(lt_partner_data). - - LOOP AT lt_partner_data INTO DATA(ls_partner) WHERE Street IS INITIAL. - MODIFY ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE + READ ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE ENTITY Partner - UPDATE FIELDS ( Street ) - WITH VALUE #( ( %tky = ls_partner-%tky Street = 'EMPTY' %control-Street = if_abap_behv=>mk-on ) ). - ENDLOOP. + FIELDS ( Street ) + WITH CORRESPONDING #( keys ) + RESULT DATA(lt_partner_data). + + LOOP AT lt_partner_data INTO DATA(ls_partner) WHERE Street IS INITIAL. + MODIFY ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE + ENTITY Partner + UPDATE FIELDS ( Street ) + WITH VALUE #( ( %tky = ls_partner-%tky Street = 'EMPTY' %control-Street = if_abap_behv=>mk-on ) ). + + INSERT VALUE #( %tky = ls_partner-%tky %param = ls_partner ) INTO TABLE result. + ENDLOOP. + + ENDMETHOD. + + METHOD copyLine. + + DATA: + lt_creation TYPE TABLE FOR CREATE ZHS_I_RAPPartner. + + READ ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE + ENTITY Partner ALL FIELDS WITH CORRESPONDING #( keys ) + RESULT DATA(lt_partner_data). + + SELECT FROM zhs_dmo_partner + FIELDS MAX( partner ) + INTO @DATA(ld_number). + + LOOP AT lt_partner_data INTO DATA(ls_partner). + ld_number += 1. + ls_partner-PartnerNumber = ld_number. + ls_partner-PartnerName &&= | copy|. + + + INSERT VALUE #( %cid = keys[ sy-tabix ]-%cid ) INTO TABLE lt_creation REFERENCE INTO DATA(lr_create). + + lr_create->* = CORRESPONDING #( ls_partner ). + lr_create->%cid = keys[ sy-tabix ]-%cid. + lr_create->%control-PartnerNumber = if_abap_behv=>mk-on. + lr_create->%control-PartnerName = if_abap_behv=>mk-on. + lr_create->%control-Street = if_abap_behv=>mk-on. + lr_create->%control-City = if_abap_behv=>mk-on. + lr_create->%control-Country = if_abap_behv=>mk-on. + lr_create->%control-PaymentCurrency = if_abap_behv=>mk-on. + ENDLOOP. + + MODIFY ENTITIES OF ZHS_I_RAPPartner IN LOCAL MODE + ENTITY Partner CREATE FROM lt_creation + FAILED DATA(ls_failed) + MAPPED DATA(ls_mapped) + REPORTED DATA(ls_reported). + + mapped-partner = ls_mapped-partner. ENDMETHOD. diff --git a/src/zhs_c_rappartner.bdef.asbdef b/src/zhs_c_rappartner.bdef.asbdef index 8522655..231b212 100644 --- a/src/zhs_c_rappartner.bdef.asbdef +++ b/src/zhs_c_rappartner.bdef.asbdef @@ -9,4 +9,5 @@ define behavior for ZHS_C_RAPPartner alias Partner use action fillEmptyStreets; use action clearAllEmptyStreets; + use action copyLine; } \ No newline at end of file diff --git a/src/zhs_c_rappartner.ddlx.asddlxs b/src/zhs_c_rappartner.ddlx.asddlxs index 606f923..ebc3735 100644 --- a/src/zhs_c_rappartner.ddlx.asddlxs +++ b/src/zhs_c_rappartner.ddlx.asddlxs @@ -35,7 +35,8 @@ annotate entity ZHS_C_RAPPartner with @UI.selectionField: [{ position: 10 }] @UI.lineItem: [{ position: 20, importance: #MEDIUM }, { position: 10, type: #FOR_ACTION, label: 'Fill', dataAction: 'fillEmptyStreets' }, - { position: 20, type: #FOR_ACTION, label: 'Clear All', dataAction: 'clearAllEmptyStreets' }] + { position: 20, type: #FOR_ACTION, label: 'Clear All', dataAction: 'clearAllEmptyStreets' }, + { position: 30, type: #FOR_ACTION, label: 'Copy Line', dataAction: 'copyLine' }] @UI.identification: [{ position: 20, qualifier: 'PARTNER_INFO' }] @EndUserText.label: 'Partner' @EndUserText.quickInfo: 'Identifier of the partner' diff --git a/src/zhs_i_rappartner.bdef.asbdef b/src/zhs_i_rappartner.bdef.asbdef index fedf1a8..f263139 100644 --- a/src/zhs_i_rappartner.bdef.asbdef +++ b/src/zhs_i_rappartner.bdef.asbdef @@ -11,14 +11,16 @@ authorization master ( instance ) update; delete; + field ( readonly ) PartnerNumber; + validation validateKeyisFilled on save { create; } validation validateCoreData on save { create; field Country, PaymentCurrency; } determination fillCurrency on modify { create; update; } - action fillEmptyStreets; + action fillEmptyStreets result [1] $self; static action clearAllEmptyStreets; - + factory action copyLine [1]; mapping for zhs_dmo_partner {