Difference between revisions of "SAP SD ABAP"
From SapWiki
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | ==Leer flujo de documentos | + | ==Leer flujo de documentos== |
<nowiki> | <nowiki> | ||
FUNCTION Z_PEDIDO_FROM_FACTURA. | FUNCTION Z_PEDIDO_FROM_FACTURA. | ||
| Line 61: | Line 61: | ||
===Programa ribelf20=== | ===Programa ribelf20=== | ||
===FM DISPLAY_DOCUMENT_FLOW_ALV=== | ===FM DISPLAY_DOCUMENT_FLOW_ALV=== | ||
| + | ===[[SAP SD FAQ#Flujo_de_documentos_VBFA|Flujo de documentos VBFA]]=== | ||
| + | |||
| + | ==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> | ||
| + | ===Ejemplo 2=== | ||
| + | <nowiki>PARAMETERS: pa_key TYPE sales_key, "ref_doc | ||
| + | pa_auart TYPE vbak-auart, "doc_type | ||
| + | pa_purno TYPE vbkd-bstkd. "order number | ||
| + | |||
| + | ls_bapi_view-header = 'X'. | ||
| + | ls_bapi_view-item = 'X'. | ||
| + | ls_bapi_view-sdschedule = 'X'. | ||
| + | ls_bapi_view-sdcond = 'X'. | ||
| + | ls_bapi_view-partner = 'X'. | ||
| + | |||
| + | |||
| + | APPEND pa_key TO lt_salesdocuments. | ||
| + | |||
| + | CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST' | ||
| + | EXPORTING | ||
| + | i_bapi_view = ls_bapi_view | ||
| + | TABLES | ||
| + | sales_documents = lt_salesdocuments | ||
| + | order_headers_out = lt_order_headers_out | ||
| + | order_items_out = lt_order_items_out | ||
| + | order_schedules_out = lt_order_schedules_out | ||
| + | order_partners_out = lt_order_partners_out | ||
| + | order_conditions_out = lt_order_conditions_out | ||
| + | .</nowiki> | ||
| + | |||
| + | ==[[SAP SD FAQ#Factura_Cuotas|Factura Cuotas]]== | ||
| + | ==[[SAP SD FAQ#Cambiar_status_de_objeto|Cambiar status de objeto]]== | ||
Latest revision as of 20:15, 24 June 2026
Contents
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.
Programa ribelf20
FM DISPLAY_DOCUMENT_FLOW_ALV
Flujo de documentos VBFA
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.
**********************************************************************
Ejemplo 2
PARAMETERS: pa_key TYPE sales_key, "ref_doc
pa_auart TYPE vbak-auart, "doc_type
pa_purno TYPE vbkd-bstkd. "order number
ls_bapi_view-header = 'X'.
ls_bapi_view-item = 'X'.
ls_bapi_view-sdschedule = 'X'.
ls_bapi_view-sdcond = 'X'.
ls_bapi_view-partner = 'X'.
APPEND pa_key TO lt_salesdocuments.
CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'
EXPORTING
i_bapi_view = ls_bapi_view
TABLES
sales_documents = lt_salesdocuments
order_headers_out = lt_order_headers_out
order_items_out = lt_order_items_out
order_schedules_out = lt_order_schedules_out
order_partners_out = lt_order_partners_out
order_conditions_out = lt_order_conditions_out
.