Application Development and Automation 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: 
Read only

urgent

Former Member
0 Likes
522

Hi, i copied MB5B transaction. i added 2 new fields in G_S_TOTALS_FLAT are

VALUE1 and VALUE2. Now i have to calculate a value, which i am attaching..

-


*

  • create_table_totals_flat

----


FORM CREATE_TABLE_TOTALS_FLAT.

**new changes by Dhanunjay**

DATA: W_VAL11 TYPE P LENGTH 10 DECIMALS 2.

DATA: W_VALUE1 TYPE P LENGTH 10 DECIMALS 5,

W_VALUE2 TYPE P LENGTH 10 DECIMALS 2,

W_VALUE3 TYPE P LENGTH 10 DECIMALS 2.

*******To display NMS********

IF NMS = 'X'.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

REFRESH G_T_COLOR.

CLEAR : W_VALUE1,

W_VALUE2,

W_VALUE3.

IF BESTAND-ANFWERT = 0.

W_VALUE2 = 1.

ELSE.

W_VALUE2 = BESTAND-ANFWERT.

ENDIF.

W_VALUE3 = BESTAND-HABENWERT.

*****Check W_VALUE1, it is showing wrong result here***

W_VALUE1 = ( W_VALUE3 / W_VALUE2 ) .

IF W_VALUE1 <= 0.

MOVE W_VALUE1 TO G_S_TOTALS_FLAT-VALUE1.

****and when assigned to G_S_TOTALS_FLAT the original value is not showing***

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDIF.

ENDLOOP.

*****To display SMS***********

ELSEIF SMS = 'X'.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

REFRESH G_T_COLOR.

CLEAR : W_VALUE1,

W_VALUE2,

W_VALUE3.

IF BESTAND-ANFWERT = 0.

W_VALUE2 = 1.

ELSE.

W_VALUE2 = BESTAND-ANFWERT.

ENDIF.

W_VALUE3 = BESTAND-HABENWERT.

*****Check W_VALUE1, it is showing wrong result here***

W_VALUE1 = ( W_VALUE3 / W_VALUE2 ) .

IF W_VALUE1 > 0 AND W_VALUE1 < 20.

****and when assigned to G_S_TOTALS_FLAT the original value is not showing***

MOVE W_VALUE1 TO G_S_TOTALS_FLAT-VALUE1.

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDIF.

ENDLOOP.

*CALCULATE.

******to Display FMS********

ELSEIF FMS = 'X'.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

REFRESH G_T_COLOR.

CLEAR : W_VALUE1,

W_VALUE2,

W_VALUE3.

IF BESTAND-ANFWERT = 0.

W_VALUE2 = 1.

ELSE.

W_VALUE2 = BESTAND-ANFWERT.

ENDIF.

W_VALUE3 = BESTAND-HABENWERT.

*****Check W_VALUE1, it is showing wrong result here***

W_VALUE1 = ( W_VALUE3 / W_VALUE2 ) .

IF W_VALUE1 >= 20.

****and when assigned to G_S_TOTALS_FLAT the original value is not showing***

MOVE W_VALUE1 TO G_S_TOTALS_FLAT-VALUE1.

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDIF.

ENDLOOP.

******to display all values**********

ELSE.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDLOOP.

ENDIF.

ENDFORM. "CREATE_TABLE_TOTALS_FLAT

&----


*& Form MOMENT

&----


  • text

----


FORM MOMENT.

  • create output table G-T-totals_flat

MOVE SOBKZ TO G_S_TOTALS_FLAT-SOBKZ.

PERFORM F2100_MAT_TEXT USING BESTAND-MATNR.

  • show the GI with negative sign

G_S_TOTALS_FLAT-HABEN = G_S_TOTALS_FLAT-HABEN * -1.

MOVE : G_S_MAKT-MAKTX TO G_S_TOTALS_FLAT-MAKTX,

DATUM-LOW TO G_S_TOTALS_FLAT-START_DATE,

DATUM-HIGH TO G_S_TOTALS_FLAT-END_DATE.

PERFORM COLORIZE_TOTALS_FLAT USING 'ANFMENGE'.

PERFORM COLORIZE_TOTALS_FLAT USING 'SOLL'.

PERFORM COLORIZE_TOTALS_FLAT USING 'HABEN'.

PERFORM COLORIZE_TOTALS_FLAT USING 'ENDMENGE'.

IF BWBST = 'X'.

G_S_TOTALS_FLAT-HABENWERT = G_S_TOTALS_FLAT-HABENWERT * -1.

PERFORM COLORIZE_TOTALS_FLAT USING 'ANFWERT'.

PERFORM COLORIZE_TOTALS_FLAT USING 'SOLLWERT'.

PERFORM COLORIZE_TOTALS_FLAT USING 'HABENWERT'.

PERFORM COLORIZE_TOTALS_FLAT USING 'ENDWERT'.

ENDIF.

IF G_T_COLOR[] IS INITIAL.

CLEAR G_S_TOTALS_FLAT-COLOR.

ELSE.

MOVE G_T_COLOR[] TO G_S_TOTALS_FLAT-COLOR.

ENDIF.

  • get the name of this plant "n999530

PERFORM F2200_READ_T001 USING G_S_TOTALS_FLAT-WERKS. "n999530

MOVE T001W-NAME1 TO G_S_TOTALS_FLAT-NAME1. "n999530

APPEND G_S_TOTALS_FLAT TO G_T_TOTALS_FLAT.

ENDFORM. " create_table_totals_flat

But I am not getting the values of Value1 where i am displaying..

plz send suggestiongs..

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
475

Hi Dhanunjay

I think u didnot check the 'Fixed point arithmetic' checkbox in the Program attributes....it is only because of this that u get wrong results in arithmetic operations with PACKED numbers...

Hence, just select that checkbox in the attributes.

Reward points if useful

Regards

Hi, i copied MB5B transaction. i added 2 new fields in G_S_TOTALS_FLAT are

VALUE1 and VALUE2. Now i have to calculate a value, which i am attaching..

-


*

  • create_table_totals_flat

----


FORM CREATE_TABLE_TOTALS_FLAT.

**new changes by Dhanunjay**

DATA: W_VAL11 TYPE P LENGTH 10 DECIMALS 2.

DATA: W_VALUE1 TYPE P LENGTH 10 DECIMALS 5,

W_VALUE2 TYPE P LENGTH 10 DECIMALS 2,

W_VALUE3 TYPE P LENGTH 10 DECIMALS 2.

*******To display NMS********

IF NMS = 'X'.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

REFRESH G_T_COLOR.

CLEAR : W_VALUE1,

W_VALUE2,

W_VALUE3.

IF BESTAND-ANFWERT = 0.

W_VALUE2 = 1.

ELSE.

W_VALUE2 = BESTAND-ANFWERT.

ENDIF.

W_VALUE3 = BESTAND-HABENWERT.

*****Check W_VALUE1, it is showing wrong result here***

W_VALUE1 = ( W_VALUE3 / W_VALUE2 ) .

IF W_VALUE1 <= 0.

MOVE W_VALUE1 TO G_S_TOTALS_FLAT-VALUE1.

****and when assigned to G_S_TOTALS_FLAT the original value is not showing***

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDIF.

ENDLOOP.

*****To display SMS***********

ELSEIF SMS = 'X'.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

REFRESH G_T_COLOR.

CLEAR : W_VALUE1,

W_VALUE2,

W_VALUE3.

IF BESTAND-ANFWERT = 0.

W_VALUE2 = 1.

ELSE.

W_VALUE2 = BESTAND-ANFWERT.

ENDIF.

W_VALUE3 = BESTAND-HABENWERT.

*****Check W_VALUE1, it is showing wrong result here***

W_VALUE1 = ( W_VALUE3 / W_VALUE2 ) .

IF W_VALUE1 > 0 AND W_VALUE1 < 20.

****and when assigned to G_S_TOTALS_FLAT the original value is not showing***

MOVE W_VALUE1 TO G_S_TOTALS_FLAT-VALUE1.

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDIF.

ENDLOOP.

*CALCULATE.

******to Display FMS********

ELSEIF FMS = 'X'.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

REFRESH G_T_COLOR.

CLEAR : W_VALUE1,

W_VALUE2,

W_VALUE3.

IF BESTAND-ANFWERT = 0.

W_VALUE2 = 1.

ELSE.

W_VALUE2 = BESTAND-ANFWERT.

ENDIF.

W_VALUE3 = BESTAND-HABENWERT.

*****Check W_VALUE1, it is showing wrong result here***

W_VALUE1 = ( W_VALUE3 / W_VALUE2 ) .

IF W_VALUE1 >= 20.

****and when assigned to G_S_TOTALS_FLAT the original value is not showing***

MOVE W_VALUE1 TO G_S_TOTALS_FLAT-VALUE1.

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDIF.

ENDLOOP.

******to display all values**********

ELSE.

CLEAR G_S_TOTALS_FLAT.

CLEAR G_T_TOTALS_FLAT.

LOOP AT BESTAND.

MOVE-CORRESPONDING BESTAND TO G_S_TOTALS_FLAT.

PERFORM MOMENT.

ENDLOOP.

ENDIF.

ENDFORM. "CREATE_TABLE_TOTALS_FLAT

&----


*& Form MOMENT

&----


  • text

----


FORM MOMENT.

  • create output table G-T-totals_flat

MOVE SOBKZ TO G_S_TOTALS_FLAT-SOBKZ.

PERFORM F2100_MAT_TEXT USING BESTAND-MATNR.

  • show the GI with negative sign

G_S_TOTALS_FLAT-HABEN = G_S_TOTALS_FLAT-HABEN * -1.

MOVE : G_S_MAKT-MAKTX TO G_S_TOTALS_FLAT-MAKTX,

DATUM-LOW TO G_S_TOTALS_FLAT-START_DATE,

DATUM-HIGH TO G_S_TOTALS_FLAT-END_DATE.

PERFORM COLORIZE_TOTALS_FLAT USING 'ANFMENGE'.

PERFORM COLORIZE_TOTALS_FLAT USING 'SOLL'.

PERFORM COLORIZE_TOTALS_FLAT USING 'HABEN'.

PERFORM COLORIZE_TOTALS_FLAT USING 'ENDMENGE'.

IF BWBST = 'X'.

G_S_TOTALS_FLAT-HABENWERT = G_S_TOTALS_FLAT-HABENWERT * -1.

PERFORM COLORIZE_TOTALS_FLAT USING 'ANFWERT'.

PERFORM COLORIZE_TOTALS_FLAT USING 'SOLLWERT'.

PERFORM COLORIZE_TOTALS_FLAT USING 'HABENWERT'.

PERFORM COLORIZE_TOTALS_FLAT USING 'ENDWERT'.

ENDIF.

IF G_T_COLOR[] IS INITIAL.

CLEAR G_S_TOTALS_FLAT-COLOR.

ELSE.

MOVE G_T_COLOR[] TO G_S_TOTALS_FLAT-COLOR.

ENDIF.

  • get the name of this plant "n999530

PERFORM F2200_READ_T001 USING G_S_TOTALS_FLAT-WERKS. "n999530

MOVE T001W-NAME1 TO G_S_TOTALS_FLAT-NAME1. "n999530

APPEND G_S_TOTALS_FLAT TO G_T_TOTALS_FLAT.

ENDFORM. " create_table_totals_flat

But I am not getting the values of Value1 where i am displaying..

plz send suggestiongs..

3 REPLIES 3
Read only

Former Member
0 Likes
476

Hi Dhanunjay

I think u didnot check the 'Fixed point arithmetic' checkbox in the Program attributes....it is only because of this that u get wrong results in arithmetic operations with PACKED numbers...

Hence, just select that checkbox in the attributes.

Reward points if useful

Regards

Read only

0 Likes
475

Hi, Thank you, Because of your suggestion i got result.

Thank you.

Regards,

Dhanunjay

Read only

0 Likes
475

You are most welcome friend