Skip to Content
avatar image
Former Member

Example of correct BAPI_BUS1077_CREATE call

Hi!

Does anybody know how to create a hazard calling this bapi ? I've tried several combinations but it always returns me several errors, for example, not enough parameters, required fields not filled,...

If anybody could give me an example of its call (e.g. for the first level) i would appreciate it so much.

Thanks!!

Regards,

Diana.

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

2 Answers

  • avatar image
    Former Member
    Feb 13, 2008 at 11:38 PM

    Have you tried "where used"

    Rob

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Yes, I've tried, but i didn't find any helpful result... there were only two matches (one for modifying a substance and the other was a call from another function module that i wasn't able to run either)

      Any other suggestion?

      Thanks!

      Regards,

      Diana.

  • Jun 24, 2008 at 02:41 PM

    *&----


    *

    *& Report RC1_1077_BAPI_EXAMPLE_CHANGE

    *&

    *&----


    *

    *&

    *& On the one hand, this Report is an automatic test for the BAPI- functions.

    *& It performs different methods to create, edit and delete specifications and

    *& shows on a list, if any errors occured by performing the BAPI-functions.

    *&

    *& On the other hand, this report can be used as reference-code and tutorial for using

    *& the BAPI-functions.

    *&

    *&

    *& The here tested BAPI-functions are:

    *&

    *& Function Short description

    *&

    *& BAPI_BUS1077_CREATE Creates a new specification or a property of an existing one

    *& BAPI_BUS1077_CHANGE Changes properties of an existing specification

    *& BAPI_BUS1077_DELETE Deletes a specification or single properties

    *& BAPI_TRANSACTION_COMMIT Commits the work

    *& BAPI_BUS1077_SAVEFROMBUFFER Clears locks and saves data from buffer to dictionary

    *& BAPI_BUS1077_GETDETAIL Reads properties of existing specifications

    *&

    *&

    *& The following methods are relevant for you, if you need some information how to use

    *& these functions(detailed information about methods in their definitions):

    *&

    *& Method Short description Used BAPI- functions

    *&

    *& class_setup Creates the two Test- specifications BAPI_BUS1077_CREATE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& class_teardown Deletes the two Test- specifications BAPI_BUS1077_DELETE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_subheader Changes data in the substance-header BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_comp Changes the first component in the property BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_ident Changes the first identifier of a specification BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_ident_usage Changes the identifier usage of a specification BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_prop_ftext Changes the property ftext & longtext of a specification BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_prop_usage Changes the first property usage of a specification BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_ident_longtext Changes the identifier longtext of a specification BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_read_usage_filter Assures that the usage filter is working properly BAPI_BUS1077_GETDETAIL

    *& test_ref_subs Assure that specification referencescan be created BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CREATE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_comp Changes the first component in a property BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_assessment Changes the assessment of a value assignment BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_change_prop_data Changes the property data of a value assignment BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_CHANGE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *& test_del_ref Deletes all references of a specification BAPI_BUS1077_GETDETAIL; BAPI_BUS1077_DELETE; BAPI_TRANSACTION_COMMIT; BAPI_BUS1077_SAVEFROMBUFFER

    *&

    *&

    *& The following methods are "help- methods" with different functionalities:

    *&

    *& Method Short Description

    *&

    *& set_dis_tab Adds one row the the displayed error-table

    *& get_dis_tab Gets an error-table

    *& set_dis_wa Fills one row of an error-table

    *& set_dis_wa Gets one row of an error-table

    *& get_random_matnr Gets a random matnr from dictionary

    *& get_random_source Gets a random source from dictionary

    *& get_random_phrase Gets a random source from dictionary (from given phrase selection set)

    *& write_table_to_list Writes one table to display to list

    *&

    *&

    *& Important variables:

    *&

    *& Variable Short Description

    *&

    *& l_return_tab Table for the errors to occure in BAPI-functions

    *& l_dis_tab Error-table with data to display

    *& Fields: function, function-description, error-description, edited specification

    *& l_spec_key ID of the edited specification.

    *&

    *&

    *&----


    *

    *&----


    *

    *&

    *& !!! helpfull technical information for BAPI usage !!!

    *& Use F1-help for additional information.

    *&

    *&----


    *

    *

    • The field "format_flag" in table "bapi1077df" exists not in every system

    • if the field doent exist, just delete the lines wich specify this data

    *

    *

    • BAPI strctures for specification- data:

    *

    • additional information for function modules: addinf

    • return table (errors): bapiret2

    • specification header: bapi1077rh

    • identifier header: bapi1077ri

    • identifier Longtexts: bapi1077il

    • sublist assignments: bapi1077rl

    • property header: bapi1077vh

    • property usage: bapi1077du

    • property values: bapi1077va

    • property assessments: bapi1077dr

    • property components: bapi1077vp

    • property data: bapi1077pr

    • property freetexts: bapi1077df

    • property longtexts: bapi1077fl

    • property source: bapi1077ds

    *

    *&----


    *

    *

    • Used BAPI- Functions (examples):

    • All the tables for the data to set have to be prepared like

    • in the used methods.

    *

    *

    • Create new specification:

    *

    • CALL FUNCTION 'BAPI_BUS1077_CREATE'

    • EXPORTING

    • key_date = addinf-valdat

    • change_number = addinf-aennr

    • flg_header = 'X'

    • flg_ident = 'X'

    • flg_ident_longtext = 'X'

    • flg_ident_sublist = 'X'

    • flg_prop_usage = 'X'

    • flg_prop_header = 'X' " These Flags specify the data to be edited

    • flg_prop = 'X'

    • flg_prop_rel = 'X'

    • flg_prop_comp = 'X'

    • flg_prop_data = 'X'

    • flg_prop_ftext = 'X'

    • flg_prop_ftext_longtext = 'X'

    • TABLES

    • return = l_return_tab " This table contains possible errors to occure

    • sub_header = l_sub_header_tab

    • ident_header = l_ident_header_tab

    • ident_longtext = l_ident_longtext_tab

    • ident_sublist = l_ident_sublist_tab

    • prop_usage = l_prop_usage_tab

    • prop_header = l_prop_header_tab " These tables contain the data to set

    • prop_val = l_prop_val_tab

    • prop_reliability = l_prop_assess_tab

    • prop_component = l_prop_component_tab

    • prop_data = l_prop_data_tab

    • prop_ftext = l_prop_ftext_tab

    • prop_ftext_longtext = l_prop_ftext_longtext_tab.

    *

    *

    • The following function works the same way:

    • BAPI_BUS1077_DELETE (delete specification or single data from specification)

    *

    *

    • Change specification data:

    *

    • CALL FUNCTION 'BAPI_BUS1077_CHANGE'

    • EXPORTING

    • flg_ident_usage = 'X' " data to be changed

    • TABLES

    • return = l_return_tab

    • sub_header = l_sub_header_tab

    • ident_header = l_ident_header_tab

    • prop_usage = l_prop_usage_tab " table with changed data

    • prop_usagex = l_prop_usagex_tab. " table to specifiy wich fields are changed

    *

    *

    *

    • After all these functions, the follwing two functions have

    • to be executed to commit the work and write the data from

    • the buffer to the dictionary (for details have a look at the used methods below):

    *

    • BAPI_TRANSACTION_COMMIT(always set the wait-flag!)

    • BAPI_BUS1077_SAVEFROMBUFFER

    *

    *

    • Exceptions are the following functions to read data from specifications

    • and check if a specification exists.

    • These functions usually stand alone without "commit" and "save":

    *

    *

    • Get specification details:

    *

    • CALL FUNCTION 'BAPI_BUS1077_GETDETAIL'

    • EXPORTING

    • key_date = addinf-valdat

    • change_number = addinf-aennr

    • flg_header = 'X'

    • flg_ident = 'X'

    • flg_ident_usage = 'X'

    • scenario = '1' "specifies the way, the data are read (F1-help for details)

    • TABLES

    • return = l_return_tab

    • sub_header = l_sub_header_tab

    • ident_header = l_ident_header_tab

    • prop_usage = l_prop_usage_tab.

    *

    *

    • Check if a specification exists:

    *

    • CALL FUNCTION 'BAPI_BUS1077_EXISTENCECHECK'

    • EXPORTING

    • substanceid = l_spec_key "The spec-Key, that is searched for

    • key_date = addinf-valdat

    • TABLES

    • return = l_return_tab.

    *

    *&----


    *

    *

    • Helpful methods:

    *

    • set_dis_tab: Fills the error-table to display for each test-method

    • get_random_matnr: Selects a random material-id from the dictionary, to work with

    • get_random_source: Selects a random source-id.

    • get_random_phrase: Selects a random phrase from given selection-set

    *

    *&----


    *

    report rc1_1077_bapi_example_change.

    include cbui09.

    type-pools: espap.

    *&----


    *

    *& Include L1077P01

    *&----


    *

    *&----


    *

    *& Include LC1F2P03

    *&----


    *

    *&----


    *

    *& EHS ABAP UNIT TEMPLATE BACKUP

    *&----


    *

    *&----


    *

    • The methods with be called in this order:

    • class_setup

    • test1

    • test2

    • class_teardown

    *

    *&----


    *

    *&----


    *

    *& Class (Definition) lcl_aunit_template

    *&----


    *

    • Template for ABAP Unit

    *----


    *

    class lcl_bus1077_change_test definition.

    type-pools: espph.

    public section.

    class-methods:

    • creates the two test-specifications with properties

    class_setup,

    • deletes the two specifications

    class_teardown,

    *----


    *

    test_change_comp,

    • This test changes the first component in the property

    • "Exact composition based on compound"

    • Prerequisites: Created specification which

    • has this property set. The test fails if the component's data

    • was not changed properly.

    • List of properties that are changed:

    *

    • COMPCAT = 'EMULSIFIER'.

    • OPLOWLIMIT = '>'.

    • LOW_LIMIT = '0.15'.

    • OPUPPLIMIT = '<='.

    • UPP_LIMIT = '0.88'.

    • AVG_VAL = '0.88'.

    • EXPONENT = 'PPM'.

    *----


    *

    *----


    *

    test_change_ident,

    • This test changes the first identifier of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the identifier

    • was not changed properly.

    • List of properties that are changed:

    *

    • ID_TYPE = 'FRM'.

    • ID_CATEGRY = 'RAT'.

    • LANGU = 'E'.

    • IDENTIFIER = 'H2SO4'.

    *----


    *

    *----


    *

    test_change_ident_longtext,

    • This test changes the identifier longtext of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the identifier longtext

    • was not changed properly.

    • List of properties that are changed:

    *

    • Four lines of the identifier longtext are changed:

    *

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 1).'.

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 2).'.

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 3).'.

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 4).'.

    *

    *----


    *

    *----


    *

    test_change_ident_usage,

    • This test changes the identifier usage of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the identifier usage

    • was not changed properly.

    • List of properties that are changed:

    *

    • RATING = 'PUBLIC'.

    • VAL_AREA = 'REG_WORLD'.

    • EXCL_IND = FALSE.

    • ACT_IND = TRUE.

    *----


    *

    *----


    *

    test_change_prop_usage,

    • This test changes the first property usage of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the property usage

    • was not changed properly.

    • List of properties that are changed:

    *

    • RATING = 'PUBLIC'.

    • VAL_AREA = 'REG_WORLD'.

    • EXCL_IND = FALSE.

    • ACT_IND = TRUE.

    *----


    *

    *----


    *

    test_change_subheader,

    • This test changes the sub header of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the sub header

    • was not changed properly.

    • List of properties that are changed:

    • SUBAUTHGRP = 'ALL'.

    • NOTE = 'Changed note!'.

    • SUBCHARACT = 'SUB_NOPOLY'.

    *----


    *

    *----


    *

    test_ref_subs,

    • This test's purpose is to assure that specification references

    • can be created successfully.

    • Scenario:

    • 1. Create 2 specifications(one with property values set, the other without)

    • 2. Create a reference from the second spec to the first

    • 3. Verify that the specifications have at least one property which

    • is the same - this will assure that the reference has been

    • created successfully

    *

    • result: l_dis_tab_9

    *----


    *

    *----


    *

    test_change_prop_ftext,

    • This test changes the property ftext & longtext of a specification

    • Prerequisites: Created specification which

    • has these properties set. The test fails if the UD longtext

    • was not changed properly.

    • List of properties that are changed:

    *

    • User defined text:

    *

    • USRDFNDTXT = 'Changed user-defined text for ABAP Unit (LINE 1).'.

    • FORMAT_FLAG = TRUE.

    • UD_TXTTYPE = 'RM'. " Remark

    • LANGU = 'EN'.

    • LONG_TEXT = TRUE.

    *

    • Four lines of the UD longtext are changed:

    *

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 1).'.

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 2).'.

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 3).'.

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 4).'.

    *----


    *

    *----


    *

    test_change_assessment,

    • This test changes the assessment of a value assignment

    • Prerequisites: Created specification which:

    • - Has the predefined dafault property set. The test fails if the property assessment

    • don't change properly.

    • - List of properties that are changed:

    • ASSESSMENT = '2'.

    *----


    *

    *----


    *

    test_change_prop_data,

    • This test changes the property data of a value assignment

    • Prerequisites: Created specification which:

    • - Has the predefined dafault property set. The test fails if the

    • property data doesn't change properly.

    • - Changed data:

    • CHAR_VALUE = <random phrase>.

    *----


    *

    *----


    *

    test_read_usage_filter,

    • This test assures that the usage filter is working properly

    • Prerequisites: Created specification which:

    • - Has property usage set to PUBLIC/EU or PUBLIC/REG_WORLD.

    *

    • This test has two scenarios:

    • 1-st:

    • Read the value assignments with filter which should not find

    • any value assignments matching the criteria.

    • Criteria: INTERNAL/REG_WORLD

    *

    • 2-nd:

    • Read the value assignments with filter which should find

    • one value assignment matching the criteria.

    • Criteria: PUBLIC/ES

    *----


    *

    *----


    *

    test_del_ref,

    • This test deletes all references of a specification

    *

    *----


    *

    • methods to edit the displayed table from l_return_tab

    set_dis_tab

    importing

    i_table type bapiret2_t

    i_wa type bapiret2

    i_meth type c

    i_tab_flg type c

    i_func type c

    i_func_desc type c

    i_spec_key type c,

    get_dis_tab

    exporting

    e_dis_tab type standard table,

    set_dis_wa

    importing

    i_meth_wa type c

    i_func_wa type c

    i_func_desc_wa type c

    i_error_desc_wa type c

    i_spec_key_wa type c,

    get_dis_wa

    exporting

    e_meth_wa type c

    e_func_wa type c

    e_func_desc_wa type c

    e_error_desc_wa type c

    e_spec_key_wa type c,

    • Gets matnumber of a random Matrial in DIC-Table "MAKT"

    get_random_matnr

    exporting

    e_mat_nr type c,

    • Text of random source

    get_random_source

    exporting

    e_source type c,

    • Random Phrase-text for given phrase selection set

    get_random_phrase

    importing

    i_phrase_sel_set type c

    exporting

    e_phrase_id type c,

    write_table_to_list

    importing

    i_method type c

    i_dis_tab type standard table.

    private section.

    • Class DATA:

    class-data: sub_header_tab type standard table of bapi1077rh,

    sub_header_wa like line of sub_header_tab.

    class-data: spec_key like sub_header_wa-substance,

    spec_key_pre like sub_header_wa-substance.

    class-data va_recn type eserecn.

    class-data: addinf type rcgaddinf.

    class-data: scenario type bapistdtyp-scenario.

    class-data: error_occured type i.

    class-data: int_error_occured type i.

    class-data: error_message2 type bapi_msg.

    class-data: error_type type bapi_mtype.

    class-data: error_section(100) type c.

    • Internal table, for displayed information

    types:

    begin of l_dis_rec,

    meth(32) type c,

    func(32) type c,

    func_desc(64) type c,

    error_desc(64) type c,

    spec_key(12) type c,

    end of l_dis_rec,

    l_dis_type type l_dis_rec.

    class-data:

    l_dis_tab type table of l_dis_type,

    l_dis_wa like line of l_dis_tab.

    endclass. "lcl_BUS1077_change_test DEFINITIO

    *&----


    *

    *& Global Data

    *&----


    *

    types:

    begin of lg_dis_rec,

    meth(32) type c,

    func(32) type c,

    func_desc(64) type c,

    error_desc(64) type c,

    spec_key(12) type c,

    end of lg_dis_rec,

    lg_dis_type type lg_dis_rec.

    data:

    lg_dis_tab type table of lg_dis_type,

    lg_dis_wa like line of lg_dis_tab.

    • Data for Dynpro

    data:

    ok_code like sy-ucomm,

    • ALV-Grid for method test_cr_all_spec_dtls_bylrs

    g_container_1 type scrfname value 'BCALV_GRID_BAPI_EXPL',

    grid1 type ref to cl_gui_alv_grid,

    g_custom_container type ref to cl_gui_custom_container,

    lg_fcat_tab type lvc_t_fcat,

    lg_fcat_wa like line of lg_fcat_tab.

    *&----


    *

    *& Prepare field catalogue for ALV-grids

    *&----


    *

    lg_fcat_wa-fieldname = 'METH'.

    lg_fcat_wa-inttype = 'C'.

    lg_fcat_wa-outputlen = '32'.

    lg_fcat_wa-coltext = text-007.

    lg_fcat_wa-seltext = text-007.

    append lg_fcat_wa to lg_fcat_tab.

    lg_fcat_wa-fieldname = 'FUNC'.

    lg_fcat_wa-inttype = 'C'.

    lg_fcat_wa-outputlen = '32'.

    lg_fcat_wa-coltext = text-008.

    lg_fcat_wa-seltext = text-008.

    append lg_fcat_wa to lg_fcat_tab.

    lg_fcat_wa-fieldname = 'FUNC_DESC'.

    lg_fcat_wa-inttype = 'C'.

    lg_fcat_wa-outputlen = '64'.

    lg_fcat_wa-coltext = text-009.

    lg_fcat_wa-seltext = text-009.

    append lg_fcat_wa to lg_fcat_tab.

    lg_fcat_wa-fieldname = 'ERROR_DESC'.

    lg_fcat_wa-inttype = 'C'.

    lg_fcat_wa-outputlen = '64'.

    lg_fcat_wa-coltext = text-010.

    lg_fcat_wa-seltext = text-010.

    append lg_fcat_wa to lg_fcat_tab.

    lg_fcat_wa-fieldname = 'SPEC_KEY'.

    lg_fcat_wa-inttype = 'C'.

    lg_fcat_wa-outputlen = '12'.

    lg_fcat_wa-coltext = text-011.

    lg_fcat_wa-seltext = text-011.

    append lg_fcat_wa to lg_fcat_tab.

    *&----


    *

    *& Execute methods and write result to list

    *&----


    *

    • Execute methods...

    lcl_bus1077_change_test=>class_setup( ).

    lcl_bus1077_change_test=>test_change_subheader( ).

    lcl_bus1077_change_test=>test_change_ident( ).

    lcl_bus1077_change_test=>test_change_ident_usage( ).

    lcl_bus1077_change_test=>test_change_prop_ftext( ).

    lcl_bus1077_change_test=>test_change_prop_usage( ).

    lcl_bus1077_change_test=>test_change_ident_longtext( ).

    lcl_bus1077_change_test=>test_read_usage_filter( ).

    lcl_bus1077_change_test=>test_ref_subs( ).

    lcl_bus1077_change_test=>test_change_comp( ).

    lcl_bus1077_change_test=>test_change_assessment( ).

    lcl_bus1077_change_test=>test_change_prop_data( ).

    lcl_bus1077_change_test=>test_del_ref( ).

    lcl_bus1077_change_test=>class_teardown( ).

    • ...get tables to display...

    lcl_bus1077_change_test=>get_dis_tab( importing e_dis_tab = lg_dis_tab ).

    *...and call Dynpro

    call screen 100.

    *&----


    *

    *& Class (Definition) aunit_template

    *&----


    *

    class lcl_bus1077_change_test implementation.

    *----


    *

    method class_setup.

    • this method is called only once before all test methods

    *----


    *

    • Local DATA:

    data: addinf type rcgaddinf.

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab,

    l_sub_header_pre_wa like line of l_sub_header_tab.

    data: l_spec_key like l_sub_header_wa-substance,

    l_spec_key_pre like l_sub_header_wa-substance,

    l_spec_recn like l_sub_header_wa-record_no.

    data: l_ident_header_tab type standard table of bapi1077ri,

    l_ident_header_wa like line of l_ident_header_tab.

    data: l_ident_recn like l_ident_header_wa-record_no.

    data: l_ident_longtext_tab type standard table of bapi1077il,

    l_ident_longtext_wa like line of l_ident_longtext_tab.

    data: l_ident_sublist_tab type standard table of bapi1077rl,

    l_ident_sublist_wa like line of l_ident_sublist_tab.

    data: l_prop_usage_tab type standard table of bapi1077du,

    l_prop_usage_wa like line of l_prop_usage_tab.

    data: l_prop_usage_buf1 like l_prop_usage_wa,

    l_prop_usage_buf2 like l_prop_usage_wa.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_subchacat like l_prop_header_wa-subchacat.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data l_prop_val_recn like l_prop_val_wa-record_no.

    data: l_prop_assess_tab type standard table of bapi1077dr,

    l_prop_assess_wa like line of l_prop_assess_tab.

    data: l_prop_component_tab type standard table of bapi1077vp,

    l_prop_component_wa like line of l_prop_component_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_ftext_tab type standard table of bapi1077df,

    l_prop_ftext_wa like line of l_prop_ftext_tab.

    data l_prop_ftext_recn like l_prop_ftext_wa-record_no.

    data: l_prop_ftext_longtext_tab type standard table of bapi1077fl,

    l_prop_ftext_longtext_wa like line of l_prop_ftext_longtext_tab.

    data: l_prop_source_tab type standard table of bapi1077ds,

    l_prop_source_wa like line of l_prop_source_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    data: l_scenario type bapistdtyp-scenario.

    data: l_phrase_id(30) type c,

    l_source_id(10) type c.

    • ----------------------------

    • 1.1. create a new SPECIFICATION HEADER (pre) & verify the creation

    • ----------------------------

    • prepare the a SPECIFICATION HEAD

    refresh l_sub_header_tab.

    clear l_sub_header_wa.

    addinf-valdat = '20070125'. "key date 01/25/2007

    clear addinf-aennr. "change number

    l_sub_header_wa-primarykey = 1. "int. key

    l_sub_header_wa-flgprimkey = true.

    l_sub_header_wa-subcategry = 'REAL_SUB'. "spec. category

    l_sub_header_wa-subauthgrp = 'ALL'. "spec. auth. group

    append l_sub_header_wa to l_sub_header_tab.

    • call the BAPI function module to create specification

    call function 'BAPI_BUS1077_CREATE'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CREATE'

    i_func_desc = text-000

    i_spec_key = l_sub_header_wa-substance.

    • commit work

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • prepare L_SUB_HEADER_TAB for BAPI_BUS1077_GETDETAIL

    read table l_sub_header_tab

    into l_sub_header_wa

    index 1

    transporting substance.

    l_spec_key_pre = l_sub_header_wa-substance.

    refresh l_sub_header_tab.

    clear l_sub_header_wa.

    l_sub_header_wa-substance = l_spec_key_pre.

    append l_sub_header_wa to l_sub_header_tab.

    • set scenario

    add espap_scenario-header_disp to l_scenario.

    • call the BAPI function module

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    scenario = l_scenario

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • read the newly cretated SUB. RECORD NUMBER

    read table l_sub_header_tab

    into l_sub_header_wa

    index 1

    transporting record_no

    substance.

    l_spec_recn = l_sub_header_wa-record_no.

    spec_key_pre = l_sub_header_wa-substance.

    • ------------------------------------------------------------*

    • 2.1. Prepare all specification detail data for new creation

    • ------------------------------------------------------------*

    • prepare the new SPECIFICATION HEADER

    refresh: l_sub_header_tab.

    clear l_sub_header_wa.

    addinf-valdat = '20070125'. "key date 01/25/2007

    clear addinf-aennr. "change number

    l_sub_header_wa-primarykey = 2. "int. key

    l_sub_header_wa-flgprimkey = true.

    l_sub_header_wa-subcategry = 'LIST_SUB'. "spec. category

    l_sub_header_wa-subauthgrp = 'ALL'. "spec. auth. group

    append l_sub_header_wa to l_sub_header_tab.

    • prepare the new IDENTIFIER HEADER

    refresh: l_ident_header_tab.

    clear l_ident_header_wa.

    l_ident_header_wa-primarykey = 21. "int. key

    l_ident_header_wa-flgprimkey = true.

    l_ident_header_wa-foreignkey = l_sub_header_wa-primarykey.

    l_ident_header_wa-flgfrgnkey = l_sub_header_wa-flgprimkey.

    l_ident_header_wa-id_type = 'NAM'. "ident.'s type

    l_ident_header_wa-id_categry = 'PROD'. "ident.'s category

    l_ident_header_wa-langu = 'E'. "ident.'s language

    l_ident_header_wa-identifier = 'Test for ABAP Unit'. "#EC *

    append l_ident_header_wa to l_ident_header_tab.

    l_ident_header_wa-long_text = true.

    • prepare the IDENTIFIER LONGTEXT

    refresh: l_ident_longtext_tab.

    clear l_ident_longtext_wa.

    l_ident_longtext_wa-primarykey = 211. "int. key

    l_ident_longtext_wa-flgprimkey = true.

    l_ident_longtext_wa-foreignkey = l_ident_header_wa-primarykey.

    l_ident_longtext_wa-flgfrgnkey = l_ident_header_wa-flgprimkey.

    l_ident_longtext_wa-text_line = 'Test long text for ABAP Unit (LINE 1).'. "#EC NOTEXT

    l_ident_longtext_wa-format_col = '*'.

    l_ident_longtext_wa-loglockmod = true.

    append l_ident_longtext_wa to l_ident_longtext_tab.

    l_ident_longtext_wa-primarykey = 212. "int. key

    l_ident_longtext_wa-text_line = 'Test long text for ABAP Unit (LINE 2).'. "#EC NOTEXT

    append l_ident_longtext_wa to l_ident_longtext_tab.

    l_ident_longtext_wa-primarykey = 213. "int. key

    l_ident_longtext_wa-text_line = 'Test long text for ABAP Unit (LINE 3).'. "#EC NOTEXT

    append l_ident_longtext_wa to l_ident_longtext_tab.

    l_ident_longtext_wa-primarykey = 214. "int. key

    l_ident_longtext_wa-text_line = 'Test long text for ABAP Unit (LINE 4).'. "#EC NOTEXT

    append l_ident_longtext_wa to l_ident_longtext_tab.

    • prepare the IDENTIFIER SUBLIST

    refresh: l_ident_sublist_tab.

    clear l_ident_sublist_wa.

    l_ident_sublist_wa-primarykey = 215. "int. key

    l_ident_sublist_wa-flgprimkey = true.

    l_ident_sublist_wa-foreignkey = l_ident_header_wa-primarykey.

    l_ident_sublist_wa-flgfrgnkey = l_ident_header_wa-flgprimkey.

    l_ident_sublist_wa-valid_from = '20070125'. "date 01/25/2007

    l_ident_sublist_wa-valid_to = '20080125'. "date 01/25/2008

    l_ident_sublist_wa-sublist = 'EINECS'.

    append l_ident_sublist_wa to l_ident_sublist_tab.

    • prepare the IDENTIFIER USAGE

    refresh: l_prop_usage_tab.

    clear l_prop_usage_wa.

    l_prop_usage_wa-primarykey = 216. "int. key

    l_prop_usage_wa-flgprimkey = true.

    l_prop_usage_wa-foreignkey = l_ident_header_wa-primarykey.

    l_prop_usage_wa-flgfrgnkey = l_ident_header_wa-flgprimkey.

    l_prop_usage_wa-mastertabl = 'ESTRI'.

    l_prop_usage_wa-rating = 'PUBLIC'.

    l_prop_usage_wa-val_area = 'REG_EU'.

    l_prop_usage_wa-excl_ind = false.

    l_prop_usage_wa-act_ind = true.

    append l_prop_usage_wa to l_prop_usage_tab.

    • prepare the PROPERTY HEADER

    refresh: l_prop_header_tab.

    clear l_prop_header_wa.

    l_prop_header_wa-primarykey = 22. "int. key

    l_prop_header_wa-flgprimkey = true.

    l_prop_header_wa-foreignkey = l_sub_header_wa-primarykey.

    l_prop_header_wa-flgfrgnkey = l_sub_header_wa-flgprimkey.

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. "Chemical Characterization

    append l_prop_header_wa to l_prop_header_tab.

    • prepare the VALUE tab

    refresh: l_prop_val_tab.

    clear l_prop_val_wa.

    l_prop_val_wa-primarykey = 221.

    l_prop_val_wa-flgprimkey = true.

    l_prop_val_wa-foreignkey = l_prop_header_wa-primarykey.

    l_prop_val_wa-flgfrgnkey = l_prop_header_wa-flgprimkey.

    l_prop_val_wa-sequence = 1.

    append l_prop_val_wa to l_prop_val_tab.

    • prepare the VALUE ASSIGNMENT ASSESSMENT tab

    refresh: l_prop_assess_tab.

    clear l_prop_assess_wa.

    l_prop_assess_wa-primarykey = 2211.

    l_prop_assess_wa-flgprimkey = true.

    l_prop_assess_wa-foreignkey = l_prop_val_wa-primarykey.

    l_prop_assess_wa-flgfrgnkey = l_prop_val_wa-flgprimkey.

    l_prop_assess_wa-assessment = '1'.

    append l_prop_assess_wa to l_prop_assess_tab.

    • Get random phrase-text

    call method get_random_phrase

    exporting

    i_phrase_sel_set = 'SAP_EHS_1012_015_REMARK'

    importing

    e_phrase_id = l_phrase_id.

    • prepare the VALUE ASSIGNMENT DATA tab

    refresh: l_prop_data_tab.

    clear l_prop_data_wa.

    l_prop_data_wa-primarykey = 2212.

    l_prop_data_wa-flgprimkey = true.

    l_prop_data_wa-foreignkey = l_prop_val_wa-primarykey.

    l_prop_data_wa-flgfrgnkey = l_prop_val_wa-flgprimkey.

    l_prop_data_wa-char_value = l_phrase_id.

    l_prop_data_wa-name_char = 'SAP_EHS_1012_015_REMARK'. "Chemical Characterization

    l_prop_data_wa-oper_inc = 0.

    append l_prop_data_wa to l_prop_data_tab.

    • prepare the VALUE ASSIGNMENT COMPONENT tab

    refresh: l_prop_component_tab.

    clear l_prop_component_wa.

    l_prop_component_wa-primarykey = 2213.

    l_prop_component_wa-flgprimkey = true.

    l_prop_component_wa-foreignkey = l_prop_val_wa-primarykey.

    l_prop_component_wa-flgfrgnkey = l_prop_val_wa-flgprimkey.

    l_prop_component_wa-comproot = l_spec_recn.

    l_prop_component_wa-compcat = 'ACT_AGENT'.

    l_prop_component_wa-sequence = 1.

    l_prop_component_wa-oplowlimit = '>'.

    l_prop_component_wa-low_limit = '0.55'.

    l_prop_component_wa-opupplimit = '<='.

    l_prop_component_wa-upp_limit = '0.88'.

    l_prop_component_wa-avg_val = '0.88'.

    l_prop_component_wa-exponent = 'PPT'.

    append l_prop_component_wa to l_prop_component_tab.

    • prepare the USER-DEFINED TEXTS tab

    refresh: l_prop_ftext_tab.

    clear l_prop_ftext_wa.

    l_prop_ftext_wa-primarykey = 2214.

    l_prop_ftext_wa-flgprimkey = true.

    l_prop_ftext_wa-foreignkey = l_prop_val_wa-primarykey.

    l_prop_ftext_wa-flgfrgnkey = l_prop_val_wa-flgprimkey.

    l_prop_ftext_wa-usrdfndtxt = 'Test user-defined text for ABAP Unit (LINE 1).'. "#EC NOTEXT

    l_prop_ftext_wa-format_flag = true.

    l_prop_ftext_wa-loglockmod = true.

    l_prop_ftext_wa-ud_txttype = 'RM'. " Remark "CT

    l_prop_ftext_wa-sequence = 4.

    l_prop_ftext_wa-langu = 'E'.

    l_prop_ftext_wa-long_text = true.

    append l_prop_ftext_wa to l_prop_ftext_tab.

    • prepare the VAL. ASSMT UD TEXTS

    refresh: l_prop_ftext_longtext_tab.

    clear l_prop_ftext_longtext_wa.

    l_prop_ftext_longtext_wa-primarykey = 22141. "int. key

    l_prop_ftext_longtext_wa-flgprimkey = true.

    l_prop_ftext_longtext_wa-foreignkey = l_prop_ftext_wa-primarykey.

    l_prop_ftext_longtext_wa-flgfrgnkey = l_prop_ftext_wa-flgprimkey.

    l_prop_ftext_longtext_wa-text_line = 'Test user-defined long text for ABAP Unit (LINE 1).'. "#EC NOTEXT

    l_prop_ftext_longtext_wa-format_col = '*'.

    l_prop_ftext_longtext_wa-loglockmod = true.

    append l_prop_ftext_longtext_wa to l_prop_ftext_longtext_tab.

    l_prop_ftext_longtext_wa-primarykey = 22142. "int. key

    l_prop_ftext_longtext_wa-text_line = 'Test user-defined long text for ABAP Unit (LINE 2).'. "#EC NOTEXT

    append l_prop_ftext_longtext_wa to l_prop_ftext_longtext_tab.

    l_prop_ftext_longtext_wa-primarykey = 22143. "int. key

    l_prop_ftext_longtext_wa-text_line = 'Test user-defined long text for ABAP Unit (LINE 3).'. "#EC NOTEXT

    append l_prop_ftext_longtext_wa to l_prop_ftext_longtext_tab.

    • Get random source

    call method get_random_source

    importing

    e_source = l_source_id.

    • prepare the USER-DEFINED TEXTS tab

    refresh: l_prop_source_tab.

    clear l_prop_source_wa.

    l_prop_source_wa-primarykey = 2215.

    l_prop_source_wa-flgprimkey = true.

    l_prop_source_wa-foreignkey = l_prop_val_wa-primarykey.

    l_prop_source_wa-flgfrgnkey = l_prop_val_wa-flgprimkey.

    l_prop_source_wa-source = l_source_id.

    l_prop_source_wa-srce_note = 'Test source note text for ABAP Unit.'. "#EC NOTEXT

    append l_prop_source_wa to l_prop_source_tab.

    • ----------------------------

    • 2.2. Create - BAPI function call for specification details data

    • ----------------------------

    • call the BAPI function module

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CREATE'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_ident = true

    flg_ident_longtext = true

    flg_ident_sublist = true

    flg_prop_usage = true

    flg_prop_header = true

    flg_prop = true

    flg_prop_rel = true

    flg_prop_comp = true

    flg_prop_data = true

    flg_prop_ftext = true

    flg_prop_ftext_longtext = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    ident_longtext = l_ident_longtext_tab

    ident_sublist = l_ident_sublist_tab

    prop_usage = l_prop_usage_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_reliability = l_prop_assess_tab

    prop_component = l_prop_component_tab

    prop_data = l_prop_data_tab

    prop_ftext = l_prop_ftext_tab

    prop_ftext_longtext = l_prop_ftext_longtext_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CREATE'

    i_func_desc = text-000

    i_spec_key = l_sub_header_wa-substance.

    • commit work

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • Save the Value assignment RECORD_NO for later use

    read table l_prop_val_tab

    into l_prop_val_wa

    index 1

    transporting record_no.

    va_recn = l_prop_val_wa-record_no.

    • Save the spec key for later use

    read table l_sub_header_tab

    into l_sub_header_wa

    index 1

    transporting substance.

    spec_key = l_sub_header_wa-substance.

    • ----------------------------

    • 2.4. Prepare tables for get details call

    • ----------------------------

    • prepare L_SUB_HEADER_TAB for BAPI_BUS1077_GETDETAIL

    read table l_sub_header_tab

    into l_sub_header_wa

    index 1

    transporting substance.

    l_spec_key = l_sub_header_wa-substance.

    refresh l_sub_header_tab.

    clear l_sub_header_wa.

    l_sub_header_wa-substance = l_spec_key.

    append l_sub_header_wa to l_sub_header_tab.

    • prepare L_IDENT_HEADER_TAB for BAPI_BUS1077_GETDETAIL

    read table l_ident_header_tab

    into l_ident_header_wa

    index 1

    transporting record_no.

    l_ident_recn = l_ident_header_wa-record_no.

    refresh l_ident_header_tab.

    clear l_ident_header_wa.

    l_ident_header_wa-record_no = l_ident_recn.

    append l_ident_header_wa to l_ident_header_tab.

    • prepare L_PROP_HEADER_TAB for BAPI_BUS1077_GETDETAIL

    read table l_prop_header_tab

    into l_prop_header_wa

    index 1

    transporting subchacat.

    l_prop_subchacat = l_prop_header_wa-subchacat.

    refresh l_prop_header_tab.

    clear l_prop_header_wa.

    l_prop_header_wa-subchacat = l_prop_subchacat.

    append l_prop_header_wa to l_prop_header_tab.

    • prepare L_PROP_VAL_TAB for BAPI_BUS1077_GETDETAIL

    read table l_prop_val_tab

    into l_prop_val_wa

    index 1

    transporting record_no.

    l_prop_val_recn = l_prop_val_wa-record_no.

    refresh l_prop_val_tab.

    clear l_prop_val_wa.

    l_prop_val_wa-record_no = l_prop_val_recn.

    append l_prop_val_wa to l_prop_val_tab.

    • prepare L_PROP_USAGE_TAB for BAPI_BUS1077_GETDETAIL

    clear: l_prop_usage_wa, l_prop_usage_buf1, l_prop_usage_buf2.

    read table l_prop_usage_tab

    into l_prop_usage_wa

    index 1

    transporting all fields.

    l_prop_usage_buf1-rating = l_prop_usage_wa-rating.

    l_prop_usage_buf1-val_area = l_prop_usage_wa-val_area.

    l_prop_usage_buf1-excl_ind = l_prop_usage_wa-excl_ind.

    clear l_prop_usage_wa.

    read table l_prop_usage_tab

    into l_prop_usage_wa

    index 2

    transporting all fields.

    l_prop_usage_buf2-rating = l_prop_usage_wa-rating.

    l_prop_usage_buf2-val_area = l_prop_usage_wa-val_area.

    l_prop_usage_buf2-excl_ind = l_prop_usage_wa-excl_ind.

    clear l_prop_usage_wa.

    refresh l_prop_usage_tab.

    append l_prop_usage_buf1 to l_prop_usage_tab.

    append l_prop_usage_buf2 to l_prop_usage_tab.

    • prepare L_IDENT_LONGTEXT_TAB for BAPI_BUS1077_GETDETAIL

    refresh l_ident_longtext_tab.

    • prepare L_IDENT_SUBLIST_TAB for BAPI_BUS1077_GETDETAIL

    refresh l_ident_sublist_tab.

    • prepare L_PROP_ASSESS_TAB for BAPI_BUS1077_GETDETAIL

    refresh l_prop_assess_tab.

    • prepare L_PROP_COMPONENT_TAB for BAPI_BUS1077_GETDETAIL

    refresh l_prop_component_tab.

    • prepare L_PROP_FTEXT_TAB for BAPI_BUS1077_GETDETAIL

    read table l_prop_ftext_tab

    into l_prop_ftext_wa

    index 1

    transporting record_no.

    l_prop_ftext_recn = l_prop_ftext_wa-record_no.

    refresh l_prop_ftext_tab.

    clear l_prop_ftext_wa.

    l_prop_ftext_wa-record_no = l_prop_ftext_recn.

    append l_prop_ftext_wa to l_prop_ftext_tab.

    • prepare L_PROP_FTEXT_LONGTEXT_TAB for BAPI_BUS1077_GETDETAIL

    refresh l_prop_ftext_longtext_tab.

    • prepare L_PROP_SOURCE_TAB for BAPI_BUS1077_GETDETAIL

    refresh l_prop_source_tab.

    • prepare L_PROP_DATA_TAB for BAPI_BUS1077_GETDETAIL

    refresh l_prop_data_tab.

    • ----------------------------

    • 2.5. Get details - BAPI function call for specification details data

    • ----------------------------

    • set the scenario

    add espap_scenario-header_disp to l_scenario.

    add espap_scenario-level2_disp to l_scenario.

    add espap_scenario-level3_disp to l_scenario.

    add espap_scenario-level4_disp to l_scenario.

    • call the BAPI function module

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    scenario = l_scenario

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_ident = true

    flg_ident_longtext = true

    flg_ident_usage = true

    flg_properties = true

    flg_prop_details = true

    flg_prop_data = true

    flg_prop_ftext_longtext = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    ident_longtext = l_ident_longtext_tab

    ident_sublist = l_ident_sublist_tab

    prop_usage = l_prop_usage_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_reliability = l_prop_assess_tab

    prop_data = l_prop_data_tab

    prop_component = l_prop_component_tab

    prop_ftext = l_prop_ftext_tab

    prop_ftext_longtext = l_prop_ftext_longtext_tab

    prop_source = l_prop_source_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'class_setup'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. "class_setup

    *----


    *

    method class_teardown.

    • this method is called once after the execution of all test methods

    *----


    *

    *----


    *

    • Deletion of first specification *

    *----


    *

    data: return_tab type standard table of bapiret2,

    return_wa like line of return_tab.

    clear sub_header_wa.

    refresh sub_header_tab.

    *Prepare the sub-header table for the deletion of the test specification

    sub_header_wa-substance = spec_key.

    append sub_header_wa to sub_header_tab.

    • Delete the substance

    refresh return_tab.

    call function 'BAPI_BUS1077_DELETE'

    exporting

    flg_header = true

    tables

    return = return_tab

    sub_header = sub_header_tab.

    • commit work

    clear return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = return_wa.

    • remove locks (according to note 732628)

    refresh return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = return_tab.

    *----


    *

    • Deletion of second specification *

    *----


    *

    clear sub_header_wa.

    refresh sub_header_tab.

    • Prepare the sub-header table for the deletion of the test specification pre.

    sub_header_wa-substance = spec_key_pre.

    append sub_header_wa to sub_header_tab.

    • Delete the substance

    refresh return_tab.

    call function 'BAPI_BUS1077_DELETE'

    exporting

    flg_header = true

    tables

    return = return_tab

    sub_header = sub_header_tab.

    • commit work

    clear return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = return_wa.

    • remove locks (according to note 732628)

    refresh return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = return_tab.

    endmethod. "class_teardown

    *----


    *

    method test_change_subheader.

    • This test changes the sub header of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the sub header

    • was not changed properly.

    • List of properties that are changed:

    • SUBAUTHGRP = 'ALL'.

    • NOTE = 'Changed note!'.

    • SUBCHARACT = 'SUB_NOPOLY'.

    *----


    *

    • Local DATA:

    data: addinf type rcgaddinf.

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab,

    l_sub_headerx_tab type standard table of bapisubrhx,

    l_sub_headerx_wa like line of l_sub_headerx_tab.

    data: l_spec_key like l_sub_header_wa-substance,

    l_spec_key_pre like l_sub_header_wa-substance,

    l_spec_recn like l_sub_header_wa-record_no.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_component_tab type standard table of bapi1077vp,

    l_prop_component_wa like line of l_prop_component_tab.

    data: l_prop_componentx_tab type standard table of bapisubvpx,

    l_prop_componentx_wa like line of l_prop_componentx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    • Prepare the L_SUB_HEADER_TAB

    refresh: l_sub_header_tab.

    clear l_sub_header_wa.

    addinf-valdat = '20070125'. "key date 01/25/2007

    clear addinf-aennr. "change number

    l_sub_header_wa-primarykey = 1. "int. key

    l_sub_header_wa-flgprimkey = true.

    l_sub_header_wa-substance = spec_key.

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_subheader'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • Clear the sub_header WA

    clear l_sub_header_wa.

    l_sub_header_wa-subcategry = 'LIST_SUB'. "spec. category

    l_sub_header_wa-subauthgrp = 'ALL'. "spec. auth. group

    l_sub_header_wa-note = 'Changed note!'. "#EC NOTEXT

    l_sub_header_wa-subcharact = 'SUB_NOPOLY'.

    modify l_sub_header_tab from l_sub_header_wa index 1

    transporting note

    subcharact

    subauthgrp.

    • Specify, wich fields have to be changed

    clear l_sub_headerx_wa.

    l_sub_headerx_wa-subauthgrp = true.

    l_sub_headerx_wa-note = true.

    l_sub_headerx_wa-subcharact = true.

    append l_sub_headerx_wa to l_sub_headerx_tab.

    • Call BAPI_BUS1077_CHANGE

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_header = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    sub_headerx = l_sub_headerx_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_subheader'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_subheader'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_subheader'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • Call GETDETAIL in order to compare the actual identifier head with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_subheader'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. "TEST_CHANGE_SUBHEADER

    *----


    *

    method test_change_ident.

    *This test changes the first identifier of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the identifier

    • was not changed properly.

    • List of properties that are changed:*

    • ID_TYPE = 'FRM'.

    • ID_CATEGRY = 'RAT'.

    • LANGU = 'E'.

    • IDENTIFIER = 'H2SO4'.

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    • Identifier specific data

    data: l_ident_header_tab type standard table of bapi1077ri,

    l_ident_header_wa like line of l_ident_header_tab,

    l_ident_headerx_tab type standard table of bapisubrix,

    l_ident_headerx_wa like line of l_ident_headerx_tab.

    data: l_ident_record_no like l_ident_header_wa-record_no.

    data: l_ident_longtext_tab type standard table of bapi1077il,

    l_ident_longtext_wa like line of l_ident_longtext_tab.

    data: l_ident_sublist_tab type standard table of bapi1077rl,

    l_ident_sublist_wa like line of l_ident_sublist_tab.

    *----


    *

    • 1.1. create the default predefined SPECIFICATION & verify the creation *

    *----


    *

    • set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    *----


    *

    • 2.1. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    l_sub_header_wa-substance = spec_key. " Specification. key

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_ident = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.2. Prepare the data tables & call BAPI_BUS1077_CHANGE *

    *----


    *

    clear l_ident_header_wa.

    l_ident_header_wa-id_type = 'FRM'. "ident.'s type

    l_ident_header_wa-id_categry = 'RAT'. "ident.'s category

    l_ident_header_wa-identifier = 'H2SO4'. "#EC *

    modify l_ident_header_tab from l_ident_header_wa index 1

    transporting id_type

    id_categry

    langu

    identifier

    valid_from

    valid_to

    long_text.

    • Specify, wich fields have to be changed

    clear l_ident_headerx_wa.

    l_ident_headerx_wa-id_type = true.

    l_ident_headerx_wa-id_categry = true.

    l_ident_headerx_wa-langu = true.

    l_ident_headerx_wa-identifier = true.

    l_ident_headerx_wa-valid_from = true.

    l_ident_headerx_wa-valid_to = true.

    append l_ident_headerx_wa to l_ident_headerx_tab.

    • Change the identifier header

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_ident = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    ident_headerx = l_ident_headerx_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.3. Commit the data & remove locks *

    *----


    *

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.4. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    • Compare the actual identifier table with the expected table

    • Call GETDETAIL in order to compare the actual identifier head with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_ident = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_CHANGE_IDENT

    *----


    *

    method test_change_ident_usage.

    • This test changes the identifier usage of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the identifier usage

    • was not changed properly.

    • List of properties that are changed:

    • RATING = 'PUBLIC'.

    • VAL_AREA = 'REG_WORLD'.

    • EXCL_IND = FALSE.

    • ACT_IND = TRUE.

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    • Identifier specific data

    data: l_ident_header_tab type standard table of bapi1077ri,

    l_ident_header_wa like line of l_ident_header_tab,

    l_ident_headerx_tab type standard table of bapisubrix,

    l_ident_headerx_wa like line of l_ident_headerx_tab.

    data: l_ident_record_no like l_ident_header_wa-record_no.

    data: l_ident_longtext_tab type standard table of bapi1077il,

    l_ident_longtext_wa like line of l_ident_longtext_tab,

    l_ident_longtextx_tab type standard table of bapisubilx,

    l_ident_longtextx_wa like line of l_ident_longtextx_tab.

    data: l_ident_sublist_tab type standard table of bapi1077rl,

    l_ident_sublist_wa like line of l_ident_sublist_tab.

    data: l_prop_usage_tab type standard table of bapi1077du,

    l_prop_usage_wa like line of l_prop_usage_tab,

    l_prop_usagex_tab type standard table of bapisubdux,

    l_prop_usagex_wa like line of l_prop_usagex_tab.

    data: l_prop_usage_buf1 like l_prop_usage_wa,

    l_prop_usage_buf2 like l_prop_usage_wa.

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    *----


    *

    • 1.1. create the default predefined SPECIFICATION & verify the creation *

    *----


    *

    • set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    *----


    *

    • 2.1. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    l_sub_header_wa-substance = spec_key. "Specification. key

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_ident = true

    flg_ident_longtext = true

    flg_ident_usage = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    ident_longtext = l_ident_longtext_tab

    prop_usage = l_prop_usage_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.2. Prepare the data tables & call BAPI_BUS1077_CHANGE *

    *----


    *

    clear l_prop_usage_wa.

    • Prepare the usage

    l_prop_usage_wa-mastertabl = 'ESTRI'.

    l_prop_usage_wa-rating = 'PUBLIC'.

    l_prop_usage_wa-val_area = 'REG_WORLD'.

    l_prop_usage_wa-excl_ind = false.

    l_prop_usage_wa-act_ind = true.

    • Modify the usage table

    modify l_prop_usage_tab from l_prop_usage_wa index 1

    transporting mastertabl

    rating

    val_area

    excl_ind

    act_ind.

    • Specify, wich fields have to be changed

    clear l_prop_usagex_wa.

    l_prop_usagex_wa-rating = true.

    l_prop_usagex_wa-val_area = true.

    l_prop_usagex_wa-excl_ind = true.

    l_prop_usagex_wa-act_ind = true.

    • Append line to change table

    append l_prop_usagex_wa to l_prop_usagex_tab.

    • Call BAPI_BUS1077_CHANGE

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_ident_usage = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    prop_usage = l_prop_usage_tab

    prop_usagex = l_prop_usagex_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.3. Commit the data & remove locks *

    *----


    *

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_usage'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • prepare key date

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    *----


    *

    • 2.4. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    • Call GETDETAIL in order to compare the actual identifier USAGE with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_ident = true

    flg_ident_usage = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    prop_usage = l_prop_usage_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_CHANGE_IDENT_USAGE.

    *----


    *

    method test_change_prop_ftext.

    • This test changes the property ftext & longtext of a specification

    • Prerequisites: Created specification which

    • has these properties set. The test fails if the UD longtext

    • was not changed properly.

    • List of properties that are changed:

    • User defined text:

    • USRDFNDTXT = 'Changed user-defined text for ABAP Unit (LINE 1).'.

    • FORMAT_FLAG = TRUE.

    • UD_TXTTYPE = 'RM'. " Remark

    • LANGU = 'EN'.

    • LONG_TEXT = TRUE.

    • Four lines of the UD longtext are changed:

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 1).'.

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 2).'.

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 3).'.

    • TEXT_LINE = 'Changed user-defined long text for ABAP Unit (LINE 4).'.

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_component_tab type standard table of bapi1077vp,

    l_prop_component_wa like line of l_prop_component_tab.

    data: l_prop_componentx_tab type standard table of bapisubvpx,

    l_prop_componentx_wa like line of l_prop_componentx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    data: l_prop_ftext_tab type standard table of bapi1077df,

    l_prop_ftext_wa like line of l_prop_ftext_tab,

    l_prop_ftextx_tab type standard table of bapisubdfx,

    l_prop_ftextx_wa like line of l_prop_ftextx_tab.

    data l_prop_ftext_recn like l_prop_ftext_wa-record_no.

    data: l_prop_ftext_longtext_tab type standard table of bapi1077fl,

    l_prop_ftext_longtext_wa like line of l_prop_ftext_longtext_tab,

    l_prop_ftextx_longtext_tab type standard table of bapisubflx,

    l_prop_ftextx_longtext_wa like line of l_prop_ftextx_longtext_tab.

    data: l_prop_usage_tab type standard table of bapi1077du,

    l_prop_usage_wa like line of l_prop_usage_tab,

    l_prop_usagex_tab type standard table of bapisubdux,

    l_prop_usagex_wa like line of l_prop_usagex_tab.

    data: l_prop_usage_buf1 like l_prop_usage_wa,

    l_prop_usage_buf2 like l_prop_usage_wa.

    • set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    l_sub_header_wa-substance = spec_key.

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Clear usage table & WA

    clear: l_prop_usage_wa, l_prop_usage_tab.

    l_prop_usage_wa-rating = 'PUBLIC'.

    l_prop_usage_wa-val_area = 'REG_WORLD'.

    l_prop_usage_wa-excl_ind = false.

    append l_prop_usage_wa to l_prop_usage_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    flg_properties = true

    flg_prop_details = true

    flg_prop_ftext_longtext = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab

    prop_usage = l_prop_usage_tab

    prop_component = l_prop_component_tab

    prop_ftext = l_prop_ftext_tab

    prop_ftext_longtext = l_prop_ftext_longtext_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_ftext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • prepare the USER-DEFINED TEXTS tab

    clear l_prop_ftext_wa.

    l_prop_ftext_wa-usrdfndtxt = 'Changed user-defined text for ABAP Unit (LINE 1).'. "#EC NOTEXT

    l_prop_ftext_wa-format_flag = true.

    l_prop_ftext_wa-ud_txttype = 'RM'. " Remark

    l_prop_ftext_wa-langu = 'EN'.

    l_prop_ftext_wa-long_text = true.

    • Modify the UD texts tab

    modify l_prop_ftext_tab from l_prop_ftext_wa index 1

    transporting usrdfndtxt

    format_flag

    ud_txttype

    langu

    long_text.

    • prepare the TEXTS

    clear l_prop_ftext_longtext_wa.

    • Prepare the 1-st text line

    l_prop_ftext_longtext_wa-text_line = 'Changed user-defined long text for ABAP Unit (LINE 1).'. "#EC NOTEXT

    l_prop_ftext_longtext_wa-format_col = '*'.

    l_prop_ftext_longtext_wa-loglockmod = true.

    modify l_prop_ftext_longtext_tab from l_prop_ftext_longtext_wa index 1

    transporting text_line

    format_col

    loglockmod.

    • Prepare the 2-nd text line

    l_prop_ftext_longtext_wa-text_line = 'Changed user-defined long text for ABAP Unit (LINE 2).'. "#EC NOTEXT

    modify l_prop_ftext_longtext_tab from l_prop_ftext_longtext_wa index 2

    transporting text_line

    format_col

    loglockmod.

    • Prepare the 3-rd text line

    l_prop_ftext_longtext_wa-text_line = 'Changed user-defined long text for ABAP Unit (LINE 3).'. "#EC NOTEXT

    modify l_prop_ftext_longtext_tab from l_prop_ftext_longtext_wa index 3

    transporting text_line

    format_col

    loglockmod.

    • Specify, wich fields have to be changed

    clear l_prop_ftextx_longtext_wa.

    l_prop_ftextx_longtext_wa-text_line = true.

    l_prop_ftextx_longtext_wa-format_col = true.

    l_prop_ftextx_longtext_wa-loglockmod = true.

    • Append three equal lines to the change table

    append l_prop_ftextx_longtext_wa to l_prop_ftextx_longtext_tab.

    append l_prop_ftextx_longtext_wa to l_prop_ftextx_longtext_tab.

    append l_prop_ftextx_longtext_wa to l_prop_ftextx_longtext_tab.

    • Set the change table for UD texts

    clear l_prop_ftextx_wa.

    • L_PROP_FTEXTX_WA

    l_prop_ftextx_wa-usrdfndtxt = true.

    l_prop_ftextx_wa-ud_txttype = true.

    l_prop_ftextx_wa-langu = true.

    l_prop_ftextx_wa-long_text = true.

    • L_PROP_FTEXT_WA-UD_TXTTYPE

    append l_prop_ftextx_wa to l_prop_ftextx_tab.

    • Change the UD texts & Longtexts

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_prop_ftext = true

    flg_prop_ftext_longtext = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_ftext = l_prop_ftext_tab

    prop_ftextx = l_prop_ftextx_tab

    prop_ftext_longtext = l_prop_ftext_longtext_tab

    prop_ftext_longtextx = l_prop_ftextx_longtext_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_ftext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_ftext'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_ftext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • Call GETDETAIL in order to compare the actual identifier longtext with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    flg_properties = true

    flg_prop_details = true

    flg_prop_ftext_longtext = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_component = l_prop_component_tab

    prop_ftext = l_prop_ftext_tab

    prop_ftext_longtext = l_prop_ftext_longtext_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_ftext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. "TEST_CHANGE_PROP_FTEXT

    *----


    *

    method test_change_prop_usage.

    • This test changes the first property usage of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the property usage

    • was not changed properly.

    • List of properties that are changed:*

    • RATING = 'PUBLIC'.

    • VAL_AREA = 'REG_WORLD'.

    • EXCL_IND = FALSE.

    • ACT_IND = TRUE.

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_component_tab type standard table of bapi1077vp,

    l_prop_component_wa like line of l_prop_component_tab.

    data: l_prop_componentx_tab type standard table of bapisubvpx,

    l_prop_componentx_wa like line of l_prop_componentx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    data: l_prop_usage_tab type standard table of bapi1077du,

    l_prop_usage_wa like line of l_prop_usage_tab,

    l_prop_usagex_tab type standard table of bapisubdux,

    l_prop_usagex_wa like line of l_prop_usagex_tab.

    data: l_prop_usage_buf1 like l_prop_usage_wa,

    l_prop_usage_buf2 like l_prop_usage_wa.

    • set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    l_sub_header_wa-substance = spec_key.

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Clear usage table & WA

    clear: l_prop_usage_wa, l_prop_usage_tab.

    l_prop_usage_wa-rating = 'PUBLIC'.

    l_prop_usage_wa-val_area = 'REG_WORLD'.

    l_prop_usage_wa-excl_ind = false.

    append l_prop_usage_wa to l_prop_usage_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_properties = true

    flg_prop_details = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab

    prop_usage = l_prop_usage_tab

    prop_component = l_prop_component_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • Prepare the usage

    clear l_prop_usage_wa.

    l_prop_usage_wa-rating = 'PUBLIC'.

    l_prop_usage_wa-val_area = 'REG_EU'.

    l_prop_usage_wa-mastertabl = 'ESTVA'.

    l_prop_usage_wa-excl_ind = false.

    l_prop_usage_wa-act_ind = true.

    • Modify the usage table

    modify l_prop_usage_tab from l_prop_usage_wa index 1

    transporting mastertabl

    rating

    val_area

    excl_ind

    act_ind.

    • Specify, wich fields have to be changed

    clear l_prop_usagex_wa.

    l_prop_usagex_wa-rating = true.

    l_prop_usagex_wa-val_area = true.

    l_prop_usagex_wa-excl_ind = true.

    l_prop_usagex_wa-act_ind = true.

    • Append line to change table

    append l_prop_usagex_wa to l_prop_usagex_tab.

    • Call BAPI_BUS1077_CHANGE

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_prop_usage = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_usage = l_prop_usage_tab

    prop_usagex = l_prop_usagex_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_usage'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • Call GETDETAIL in order to compare the property usage with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_properties = true

    flg_prop_details = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_usage = l_prop_usage_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_usage'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_CHANGE_PROP_USAGE.

    *----


    *

    method test_change_ident_longtext.

    • This test changes the identifier longtext of a specification

    • Prerequisites: Created specification which

    • has this property set. The test fails if the identifier longtext

    • was not changed properly.

    • Four lines of the identifier longtext are changed:

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 1).'.

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 2).'.

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 3).'.

    • TEXT_LINE = 'Changed long text for ABAP Unit (LINE 4).'.

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_component_tab type standard table of bapi1077vp,

    l_prop_component_wa like line of l_prop_component_tab.

    data: l_prop_componentx_tab type standard table of bapisubvpx,

    l_prop_componentx_wa like line of l_prop_componentx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    • Identifier specific data

    data: l_ident_header_tab type standard table of bapi1077ri,

    l_ident_header_wa like line of l_ident_header_tab,

    l_ident_headerx_tab type standard table of bapisubrix,

    l_ident_headerx_wa like line of l_ident_headerx_tab.

    data: l_ident_record_no like l_ident_header_wa-record_no.

    data: l_ident_longtext_tab type standard table of bapi1077il,

    l_ident_longtext_wa like line of l_ident_longtext_tab,

    l_ident_longtextx_tab type standard table of bapisubilx,

    l_ident_longtextx_wa like line of l_ident_longtextx_tab.

    data: l_ident_sublist_tab type standard table of bapi1077rl,

    l_ident_sublist_wa like line of l_ident_sublist_tab.

    data: l_prop_usage_tab type standard table of bapi1077du,

    l_prop_usage_wa like line of l_prop_usage_tab.

    data: l_prop_usage_buf1 like l_prop_usage_wa,

    l_prop_usage_buf2 like l_prop_usage_wa.

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    *----


    *

    • 2.1. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    l_sub_header_wa-substance = spec_key. " Specification. key

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    flg_ident = true

    flg_ident_longtext = true

    flg_ident_usage = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    ident_longtext = l_ident_longtext_tab

    prop_usage = l_prop_usage_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_longtext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.2. Prepare the data tables & call BAPI_BUS1077_CHANGE *

    *----


    *

    clear l_ident_longtext_wa.

    • Prepare identifier longtext line 1

    l_ident_longtext_wa-text_line = 'Changed long text for ABAP Unit (LINE 1).'. "#EC NOTEXT

    l_ident_longtext_wa-format_col = '*'.

    l_ident_longtext_wa-loglockmod = true.

    modify l_ident_longtext_tab from l_ident_longtext_wa index 1

    transporting text_line

    format_col

    loglockmod.

    • Prepare identifier longtext line 2

    l_ident_longtext_wa-primarykey = 212. "int. key

    l_ident_longtext_wa-text_line = 'Changed long text for ABAP Unit (LINE 2).'. "#EC NOTEXT

    modify l_ident_longtext_tab from l_ident_longtext_wa index 2

    transporting text_line

    format_col

    loglockmod.

    • Prepare identifier longtext line 3

    l_ident_longtext_wa-primarykey = 213. "int. key

    l_ident_longtext_wa-text_line = 'Changed long text for ABAP Unit (LINE 3).'. "#EC NOTEXT

    modify l_ident_longtext_tab from l_ident_longtext_wa index 3

    transporting text_line

    format_col

    loglockmod.

    • Prepare identifier longtext line 4

    l_ident_longtext_wa-primarykey = 214. "int. key

    l_ident_longtext_wa-text_line = 'Changed long text for ABAP Unit (LINE 4).'. "#EC NOTEXT

    modify l_ident_longtext_tab from l_ident_longtext_wa index 4

    transporting text_line

    format_col

    loglockmod.

    • Specify, wich fields have to be changed

    clear l_ident_longtextx_wa.

    l_ident_longtextx_wa-text_line = true.

    l_ident_longtextx_wa-format_col = true.

    l_ident_longtextx_wa-loglockmod = true.

    • Append four equal lines

    append l_ident_longtextx_wa to l_ident_longtextx_tab.

    append l_ident_longtextx_wa to l_ident_longtextx_tab.

    append l_ident_longtextx_wa to l_ident_longtextx_tab.

    append l_ident_longtextx_wa to l_ident_longtextx_tab.

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_ident_longtext = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_longtext = l_ident_longtext_tab

    ident_longtextx = l_ident_longtextx_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_longtext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.3. Commit the data & remove locks *

    *----


    *

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_longtext'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_longtext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • Call GETDETAIL in order to compare the actual identifier longtext with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    flg_ident = true

    flg_ident_longtext = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    ident_header = l_ident_header_tab

    ident_longtext = l_ident_longtext_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_ident_longtext'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_CHANGE_IDENT_LONGTEXT

    *----


    *

    method test_read_usage_filter.

    • This test assures that the usage filter is working properly

    • Prerequisites: Created specification which:

    • - Has property usage set to PUBLIC/EU or PUBLIC/REG_WORLD.

    • This test has two scenarios:

    • 1-st:

    • Read the value assignments with filter which should not find

    • any value assignments matching the criteria.

    • Criteria: INTERNAL/REG_WORLD

    • 2-nd:

    • Read the value assignments with filter which should find

    • one value assignment matching the criteria.

    • Criteria: PUBLIC/ES

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_componentx_tab type standard table of bapisubvpx,

    l_prop_componentx_wa like line of l_prop_componentx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    data: l_prop_usage_tab type standard table of bapi1077du,

    l_prop_usage_wa like line of l_prop_usage_tab,

    l_prop_usagex_tab type standard table of bapisubdux,

    l_prop_usagex_wa like line of l_prop_usagex_tab.

    *----


    *

    • First scenario, no value assignments should be found *

    *----


    *

    • Prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    l_sub_header_wa-substance = spec_key. "Specification. key

    • Fill input sub_header tab

    refresh l_sub_header_tab.

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Clear usage table & WA

    clear: l_prop_usage_wa, l_prop_usage_tab.

    • Set the usage filter

    l_prop_usage_wa-rating = 'INTERNAL'.

    l_prop_usage_wa-val_area = 'REG_WORLD'.

    l_prop_usage_wa-excl_ind = false.

    l_prop_usage_wa-act_ind = true.

    append l_prop_usage_wa to l_prop_usage_tab.

    • Call GETDETAIL in order to obtain the value assignments according to the filter

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_prop_details = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_usage = l_prop_usage_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    clear l_return_wa.

    • Check if there's an error message that no VA were found with the specified key

    read table l_return_tab

    with key

    id = 'D9'

    number = '356'

    into l_return_wa.

    *----


    *

    • Second scenario, one value assignment should be found *

    *----


    *

    clear l_sub_header_wa.

    refresh l_sub_header_tab.

    refresh l_prop_header_tab.

    l_sub_header_wa-substance = spec_key. "Specification. key

    • Fill input sub_header tab

    refresh l_sub_header_tab.

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Clear usage table & WA

    clear: l_prop_usage_wa, l_prop_usage_tab.

    • Set the usage filter

    l_prop_usage_wa-rating = 'PUBLIC'.

    l_prop_usage_wa-val_area = 'ES'.

    l_prop_usage_wa-excl_ind = false.

    l_prop_usage_wa-act_ind = true.

    append l_prop_usage_wa to l_prop_usage_tab.

    • Call GETDETAIL in order to obtain the value assignments according to the filter

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_prop_details = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_usage = l_prop_usage_tab

    prop_val = l_prop_val_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_read_usage_filter'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. "TEST_READ_USAGE_FILTER

    *----


    *

    method test_ref_subs.

    • This test's purpose is to assure that specification references

    • can be created successfully.

    • Scenario:

    • 1. Create 2 specifications(one with property values set, the other without)

    • 2. Create a reference from the second spec to the first

    • 3. Verify that the specifications have at least one property which

    • is the same - this will assure that the reference has been

    • created successfully

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_refsub_tab type standard table of bapi1077rr,

    l_refsub_wa like line of l_refsub_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_component_tab type standard table of bapi1077vp,

    l_prop_component_wa like line of l_prop_component_tab,

    l_prop_componentx_tab type standard table of bapisubvpx,

    l_prop_componentx_wa like line of l_prop_componentx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    data: l_refsubs_tab type standard table of bapi1077rr,

    l_refsubs_wa like line of l_refsubs_tab.

    data: record_no_wa type eserecn,

    record_no_pre_wa type eserecn.

    *----


    *

    • Read the record number of the reference substance *

    *----


    *

    • Prepare the Sub header tab

    clear l_sub_header_wa.

    refresh l_sub_header_tab.

    l_sub_header_wa-substance = spec_key.

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Call GETDETAIL in order to obtain the spec. RECORD_NO

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • Read the record number

    read table l_sub_header_tab

    into l_sub_header_wa

    index 1

    transporting record_no.

    record_no_wa = l_sub_header_wa-record_no.

    *----


    *

    • Read the record number of the referenced substance-*

    *----


    *

    clear l_sub_header_wa.

    refresh l_sub_header_tab.

    • Prepare the Sub header tab

    l_sub_header_wa-substance = spec_key_pre.

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Get the spec_key RECORD_NO

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • Read the record number

    read table l_sub_header_tab

    into l_sub_header_wa

    index 1

    transporting record_no.

    record_no_pre_wa = l_sub_header_wa-record_no.

    *----


    *

    • Call Getdetail in order to obtain the subheader *

    • of the referenced substance. *

    *----


    *

    • Clear the table & WA

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    • Set the specification key

    l_sub_header_wa-substance = spec_key_pre. "Specification key of referenced substance

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Call GETDETAIL in order to obtain the needed data(Substance header)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • Prepare the data for the creation of ref sub

    • Clear wa

    clear l_refsubs_wa.

    refresh l_refsubs_tab.

    l_refsubs_wa-primarykey = 2908. "int. key

    l_refsubs_wa-flgprimkey = true.

    l_refsubs_wa-foreignkey = record_no_pre_wa.

    l_refsubs_wa-flgfrgnkey = false.

    l_refsubs_wa-ref_recnrh = record_no_wa.

    append l_refsubs_wa to l_refsubs_tab.

    • Call the create module

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CREATE'

    exporting

    flg_refsubs = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    refsubs = l_refsubs_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CREATE'

    i_func_desc = text-000

    i_spec_key = l_sub_header_wa-substance.

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • GetDetail for original Substance *

    *----


    *

    clear l_sub_header_wa.

    refresh l_sub_header_tab.

    l_sub_header_wa-substance = spec_key. " Specification. key

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    flg_properties = true

    flg_prop_data = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab

    prop_component = l_prop_component_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • GetDetail for referenced Substance *

    *----


    *

    clear l_sub_header_wa.

    refresh l_sub_header_tab.

    l_sub_header_wa-substance = spec_key_pre. " Specification. key

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    flg_properties = true

    flg_prop_data = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab

    prop_component = l_prop_component_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_ref_subs'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_REF_SUBS

    *----


    *

    method test_change_comp.

    *This test changes the first component in the property

    *"Exact composition based on compound"

    • Prerequisites: Created specification which

    • has this property set. The test fails if the component's data

    • was not changed properly.

    • List of properties that are changed:

    • COMPCAT = 'EMULSIFIER'.

    • OPLOWLIMIT = '>'.

    • LOW_LIMIT = '0.15'.

    • OPUPPLIMIT = '<='.

    • UPP_LIMIT = '0.88'.

    • AVG_VAL = '0.88'.

    • EXPONENT = 'PPM'.

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_component_tab type standard table of bapi1077vp,

    l_prop_component_wa like line of l_prop_component_tab.

    data: l_prop_componentx_tab type standard table of bapisubvpx,

    l_prop_componentx_wa like line of l_prop_componentx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    *----


    *

    • 1.1. create the default predefined SPECIFICATION & verify the creation *

    *----


    *

    • set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    *----


    *

    • 2.1. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    l_sub_header_wa-substance = spec_key. " Specification. key

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header for the GETDETAILS method

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_properties = true

    flg_prop_data = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab

    prop_component = l_prop_component_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_comp'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.2. Prepare the data tables & call BAPI_BUS1077_CHANGE *

    *----


    *

    • CLEAR PROP_COMPONENT_WA.

    clear l_prop_component_wa.

    l_prop_component_wa-compcat = 'EMULSIFIER'.

    l_prop_component_wa-oplowlimit = '>'.

    l_prop_component_wa-low_limit = '0.15'.

    l_prop_component_wa-opupplimit = '<='.

    l_prop_component_wa-upp_limit = '0.88'.

    l_prop_component_wa-avg_val = '0.88'.

    l_prop_component_wa-exponent = 'PPM'.

    modify l_prop_component_tab from l_prop_component_wa index 1

    transporting compcat

    oplowlimit

    low_limit

    opupplimit

    upp_limit

    avg_val

    exponent.

    • Specify, wich fields have to be changed

    clear l_prop_componentx_wa.

    l_prop_componentx_wa-compcat = true.

    l_prop_componentx_wa-oplowlimit = true.

    l_prop_componentx_wa-low_limit = true.

    l_prop_componentx_wa-opupplimit = true.

    l_prop_componentx_wa-upp_limit = true.

    l_prop_componentx_wa-avg_val = true.

    l_prop_componentx_wa-exponent = true.

    append l_prop_componentx_wa to l_prop_componentx_tab.

    • Call the BAPI_BUS1077_CHANGE method

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_prop_comp = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_component = l_prop_component_tab

    prop_componentx = l_prop_componentx_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_comp'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.3. Commit the data & remove locks *

    *----


    *

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_comp'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_comp'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.4. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    refresh l_return_tab.

    • Call GETDETAIL in order to compare the actual component table with the expected one

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    flg_properties = true

    flg_prop_data = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_component = l_prop_component_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_comp'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_CHANGE

    *----


    *

    method test_change_assessment.

    • This test changes the assessment of the property usage of a specification

    • Prerequisites: Created specification which:

    • - Has the predefined dafault property set. The test fails if the property assessment

    • don't change properly.

    • - List of properties that are changed:

    • ASSESSMENT = '2'.

    *----


    *

    • Local data

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_assess_tab type standard table of bapi1077dr,

    l_prop_assess_wa like line of l_prop_assess_tab.

    data: l_prop_assessx_tab type standard table of bapisubdrx,

    l_prop_assessx_wa like line of l_prop_assessx_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    • ----------------------------

    • 1.1. create the default predefined SPECIFICATION & verify the creation

    • ----------------------------

    • Set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • ----------------------------

    • 2.1. Prepare the data tables & call BAPI_BUS1077_GETDETAIL

    • ----------------------------

    • Prepare the specification header

    refresh l_sub_header_tab.

    clear l_sub_header_wa.

    l_sub_header_wa-substance = spec_key.

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header

    refresh l_prop_header_tab.

    clear l_prop_header_wa.

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Prepare the assessment data

    refresh: l_prop_assess_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    scenario = '1'

    change_number = addinf-aennr

    flg_header = true

    flg_properties = true

    flg_prop_details = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_reliability = l_prop_assess_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_assessment'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • ----------------------------

    • 2.2. Prepare the data tables & call BAPI_BUS1077_CHANGE

    • ----------------------------

    • Prepare the new data for ASSESSMENT tab

    clear l_prop_assess_wa.

    l_prop_assess_wa-assessment = '2'.

    • Modify the ASSESMENT table

    modify l_prop_assess_tab from l_prop_assess_wa index 1

    transporting assessment.

    • Specify, wich fields have to be changed

    refresh l_prop_assessx_tab.

    clear l_prop_assessx_wa.

    l_prop_assessx_wa-assessment = true.

    append l_prop_assessx_wa to l_prop_assessx_tab.

    • Call BAPI_BUS1077_CHANGE

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_prop_rel = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_reliability = l_prop_assess_tab

    prop_reliabilityx = l_prop_assessx_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_assessment'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    • ----------------------------

    • 2.3. Commit the data & remove locks

    • ----------------------------

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_assessment'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_assessment'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • ----------------------------

    • 2.4. Prepare the data tables & call BAPI_BUS1077_GETDETAIL

    • ----------------------------

    • Call GETDETAIL in order to compare the property usage with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    scenario = '1'

    change_number = addinf-aennr

    flg_header = true

    flg_properties = true

    flg_prop_details = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_reliability = l_prop_assess_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_assessment'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_CHANGE_ASSESSMENT.

    *----


    *

    method test_change_prop_data.

    • This test changes the property data of a value assignment

    • Prerequisites: Created specification which:

    • - Has the predefined dafault property set. The test fails if the property data

    • doesn't change properly.

    • - Changed data:

    • CHAR_VALUE = 'ABAP UNIT - Change text'.

    *----


    *

    • Local data

    data: l_estva_tab type standard table of estva.

    data: l_estva_wa like line of l_estva_tab.

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_prop_header_tab type standard table of bapi1077vh,

    l_prop_header_wa like line of l_prop_header_tab.

    data: l_prop_val_tab type standard table of bapi1077va,

    l_prop_val_wa like line of l_prop_val_tab.

    data: l_prop_data_tab type standard table of bapi1077pr,

    l_prop_data_wa like line of l_prop_data_tab.

    data: l_prop_datax_tab type standard table of bapisubprx,

    l_prop_datax_wa like line of l_prop_datax_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    data: record_no_wa type eserecn.

    data: record_no_pre_wa type eserecn.

    data: l_phrase_id(30) type c.

    *----


    *

    • 1.1. create the default predefined SPECIFICATION & verify the creation *

    *----


    *

    • Set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • Class_setup...

    *----


    *

    • 2.1. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    • Modify the changed date & person in ESTVA *

    • before we modify the value assignment data *

    *----


    *

    • Prepare the Sub header tab

    clear l_sub_header_wa.

    refresh l_sub_header_tab.

    l_sub_header_wa-substance = spec_key.

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Call GETDETAIL in order to obtain the spec. RECORD_NO

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    flg_header = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_data'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • Read the record number

    read table l_sub_header_tab

    into l_sub_header_wa

    index 1

    transporting record_no.

    record_no_wa = l_sub_header_wa-record_no.

    select * from estva

    into l_estva_wa

    where

    recnroot = record_no_wa.

    endselect.

    l_estva_wa-upddat = '19651015'.

    l_estva_wa-updnam = 'Someone'. "#EC NOTEXT

    modify estva from l_estva_wa.

    *----


    *

    • End ESTVA Modification *

    *----


    *

    *----


    *

    • 2.3. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    • Prepare the specification header

    refresh l_sub_header_tab.

    refresh l_prop_header_tab.

    clear l_sub_header_wa.

    l_sub_header_wa-substance = spec_key.

    append l_sub_header_wa to l_sub_header_tab.

    • Prepare the property header

    refresh l_prop_header_tab.

    clear l_prop_header_wa.

    l_prop_header_wa-subchacat = 'SAP_EHS_1012_015'. " Chemical characterization

    append l_prop_header_wa to l_prop_header_tab.

    • Prepare the assessment data

    refresh: l_prop_data_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    scenario = '1'

    change_number = addinf-aennr

    flg_header = true

    flg_properties = true

    flg_prop_data = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_data'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.4. Prepare the data tables & call BAPI_BUS1077_CHANGE *

    *----


    *

    • Get random phrase-text

    call method get_random_phrase

    exporting

    i_phrase_sel_set = 'SAP_EHS_1012_015_REMARK'

    importing

    e_phrase_id = l_phrase_id.

    • Prepare the new data for L_PROP_DATA_TAB

    clear l_prop_data_wa.

    l_prop_data_wa-char_value = l_phrase_id.

    • Modify the ASSESMENT table

    modify l_prop_data_tab from l_prop_data_wa index 1

    transporting char_value.

    • Specify, wich fields have to be changed

    refresh l_prop_datax_tab.

    clear l_prop_datax_wa.

    l_prop_datax_wa-char_value = true.

    append l_prop_datax_wa to l_prop_datax_tab.

    • Call BAPI_BUS1077_CHANGE

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CHANGE'

    exporting

    flg_prop_data = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab

    prop_datax = l_prop_datax_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_data'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_CHANGE'

    i_func_desc = text-005

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.5. Commit the data & remove locks *

    *----


    *

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_data'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_data'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    *----


    *

    • 2.6. Prepare the data tables & call BAPI_BUS1077_GETDETAIL *

    *----


    *

    • Call GETDETAIL in order to compare the property usage with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    scenario = '1'

    change_number = addinf-aennr

    flg_header = true

    flg_properties = true

    flg_prop_data = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    prop_header = l_prop_header_tab

    prop_val = l_prop_val_tab

    prop_data = l_prop_data_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_change_prop_data'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_CHANGE_PROP_DATA.

    *----


    *

    method test_del_ref.

    *This test deletes the reference specification

    • Prerequisites: specification with a reference süecification.

    *----


    *

    data: l_sub_header_tab type standard table of bapi1077rh,

    l_sub_header_wa like line of l_sub_header_tab.

    data: l_return_tab type standard table of bapiret2,

    l_return_wa like line of l_return_tab.

    data: l_refsubs_tab type standard table of bapi1077rr,

    l_refsubs_wa like line of l_refsubs_tab,

    l_refsubsx_tab type standard table of bapisubrrx,

    l_refsubsx_wa like line of l_refsubsx_tab.

    data: record_no_wa type eserecn,

    record_no_pre_wa type eserecn.

    • set the key date and the change number

    addinf-valdat = '19651015'. "key date 10/15/1965

    clear addinf-aennr. "change number

    • prepare the new specification head

    clear l_sub_header_wa.

    clear l_sub_header_tab.

    l_sub_header_wa-substance = spec_key_pre.

    • Fill input sub_header tab

    append l_sub_header_wa to l_sub_header_tab.

    • Call GETDETAIL in order to obtain the needed data

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_refsubs = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    refsubs = l_refsubs_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_ta

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_del_ref'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    • Delete Reference

    refresh l_return_tab.

    call function 'BAPI_BUS1077_DELETE'

    exporting

    flg_refsubs = true

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    refsubs = l_refsubs_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_del_ref'

    i_tab_flg = false

    i_func = 'BAPI_BUS1077_DELETE'

    i_func_desc = text-004

    i_spec_key = l_sub_header_wa-substance.

    • commit work sy-subrc

    clear l_return_wa.

    call function 'BAPI_TRANSACTION_COMMIT'

    exporting

    wait = true

    importing

    return = l_return_wa.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_del_ref'

    i_tab_flg = false

    i_func = 'BAPI_TRANSACTION_COMMIT'

    i_func_desc = text-001

    i_spec_key = l_sub_header_wa-substance.

    • remove locks (according to note 732628)

    refresh l_return_tab.

    call function 'BAPI_BUS1077_SAVEFROMBUFFER'

    exporting

    flg_luw_close_for_bapi = true

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_del_ref'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_SAVEFROMBUFFER'

    i_func_desc = text-002

    i_spec_key = l_sub_header_wa-substance.

    • Call GETDETAIL in order to compare the property usage with the expected one

    refresh l_return_tab.

    call function 'BAPI_BUS1077_GETDETAIL'

    exporting

    key_date = addinf-valdat

    change_number = addinf-aennr

    flg_header = true

    flg_refsubs = true

    scenario = '1'

    tables

    return = l_return_tab

    sub_header = l_sub_header_tab

    refsubs = l_refsubs_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • clear buffer

    refresh l_return_tab.

    call function 'BAPI_BUS1077_CLEARBUFFER'

    tables

    return = l_return_tab.

    • If errors occured, write them into l_dis_tab

    call method set_dis_tab

    exporting

    i_table = l_return_tab

    i_wa = l_return_wa

    i_meth = 'test_del_ref'

    i_tab_flg = true

    i_func = 'BAPI_BUS1077_GETDETAIL'

    i_func_desc = text-003

    i_spec_key = l_sub_header_wa-substance.

    endmethod. " TEST_DEL_REF

    *----


    *

    method set_dis_tab.

    • This method adds a line to the displayed table

    *----


    *

    data:

    l_wa like line of i_table.

    if i_tab_flg = true.

    loop at i_table into l_wa.

    if l_wa-type <> 'S' and

    l_wa-type <> 'I'.

    call method set_dis_wa

    exporting

    i_meth_wa = i_meth

    i_func_wa = i_func

    i_func_desc_wa = i_func_desc

    i_error_desc_wa = l_wa-message

    i_spec_key_wa = i_spec_key.

    append l_dis_wa to l_dis_tab.

    endif.

    endloop.

    else.

    if i_wa is not initial.

    if i_wa-type <> 'S' and

    i_wa-type <> 'I'.

    call method set_dis_wa

    exporting

    i_meth_wa = i_meth

    i_func_wa = i_func

    i_func_desc_wa = i_func_desc

    i_error_desc_wa = i_wa-message

    i_spec_key_wa = i_spec_key.

    append l_dis_wa to l_dis_tab.

    endif.

    endif.

    endif.

    endmethod. " set_dis_tab

    *----


    *

    method get_dis_tab.

    • This method returns the displayed table

    *----


    *

    e_dis_tab = l_dis_tab.

    endmethod. " set_dis_tab

    *----


    *

    method set_dis_wa.

    • This method sets values of the workarea "l_dis_wa"

    *----


    *

    l_dis_wa-meth = i_meth_wa.

    l_dis_wa-func = i_func_wa.

    l_dis_wa-func_desc = i_func_desc_wa.

    l_dis_wa-error_desc = i_error_desc_wa.

    l_dis_wa-spec_key = i_spec_key_wa.

    endmethod. " set_dis_wa

    *----


    *

    method get_dis_wa.

    • This method sets values of the workarea "l_dis_wa"

    *----


    *

    e_meth_wa = l_dis_wa-meth.

    e_func_wa = l_dis_wa-func.

    e_func_desc_wa = l_dis_wa-func_desc.

    e_error_desc_wa = l_dis_wa-error_desc.

    e_spec_key_wa = l_dis_wa-spec_key.

    endmethod. " get_dis_wa

    *----


    *

    method get_random_matnr.

    • This method gets materialnumber of the first entry in the table "MAKT"

    *----


    *

    select single matnr "#EC CI_NOFIELD

    from makt

    into e_mat_nr

    where matnr ne ''.

    endmethod. " get_random_matnr

    *----


    *

    method get_random_source.

    • This method gets a random source-id

    *----


    *

    select single srcid

    from tcg46

    into e_source

    where srcid ne ''.

    endmethod. " get_random_source

    *----


    *

    method get_random_phrase.

    • This method gets a random phrase to a give phrase selection set

    *----


    *

    types:

    begin of l_phr_id_cat_type_rec,

    phrid(15) type c,

    catpin(5) type c,

    end of l_phr_id_cat_type_rec.

    data:

    l_phr_id_cat_tab type table of l_phr_id_cat_type_rec,

    l_phr_id_cat_wa like line of l_phr_id_cat_tab.

    data:

    recn_phr_sel_set(20) type c,

    recn_ph(20) type c.

    • Get ID for given phrase selection set

    select single recn

    from estps

    into recn_phr_sel_set

    where phrsel eq i_phrase_sel_set.

    select single recntph

    from estpj

    into recn_ph

    where recntps eq recn_phr_sel_set

    and delflg eq false.

    select single phrid catpin

    from estph

    into corresponding fields of l_phr_id_cat_wa

    where recn eq recn_ph and

    delflg eq false.

    concatenate l_phr_id_cat_wa-catpin '-' l_phr_id_cat_wa-phrid

    into e_phrase_id.

    endmethod. " get_random_phrase

    *----


    *

    method write_table_to_list.

    • writes a table to to the list

    *----


    *

    data:

    only_harmless_mesg(1) type c value true.

    leave to list-processing.

    set pf-status space.

    skip.

    write: i_method color 3.

    new-line.

    write at /1(172) sy-uline.

    new-line.

    • Headlines for cols

    write: sy-vline no-gap,

    at (32) 'Function' "#EC NOTEXT

    color 1 on left-justified no-gap.

    write: sy-vline no-gap,

    at (32) 'Function description' "#EC NOTEXT

    color 1 on left-justified no-gap.

    write: sy-vline no-gap,

    at (80) 'Error description' "#EC NOTEXT

    color 1 on left-justified no-gap.

    write: sy-vline no-gap,

    at (24) 'Specification key' "#EC NOTEXT

    color 1 on left-justified no-gap.

    write: sy-vline.

    write at /1(172) sy-uline.

    new-line.

    clear l_dis_wa.

    • Write table to list

    if i_dis_tab is not initial.

    loop at i_dis_tab into l_dis_wa.

    only_harmless_mesg = false.

    write: sy-vline no-gap, at (32) l_dis_wa-func no-gap.

    write: sy-vline no-gap, at (32) l_dis_wa-func_desc no-gap.

    write: sy-vline no-gap, at (80) l_dis_wa-error_desc no-gap.

    write: sy-vline no-gap, at (24) l_dis_wa-spec_key no-gap.

    write sy-vline.

    new-line.

    endloop.

    if only_harmless_mesg = true.

    write: sy-vline no-gap, at (100) text-006 no-gap.

    write at 173 sy-vline.

    endif.

    write at /1(172) sy-uline.

    else.

    write: sy-vline no-gap, at (100) text-006 no-gap.

    write at 173 sy-vline.

    write at /1(172) sy-uline.

    endif.

    endmethod. " write_table_to_list

    endclass. "lcl_BUS1077_change_test IMPLEMENTATION

    *&----


    *

    *& PBO and PAI for Dynpro 100

    *&----


    *

    module pbo_100 output.

    set pf-status 'MAIN100'.

    set titlebar '100_TITLE'.

    • Check every table if errors occured. If no errors occured,

    • Fill with hint "No errors occured"

    if lg_dis_tab is initial.

    lg_dis_wa-meth = text-012.

    append lg_dis_wa to lg_dis_tab.

    endif.

    • Table 1: test_cr_all_spec_dtls_bylrs

    create object g_custom_container

    exporting container_name = g_container_1.

    create object grid1

    exporting i_parent = g_custom_container.

    call method grid1->set_table_for_first_display

    changing

    it_outtab = lg_dis_tab

    it_fieldcatalog = lg_fcat_tab.

    endmodule.

    module pai_100 input.

    • to react on oi_custom_events:

    call method cl_gui_cfw=>dispatch.

    case ok_code.

    when 'EXIT'.

    leave program.

    when 'BACK'.

    leave program.

    when '%EX'.

    leave program.

    when 'RW'.

    leave program.

    when others.

    • do nothing

    endcase.

    clear ok_code.

    endmodule.

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Johnson,

      could you please share me code details for value assignment in bapi_bus1077_create.

      I am facing issue here,

      My requirement is to create a specification and assign value assignment in remarks fiels.

      I am able to create a specification but cant able to assign value assignment .

      Kindly help me on the same.

      Regards,

      Vinoth.