martes, 17 de junio de 2014

Form para separar prefijo y folio del campo XBLNR (SAP - ABAP - Funciones)

Para algunos países se utilizan los folio pre-impresos o pre-numerados, a continuación una form que nos hace el split del prefijo y el folio sobre el campo XBLNR:

DATA: lv_xblnr TYPE xblnr_v1.


lv_xblnr <fs_vbrk>-xblnr.

PERFORM f_split_xblnr USING    lv_bukrs  " Sociedad
                      CHANGING lv_xblnr. " Nro. Docto. Ref.


*&--------------------------------------------------------------*
*&      Form  F_SPLIT_XBLNR
*&--------------------------------------------------------------*
 FORM f_split_xblnr USING    p_v_bukrs TYPE t001-bukrs
                    CHANGING p_v_folio.
 

 DATA: lv_rgtno TYPE idcn_loma-rgtno,
       lv_invno TYPE idcn_loma-invfr,
       lv_xblnr TYPE bkpf-xblnr,
       lv_invtp TYPE idcn_loma-invtp.
 CHECK p_v_folio IS NOT INITIAL. 

  lv_xblnr p_v_folio.

  CALL FUNCTION 'XBLNR_BUILD_AND_SPLIT_PECL'  " PECL = Perú y Chile
    EXPORTING
      i_bukrs            p_v_bukrs
*     I_BUILD            =
*     I_RGTNO            =
*     I_INVNO            =
      i_xblnr            lv_xblnr
*     I_INVTP            =
    IMPORTING
      e_rgtno            lv_rgtno   " Nos retorna el prefijo 
      e_invno            lv_invno   " Nos retorna el folio 
*     e_xblnr            =
      e_invtp            lv_invtp
    EXCEPTIONS
*     PARAMETER_WRONG    = 1
      not_found          2
      xblnr_format_wrong 3
      OTHERS             4.
  IF sy-subrc <> OR lv_invno IS INITIAL" Note 356790
    RAISE lot_not_found.
  ELSE.
    p_v_folio lv_invno.
  ENDIF.

ENDFORM.                    " F_SPLIT_XBLNR


También existe una función que no es específica para algún país:

XBLNR_BUILD_AND_SPLIT