05-18-2006 8:31 AM
hi people...
i am getting from tables..so i want to send data to application server..Everything ok..but shurt dump giving like "Conversion problem"...i wil send date format data to application server...i think its error
05-18-2006 8:34 AM
05-18-2006 8:36 AM
Hi,
do you have any currency fields, if they are then the dump is due to the currency fields.
Regards
vijay
05-18-2006 8:41 AM
i know data format...
yes vijay..cureency fields also there...how i will send to application server.
05-18-2006 8:48 AM
Then it is due to currency fields, you need to convert them to char fields then transfer it to application server.
the problem is due to currency fields, you need to convert to Char fields explicitly.
declare those currency fields as char type
Regards
vijay
05-18-2006 8:48 AM
When writing to application server ensure that all data is passed in CHAR foramt.Then there will be no dump.
Cheers
Nishanth
05-18-2006 9:40 AM
people i converted to char format..
what i do..
ok please give possible solution
this is the code
TABLES: bsid, bsad.
*************************
********************Types*****************************************************************************************
TYPES: BEGIN OF ty_bsid,
kunnr(10) , "TYPE kunnr, "customer no
bukrs(4), "company code
gjahr(4), "fiscal year
belnr(10) , "document type
buzei(3) , "Number of Line Item Within Accounting Document
budat(8) , "posting date
bldat(8) , "document date
blart(2) , "document number
zfbdt(8) , "Baseline date for due date calculation
zbd1t(3) , "Cash discount days 1
zbd2t(3) , "Cash discount days 2
zbd3t(3) , "Net Payment Terms Period
dmbtr(13) , "Amount in local currency
shkzg(1) , "Debit/Credit Indicator
due_date(8) , "Due date
current(13) , "Current amount
30_days_past_due(13) , "Amount of 30 Days Past Due
60_days_past_due(13) , "Amount of 60 Days Past Due
90_days_past_due(13) , "Amount of 90 Days Past Due
over_90_days_past_due(13) , "Amount of over 90 Days Past Due
date_of_last_sale(8) , "Date of Last Sale
END OF ty_bsid.
TYPES: BEGIN OF ty_collect_data,
kunnr(10) , "customer no
name1(35) , "customer name
house_num1(10) , "house number
street(12) , "street
city1(40) , "city
region(8) , "region
post_code1(10) , "postal code
tel_number(30) , "telephone number
fax_number(30) , "fax number
date_of_last_sale(8) , "Date of Last Sale
current(13) ,
30_days_past_due(13) ,
60_days_past_due(13) ,
90_days_past_due(13) ,
over_90_days_past_due(13) ,
Net_Due
Filler
END OF ty_collect_data.
TYPES: BEGIN OF ty_kna1,
kunnr(10),
name1(35),
adrnr(10),
END OF ty_kna1.
TYPES: BEGIN OF ty_adrc,
addrnumber(10),
house_num1(10),
street(12),
city1(40),
region(8),
post_code1(10),
tel_number(30),
fax_number(30),
END OF ty_adrc.
TYPES: BEGIN OF ty_knb1,
ekvbd(10) , "Account Number of Buying Group
END OF ty_knb1.
TYPES: BEGIN OF ty_bsad,
kunnr(10),
bldat(10) ,
END OF ty_bsad.
****************************************************************************************************************
Internal Tables***************************************
DATA: t_bsid TYPE STANDARD TABLE OF ty_bsid INITIAL SIZE 0,
lt_bsid TYPE STANDARD TABLE OF ty_bsid INITIAL SIZE 0,
t_kna1 TYPE STANDARD TABLE OF ty_kna1 INITIAL SIZE 0,
t_adrc TYPE STANDARD TABLE OF ty_adrc INITIAL SIZE 0,
t_knb1 TYPE STANDARD TABLE OF ty_knb1 INITIAL SIZE 0,
t_collect_data TYPE STANDARD TABLE OF ty_collect_data INITIAL SIZE 0,
t_bsad TYPE STANDARD TABLE OF ty_bsad INITIAL SIZE 0.
************************************************************************
****************Work Area*********************************************
DATA: w_bsid TYPE ty_bsid,
w_collect_data TYPE ty_collect_data,
w_kna1 TYPE ty_kna1,
w_bsad TYPE ty_bsad,
w_adrc TYPE ty_adrc.
************************************************************************
***************************************
DATA: l_bukrs TYPE bukrs,
l_kunnr TYPE kunnr,
l_blart TYPE blart,
l_belnr TYPE belnr_d,
l_check TYPE c VALUE 'X',
l_bldat1 TYPE bldat,
l_bldat2 TYPE bldat,
l_last_sale TYPE i.
DATA: g_past_due TYPE i.
****************************************
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_code FOR bsid-bukrs OBLIGATORY.
SELECT-OPTIONS s_cust FOR bsid-kunnr.
SELECT-OPTIONS s_fisc FOR bsid-gjahr.
SELECT-OPTIONS s_docu FOR bsid-blart.
SELECT-OPTIONS s_post FOR bsid-budat .
SELECT-OPTIONS s_date FOR bsid-bldat.
SELECT-OPTIONS s_docno FOR bsid-belnr.
PARAMETERS: p_crdrpt LIKE bsid-bldat DEFAULT sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
PARAMETERS: p_fpath(30) TYPE c ,
p_ram1 AS CHECKBOX DEFAULT l_check,
p_ram2 AS CHECKBOX,
p_dunbrd AS CHECKBOX,
p_nacm AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON BLOCK a1.
PERFORM sub_validation.
Start of selection event
START-OF-SELECTION.
PERFORM collect_data_bsid.
PERFORM collect_sum.
PERFORM collect_data_all.
PERFORM appl_file_generation.
END-OF-SELECTION.
FORM SECTION
&----
*& Form sub_validation
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_validation .
SELECT SINGLE bukrs FROM t001 INTO l_bukrs WHERE bukrs IN s_code.
IF sy-subrc <> 0.
MESSAGE e016 WITH text-003. "Invalid Company code
ENDIF.
SELECT SINGLE kunnr FROM kna1 INTO l_kunnr WHERE kunnr IN s_cust.
IF sy-subrc <> 0.
MESSAGE e016 WITH text-004. "Invalid Customer number
ENDIF.
SELECT SINGLE blart FROM t003 INTO l_blart WHERE blart IN s_docu.
IF sy-subrc <> 0.
MESSAGE e016 WITH text-005. "Invalid Document type
ENDIF.
s_code = s_code+3(4).
SELECT belnr FROM bsid INTO l_belnr UP TO 1 ROWS
WHERE bukrs IN s_code
AND kunnr IN s_cust
AND gjahr IN s_fisc
AND blart IN s_docu
AND budat IN s_post
AND bldat IN s_date.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e016 WITH text-006. "Invalid Document number
ENDIF.
ENDFORM. " sub_validation
&----
*& Form collect_data_bsid
&----
text
----
--> p1 text
<-- p2 text
----
FORM collect_data_bsid .
SELECT bukrs
kunnr
gjahr
belnr
buzei
budat
bldat
blart
zfbdt
zbd1t
zbd2t
zbd3t
dmbtr
shkzg
FROM bkpf_bsid INTO CORRESPONDING FIELDS OF TABLE t_bsid
WHERE bukrs IN s_code
AND kunnr IN s_cust
AND gjahr IN s_fisc
AND belnr IN s_docno
AND blart IN s_docu
AND budat IN s_post
AND bldat IN s_date.
IF sy-subrc <> 0.
MESSAGE i017 .
ENDIF.
lt_bsid[] = t_bsid[].
SORT lt_bsid BY kunnr ASCENDING bldat DESCENDING.
DELETE ADJACENT DUPLICATES FROM lt_bsid COMPARING kunnr.
CHECK NOT lt_bsid[] IS INITIAL.
SELECT kunnr
name1
adrnr
FROM kna1 INTO TABLE t_kna1
FOR ALL ENTRIES IN lt_bsid
WHERE kunnr = lt_bsid-kunnr.
IF sy-subrc <> 0.
MESSAGE e017.
ENDIF.
CHECK NOT t_kna1[] IS INITIAL.
SELECT addrnumber
house_num1
street
city1
region
post_code1
tel_number
fax_number
FROM adrc INTO TABLE t_adrc
FOR ALL ENTRIES IN t_kna1
WHERE addrnumber = t_kna1-adrnr.
IF sy-subrc <> 0.
MESSAGE e017.
ENDIF.
SELECT ekvbd FROM knb1 INTO TABLE t_knb1
FOR ALL ENTRIES IN lt_bsid
WHERE kunnr = lt_bsid-kunnr.
IF sy-subrc <> 0.
MESSAGE e017.
ENDIF.
SELECT kunnr
bldat
FROM bsad INTO TABLE t_bsad
WHERE kunnr IN s_cust
AND bldat IN s_date.
SORT t_bsad BY kunnr ASCENDING bldat DESCENDING.
DELETE ADJACENT DUPLICATES FROM t_bsad COMPARING kunnr.
LOOP AT lt_bsid INTO w_bsid.
READ TABLE t_bsad INTO w_bsad WITH KEY kunnr = w_bsid-kunnr.
l_bldat1 = w_bsid-bldat.
l_bldat2 = w_bsad-bldat.
*
l_last_sale = l_bldat1 - l_bldat2.
*
IF l_last_sale > 0.
*
w_bsid-date_of_last_sale = l_bldat1.
ELSE.
w_bsid-date_of_last_sale = l_bldat2.
*
ENDIF.
*
MODIFY table lt_bsid FROM w_bsid TRANSPORTING date_of_last_sale.
MODIFY table t_bsid FROM w_bsid TRANSPORTING date_of_last_sale.
CLEAR: w_bsid .
ENDLOOP.
LOOP AT t_bsid INTO w_bsid.
IF NOT w_bsid-zbd3t IS INITIAL.
w_bsid-due_date = w_bsid-zfbdt + w_bsid-zbd3t.
ELSE.
IF NOT w_bsid-zbd2t IS INITIAL.
w_bsid-due_date = w_bsid-zfbdt + w_bsid-zbd2t.
ELSE.
IF NOT w_bsid-zbd1t IS INITIAL.
w_bsid-due_date = w_bsid-zfbdt + w_bsid-zbd1t.
ELSE.
w_bsid-due_date = w_bsid-zfbdt.
ENDIF.
g_past_due = w_bsid-due_date - p_crdrpt.
IF g_past_due GE 0.
PERFORM cal_current.
ELSE.
PERFORM cal_past_due.
ENDIF.
ENDIF.
ENDIF.
MODIFY t_bsid FROM w_bsid TRANSPORTING due_date
30_days_past_due
60_days_past_due
90_days_past_due
over_90_days_past_due.
ENDLOOP.
ENDFORM. " collect_data_bsid
&----
*& Form appl_file_generation
&----
text
----
FORM appl_file_generation .
open dataset 'file.txt' for output in text mode encoding default.
if sy-subrc <> 0.
message e018. "error in opening file
endif.
loop at t_collect_data into w_collect_data.
transfer w_collect_data to 'file.txt'.
endloop.
close dataset 'file.txt'.
ENDFORM. " appl_file_generation
&----
*& Form cal_current
&----
text
----
FORM cal_current .
ENDFORM. " cal_current
&----
*& Form cal_past_due
&----
text
----
FORM cal_past_due .
g_past_due = ( -1 ) * g_past_due.
CASE w_bsid-shkzg.
WHEN 'H'.
w_bsid-dmbtr = ( -1 ) * w_bsid-dmbtr.
ENDCASE.
IF g_past_due LE 30.
w_bsid-30_days_past_due = w_bsid-dmbtr.
ELSEIF g_past_due GE 31 AND g_past_due LE 60.
w_bsid-60_days_past_due = w_bsid-dmbtr.
ELSEIF g_past_due GE 61 AND g_past_due LE 90.
w_bsid-90_days_past_due = w_bsid-dmbtr.
ELSE.
w_bsid-over_90_days_past_due = w_bsid-dmbtr.
ENDIF.
ENDFORM. " cal_past_due
&----
*& Form collect_sum
&----
text
----
FORM collect_sum .
DATA: l_name1 TYPE name1.
LOOP AT t_bsid INTO w_bsid.
READ TABLE t_kna1 INTO w_kna1 WITH KEY kunnr = w_bsid-kunnr.
IF sy-subrc = 0.
l_name1 = w_kna1-name1.
ENDIF.
AT NEW kunnr.
SUM.
w_collect_data-kunnr = w_bsid-kunnr.
w_collect_data-name1 = l_name1.
w_collect_data-current = w_bsid-current.
w_collect_data-30_days_past_due = w_bsid-30_days_past_due.
w_collect_data-60_days_past_due = w_bsid-60_days_past_due.
w_collect_data-90_days_past_due = w_bsid-90_days_past_due.
w_collect_data-over_90_days_past_due = w_bsid-over_90_days_past_due.
APPEND w_collect_data TO t_collect_data.
CLEAR w_collect_data.
ENDAT.
ENDLOOP.
ENDFORM. " collect_sum
&----
*& Form collect_data_all
&----
FORM collect_data_all .
LOOP AT t_collect_data INTO w_collect_data.
READ TABLE t_kna1 INTO w_kna1 WITH KEY kunnr = w_collect_data-kunnr.
IF sy-subrc = 0.
READ TABLE t_adrc INTO w_adrc WITH KEY addrnumber = w_kna1-adrnr.
IF sy-subrc = 0.
w_collect_data-house_num1 = w_adrc-house_num1.
w_collect_data-street = w_adrc-street.
w_collect_data-city1 = w_adrc-city1.
w_collect_data-region = w_adrc-region.
w_collect_data-post_code1 = w_adrc-post_code1.
w_collect_data-tel_number = w_adrc-tel_number.
w_collect_data-fax_number = w_adrc-fax_number.
MODIFY t_collect_data FROM w_collect_data TRANSPORTING house_num1
street
city1
region
post_code1
tel_number
fax_number.
ENDIF.
ENDIF.
ENDLOOP.
endform.