
METHOD if_ex_qisr1~int_service_request_check.
me->set_mode( mode ).
me->set_command( user_command ).
me->set_view( form_view ).
me->set_special( special_data ).
me->set_additional( additional_data ).
me->set_control( CHANGING ct_special_data = special_data ).
CHECK me->get_view( ) = |ISR_REQUEST| AND
NOT me->get_fldvalue( |DRAFT| ) AND
( me->get_mode( ) = |CREATE| OR me->get_mode( ) = |CHANGE| ) AND
( me->get_command( ) = |CHECK| OR me->get_command( ) = |START| ).
TRY.
me->check_mandatory( ).
me->simulate( ).
CATCH BEFORE UNWIND zcx_fi_general INTO DATA(lo_exception).
IF lo_exception->is_resumable IS NOT INITIAL.
RESUME.
ELSE.
me->set_messages( lo_exception->get_messages( ) ).
message_list = me->get_messages( ).
me->clear_fields( ).
special_data = me->get_special( ).
return = VALUE #( message_list[ 1 ] OPTIONAL ).
RETURN.
ENDIF.
ENDTRY.
message_list = me->get_messages( ).
return = VALUE #( message_list[ 1 ] OPTIONAL ).
special_data = me->get_special( ).
ENDMETHOD.
METHOD simulate.
me->set_simulate( abap_true ).
me->set_api_mode( SWITCH #( me->get_fldvalue( |REQUEST_TYPE| )
WHEN 1
THEN action-insert
ELSE action-update
)
).
"Simulate Maintain account in COA 2000
me->set_coa_data( SWITCH #( me->get_api_mode( )
WHEN action-insert
THEN me->coa_mapper( )
ELSE me->read_glmast(
VALUE #(
saknr = me->get_fldvalue( |REF_GLACCT| )
ktopl = me->get_fldvalue( |REF_COA| )
)
)-coa_data
)
).
me->set_acct_names( me->acctname_mapper( ) ).
me->lo_gl_factory = me->get_md_factory(
VALUE #( LET api_mode = me->get_api_mode( ) IN
saknr = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_GLACCT|
ELSE |REF_GLACCT|
)
)
)
ktopl = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_COA|
ELSE |REF_COA|
)
)
)
)
).
IF me->lo_gl_factory IS BOUND.
me->lo_gl_factory->zif_masterdata_factory~maintain_data( ).
ENDIF.
"Simulate Maintain account in COA 1000
me->set_coa_data( SWITCH #( me->get_api_mode( )
WHEN action-insert
THEN me->coa_mapper( coa_oper_tafe )
ELSE me->read_glmast(
VALUE #(
saknr = me->get_fldvalue( |REF_GLACCT2| )
ktopl = me->get_fldvalue( |REF_COA2| )
)
)-coa_data
)
).
me->set_acct_names( me->acctname_mapper( coa_oper_tafe ) ).
me->lo_gl_factory = me->get_md_factory(
VALUE #( LET api_mode = me->get_api_mode( ) IN
saknr = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_GLACCT2|
ELSE |REF_GLACCT2|
)
)
)
ktopl = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_COA2|
ELSE |REF_COA2|
)
)
)
)
).
IF me->lo_gl_factory IS BOUND.
me->lo_gl_factory->zif_masterdata_factory~maintain_data( ).
ENDIF.
"Simulate Commitment Item
me->set_commitment( me->commitment_mapper( ) ).
me->lo_gl_factory = me->get_md_factory(
VALUE #( LET api_mode = me->get_api_mode( ) IN
fikrs = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_FM|
ELSE |REF_FM|
)
)
)
fipex = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_COMITEM|
ELSE |REF_COMITEM|
)
)
)
)
).
IF me->lo_gl_factory IS BOUND.
me->lo_gl_factory->zif_masterdata_factory~maintain_data( ).
ENDIF.
"Simulate Maintain account in CCODE 1020
me->set_ccode_data( me->ccode_mapper( ) ).
me->lo_gl_factory = me->get_md_factory(
VALUE #( LET api_mode = me->get_api_mode( ) IN
saknr = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_GLACCT4|
ELSE |REF_GLACCT4|
)
)
)
bukrs = CONV #( me->get_fldvalue(
SWITCH #( api_mode
WHEN action-insert
THEN |NEW_COMPCODE4|
ELSE |REF_COMPCODE4|
)
)
)
)
).
IF me->lo_gl_factory IS BOUND.
me->lo_gl_factory->zif_masterdata_factory~maintain_data( ).
ENDIF.
"Simulate Section Account Lock/Unlock
IF me->get_fldvalue( |REQUEST_TYPE| ) = 3.
me->lo_gl_factory = NEW zcl_fi_glmast_factory(
iv_saknr = CONV #( me->get_fldvalue(
|REF_ACCTLOCK| ) )
iv_ktopl = CONV #( me->get_fldvalue(
|REF_COALOCK| ) )
iv_mode = me->get_api_mode( )
iv_commit = xsdbool( NOT me->get_simulate( ) )
iv_simulate = me->get_simulate( )
).
IF me->lo_gl_factory IS BOUND.
CAST zcl_fi_glmast_factory( me->lo_gl_factory )->set_coa_block(
CONV #( me->get_fldvalue( |NEW_LOCK| ) ) ).
ENDIF.
ENDIF.
"Simulate Section Account Set/Clear Deletion Flag
IF me->get_fldvalue( |REQUEST_TYPE| ) = 4.
me->lo_gl_factory = NEW zcl_fi_glmast_factory(
iv_saknr = CONV #( me->get_fldvalue(
|REF_ACCTDEL| ) )
iv_ktopl = CONV #( me->get_fldvalue(
|REF_COADEL| ) )
iv_mode = me->get_api_mode( )
iv_commit = xsdbool( NOT me->get_simulate( ) )
iv_simulate = me->get_simulate( )
).
IF me->lo_gl_factory IS BOUND.
CAST zcl_fi_glmast_factory( me->lo_gl_factory )->set_coa_delete(
CONV #( me->get_fldvalue( |NEW_DEL| ) ) ).
ENDIF.
ENDIF.
ENDMETHOD.
METHOD get_md_factory.
* @TODO use Structure for import params instead of multiple single fields
TRY.
ro_md_factory = zcl_fico_masterdata_factory=>create(
iv_saknr = is_keys-saknr
iv_costelem = is_keys-kstar
iv_comitem = is_keys-fipex
iv_ktopl = is_keys-ktopl
iv_bukrs = is_keys-bukrs
iv_fikrs = is_keys-fikrs
iv_versn = is_keys-versn
iv_ergsl = is_keys-ergsl
is_coa_data = me->get_coa_data( )
is_ccode_data = me->get_ccode_data( )
is_acct_name = me->get_acct_names( )
iv_coarea = co_kokrs
is_citemdata = me->get_commitment( )
is_costinput = me->get_costelement( )
* iv_keydate = SY-DATUM
* iv_coelclass = '1'
iv_mode = me->get_api_mode( )
iv_simulate = me->get_simulate( )
iv_commit = xsdbool( NOT me->get_simulate( ) )
).
CATCH zcx_fi_general.
"this is necessary for a better user (UI) experience
DATA(raise) = COND #( WHEN is_keys-saknr IS NOT INITIAL OR
is_keys-fipex IS NOT INITIAL
THEN abap_true
ELSE THROW RESUMABLE
zcx_fi_general(
textid = zcx_fi_general=>incorrect_params
gv_string = |Incorrect Parameters|
)
).
ENDTRY.
ENDMETHOD.
REPORT ztest.
DATA(p_saknr) = CONV saknr( |0000567864| ).
DATA(lo_output) = cl_demo_output=>new( ).
TRY.
*******CREATE A NEW GL IN COA 2000***********
lo_output->begin_section( |Create GL Account { p_saknr ALPHA = OUT } in COA 2000| ).
DATA(result) = zcl_fico_masterdata_factory=>create(
iv_saknr = p_saknr " GL Account
iv_ktopl = |2000| " Chart of Accounts
iv_bukrs = VALUE #( )
is_coa_data = VALUE #( gvtyp = abap_true " Data for COA
ktoks = |5600| )
is_acct_name = VALUE #( txt20 = |short_{ p_saknr ALPHA = OUT }| " Data for Account Name
txt50 = |long__{ p_saknr ALPHA = OUT }| )
)->zif_masterdata_factory~maintain_data( ).
lo_output->write( COND #( WHEN result = abap_true THEN |GL Account { p_saknr ALPHA = OUT } in COA 2000 created| ) )->end_section( ).
*-------------------------------------
********CREATE A NEW GL IN COA 1000***********
lo_output->begin_section( |Create GL Account { p_saknr ALPHA = OUT } in COA 1000| ).
result = zcl_fico_masterdata_factory=>create(
iv_saknr = p_saknr " GL Account
iv_ktopl = |1000| " Chart of Accounts
iv_bukrs = VALUE #( )
is_coa_data = VALUE #( gvtyp = abap_true " Data for COA
ktoks = |5600|
xbilk = abap_false
bilkt = p_saknr )
is_acct_name = VALUE #( txt20 = |short_{ p_saknr ALPHA = OUT }| " Data for Account Name
txt50 = |long__{ p_saknr ALPHA = OUT }| )
)->zif_masterdata_factory~maintain_data( ).
lo_output->write( COND #( WHEN result = abap_true THEN |GL Account { p_saknr ALPHA = OUT } in COA 1000 created| ) )->end_section( ).
*-------------------------------------
********CREATE A NEW GL IN COMP CODE 1020***********
lo_output->begin_section( |Create GL Account { p_saknr ALPHA = OUT } in Company Code 1020| ).
result = zcl_fico_masterdata_factory=>create(
iv_saknr = p_saknr " GL Account
iv_ktopl = VALUE #( )
iv_bukrs = |1020| " Company Code
is_ccode_data = VALUE #( fstag = |ICCF| " Data for Company Code
mwskz = |*|
altkt = |6511|
xmwno = abap_true
xsalh = abap_true )
is_acct_name = VALUE #( txt20 = |short_{ p_saknr ALPHA = OUT }| " Data for Account Name
txt50 = |long__{ p_saknr ALPHA = OUT }| )
)->zif_masterdata_factory~maintain_data( ).
lo_output->write( COND #( WHEN result = abap_true THEN |GL Account { p_saknr ALPHA = OUT } in Company Code 1020 created| ) )->end_section( ).
*--------------------------------------
********CREATE A NEW GL WITH REFERENCE IN COA 2000***********
lo_output->begin_section( |Create GL Account 567863 with Reference { p_saknr ALPHA = OUT } in COA 2000| ).
result = zcl_fico_masterdata_factory=>create(
iv_saknr = |0000567863| " GL Account
iv_ktopl = |2000| " Chart of Accounts
iv_bukrs = VALUE #( ) " Company Code
is_acct_name = VALUE #( txt20 = |short_567863| " Data for Account Name
txt50 = |long__567863| )
)->zif_masterdata_factory~maintain_data( iv_ref = p_saknr ).
lo_output->write( COND #( WHEN result = abap_true THEN |GL Account 567863 with Reference { p_saknr ALPHA = OUT } in COA 2000 created| ) )->end_section( ).
*---------------------------------------
********UPDATE AN EXISTING GL IN COA 2000***********
lo_output->begin_section( |Update GL Account 0000567863 in COA 2000| ).
result = zcl_fico_masterdata_factory=>create(
iv_saknr = |0000567863| " GL Account
iv_ktopl = |2000| " Chart of Accounts
iv_bukrs = VALUE #( ) " Company Code
is_acct_name = VALUE #( txt20 = |short_567863_udpate| " Data for Account Name
txt50 = |long__567863_update| )
iv_mode = |U| " Update Mode
)->zif_masterdata_factory~maintain_data( ).
lo_output->write( COND #( WHEN result = abap_true THEN |GL Account 567863 in COA 2000 updated| ) )->end_section( ).
*---------------------------------------
CATCH zcx_fi_general INTO DATA(lo_exception). " General Exception Object for FI
lo_output->write( lo_exception->get_messages( ) )->end_section( ).
ENDTRY.
lo_output->display( ).
DATA(p_saknr) = CONV saknr( |0000567864| ).
DATA(lo_output) = cl_demo_output=>new( ).
TRY.
********CREATE A NEW GL WITH REFERENCE IN COA 2000***********
lo_output->begin_section( |Create GL Account 567862 with Reference { p_saknr ALPHA = OUT } in COA 2000| ).
DATA(result) = zcl_fico_masterdata_factory=>create(
iv_saknr = |0000567862| " GL Account
iv_ktopl = |2000| " Chart of Accounts
iv_bukrs = VALUE #( ) " Company Code
is_acct_name = VALUE #( txt20 = |short_567862| " Data for Account Name
txt50 = |long__567862| )
)->zif_masterdata_factory~maintain_data( iv_ref = p_saknr ).
lo_output->write( COND #( WHEN result = abap_true THEN |GL Account 567862 with Reference { p_saknr ALPHA = OUT } in COA 2000 created| ) )->end_section( ).
*-----------------------------------------------
********CREATE A NEW GL WITH REFERENCE IN Comp Code 1020***********
lo_output->begin_section( |Create GL Account 567862 with Reference { p_saknr ALPHA = OUT } in Comp Code 1020| ).
result = zcl_fico_masterdata_factory=>create(
iv_saknr = |0000567862| " GL Account
iv_ktopl = VALUE #( ) " Chart of Accounts
iv_bukrs = |1020| " Company Code
is_acct_name = VALUE #( txt20 = |short_567862| " Data for Account Name
txt50 = |long__567862| )
)->zif_masterdata_factory~maintain_data( iv_ref = p_saknr ).
lo_output->write( COND #( WHEN result = abap_true THEN |GL Account 567862 with Reference { p_saknr ALPHA = OUT } in Comp Code 1020 created| ) )->end_section( ).
*-----------------------------------------------
********CREATE A NEW COMMITMENT ITEM WITH REFERENCE TO EXISTING COMITEM***********
lo_output->begin_section( |Create Commitment Item 567862 with Reference { p_saknr ALPHA = OUT }| ).
result = zcl_fico_masterdata_factory=>create(
iv_fikrs = |1000| "FM Area
iv_comitem = |567862| "Commitment Item
)->zif_masterdata_factory~maintain_data( iv_ref = p_saknr ).
lo_output->write( COND #( WHEN result = abap_true THEN |Commitment Item 567862 with Reference { p_saknr ALPHA = OUT } created| ) )->end_section( ).
*-----------------------------------------------
CATCH zcx_fi_general INTO DATA(lo_exception). " General Exception Object for FI
lo_output->write( lo_exception->get_messages( ) )->end_section( ).
ENDTRY.
lo_output->display( ).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
6 | |
6 | |
6 | |
5 | |
5 | |
4 | |
4 | |
4 | |
4 |