Skip to Content
0
Former Member
Apr 20, 2010 at 09:31 AM

ALV output converted into PDF format and send that PDF to user through mail

409 Views

Hi Experts,

I have report earlier its output was in alv grid.

Now i want that ALV output converted into PDF format.And that PDF output send to user through mail.

Can u please tell how to do?

My code is here(output is displaying in ALV grid).

INCLUDE <icon>.

TYPE-POOLS: slis, kkblo.

TABLES : zmsd_freight_hdr, zmsd_freight_det, zmsd_blinfo, zmsd_diheader.

TABLES : lfa1.

DATA : t_hdr LIKE zmsd_freight_hdr OCCURS 0 WITH HEADER LINE,

T_DET LIKE ZMSD_FREIGHT_DET OCCURS 0 WITH HEADER LINE,

t_bl LIKE zmsd_blinfo OCCURS 0 WITH HEADER LINE,

t_di LIKE zmsd_diheader OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF t_det OCCURS 0.

INCLUDE STRUCTURE zmsd_freight_det.

DATA type(30).

DATA: END OF t_det.

DATA: v_target2(30),

v_zsammg LIKE t_det-zsammg,

v_gsttotal LIKE t_det-zamount.

DATA : BEGIN OF t_data OCCURS 0,

zsammg LIKE zmsd_freight_hdr-zsammg,

zdidbl LIKE zmsd_freight_hdr-zdidbl,

zvkorg LIKE zmsd_freight_hdr-zvkorg,

zinvno LIKE zmsd_freight_hdr-zinvno,

zttlamt LIKE zmsd_freight_hdr-zttlamt,

zstatus LIKE zmsd_freight_hdr-zstatus,

ztype LIKE zmsd_freight_hdr-ztype,

zconfirm LIKE zmsd_freight_hdr-zconfirm,

zconfirmdate LIKE zmsd_freight_hdr-zconfirmdate,

erdat LIKE zmsd_freight_hdr-erdat,

ernam LIKE zmsd_freight_hdr-ernam,

erzet LIKE zmsd_freight_hdr-erzet,

aedat(10),

aenam LIKE zmsd_freight_hdr-aenam,

aezet LIKE zmsd_freight_hdr-aezet,

zline LIKE zmsd_freight_det-zline,

zfptype LIKE zmsd_freight_det-zfptype,

zchrcode LIKE zmsd_freight_det-zchrcode,

zcurcode LIKE zmsd_freight_det-zcurcode,

zqty LIKE zmsd_freight_det-zqty,

zuom LIKE zmsd_freight_det-zuom,

zrate LIKE zmsd_freight_det-zrate,

zamount LIKE zmsd_freight_det-zamount,

zexrate LIKE zmsd_freight_det-zexrate,

  • zccode LIKE zmsd_blinfo-zccode, "MADK991565

zccode like ZMSD_FREIGHT_HDR-zfcode, "MADK991565

zbldate(10),

zbl LIKE zmsd_blinfo-zbl,

type(3),

waerk LIKE zmsd_freight_det-zcurcode,

zamountl LIKE zmsd_freight_det-zamount,

END OF t_data.

DATA : w_layout TYPE slis_layout_alv,

w_catalog TYPE slis_fieldcat_alv,

t_catalog TYPE slis_t_fieldcat_alv,

w_sort TYPE slis_sortinfo_alv,

t_sort TYPE slis_t_sortinfo_alv.

DATA V_ZINVNO like T_HDR-ZINVNO. "MADK991565

DATA : v_count TYPE i.

SELECTION-SCREEN BEGIN OF BLOCK a0 WITH FRAME TITLE text-001.

PARAMETERS : p_zvkorg LIKE zmsd_freight_hdr-zvkorg OBLIGATORY .

SELECT-OPTIONS : s_zdidbl FOR zmsd_freight_hdr-zdidbl ,

s_zccode FOR lfa1-lifnr ,

s_status FOR zmsd_freight_hdr-zstatus ,

s_ztype FOR zmsd_freight_hdr-ztype ,

s_erdat FOR zmsd_freight_hdr-erdat ,

s_ernam FOR zmsd_freight_hdr-ernam ,

s_zconfd FOR zmsd_freight_hdr-zconfirmdate .

PARAMETERS : p_zconf AS CHECKBOX .

SELECTION-SCREEN END OF BLOCK a0.

SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-002.

PARAMETERS : p_hdr RADIOBUTTON GROUP rad DEFAULT 'X' ,

p_det RADIOBUTTON GROUP rad .

SELECTION-SCREEN END OF BLOCK a1.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.

PERFORM get_data.

PERFORM process.

PERFORM display.

END-OF-SELECTION.

PERFORM fm_get_num_pages.

AT USER-COMMAND.

AT LINE-SELECTION.

TOP-OF-PAGE.

PERFORM fm_top_of_page USING '7010' sy-title space.

FORM get_data.

SELECT *

FROM zmsd_freight_hdr

INTO TABLE t_hdr

WHERE zvkorg EQ p_zvkorg

AND zdidbl IN s_zdidbl

AND zstatus IN s_status

AND ztype IN s_ztype

AND erdat IN s_erdat

AND ernam IN s_ernam

AND zconfirmdate IN s_zconfd

AND ZFCODE IN S_ZCCODE. "MADK991565

IF p_zconf = 'X'.

DELETE t_hdr WHERE zconfirm NE 'C'.

ENDIF.

CHECK NOT t_hdr[] IS INITIAL.

SELECT *

FROM zmsd_blinfo

INTO TABLE t_bl

FOR ALL ENTRIES IN t_hdr

WHERE zsammg = t_hdr-zsammg.

SORT t_bl BY zsammg.

SELECT *

FROM zmsd_diheader

INTO TABLE t_di

FOR ALL ENTRIES IN t_hdr

WHERE zsammg = t_hdr-zsammg.

SORT t_di BY zsammg.

  • IF P_DET = 'X'. "MADK933361

SELECT *

FROM zmsd_freight_det

INTO TABLE t_det

FOR ALL ENTRIES IN t_hdr

WHERE zsammg = t_hdr-zsammg

AND ZINVNO = T_HDR-ZINVNO . "MADK991565

  • SORT t_det BY zsammg zline. "MADK991565

SORT T_DET BY ZSAMMG ZINVNO ZLINE. "MADK991565

  • ENDIF. "MADK933361

ENDFORM.

FORM process.

REFRESH t_data.

CLEAR v_gsttotal. "MADK933361

LOOP AT t_hdr.

  • Start of MADK933361

CLEAR: v_target2.

v_zsammg = t_hdr-zsammg.

V_ZINVNO = T_HDR-ZINVNO. "MADK991565

  • AT NEW zsammg. "MADK991565

AT NEW ZINVNO. "MADK991565

PERFORM get_gst_value.

ENDAT.

  • End of MADK933361

PERFORM move_header.

CHECK t_data-zccode IN s_zccode.

IF p_det = 'X'.

  • CSF Project Changes Starts DEV34 MADK985782

  • LOOP AT T_DET WHERE ZSAMMG = T_HDR-ZSAMMG..

  • LOOP AT t_det WHERE zsammg = t_hdr-zsammg AND

    zinvno = t_hdr-zinvno.

    • CSF Project Changes Ends DEV34 MADK985782

    PERFORM move_header.

    CHECK t_data-zccode IN s_zccode.

    MOVE-CORRESPONDING t_det TO t_data.

    t_data-zamountl = t_data-zamount * t_data-zexrate.

    APPEND t_data.

    CLEAR t_data.

    ENDLOOP.

    ELSE.

    APPEND t_data.

    CLEAR t_data.

    ENDIF.

    AT END OF zsammg.

    CLEAR v_gsttotal.

    ENDAT.

    *Start of changes for IS090901289-PIA MADK991565

    AT END OF ZINVNO.

    CLEAR V_GSTTOTAL.

    ENDAT.

    *End of changes for IS090901289-PIA MADK991565

    ENDLOOP.

    ENDFORM.

    FORM move_header.

    MOVE-CORRESPONDING t_hdr TO t_data.

    t_data-zttlamt = t_data-zttlamt + v_gsttotal. "MADK933361

    t_data-waerk = 'SGD'.

    IF NOT t_hdr-aedat IS INITIAL.

    WRITE: t_hdr-aedat TO t_data-aedat.

    ELSE.

    CLEAR : t_data-aedat.

    ENDIF.

    READ TABLE t_bl WITH KEY zsammg = t_hdr-zsammg BINARY SEARCH.

    IF sy-subrc EQ 0.

    • t_data-zccode = t_bl-zccode. "MADK991565

    T_DATA-ZCCODE = T_HDR-ZFCODE. "MADK991565

    IF NOT t_bl-zbldate IS INITIAL.

    WRITE: t_bl-zbldate TO t_data-zbldate.

    ENDIF.

    t_data-zbl = t_bl-zbl.

    t_data-type = 'DBL'.

    ELSE.

    READ TABLE t_di WITH KEY zsammg = t_hdr-zsammg BINARY SEARCH.

    IF sy-subrc EQ 0.

    • t_data-zccode = t_di-zdiforcode. "MADK991565

    T_DATA-ZCCODE = T_HDR-ZFCODE. "MADK991565

    t_data-type = 'DI'.

    ENDIF.

    ENDIF.

    ENDFORM.

    FORM display.

    IF t_data[] IS INITIAL.

    MESSAGE s398(00) WITH 'No Data Selected'.

    EXIT.

    ENDIF.

    DATA : l_repid LIKE sy-repid.

    l_repid = sy-repid.

    REFRESH t_catalog.

    CLEAR t_catalog.

    w_layout-cell_merge = 'X'.

    PERFORM map_fields.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

    i_callback_program = l_repid

    i_callback_user_command = 'ALV_USER_COMMAND'

    is_layout = w_layout

    it_fieldcat = t_catalog[]

    i_grid_title = sy-title

    i_save = 'A'

    it_sort = t_sort[]

    TABLES

    t_outtab = t_data

    EXCEPTIONS

    program_error = 1

    OTHERS = 2.

    IF sy-subrc <> 0.

    ENDIF.

    ENDFORM.

    FORM map_fields.

    • Sort Order

    CLEAR v_count.

    PERFORM sf USING 'ZDIDBL' 'X' 'X'.

    • Fields to be displayed

    CLEAR v_count.

    IF p_hdr = 'X'.

    PERFORM af USING :

    • DESCRIPTION FIELD LEN RTABLE RFIELD

    'DI/DBL ' 'ZDIDBL' '14' ' ' ' ',

    'Type ' 'TYPE' '04' ' ' ' ',

    'Forwarder Code ' 'ZCCODE' '14' ' ' ' ',

    'BL Number ' 'ZBL' '14' ' ' ' ',

    'BL Date ' 'ZBLDATE' '10' ' ' ' ',

    'Invoice Number ' 'ZINVNO' '15' ' ' ' ',

    'Extraction ' 'ZSTATUS' '05' 'ZMSD_FREIGHT_HDR' 'ZSTATUS ',

    'Freight Type ' 'ZTYPE' '05' 'ZMSD_FREIGHT_HDR' 'ZTYPE ',

    'Confirmation ' 'ZCONFIRM' '05' 'ZMSD_FREIGHT_HDR' 'ZCONFIRM',

    'Confirm Date ' 'ZCONFIRMDATE' '10' 'ZMSD_FREIGHT_HDR'

    'ZCONFIRMDATE',

    'Total Amount ' 'ZTTLAMT' '18' ' ' ' ',

    'Created On ' 'ERDAT' '10' ' ' ' ',

    'Created By ' 'ERNAM' '10' ' ' ' ',

    'Changed On ' 'AEDAT' '10' ' ' ' ',

    'Changed By ' 'AENAM' '10' ' ' ' '.

    ELSE.

    PERFORM af USING :

    • DESCRIPTION FIELD LEN RTABLE RFIELD

    'DI/DBL ' 'ZDIDBL' '14' ' ' ' ',

    'Type ' 'TYPE' '04' ' ' ' ',

    'Forwarder Code ' 'ZCCODE' '14' ' ' ' ',

    'BL Number ' 'ZBL' '14' ' ' ' ',

    'BL Date ' 'ZBLDATE' '10' ' ' ' ',

    'Invoice Number ' 'ZINVNO' '15' ' ' ' ',

    'Extraction ' 'ZSTATUS' '05' 'ZMSD_FREIGHT_HDR' 'ZSTATUS ',

    'Freight Type ' 'ZTYPE' '05' 'ZMSD_FREIGHT_HDR' 'ZTYPE ',

    'Confirmation ' 'ZCONFIRM' '05' 'ZMSD_FREIGHT_HDR' 'ZCONFIRM',

    'Confirm Date ' 'ZCONFIRMDATE' '10' 'ZMSD_FREIGHT_HDR'

    'ZCONFIRMDATE',

    'Total Amount ' 'ZTTLAMT' '18' ' ' ' ',

    'Freight Payment ' 'ZFPTYPE' '14' ' ' ' ',

    'Charge Code ' 'ZCHRCODE' '10' ' ' ' ',

    'Currency ' 'ZCURCODE' '08' ' ' ' ',

    'Quantity ' 'ZQTY' '13' ' ' ' ',

    'UoM ' 'ZUOM' '04' ' ' ' ',

    'Rate ' 'ZRATE' '15' ' ' ' ',

    'Amt(Foreign Curr)' 'ZAMOUNT' '16' ' ' ' ',

    'Exchange Rate ' 'ZEXRATE' '13' ' ' ' ',

    'Amt(Local Curr) ' 'ZAMOUNTL' '16' ' ' ' ',

    'Created On ' 'ERDAT' '10' ' ' ' ',

    'Created By ' 'ERNAM' '10' ' ' ' ',

    'Changed On ' 'AEDAT' '10' ' ' ' ',

    'Changed By ' 'AENAM' '10' ' ' ' '.

    ENDIF.

    ENDFORM.

    FORM af USING text

    field

    len

    table

    reffield.

    v_count = v_count + 1.

    w_catalog-col_pos = v_count.

    w_catalog-fieldname = field.

    w_catalog-ref_tabname = table.

    w_catalog-ref_fieldname = reffield.

    w_catalog-seltext_s = text.

    w_catalog-seltext_m = text.

    w_catalog-seltext_l = text.

    w_catalog-outputlen = len.

    IF field = 'ZTTLAMT' OR field = 'ZAMOUNTL'.

    w_catalog-no_zero = 'X'.

    w_catalog-cfieldname = 'WAERK'.

    w_catalog-datatype = 'CURR'.

    ENDIF.

    • IF FIELD = 'ZRATE' OR FIELD = 'ZAMOUNT'.

    IF field = 'ZAMOUNT'.

    w_catalog-no_zero = 'X'.

    w_catalog-cfieldname = 'ZCURCODE'.

    w_catalog-datatype = 'CURR'.

    ENDIF.

    IF field = 'ZQTY' OR field = 'ZRATE'.

    w_catalog-no_zero = 'X'.

    w_catalog-datatype = 'DEC'.

    ENDIF.

    APPEND w_catalog TO t_catalog.

    CLEAR w_catalog.

    ENDFORM.

    FORM sf USING fieldname sortup group.

    v_count = v_count + 1.

    CLEAR w_sort.

    w_sort-fieldname = fieldname.

    w_sort-spos = v_count.

    w_sort-up = sortup.

    w_sort-group = group.

    APPEND w_sort TO t_sort.

    ENDFORM.

    FORM alv_user_command USING in_ucomm LIKE sy-ucomm

    in_selfield TYPE slis_selfield.

    DATA: lfs_data LIKE t_data.

    IF in_ucomm = '&IC1'.

    READ TABLE t_data INDEX in_selfield-tabindex INTO lfs_data.

    CHECK NOT lfs_data-zdidbl IS INITIAL.

    IF lfs_data-type = 'DBL'.

    DATA: l_zdbl LIKE zmsd_diheader-zdinum.

    l_zdbl = in_selfield-value.

    EXPORT l_zdbl TO MEMORY ID 'VBL'.

    CALL TRANSACTION 'ZMSD_BL01'.

    ENDIF.

    IF lfs_data-type = 'DI'.

    DATA: v_dinum LIKE zmsd_diheader-zdinum.

    v_dinum = in_selfield-value.

    EXPORT v_dinum TO MEMORY ID 'VDI'.

    CALL TRANSACTION 'ZMSD_DI01'.

    ENDIF.

    ENDIF.

    ENDFORM.

    FORM get_gst_value.

    LOOP AT t_det WHERE zsammg = v_zsammg

    AND ZINVNO = V_ZINVNO. "MADK991565

    CHECK t_data-zccode IN s_zccode.

    t_det-zamount = t_det-zamount * t_det-zexrate.

    SELECT SINGLE y0mmtarget2

    INTO v_target2

    FROM y0mmipstranslate

    WHERE y0mmdatatype = '70' AND

    y0mmsource = t_det-zchrcode.

    SELECT SINGLE y0mmtarget1

    INTO t_det-type

    FROM y0mmipstranslate

    WHERE y0mmdatatype = '76' AND

    y0mmsource = v_target2.

    IF t_det-type NE '3Z'.

    v_gsttotal = v_gsttotal +

    ( t_det-zamount * 5 / 100 ).

    ENDIF.

    ENDLOOP.

    Regards,

    Raj.