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 = 'sapautomail-icc@modi.com'.
* 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