SAP SD ABAP
From SapWiki
Leer flujo de documentos
FUNCTION Z_PEDIDO_FROM_FACTURA.
*"----------------------------------------------------------------------
*"*'Interfase local
*" IMPORTING
*" VALUE(FACTURA)
*" EXPORTING
*" VALUE(XVBAK) LIKE VBAK STRUCTURE VBAK
*" EXCEPTIONS
*" FACTURA_NO_EXISTE
*"----------------------------------------------------------------------
TABLES: VBRK,
VBAK,
TVFK.
DATA COMWA LIKE VBCO6 .
DATA VBFA_TAB LIKE VBFA OCCURS 5 WITH HEADER LINE.
CLEAR XVBAK.
SELECT SINGLE * FROM VBRK WHERE VBELN EQ FACTURA.
IF SY-SUBRC EQ 0.
SELECT SINGLE * FROM TVFK WHERE FKART EQ VBRK-FKART.
COMWA-MANDT = SY-MANDT.
COMWA-VBELN = FACTURA.
CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'
EXPORTING
* AUFBEREITUNG = '2'
BELEGTYP = ' ' "pedido
COMWA = COMWA
* IMPORTING
* BELEGTYP_BACK =
TABLES
VBFA_TAB = VBFA_TAB
EXCEPTIONS
NO_VBFA = 1
NO_VBUK_FOUND = 2
OTHERS = 3.
IF TVFK-BLART EQ 'DA' AND TVFK-KALVG EQ 'Z'. "factura anticipada
READ TABLE VBFA_TAB WITH KEY VBELN = VBRK-VBELN.
SELECT SINGLE * FROM VBAK WHERE VBELN EQ VBFA_TAB-VBELV.
ELSEIF TVFK-BLART EQ 'DA' AND TVFK-KALVG EQ 'A'. "factura standard.
READ TABLE VBFA_TAB WITH KEY VBELN = VBRK-VBELN.
READ TABLE VBFA_TAB WITH KEY VBELN = VBFA_TAB-VBELV.
SELECT SINGLE * FROM VBAK WHERE VBELN EQ VBFA_TAB-VBELV.
ELSEIF TVFK-BLART EQ 'DD' OR TVFK-BLART EQ 'DF'. "nota credito
"nota debito
READ TABLE VBFA_TAB WITH KEY VBTYP_N = 'C'.
SELECT SINGLE * FROM VBAK WHERE VBELN EQ VBFA_TAB-VBELN.
ENDIF.
XVBAK = VBAK.
ELSE.
RAISE FACTURA_NO_EXISTE.
ENDIF.
ENDFUNCTION.