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

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.

**********************************************************************