Você está na página 1de 21

1.

1 Fórmulas em esquemas de cálculo ( VOFM )

Via Menus

Dicas
1.2 Fórmulas em esquemas de cálculo ( VOFM )

Via Menus

Dicas
Existem dois tipos de fórmulas sendo base para condição e valor da condição.
1.3 Fórmulas em esquemas de cálculo ( VOFM )

Via Menus

Dicas
Para atualizar a fórmula deve-se utilizar uma faixa acima de 800, pois as faixas anteriores são reservadas pela SAP.
1.4 Fórmulas em esquemas de cálculo ( VOFM )

Via Menus

Dicas
Ao clicar em texto de origem, é aberto o editor de programas da SAP.
1.5 esquemas de cálculo ( VOFM )

Via Menus

Dicas
Não esqueça de ativar a fórmula, senão a mesma não aparece no match-code para ser utilizada.
1.6 Transporte da Formula....para outro Client

Via Menus

Dicas
Não esqueça de incluir este programa na ultima linha da CR, R3TR XPRA RV80HGEN, para ser executada no client de destino da
change request.
1.7 Incluindo a fórmula no esquema de cálculo ( V/08 )

Via Menus

Dicas
Observe que existem dois tipos de fórmulas na pricing, uma calcula a base de calculo e outra que obtém o valor.
Este ponto normalmente é parametrizado por um funcional, contudo se vc souber qual o esquema de calculo e a condition que vai
utilizar a fórmula é só alterar e gravar.
OBS: No mm a transação que altera pricing não é a V/08 utilizada por SD, execute a Transação: M/08
1.8 Incluindo a fórmula no esquema de cálculo ( V/08 )

Via Menus

Dicas
Observe que os valores são carregados para campos pré-definidos no SAP.
EXEMPLO: Linhas 252 e 253 do programa acima.
Exemplos de Fórmulas Utilizadas em
Clientes:
Fórmula 1
*---------------------------------------------------------------------*
* FORM FRM_KONDI_WERT_916 *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM FRM_KONDI_WERT_916.
* TABLES: j_1btxic2, j_1btxic1.
TABLES: J_1BTXIP1 , J_1BTXIP2.
DATA: VP_STUNR LIKE XKOMV-STUNR.
DATA: VP_AUX1(8) DECIMALS 4 TYPE P,
VP_AUX2(8) DECIMALS 4 TYPE P,
VP_AUX3(8) DECIMALS 4 TYPE P,
VP_TOTAL(8) DECIMALS 4 TYPE P,
VP_DATA(8).
DATA: VP_ZCSR(8) DECIMALS 4 TYPE P,
VP_ZCSS(8) DECIMALS 4 TYPE P,
VP_ZPRO(8) DECIMALS 4 TYPE P,
VP_ZPIP(8) DECIMALS 4 TYPE P,
VP_ZCOP(8) DECIMALS 4 TYPE P,
VP_ZPUB(8) DECIMALS 4 TYPE P,
VP_ZCOR(8) DECIMALS 4 TYPE P,
VP_ZCPM(8) DECIMALS 4 TYPE P,
VP_ZJUU(8) DECIMALS 4 TYPE P,
VP_ZSEG(8) DECIMALS 4 TYPE P,
VP_ZPCO(8) DECIMALS 4 TYPE P,
VP_PR00(8) DECIMALS 4 TYPE P,
VP_ICM(8) DECIMALS 4 TYPE P,
VP_IPI(8) DECIMALS 4 TYPE P,
VP_BASE LIKE J_1BTXIC2-BASE,
VP_ICM3 LIKE J_1BTXIC2-RATE,
VP_EXEMPT LIKE J_1BTXIP1-EXEMPT,
VP_EXEMPT2 LIKE J_1BTXIC2-EXEMPT,
VP_BASEIPI LIKE J_1BTXIP2-BASE,
VP_CIPI LIKE J_1BTXIP2-BASE,
VP_NBMCODE LIKE MARC-STEUC,
VP_QTDE(8) DECIMALS 4 TYPE P,
VP_KF00(8) DECIMALS 4 TYPE P,
VP_XICMS(1),
VP_XXIPI(1).
CLEAR: VP_ZCSS, VP_ZPIP, VP_ZCOP, VP_ZPUB, VP_ZCOR, VP_ZCPM, VP_ZJUU,
VP_ZSEG, VP_ZPCO, VP_PR00, VP_ICM3, VP_DATA, VP_ICM, VP_IPI,
VP_NBMCODE, VP_BASEIPI, VP_CIPI, VP_KF00, VP_PR00, VP_BASE,
VP_EXEMPT, VP_EXEMPT2, VP_XICMS, VP_XXIPI.
MOVE XKOMV-STUNR TO VP_STUNR.
READ TABLE XKOMV WITH KEY KSCHL = 'ZCSS'.
IF SY-SUBRC EQ 0.
VP_ZCSS = XKOMV-KBETR * 10.
VP_ZPRO = VP_ZCSS / 12.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZCSR'.
IF SY-SUBRC EQ 0.
VP_ZCSR = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZPIP'.
IF SY-SUBRC EQ 0.
VP_ZPIP = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZCOP'.
IF SY-SUBRC EQ 0.
VP_ZCOP = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZPUB'.
IF SY-SUBRC EQ 0.
VP_ZPUB = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZCOR'.
IF SY-SUBRC EQ 0.
VP_ZCOR = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZCPM'.
IF SY-SUBRC EQ 0.
VP_ZCPM = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZJUU'.
IF SY-SUBRC EQ 0.
VP_ZJUU = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZSEG'.
IF SY-SUBRC EQ 0.
VP_ZSEG = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'ZPCO'.
IF SY-SUBRC EQ 0.
VP_ZPCO = XKOMV-KBETR * 10.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'PR00'.
IF SY-SUBRC EQ 0.
VP_PR00 = XKOMV-KWERT * 100.
ENDIF.
READ TABLE XKOMV WITH KEY KSCHL = 'KF00'.
IF SY-SUBRC EQ 0.
VP_KF00 = XKOMV-KWERT * 100.
ENDIF.
************* CONVERTE A DATA PARA
* O FORMATO DA TABELA ***************
CONCATENATE KOMK-PRSDT+6(2)
KOMK-PRSDT+4(2)
KOMK-PRSDT+0(4) INTO VP_DATA.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
EXPORTING
INPUT = VP_DATA
IMPORTING
OUTPUT = VP_DATA
EXCEPTIONS
OTHERS = 1.
******** VERIFICA SE O CLIENTE NÃO É ISENTO ******************
SELECT SINGLE XICMS XXIPI INTO (VP_XICMS, VP_XXIPI)
FROM KNA1
WHERE KUNNR = KOMK-KUNNR.
* SE O CLIENTE NÃO FOR ISENTO DE ICMS
IF VP_XICMS = ''.
* TESTA SE O CODIGO DO IMPOSTO DIGITADO CALCULA ICMS
IF KOMP-J_1BTXSDC = 'C1' OR KOMP-J_1BTXSDC = 'C2' OR
KOMP-J_1BTXSDC = 'C3' OR KOMP-J_1BTXSDC = 'C4' OR
KOMP-J_1BTXSDC = 'I1' OR KOMP-J_1BTXSDC = 'I2' OR
KOMP-J_1BTXSDC = 'I3' OR KOMP-J_1BTXSDC = 'I4'.

*********** CALCULO DO ICMS ************


SELECT RATE BASE EXEMPT INTO (VP_ICM3,VP_BASE,VP_EXEMPT)
FROM J_1BTXIC2 UP TO 1 ROWS
** select * FROM j_1btxic2 UP TO 1 ROWS
WHERE LAND1 = KOMK-ALAND AND
SHIPFROM = KOMK-WKREG AND
* shipto = komk-regio and "retirei em 08/09 silvio
SHIPTO = KOMK-TXJCD AND
MATNR = KOMP-MATNR AND
VALIDFROM >= VP_DATA AND
VALIDTO <= VP_DATA.
* MOVE j_1btxic2-rate TO vp_icm3.
ENDSELECT.
IF SY-SUBRC = 0.
IF VP_EXEMPT = ''.
IF VP_BASE <> 100.
VP_ICM = ( VP_ICM3 * VP_BASE ).
VP_ICM = ( VP_ICM / 100 ).
ENDIF.
ENDIF.
ELSE.
SELECT RATE INTO VP_ICM3 FROM J_1BTXIC1 UP TO 1 ROWS
WHERE LAND1 = KOMK-ALAND AND
SHIPFROM = KOMK-WKREG AND
* shipto = komk-regio and "retirei em 08/09 silv
SHIPTO = KOMK-TXJCD AND
VALIDFROM >= VP_DATA.
ENDSELECT.
IF SY-SUBRC = 0.
VP_ICM = VP_ICM3 * 100.
ENDIF.
ENDIF.
ENDIF. " IF komp-j_1btxsdc
ENDIF. " IF VP_XICMS
* SE O CLIENTE NÃO FOR ISENTO DE IPI
IF VP_XXIPI = ''.
* TESTA SE O CODIGO DO IMPOSTO DIGITADO CALCULA IPI
IF KOMP-J_1BTXSDC = 'C3' OR KOMP-J_1BTXSDC = 'C4' OR
KOMP-J_1BTXSDC = 'C5' OR KOMP-J_1BTXSDC = 'I3' OR
KOMP-J_1BTXSDC = 'I4' OR KOMP-J_1BTXSDC = 'I5'.
*********** CALCULO DO IPI ****************
SELECT RATE BASE EXEMPT
INTO (VP_CIPI, VP_BASEIPI, VP_EXEMPT2) UP TO 1 ROWS
FROM J_1BTXIP2
WHERE MATNR = KOMP-MATNR AND
VALIDFROM >= VP_DATA.
ENDSELECT.
IF SY-SUBRC = 0.
IF VP_EXEMPT2 = ''.
IF VP_BASEIPI <> 100.
VP_IPI = ( VP_CIPI * VP_BASEIPI ).
VP_IPI = ( VP_IPI / 100 ).
ENDIF.
ENDIF.
ELSE.
* PROCURA O NBMCODE NA TABELA DE MATERIAIS
SELECT STEUC INTO VP_NBMCODE
FROM MARC
WHERE MATNR = KOMP-MATNR AND
WERKS = KOMP-WERKS.
ENDSELECT.
SELECT RATE BASE EXEMPT
INTO (VP_CIPI,VP_BASEIPI,VP_EXEMPT2) UP TO 1 ROWS
FROM J_1BTXIP1
WHERE NBMCODE = VP_NBMCODE AND
VALIDFROM >= VP_DATA.
ENDSELECT.
IF SY-SUBRC = 0.
IF VP_EXEMPT2 = ''.
IF VP_BASEIPI <> 100.
VP_IPI = ( VP_CIPI * VP_BASEIPI ).
VP_IPI = ( VP_IPI / 100 ).
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF. " komp-j_1btxsdc
ENDIF. " IF VP_XXIPI
**********************************************************************
READ TABLE XKOMV WITH KEY STUNR = VP_STUNR.
* verifica se a taxa de ICM vier zerada e for para zona franca ou muni-
* cipio de Manaus e o grupo de produtos(visao vendas 2 - material) for
* = a mercadorias industrializadas seta a taxa de icm para 12%
* Apesar da tabela de exceções de icms estar com zero de aliquota, pre-
* cisamos incluir 12% sobre o PR00, visto que o valor do item na nota
* tem que estar incluso o icm
IF VP_ICM = 0 AND ( KOMK-TXJCD = 'ZF' OR KOMK-TXJCD = 'ZAM' ) AND
KOMP-KONDM = '03'.
VP_ICM = '12.0000'.
ENDIF.
VP_AUX1 = VP_ZCSS + VP_ZPRO + VP_ZPIP + VP_ZCOP + VP_ZPUB + VP_ZCOR +
VP_ZCPM + VP_ZJUU + VP_ZSEG + VP_ZPCO + VP_ICM + VP_IPI +
VP_ZCSR.
VP_AUX2 = ABS( VP_AUX1 - '100.0000' ).
VP_AUX3 = VP_AUX2 / 100.
VP_TOTAL = ( ( VP_PR00 + VP_KF00 ) * 10000 ) / VP_AUX3.
XKOMV-KBETR = ( VP_TOTAL - ( VP_PR00 + VP_KF00 ) ) / 100.
XKWERT = ( VP_TOTAL - ( VP_PR00 + VP_KF00 ) ) / 100.

RETTXKOMV-KBETR = XKOMV-KBETR * 10.


RETTXKOMV-KWERT = XKWERT * 10.

ENDFORM.

Fórmula 2

*---------------------------------------------------------------------*
*       FORM FRM_KOND_BASIS_800     - Custo Integrado                 *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form frm_kond_basis_800.
  tables: ztrcustoin.
  data: w_taxa1       like tcurr-ukurs.
  data: w_taxa2       like tcurr-ukurs.
  clear xkomv-kbetr.
  select zcpusd into ztrcustoin-zcpusd from ztrcustoin
               where zmatnr eq komp-matnr
                 and zdtini le sy-datum
                 and zdtfim ge sy-datum
                 and ztipoc eq 'I'
                 and zwaers eq 'USD'.

    xkomv-kbetr = ztrcustoin-zcpusd.


  endselect.
  move 100000 to: w_taxa1, w_taxa2.
  if komk-waerk ne 'USD'.
    call function 'READ_EXCHANGE_RATE'
         exporting
              date             = komk-audat
              foreign_currency = 'USD'
              local_currency   = 'BRL'
              type_of_rate     = 'M'
         importing
              exchange_rate    = w_taxa1
         exceptions
              no_rate_found    = 1
              no_factors_found = 2
              no_spread_found  = 3
              others           = 4.
  endif.
  if komk-waerk ne 'BRL' and
     komk-waerk ne 'USD'.
    call function 'READ_EXCHANGE_RATE'
         exporting
              date             = komk-audat
              foreign_currency = komk-waerk
              local_currency   = 'BRL'
              type_of_rate     = 'M'
         importing
              exchange_rate    = w_taxa2
         exceptions
              no_rate_found    = 1
              no_factors_found = 2
              no_spread_found  = 3
              others           = 4.
  endif.

  xkomv-kbetr = ( xkomv-kbetr * w_taxa1 ) / w_taxa2.


  xkomv-waers = komk-waerk.

  rettxkomv-kbetr = xkomv-kbetr.
  rettxkomv-waers = xkomv-waers.

* modify xkomv.

endform.

FÓRMULA 3:
*---------------------------------------------------------------------*
*       FORM FRM_KOND_BASIS_801      - Rentabilidade                  *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form frm_kond_basis_801.

  tables: tcurr.

  data: vp_venda(8) decimals 4 type p,


        vp_custo(8) decimals 4 type p,
        vp_margem type f,
        w_data        like  syst-datum,
        w_taxa        like tcurr-ukurs.

  read table xkomv with key kschl = 'ICMI'.


  if sy-subrc eq 0.
    vp_venda = xkomv-kwert * 100.
  endif.

  read table xkomv with key kschl = 'ZCIT'.


  if sy-subrc eq 0.
    vp_custo = xkomv-kwert * 100.
  endif.

  read table xkomv with key kschl = 'ZMRG'.

  xkomv-kwert    = 0.
  rettxkomv-kwert = xkomv-kwert.

  if vp_custo ne 0.
    vp_margem = ( ( vp_venda / vp_custo ) - 1 ) * 100.
  else.
    vp_margem = 100.
  endif.

  xkomv-kbetr = vp_margem * 1000.

  rettxkomv-kbetr = xkomv-kbetr.

endform.

OUTROS Exemplos:
INCLUDE ZBR_VI_FORM933 *
*&---------------------------------------------------------------------*
*& Formula 933 for SD pricing
*& Calculate insurance value for sales order
*&---------------------------------------------------------------------*
*& DESIGNED BY: Aparecido - 14Nov2003
*& CODED BY : Sidney C. Leite - 14Nov2003
*& LOCATION : Brazil
*& PAD DOC # : 38667
*&---------------------------------------------------------------------*
*& USE: Used in RV64A933 program.
*&---------------------------------------------------------------------*
*& COMMENTS:
*&---------------------------------------------------------------------*
*& MODIFICATION LOG:
*& VSN DATE FULL NAME - Change Request Number
*& v000 Initial Version - 38709
*&
*& v001 08jan04 Rodrigo Ariza Gregorio - PAD/CR
*& I calculate of the sum - 41982/42892
*&
*& v002 23jan04 Rodrigo Ariza Gregorio
*& To include condition ZBFV with the - CR
*& same calculos and details of the ZBFT. - 48314
*&
*& vnnn ddmmmyy x. xxxxxxxxxxxxxxxxxxxxxx - 0000
*& description of change
*&---------------------------------------------------------------------*

IF sy-tcode(2) EQ 'VL' OR sy-tcode(2) EQ 'VA' "v001


OR sy-tcode(2) EQ 'VF'. "v001

DATA: zbr_zbbc LIKE xkomv-kwert,


zbr_zbsg LIKE xkomv-kwert,
zbr_zbcf LIKE xkomv-kwert,
zbr_zbft LIKE xkomv-kwert,
zbr_zbfv LIKE xkomv-kwert, "v002
zbr_zbfl LIKE xkomv-kwert, "v002
zbr_xkomv LIKE xkomv,
w_kbetr TYPE f,
zbr_xkomv1 LIKE xkomv, "v001
zbr_konda LIKE vbkd-konda. "v001

CLEAR: zbr_zbbc,
zbr_zbsg,
zbr_zbcf,
zbr_zbft,
zbr_zbfv, "v002
zbr_zbfl, "v002
zbr_xkomv,
zbr_xkomv1. "v001

DATA: BEGIN OF z_xkomv OCCURS 0. "v001


INCLUDE STRUCTURE xkomv. "v001
DATA: END OF z_xkomv. "v001

zbr_konda = komk-konda. "v001

SELECT SINGLE konda "v001


INTO zbr_konda "v001
FROM vbkd "v001
WHERE vbeln = komp-vgbel AND "v001
posnr = '000000'. "v001

DELETE xkomv WHERE kwert EQ '0.00' AND kschl EQ 'ZBBC' "v001


AND kbetr EQ space. "v001

READ TABLE xkomv INTO zbr_xkomv "v001


WITH KEY kschl = 'ZBVL'. "v001

IF sy-subrc = 0. "v001
zbr_zbbc = zbr_xkomv-kwert. "v001
ENDIF. "v001

z_xkomv[] = xkomv[]. "v001

DELETE z_xkomv WHERE kbetr EQ 0. "v001

* READ TABLE xkomv INTO zbr_xkomv "v001


* WITH KEY kschl = 'ZBFF'. "v001
* IF sy-subrc = 0. "v001
* zbr_zbff = zbr_xkomv-kwert. "v001
* endif. "v001

* READ TABLE z_xkomv INTO zbr_xkomv "v001


READ TABLE z_xkomv INTO zbr_xkomv "v001
WITH KEY kschl = 'ZBFT'.
IF sy-subrc = 0.
zbr_zbft = zbr_xkomv-kwert.
ENDIF.

READ TABLE z_xkomv INTO zbr_xkomv "v002


WITH KEY kschl = 'ZBFL'. "v002
IF sy-subrc = 0. "v002
zbr_zbfl = zbr_xkomv-kwert. "v002
ENDIF. "v002

READ TABLE z_xkomv INTO zbr_xkomv "v002


WITH KEY kschl = 'ZBFV'. "v002
IF sy-subrc = 0. "v002
zbr_zbfv = zbr_xkomv-kwert. "v002
ENDIF. "v002

* READ TABLE z_xkomv INTO zbr_xkomv "v001


READ TABLE z_xkomv INTO zbr_xkomv "v001
WITH KEY kschl = 'ZBSG'.
IF sy-subrc = 0.
zbr_zbsg = zbr_xkomv-kwert.
ENDIF.

* READ TABLE z_xkomv INTO zbr_xkomv "v001


* WITH KEY kschl = 'ZBCF'. "v001
* IF sy-subrc = 0. "v001
* zbr_zbcf = zbr_xkomv-kwert. "v001
* ENDIF. "v001

READ TABLE xkomv INTO zbr_xkomv


WITH KEY kschl = 'ZBEB'.

IF sy-subrc = 0.

* IF NOT zbr_zbff IS INITIAL. "v001


IF zbr_konda = 'BF'. "v001
xkwert = zbr_zbbc + zbr_zbsg + zbr_zbft + zbr_zbfv + zbr_zbfl."v002
* xkwert = zbr_zbbc + zbr_zbsg + zbr_zbft. "v001 v002
* xkwert = zbr_zbff + zbr_zbsg + zbr_zbft. "v001
ENDIF.

* IF NOT zbr_zbcf IS INITIAL. "v001


IF zbr_konda = 'BC'. "v001
xkwert = zbr_zbbc - zbr_zbsg - zbr_zbft - zbr_zbfv - zbr_zbfl."v002
* xkwert = zbr_zbbc - zbr_zbsg - zbr_zbft. "v001 v002
* xkwert = zbr_zbcf - zbr_zbsg - zbr_zbft. "v001
ENDIF.

w_kbetr = ( xkwert / xkomv-kawrt ) * 1000 . "v001


xkomv-kbetr = w_kbetr.
xkomv-kwert = xkwert. "v001

ENDIF.
DE NOVO:
*----------------------------------------------------------------------*
* INCLUDE ZBR_VI_FORM934 *
*&---------------------------------------------------------------------*
*& Formula 934 - Definition of Value FOB
*&
*&---------------------------------------------------------------------*
*& DESIGNED BY: Aparecido Borges - 18Mar2004
*& CODED BY : Rodrigo Ariza Gregorio - 18Mar2004
*& LOCATION : Brazil
*& PAD DOC # : 48318
*&---------------------------------------------------------------------*
*& USE: Used in RV64A934 program.
*&---------------------------------------------------------------------*
*& COMMENTS:
*&---------------------------------------------------------------------*
*& MODIFICATION LOG:
*& VSN DATE FULL NAME - Change Request Number
*& v000 Initial Version - 49953
*&
*& vnnn ddmmmyy x. xxxxxxxxxxxxxxxxxxxxxx - 0000
*& description of change
*&---------------------------------------------------------------------*

IF sy-tcode(2) EQ 'VL' OR sy-tcode(2) EQ 'VA'


OR sy-tcode(2) EQ 'VF'.

DATA: zbr_zbvl LIKE xkomv-kwert,


zbr_zbsg LIKE xkomv-kwert,
zbr_zbcf LIKE xkomv-kwert,
zbr_zbft LIKE xkomv-kwert,
zbr_zbfv LIKE xkomv-kwert,
zbr_zbfl LIKE xkomv-kwert,
zbr_xkomv LIKE xkomv,
w_kbetr TYPE f,
zbr_konda LIKE vbkd-konda,
zbr_inco1 LIKE vbkd-inco1.

DATA: BEGIN OF zbr_char20 OCCURS 0,


sign(1),
option(2),
low(20),
high(20),
END OF zbr_char20.

DATA: BEGIN OF t_hardcode OCCURS 0,


sign(1),
option(2),
preco(3),
cond(2),
val(1),
END OF t_hardcode.

CLEAR: zbr_zbvl,
zbr_zbsg,
zbr_zbcf,
zbr_zbft,
zbr_zbfv,
zbr_zbfl,
zbr_xkomv.

DATA: BEGIN OF z_xkomv OCCURS 0.


INCLUDE STRUCTURE xkomv.
DATA: END OF z_xkomv.

INCLUDE y_gethard.

zbr_konda = komk-konda.
zbr_inco1 = komk-inco1.

SELECT SINGLE konda inco1


INTO (zbr_konda, zbr_inco1)
FROM vbkd
WHERE vbeln = komp-vgbel AND
posnr = '000000'.

READ TABLE xkomv INTO zbr_xkomv


WITH KEY kschl = 'ZBVL'.

IF sy-subrc = 0.
zbr_zbvl = zbr_xkomv-kwert.
ENDIF.

z_xkomv[] = xkomv[].

READ TABLE z_xkomv INTO zbr_xkomv


WITH KEY kschl = 'ZBFT'.
IF sy-subrc = 0.
zbr_zbft = zbr_xkomv-kwert.
ENDIF.

READ TABLE z_xkomv INTO zbr_xkomv


WITH KEY kschl = 'ZBFL'.
IF sy-subrc = 0.
zbr_zbfl = zbr_xkomv-kwert.
ENDIF.

READ TABLE z_xkomv INTO zbr_xkomv


WITH KEY kschl = 'ZBFV'.
IF sy-subrc = 0.
zbr_zbfv = zbr_xkomv-kwert.
ENDIF.

READ TABLE z_xkomv INTO zbr_xkomv


WITH KEY kschl = 'ZBSG'.
IF sy-subrc = 0.
zbr_zbsg = zbr_xkomv-kwert.
ENDIF.

READ TABLE xkomv INTO zbr_xkomv


WITH KEY kschl = 'ZBFB'.

IF sy-subrc = 0.

get_hard 'BR*' 'CHAR20' 'BR_SD_DEFINE_VALOR_FOB' zbr_char20.

LOOP AT zbr_char20.
t_hardcode-sign = zbr_char20-sign.
t_hardcode-option = zbr_char20-option.
t_hardcode-preco = zbr_char20-low(3).
t_hardcode-cond = zbr_char20-low+4(2).
t_hardcode-val = zbr_char20-low+7(1).
APPEND t_hardcode.
ENDLOOP.

CLEAR: t_hardcode.

LOOP AT t_hardcode WHERE preco EQ zbr_inco1 AND


cond EQ zbr_konda.

IF t_hardcode-val EQ '1'.
xkwert = zbr_zbvl.
ELSEIF t_hardcode-val EQ '2'.
xkwert = zbr_zbvl - zbr_zbsg - zbr_zbft - zbr_zbfl - zbr_zbfv.
ENDIF.
EXIT.
ENDLOOP.

w_kbetr = ( xkwert / xkomv-kawrt ) * 1000 .


xkomv-kbetr = w_kbetr.
xkomv-kwert = xkwert.

ENDIF.

ENDIF.

Você também pode gostar