If we use field symbol rather than normal work area then the value of the table remains unchanged. It means it doesn't convert into *** and zero into the corresponding fields.
TABLES ekpo.
FIELD-SYMBOLS: <it_ekpo> TYPE STANDARD TABLE.
INITIALIZATION.
SELECT-OPTIONS s_ebeln FOR ekpo-ebeln.
CLASS pur DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF ts_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
txz01 TYPE ekpo-txz01,
ktmng TYPE ekpo-ktmng,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF ts_ekpo.
DATA dref TYPE REF TO data.
METHODS: ekpo, output.
ENDCLASS.
CLASS pur IMPLEMENTATION.
METHOD ekpo.
CREATE DATA dref TYPE TABLE OF ts_ekpo.
ASSIGN dref->* TO <it_ekpo>.
SELECT ebeln ebelp txz01
ktmng meins netpr peinh
FROM ekpo INTO TABLE <it_ekpo>
WHERE ebeln IN s_ebeln.
ENDMETHOD.
METHOD output.
FIELD-SYMBOLS: <wa_ekpo> TYPE ts_ekpo,
<flag> TYPE char1,
<subtot> TYPE any,
<subprice> TYPE any,
<grandtot> TYPE any,
<grandpr> TYPE any.
IF <it_ekpo> IS ASSIGNED.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <subtot>.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <grandtot>.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <subprice>.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <grandpr>.
CREATE DATA dref TYPE char1.
ASSIGN dref->* TO <flag>.
LOOP AT <it_ekpo> ASSIGNING <wa_ekpo>.
AT NEW ('EBELN').
<flag> = 'X'.
ENDAT.
IF <flag> = 'X'.
WRITE: / <wa_ekpo>-ebeln,
12 <wa_ekpo>-ebelp,
20 <wa_ekpo>-txz01,
45 <wa_ekpo>-ktmng,
60 <wa_ekpo>-meins,
65 <wa_ekpo>-netpr,
80 <wa_ekpo>-peinh.
ELSE.
WRITE: /12 <wa_ekpo>-ebelp,
20 <wa_ekpo>-txz01,
45 <wa_ekpo>-ktmng,
60 <wa_ekpo>-meins,
65 <wa_ekpo>-netpr,
80 <wa_ekpo>-peinh.
ENDIF.
<subtot> = <subtot> + <wa_ekpo>-ktmng.
<grandtot> = <grandtot> + <wa_ekpo>-ktmng.
<subprice> = <subprice> + <wa_ekpo>-netpr.
<grandpr> = <grandpr> + <wa_ekpo>-netpr.
AT END OF ('EBELN').
WRITE: / '==================================================',
/ 'Subtotal',
50 <subtot>,
70 <subprice>.
CLEAR: <subtot>, <subprice>.
ENDAT.
AT LAST.
ULINE.
WRITE: / 'Grand Total',
50 <grandtot>,
70 <grandpr>.
ENDAT.
CLEAR <flag>.
ENDLOOP.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA po TYPE REF TO pur.
CREATE OBJECT po.
CALL METHOD: po->ekpo,
po->output.
FIELD-SYMBOLS: <it_ekpo> TYPE STANDARD TABLE.
INITIALIZATION.
SELECT-OPTIONS s_ebeln FOR ekpo-ebeln.
CLASS pur DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF ts_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
txz01 TYPE ekpo-txz01,
ktmng TYPE ekpo-ktmng,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF ts_ekpo.
DATA dref TYPE REF TO data.
METHODS: ekpo, output.
ENDCLASS.
CLASS pur IMPLEMENTATION.
METHOD ekpo.
CREATE DATA dref TYPE TABLE OF ts_ekpo.
ASSIGN dref->* TO <it_ekpo>.
SELECT ebeln ebelp txz01
ktmng meins netpr peinh
FROM ekpo INTO TABLE <it_ekpo>
WHERE ebeln IN s_ebeln.
ENDMETHOD.
METHOD output.
FIELD-SYMBOLS: <wa_ekpo> TYPE ts_ekpo,
<flag> TYPE char1,
<subtot> TYPE any,
<subprice> TYPE any,
<grandtot> TYPE any,
<grandpr> TYPE any.
IF <it_ekpo> IS ASSIGNED.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <subtot>.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <grandtot>.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <subprice>.
CREATE DATA dref TYPE p DECIMALS 2.
ASSIGN dref->* TO <grandpr>.
CREATE DATA dref TYPE char1.
ASSIGN dref->* TO <flag>.
LOOP AT <it_ekpo> ASSIGNING <wa_ekpo>.
AT NEW ('EBELN').
<flag> = 'X'.
ENDAT.
IF <flag> = 'X'.
WRITE: / <wa_ekpo>-ebeln,
12 <wa_ekpo>-ebelp,
20 <wa_ekpo>-txz01,
45 <wa_ekpo>-ktmng,
60 <wa_ekpo>-meins,
65 <wa_ekpo>-netpr,
80 <wa_ekpo>-peinh.
ELSE.
WRITE: /12 <wa_ekpo>-ebelp,
20 <wa_ekpo>-txz01,
45 <wa_ekpo>-ktmng,
60 <wa_ekpo>-meins,
65 <wa_ekpo>-netpr,
80 <wa_ekpo>-peinh.
ENDIF.
<subtot> = <subtot> + <wa_ekpo>-ktmng.
<grandtot> = <grandtot> + <wa_ekpo>-ktmng.
<subprice> = <subprice> + <wa_ekpo>-netpr.
<grandpr> = <grandpr> + <wa_ekpo>-netpr.
AT END OF ('EBELN').
WRITE: / '==================================================',
/ 'Subtotal',
50 <subtot>,
70 <subprice>.
CLEAR: <subtot>, <subprice>.
ENDAT.
AT LAST.
ULINE.
WRITE: / 'Grand Total',
50 <grandtot>,
70 <grandpr>.
ENDAT.
CLEAR <flag>.
ENDLOOP.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA po TYPE REF TO pur.
CREATE OBJECT po.
CALL METHOD: po->ekpo,
po->output.
No comments:
Post a Comment