20240106

CORRESPONDING (inline)

** C O R R E S P O N D I N G
** CORRESPONDING()

* Definição básica

" X = CORRESPONDING dtype|#(Y)
*-------------------------------------------

types:
  begin of t1,
    campo1 type i,
    campo2 type char10,
  end of type t1.

data d1 type t1.

data(d2) = CORRESPONDING t1( d1 ).




* Cláusula BASE
* mantém os valores já existentes...
types:
  begin of t1,
    campo1 type i,
    campo2 type char10,
  end of t1,
  begin of t2,
    campo1 type i,
    campo2 type char10,
    campo3 type char20,
  end of t2.


data d1 type t1.
data d2 type t2.

d2-campo3 = 'não apagar'.
d2 = CORRESPONDING #( BASE ( d2 ) d1 ).



* Cláusula MAPPING

* Estruturas são semelhantes, mas não são iguais.
* O nome do campo é diferente
types:
  begin of t1,
    campo1 type i,
    campo2x type char10,
  end of t1,
  begin of t2,
    campo1 type i,
    campo2y type char10,
  end of t2.


data d1 type t1.
data d2 type t2.

d2 = CORRESPONDING #(
           d1
           MAPPING campo2y = campo2x
).






* Cláusula EXCEPT

* Estruturas são iguais, mas não quer levar o
* campo3
types:
  begin of t1,
    campo1 type i,
    campo2 type char10,
    campo3 type char10,
  end of t1,
  begin of t2,
    campo1 type i,
    campo2 type char10,
    campo3 type i,
  end of t2.


data d1 type t1.
data d2 type t2.

d2 = CORRESPONDING #(
           d1
           EXCEPT campo3
).



* Uso de tabela interna
* Mover de uma para outra.
data:
  itab1     type table of kna1,
  itab2     type table of kna1.

***MOVE-CORRESPONDING itab1 to itab2.

itab2 = CORRESPONDING #( itab1 ).



* Movendo dados entre tabeas discartando as duplicidades dos campos chave

data:
  itab1     type table of kna1,
  itab2     type SORTED TABLE OF kna1
               WITH UNIQUE KEY kunnr.

sort itab1 by kunnr.
DELETE ADJACENT DUPLICATES FROM itab1
   COMPARING kunnr.

MOVE-CORRESPONDING itab1 to itab2.

itab2 = CORRESPONDING #(
           itab1 DISCARDING DUPLICATES
).


--
José Nilson de Oliveira

CONV (inline)

** C O N V
** CONV
* --------------------------------------------------

* Definição básica

"   x = CONV dtype|#(Y)

* Utilização em chamada de método

data var1 type char 11.
var1 = '1234567890'.

data(s_kna1) =
  get_kna1( iv_kunnr = CONV #( var1 )
  ).




APPEND (inline)

** A P P E N D

** Append


* Preenchendo uma tabela interna

data t_kna1 type table of kna1.

append VALUE#(
  (
    kunnr = '123'
    name1 = 'Cliente 1'
  )
  (
    kunnr = '123'
    name1 = 'Cliente 1'
  )
)
  to t_kna1.


* Lendo uma tabela interna com READ TABLE
READ TABLE t_kna1
  INTO DATA(s_kna1)
  INDEX 1.



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.




FIELD-SYMBOL(inline)

** F I E L D  -  S Y M B O L
** FIELD-SYMBOL()
*-------------------------------------------

** Definição básica
ASSIGN var1 TO FIELD-SYMBOL(<fs1>.


** Modo Antigo
DATA var1 TYPE i.
ASSIGN var1 TO FIELD-SYMBOL(<fs1>).

LOOP AT t_kna1 ASSIGNING FIELD-SYMBOL(<fs1>).

ENDLOOP.



** Modo Novo
DATA(o1) = NEW zclmv1( ).

DATA(o1) = NEW zclmv1( par1 = 'ABC' ).

DATA(dref) = NEW char10( '123' ).





DATA (inline)

** D  A  T  A
** DATA()
*-----------------------------------------

* Apenas definição
DATA(var1) = 123.

* Select com definição da estrutura inline
SELECT SINGLE
  name1,
  land1
  INTO @DATA(s_kna1)
  FROM kna1
  WHERE kunnr = '0000000010'.


* READ TABLE com definição da estrutura inline
READ TABLE t_kna1
  INTO DATA(s_kna1)
  INDEX 1.


* Chamando método com definição da estrutura inline
CALL METHOD get_kna1
  EXPORTING
    iv_kunnr = '0000000010'
  IMPORTING
    es_kna1  = DATA(s_kna1).


* Chamando método com definição da estrutura inline
DATA(s_kna1) = get_kna1('0000000010').


20231220

Variantes F110 - Alteração em massa

Necessidade: 
  • Ajuste em massa nas variantes da F110, para ajustar nome de pasta (diretório)
Solução:
  • Criação de programa que recebe o nome da Variante, o Valor a ser substituído e o Valor a ser atualizado.
  • Para a leitura dos dados da Variante, usar a função  RS_VARIANT_CONTENTS
  • Ler a tabela interna LT_VALUTAB que contém os parâmetros cadastrados.
  • Ajustar o parâmetros necessário nessa tabela interna
  • Usar a função  RS_CHANGE_CREATED_VARIANT  para atualizar os dados da variante.

Fontes originais:









20231217

Mandioca na manteiga

Ingredientes:
500g a 750g de mandioca
2 colheres de sopa de manteiga (ou margarina)
1/2 gomo de linguiça calabresa defumada ou 150g de bacon
Salsinha e cebolinha (se gostar)

Modo de preparo:
  • Colocar a mandioca para cozinhar na panela de pressão. Após pegar pressão aguardar 3 a 4 min e desligar. Esperar sair a pressão.
  • Retirar as mandiocas da água e cortar em pedaços pequenos e reservar num refratário.
  • Numa panela, dourar a linguiça (ou o bacon) com um pouquinho de manteiga
  • Após estarem douradas, acrescentar a manteiga até derreter.
  • Despejar a manteiga com a linguiça (ou bacon) sobre a mandioca reservada
  • Servir em seguida 





Patê de Azeitonas pretas (leve)

Ingredientes:
1 pote (150g) de Creme de Queijo Minas Frescal 
100 g de Azeitonas Pretas com Caroço
1 colher sopa de Maionese ou Ricota

Modo de Preparo:
  • Retire os caroços das azeitonas e coloque num processador
  • Acrescente o Creme de Queijo Minas Frescal e a colher de sopa de Maionese (ou Ricota)
  • Processe (bata) até a azeitona ficar em pedaços bem pequenos.
  • Guardar num pote e servir gelado com torradas, bisnaguinhas e pães sem muito açúcar

Obs.: O Creme de Queijo Minas Frescal pode ser substituído por: Requeijão (200g) ou Creme de Ricota (200g). Se substituir por esses ingredientes não acrescentar a maionese.


20231213

Palha Italiana

Ingredientes:
  • 1 lt/cx Leite Condensado
  • 1 colher de sopa de margarina
  • 6 a 8 colheres de sopa de Achocolatado
  • 1 pacote de Biscoito Maisena ou Biscoito de Leite Passatempo (sem recheio)


Preparo:
  • Quebrar os biscoitos em pedaços pequenos e reservar.
  • Numa panela colocar a Margarina, o Leite Condensado e o Achocolatado
  • Misturar em fogo baixo até começar a desgrudar da panela
  • Desligar o fogo e incluir os biscoitos quebrados. Misturar bem.
  • Espalhar numa forma untada com margarina.
  • Aguardar entre 60 e 120 minutos, cortar e polvilhar açúcar de confeiteiro (cristal ou refinado)

Receita de referência: Aqui