Application Development and Automation 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: 
Read only

Function Modules

Former Member
0 Likes
1,651

Hi,

Advanced Thanks to your reply

<b>Get the 300 class of the configurable entered using the function module CACL_OBJECT_READ_ALLOCATIONS.</b>

what are Input Parameters used in this FM

Send me the sample code for this FM CACL_OBJECT_READ_ALLOCATIONS

<b>Function module CARD_CLASS_READ_CHARACTS is use to retrieve all the characteristics of the 300 class retrieved for the configurable material entered.</b>

what are Input Parameters used in this FM

Send me the sample code for this FM CARD_CLASS_READ_CHARACTS

i look forward to your reply

Thanks

RSK

14 REPLIES 14
Read only

Former Member
0 Likes
1,543

for first one check out RCDDSSEL prog

second one check out SEWGRF01 prog

Read only

Former Member
0 Likes
1,543

Hi,

Try this

call function 'CACL_OBJECT_READ_ALLOCATIONS'

exporting

object_type = l_objtype

class_type = l_classtype

tables

object_identification = lt_object_ident

allocations = lt_allocations

exceptions

error = 1

warning = 2

others = 3.

Regards,

GSR.

Read only

0 Likes
1,543

Hi all,

Thank u very much to your reply

Plz Clarify the following Assumptiones

Finding type 300 class AUSP-KLART characteristics associated with the configurable material MARA-MATNR.

From INOB (Link between Internal Number and Object ) table INOB- CUOBJ is retrieved.

Select CUOBJ from INOB where OBJEK = < configurable material> and KLART = 300.

Using INOB- CUOBJ the CLINT is retrieved from KSSK (Allocation Table: Object to Class ) table. Here we can get more than one value.

Getting common class

Select OBJEK from KSSK where OBJEK in <OBJEK> and MAFID = ‘K’

Getting CLINT value for all OBJEK

Select CLINT from KSSK where OBJEK = < OBJEK > and MAFID = ‘O’

How to develop the query for the above assumptiones

is there is any FM for above Requirement

Plz Guide me with code

i look forward to your reply

Award Points

Tahnks & Regards

RSK

Read only

0 Likes
1,543

Hi

the above program will do exactly what ever you need.

it will list all the materials with 300 class type.

regards

vijay

Read only

Former Member
0 Likes
1,543
REPORT (sy-repid) MESSAGE-ID zmm.


************************************************************************
*                                                                      *
*    Data Declarations                                                 *
*                                                                      *
************************************************************************

DATA: BEGIN OF matnr_tab OCCURS 0,
         matnr TYPE mara-matnr,
      END OF matnr_tab.

DATA: BEGIN OF class_tab OCCURS 0,
         matnr TYPE mara-matnr,
         semicolon(1) TYPE C,
         class TYPE klah-class,
      END OF class_tab.

DATA: class_count TYPE i VALUE 0.

*DATA: matnr_tab TYPE TABLE OF mara-matnr WITH HEADER LINE.
*DATA: class_tab TYPE TABLE OF klah-class WITH HEADER LINE.
*****************************************************************
*     Parameter selection screen
*****************************************************************
PARAMETERS : p_infile LIKE rlgrap-filename OBLIGATORY,

             p_outfil  LIKE rlgrap-filename OBLIGATORY.

* For Input File Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
  PERFORM request_filename USING p_infile.

* For Output File Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_outfil.
  PERFORM request_filename USING p_outfil.


START-OF-SELECTION.
* Read input file
  PERFORM upload_file  USING p_infile.
* Get all associated class 300's for materials
  PERFORM get_classes_for_materials.
* If classes found, write to output file.
  IF class_count > 0.
*   PERFORM download_file USING p_outfil.
    loop at class_tab.
       write: / class_tab-matnr, class_tab-class.
    endloop.
    MESSAGE i000 WITH 'Classes written to output file: '
                 class_count.
  ELSE.
    MESSAGE i000 WITH 'No classes found for materials'.
  ENDIF.


*---------------------------------------------------------------------*
*       FORM get_classes_for_materials                                *
*---------------------------------------------------------------------*
*       Read all class type 300's for materials in list               *
*---------------------------------------------------------------------*
FORM
get_classes_for_materials.
  DATA: object    TYPE TABLE OF api_ob_key WITH HEADER LINE,
        alloc     TYPE TABLE OF api_alloc  WITH HEADER LINE,
        v_matnr   TYPE mara-matnr,
        v_date    TYPE clbasd-val_from.

  CLEAR class_tab.
  WRITE sy-datum TO v_date.

  LOOP AT matnr_tab. " WHERE matnr NE space.
* Validate material
    SELECT SINGLE matnr
      INTO v_matnr
      FROM mara WHERE matnr = matnr_tab-matnr.
*-set source material as object
    IF sy-subrc = 0.
      CLEAR: object.
      REFRESH: object.
      object-field = 'MATNR'.
      object-value = matnr_tab-matnr.
      APPEND object.

      REFRESH alloc.
*-Read class 300 allocation of source material
      CALL FUNCTION 'CACL_OBJECT_READ_ALLOCATIONS'
           EXPORTING
                object_type           = 'MARA'
                class_type            = '300'
                date                  = v_date
           TABLES
                object_identification = object
                allocations           = alloc
           EXCEPTIONS
                error                 = 1
                warning               = 2
                OTHERS                = 3.

**-if source allocation not found then exit
      IF sy-subrc NE 0.
         MOVE matnr_tab-matnr to class_tab-matnr.
         MOVE ';' to class_tab-semicolon.
         MOVE 'NO ALLOC' to class_tab-class.
         APPEND class_tab.
         ADD 1 TO class_count.
      ENDIF.

      LOOP AT alloc.
        MOVE alloc-class TO class_tab-class.
        MOVE ';' to class_tab-semicolon.
        MOVE matnr_tab-matnr TO class_tab-matnr.
        APPEND class_tab.
        ADD 1 TO class_count.
      ENDLOOP.

    ELSE.
      MOVE matnr_tab-matnr to class_tab-matnr.
      MOVE ';' to class_tab-semicolon.
      MOVE 'MATNR NOT FOUND' to class_tab-class.
      APPEND class_tab.
      ADD 1 TO class_count.
    ENDIF.

  ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM upload_file                                              *
*---------------------------------------------------------------------*
*       Upload input file of materials                                *
*---------------------------------------------------------------------*
*  -->  v_filein                                                      *
*---------------------------------------------------------------------*
FORM upload_file USING v_filein LIKE rlgrap-filename.
*  CALL FUNCTION 'WS_UPLOAD'
*      EXPORTING
**         CODEPAGE                = ' '
*           filename                = v_filein
*           filetype                = 'DAT'
**         HEADLEN                 = ' '
**         LINE_EXIT               = ' '
**         TRUNCLEN                = ' '
**         USER_FORM               = ' '
**         USER_PROG               = ' '
**         DAT_D_FORMAT            = ' '
**    IMPORTING
**         FILELENGTH              =
*       TABLES
*            data_tab                = matnr_tab
*      EXCEPTIONS
*           conversion_error        = 1
*           file_open_error         = 2
*           file_read_error         = 3
*           invalid_type            = 4
*           no_batch                = 5
*           unknown_error           = 6
*           invalid_table_width     = 7
*           gui_refuse_filetransfer = 8
*           customer_error          = 9
*           OTHERS                  = 10
*            .

  data file type string.
  file = v_filein.

  CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
*         CODEPAGE                = ' '
           filename                = file
           has_field_separator           = 'X'
*         HEADLEN                 = ' '
*         LINE_EXIT               = ' '
*         TRUNCLEN                = ' '
*         USER_FORM               = ' '
*         USER_PROG               = ' '
*         DAT_D_FORMAT            = ' '
*    IMPORTING
*         FILELENGTH              =
       TABLES
            data_tab                = matnr_tab
      EXCEPTIONS
            FILE_OPEN_ERROR               = 1
            FILE_READ_ERROR               = 2
            NO_BATCH                      = 3
            GUI_REFUSE_FILETRANSFER       = 4
            INVALID_TYPE                  = 5
            NO_AUTHORITY                  = 6
            UNKNOWN_ERROR                 = 7
            BAD_DATA_FORMAT               = 8
            HEADER_NOT_ALLOWED            = 9
            SEPARATOR_NOT_ALLOWED         = 10
            HEADER_TOO_LONG               = 11
            UNKNOWN_DP_ERROR              = 12
            ACCESS_DENIED                 = 13
            DP_OUT_OF_MEMORY              = 14
            DISK_FULL                     = 15
            DP_TIMEOUT                    = 16
            OTHERS                        = 17
    .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.
*---------------------------------------------------------------------*
*       FORM download_file                                            *
*---------------------------------------------------------------------*
*       Download output file of classes                               *
*---------------------------------------------------------------------*
*  -->  v_fileout                                                     *
*---------------------------------------------------------------------*
FORM download_file USING v_fileout LIKE rlgrap-filename.
*  CALL FUNCTION 'WS_DOWNLOAD'
*      EXPORTING
**         BIN_FILESIZE            = ' '
**         CODEPAGE                = ' '
*           filename                = v_fileout
*           filetype                = 'DAT'
**         MODE                    = ' '
**         WK1_N_FORMAT            = ' '
**         WK1_N_SIZE              = ' '
**         WK1_T_FORMAT            = ' '
**         WK1_T_SIZE              = ' '
**         COL_SELECT              = ' '
**         COL_SELECTMASK          = ' '
**         NO_AUTH_CHECK           = ' '
**    IMPORTING
**         FILELENGTH              =
*       TABLES
*            data_tab                = class_tab
**         FIELDNAMES              =
*      EXCEPTIONS
*           file_open_error         = 1
*           file_write_error        = 2
*           invalid_filesize        = 3
*           invalid_type            = 4
*           no_batch                = 5
*           unknown_error           = 6
*           invalid_table_width     = 7
*           gui_refuse_filetransfer = 8
*           customer_error          = 9
*           OTHERS                  = 10
*            .
  data file type string.
  file = v_fileout.

  CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
*         BIN_FILESIZE            = ' '
*         CODEPAGE                = ' '
           filename                = file
           write_field_separator           = 'X'
*         MODE                    = ' '
*         WK1_N_FORMAT            = ' '
*         WK1_N_SIZE              = ' '
*         WK1_T_FORMAT            = ' '
*         WK1_T_SIZE              = ' '
*         COL_SELECT              = ' '
*         COL_SELECTMASK          = ' '
*         NO_AUTH_CHECK           = ' '
*    IMPORTING
*         FILELENGTH              =
       TABLES
            data_tab                = class_tab
*         FIELDNAMES              =
      EXCEPTIONS
           FILE_WRITE_ERROR        = 1
            NO_BATCH                = 2
            GUI_REFUSE_FILETRANSFER = 3
            INVALID_TYPE            = 4
            NO_AUTHORITY            = 5
            UNKNOWN_ERROR           = 6
            HEADER_NOT_ALLOWED      = 7
            SEPARATOR_NOT_ALLOWED   = 8
            FILESIZE_NOT_ALLOWED    = 9
            HEADER_TOO_LONG         = 10
            DP_ERROR_CREATE         = 11
            DP_ERROR_SEND           = 12
            DP_ERROR_WRITE          = 13
            UNKNOWN_DP_ERROR        = 14
            ACCESS_DENIED           = 15
            DP_OUT_OF_MEMORY        = 16
            DISK_FULL               = 17
            DP_TIMEOUT              = 18
            FILE_NOT_FOUND          = 19
            DATAPROVIDER_EXCEPTION  = 20
            CONTROL_FLUSH_ERROR     = 21
            OTHERS                  = 22
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.
*---------------------------------------------------------------------*
*       FORM REQUEST_FILENAME                                         *
*---------------------------------------------------------------------*
*       Prompt for a file name                                        *
*---------------------------------------------------------------------*
*  -->  v_file                                                        *
*---------------------------------------------------------------------*
FORM request_filename USING v_file
                            LIKE rlgrap-filename.

  DATA : v_repid LIKE sy-repid.
  v_repid = sy-repid.

  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
       EXPORTING
            program_name  = v_repid
            dynpro_number = syst-dynnr
            static        = ' '
            mask          = ' '
       CHANGING
            file_name     = v_file
       EXCEPTIONS
            mask_too_long = 1
            OTHERS        = 2.
ENDFORM.                    " REQUEST_FILENAME

this code is what you needed.....

Title           : Extract class type 300's for input materials 
*   Brief Purpose   :                                                  *
*   Read an input file of materials and produce an output file of      *
*   class type 300's.

Read only

Former Member
0 Likes
1,543

Hi,

Using FM CARD_CLASS_READ_CHARACTS

KLAH-KLART Class Type

KLAH-CLASS Class number


Just pass class and class type.

CALL FUNCTION 'CARD_CLASS_READ_CHARACTS'
   EXPORTING
        CLASS                  = KLAH-CLASS 
        CLASS_TYPE             = KLAH-KLART 
        DATE                   = sy-DATum
*        LANGUAGE               = LANGUINT
*        FL_WITH_CHAR_VALUES    = 'X'
   IMPORTING 
        BASIC_DATA             = wa_BASIC
        CLASS_NOT_VALID        = wa_INVALID
        DOCUMENT_IDENT         = wa_K_DOCUMENT
   TABLES
        CHARACTERISTICS        = C_CHAR
        CHARACTERISTICS_VALUES = C_VALUES
   EXCEPTIONS OTHERS           = 1.

Using FM CACL_OBJECT_READ_ALLOCATIONS


 CALL FUNCTION 'CACL_OBJECT_READ_ALLOCATIONS'
   EXPORTING
     object_type                 = u_object_type
     class_type                  = u_class_type
     date                        = l_date
     LANGUAGE                    = SYST-LANGU
     i_obj_not_chk               = ppet_true
    i_aennr                      = space
   TABLES
     object_identification       = ut_object_ident
     allocations                 = lt_allocations
   EXCEPTIONS
     error                       = 1
     warning                     = 2
     OTHERS                      = 3 .

Hope it helps...

Lokesh

Pls. reward appropriate points

Read only

0 Likes
1,543

Hi Lokesh,

Thank u for your reply

Plz send the sample code using 2 function modules

FM:CARD_CLASS_READ_CHARACTS

FM:CACL_OBJECT_READ_ALLOCATIONS

In this function modules variable declaration part

plz send the code sample using 2 FM

I look forward to your reply

Reward Points

Regards & Thanks

Raja Sekhar.T

Read only

0 Likes
1,543

hi my code will tell you how to use the below FM.

CACL_OBJECT_READ_ALLOCATIONS

and please see the above mentioned code.

you never closed a single thread, please close your threads and reward for helpful answers...

vijay

Read only

0 Likes
1,543

Hi Vijay,

thanks for your reply

i want code sample for FM 'CARD_CLASS_READ_CHARACTS'

i look forward to your reply

reward points

Thanks & Regards

SEK

Read only

0 Likes
1,543

Hi all,

In this FM Parameters

CALL FUNCTION 'CARD_CLASS_READ_CHARACTS'

EXPORTING

CLASS = KLAH-CLASS

CLASS_TYPE = KLAH-KLART

DATE = SY-DATUM

  • LANGUAGE = LANGUINT

  • FL_WITH_CHAR_VALUES = 'X'

IMPORTING

BASIC_DATA = WA_BASIC

CLASS_NOT_VALID = WA_INVALID

DOCUMENT_IDENT = WA_K_DOCUMENT

TABLES

CHARACTERISTICS = C_CHAR

CHARACTERISTICS_VALUES = C_VALUES

EXCEPTIONS OTHERS = 1.

I want help on below mention Paramenters

IMPORTING

BASIC_DATA = WA_BASIC

CLASS_NOT_VALID = WA_INVALID

DOCUMENT_IDENT = WA_K_DOCUMENT

TABLES

CHARACTERISTICS = C_CHAR

CHARACTERISTICS_VALUES = C_VALUES

How to define in declaration section for

IMPORT and TABLES parameters

plz guide me with sample code

i look forward to your reply

Award points

Regards

SEK

Read only

0 Likes
1,543

hi just see this FM

<b>BAPI_CLASS_GETDETAIL</b>

how they have declared...

regards

vijay

Read only

0 Likes
1,543

BASIC_DATA LIKE CLBASD STRUCTURE CLBASD

CLASS_NOT_VALID LIKE RMCLM-BASISD

DOCUMENT_IDENT LIKE DOC_IDENT STRUCTURE DOC_IDENT

TABLES

CHARACTERISTICS STRUCTURE CLA_CH_AT

CHARACTERISTICS_VALUES STRUCTURE CHA_VALDSC

Read only

Former Member
0 Likes
1,543

HI Raja

here is a sample code for how to use function   CACL_OBJECT_READ_ALLOCATIONS.

  DATA: IT_OBJKEY TYPE TABLE OF API_OB_KEY, "this is an input table
      WA_OBJKEY LIKE LINE OF IT_OBJKEY,
      IT_ALLOC TYPE TABLE OF API_ALLOC, "this is an output table
      WA_ALLOC LIKE LINE OF IT_ALLOC.


WA_OBJKEY-FIELD = 'MATNR'.                  "filling sample data for table object_identification
WA_OBJKEY-VALUE = '33-253754-04'.     "please check if these data exist in your

APPEND WA_OBJKEY TO IT_OBJKEY.    "server  if   not change them.
WA_OBJKEY-FIELD = 'CHARG'.
WA_OBJKEY-VALUE = '0000000526'.
APPEND WA_OBJKEY TO IT_OBJKEY.


CALL FUNCTION 'CACL_OBJECT_READ_ALLOCATIONS'
  EXPORTING
*   OBJECT                      =
    object_type                 = 'MCHA'
    class_type                  = '023'
*   DATE                        =
*   LANGUAGE                    = SYST-LANGU
*   I_OBJ_NOT_CHK               = ' '
*   I_AENNR                     =
*   I_SORT_POSNR                = ' '
  TABLES
    object_identification       = IT_OBJKEY "if u do not give in data in this table program

     allocations                 = IT_ALLOC       " might go for dump
EXCEPTIONS
   ERROR                       = 1
   WARNING                     = 2
   OTHERS                      = 3
          .
IF sy-subrc EQ 0.
  "suitable logic
ENDIF.

sry for any inconvienence this is my first reply on scn hopefully it will help.

Read only

0 Likes
1,543

Dear Anil,

I understand this is your first reply on scn, welcome on the forum as an active member, but replying to a discussion from 2005 is not that much helpfull.

This thread should have been closed long time ago. 

Be aware that some of the threads are open for years because the poster didn't bother to close thread after the solution was provided.

Thanks and I wish you many fruitfull coöperations on this forum  🙂