Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

not divide in zero

Former Member
0 Kudos

hi

i doing this divide and i wont to now what is the <b>best way</b> to do the divide like in bold but take care on divide that not be in <b>0</b> (bring dump)

tankes

i reward

LOOP AT truma_tab ASSIGNING <fs_truma>.

READ TABLE zefi_tab ASSIGNING <fs_zefi> INDEX sy-index.

IF sy-subrc = 0.

<b> wa_per_tab-month1 = <fs_truma>-month1 / <fs_zefi>-month1 .

wa_per_tab-month2 = <fs_truma>-month2 / <fs_zefi>-month2.

wa_per_tab-month3 = <fs_truma>-month3 / <fs_zefi>-month3.</b>

APPEND wa_per_tab TO per_tab.

ENDIF.

ENDLOOP.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Use like this:

IF sy-subrc = 0

AND NOT <fs_zefi>-month1 IS INITIAL

AND NOT <fs_zefi>-month2 IS INITIAL

AND NOT <fs_zefi>-month3 IS INITIAL.

wa_per_tab-month1 = <fs_truma>-month1 / <fs_zefi>-month1 .

wa_per_tab-month2 = <fs_truma>-month2 / <fs_zefi>-month2.

wa_per_tab-month3 = <fs_truma>-month3 / <fs_zefi>-month3.

ENDIF.

Thanks and Best Regards,

Vikas Bittera.

11 REPLIES 11

Former Member
0 Kudos

Hi,

Use like this:

IF sy-subrc = 0

AND NOT <fs_zefi>-month1 IS INITIAL

AND NOT <fs_zefi>-month2 IS INITIAL

AND NOT <fs_zefi>-month3 IS INITIAL.

wa_per_tab-month1 = <fs_truma>-month1 / <fs_zefi>-month1 .

wa_per_tab-month2 = <fs_truma>-month2 / <fs_zefi>-month2.

wa_per_tab-month3 = <fs_truma>-month3 / <fs_zefi>-month3.

ENDIF.

Thanks and Best Regards,

Vikas Bittera.

0 Kudos

hi vikas

i wont that if month 1 = 0 dont do that but do the divide in month 2 and 3 (if ne 0)

regards

0 Kudos

Hi,

I am sorry i could not understand this.. you are saying that if month1 = 0 dont do, but for 2 and 3 do this if they are non zero..

both have the same meaning... that only do when 1, 2 and 3 anre non zero..

See for avoiding the devide by zero, we only need to make a check on the fields by which u r deviding..

Thanks and Regards,

Vikas Bittera.

0 Kudos

hi

yes u right this is what i think to but waht i wont to tell u is is month1 = 0,

ans month2 = 10 ,month3 = 20,

i wont to do the divide on month2 and month 3 rows but not in row 1 (month1)

Regards

0 Kudos

Hi

Just as some guy has explained to you, u can use the CATCH/ENDCATCH statsment:

FORM DIVIDE USING P1 P2 P3.

  CATCH SYSTEM-EXCEPTIONS ARITHMETIC_ERRORS = 1.
    P3 = P1 / P2.
  ENDCATCH.
  IF SY-SUBRC <> 0.
*------> No divide by zero
    P3 = 0.
  ENDIF.
ENDFORM.

*---->U can use an IF statament:

FORM DIVIDE USING P1 P2 P3.
  IF P2 <> 0
    P3 = P1 / P2.
  ELSE.
    P3 = 0.
  ENDIF.
ENDFORM.


LOOP AT truma_tab ASSIGNING <fs_truma>.
  READ TABLE zefi_tab ASSIGNING <fs_zefi> INDEX sy-index.
  IF sy-subrc = 0.
    PERFORM DIVIDE USING: <fs_truma>-month1  <fs_zefi>-month1 wa_per_tab-month1, 
                          <fs_truma>-month2  <fs_zefi>-month2 wa_per_tab-month2,  
                          <fs_truma>-month3  <fs_zefi>-month3 wa_per_tab-month3, 
    APPEND wa_per_tab TO per_tab. 
  ENDIF.
ENDLOOP.

Max

Former Member
0 Kudos

Hi,

try with this example:

PARAMETERS number TYPE i.

DATA: result TYPE p LENGTH 8 DECIMALS 2,

oref TYPE REF TO cx_root,

text TYPE string.

TRY.

IF ABS( number ) > 100.

RAISE EXCEPTION TYPE cx_demo_abs_too_large.

ENDIF.

PERFORM calculation USING number

CHANGING result

text.

CATCH cx_sy_arithmetic_error INTO oref.

text = oref->get_text( ).

CATCH cx_root INTO oref.

text = oref->get_text( ).

ENDTRY.

IF NOT text IS INITIAL.

WRITE / text.

ENDIF.

WRITE: / 'Final result:', result.

FORM calculation USING p_number LIKE number

CHANGING p_result LIKE result

p_text LIKE text

RAISING cx_sy_arithmetic_error.

DATA l_oref TYPE REF TO cx_root.

TRY.

p_result = 1 / p_number.

WRITE: / 'Result of division:', p_result.

p_result = SQRT( p_number ).

WRITE: / 'Result of square root:', p_result.

<b> CATCH cx_sy_zerodivide INTO l_oref.</b>

p_text = l_oref->get_text( ).

CLEANUP.

CLEAR p_result.

ENDTRY.

Former Member
0 Kudos

u have to put one more condition

if wa_per_tab-month1 ne '0.0.

wa_per_tab-month1 = <fs_truma>-month1 / <fs_zefi>-month1 .

endif.

Regards

Peram

Former Member
0 Kudos

before calculation do the check :

if value ne 0.

do the validations.

endif.

Thanks

Seshu

0 Kudos

hi seshu

i have in program(i not write) 12 month what is the <b>efficient</b>way to do that?

regards

0 Kudos

Hello Tal,

Check the below program and i had same issue ( Short dump dividing by zero).

see the bold one

  • type-pools

type-pools : slis.

  • Tables

tables : mara,

makt,

mbew,

konp,

pgmi,

marc,

RMCP3,

sscrfields,

mvke.

  • Internal Table for MARC and MARA

data : begin of i_join occurs 0,

matnr like mara-matnr, " Material #

meins like mara-meins, " Unit of Measure

werks like marc-werks, " Plant

zzdept like marc-zzdept," Department

end of i_join.

  • Internal table for PGMI

data : begin of i_pgmi occurs 0,

werks like pgmi-werks, " Plant,

nrmit like pgmi-nrmit, " Material #

wemit like pgmi-wemit, " Plant

end of i_pgmi.

  • Internal Table for MBEW

data i_mbew like mbew occurs 0 with header line.

  • Internal Table for Output

data : begin of i_output occurs 0 ,

matnr like mara-matnr, " Material #

maktx like makt-maktx, " Material Desc

VPRSV like mbew-VPRSV, " Price Control Indicator

VERPR like mbew-VERPR, " Moving Avg Price

meins like mara-meins, " Base Unit of Measure

STPRS like mbew-STPRS, " Standard Price

LPLPR like mbew-LPLPR, " Current Planned Price

ZPLPR like mbew-ZPLPR, " Future Planned Price

VPLPR like mbew-VPLPR, " Previous Planned Price

kbetr like konp-kbetr, " Sales Price

KMEIN like konp-KMEIN, " Sales Unit

margin(5) type p decimals 2,

vmsta like mvke-vmsta, " Material Status.

end of i_output.

  • Internal Table for A004

data : i_a004 like a004 occurs 0 with header line.

  • Variables

data : wa_lines type i,

wa_maktx type makt-maktx,

v_flag type c.

  • ALV Function Module Variables

DATA: g_repid like sy-repid,

gs_layout type slis_layout_alv,

g_exit_caused_by_caller,

gs_exit_caused_by_user type slis_exit_by_user.

DATA: gt_fieldcat type slis_t_fieldcat_alv,

gs_print type slis_print_alv,

gt_events type slis_t_event,

gt_list_top_of_page type slis_t_listheader,

g_status_set type slis_formname value 'PF_STATUS_SET',

g_user_command type slis_formname value 'USER_COMMAND',

g_top_of_page type slis_formname value 'TOP_OF_PAGE',

g_top_of_list type slis_formname value 'TOP_OF_LIST',

g_end_of_list type slis_formname value 'END_OF_LIST',

g_variant LIKE disvariant,

g_save(1) TYPE c,

g_tabname_header TYPE slis_tabname,

g_tabname_item TYPE slis_tabname,

g_exit(1) TYPE c,

gx_variant LIKE disvariant.

data : gr_layout_bck type slis_layout_alv.

  • Selection-screen

selection-screen : begin of block blk with frame title text-001.

parameters : p_werks like marc-werks default '1000' obligatory.

select-options : s_dept for marc-zzdept obligatory,

s_matnr for mara-matnr,

s_mtart for mara-mtart,

s_vprsv for mbew-VPRSV,

s_PRGRP for RMCP3-PRGRP MATCHCODE OBJECT MAT2 ,

s_vmsta for mvke-vmsta.

selection-screen: end of block blk.

*SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.

*PARAMETERS: p_vari LIKE disvariant-variant.

*SELECTION-SCREEN END OF BLOCK b3.

*

----


  • At slection screen events *

----


*-- Process on value request

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

  • PERFORM f4_for_variant.

*

----


  • Initialization *

----


Initialization.

g_repid = sy-repid.

sscrfields-functxt_01 = 'Clear Selection'.

selection-screen function key 1.

AT SELECTION-SCREEN.

case sscrfields-ucomm.

when 'Clear Selection' or 'FC01'.

clear: s_matnr,

p_werks.

refresh: s_matnr,

s_dept,

s_mtart,

s_vprsv,

s_PRGRP,

s_vmsta.

endcase.

----


  • Start-of-selection.

----


start-of-selection.

  • Clear the all data.

perform clear_data.

  • Get the data from PGMI Table

perform get_pgmi.

  • Get the data from MARC and MARA Table

perform get_mara_marc.

  • Get the data from MBEW Table

perform get_mbew.

  • Move the data into OUTPUT Table

perform move_output_internal.

*end-of-selection.

end-of-selection.

if not i_output[] is initial.

  • ALV Function Module

perform print_alv.

endif.

&----


*& Form get_pgmi

&----


  • Select the data from PGMI Table

----


FORM get_pgmi.

clear v_flag.

  • If Product group has a value at Selection-screen.

if not s_prgrp is initial.

select werks nrmit wemit from pgmi into table i_pgmi

where prgrp in s_prgrp

and werks = p_werks

and wemit = p_werks.

v_flag = 'X'.

endif.

ENDFORM. " get_pgmi

&----


*& Form get_mara_marc

&----


  • Select the data from MARA and MARC

----


FORM get_mara_marc.

if v_flag = 'X'.

select amatnr ameins bwerks bzzdept into table i_join

from mara as a inner join marc as b on amatnr = bmatnr

for all entries in i_pgmi

where a~matnr in s_matnr

and b~werks = p_werks

and b~zzdept in s_dept

and a~mtart in s_mtart

and a~matnr = i_pgmi-nrmit

and b~werks = i_pgmi-werks.

else.

  • Get the data from MARA and MARC Table

select amatnr ameins bwerks bzzdept into table i_join

from mara as a inner join marc as b on amatnr = bmatnr

where a~matnr in s_matnr

and b~werks = p_werks

and b~zzdept in s_dept

and a~mtart in s_mtart.

endif.

clear wa_lines.

describe table i_join lines wa_lines.

if wa_lines is initial.

message i000(zwave) with 'List contains no data'.

stop.

endif.

sort i_join by matnr werks zzdept.

ENDFORM. " get_mara_marc

&----


*& Form get_mbew

&----


  • Select the data from MBEW Table

----


FORM get_mbew.

  • Get the data from MBEW.

select * from mbew into table i_mbew

for all entries in i_join

where matnr = i_join-matnr.

clear wa_lines.

describe table i_mbew lines wa_lines.

if wa_lines is initial.

message i000(zwave) with 'List contains no data'.

stop.

endif.

sort i_mbew by matnr bwkey.

ENDFORM. " get_mbew

&----


*& Form move_output_internal

&----


  • Final Results

----


FORM move_output_internal.

loop at i_join.

clear wa_maktx.

  • Compare the data with MVKE Table

select single vmsta from mvke into mvke-vmsta

where matnr = i_join-matnr

and vkorg = '0001'

and vtweg = '01'

and vmsta in s_vmsta.

if sy-subrc ne 0.

continue.

else.

i_output-vmsta = mvke-vmsta.

endif.

read table i_mbew with key matnr = i_join-matnr

bwkey = i_join-werks

binary search.

if sy-subrc eq 0.

  • Price Control Indicator

i_output-VPRSV = i_mbew-VPRSV.

  • Moving Average Price

i_output-VERPR = i_mbew-VERPR / i_mbew-peinh.

  • Standard Price

i_output-STPRS = i_mbew-STPRS / i_mbew-peinh.

  • Current Planned Price

i_output-LPLPR = i_mbew-LPLPR / i_mbew-peinh.

  • Future Planned Price

i_output-ZPLPR = i_mbew-ZPLPR / i_mbew-peinh.

  • Previous Planned Price

i_output-VPLPR = i_mbew-VPLPR / i_mbew-peinh.

  • Base Unit of Measure - Added by Seshu 01/09/2007

i_output-meins = i_join-meins.

else.

continue.

endif.

  • Get the sales Price.

perform get_sales_data.

if i_mbew-VPRSV = 'V'.

<b>* Get the Percentage of Margin

if i_output-kbetr ne '0.00'.

i_output-margin = ( ( i_output-kbetr - i_mbew-VERPR )

/ i_output-kbetr ) * 100 .

endif.</b>

else.

  • Get the Percentage of Margin

if i_output-kbetr ne '0.00'.

i_output-margin = ( ( i_output-kbetr - i_output-stprs )

/ i_output-kbetr ) * 100 .

endif.

endif.

  • Get the material Description from MAKT Table

select single maktx from makt into wa_maktx

where matnr = i_join-matnr

and spras = 'E'.

if sy-subrc eq 0.

i_output-matnr = i_join-matnr.

i_output-maktx = wa_maktx.

endif.

append i_output.

clear : i_output,

i_join,

i_mbew.

endloop.

ENDFORM. " move_output_internal

&----


*& Form get_sales_data

&----


  • Get the Sales Price for each material

----


FORM get_sales_data.

  • Get the data from A004 table to get KNUMH

  • Added new field Sales Unit - Seshu 01/09/2006

refresh : i_a004.

clear : i_a004.

data : lv_kbetr like konp-kbetr," Condition value

lv_KPEIN like konp-kpein , "per

lv_KMEIN like konp-KMEIN. " Sales Unit

select * from a004 into table i_a004

where matnr = i_join-matnr

and vkorg = '0001'

and vtweg = '01'.

if sy-subrc eq 0.

sort i_a004 by DATAB descending.

  • Get the Latetest Date

read table i_a004 with key matnr = i_join-matnr

vkorg = '0001'

vtweg = '01'

binary search.

  • Get the Sales Value

select single kbetr KPEIN KMEIN from konp

into (lv_kbetr,lv_KPEIN, lv_KMEIN)

where knumh = i_a004-knumh

and kappl = i_a004-kappl

and kschl = i_a004-kschl.

if sy-subrc eq 0.

i_output-kbetr = lv_kbetr / lv_KPEIN.

i_output-KMEIN = lv_KMEIN.

endif.

endif.

clear : lv_kbetr,

lv_kpein,

lv_KMEIN.

ENDFORM. " get_sales_data

&----


*& Form print_alv

&----


  • ALV Function Module

----


FORM print_alv.

  • Fill the Fiedlcat

PERFORM fieldcat_init using gt_fieldcat[].

gr_layout_bck-edit_mode = 'D'.

gr_layout_bck-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = g_repid

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = g_user_command

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = gr_layout_bck

IT_FIELDCAT = gt_fieldcat[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = g_save

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT =

  • IT_HYPERLINK =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IT_EXCEPT_QINFO =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = i_output

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " print_alv

&----


*& Form fieldcat_init

&----


  • Fieldcat

----


FORM fieldcat_init USING e01_lt_fieldcat type slis_t_fieldcat_alv.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  • Material #

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MATNR'.

LS_FIELDCAT-ref_fieldname = 'MATNR'.

LS_FIELDCAT-ref_tabname = 'MARA'.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Material'.

ls_fieldcat-seltext_M = 'Material'.

ls_fieldcat-seltext_S = 'Material'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Material Description

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MAKTX'.

LS_FIELDCAT-OUTPUTLEN = 35.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Description'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Price Indicator

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VPRSV'.

LS_FIELDCAT-OUTPUTLEN = 7.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Price Control Indicator'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Moving Avg Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VERPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Moving Avg Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Base Unit of Measure

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MEINS'.

LS_FIELDCAT-OUTPUTLEN = 7.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Base Unit'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Standard Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'STPRS'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Standard Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Current Planned Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'LPLPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Current Planned Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Future Planned Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ZPLPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Future Planned Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Previous Planned Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VPLPR'.

LS_FIELDCAT-OUTPUTLEN = 11.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Previous Planned Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Sales Price

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'KBETR'.

LS_FIELDCAT-OUTPUTLEN = 13.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Sales Price'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Sales Unit

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'KMEIN'.

LS_FIELDCAT-OUTPUTLEN = 7.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Sales Unit'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • % of Gross Margin

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'MARGIN'.

LS_FIELDCAT-OUTPUTLEN = 13.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = '% of Gross Margin'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

  • Material Status

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'VMSTA'.

LS_FIELDCAT-OUTPUTLEN = 13.

LS_FIELDCAT-TABNAME = 'I_OUTPUT'.

ls_fieldcat-seltext_L = 'Material Status'.

APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.

ENDFORM. " fieldcat_init

**&----


*

**& Form f4_for_variant

**&----


*

    • text

**----


*

*FORM f4_for_variant.

*

  • CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

  • EXPORTING

  • is_variant = g_variant

  • i_save = g_save

  • i_tabname_header = g_tabname_header

  • i_tabname_item = g_tabname_item

    • it_default_fieldcat =

  • IMPORTING

  • e_exit = g_exit

  • es_variant = gx_variant

  • EXCEPTIONS

  • not_found = 2.

  • IF sy-subrc = 2.

  • MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

  • WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  • ELSE.

  • IF g_exit = space.

  • p_vari = gx_variant-variant.

  • ENDIF.

  • ENDIF.

*

*

*ENDFORM. " f4_for_variant

&----


*& Form clear_data

&----


  • Clear the Internal table

----


FORM clear_data.

clear : i_output,

i_join,

i_mbew,

i_a004,

i_pgmi.

refresh : i_output,

i_join,

i_mbew,

i_a004,

i_pgmi.

ENDFORM. " clear_data

----


  • FORM USER_COMMAND *

----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield. "#EC CALLED

CASE R_UCOMM.

WHEN '&IC1'.

read table i_output index rs_selfield-tabindex.

SET PARAMETER ID 'MAT' FIELD i_output-matnr.

SET PARAMETER ID 'WRK' FIELD p_werks.

if not i_output-matnr is initial.

call transaction 'MD04' and skip first screen.

endif.

ENDCASE.

ENDFORM.

Thanks

Seshu

raymond_giuseppi
Active Contributor
0 Kudos

Try something like

  LOOP AT truma_tab ASSIGNING <fs_truma>.
    READ TABLE zefi_tab ASSIGNING <fs_zefi> INDEX sy-index.
    IF sy-subrc = 0.
      DO 12 TIMES
        VARYING w1 FROM wa_per_tab-month1 NEXT wa_per_tab-month2
        VARYING w2 FROM <fs_truma>-month1 NEXT <fs_truma>-month2
        VARYING w3 FROM <fs_zefi>-month1 NEXT <fs_zefi>-month2.
        IF w3 <> 0.
          w1 = w2 / w3.
        ENDIF.
      ENDDO
      append wa_per_tab to per_tab.
    ENDIF.
  ENDLOOP.

Regards