Escolar Documentos
Profissional Documentos
Cultura Documentos
Neste exercício, você deve imprimir o valor do imposto da classe formatando-o para ser exibido como
um decimal com dois dígitos.
Aqui está o código a ser usado, você só precisa adicionar o código para imprimir o valor da classe
lo_employee usando um modelo de string com formatação para uma moeda ou com decimais.
START-OF-SELECTION.
Temos uma calculadora de salários e precisamos da sua ajuda para ligar para o mecanismo da
calculadora. Complete o código com a instanciação lcl_salary_calculator, com todos os parâmetros
necessários. Por favor considerem:
use o máximo possível dos novos comandos que você aprendeu hoje;
você pode preencher os parâmetros com qualquer valor que desejar, basta respeitar o tipo de
cada campo;
seu código tem que compilar, não pode gerar dumps ou exceções, e a saída deve ser diferente
de zero;
você não pode alterar o código base;
bônus: não usamos os parâmetros iv_begin_date e iv_end_date do construtor da calculadora de
salário no cálculo, então tente deixar em branco e vamos ver o que acontece 😉
Aqui está o código que você precisa para completar:
PRIVATE SECTION.
DATA mv_name TYPE string.
DATA mv_age TYPE i.
DATA mv_personal_number TYPE pernr_d.
DATA mv_contract_begin_date TYPE d.
ENDCLASS.
METHOD get_age.
rv_age = mv_age.
ENDMETHOD.
METHOD get_personal_number.
rv_personal_number = mv_personal_number.
ENDMETHOD.
METHOD get_contract_begin_date.
rv_contract_begin_date = mv_contract_begin_date.
ENDMETHOD.
METHOD constructor.
mv_name = iv_name.
mv_age = iv_age.
mv_personal_number = iv_personal_number.
mv_contract_begin_date = iv_contract_begin_date.
ENDMETHOD.
ENDCLASS.
INTERFACE lif_salary_calculator.
TYPES BEGIN OF ty_s_quota.
TYPES tax_percentage TYPE prcal.
TYPES reduced_quota TYPE maxbt.
TYPES number_of_dependents TYPE i.
TYPES allowance TYPE maxbt.
TYPES END OF ty_s_quota.
METHODS constructor
IMPORTING
iv_begin_date TYPE d
iv_end_date TYPE d
it_previous_payroll_results TYPE lif_salary_calculator=>ty_t_py_result.
PRIVATE SECTION.
DATA mv_begin_date TYPE d.
DATA mv_end_date TYPE d.
DATA mt_previous_payroll_results TYPE lif_salary_calculator=>ty_t_py_result.
ENDCLASS.
CLASS lcl_salary_calculator IMPLEMENTATION.
METHOD lif_salary_calculator~calculate.
DATA(ls_previous_payroll_result) = mt_previous_payroll_results[ 1 ].
METHOD constructor.
mv_begin_date = iv_begin_date.
mv_end_date = iv_end_date.
mt_previous_payroll_results = it_previous_payroll_results.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(go_salary_calculator) = "your code here
WRITE: / go_salary_calculator->calculate( ).
IF ' ' = ` `.
…
ENDIF.
Exercise 4 - Validator instantiation
Temos um validador composto por uma lista de regras de validação. Precisamos da sua ajuda para
instanciar. Por favor, complete o código com a instanciação lcl_absence_validator, com todos os
parâmetros necessários. Tenha em mente:
use o máximo possível dos novos comandos que você aprendeu hoje;
você pode preencher os parâmetros com qualquer valor que desejar, basta respeitar o tipo de
cada campo;
seu código tem que compilar, não pode gerar nenhum dump ou exceção;
o resultado deve ser um 'X' (abap_true);
você não pode alterar o código base;
INTERFACE lif_absence_validation_rule.
TYPES BEGIN OF ty_s_absence.
TYPES id TYPE char2.
TYPES subtype TYPE char4.
TYPES begin_date TYPE d.
TYPES end_date TYPE d.
TYPES END OF ty_s_absence.
METHODS is_valid
IMPORTING
is_absence TYPE ty_s_absence
RETURNING
VALUE(rv_is_valid) TYPE abap_bool.
ENDINTERFACE.
INTERFACE lif_absence_validator.
METHODS is_valid
IMPORTING
is_absence TYPE lif_absence_validation_rule=>ty_s_absence
RETURNING
VALUE(rv_is_valid) TYPE abap_bool.
ENDINTERFACE.
ENDCLASS.
CLASS lcl_absence_subtype_val_rule IMPLEMENTATION.
METHOD lif_absence_validation_rule~is_valid.
IF is_absence-subtype IS NOT INITIAL.
rv_is_valid = abap_true.
ENDIF.
ENDMETHOD.
ENDCLASS.
ENDCLASS.
ENDCLASS.
METHODS constructor
IMPORTING
it_validation_rules TYPE lif_absence_validation_rule=>ty_t_rules.
PRIVATE SECTION.
DATA mt_validation_rules TYPE lif_absence_validation_rule=>ty_t_rules.
ENDCLASS.
CLASS lcl_absence_validator IMPLEMENTATION.
METHOD lif_absence_validator~is_valid.
FIELD-SYMBOLS <lo_validation_rule> TYPE REF TO lif_absence_validation_rule.
rv_is_valid = abap_true.
ENDMETHOD.
METHOD constructor.
mt_validation_rules = it_validation_rules.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(lv_result) = " your code here
WRITE lv_result.
SE estivermos calculando o salário de um funcionário em tempo integral, devemos usar um salário base
de 2.000,00 para o cálculo. Se estivermos fazendo isso por meio período, 1.000,00 como salário base.
Também precisamos calcular um bônus, que pode ser de dois tipos: fixo e variável. Se for fixo, e o
funcionário for sênior, o bônus será de 4.000,00. Se o funcionário for júnior, temos um bônus fixo de
1.000,0. Se o bônus for variável e o funcionário for desenvolvedor, o bônus será igual a 10% do
pagamento adicional. Se o funcionário for arquiteto, esse bônus será de 15% do pagamento adicional. O
salário total será a soma do salário base, do bônus e do adicional.
Para os parâmetros a seguir, apenas essas entradas são aceitas e qualquer outra diferente deve gerar a
exceção lcx_invalid_parameter:
Por favor, complete o código do método de cálculo da classe lcl_salary_calculator e chame-o dentro da
instrução TRY no START-OF-SELECTION. Tenha em mente:
use o máximo possível dos novos comandos que você aprendeu hoje;
você pode preencher os parâmetros com qualquer valor que desejar, basta respeitar o tipo de
cada campo;
seu código tem que compilar, ele pode gerar a exceção lcx_invalid_parameter ou uma
quantidade como resultado;
você não pode alterar o código base;
INTERFACE lif_salary_calculator.
METHODS calculate RETURNING VALUE(rv_salary) TYPE pc207-betrg RAISING
lcx_invalid_parameter.
ENDINTERFACE.
METHODS constructor
IMPORTING
iv_career_level TYPE string
iv_role TYPE string
iv_contract_type TYPE string
iv_additional_payment TYPE maxbt
iv_bonus_type TYPE string.
PRIVATE SECTION.
DATA mv_career_level TYPE string.
DATA mv_role TYPE string.
DATA mv_contract_type TYPE string.
DATA mv_additional_payment TYPE maxbt.
DATA mv_bonus_type TYPE string.
ENDCLASS.
CLASS lcl_salary_calculator IMPLEMENTATION.
METHOD lif_salary_calculator~calculate.
" your code here
ENDMETHOD.
METHOD constructor.
mv_career_level = iv_career_level.
mv_role = iv_role.
mv_contract_type = iv_contract_type.
mv_additional_payment = iv_additional_payment.
mv_bonus_type = iv_bonus_type.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
TRY.
DATA(gv_salary) = CAST lif_salary_calculator( NEW lcl_salary_calculator(
iv_career_level = 'senior'
iv_role = 'dev'
iv_contract_type = 'fulltime'
iv_additional_payment = '1000.0'
iv_bonus_type = 'variable' ) )->calculate( ).
CATCH lcx_invalid_parameter.
WRITE 'Oh damn'.
ENDTRY.
WRITE gv_salary.
use o máximo possível dos novos comandos que você aprendeu hoje;
você não precisa alterar o START-OF-SELECTION desta vez;
seu código tem que compilar, não pode gerar exceções e a saída deve ser a mesma quando
tínhamos um loop;
você tem que mudar o código base;
METHODS constructor
IMPORTING
it_payroll_result TYPE lif_employee_data_filler=>ty_t_py_result.
PRIVATE SECTION.
DATA mt_payroll_result TYPE lif_employee_data_filler=>ty_t_py_result.
ENDCLASS.
METHOD constructor.
mt_payroll_result = it_payroll_result.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
FIELD-SYMBOLS <gs_employee_data> TYPE lif_employee_data_filler=>ty_s_data.
use o máximo possível dos novos comandos que você aprendeu hoje;
você não precisa alterar o START-OF-SELECTION;
seu código tem que compilar, não pode gerar exceções e a saída deve ser a mesma quando
tínhamos um loop;
você tem que mudar o código base;
METHODS constructor
IMPORTING
it_purchase TYPE lif_cost_accumulator=>ty_t_purchase.
PRIVATE SECTION.
DATA mt_purchase TYPE lif_cost_accumulator=>ty_t_purchase.
ENDCLASS.
METHOD constructor.
mt_purchase = it_purchase.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(gv_cost) = CAST lif_cost_accumulator( NEW lcl_cost_accumulator(
VALUE #( ( id = '001' amount = '2000.00' )
( id = '002' amount = '1000.00' )
( id = '003' amount = '4000.00' )
( id = '004' amount = '2000.00' ) ) ) )->accumulate( ).
WRITE gv_cost.
use o máximo possível dos novos comandos que você aprendeu hoje;
você não precisa alterar o START-OF-SELECTION;
seu código tem que compilar, não pode gerar exceções e a saída deve ser a mesma quando
tínhamos um loop;
TYPES ty_t_absence TYPE SORTED TABLE OF ty_s_absence WITH UNIQUE KEY code
subtype.
METHODS constructor
IMPORTING
it_paid_absences TYPE lif_absences_to_be_paid=>ty_t_paid_absence
it_absences TYPE lif_absences_to_be_paid=>ty_t_absence.
PRIVATE SECTION.
DATA mt_paid_absences TYPE lif_absences_to_be_paid=>ty_t_paid_absence.
DATA mt_absences TYPE lif_absences_to_be_paid=>ty_t_absence.
ENDCLASS.
ENDLOOP.
ENDLOOP.
ENDMETHOD.
METHOD constructor.
mt_paid_absences = it_paid_absences.
mt_absences = it_absences.
ENDMETHOD.
ENDCLASS.
você tem que mudar o código base;
START-OF-SELECTION.
DATA(gt_result) = CAST lif_absences_to_be_paid( NEW lcl_absences_to_be_paid(
it_paid_absences = VALUE #( ( code = '0001' subtype = '0001' )
( code = '0001' subtype = '0002' )
( code = '0001' subtype = '0003' )
( code = '0001' subtype = '0004' )
( code = '0002' subtype = '1000' )
( code = '0002' subtype = '2000' )
( code = '0003' subtype = '2000' )
( code = '0004' subtype = '4000' ) )
it_absences = VALUE #( ( code = '2000' subtype = '0001' begin_date =
'20200101' end_date = '20200112' amount = '1200.0' )
( code = '3000' subtype = '0001' begin_date =
'20200101' end_date = '20200112' amount = '1300.0' )
( code = '0001' subtype = '0001' begin_date =
'20200101' end_date = '20200112' amount = '1400.0' )
( code = '0002' subtype = '0001' begin_date =
'20200101' end_date = '20200112' amount = '1500.0' )
( code = '0002' subtype = '2000' begin_date =
'20200101' end_date = '20200112' amount = '1600.0' )
( code = '0003' subtype = '0001' begin_date =
'20200101' end_date = '20200112' amount = '1700.0' )
( code = '0003' subtype = '1000' begin_date =
'20200101' end_date = '20200112' amount = '1800.0' )
( code = '0004' subtype = '4000' begin_date =
'20200101' end_date = '20200112' amount = '1850.0' )
( code = '0004' subtype = '0001' begin_date =
'20200101' end_date = '20200112' amount = '1900.0' ) ) ) )->get( ).
PUBLIC SECTION.
METHODS print_amount IMPORTING ir_structure TYPE REF TO data.
ENDCLASS.
START-OF-SELECTION.