How to write bdc programme to load the data in table control
Hi
i have to write a bdc programme and the data to be filled in table control fileds can any one help me with the code how i have to write it is for cs02 tcode
thanks and regards
naveen
Hi Naveen,
See the sample code
PERFORM bdc_dynpro USING 'SAPLCSDI' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29N-DATUV'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KALL'.
PERFORM bdc_field USING 'RC29N-MATNR'
w_matnr.
PERFORM bdc_field USING 'RC29N-WERKS'
w_werks.
PERFORM bdc_field USING 'RC29N-STLAN'
'1'.
PERFORM bdc_field USING 'RC29N-DATUV'
'01/01/2004'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '2110'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=FCPU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29K-BMENG'.
PERFORM bdc_field USING 'RC29K-BMENG'
w_testuph.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0150'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29P-MENGE(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=FCBU'.
PERFORM bdc_field USING 'RC29P-MENGE(01)'
w_testuph.
"For raw material.
IF NOT w_raw_mat_fg IS INITIAL.
PERFORM bdc_field USING 'RC29P-MENGE(02)'
w_testuph.
ENDIF.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29P-POSNR'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29P-POTX1'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29P-POSNR'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29P-POTX1'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0150'.
CALL TRANSACTION 'CS02' USING bdcdata MODE w_display_mode UPDATE 'S'
MESSAGES INTO t_message_tab.
Prabhudas
Similar Messages
-
Hi,
Iam new to the xml,
can u please anyone help me how to write procedure to load the data into a table using xml as input parameter to a procedure and xml file is as shown below which is input to me.
<?xml version="1.0"?>
<DiseaseCodes>
<Entity><dcode>0</dcode><ddesc>(I87)Other disorders of veins - postphlebitic syndrome</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity>
<Entity><dcode>0</dcode><ddesc>(J04)Acute laryngitis and tracheitis</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity>
<Entity><dcode>0</dcode><ddesc>(J17*)Pneumonia in other diseases - whooping cough</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity>
</DiseaseCodes>.
Regards,
vikram.here is the your XML parse in 11g :
select *
from xmltable('//Entity' passing xmltype
'<?xml version="1.0"?>
<DiseaseCodes>
<Entity><dcode>0</dcode><ddesc>(I87)Other disorders of veins - postphlebitic syndrome</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity>
<Entity><dcode>0</dcode><ddesc>(J04)Acute laryngitis and tracheitis</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity>
<Entity><dcode>0</dcode><ddesc>(J17*)Pneumonia in other diseases - whooping cough</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity>
</DiseaseCodes>
') columns
"dcode" varchar2(4000) path '/Entity/dcode',
"ddesc" varchar2(4000) path '/Entity/ddesc',
"reauthflag" varchar2(4000) path '/Entity/reauthflag'
dcode ddesc reauthflag
0 (I87)Other disorders of veins - postphlebitic syndrome 0
0 (J04)Acute laryngitis and tracheitis 0
0 (J17*)Pneumonia in other diseases - whooping cough 0
SQL>
Using this parser you can create procedure as
SQL> create or replace procedure myXMLParse(x clob) as
2 begin
3 insert into MyXmlTable
4 select *
5 from xmltable('//Entity' passing xmltype(x) columns "dcode"
6 varchar2(4000) path '/Entity/dcode',
7 "ddesc" varchar2(4000) path '/Entity/ddesc',
8 "reauthflag" varchar2(4000) path '/Entity/reauthflag');
9 commit;
10 end;
11
12 /
Procedure created
SQL>
SQL>
SQL> exec myXMLParse('<?xml version="1.0"?><DiseaseCodes><Entity><dcode>0</dcode><ddesc>(I87)Other disorders of veins - postphlebitic syndrome</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity><Entity><dcode>0</dcode><ddesc>(J04)Acute laryngitis and tracheitis</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity><Entity><dcode>0</dcode><ddesc>(J17*)Pneumonia in other diseases - whooping cough</ddesc><claimid>34543></claimid><reauthflag>0</reauthflag></Entity></DiseaseCodes>');
PL/SQL procedure successfully completed
SQL> select * from MYXMLTABLE;
dcode ddesc reauthflag
0 (I87)Other disorders of veins - postphlebitic syndrome 0
0 (J04)Acute laryngitis and tracheitis 0
0 (J17*)Pneumonia in other diseases - whooping cough 0
SQL>
SQL>
Ramin Hashimzade -
How populate the data in table control in BDC?
pls urgent?
hi,
see the below code .
FORM create_bdc_session .
DATA : w_saved_tx.
DATA g_r_itab TYPE typ_itab_rec.
CLEAR g_t_itab.
CLEAR g_r_itab.
LOOP AT g_t_itab INTO g_r_itab.
skip error lines
IF g_r_itab-ebeln = 'ERROR'.
CONTINUE.
ENDIF.
open Bdc session
AT FIRST.
PERFORM bdc_open_group.
ENDAT.
g_t_itab = g_r_itab.
On change in agreement number
AT NEW ebeln.
PERFORM bdc_header.
CLEAR: w_dtl_cnt_i, w_line_i.
ENDAT.
save at full page
IF w_line_i > 11.
PERFORM bdc_save.
PERFORM bdc_header_change.
w_line_i = 1.
ENDIF.
detail material processing
PERFORM bdc_detail.
CLEAR w_saved_tx .
save at end of agreement
AT END OF ebeln.
IF w_saved_tx NE 'Y' AND w_dtl_cnt_i > 0.
PERFORM bdc_save.
ENDIF.
w_saved_tx = 'Y'.
ENDAT.
ENDLOOP.
PERFORM bdc_close_group.
ENDFORM. " CREATE_BDC_SESSION
*& Form BDC_OPEN_GROUP
text
--> p1 text
<-- p2 text
FORM bdc_open_group .
DATA w_user_tx LIKE apqi-userid.
w_user_tx = sy-uname.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = p_bdc
keep = 'X'
user = w_user_tx
EXCEPTIONS
client_invalid = 01
destination_invalid = 02
group_invalid = 03
holddate_invalid = 04
internal_error = 05
queue_error = 06
running = 07
user_invalid = 08.
CASE sy-subrc.
WHEN 0.
WHEN OTHERS.
WRITE: / 'BDC OPEN ERROR', sy-subrc.
ENDCASE.
ENDFORM. " BDC_OPEN_GROUP
*& Form BDC_HEADER
text
--> p1 text
<-- p2 text
FORM bdc_header .
REFRESH bdcdata.
CLEAR bdcdata.
determine now if text exists
CLEAR w_text_lines_i.
Transaction ME31K.
PERFORM bdc_dynpro USING 'SAPMM06E' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'EKKO-LIFNR' g_t_itab-lifnr.
PERFORM bdc_field USING 'RM06E-EVART' 'MK'.
PERFORM bdc_field USING 'RM06E-EVRTN' g_t_itab-ebeln.
PERFORM bdc_field USING 'EKKO-EKORG' g_t_itab-ekorg.
PERFORM bdc_field USING 'EKKO-EKGRP' g_t_itab-ekgrp.
Item category is on a detail line, but is entered on the entry screen
IF g_t_itab-pstyp = '3'.
g_t_itab-pstyp = 'L'.
ELSE.
CLEAR g_t_itab-pstyp.
ENDIF.
PERFORM bdc_field USING 'RM06E-EPSTP' g_t_itab-pstyp.
PERFORM bdc_field USING 'RM06E-WERKS' p_nwerks.
PERFORM bdc_field USING 'RM06E-LGORT' g_t_itab-lgort.
PERFORM bdc_dynpro USING 'SAPMM06E' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'EKKO-WAERS' g_t_itab-waers.
WRITE sy-datum TO w_date_tx DD/MM/YYYY.
PERFORM bdc_field USING 'EKKO-KDATB' '01.06.2004'.
PERFORM bdc_field USING 'EKKO-KDATE' '31.12.2999'.
w_tcode = 'ME31K'.
ENDFORM. " BDC_HEADER
*& Form BDC_SAVE
text
--> p1 text
<-- p2 text
FORM bdc_save .
final save
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.
needed for some boxes (save anyway message)
PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM bdc_field USING 'BDC_OKCODE' '=YES'.
Insert the transaction into the BDC session.
PERFORM bdc_insert USING w_tcode.
REFRESH bdcdata.
CLEAR bdcdata.
ENDFORM. " BDC_SAVE
*& Form BDC_HEADER_change
text
--> p1 text
<-- p2 text
FORM bdc_header_change .
DATA: w_pos LIKE rm06e-ebelp.
REFRESH bdcdata.
CLEAR bdcdata.
determine now if text exists
CLEAR w_text_lines_i.
Transaction ME32K.
PERFORM bdc_dynpro USING 'SAPMM06E' '0205'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RM06E-EVRTN' g_t_itab-ebeln.
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
w_pos = g_t_itab-ebelp - 10.
PERFORM bdc_field USING 'RM06E-EBELP' w_pos.
w_tcode = 'ME32K'.
ENDFORM. " BDC_HEADER_change
*& Form BDC_INSERT
text
-->P_W_TCODE text
FORM bdc_insert USING p_w_tcode.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = w_tcode
TABLES
dynprotab = bdcdata
EXCEPTIONS
internal_error = 01
not_open = 02
queue_error = 03
tcode_invalid = 04.
CASE sy-subrc.
WHEN 0.
WHEN OTHERS.
WRITE: / 'BDC INSERT ERROR', sy-subrc.
ENDCASE.
ENDFORM. " BDC_INSERT
*& Form BDC_CLOSE_GROUP
text
--> p1 text
<-- p2 text
FORM bdc_close_group .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
CASE sy-subrc.
WHEN 0.
WHEN OTHERS.
WRITE: / 'BDC CLOSE ERROR', sy-subrc.
ENDCASE.
ENDFORM. " BDC_CLOSE_GROUP
*& Form bdc_dynpro
text
-->P_0658 text
-->P_0659 text
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*& Form BDC_FIELD
text
-->P_0688 text
-->P_W_POS text
FORM bdc_field USING field value.
CLEAR bdcdata.
bdcdata-fnam = field.
bdcdata-fval = value.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
*& Form load_dataset
text
--> p1 text
<-- p2 text
FORM load_dataset .
load dataset
LOOP AT g_t_itab INTO g_r_itab.
Load dataset with records needed for direct input
MOVE-CORRESPONDING g_r_itab TO g_t_itab.
AT NEW ebeln.
PERFORM load_dataset_mbepoh USING w_phys_outfil1_tx.
ENDAT.
PERFORM load_dataset_mbepoi USING w_phys_outfil1_tx.
ENDLOOP.
ENDFORM. " load_dataset
*& Form load_dataset_mbepoh
text
-->P_W_PHYS_OUTFIL1_TX text
FORM load_dataset_mbepoh USING p_dataset.
CLEAR rec1.
MOVE-CORRESPONDING g_t_itab TO rec1.
rec1-stype = '1'.
rec1-ernam = sy-uname.
TRANSFER rec1 TO p_dataset.
ENDFORM. " load_dataset_mbepoh
*& Form load_dataset_mbepoi
text
-->P_W_PHYS_OUTFIL1_TX text
FORM load_dataset_mbepoi USING p_dataset.
CLEAR rec2.
fields for MBEPOH
ADD 1 TO w_good_i.
MOVE-CORRESPONDING g_t_itab TO rec2.
rec2-stype = '2'.
rec2-werks = p_nwerks.
rec2-ematn = g_t_itab-matnr.
TRANSFER rec2 TO p_dataset.
ENDFORM. " load_dataset_mbepoi
*& Form BDC_DETAIL
text
--> p1 text
<-- p2 text
FORM bdc_detail .
DATA: w_ktmng_tx(11),
w_peinh_tx(5) TYPE c,
w_price_p(13) TYPE p DECIMALS 6,
w_price2_p(13) TYPE p DECIMALS 2,
w_price3_p(13) TYPE p DECIMALS 3,
w_price0_p(13) TYPE p DECIMALS 0,
w_cent_p TYPE p DECIMALS 2,
w_peinh_n(5) TYPE n,
w_price_tx(14).
accumulate lines to determine if page_down required
ADD 1 TO w_addit_i.
ADD 1 TO w_dtl_cnt_i.
ADD 1 TO w_line_i.
IF w_line_i > 12.
w_line_i = 2.
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_field USING 'BDC_OKCODE' '=NP'.
ENDIF.
get material unit of measure
CLEAR mara-meins.
SELECT SINGLE * FROM mara WHERE matnr = g_t_itab-matnr.
w_price_tx = g_t_itab-netpr.
w_peinh_tx = g_t_itab-peinh.
IF g_t_itab-ktmng = 0.
g_t_itab-ktmng = 1.
ENDIF.
w_ktmng_tx = g_t_itab-ktmng.
get decimal places of currency
TCURX-CURRDEC = 2.
SELECT SINGLE * FROM TCURX WHERE CURRKEY = g_t_itab-waers.
multiply Price
W_PRICE_P = g_t_itab-netpr.
CASE TCURX-CURRDEC.
WHEN 0.
W_PRICE_P = g_t_itab-netpr * 100.
W_PRICE0_P = W_PRICE_P.
W_PRICE_TX = W_PRICE0_P.
WHEN 2.
W_PRICE2_P = W_PRICE_P.
W_PRICE_TX = W_PRICE2_P.
WHEN 3.
W_PRICE3_P = W_PRICE_P.
W_PRICE_TX = W_PRICE3_P.
ENDCASE.
material overview screen (with enter)
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_field USING 'BDC_OKCODE' '=DETA'.
PERFORM bdc_field_idx USING 'RM06E-TCSELFLAG' 'X' w_line_i.
PERFORM bdc_field_idx USING 'EKPO-EMATN' g_t_itab-matnr w_line_i.
PERFORM bdc_field_idx USING 'EKPO-KTMNG' w_ktmng_tx w_line_i.
PERFORM bdc_field_idx USING 'EKPO-NETPR' w_price_tx w_line_i.
PERFORM bdc_field_idx USING 'EKPO-PEINH' w_peinh_tx w_line_i.
PERFORM bdc_field_idx USING 'EKPO-BPRME' mara-meins w_line_i.
PERFORM bdc_field_idx USING 'EKPO-WERKS' p_nwerks w_line_i.
PERFORM bdc_field_idx USING 'EKPO-LGORT' g_t_itab-lgort w_line_i.
IF g_t_itab-pstyp = '3'.
g_t_itab-pstyp = 'L'.
ELSE.
CLEAR g_t_itab-pstyp.
ENDIF.
PERFORM bdc_field_idx USING 'RM06E-EPSTP' g_t_itab-pstyp w_line_i.
item details screen
PERFORM bdc_dynpro USING 'SAPMM06E' '0211'.
PERFORM bdc_field USING 'BDC_OKCODE' '=OR'.
PERFORM bdc_field USING 'EKPO-SPINF' 'B'.
PERFORM bdc_field USING 'EKPO-BSTAE' '0001'.
PERFORM bdc_field USING 'EKPO-MWSKZ' g_t_itab-mwskz.
PERFORM bdc_field USING 'EKPO-IDNLF' g_t_itab-idnlf.
PERFORM bdc_field USING 'EKPO-REPOS' 'X'.
PERFORM bdc_field USING 'EKPO-EVERS' g_t_itab-evers.
PERFORM bdc_field USING 'EKPO-KZABS' 'X'.
PERFORM bdc_field USING 'EKPO-NETPR' w_price_tx. "deliberate
PERFORM bdc_field USING 'EKPO-PEINH' w_peinh_tx . "Overwriting
Source list
PERFORM bdc_dynpro USING 'SAPLMEOR' '0220'.
PERFORM bdc_field USING 'BDC_OKCODE' 'EN'.
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)'.
PERFORM bdc_field USING 'EORD-VDATU(01)' '01062004'.
PERFORM bdc_field USING 'EORD-BDATU(01)' '31122999'.
PERFORM bdc_field USING 'EORD-FEBEL(01)' ' '.
PERFORM bdc_field USING 'EORD-AUTET(01)' '1'.
GOTO Conditions
PERFORM bdc_dynpro USING 'SAPMM06E' '0211'.
PERFORM bdc_field USING 'BDC_OKCODE' '=KO'.
PERFORM bdc_dynpro USING 'SAPMV13A' '0201'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BACK'.
ENDFORM. " BDC_DETAIL
*& Form BDC_FIELD_IDX
text
-->P_1390 text
-->P_G_T_ITAB_PSTYP text
-->P_W_LINE_I text
FORM bdc_field_idx USING field LIKE bdcdata-fnam
value p_index TYPE i.
DATA: w_index_tx(2).
UNPACK p_index TO w_index_tx.
CLEAR bdcdata.
CONCATENATE field '(' w_index_tx ')' INTO field.
bdcdata-fnam = field.
bdcdata-fval = value.
APPEND bdcdata.
ENDFORM. " BDC_FIELD_IDX
regards, -
Reading the data from table control and write log.
Hi all,
In va01 trasaction i have table control 'All item'.
I want to write value of some columns,( Article no, Order, plant ) so on into ecatt Log file after saving the trasction, for all rows which is having article no.
Is there any possibility in eCATT with going to GETGUI function which is static to spacefic field.
Regards,
SreeHi Sreedhar,
There are two types of variable values you find in transactions, one system generated(generally the unique values) and then the static field values..
When you want to go for the static field values you can use GETGUI. You can use the same GETGUI n number of times according to the situation(like in loops etc) and for the system generated messages we can handle them from the message blocks.
MESSAGE.
ENDMESSAGE.
In the message block make a rule for the message that you are expecting like
'E' MSGNR(the message number) and give a variable in the fields MSGV1/MSGV2 where ever you are getting the unique generated value(according to the log) and you can use that variable for LOG purpose..
Confirm me whether you were looking for this or something else.
Best regards,
Harsha -
Problem in changing(updating) the data in table control
Dear ABAP Experts,
I have a screen with 2 tables fields. 1st table(ZESTHEADER) fields are normal fields in the screen.
2 nd table fileds(ZESTDETAILS) are table control fields in the same screen .
Now i can update the 1st table fields(ZESTHEADER) succesfully But 2 nd table fields(ZESTDETAILS) are not at all updating. please review the below code and let me knwo where iam wrong.
FLOW LOGIC:
PROCESS BEFORE OUTPUT.
loop at itab1 with control VCONTROL CURSOR VCONTROL-CURRENT_LINE.
MODULE STATUS_0100.
endloop.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
loop at itab1.
endloop.
module mod1.
module user_exit.
CODE:
PROGRAM ZEST_HEADER2 message-id ymsg.
tables: zestheader,zestdetails.
data: itab like zestheader occurs 0 with header line.
data: itab1 like zestdetails occurs 0 with header line.
controls: vcontrol type tableview using screen '100'.
MODULE USER_COMMAND_0100 INPUT.
case sy-ucomm.
when 'ENTR'.
refresh itab.
select * from ZESTHEADER INTO ITAB where ESTMATE_NBR = ZESTHEADER-ESTMATE_NBR.
append itab.
endselect.
if itab is not initial.
refresh itab1.
SELECT * FROM ZESTDETAILS INTO table ITAB1 for all entries in itab wHERE ESTMATE_NBR = itab-ESTMATE_NBR.
select * from zestdetails INTO ITAB1 where ESTMATE_NBR = itab-ESTMATE_NBR.
append itab1.
endselect.
endif.
when 'UPDA'.
move zestheader to itab.
append itab.
update zestheader from table itab.
move-corresponding zestdetails to itab1.
update zestdetails from table itab1.
append itab1.
if sy-subrc eq 0.
message s002(ymsg).
else.
message e003(ymsg).
endif.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZESTCHNG'.
SET TITLEBAR 'ZESTCHNG2'.
MOVE-CORRESPONDING ITAB TO ZESTHEADER.
MOVE-CORRESPONDING ITAB1 TO ZESTDETAILS.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE User_exit INPUT.
case sy-ucomm.
when 'EXIT'.
leave program.
endcase.
ENDMODULE. " User_exit INPUT
*& Module mod1 INPUT
text
MODULE mod1 INPUT.
ENDMODULE. " mod1 INPUTHi Ramesh,
For performance : Change the code.
1. select * from ZESTHEADER INTO table ITAB
where ESTMATE_NBR = ZESTHEADER-ESTMATE_NBR.
2. if itab is not initial.
refresh itab1.
SELECT * FROM ZESTDETAILS INTO table ITAB1
for all entries in itab wHERE ESTMATE_NBR = itab-ESTMATE_NBR.
append itab1. No need of append itab1 here.
3.This part i am not able to under stand.
when 'UPDA'.
move zestheader to itab.
append itab.
Above code by writing move zestheader to itab" how data will move from database table"
***In below code without loop how you are moving data to internal table itab1.
update zestheader from table itab.
move-corresponding zestdetails to itab1.
update zestdetails from table itab1.
append itab1.
if sy-subrc eq 0.
message s002(ymsg).
else.
message e003(ymsg).
endif.
I think you have not pasted full code -
About the data of table control in tab strip control
hi experts:
I use screen 0001 include one tab strip control,and its include two subscreens,one of it is table control(subscreen is 0003).
I input data in the table control,when I click the button of tab strip control to change to another subscreen 0002.I found that the data I input into table control have not append to internal table.how can I solve this problem?
appreciate your reply.thanks a lot.Hi,
in the Main Screen
In PAI
call subscreen sub. ---> here it calls the subscreen where the tablecontrol is placed
then call module user_command
In the subscreen where you have your table control
in PAI
Loop at itab.
module modify_tab.
endloop.
module modify_tab,
descirbe table itab lines tc-lilnes.
if tc-lines <= tc-current_line.
modify itab index tc-current_lilne.
else.
append itab.
endmodule.
next you call the module user_command on the main screen
module user_command
case sy-ucomm
WHEN 'TAB1'
TS-ACTIVE_TAB = 'TAB1'
when tab2.
ts-active_tab = 'TAB2'.
endmodule
further you can take the help of CONTROL EXAMPLES in DWDM tcode
Regards
Ramchander Rao.K -
How to integrate Oracle Ebs to FDQM to load the data to Essbase
Hi Experts,
I need a document regarding how to integrate Oracle EBS to FDQM.I am taking target as Essbase.I know how to integrate to HFM and loading the data to HFM.So please share me the document like How to get source file from E-Buisiness suite to load into Essbase.Pleaae share with an example
Thanks in advanceThe following link:
http://docs.oracle.com/cd/E24674_01/epm.1112/fdm_adapter_readmes/es_g4_h_target_adapter_readme.html
You need to configure the target dimensions of Essbase within the Essbase adapter of FDQM.
For source integration of EBS, you have two options:
1. Use Oracle ERPI (ERP Integrator)
2. Make a custom data pump import script in FDQM to retrieve data from EBS database -
Data in table control not seen for the Standard Transaction Iview
Hi
I am creating one Standard Transaction Iview for CATS .
While doing print preview in IE 6 , I am not able to see data in Table control(Data Entry Area ).
Can you please provide me the solution for how I can see the data in Table Control
Regards
RuturajHi David,
I too struggled a lot to find the solution ....atlast got it....It possible by exporting and importing the table control values to Database Index.
1. AT SELECTION SCREEN OUTPUT event triggers when you SAVE and GET the variant.
2. So write the logic in AT SELECTION-SCREEN OUTPUT event.
CONSTANTS: c_vari TYPE char30 VALUE
'(SAPLSVAR)RSVAR-VARIANT'.
FIELD-SYMBOLS: <lfs_vari> TYPE ANY.
ASSIGN: (c_vari) TO <lfs_vari>.
IF sy-subrc = 0.
IF <lfs_vari> IS NOT INITIAL.
IF ok_code = 'SPOS'.
EXPORT gt_chars[] TO DATABASE vari(tc) ID <lfs_vari>.
ELSEIF ok_code = space.
IMPORT gt_chars[] FROM DATABASE vari(tc) ID <lfs_vari>.
ENDIF.
ENDIF.
ENDIF.
In the above logic if OK_CODE is 'SPOS', that is for saving the variant with the name <lfs_vari>.
Similarly if the OK_CODE is other than, 'GET'....that is for retrieving the variant. But in case of getting the variant OK_CODE is not filled with 'GET', but variant will be filled. We should take variant filling as base and do as done above.
It worked for me..... -
How to delete data in table control
Hi,
I am doing module pool programming. After the user enters the data in table control after saving the data. if the user wants to remove the line item the line item shd be removed from the screen and data base.
Please Give me vaulable Suggestions
RegardsHi,
Screen 8002 (with table control) --> select records --> press delete button --> delete selected records
Now you wan to delete those records selected by the user at runtime when DELETE button is clicked.
Take another internal table and work area same as the initial internal table and work area used in screen 8002 which is to be used to delete the selected data.
Take the names of the input/output fields as work_area-field_name and select column in table control as work_area-flag.
Also take a flag field of size 1 datatype character as the last field in the internal table and work area while declaration.
You must have passed a code in PBO of the screen for reading internal table into the table control.
So it reads the internal table into the table control whenever you perform any action on use command.
All you need to do is to write a code to modify the internal table form the table control while performing any user action.
Remember to change the LINE SEL option in attributes of table control as MULTIPLE.
At screen logic,
PROCESS BEFORE OUTPUT.
MODULE status_8002. "for pf-status
LOOP WITH CONTROL po_tab. "po_tab is table control
MODULE pass_data. "to pass data into table control from internal table
ENDLOOP.
PROCESS AFTER INPUT.
MODULE user_command_8002. "for user command(back and exit)
LOOP WITH CONTROL po_tab.
MODULE modify_data. "to modify data from table control into table control
ENDLOOP.
MODULE delete. "to delete the selected records
In PBO,
*& Module STATUS_8002 OUTPUT
MODULE status_8002 OUTPUT.
SET pf-status 'ZAB_PFSTA'. " pf-status
DATA : line_count TYPE i.
DESCIRBE TABLE it_ekpo
LINES line_count.
po_tab-lines = line_count + 10.
" to make table control scrollable
ENDMODULE. " STATUS_8002 OUTPUT
*& Module PASS_DATA OUTPUT
MODULE pass_data OUTPUT.
READ TABLE it_ekpo into wa_ekpo INDEX po_tab-current_line.
ENDMODULE. " PASS_DATA OUTPUT
"it_ekpo is internal table and wa_ekpo is the work area
In PAI,
*& Module MODIFY_DATA INPUT
MODULE MODIFY_DATA INPUT.
MODIFY IT_EKPO INDEX PO_TAB-CURRENT_LINE FROM WA_EKPO.
"modify records from table control into the internal table
ENDMODULE. " MODIFY_DATA INPUT
*& Module DELETE INPUT
MODULE DELETE INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN 'DELETE'. "when delete button is clicked
SORT IT_EKPO BY FLAG DESCENDING. "sort by flag(selection column value)
CLEAR WA_EKPO1.
CLEAR WA_EKPO.
REFRESH IT_EKPO1.
LOOP AT IT_EKPO INTO WA_EKPO WHERE FLAG = 'X'.
DATA : J TYPE I.
CLEAR J.
J = SY-TABIX. "assign index value if a record is selected
MOVE-CORRESPONDING WA_EKPO TO WA_EKPO1. "append selected records to another
"work area and append to another internal table to delete
APPEND WA_EKPO1 TO IT_EKPO1.
DELETE IT_EKPO. "delete the selected records from initial internal table
" to reflect the changes on the table control
ENDLOOP.
IF J = 0.
MESSAGE I006. "if no record selected
ELSE. "if some records are selected
DELETE ZEKPO FROM TABLE IT_EKPO1. "delete from database table
COMMIT WORK.
IF SY-SUBRC = 0.
MESSAGE S007. "success message (records deleted)
ENDIF.
ENDIF.
ENDCASE.
ENDMODULE. " DELETE INPUT
Now at PAI, you have delete records and these changes are reflected back to the internal table.
Now when PBO is executed it will again read the initial internal table and will not show the deleted records.
Hope this solves your problem.
Thanks & Regards,
Tarun Gambhir -
How to clear data in Table Control.
hi! all
How to clear the data in table control.
i have a Table control which displays column A data from the previous screen and allows to enter column B and column C and i have a button CLEAR, when i click CLEAR button the Data displaying in table control has to be cleared. how to do it.
Regards,
NagulanHi,
Loop over the internal table of table control & clear data from table control.
loop at tctab.
clear tctab.
modify tctab.
endloop.
Best regards,
Prashant -
How to write a pgm to change the existing encrypted password
Hi all,
can anybody tell me how to write a pgm to change the existing encrypted password.
thanks in advance.Well, it's going to depend on how it's implemented in the current system.
But basically it's going to look a lot like the current login actions. Presumably you have something that takes the user ID and password, encrypts the password, looks up the encrypted password in the database matching that user ID, and compares them. This functionality would also take a new password (preferably twice so they can be checked for consistency), and if the existing encrypted passwords match, it will encrypt the new password and put it in the database where the old one was.
And if the application has a mechanism for new users to sign up, it'll look a lot like this as well.
But I'm just guessing. This is all going to depend on how the existing functionality is written. Probably the best thing you can do is talk to a programmer at your organization who has worked on the application, and ask them for help.
Hope this helps anyway. -
HR ABAP How to Write BDC For Infotype 0586
Hi Experts
Can Any One tell me how to write BDC for Infotype 0586 and also 585.
If we enter into the maintaining Screen, the lines in the Screen will dynamically changing depending on the values.
When I am doing recording , If I press page down after entering values in top lines, the lines are changing and the records are not updating Correctly.
I need to write BDC to Create Change.
Can any one please help me in this regard?
Thanks in Advance.
Regards
Avinash.http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
http://www.google.co.in/search?hl=en&q=SAPBDCtable+control&meta=
http://www.sap-basis-abap.com/abap/handling-table-control-in-bdc.htm
http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
http://www.sap-img.com/abap/question-about-bdc-program.htm -
How to write BDC for tcode F-32
Hi Experts,
How to write BDC for tcode F-32 .
is it possible i recorded in SHDB BUT IF I AM DOING IT'S COMING WRONG .
plz guide me sir.
regars,
Hari
Edited by: hari311 on Oct 27, 2009 9:22 AMThere might be that when u provide the data in the selction screen of F-32 and press process open items some custom program might be attached to it and gets executed...
chek it out..
if so..
pass the bdcdata of the second screen into a memory id
export t_bdcdata into v_memid.
in that custoom report jus import this..
then fill the t_bdcdata with the header information and call the transcation f-32..
Edited by: imran khan on Oct 27, 2009 9:35 AM -
Hi,
How to write BDC, for Tcode KP06, How to handle the table control in that Tcode.
or any other way to upload data for this Tcode.
Regards
ManoharHi,
check the sample code for transaction ME51 and ME21.
PARAMETERS:
p_fname TYPE ibipparms-path.
*" Data declarations...................................................
Work variables *
DATA:
fs_bdc TYPE bdcdata,
fs_msg TYPE bdcmsgcoll.
Internal table to hold bdc data *
DATA:
t_bdc LIKE
STANDARD TABLE
OF fs_bdc.
Internal table to hold bdcmessage data *
DATA:
t_msg LIKE
STANDARD TABLE
OF fs_msg.
DATA:
w_string(50) TYPE c,
w_string1(19) TYPE c,
w_message(72) TYPE c,
w_num TYPE i VALUE 1,
w_num1 TYPE i.
*" Type declarations...................................................
Type declaration of the structure to hold header data *
DATA:
BEGIN OF t_header OCCURS 0,
ftype TYPE c,
doctype(10) TYPE c,
acctcat(4) TYPE c,
date(10) TYPE c,
plant(4) TYPE n,
text(10) TYPE c,
qty(5) TYPE n,
units(5) TYPE c,
pgrp(3) TYPE n,
mgrp(3) TYPE n,
price(2) TYPE n,
gacct(6) TYPE n,
cost(4) TYPE n,
END OF t_header.
START-OF-SELECTION EVENT *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
file_name = p_fname
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'c:\temp\item2.txt'
FILETYPE = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = t_header
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. " IF SY-SUBRC <> 0
LOOP AT t_header WHERE ftype = 'H'..
CLEAR fs_msg.
IF t_header-ftype = 'H'.
PERFORM bdc_program USING 'SAPMM06B' '0100'.
PERFORM bdc_field USING 'eban-BSART' t_header-doctype.
PERFORM bdc_field USING 'eban-KNTTP' t_header-acctcat.
PERFORM bdc_field USING 'RM06B-EEIND' t_header-date.
PERFORM bdc_field USING 'eban-WERKS' t_header-plant.
PERFORM bdc_field USING 'BDC_OKCODE' 'AB'.
ENDIF.
IF t_header-ftype = 'I'.
LOOP AT t_header WHERE ftype = 'I'.
PERFORM bdc_program USING 'SAPMM06B' '0106'.
w_string = 'EBAN-TXZ01(01)'.
w_string+12(1) = w_num.
PERFORM bdc_field USING w_string t_header-text.
w_string = 'EBAN-MENGE(01)'.
w_string+12(1) = w_num.
PERFORM bdc_field USING w_string t_header-qty.
w_string = 'EBAN-MEINS(01)'.
w_string+12(1) = w_num.
PERFORM bdc_field USING w_string t_header-units.
w_string = 'EBAN-EKGRP(01)'.
w_string+12(1) = w_num.
PERFORM bdc_field USING w_string t_header-pgrp.
w_string = 'EBAN-MATKL(01)'.
w_string+12(1) = w_num.
PERFORM bdc_field USING w_string t_header-mgrp.
PERFORM bdc_field USING 'BDC_OKCODE' '=KN'.
w_num = w_num + 1.
PERFORM bdc_program USING 'SAPMM06B' '0102'.
PERFORM bdc_field USING 'EBAN-preis' t_header-price.
PERFORM bdc_field USING 'BDC_OKCODE' '=KN'.
PERFORM bdc_program USING 'SAPMM06B' '0505'.
PERFORM bdc_field USING 'BDC_OKCODE' '=KWE'.
PERFORM bdc_program USING 'SAPlkacb' '0002'.
PERFORM bdc_field USING 'EBAN-sakto' t_header-gacct.
PERFORM bdc_field USING 'cobl-kostl' t_header-cost.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.
PERFORM bdc_program USING 'SAPMM06B' '0102'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
ENDIF.
ENDLOOP.
ENDLOOP.
PERFORM bdc_program USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_OKCODE' 'BU'.
PERFORM BDC_PROGRAM USING 'SAPMM06E' '100'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' 'BACK'.
CALL TRANSACTION 'ME51' USING t_bdc MODE 'N' MESSAGES INTO t_msg.
LOOP AT t_msg INTO fs_msg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = fs_msg-msgid
lang = sy-langu
no = fs_msg-msgnr
v1 = fs_msg-msgv1
v2 = fs_msg-msgv2
v3 = fs_msg-msgv3
v4 = fs_msg-msgv4
IMPORTING
msg = w_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
WRITE:
/ w_message.
ENDLOOP.
CLEAR t_bdc[].
PERFORM bdc_program USING 'SAPMM06E' '0100'.
PERFORM bdc_field USING 'EKKO-LIFNR' '1000'.
PERFORM bdc_field USING 'EKKO-EKORG' '1000'.
PERFORM bdc_field USING 'EKKO-EKGRP' '100'.
PERFORM bdc_field USING 'BDC_OKCODE' 'BS'.
PERFORM bdc_program USING 'SAPMM06E' '0501'.
PERFORM bdc_field USING 'EKET-BANFN' fs_msg-msgv1.
PERFORM bdc_field USING 'BDC_OKCODE' '=KOPF'.
PERFORM bdc_program USING 'SAPMM06E' '0125'.
PERFORM bdc_field USING 'BDC_OKCODE' 'MALL'.
PERFORM bdc_program USING 'SAPMM06E' '0125'.
PERFORM bdc_field USING 'BDC_OKCODE' 'REFH'.
PERFORM bdc_program USING 'SAPMM06E' '0504'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.
PERFORM bdc_program USING 'SAPMM06E' '0111'.
PERFORM bdc_field USING 'BDC_OKCODE' '=NEXP'.
*perform bdc_program using 'SAPLSPO1' '0300'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' 'YES'.
PERFORM bdc_program USING 'SAPMM06E' '0504'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.
PERFORM bdc_program USING 'SAPMM06E' '0111'.
PERFORM bdc_field USING 'BDC_OKCODE' '=NEXP'.
*perform bdc_program using 'SAPMM06E' '0504'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTE'.
*perform bdc_program using 'SAPMM06E' '0111'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=NEXP'.
perform bdc_program using 'SAPMM06E' '0504'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTE'.
perform bdc_program using 'SAPMM06E' '0504'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTE'.
*perform bdc_program using 'SAPMM06E' '0111'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=NEXP'.
PERFORM bdc_program USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_OKCODE' 'BU'.
CALL TRANSACTION 'ME21' USING t_bdc MODE 'N' MESSAGES INTO t_msg
LOOP AT t_msg INTO fs_msg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = fs_msg-msgid
lang = sy-langu
no = fs_msg-msgnr
v1 = fs_msg-msgv1
v2 = fs_msg-msgv2
v3 = fs_msg-msgv3
v4 = fs_msg-msgv4
IMPORTING
msg = w_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
WRITE:
/ W_message.
ENDLOOP. " LOOP T_MSG
CLEAR t_bdc[].
PERFORM bdc_program USING 'SAPMM06E' '0105'.
PERFORM bdc_field USING 'RM06E-BSTNR' fs_msg-msgv2.
PERFORM bdc_field USING 'BDC_OKCODE' 'AB'.
w_num1 = w_num - 1.
DO w_num1 TIMES.
w_string1 = 'RM06E-TCSELFLAG(00)'.
w_string1+17(1) = w_num1.
PERFORM bdc_program USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING w_string1 'X'.
PERFORM bdc_field USING 'BDC_OKCODE' 'DL'.
w_num1 = w_num1 - 1.
ENDDO. " DO W_NUM1
PERFORM bdc_program USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_OKCODE' 'BU'.
CALL TRANSACTION 'ME22' USING t_bdc MODE 'A' MESSAGES INTO t_msg.
LOOP AT t_msg INTO fs_msg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = fs_msg-msgid
lang = sy-langu
no = fs_msg-msgnr
v1 = fs_msg-msgv1
v2 = fs_msg-msgv2
v3 = fs_msg-msgv3
v4 = fs_msg-msgv4
IMPORTING
msg = w_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
WRITE:
/ w_message.
ENDLOOP. " LOOP T_MSG
*& Form bdc_program
This subroutine gives screenname and screen number *
There are no interface parameters to be passed to this subroutine. *
FORM bdc_program USING value(p_screen)
value(p_num).
CLEAR fs_bdc.
fs_bdc-program = p_screen.
fs_bdc-dynpro = p_num.
fs_bdc-dynbegin = 'X'.
APPEND fs_bdc TO t_bdc.
ENDFORM. " FORM BDC_PROGRAM
*& Form BDC_FIELD
This subroutine gives the field name and field value *
There are no interface parameters to be passed to this subroutine. *
FORM bdc_field USING value(p_name)
value(p_value).
CLEAR fs_bdc.
fs_bdc-fnam = p_name.
fs_bdc-fval = p_value.
APPEND fs_bdc TO t_bdc.
ENDFORM. " FORM BDC_FIELD
Regards,
jaya -
Down load the data through BDC
Hi ,
I need to know how to down load the data through BDC , pls suggest me how we can do through data download through only BDC u2013 with datas-- Act group, Sales area ,customer pricing procedure ,shipping condition of customer master.
If you need ant further information pls let me know
Regards
Shivashttp://help.sap.com/saphelp_47x200/helpdata/en/67/42fcccf61011d1bcf9080009b4534c/frameset.htm
http://www.sapunleashed.co.uk/bdc/bdc_recording.htm
http://myweb.dal.ca/hchinni/sap/bdc_home.htm
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/bdc&
http://www.sap-img.com/abap/learning-bdc-programming.htm
http://www.sapdevelopment.co.uk/bdc/bdchome.htm
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://help.sap.com/saphelp_47x200/helpdata/en/69/c250684ba111d189750000e8322d00/frameset.htm
http://www.sapbrain.com/TUTORIALS/TECHNICAL/BDC_tutorial.html
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://www.sap-img.com/abap/question-about-bdc-program.htm
http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
http://www.planetsap.com/bdc_main_page.htm
call Transaction or session method ?
http://myweb.dal.ca/hchinni/sap/bdc_home.htm
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/bdc&
http://www.sap-img.com/abap/learning-bdc-programming.htm
http://www.sapdevelopment.co.uk/bdc/bdchome.htm
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://help.sap.com/saphelp_47x200/helpdata/en/69/c250684ba111d189750000e8322d00/frameset.htm
http://www.sapbrain.com/TUTORIALS/TECHNICAL/BDC_tutorial.html
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://www.sap-img.com/abap/question-about-bdc-program.htm
http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
http://www.planetsap.com/bdc_main_page.htm
Maybe you are looking for
-
Crystal Reports for B1 on Hana version 9.0, Invalid column name DOCCODE
Hi Experts, I am new to SAP B1 for HANA, now I am learning how to use Crystal Report with SAP Business one for HANA version 9.0. I am facing this issue while trying to save the crystal report inside SAP B1 for hana. Please help me to fix the issue Th
-
Configuration of 11.1.2.2 on linux
HI, I am trying to configure 11.1.2.2 Essbase on linux (standalone Essbase). When I run configurator (in console mode) I have following problem. I complete all things I need to complete and on the last screen I press next and the configurator hangs (
-
How can I get i phone 4s to work with a tom tom car kit
I upgraded to an i phone 4s from an I phone 3gs. My tom tom app worked perfectly with the tom tom car kit on my old phone but now I have managed to get it to charge when plugged into the car kit but there is only poor gps reception showing, any Idea
-
Creating Target links from iweb blog
how can i create a link that will open a new window and not navigate from my blog? iweb automatically inserts 'http://' and if i add a link like 'jack johson - do you remember' iweb reads it as: http://<a href="http.... this option should be a must h
-
The quality of the images is poor in safari. They seem to be shown in 256 colours. This is clearly a default, except I can't find out how to amend it. Help please!