20240106

VALUE (inline)

** V A L U E
** VALUE
*--------------------------------------------------

* Definição existente + preenchimento de estrutura
types:
  begin of t1,
    campo1 type i,
    campo2 type char10,
  end of t1.
data d1 type t1.

d1 = VALUE #(
     campo1 = 1
     campo2 = 'Hum'
     ).



* Definição existente + definição inline + preenchimento
types:
  begin of t1,
    campo1 type i,
    campo2 type char10,
  end of t1.

data(d1) = value t1(
  campo1 = 1
  campo2 = 'Hum'
  ).



** Estrutura dentro de estrutura
types:
  begin of t1,
    campo1 type 1,
    campo2 type char10,
  end of t1,
  begin of t2,
    estr1  type t1,
    campo3 type char10,
  end of t2.

DATA(d1) = VALUE t2(
   estr1 = VALUE #(
     campo1 = 1
     campo2 = 'Hum'
  )
  campo3 = 'zzz'
  ).


* Definição + Preenchimento de tabela interna
types:
  y_t_kna1 TYPE STANDARD TABLE OF kna1.

DATA(t_kna1) = VALUE y_t_kna1(
  (
    kunnr = '123'
    name1 = 'Cliente 1'
  )
  (
    kunnr = '456'
    name1 = 'Cliente 2'
  )
) .



* Preenchimento de tabela interna com um campo fixo.
types:
  y_t_kna1 TYPE STANDARD TABLE OF kna1.

DATA(t_kna1) = VALUE y_t_kna1(
    name2 = 'Sempre igual'
  (
    kunnr = '123'
    name1 = 'Cliente 1'
  )
  (
    kunnr = '456'
    name1 = 'Cliente 2'
  )
) .



* Definição + preenchimento
* Uso como parâmetro (utiliza a assinatura do método)
METHOD set_kna1 IMPORTING is_kna1 TYPE kna1.
ENDMETHOD.

set_kna1(
  VALUE #(
    kunnr = '123'
    name1 = 'Cliente1'
    )
    ).



** Montando um range
types y_r_kunnr TYPE RANGE OF kunnr.

data(r_kunnr) =
  VALUE y_r_kunnr(
    (
      sign = 'I'
      option = 'EQ'
      low = '123'
    )
    (
      sign = 'I'
      option = 'EQ'
      low = '456'
    )
  ).
*

LOOP AT r_kunnr into data(ls_kunnr).

ENDLOOP.