Difference between revisions of "SAP SD ABAP"
From SapWiki
| Line 61: | Line 61: | ||
===Programa ribelf20=== | ===Programa ribelf20=== | ||
===FM DISPLAY_DOCUMENT_FLOW_ALV=== | ===FM DISPLAY_DOCUMENT_FLOW_ALV=== | ||
| + | |||
| + | ==Leer condiciones de precio con formato FM MAP_INT_TO_EXT_STRUCTURE== | ||
| + | <nowiki>delete ADJACENT DUPLICATES FROM gt_outtab COMPARING vbeln. | ||
| + | |||
| + | loop at gt_outtab. | ||
| + | ld_tabix = sy-tabix. | ||
| + | clear ld_cond_value. | ||
| + | |||
| + | read TABLE xvbak with key vbeln = gt_outtab-vbeln. | ||
| + | gt_outtab-netwr = xvbak-NETWR. | ||
| + | gt_outtab-WAERK = xvbak-WAERK. | ||
| + | |||
| + | select * into table lt_vbak from vbak where vbeln = gt_outtab-vbeln. | ||
| + | select * into CORRESPONDING FIELDS OF table lt_vbap from vbap where vbeln = gt_outtab-vbeln. | ||
| + | |||
| + | read TABLE lt_vbak index 1. | ||
| + | |||
| + | loop at lt_vbap. | ||
| + | SELECT * into CORRESPONDING FIELDS OF TABLE lt_komv FROM KONV | ||
| + | WHERE KNUMV = lt_vbak-KNUMV | ||
| + | and kposn = lt_vbap-posnr. | ||
| + | |||
| + | clear lt_ORDER_CONDITIONS_OUT[]. | ||
| + | CALL FUNCTION 'MAP_INT_TO_EXT_STRUCTURE' | ||
| + | EXPORTING | ||
| + | I_OPERATION = '05' | ||
| + | TABLES | ||
| + | FXVBAK = lt_vbak | ||
| + | FXKOMV = lt_komv | ||
| + | FXBAPIKOMV = lt_ORDER_CONDITIONS_OUT | ||
| + | EXCEPTIONS | ||
| + | ENTRY_MISSING = 1 | ||
| + | OTHERS = 2. | ||
| + | IF SY-SUBRC <> 0. | ||
| + | ENDIF. | ||
| + | LOOP at lt_ORDER_CONDITIONS_OUT into ls_ORDER_CONDITIONS_OUT where ITM_NUMBER = lt_vbap-posnr | ||
| + | "and COND_TYPE = 'Z319'. "consultoriss | ||
| + | and COND_TYPE = 'ZDIF'. "consultoriss | ||
| + | * add ls_ORDER_CONDITIONS_OUT-cond_value to ld_cond_value. | ||
| + | add ls_ORDER_CONDITIONS_OUT-condvalue to ld_cond_value. | ||
| + | endloop. | ||
| + | endloop. | ||
| + | |||
| + | **********************************************************************</nowiki> | ||
Revision as of 20:00, 24 June 2026
Contents
Leer flujo de documentos FM RV_ORDER_FLOW_INFORMATION
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.
Programa ribelf20
FM DISPLAY_DOCUMENT_FLOW_ALV
Leer condiciones de precio con formato FM MAP_INT_TO_EXT_STRUCTURE
delete ADJACENT DUPLICATES FROM gt_outtab COMPARING vbeln.
loop at gt_outtab.
ld_tabix = sy-tabix.
clear ld_cond_value.
read TABLE xvbak with key vbeln = gt_outtab-vbeln.
gt_outtab-netwr = xvbak-NETWR.
gt_outtab-WAERK = xvbak-WAERK.
select * into table lt_vbak from vbak where vbeln = gt_outtab-vbeln.
select * into CORRESPONDING FIELDS OF table lt_vbap from vbap where vbeln = gt_outtab-vbeln.
read TABLE lt_vbak index 1.
loop at lt_vbap.
SELECT * into CORRESPONDING FIELDS OF TABLE lt_komv FROM KONV
WHERE KNUMV = lt_vbak-KNUMV
and kposn = lt_vbap-posnr.
clear lt_ORDER_CONDITIONS_OUT[].
CALL FUNCTION 'MAP_INT_TO_EXT_STRUCTURE'
EXPORTING
I_OPERATION = '05'
TABLES
FXVBAK = lt_vbak
FXKOMV = lt_komv
FXBAPIKOMV = lt_ORDER_CONDITIONS_OUT
EXCEPTIONS
ENTRY_MISSING = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
LOOP at lt_ORDER_CONDITIONS_OUT into ls_ORDER_CONDITIONS_OUT where ITM_NUMBER = lt_vbap-posnr
"and COND_TYPE = 'Z319'. "consultoriss
and COND_TYPE = 'ZDIF'. "consultoriss
* add ls_ORDER_CONDITIONS_OUT-cond_value to ld_cond_value.
add ls_ORDER_CONDITIONS_OUT-condvalue to ld_cond_value.
endloop.
endloop.
**********************************************************************