Creating a New Scenario for Infotype 1222 (Part 2)

Creating a New Scenario for Infotype 1222 (Part 2)

Continuing—and at the same time concluding—the topic of working with the attributes of infotype 1222, in this post we’ll look at an example of using a scenario for infotype 1222 with the ability for users to select values from a Z* table. I will use a previously configured attribute and scenario as a base. As the source table, I’ll use the previously created table ZUSER_VALUES. That should be more than enough for now.

Let’s open the configuration table T77OMATTR in transaction SM30, and modify our attribute by replacing the table and field names:

Unfortunately, standard functionality does not offer a configuration option that enables value selection from a Z* table. This is where good old ABAP comes in—it can help us retrieve values from any table we want. We need to create a function module with the following import/export parameters:

Below is the source code for the function module, which in no way claims to be the pinnacle of what ABAP code can be:

DATA: BEGIN OF ls_data,
id LIKE zuser_values-id,
text LIKE zuser_values-text,
END OF ls_data.
 
DATA lt_data LIKE TABLE OF ls_data.
DATA lt_zuser_values TYPE TABLE OF zuser_values.
 
DATA ls_return TYPE ddshretval.
DATA lt_return TYPE TABLE OF ddshretval.
 
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_data
FROM zuser_values.
 
CALL FUNCTION ā€˜F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
retfield = ā€˜ID’
value_org = ā€˜S’
TABLES
value_tab = lt_data
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
 
READ TABLE lt_return INTO ls_return INDEX 1.
IF ( sy-subrc = 0 ).
sel_value = ls_return-fieldval.
ELSE.
sel_value = seark.
ENDIF.

I think there’s no need to explain what to do if your field or table names differ from those shown above.

Let’s continue with the setup: open the Attributes/Scenario node in table T77OMATTR, and enter the name of the function module we just created into the appropriate field:

Looks like we’re done. Time to start testing—open transaction PPOMA, select an organizational position, and the attribute we created:

Looks about right.