Skip to Content

Introduction:

Many times we need to maintain some Sets in SAP; normally we use these Sets in Boolean Logic formulas, Report writer, Allocation, Planning, Rollups, and Currency Translation in Financial accounting and controlling Module. But we can also use these basic sets to store some validation related values.

Types of Sets:

  1. 1. Basis Sets.
  2. 2. Data Sets.
  3. 3. Single-dimension Sets.
  4. 4. Multi-dimension Sets.

Now the purpose of this document is to explain how these Sets are important in ABAP, and how we can access these maintained sets in our ABAP Program.

Example: Maintain List of User using sets and check these user details in abap program.

Maintaining Sets:

Creation of Sets:

Go to Transaction Code GS01; put your Set name which you want to create. And for the Set we need to maintain Basis data, Click F4 help, then it will ask you for below 3 options.

SDN1.JPG

Depending on your requirement you can select the table. For example we selected BNAME from USR01 table for user details.

SDN1.JPG

Now, we have maintained value as shown in below screen:

SDN1.JPG

All the values maintained against Set are stored in table SETLEAF.

Important Transaction Code for Sets:

GS01        Create set

GS02       Change Set

GS03        Display Set

GS04        Delete set

GS07        Exports sets

GS08        Import sets

GS09        Copy sets from client

Benefits of Using Sets:

In most cases, we create custom table and provide maintenance of the table to store some validation related values. We can maintain those values against a Set. If volumes of values are huge then avoid maintaining it using Sets.

Use sets to maintain TVARV values.

Using Sets in ABAP:

Getting all the maintained values against one set.

Example:

DATA: t_set TYPE TABLE OF rgsb4,
wa_set TYPE rgsb4.
DATA: v_check TYPE C VALUE ‘ ‘.

  CALL FUNCTION ‘G_SET_GET_ALL_VALUES’   

    EXPORTING
client = sy-mandt
  setnr         = ‘ZSET’
  table         = ‘USR01’
  class         = ‘0000’
fieldname     = ‘BNAME’
TABLES
set_values    = T_SET
EXCEPTIONS
set_not_found = 1
OTHERS = 2.

Here, table T_SET contains all the values belonging to SET ‘ZSET’.

You can also use the below Function Module to Create/Maintain Sets.

Creation of Set using FM.


CALL FUNCTION ‘G_SET_CREATION’

  EXPORTING

set_class                  = ‘0000’          “Set class

    set_name                 =  ‘ZSET ” Set Name (not ID) of Set to be Created

    table =                   ” Table for which the Set is to be Created

    types                           =                    ” Set Types Allowed (BSMD)

*   field                            = SPACE       ”  Field for New Set

*   kokrs =                   ” Controlling Area for CO Groups

*   lib                                =                    ” Report Library for RW Sets Generated

*   rname                        =                     ” Report for Generated RW Sets

*   eccs_dimen              =                     “EC-CS Org. Unit

*   eccs_itclg =                    “EC-CS Chart of Accounts

*   eccs_sityp                 =                     “EC-CS Subitem Category

*   use_group_maintenance =  SPACE  Use Group Maintenance for CO Groups

  IMPORTING

    new_set                     =                      “Set ID (not Name) of the New Set

  EXCEPTIONS

    WRONG_TABLE                           = 1                          

    WRONG_SET_NAME                  = 2          

    NO_SET_CREATED                    = 3

    WRONG_SETCLASS                   = 4          

    SET_ALREADY_EXISTS             = 5      

    WRONG_TYPE = 6              

    WRONG_FIELD = 7             

    NO_FIELD_PICKED                    = 8         

    NO_TYPE_PICKED                     = 9

    GROUP_MAINTENANCE_ERROR = 10  

   

Maintenance of Sets:

CALL FUNCTION ‘G_SET_MAINTENANCE’

  EXPORTING

*   CLASS_MASK                         = ‘ ‘

    function                                     =

    set_name_mask                    =

*   TABLE_MASK                         = ‘ ‘

*   MASTER_FLAG                        = ‘ ‘

*   USE_GROUP_MAINTENANCE         = ‘ ‘

*   SHOW_GROUP_VALUE                   = ‘ ‘

IMPORTING

*   CLASS                                        =

   SET                                               = ‘ZSET’

*   TABLE                                        =

EXCEPTIONS

   ILLEGAL_FUNCTION              = 1

   NO_SETS                                      = 2

   NO_SET_PICKED                      = 3

   SET_NOT_FOUND                      = 4

   NO_AUTHORITY                       = 5

   OBJECT_CREATED_BY_SAP         = 6

   GROUP_MAINTENANCE_ERROR       = 7

   DYNAMIC_SET_ERROR             = 8

   OTHERS                                       = 9

          .

IF sy-subrc <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

Getting set value using Set IDs:

DATA: w_setid LIKE sethier-setid,
int_vlaues TYPE STANDARD TABLE OF rgsbv.

CALL FUNCTION ‘G_SET_GET_ID_FROM_NAME’
EXPORTING
shortname     = ‘ZSET’       “Set Name
IMPORTING
new_setid     = w_setid
EXCEPTIONS
OTHERS    = 1.

IF sy-subrc NE 0.
WRITE ‘Invalid Set’.
ENDIF.

CALL FUNCTION ‘G_SET_FETCH’
EXPORTING
setnr              = w_setid
TABLES
set_lines_basic = int_vlaues
EXCEPTIONS
OTHERS          = 1.

Reference:

http://help.sap.com/saphelp_47x200/helpdata/en/5b/d2297e43c611d182b30000e829fbfe/frameset.htm

To report this post you need to login first.

6 Comments

You must be Logged on to comment or reply to a post.

  1. Avirat Patel

    Thanks for the information.. I have never worked with sets , but I would like to know what is the difference between sets and domain value range.

    (0) 

Leave a Reply