W Pub: ABAP Hidden Calls

  1. REPORT  ZHIDDEN_PERFORM.
  2.  
  3. *--[ Ofuscación en las asignación de las llamadas
  4. perform tgbrty using 'lesil-ys' 'poiuytrewq'.
  5.  
  6. *--[ Utilizamos sy-lisel para no saber a quien se está llamando
  7. perform qazwsx using sy-lisel.
  8.  
  9. perform tgbrty using 'lesil-ys' 'zxcvbnm'.
  10. perform qazwsx using sy-lisel.
  11.  
  12. *--[ Esta es la rutina que asigna un valor a una variable
  13. form tgbrty using qwedsazxc1 qwedsazxc2.
  14. data: l_l like sy-lisel.
  15. FIELD-SYMBOLS: <f>.
  16.   sy-pagno = strlen( qwedsazxc1 ).
  17.   sy-lisel = qwedsazxc1.
  18.   do sy-pagno TIMES.
  19.      CONCATENATE sy-lisel+0(1) l_l into l_l.
  20.      shift sy-lisel+0(sy-pagno) left.
  21.   ENDDO.
  22.   assign (l_l) to <f>.
  23.   <f> = qwedsazxc2.
  24. endform.
  25.  
  26. *--[ Esta es la rutina de
  27. form qazwsx using qwedsazxc.
  28. data: l_l like sy-lisel.
  29.   sy-pagno = strlen( qwedsazxc ).
  30.   sy-lisel = qwedsazxc.
  31. *--[ Aquí va el método de DECODE, como ejemplo he puesto algo sencillo:
  32. *--[ Mirror de las variable
  33.   do sy-pagno TIMES.
  34.      CONCATENATE sy-lisel+0(1) l_l into l_l.
  35.      shift sy-lisel+0(sy-pagno) left.
  36.   ENDDO.
  37.   TRANSLATE l_l TO UPPER CASE.
  38. *--[ Salto dinámico
  39.   perform (l_l) in PROGRAM (sy-cprog) if FOUND.
  40. endform.
  41.  
  42. *--[ Procedimientos dinámicos, no hay referencias de ser llamados
  43. form qwertyuiop.
  44.   write 'Hello'.
  45. endform.
  46.  
  47. form mnbvcxz.
  48.    write 'World'.
  49. endform.