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 FM RV_ORDER_FLOW_INFORMATION==
+
==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

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
.

Factura Cuotas

Cambiar status de objeto