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

Multiple pdf attachment into single email

sachin_khedkar
Explorer
0 Likes
3,633

HI,

i have read almost all the thread related to multiple pdf attachment  on scn but not get proper solution .

i want to send two PDF as an attachment in single email  first  attachment is smartforms output converted into pdf  and second pdf  is output of function module  internal table ( it in pdf format already ).

2 attachment are coming correctly , but in

smartform pdf output coming correctly as an attachment in email but the other one (function module pdf ) is coming blank ( i am not able differentiate between 2  & fill the data for second attachment ).

i am using  SO_NEW_DOCUMENT_ATT_SEND_API1 .

i paste the code for the reference please, go through it if need.


REPORT  zfi_cust_bal_conf_letter_multi.

TABLES: kna1,knvv.

TYPE-POOLS:slis.

*ALV DATA DECLARATIONS
DATA: it_fieldcatalog
TYPE  slis_t_fieldcat_alv,
wa_fieldcatalog
TYPE  slis_fieldcat_alv ,
gd_layout   
TYPE slis_layout_alv,
g_variant
LIKE disvariant.
DATA : g_save(1) TYPE c,
g_exit(1)
TYPE c,
gx_variant
LIKE disvariant,
gv_sr
TYPE i.

TYPES : BEGIN OF ty_knvv,
kunnr
TYPE knvv-kunnr,
vkorg
TYPE knvv-vkorg,
vtweg
TYPE knvv-vtweg,
spart
TYPE knvv-spart,
bzirk
TYPE knvv-bzirk,
vkgrp
TYPE knvv-vkgrp,
END OF ty_knvv.

TYPES : BEGIN OF ty_s_kunnr,
kunnr1
TYPE knvv-kunnr,
END OF ty_s_kunnr.



DATA : r_kunnr TYPE RANGE OF kna1-kunnr,
wa_r_kunnr
LIKE LINE OF  r_kunnr.

DATA : it_knvv  TYPE STANDARD TABLE OF ty_knvv,
wa_knvv 
TYPE ty_knvv.

DATA : s_kunnr1 TYPE TABLE OF ty_s_kunnr,
wa_s_kunnr1
TYPE ty_s_kunnr.

DATA : it_opng_bal TYPE  zzbal_opng_bal_tt,
it_opng_bal1
type standard table of ZZBAL_OPNG_BAL_LT,
wa_opng_bal1
type ZZBAL_OPNG_BAL_LT,
wa_opng_bal
TYPE zzbal_opng_bal_lt.

data : ld_sender_address LIKE  soextreci1-receiver,
ld_sender_address_type
LIKE  soextreci1-adr_typ.

*DATA : BEGIN OF itab_data OCCURS 0 ,
*       hkont LIKE bsis-hkont,
*       kunnr LIKE bsid-kunnr,
*       yymm(6) TYPE c,
*       budat LIKE bsis-budat,
*       bldat LIKE bsis-bldat,
*       belnr LIKE bsis-belnr,
*       buzei LIKE bsis-buzei,
*       blart LIKE bsis-blart,
*       shkzg LIKE bsis-shkzg,
*       gsber LIKE bsis-gsber,
*       xblnr LIKE bsis-xblnr,
*       dmbtr LIKE bsis-dmbtr,
*       aufnr LIKE bsis-aufnr,
*       kostl LIKE bsis-kostl,
*       sgtxt LIKE bsis-sgtxt,
*       bukrs LIKE bsis-bukrs,
*       gjahr LIKE bsis-gjahr,
*       stblg LIKE bkpf-stblg,
*       stjah LIKE bkpf-stjah,
*       revdt(10)  TYPE c,
*       usnam LIKE bkpf-usnam,
*       chqno(10)  TYPE c,
*       chqdt(10)  TYPE c,
*       vbeln LIKE vbrp-vbeln,
*       fkimg LIKE vbrp-fkimg,
*       zuonr  LIKE bseg-zuonr,
*       umskz LIKE bsid-umskz,
*       exnum  LIKE j_1iexchdr-exnum.
*DATA : END OF itab_data.

DATA : BEGIN OF itab_vnd_optrn OCCURS 0 ,
hkont
LIKE bsid-hkont,
kunnr
LIKE bsid-kunnr,
umskz
LIKE bsid-umskz,
dmbtr
LIKE bsid-dmbtr.
DATA : END OF itab_vnd_optrn.

TYPES : BEGIN OF ty_final ,
mandt
type mandt,
kunnr
TYPE kna1-kunnr,
name1
TYPE kna1-name1,
vkorg
TYPE knvv-vkorg,
vtweg
TYPE knvv-vtweg,
spart
TYPE knvv-spart,
bzirk
TYPE knvv-bzirk,
vkgrp
TYPE knvv-vkgrp,
dmbtr
TYPE bsid-dmbtr,
date  TYPE knvv-erdat,
END OF ty_final.

types : BEGIN OF ty_kna1,
kunnr
TYPE kna1-kunnr,
adrnr
TYPE kna1-adrnr,
END OF ty_kna1.

types : BEGIN OF ty_adrc,
addrnumber    
TYPE adrc-addrnumber,
name1         
TYPE adrc-name1,
name2         
TYPE adrc-name2,
name3         
TYPE adrc-name3,
name4         
TYPE adrc-name4,
city1         
TYPE adrc-city1,
city2         
TYPE adrc-city2,
city_code     
TYPE adrc-city_code,
cityp_code    
TYPE adrc-cityp_code,
home_city     
TYPE adrc-home_city,
post_code1    
TYPE adrc-post_code1,
post_code2    
TYPE adrc-post_code2,
po_box        
TYPE adrc-po_box,
street        
TYPE adrc-street,
streetcode    
TYPE adrc-streetcode,
str_suppl1    
TYPE adrc-str_suppl1,
str_suppl2    
TYPE adrc-str_suppl2,
str_suppl3    
TYPE adrc-str_suppl3,
location      
TYPE adrc-location,
building      
TYPE adrc-building,
floor          TYPE adrc-floor,
country        TYPE adrc-country,
region        
TYPE adrc-region,
END OF ty_adrc.


types : BEGIN OF ty_tline,
tdformat
TYPE tline-tdformat,
tdline
TYPE tline-tdline,
END OF ty_tline.


data : wa_name1 type kna1-name1.

data : n type i,
lt_solix
type SOLIX_TAB with header line .

data : it_final type standard table of ZZSTR_CUST_BAL,
wa_final
type ZZSTR_CUST_BAL ,"with header line ,
it_adrc
type standard table of ty_adrc,
wa_adrc
type ty_adrc,
it_kna1
type standard table of ty_kna1,
wa_kna1
type ty_kna1,
it_final_expo
type ZZSTR_CUST_BAL_TT with header line,
it_adr6
type standard table of adr6,
wa_adr6
type adr6,
it_mtab_pdf
TYPE TABLE OF tline WITH HEADER LINE.
*       wa_mtab_pdf type ty_tline.

data : gv_kunnr1 type kna1-kunnr,
gv_adrnr 
type kna1-adrnr,
gv_email_add
type adr6-SMTP_ADDR.

DATA : itab_vnd_opbal LIKE itab_vnd_optrn OCCURS 0 WITH HEADER LINE.

data:   i_otf
TYPE itcoo OCCURS 0 WITH HEADER LINE,
i_tline
TYPE TABLE OF tline WITH HEADER LINE,
i_receivers
TYPE TABLE OF somlreci1 WITH HEADER LINE,
i_record
LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_record1
LIKE solisti1 OCCURS 0 WITH HEADER LINE,
* Objects to send mail.
i_objpack
LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
i_objtxt
LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objbin
LIKE solisti1 OCCURS 10 WITH HEADER LINE,
i_reclist
LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
* Work Area declarations
wa_objhead
TYPE soli_tab,
w_ctrlop
TYPE ssfctrlop,
w_compop
TYPE ssfcompop,
wa_doc_chng
TYPE sodocchgi1,
w_data
TYPE sodocchgi1,
wa_buffer
TYPE string,
W_RETURN
TYPE SSFCRESCL,
* ” to convert from 132 to 255
* Variables declarations
v_form_name
TYPE rs38l_fnam,
v_len_in
LIKE sood-objlen,
v_len_out
LIKE sood-objlen,
v_len_outn
TYPE i,
v_lines_txt
TYPE i,
v_lines_bin
TYPE i.

DATA: C_TAB
TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
C_RET
TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
*PARAMETERS : p_werks TYPE j_1iexchdr-werks DEFAULT '1101' OBLIGATORY .
PARAMETERS :  p_bukrs TYPE t001-bukrs OBLIGATORY .
SELECT-OPTIONS: s_kunnr
FOR kna1-kunnr,            "" Customer
s_vkorg
FOR knvv-vkorg OBLIGATORY, "" Sales Org.
s_vkgrp
FOR knvv-vkgrp OBLIGATORY, "" Sales Territory
s_vtweg
FOR knvv-vtweg OBLIGATORY, "" Distr. Channel
s_spart
FOR knvv-spart OBLIGATORY, "" Division
s_bzirk
FOR knvv-bzirk OBLIGATORY, "" Sales district
s_date 
FOR knvv-erdat OBLIGATORY. "" Date
""""smartforms declerations.
DATA: lf_fm_name           
TYPE rs38l_fnam.

PARAMETERS : r_alv RADIOBUTTON GROUP grp1 DEFAULT 'X',
r_email
RADIOBUTTON GROUP grp1 .
SELECTION-SCREEN END OF BLOCK blk1   .

SELECTION-SCREEN BEGIN OF BLOCK layout WITH FRAME TITLE text-002.
PARAMETERS: p_vari
LIKE disvariant-variant. " ALV Variant
SELECTION-SCREEN END OF BLOCK layout.

INITIALIZATION.
PERFORM initialize_variant  .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
*&---------------------------------------------------------------------*
*&      Form  INITIALIZE_VARIANT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM initialize_variant .
g_save =
'A'.
CLEAR g_variant.
g_variant-report = sy-repid.
*  g_variant-variant = p_vari.
gx_variant = g_variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save        = g_save
CHANGING
cs_variant    = gx_variant
EXCEPTIONS
wrong_input   =
1
not_found     =
2
program_error =
3
OTHERS        = 4.
*  IF sy-subrc <> 0.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
ENDFORM.                   
" INITIALIZE_VARIANT
*&---------------------------------------------------------------------*
*&      Form  F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f4_for_variant .
g_save =
'A'.
g_variant-report = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save     = g_save
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

*----------------------------------------------------------------------*
*         :   Start of Selection                                       *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM get_data.

PERFORM fill_data.

END-OF-SELECTION.
if r_alv eq 'X'.

PERFORM alv_fieldcatlog.
PERFORM alv_display.

elseif r_email = 'X'""""" smartform code & convert into PDF.

sort it_final by kunnr.
delete adjacent duplicates from it_final comparing all fields.

LOOP AT  it_final into wa_final.
read table it_kna1 into wa_kna1 with key kunnr = wa_final-kunnr.
if sy-subrc = 0 .
read table it_adrc into wa_adrc with key ADDRNUMBER = wa_kna1-adrnr .
if sy-subrc = 0 .
read table it_adr6 into wa_adr6 with key  ADDRNUMBER = wa_adrc-ADDRNUMBER.
if sy-subrc = 0 .

gv_adrnr = wa_kna1-adrnr.
gv_kunnr1 = wa_final-kunnr.
gv_email_add = wa_adr6-SMTP_ADDR.
endif.
endif.
endif.

*****************customer account statment rfc call *************

*****output of this is 1 st attachment for the mail as pdf
CALL FUNCTION 'ZATR_RFC_CUST_ACT_STMNT_CBCL'
EXPORTING
im_comp_code               = p_bukrs
*   IM_BUSS_AREA_LOW           =
*   IM_BUSS_AREA_HIGH          =
im_post_date_low           = s_date-low
IM_POST_DATE_HIGH          = s_date-high
*   IM_GL_ACCOUNT_LOW          =
*   IM_GL_ACCOUNT_HIGH         =
IM_CUSTOMER_LOW            = WA_FINAL-KUNNR
*   IM_CUSTOMER_HIGH           =
IM_TERITORY_LOW            = WA_FINAL-VKGRP
*   IM_TERITORY_HIGH           = s_vkgrp-high
IM_REGION_LOW              = WA_FINAL-bzirk
*   IM_REGION_HIGH             =
*   IM_ACCT_ASSG_GR_LOW        =
*   IM_ACCT_ASSG_GR_HIGH       =
*   IM_MONTH                   =
*   IM_NORMAL                  =
*   IM_SPL_GL                  =
* IMPORTING
*   STS                        =
*   EMAILID                    =
tables
*    lt_solix                   = lt
MTAB_PDF                   = it_mtab_pdf
LT_SOLIX             =  lt_solix   .

******************end of call rfc **********************

***********smartform 2nd attchment for email *********
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname                 =
'ZFI_SM_CUST_BAL_CONF_LETTER'
*   VARIANT                  = ' '
*   DIRECT_CALL              = ' '
IMPORTING
FM_NAME                  = lf_fm_name
EXCEPTIONS
NO_FORM                  =
1
NO_FUNCTION_MODULE       =
2
OTHERS                   = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

w_ctrlop-getotf    =
'X'.
w_ctrlop-no_dialog =
'X'.
w_compop-tdnoprev  =
'X'.

CALL FUNCTION lf_fm_name
EXPORTING
*   ARCHIVE_INDEX              =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
CONTROL_PARAMETERS         = w_ctrlop 
"""comment
*   MAIL_APPL_OBJ              =
*   MAIL_RECIPIENT             =
*   MAIL_SENDER                =
OUTPUT_OPTIONS             = w_compop 
""""comment
*   USER_SETTINGS              = 'X'
*wa_final                =  wa_final
*wa_adrc                        = wa_adrc
gv_kunnr1 = gv_kunnr1
IMPORTING                               """comment
*   DOCUMENT_OUTPUT_INFO       =
JOB_OUTPUT_INFO            = w_return 
"""coomment
*   JOB_OUTPUT_OPTIONS         =
*gv_kunnr1 = gv_kunnr1
*gv_adrnr  = gv_adrnr
tables
it_final                 = it_final[]
IT_SELECT               = s_date[]
it_adrc                 = it_adrc[]
*   wa_final                =  wa_final
EXCEPTIONS
FORMATTING_ERROR           =
1
INTERNAL_ERROR             =
2
SEND_ERROR                 =
3
USER_CANCELED              =
4
OTHERS                     = 5
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

i_otf[] = w_return-otfdata[].

CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format                = 'PDF'
max_linewidth         =
132
IMPORTING
bin_filesize          = v_len_in
TABLES
otf                   = i_otf
lines                 = i_tline
EXCEPTIONS
err_max_linewidth     =
1
err_format            =
2
err_conv_not_possible =
3
OTHERS                = 4.

IF sy-subrc <> 0.
ENDIF.

*********below is smartform in pdf **********1 st attchment   """this is coming correctly
LOOP AT i_tline.
TRANSLATE i_tline USING '~'.
CONCATENATE wa_buffer i_tline INTO wa_buffer.
ENDLOOP.

TRANSLATE wa_buffer USING '~'.
DO.
i_record = wa_buffer.
*      CONCATENATE C_RET i_record INTO i_record.
APPEND i_record.
SHIFT wa_buffer LEFT BY 255 PLACES.
IF wa_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
*append i_record to i_objbin.
****************rfc output for 2nd attachment **********************
LOOP AT it_mtab_pdf.
TRANSLATE it_mtab_pdf USING '~'.
CONCATENATE wa_buffer it_mtab_pdf INTO wa_buffer.
ENDLOOP.

TRANSLATE wa_buffer USING '~'.
DO.
i_record1 = wa_buffer.
*      CONCATENATE C_RET i_record INTO i_record.
APPEND i_record1.
SHIFT wa_buffer LEFT BY 255 PLACES.
IF wa_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
*append i_record1 to i_objbin.
****************end of attachment ****************************


* Attachment
REFRESH: i_reclist,
i_objtxt,
i_objbin,
i_objpack.
CLEAR :  wa_objhead.


*    i_objbin[] = i_record[].  """commented by sachin

*append i_record1 to i_objbin.
* create message body  title and description

i_objtxt =
'Dear Sir/Madam,'.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
'Please Find here with Attached copy of Customer Balance Letter.'.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
' '.
APPEND i_objtxt.
i_objtxt =
'PLEASE NOTE :- THIS IS AN AUTO GENERATED MAIL, PLEASE DO NOT REPLY TO THIS MAIL.'.
APPEND i_objtxt.
*    i_objtxt = 'Thanks And Regards,'.
*    APPEND i_objtxt.
*    i_objtxt = 'Sachin'.
*    APPEND i_objtxt.

DESCRIBE TABLE i_objtxt LINES v_lines_txt.
READ TABLE i_objtxt INDEX v_lines_txt.

wa_doc_chng-obj_name   =
'Customer Balance Letter'.
*    wa_doc_chng-expiry_dat = sy-datum + 10.
wa_doc_chng-obj_descr  =
'Customer Balance Letter'."""cmmented
wa_doc_chng-sensitivty =
'F'.
wa_doc_chng-doc_size   = ( v_lines_txt -
1 ) * 255 + strlen( i_objtxt ).
*# main text
* wa_doc_chng-doc_size = ( v_lines_txt - 1 ) * 255 + strlen( i_objtxt )
*.


************1st attachment content transfer *************
LOOP AT i_record .
move i_record-line to i_objbin-line.
append i_objbin.
ENDLOOP.
****************end of code ****************************
************2 nd  attachment content transfer *************
LOOP AT i_record1.
move i_record1-line to i_objbin-line.
append i_objbin.
ENDLOOP.

CLEAR i_objpack-transf_bin.
i_objpack-head_start =
1.
i_objpack-head_num   =
0.
i_objpack-body_start =
1.
i_objpack-body_num   = v_lines_txt.
i_objpack-doc_type   =
'RAW'.
APPEND i_objpack.


*    ld_sender_address      = '[email protected]'.
*    ld_sender_address_type = 'SMTP'.



*# attachment
* (pdf-Attachments 1 & 2)
************code for 1st pdf attachment *********************
DESCRIBE TABLE i_record LINES v_lines_bin.
READ TABLE i_record INDEX v_lines_bin.
N =
1 .
i_objpack-transf_bin =
'X'.
i_objpack-head_start =
1.
i_objpack-head_num   =
1.
i_objpack-body_start = N.
*    i_objpack-doc_type   = 'RAW'.
* Länge des Attachment ermitteln
i_objpack-doc_size  = ( v_lines_bin -
1 ) * 255 + strlen( i_record ).
i_objpack-body_num  = v_lines_bin.
"""""""""""""""total number of line for the attachment 2 in OBJBIN object.
i_objpack-doc_type  =
'PDF'.
i_objpack-obj_name  =
'Customer Balance Letter'.
i_objpack-obj_descr =
'Customer Balance Letter'.
APPEND i_objpack.
CLEAR i_reclist.

************code for 2nd pdf attached *********************
DESCRIBE TABLE i_record1  LINES v_lines_bin.
READ TABLE i_record1  INDEX v_lines_bin.
N = N + v_lines_bin.
i_objpack-transf_bin =
'X'.
i_objpack-head_start = i_objpack-head_start +
1.
i_objpack-head_num   = i_objpack-body_num +
1.
i_objpack-body_start = N.
*    i_objpack-doc_type   = 'RAW'.
* Länge des Attachment ermitteln
i_objpack-doc_size  = ( v_lines_bin -
1 ) * 255 + strlen( i_record1 ).
i_objpack-body_num  = v_lines_bin. 
""""""total number of line for the attachment 2 in OBJBIN object.
*    i_objpack-body_START = N.
i_objpack-doc_type  =
'PDF'.
i_objpack-obj_name  =
'Customer Account Statment'.
i_objpack-obj_descr =
'Customer Account Statment'.
APPEND i_objpack.
CLEAR i_reclist.

***** customers email addresss
i_reclist-receiver = gv_email_add.
i_reclist-rec_type =
'U'.
i_reclist-com_type =
'INT'.
APPEND  i_reclist.
*********end *******************

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data              = wa_doc_chng
put_in_outbox              =
'X'
commit_work                =
'X'
TABLES
packing_list               = i_objpack
object_header              = wa_objhead
contents_bin               = i_objbin
contents_txt               = i_objtxt
receivers                  = i_reclist[]
EXCEPTIONS
too_many_receivers         =
1
document_not_sent          =
2
document_type_not_exist    =
3
operation_no_authorization =
4
parameter_error            =
5
x_error                    =
6
enqueue_error              =
7
OTHERS                     = 8.

IF sy-subrc EQ 0.
MESSAGE 'Mail Sent Sucessfully' TYPE 'I'.
ELSE.
MESSAGE 'Error occured in Sending the Mail' TYPE 'E'.
ENDIF.
clear : gv_kunnr1,gv_adrnr,gv_email_add.
ENDLOOP.
endif.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data .
break ibm_ams.

SELECT  kunnr
vkorg
vtweg
spart
vkgrp
bzirk
FROM knvv
INTO CORRESPONDING FIELDS OF  TABLE it_knvv
WHERE kunnr IN s_kunnr
AND vkorg IN s_vkorg
AND vtweg IN s_vtweg
AND spart IN s_spart
AND vkgrp IN s_vkgrp
AND bzirk IN s_bzirk.

IF s_kunnr IS INITIAL.
LOOP AT it_knvv INTO wa_knvv  .
wa_r_kunnr-option =
'EQ' .
wa_r_kunnr-sign =
'I'.
wa_r_kunnr-low = wa_knvv-kunnr.
APPEND wa_r_kunnr TO r_kunnr.
CLEAR : wa_r_kunnr.
ENDLOOP.
ENDIF.


*CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'
*  EXPORTING
*    companycodeid       = p_bukrs
*    posting_date        =
* IMPORTING
*   FISCAL_YEAR         =
**   FISCAL_PERIOD       =
**   RETURN              =
*          .


IF s_kunnr IS INITIAL.
SUBMIT z6fi011r_cust_ledger_copy
WITH p_bukrs = p_bukrs
WITH  s_budat IN s_date
WITH s_kunnr IN r_kunnr
WITH p_month = ''
EXPORTING LIST TO MEMORY
AND RETURN.
ELSE.
SUBMIT z6fi011r_cust_ledger_copy
WITH p_bukrs = p_bukrs
WITH  s_budat IN s_date
WITH s_kunnr IN s_kunnr
WITH p_month = ''
EXPORTING LIST TO MEMORY
AND RETURN.

ENDIF.
*  IMPORT itab_data FROM MEMORY ID 'BTD'.
IMPORT itab_vnd_opbal FROM MEMORY ID 'CTD'.

LOOP AT itab_vnd_opbal.
*    WA_OPNG_BAL-HKONT = itab_vnd_opbal-HKONT.
wa_opng_bal-kunnr = itab_vnd_opbal-kunnr.
wa_opng_bal-dmbtr = itab_vnd_opbal-dmbtr.
COLLECT wa_opng_bal INTO it_opng_bal.
append wa_opng_bal to it_opng_bal1.
ENDLOOP.
CLEAR wa_opng_bal .
SORT it_opng_bal BY kunnr.
sort it_opng_bal1 by kunnr.
delete it_opng_bal where kunnr is initial or dmbtr eq '0.00'.
delete it_opng_bal1 where kunnr is initial or dmbtr eq '0.00'.

if not it_opng_bal1 is initial.
select kunnr
adrnr
from   kna1
into table it_kna1
for all entries in it_opng_bal1
where kunnr = it_opng_bal1-kunnr.
endif.
if not it_kna1[] is initial.
select    addrnumber
name1
name2
name3
name4
city1
city2
city_code
cityp_code
home_city
post_code1
post_code2
po_box
street
streetcode
str_suppl1
str_suppl2
str_suppl3
location
building
floor
country
region
from adrc
into table it_adrc
for all entries in it_kna1
where ADDRNUMBER = it_kna1-adrnr.
endif.

if not it_adrc[] is initial.
select *
from adr6
into table it_adr6
for all entries in it_adrc
where ADDRNUMBER = it_adrc-ADDRNUMBER .
endif.
ENDFORM.                   
" GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FILL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FILL_DATA .

LOOP AT it_knvv into wa_knvv.
LOOP AT it_opng_bal1 into wa_opng_bal1 where kunnr = wa_knvv-kunnr.
wa_final-DMBTR = wa_final-DMBTR + wa_opng_bal1-DMBTR.
ENDLOOP.
wa_final-kunnr =  wa_opng_bal1-kunnr.
select single name1
from kna1
client specified
into wa_name1
where mandt = sy-mandt
and   kunnr = wa_final-kunnr.
wa_final-name1 = wa_name1.
wa_final-vkorg = wa_knvv-vkorg.
wa_final-vtweg = wa_knvv-vtweg.
wa_final-SPART = wa_knvv-spart.
wa_final-bzirk = wa_knvv-bzirk.
wa_final-vkgrp = wa_knvv-vkgrp.
append wa_final to it_final.
clear: wa_final, wa_name1.
ENDLOOP.

ENDFORM.                   
" FILL_DATA
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCATLOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_FIELDCATLOG .
wa_fieldcatalog-fieldname   =
'KUNNR'.
wa_fieldcatalog-seltext_m   =
'Customer Code'.
wa_fieldcatalog-col_pos     =
1.
APPEND wa_fieldcatalog TO it_fieldcatalog.
CLEAR  wa_fieldcatalog.

*  wa_fieldcatalog-col_pos = wa_fieldcatalog-col_pos + 1.
wa_fieldcatalog-fieldname   =
'NAME1'.
wa_fieldcatalog-seltext_m   =
'Customer Name'.
wa_fieldcatalog-col_pos     =
2.
APPEND wa_fieldcatalog TO it_fieldcatalog.
CLEAR  wa_fieldcatalog.

*  wa_fieldcatalog-col_pos = wa_fieldcatalog-col_pos + 1.
wa_fieldcatalog-fieldname   =
'VKORG'.
wa_fieldcatalog-seltext_m   =
'Sales Org.'.
wa_fieldcatalog-col_pos     =
3.
APPEND wa_fieldcatalog TO it_fieldcatalog.
CLEAR  wa_fieldcatalog.

wa_fieldcatalog-fieldname   =
'SPART'.
wa_fieldcatalog-seltext_m   =
'Division'.
wa_fieldcatalog-col_pos     =
4.
APPEND wa_fieldcatalog TO it_fieldcatalog.
CLEAR  wa_fieldcatalog.

wa_fieldcatalog-fieldname   =
'BZIRK'.
wa_fieldcatalog-seltext_m   =
'Sales district'.
wa_fieldcatalog-col_pos     =
6.
APPEND wa_fieldcatalog TO it_fieldcatalog.
CLEAR  wa_fieldcatalog.

wa_fieldcatalog-fieldname   =
'VKGRP'.
wa_fieldcatalog-seltext_m   =
'Sales Territory'.
wa_fieldcatalog-col_pos     =
7.
APPEND wa_fieldcatalog TO it_fieldcatalog.
CLEAR  wa_fieldcatalog.

wa_fieldcatalog-fieldname   =
'DMBTR'.
wa_fieldcatalog-seltext_m   =
'Cutomer Balance'.
wa_fieldcatalog-col_pos     =
8.
APPEND wa_fieldcatalog TO it_fieldcatalog.
CLEAR  wa_fieldcatalog.
ENDFORM.                   
" ALV_FIELDCATLOG
*&---------------------------------------------------------------------*
*&      Form  ALV_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM ALV_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
I_CALLBACK_PROGRAM                = sy-repid
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_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                         = gd_layout
IT_FIELDCAT                       = it_fieldcatalog[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
I_SAVE                            =
'A'
IS_VARIANT                        = gx_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
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
TABLES
t_outtab                          = it_final[]
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.                   
" ALV_DISPLAY

1 ACCEPTED SOLUTION
Read only

sachin_khedkar
Explorer
0 Likes
2,081

Hi ,

above Code is correct only one correction is nedded i.e.

i_objpack-head_num   = i_objpack-body_num + 1.  replace this with



i_objpack-head_num   = i_objpack-body_num + 1.



Thread is closed .


thanks

sachin.



Hi ,

above Code is correct only one correction is nedded i.e.

i_objpack-head_num   = i_objpack-body_num + 1.  replace this with



i_objpack-head_num   = i_objpack-body_num + 1.



Thread is closed .


thanks

sachin.



3 REPLIES 3
Read only

iamvivekrk
Participant
0 Likes
2,081

Hi Sachin,

  Can we combine the PDF from spools as mentioned in the below ref links ?

SDN Link:

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/404e4dc1-a79c-2d10-a7b5-9a266dfed...

Hope this helps.

Thanks Sachin.

Cheers,

Vivek Raj Kumar M.

Read only

0 Likes
2,081

Hi Vivek ,

i already tried with spool but it not work in my case and second link is related with merge using application server path which also not useful for me .

Thanks for help.

Thanks Vivek.

Read only

sachin_khedkar
Explorer
0 Likes
2,082

Hi ,

above Code is correct only one correction is nedded i.e.

i_objpack-head_num   = i_objpack-body_num + 1.  replace this with



i_objpack-head_num   = i_objpack-body_num + 1.



Thread is closed .


thanks

sachin.