Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

CLSC_SELECT_OBJECTS_FROM_CLASS

Former Member
0 Kudos

Hi~

I need your help.

The FM CLSC_SELECT_OBJECTS_FROM_CLASS contain CLSD_CALL_SEARCH_DIALOG to get objects.

But I found something weird problem as below.

I can get over 5,000 objects from CLSD_CALL_SEARCH_DIALOG by se37. but I can get only 100 object from CLSC_SELECT_OBJECTS_FROM_CLASS. I input same classification follow hierachy.

I don't know why, please help me.

FUNCTION clsc_select_objects_from_class.

"----


"*"Lokale Schnittstelle:

*" IMPORTING

*" VALUE(CLASSES) LIKE KLAH-CLASS DEFAULT SPACE

*" VALUE(DEPARTMENTAL_VIEW) LIKE RMCLS-ABTEIL

*" DEFAULT SPACE

*" VALUE(KLART) LIKE KLAH-KLART DEFAULT SPACE

*" VALUE(NO_F8_IN_RESULT) LIKE SY-BATCH DEFAULT SPACE

*" VALUE(RESET_INDX_MEMORY_COUNTER) LIKE SY-BATCH

*" DEFAULT 'X'

*" VALUE(TABLE) LIKE TCLO-OBTAB

*" VALUE(KEY_DATE) LIKE SY-DATUM DEFAULT SY-DATUM

*" VALUE(I_LOWER_DATE) LIKE SY-DATUM OPTIONAL

*" VALUE(OBJECT_LIKE_INOB_CUOBJ) LIKE SY-BATCH

*" DEFAULT SPACE

*" VALUE(F_SEARCH_RESULT_NO_DISPLAY) LIKE RMCLS-

*" XFLAG DEFAULT

*" SPACE

*" VALUE(RESULT_NO_DISPLAY) LIKE RMCLS-XFLAG DEFAULT *" SPACE

*" VALUE(VALUES_ALREADY_IN_DDB) DEFAULT SPACE

*" VALUE(F_TAKE_OVER_ONE_OBJ) LIKE RMCLS-XFLAG

*" DEFAULT SPACE

*" VALUE(PREP_FUNCTION_UNIT) LIKE RS38L-NAME DEFAULT *" SPACE

*" VALUE(I_WITH_VALUES) TYPE C DEFAULT SPACE

*" VALUE(I_SKIP_FIRST_SCREEN) TYPE C DEFAULT 'X'

*" TABLES

*" OBJECTS STRUCTURE CLOBJ

*" CLASSIFICATIONS STRUCTURE AUSP OPTIONAL

*" EXCEPTIONS

*" PF03

*" PF12

*" PF15

*"----


DATA:

l_take_over_objects TYPE clselbool,

l_display_result TYPE clselbool,

l_read_user_options TYPE clselbool VALUE 'X',

l_ok_code like sy-ucomm,

l_cldar TYPE cldar,

l_objects_tab LIKE clsel_search_objects

OCCURS 0 WITH HEADER LINE.

IMPORT cldar TO l_cldar FROM MEMORY ID 'X'.

IF sy-subrc IS INITIAL.

CLEAR l_read_user_options.

ENDIF.

IF no_f8_in_result IS INITIAL.

l_take_over_objects = c_x.

ENDIF.

IF result_no_display IS INITIAL.

l_display_result = c_x.

ENDIF.

CALL FUNCTION 'CLSD_CALL_SEARCH_DIALOG'

EXPORTING

i_class_type = klart

i_top_class = classes

i_objecttype = table

i_key_date = key_date

i_lower_date = i_lower_date

i_take_over_objects = l_take_over_objects

i_pop_up = ' '

i_display_result = l_display_result

i_display_hierarchy = 'X'

i_leave_to_sytcode = ' '

i_read_user_options = l_read_user_options

i_status_free = 'X'

i_status_locked = l_cldar-dar_sperr

i_status_incomplete = l_cldar-dar_unv

i_not_valuated = l_cldar-dar_unb

IMPORTING

e_ok_code = l_ok_code

TABLES

e_objects_tab = l_objects_tab

e_values_tab = classifications

EXCEPTIONS

inconsistent_parameters = 1

no_objects_found = 2

canceled = 3

OTHERS = 4.

IF sy-subrc <> 0.

RAISE pf12.

ENDIF.

IF l_ok_code = 'BACK'.

RAISE PF03.

ENDIF.

IF l_ok_code = 'END'.

RAISE pf15.

ENDIF.

SORT classifications BY objek mafid.

LOOP AT l_objects_tab.

IF object_like_inob_cuobj IS INITIAL.

READ TABLE classifications WITH KEY

objek = l_objects_tab-cuobj

mafid = l_objects_tab-mafid

BINARY SEARCH.

IF sy-subrc IS INITIAL.

LOOP AT classifications FROM sy-tabix.

IF classifications-objek <> l_objects_tab-cuobj

OR classifications-mafid <> l_objects_tab-mafid.

EXIT.

ENDIF.

classifications-objek = l_objects_tab-object.

MODIFY classifications TRANSPORTING objek.

ENDLOOP.

ENDIF.

objects-obj = l_objects_tab-object.

ELSE.

objects-obj = l_objects_tab-object.

ENDIF.

objects-mafid = l_objects_tab-mafid.

objects-statu = l_objects_tab-status.

objects-obtab = l_objects_tab-obtab.

APPEND objects.

ENDLOOP.

EXIT.

Message was edited by: You Seob Koh

2 REPLIES 2

Manohar2u
Active Contributor
0 Kudos

We will have the output of huge list, by clicking display entire list we can see them

Have a try.

cheers

Manohar

Message was edited by: Manohar

Former Member
0 Kudos

You can use FM CLSC_SELECT_OBJECTS instead:


    PERFORM get_objects_in_class.      "top level of class
    PERFORM get_objects_in_class2.     "remaining class levels and objs

*&---------------------------------------------------------------------*
*&      Form  GET_OBJECTS_IN_CLASS
*&---------------------------------------------------------------------*
FORM get_objects_in_class.
* get class internal number --------------------------------------------
  SELECT        * FROM  klah
         WHERE  klart       = '042'
         AND    class       IN s_class.
* get objects using class id -------------------------------------------
    CLEAR   exp_objects2.
    REFRESH exp_objects2.
    CALL FUNCTION 'CLSC_SELECT_OBJECTS'
         EXPORTING
              imp_direction         = ' '
              imp_exit_after_found  = ' '
              imp_klah              = klah
              imp_language          = sy-langu
              imp_language_neutral  = ' '
              imp_no_of_sortcolumns = 5
              imp_object            = ' '
              imp_object_feature    = ' '
         TABLES
              exp_objects           = exp_objects2
              exp_values            = exp_values
              imp_features          = imp_features
              imp_seltab            = imp_seltab
         EXCEPTIONS
              no_objects_found      = 01
              one_object_found      = 02.
    IF sy-subrc = 01.
      MESSAGE e025 WITH 'No objects found.'.
    ELSE.
      LOOP AT exp_objects2.
        MOVE-CORRESPONDING exp_objects2 TO exp_objects.
        MOVE klah-class                 TO exp_objects-class.
        COLLECT exp_objects.
      ENDLOOP.
    ENDIF.
  ENDSELECT.
  IF sy-subrc NE 0.
    MESSAGE e025 WITH 'Type and Class not found.'.
  ENDIF.
ENDFORM.                               " GET_OBJECTS_IN_CLASS

*&---------------------------------------------------------------------*
*&      Form  GET_OBJECTS_IN_CLASS2
*&---------------------------------------------------------------------*
FORM get_objects_in_class2.
  DATA: inobjek LIKE inob-cuobj.

  LOOP AT exp_objects
  WHERE mafid = 'K'.                   "classes
* get class internal number --------------------------------------------
    SELECT        * FROM  klah
           WHERE  klart       = '042'
           AND    class       = exp_objects-obj.
    ENDSELECT.
* get objects using class id -------------------------------------------

    CLEAR exp_objects2. REFRESH exp_objects2.
    CALL FUNCTION 'CLSC_SELECT_OBJECTS'
         EXPORTING
              imp_direction         = ' '
              imp_exit_after_found  = ' '
              imp_klah              = klah
              imp_language          = sy-langu
              imp_language_neutral  = ' '
              imp_no_of_sortcolumns = 5
              imp_object            = ' '
              imp_object_feature    = ' '
         TABLES
              exp_objects           = exp_objects2
              exp_values            = exp_values
              imp_features          = imp_features
              imp_seltab            = imp_seltab
         EXCEPTIONS
              no_objects_found      = 01
              one_object_found      = 02.
    IF sy-subrc = 0.
      LOOP AT exp_objects2.
        MOVE-CORRESPONDING exp_objects2 TO exp_objects.
        MOVE klah-class                 TO exp_objects-class.
        COLLECT exp_objects.
      ENDLOOP.
    ENDIF.
  ENDLOOP.                             "exp_objects
* keep objects only ----------------------------------------------------
  LOOP AT exp_objects
  WHERE mafid NE 'O'.                  "objects
    DELETE exp_objects.
  ENDLOOP.

* Convert internal nunbers to object numbers
  LOOP AT exp_objects.
    inobjek = exp_objects-obj.
    CALL FUNCTION 'CUOB_GET_OBJECT'
         EXPORTING
              object_number = inobjek
         IMPORTING
              object_id     = exp_objects-obj
         EXCEPTIONS
              not_found     = 1.
    CHECK NOT sy-subrc EQ 1.
    MODIFY exp_objects.

  ENDLOOP.

* Put the Funds Centres and classifications into a table to be used by
* a binary search.

  LOOP AT exp_objects.
    MOVE exp_objects-obj+4(6) TO fund_class-fund.
    APPEND fund_class.
  ENDLOOP.

  SORT fund_class BY fund.

ENDFORM.                               " GET_OBJECTS_IN_CLASS2

Rob