segunda-feira, 17 de março de 2014

Classificação e características de objeto - Funções úteis

======== Busca características de uma classe.
  CALL FUNCTION 'BAPI_CLASS_GET_CHARACTERISTICS'
    EXPORTING
      classnum        = f_classnum  "Nome da classe
      classtype       = '023' "Tipo da classe
    TABLES
      characteristics = gt_charact 
      char_values     = gt_charact_val.



characteristics = Tabela retorna as características e tipos
char_values     = Tabela com os valores fixos de uma característica


======== Buscar detalhes de um objeto

  CLEAR gw_class_key.
  CONCATENATE l_matnr f_charg INTO gw_class_key-object.
  gw_class_key-objecttable = 'MCH1'.
  gw_class_key-classnum    = f_classnum. "Nome da Classe de objetos
  gw_class_key-classtype   = '023'.

  CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
    EXPORTING
      objectkey       = gw_class_key-object
      objecttable     = gw_class_key-objecttable
      classnum        = gw_class_key-classnum
      classtype       = gw_class_key-classtype
    TABLES
      allocvaluesnum  = gt_num
      allocvalueschar = gt_char
      allocvaluescurr = gt_curr
      return          = gt_return.



============== Separação das características por tipo..
Tipos NUM e DATE para tabela   allocvaluesnum
Tipo CHAR para tabela allocvalueschar
Tipo CURR para tabela allocvaluescurr

================ Alteração de classificação
  CALL FUNCTION 'BAPI_OBJCL_CHANGE'
    EXPORTING
      objectkey          = l_object
      objecttable        = 'MCH1'
      classnum           = l_classnum
      classtype          = l_classtype
      keydate            = sy-datum
    TABLES
      allocvaluesnumnew  = lt_num_charac
      allocvaluescharnew = lt_chr_charac
      allocvaluescurrnew = lt_cur_charac
      return             = lt_return.  


============= exemplo

        CASE lw_charact-data_type.
          WHEN 'CHAR'.
            lw_allocvaluescharnew-charact = ls_comp-name.
            lw_allocvaluescharnew-value_char = <fs_comp>.
            APPEND lw_allocvaluescharnew TO lt_chr_charac.
          WHEN 'NUM' OR 'DATE'.
            lw_allocvaluesnumnew-charact = ls_comp-name.
            lw_allocvaluesnumnew-value_from = <fs_comp>.
            lw_allocvaluesnumnew-value_to   = <fs_comp>.
            APPEND lw_allocvaluesnumnew TO lt_num_charac.
          WHEN 'CURR'.
            lw_allocvaluescurrnew-charact = ls_comp-name.
            lw_allocvaluescurrnew-value_from = <fs_comp>.
            lw_allocvaluescurrnew-value_to   = <fs_comp>.
            APPEND lw_allocvaluescurrnew TO lt_cur_charac.
        ENDCASE. 

Nenhum comentário:

Postar um comentário