lunes, 27 de enero de 2014

Form para eliminar ceros de la izquierda (SAP-ABAP)

*&---------------------------------------------------------------------*
*&      Form  F_ALPHA_O
*&---------------------------------------------------------------------*
FORM f_alpha_o  CHANGING p_v.

  WRITE p_v TO p_v USING EDIT MASK '==ALPHA'.
  CONDENSE p_v.

ENDFORM.                    " F_ALPHA_O

Llamada a la form:


DATA: lv_variable TYPE c LENGTH 5 VALUE '00005'.


PERFORM f_alpha_o CHANGING lv_variable.

Form para llenar un "Rango" con Set de Datos (SAP-ABAP)

*&---------------------------------------------------------------------*
*&      Form  F_GET_SET_DATA
*&---------------------------------------------------------------------*
FORM f_get_set_data TABLES p_t_range
                                           USING p_v_set.

  REFRESHp_t_range[].
  SELECT  setleaf~valsign      AS sign
                  setleaf~valoption  AS option
                  setleaf~valfrom    AS low
                  setleaf~valto        AS high
  INTO CORRESPONDING FIELDS OF TABLE p_t_range
  FROM  setheader INNER JOIN setleaf
    ON  setleaf~setclass  EQ setheader~setclass
   AND  setleaf~subclass  EQ setheader~subclass
   AND  setleaf~setname   EQ setheader~setname
  WHERE setheader~setname EQ p_v_set.

ENDFORM.                    "f_get_set_data

INVOCAR LA FORM:


  RANGES:
  lr_kschl FOR komv-kschl.

  PERFORM f_get_set_data TABLES lr_kschl
                                              USING 'Z0004'.  "set  creado en la trx GS01

martes, 30 de abril de 2013

Función para llenar un "Rango" con un "Set de Datos". (SAP-ABAP)

Se  creara una función.



1.- Crear "Grupo de Funciones" (se80).



2.- Crear "Módulo de Funciones".

     En la pestaña "Import" agregar los nombre de parámetros mostrados en la figura.

           IV_SET_NAME (nombre del set de datos)
           IV_DATA_ELEMENT (nombre del elemento de datos relacionado al set de datos)







3.- En la pestaña "Tablas", ingresar nombre de parámetro...

       ET_RANGE (es un rango, contendrá los datos del set datos)




4.- Finalmente en la pestaña "Código fuente" copiar el siguiente código:


 DATAlv_new_setid        TYPE sethier-setid,
        lt_set_lines_basic  TYPE STANDARD TABLE OF rgsbv,
        ls_set_lines_basic  TYPE rgsbv.

  DATAls_tab  TYPE REF TO cl_rs_struc,

        lo_data TYPE REF TO data.

  FIELD-SYMBOLS<tabla> TYPE STANDARD TABLE,

                 <linea> TYPE any,
                 <campo> TYPE any.

  CREATE OBJECT ls_tab.


  CALL METHOD ls_tab->add_element

    EXPORTING
      i_sconame 'SIGN'
      i_type    'CHAR01'.

  CALL METHOD ls_tab->add_element

    EXPORTING
      i_sconame 'OPTION'
      i_type    'CHAR02'.

  CALL METHOD ls_tab->add_element

    EXPORTING
      i_sconame 'LOW'
      i_type    iv_data_element.

  CALL METHOD ls_tab->add_element

    EXPORTING
      i_sconame 'HIGH'
      i_type    iv_data_element.

  CALL METHOD ls_tab->create

    EXPORTING
      i_dynamic              rs_c_false
    RECEIVING
      r_r_data               lo_data
    EXCEPTIONS
      wrong_struc_definition 1
      no_struc_definition    2
      OTHERS                 3.

  ASSIGN lo_data->TO <linea>.

  CREATE DATA lo_data LIKE TABLE OF <linea>.
  ASSIGN lo_data->TO <tabla>.

  REFRESHet_range[].

  PERFORM f_get_set_data TABLES <tabla>
                          USING iv_set_name.

  MOVE <tabla>[] TO et_range[].

*&--------------------------------------------------------------*
*&      Form  F_GET_SET_DATA
*&--------------------------------------------------------------*
FORM f_get_set_data TABLES p_t_range
                     USING p_v_set.
  REFRESHp_t_range[].
  SELECT  setleaf~valsign   AS sign
          setleaf~valoption AS option
          setleaf~valfrom   AS low
          setleaf~valto     AS high
  INTO CORRESPONDING FIELDS OF TABLE p_t_range
  FROM  setheader INNER JOIN setleaf
    ON  setleaf~setclass  EQ setheader~setclass
   AND  setleaf~subclass  EQ setheader~subclass
   AND  setleaf~setname   EQ setheader~setname
  WHERE setheader~setname EQ p_v_set.

ENDFORM.                    "f_get_set_data



4.- Utilización:


  RANGESlr_auart FOR vbak-auart.

  REFRESHlr_auart[].

  CALL FUNCTION 'ZCFCL_FILL_SET'
    EXPORTING
      iv_set_name     'ZCFCL_SD_AUART_KIT'
      iv_data_element 'AUART'
    TABLES
      et_range        lr_auart.


     En el rango "LR_AUART" tenemos los datos del set.