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: 

ALV Report

vk91
Explorer
0 Kudos

Hello all, I'm trying to convert numeric value into word for which have used CALL FUNCTION 'SPELL_AMOUNT'. Here I'm trying to fetch value of NETPR and pass it to hdr9, but not getting any data like other fields. Kindly look into the program and please point out where i'm going wrong. New to ABAP and still learing every day.

Thanks

*&---------------------------------------------------------------------*
*& Report ZPRACTICE_ALV_004
*&---------------------------------------------------------------------*
*&
*
*
*
*&---------------------------------------------------------------------*
REPORT ZPRACTICE_ALV_004.

TYPE-POOLS: SLIS.

TABLES: EKKO,
EKPO,
LFA1.
* Type declaration for db, transparent table "ekko"
TYPES: BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN,
BSART TYPE EKKO-BSART,
BSTYP TYPE EKKO-BSTYP,
AEDAT TYPE EKKO-AEDAT,
ERNAM TYPE EKKO-ERNAM,
LIFNR TYPE EKKO-LIFNR,
KUNNR TYPE EKKO-KUNNR,
END OF TY_EKKO,

* Types declaration for table "ekpo"
BEGIN OF TY_EKPO,
EBELN TYPE EKPO-EBELN,
TXZ01 TYPE EKPO-TXZ01,
MATNR TYPE EKPO-MATNR,
MENGE TYPE EKPO-MENGE,
MEINS TYPE EKPO-MEINS,
NETPR TYPE EKPO-NETPR,
KUNNR TYPE EKPO-KUNNR,
END OF TY_EKPO,

BEGIN OF TY_LFA1,
LIFNR TYPE LFA1-LIFNR,
MANDT TYPE LFA1-MANDT,
NAME1 TYPE LFA1-NAME1,
NAME2 TYPE LFA1-NAME2,
ERNAM TYPE LFA1-ERNAM,
KUNNR TYPE LFA1-KUNNR,
END OF TY_LFA1,

* Types declaration for final table "ty_fnl"
BEGIN OF TY_FNL,
SEL,
EBELN TYPE EKKO-EBELN,
BSART TYPE EKKO-BSART,
AEDAT TYPE EKKO-AEDAT,
ERNAM TYPE EKKO-ERNAM,
LIFNR TYPE EKKO-LIFNR,
TXZ01 TYPE EKPO-TXZ01,
MATNR TYPE EKPO-MATNR,
MENGE TYPE EKPO-MENGE,
MEINS TYPE EKPO-MEINS,
NETPR TYPE EKPO-NETPR,
MANDT TYPE LFA1-MANDT,
NAME1 TYPE LFA1-NAME1,
NAME2 TYPE LFA1-NAME2,
KUNNR TYPE LFA1-KUNNR,
END OF TY_FNL.

TYPES: BEGIN OF TY_HDR,
EBELN TYPE EKKO-EBELN,
LIFNR TYPE EKKO-LIFNR,
TXZ01 TYPE EKPO-TXZ01,
MATNR TYPE EKPO-MATNR,
NETPR TYPE EKPO-NETPR, "Net Amount
MANDT TYPE LFA1-MANDT,
NAME1 TYPE LFA1-NAME1,
DATE(10) TYPE C,
TIME(10) TYPE C,
END OF TY_HDR.

DATA: WA_HDR TYPE TY_HDR,
TB1 TYPE SDYDO_TEXT_TABLE,
TB2 TYPE SDYDO_TEXT_TABLE,
TB3 TYPE SDYDO_TEXT_TABLE,
TB4 TYPE SDYDO_TEXT_TABLE,
TB5 TYPE SDYDO_TEXT_TABLE,
TB6 TYPE SDYDO_TEXT_TABLE,
TB7 TYPE SDYDO_TEXT_TABLE,
TB8 TYPE SDYDO_TEXT_TABLE,
TB9 TYPE SDYDO_TEXT_TABLE, "Header field to store Net Amount in words
TEXT TYPE STRING.
* Data declaration for table types
DATA: IT_EKKO TYPE STANDARD TABLE OF TY_EKKO WITH HEADER LINE,
WA_EKKO TYPE TY_EKKO,

IT_EKPO TYPE STANDARD TABLE OF TY_EKPO WITH HEADER LINE, "When standard not implicitly not mentioned, SAP system automatically assigns it as a standard table
WA_EKPO TYPE TY_EKPO,

IT_LFA1 TYPE STANDARD TABLE OF TY_LFA1 WITH HEADER LINE,
WA_LFA1 TYPE TY_LFA1,

IT_FNL TYPE STANDARD TABLE OF TY_FNL WITH HEADER LINE,
WA_FNL TYPE TY_FNL.

* Data declarartion for internal table and work area
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV, "with header line,
WA_FCAT TYPE SLIS_FIELDCAT_ALV.

DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: CNT TYPE I VALUE 0.

DATA: in_words type spell,
lv_aw type char100.


SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: SO_EBELN FOR EKKO-EBELN NO INTERVALS NO-EXTENSION,
SO_KUNNR FOR LFA1-KUNNR NO INTERVALS NO-EXTENSION.
* SO_BSART FOR EKKO-BSART,
* SO_AEDAT FOR EKKO-AEDAT,
* SO_ERNAM FOR EKKO-ERNAM.

SELECTION-SCREEN END OF BLOCK BK1.

START-OF-SELECTION.
PERFORM FETCH_DATA.
PERFORM BUILD_FCAT.
PERFORM DISPLAY_ALV.

*&---------------------------------------------------------------------*
*& Form FETCH_DATA
*&---------------------------------------------------------------------*
* Here using INNER-JOIN

FORM FETCH_DATA.

SELECT A~EBELN
A~BSART
A~AEDAT
A~ERNAM
A~LIFNR
* a~kunnr

B~TXZ01
B~MATNR
B~MENGE
B~MEINS
B~NETPR

FROM EKKO AS A
INNER JOIN EKPO AS B
ON A~EBELN = B~EBELN
INTO CORRESPONDING FIELDS OF TABLE IT_FNL
WHERE A~EBELN IN SO_EBELN
AND A~KUNNR IN SO_KUNNR.

IF IT_FNL[] IS NOT INITIAL.
SELECT
LIFNR
MANDT
NAME1
NAME2
ERNAM
KUNNR
FROM LFA1
INTO CORRESPONDING FIELDS OF TABLE IT_LFA1
FOR ALL ENTRIES IN IT_FNL
WHERE LIFNR = IT_FNL-LIFNR. "nda kunnr in so_kunnr
ENDIF.
LOOP AT IT_FNL INTO WA_FNL.
READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY LIFNR = WA_FNL-LIFNR.
IF SY-SUBRC = 0.
WA_FNL-LIFNR = WA_LFA1-LIFNR.
WA_FNL-MANDT = WA_LFA1-MANDT.
WA_FNL-NAME1 = WA_LFA1-NAME1.
WA_FNL-NAME2 = WA_LFA1-NAME2.
WA_FNL-ERNAM = WA_LFA1-ERNAM.
WA_FNL-KUNNR = WA_LFA1-KUNNR.
ENDIF.
MODIFY IT_FNL FROM WA_FNL TRANSPORTING MANDT NAME1 NAME2 ERNAM.
ENDLOOP.


* TO PRINT DATA IN HEADER

* From ekko
SELECT SINGLE EBELN
LIFNR
FROM EKKO INTO corresponding fields of WA_HDR
WHERE EBELN IN SO_EBELN.

* From ekpo
IF WA_HDR IS NOT INITIAL.
SELECT SINGLE TXZ01
MATNR
NETPR
FROM EKPO INTO ( WA_HDR-TXZ01, WA_HDR-MATNR, WA_HDR-NETPR )
WHERE EBELN = WA_HDR-EBELN.

ENDIF.

* From lfa1
IF WA_HDR IS NOT INITIAL.
SELECT SINGLE MANDT
NAME1
FROM LFA1 INTO ( WA_HDR-MANDT, WA_HDR-NAME1 )
WHERE LIFNR = WA_HDR-LIFNR.
ENDIF.

* Date
CONCATENATE SY-DATUM+6(2) '/' SY-DATUM+2(2) '/' SY-DATUM+4(2) INTO WA_HDR-DATE.

* Time
CONCATENATE SY-UZEIT+0(2) ':' SY-UZEIT+2(2) ':' SY-UZEIT+4(2) INTO WA_HDR-TIME.
ENDFORM.


* Amount
FORM CONVERSION.

CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT = wa_hdr-NETPR
* CURRENCY = ''
* LANGUAGE = 'SY-LANGU'
IMPORTING
IN_WORDS = IN_WORDS
exceptions
not_found = 1
too_large = 2
others = 3.
if sy-subrc <> 0.
endif.

concatenate in_words-word 'Rupees' in_words-decword 'and paise only' into lv_aw separated by space.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form FIELD_FACT
*&---------------------------------------------------------------------*

FORM BUILD_FCAT.

WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-BOX_FIELDNAME = 'SEL'.
WA_LAYOUT-ZEBRA = 'X'.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'EBELN'.
WA_FCAT-SELTEXT_M = 'EKKO-EBELN'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'aedat'.
WA_FCAT-SELTEXT_M = 'Created_on'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'ernam'.
WA_FCAT-SELTEXT_M = 'Craeted_by'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'lifnr'.
WA_FCAT-SELTEXT_M = 'Vendor'.
WA_FCAT-NO_ZERO = 'X'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'txz01'.
WA_FCAT-SELTEXT_M = 'Short-Txt'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'matnr'.
WA_FCAT-SELTEXT_M = 'Mtrl_No.'.
WA_FCAT-NO_ZERO = 'X'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'menge'.
WA_FCAT-SELTEXT_L = 'Pur. Ordr. Qlty'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'netpr'.
WA_FCAT-SELTEXT_M = 'Net Price'.
WA_FCAT-DO_SUM = 'X'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'mandt'.
WA_FCAT-SELTEXT_M = 'Client'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'name1'.
WA_FCAT-SELTEXT_M = 'Name1'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'name2'.
WA_FCAT-SELTEXT_M = 'Name2'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CNT = CNT + 1.
WA_FCAT-FIELDNAME = 'KUNNR'.
WA_FCAT-SELTEXT_M = 'Cust. No.'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*

FORM DISPLAY_ALV.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FCAT
I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP'
IS_LAYOUT = WA_LAYOUT
TABLES
T_OUTTAB = IT_FNL.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM.

FORM HTML_TOP USING DOC TYPE REF TO CL_DD_DOCUMENT.

* Date
APPEND WA_HDR-DATE TO TB1.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'Date:'
TEXT_TABLE = TB1.
CLEAR: WA_HDR-DATE.

CALL METHOD DOC->UNDERLINE.

* Time
APPEND WA_HDR-TIME TO TB2.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'Time:'
TEXT_TABLE = TB2.

CALL METHOD DOC->UNDERLINE.

* Concatenate ebeln & lifnr
CONCATENATE WA_HDR-EBELN ' / ' WA_HDR-LIFNR INTO TEXT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
APPEND TEXT TO TB3.
CLEAR TEXT.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'DOCUMENT-VENDOR: '
TEXT_TABLE = TB3.

CALL METHOD DOC->UNDERLINE.

APPEND WA_HDR-TXZ01 TO TB4.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'Short-Text: '
TEXT_TABLE = TB4.

CALL METHOD DOC->UNDERLINE.

APPEND WA_HDR-MATNR TO TB5.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'Material No: '
TEXT_TABLE = TB5.

CALL METHOD DOC->UNDERLINE.

APPEND WA_HDR-MANDT TO TB6.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'Client: '
TEXT_TABLE = TB6.

CALL METHOD DOC->UNDERLINE.

APPEND WA_HDR-NAME1 TO TB7.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'Name: '
TEXT_TABLE = TB7.

CALL METHOD DOC->UNDERLINE.

APPEND lv_aw TO TB9.
CALL METHOD DOC->ADD_TEXT
EXPORTING
TEXT = 'Amount: '
TEXT_TABLE = TB9.

CALL METHOD DOC->UNDERLINE.

ENDFORM.

1 REPLY 1

martinlitalin
Advisor
Advisor
0 Kudos

Hello Vikas,

your question is appreciated but this Community site's focus is SAP Document and Reporting Compliance, not on basic ABAP coding. If you require assistance please contact the SAP Account Team, specifically the Service Account Manager to explore how the implementation can get supported. Thank you.

Alternatively feel free to contact me directly if needed - martin.lin@sap.com

Best regards,

Martin