esquema calculo sd vofm-exemplos-formulas

21
1.1 Fórmulas em esquemas de cálculo ( VOFM ) Via Menus Dicas

Upload: rsindeaux

Post on 31-Dec-2015

295 views

Category:

Documents


11 download

TRANSCRIPT

Page 1: Esquema Calculo SD VOFM-Exemplos-Formulas

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

Via Menus

Dicas

Page 2: Esquema Calculo SD VOFM-Exemplos-Formulas

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

Via Menus

DicasExistem dois tipos de fórmulas sendo base para condição e valor da condição.

Page 3: Esquema Calculo SD VOFM-Exemplos-Formulas

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.

Page 4: Esquema Calculo SD VOFM-Exemplos-Formulas

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

Via Menus

DicasAo clicar em texto de origem, é aberto o editor de programas da SAP.

Page 5: Esquema Calculo SD VOFM-Exemplos-Formulas

1.5 esquemas de cálculo ( VOFM )

Via Menus

DicasNão esqueça de ativar a fórmula, senão a mesma não aparece no match-code para ser utilizada.

Page 6: Esquema Calculo SD VOFM-Exemplos-Formulas

1.6 Transporte da Formula....para outro Client

Via Menus

DicasNã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.

Page 7: Esquema Calculo SD VOFM-Exemplos-Formulas
Page 8: Esquema Calculo SD VOFM-Exemplos-Formulas

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

Page 9: Esquema Calculo SD VOFM-Exemplos-Formulas

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.

Page 10: Esquema Calculo SD VOFM-Exemplos-Formulas

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.

Page 11: Esquema Calculo SD VOFM-Exemplos-Formulas

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'EXPORTINGINPUT = VP_DATA

Page 12: Esquema Calculo SD VOFM-Exemplos-Formulas

IMPORTINGOUTPUT = VP_DATAEXCEPTIONSOTHERS = 1. ******** VERIFICA SE O CLIENTE NÃO É ISENTO ******************SELECT SINGLE XICMS XXIPI INTO (VP_XICMS, VP_XXIPI)FROM KNA1WHERE KUNNR = KOMK-KUNNR. * SE O CLIENTE NÃO FOR ISENTO DE ICMSIF VP_XICMS = ''. * TESTA SE O CODIGO DO IMPOSTO DIGITADO CALCULA ICMSIF KOMP-J_1BTXSDC = 'C1' OR KOMP-J_1BTXSDC = 'C2' ORKOMP-J_1BTXSDC = 'C3' OR KOMP-J_1BTXSDC = 'C4' ORKOMP-J_1BTXSDC = 'I1' OR KOMP-J_1BTXSDC = 'I2' ORKOMP-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 ROWSWHERE LAND1 = KOMK-ALAND ANDSHIPFROM = KOMK-WKREG AND* shipto = komk-regio and "retirei em 08/09 silvioSHIPTO = KOMK-TXJCD ANDMATNR = KOMP-MATNR ANDVALIDFROM >= VP_DATA ANDVALIDTO <= 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 ROWSWHERE LAND1 = KOMK-ALAND ANDSHIPFROM = KOMK-WKREG AND* shipto = komk-regio and "retirei em 08/09 silvSHIPTO = KOMK-TXJCD ANDVALIDFROM >= VP_DATA.ENDSELECT.IF SY-SUBRC = 0.VP_ICM = VP_ICM3 * 100.ENDIF.ENDIF.ENDIF. " IF komp-j_1btxsdcENDIF. " IF VP_XICMS * SE O CLIENTE NÃO FOR ISENTO DE IPIIF VP_XXIPI = ''. * TESTA SE O CODIGO DO IMPOSTO DIGITADO CALCULA IPIIF KOMP-J_1BTXSDC = 'C3' OR KOMP-J_1BTXSDC = 'C4' OR

Page 13: Esquema Calculo SD VOFM-Exemplos-Formulas

KOMP-J_1BTXSDC = 'C5' OR KOMP-J_1BTXSDC = 'I3' ORKOMP-J_1BTXSDC = 'I4' OR KOMP-J_1BTXSDC = 'I5'. *********** CALCULO DO IPI ****************SELECT RATE BASE EXEMPTINTO (VP_CIPI, VP_BASEIPI, VP_EXEMPT2) UP TO 1 ROWSFROM J_1BTXIP2WHERE MATNR = KOMP-MATNR ANDVALIDFROM >= 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 MATERIAISSELECT STEUC INTO VP_NBMCODEFROM MARCWHERE MATNR = KOMP-MATNR ANDWERKS = KOMP-WERKS.ENDSELECT. SELECT RATE BASE EXEMPTINTO (VP_CIPI,VP_BASEIPI,VP_EXEMPT2) UP TO 1 ROWSFROM J_1BTXIP1WHERE NBMCODE = VP_NBMCODE ANDVALIDFROM >= 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_1btxsdcENDIF. " 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' ) ANDKOMP-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.

Page 14: Esquema Calculo SD VOFM-Exemplos-Formulas

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

Page 15: Esquema Calculo SD VOFM-Exemplos-Formulas

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,

Page 16: Esquema Calculo SD VOFM-Exemplos-Formulas

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

Page 17: Esquema Calculo SD VOFM-Exemplos-Formulas

*&*& 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

Page 18: Esquema Calculo SD VOFM-Exemplos-Formulas

* 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

Page 19: Esquema Calculo SD VOFM-Exemplos-Formulas

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),

Page 20: Esquema Calculo SD VOFM-Exemplos-Formulas

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'.

Page 21: Esquema Calculo SD VOFM-Exemplos-Formulas

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.