I want to put bdc code in MIGO save time.
Hi all
I have one problem with migo badi at time of migo goods issue in post method i want to run background bdc.and i want to change user status with tht bdc..but perform is not permitted so how could i solve this..
Thanks.
Hi,
u need to enhance the BADI u r using, find the User Exits or Enhancement Points in the BADI and paste your code over there.
hope this solves the issue ...
all the best!!
thanks
ravi
Similar Messages
-
i need helppppppp
Follow the instructions here. They are also in the user's guide.
iPhone, iPad, iPod touch: Wrong passcode results in red disabled screen -
How to use bdc code in a report for save button
hi to all can anybody please give some hints that how can i place the BDC code for the save button to pass the values from the editable grid to the standard table here i am sending my code .please advice me.
Moderator Message: Please post only relevant portions of your code. There is a 2,500 character per post limit.
here the second grid is editable.and i have to make changes in the second grid and save it to the standard tables. please advice me resma
Edited by: kishan P on Sep 13, 2010 3:59 PMHi,
I have done that many times. Create a button in the toolbar,say 'SAVE'. Write the code in the subroutine user command.For example :
*& Form USER_COMMAND
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA : REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_VALID TYPE C.
*Code to reflect the changes done in the internal table
IF REF_GRID IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF_GRID.
ENDIF.
IF NOT REF_GRID IS INITIAL.
CALL METHOD REF_GRID->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_VALID.
ENDIF.
CASE SY-UCOMM.
WHEN 'SAVE'.
PERFORM BDC."Write all you BDC code in this subroutine
ENDCASE.
ENDFORM.
Hope this will help.
Thanks & Regards,
Rock. -
I am so confused. I am thinking about buying an iPhone 4S but I want to use those card things that you can put the code in for the phone is this possible? I'm not talking about the 50$ unlimited card just the regular 20$ cards that hold mins and texts... As long as it has the support for the service it's hooked up to?
As far as I know there is no US cell carrier that allows pay as you go with an iPhone. You can purchase an unlocked iPhone 4S at an Apple Store and try it with a non-supported carrier.
-
BDC Code for Loan to Employees
Dear Friends,
I have to write a BDC where I have to debit the G/L of Empoyee Loan and credit individual employee accounts.
If you have a similar BDC code available with you please share the same with me.
Regards,
Alok.hi
First go to tcode SHDB, there select new recording,give a name for the recording and then give the tcode for which u would want to do recording. Now, enter all the values in the tcode completely and then save it.
Now, come back to shdb,..select ur recording and say create a program tab. Select option from the recording aand then save the program..save the program.
Now, upload the flat file from PC using GUI_upload for txt file and ALSM_EXCEL_TO_INTERNAL_TABLE..
Now, pass the internal table values to the perform statements or subroutines and put them in a loop.
Regards,
Vishwa. -
Hi ALL i have a BDC code it is not working properly
this BDC code is not working properly , when ever the file is transfering BDC is aborting in the case of invalid material/batch comes into teh picture... so please could you ''Check for invalid material/batch combinations so they are not processed by the BDC in the program and correctly output in an exception report''
*****************************CODE HERE*****************************
S E L E C T I O N S C R E E N
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_file LIKE rlgrap-filename,
p_arch LIKE rlgrap-filename. "RM080107
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK b1.
I N C L U D E S
INCLUDE zwm_np_stock_recon_top.
INCLUDE zwm_np_stock_recon_f01.
I N I T I A L I Z A T I O N
INITIALIZATION.
PERFORM get_interface_filename USING c_interface_file p_file.
PERFORM get_interface_filename USING c_archive_file p_arch."RM080107
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
PERFORM read_file USING p_file.
PERFORM pre_processing.
E N D O F S E L E C T I O N
END-OF-SELECTION.
PERFORM process_checks.
IF w_no_change = 'X'.
WRITE: / text-b03.
WRITE: / sy-uline(34).
ELSE.
PERFORM bdc_mi09.
PERFORM file_check_report.
PERFORM bdc_report.
ENDIF.
PERFORM post_process_checks.
*-- Move the processed file to archive directory
PERFORM move_file.
...*************.........first include...................************
INCLUDE ZWM_NP_STOCK_RECON_TOP *
Data declaration ----------------------------------------------
TYPES: st_rawdata(2000) TYPE c.
TYPES: BEGIN OF st_stck_cnt,
werks TYPE iseg-werks, "plant
lgort TYPE iseg-lgort, "storage location
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
vfdat TYPE mch1-vfdat, "Sell by date
lwedt TYPE mch1-lwedt, "Manufacture date
quarn(8) TYPE n, "qaunrantine quantity
menge(8) TYPE n, "quantity on hand
message(1), "Message Type (E/W/I)
msg_txt TYPE t100-text, "Message Text
zerostck(1), "Zero stock identifier "RM220307
END OF st_stck_cnt.
TYPES: BEGIN OF st_batch_errors,
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
clabs TYPE mchb-clabs, "Stock Balance
END OF st_batch_errors.
DATA:
t_rawdata TYPE TABLE OF st_rawdata,
w_rawdata TYPE st_rawdata,
t_stck_cnt TYPE TABLE OF st_stck_cnt,
d_stck_cnt TYPE TABLE OF st_stck_cnt, "RM191006
w_stck_cnt TYPE st_stck_cnt,
t_batch_errors TYPE TABLE OF st_batch_errors,
w_batch_errors TYPE st_batch_errors,
t_messtab LIKE bdcmsgcoll OCCURS 0,
w_messtab LIKE LINE OF t_messtab,
w_no_change.
CONSTANTS: c_interface_file(26) TYPE c VALUE 'ZNP_STOCK_RECON',
c_archive_file(26) TYPE c
VALUE 'ZNP_STOCK_RECON_ARCHIVE'. "RM080107
.*************................second include..........************
***INCLUDE ZWM_NEXTPHARMA_STOKRECON_F01 .
*& Form read_file
reads NextPharma file sent through via webmethods
-->P_FILENAME
FORM read_file USING p_filename.
CLEAR: t_rawdata,
w_rawdata.
REFRESH: t_rawdata.
OPEN DATASET p_filename FOR INPUT IN TEXT MODE.
IF sy-subrc <> 0.
MESSAGE e720(01).
ENDIF.
DO.
READ DATASET p_filename INTO w_rawdata.
IF sy-subrc <> 0.
EXIT.
ELSE.
APPEND w_rawdata TO t_rawdata.
ENDIF.
ENDDO.
CLOSE DATASET p_filename.
ENDFORM. " read_file
*& Form pre_processing
Read file values into internal table
FORM pre_processing.
DATA: lw_matnr TYPE iseg-matnr.
LOOP AT t_rawdata INTO w_rawdata.
lw_matnr = w_rawdata+21(20). "RM031006
lw_matnr = w_rawdata+22(18). "RM031006
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = lw_matnr
IMPORTING
output = lw_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
MOVE: lw_matnr TO w_stck_cnt-matnr.
w_stck_cnt-werks = w_rawdata+14(4).
w_stck_cnt-lgort = w_rawdata+18(4).
w_stck_cnt-charg = w_rawdata+84(25).
w_stck_cnt-vfdat = w_rawdata+109(8).
w_stck_cnt-lwedt = w_rawdata+117(8).
w_stck_cnt-quarn = w_rawdata+141(8).
w_stck_cnt-menge = w_rawdata+125(8).
APPEND w_stck_cnt TO t_stck_cnt.
CLEAR w_stck_cnt.
ENDLOOP.
SORT t_stck_cnt BY werks
lgort
matnr
charg.
DELETE ADJACENT DUPLICATES FROM t_stck_cnt.
ENDFORM. " pre_processing
*& Form bdc_mi09
Run file data via BDC TCODE: MI09
FORM bdc_mi09.
DATA: t_bdcdata TYPE TABLE OF bdcdata,
w_bdcdata TYPE bdcdata,
lw_datum(10) TYPE c,
lw_count(2) TYPE n.
WRITE sy-datum TO lw_datum DD/MM/YYYY.
Front Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0700'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Enter
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '/00'.
APPEND w_bdcdata TO t_bdcdata.
Count Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-ZLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Document Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-BLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Plant
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-WERKS'.
w_bdcdata-fval = w_stck_cnt-werks.
APPEND w_bdcdata TO t_bdcdata.
Storage Location
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-LGORT'.
w_bdcdata-fval = w_stck_cnt-lgort.
APPEND w_bdcdata TO t_bdcdata.
LOOP AT t_stck_cnt INTO w_stck_cnt.
Do not submit items with Errors against them
CHECK w_stck_cnt-message NE 'E' AND
w_stck_cnt-zerostck NE 'X'.
"RM220307
lw_count = lw_count + 1.
Input Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Page Down
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=P+'.
APPEND w_bdcdata TO t_bdcdata.
Material
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-MATNR(01)'.
w_bdcdata-fval = w_stck_cnt-matnr.
APPEND w_bdcdata TO t_bdcdata.
Batch
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-CHARG(01)'.
w_bdcdata-fval = w_stck_cnt-charg.
APPEND w_bdcdata TO t_bdcdata.
IF w_stck_cnt-menge NE 0.
Quantity
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-ERFMG(01)'.
w_bdcdata-fval = w_stck_cnt-menge.
APPEND w_bdcdata TO t_bdcdata.
*-- Begin RM220307 - We need to create an item when the quantity is zero
*-- in file and is non-zero in SAP
ELSE.
Zero Stock indicator
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-XNULL(01)'.
w_bdcdata-fval = 'X'.
APPEND w_bdcdata TO t_bdcdata.
*-- End RM220307
ENDIF.
ENDLOOP.
CHECK lw_count NE 0.
After all line items have been input
Final Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Save Document
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=BU'.
APPEND w_bdcdata TO t_bdcdata.
CALL TRANSACTION 'MI09' USING t_bdcdata
MODE p_mode
MESSAGES INTO t_messtab.
ENDFORM. " bdc_mi09
*& Form bdc_report
Write BDC Messages.
FORM bdc_report.
DATA: lw_text TYPE t100-text.
SKIP.
WRITE: / text-b01.
WRITE: / sy-uline(21).
SKIP.
Write BDC Messages
LOOP AT t_messtab INTO w_messtab WHERE msgspra = sy-langu.
MESSAGE ID w_messtab-msgid TYPE w_messtab-msgtyp
NUMBER w_messtab-msgnr
WITH w_messtab-msgv1
w_messtab-msgv2
w_messtab-msgv3
w_messtab-msgv4
INTO lw_text.
WRITE: / lw_text.
ENDLOOP.
ENDFORM. " bdc_report
*& Form process_checks
Perform process check before creating BDC Session
FORM process_checks.
DATA: lw_clabs LIKE mchb-clabs,
lw_menge LIKE mchb-clabs,
lw_matnr LIKE mara-matnr,
lw_charg LIKE mch1-charg,
lw_fail,
lw_vfdat TYPE mch1-vfdat,
lv_sell TYPE c, "RM191006
lv_qty(8) TYPE c. "RM191006
CLEAR: d_stck_cnt[], d_stck_cnt. "RM191006
Check if any of the stock figures differ from current stock figures
LOOP AT t_stck_cnt INTO w_stck_cnt.
lw_menge = w_stck_cnt-menge.
SELECT SINGLE clabs INTO lw_clabs
FROM mchb
WHERE matnr = w_stck_cnt-matnr
AND werks = w_stck_cnt-werks
AND lgort = w_stck_cnt-lgort
AND charg = w_stck_cnt-charg.
IF sy-subrc = 0.
IF lw_clabs NE lw_menge.
lw_fail = 'X'.
*-- Begin RM220307 - Do not create PI item if the stock is zero in the
*-- file and is zero in SAP
EXIT.
ELSEIF lw_clabs = 0 AND lw_menge = 0.
w_stck_cnt-zerostck = 'X'.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM220307
ELSE.
lw_fail = 'X'.
ERROR
ENDIF.
ENDLOOP.
If no differences are found set NO CHANGE Flag
IF lw_fail NE 'X'.
w_no_change = 'X'.
EXIT.
ENDIF.
Check for Errors in file data
LOOP AT t_stck_cnt INTO w_stck_cnt.
CLEAR lv_sell. "RM191006
SELECT SINGLE matnr INTO lw_matnr
FROM mara
WHERE matnr = w_stck_cnt-matnr.
IF sy-subrc NE 0.
Invalid Material (E)
w_stck_cnt-message = 'E'.
w_stck_cnt-msg_txt = 'Invalid Material'.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ENDIF.
SELECT SINGLE charg vfdat
INTO (lw_charg, lw_vfdat)
FROM mch1 "KOB01 - changed from MCHA
WHERE matnr = w_stck_cnt-matnr
AND charg = w_stck_cnt-charg.
AND werks = w_stck_cnt-werks.
IF sy-subrc NE 0.
Invalid Material Batch (E)
w_stck_cnt-message = 'E'.
CONCATENATE 'Invalid Material Batch for plant' w_stck_cnt-werks
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ELSE.
IF w_stck_cnt-vfdat <> lw_vfdat.
Sell by dates do not match (W)
w_stck_cnt-message = 'W'.
w_stck_cnt-msg_txt =
'Sell by Date does not match Shelf life Expiry Date'.
MODIFY t_stck_cnt FROM w_stck_cnt.
lv_sell = 'X'. "RM191006
CONTINUE. "RM191006
ENDIF.
ENDIF.
IF w_stck_cnt-quarn > 0.
Quarantine balance not Zero (W)
w_stck_cnt-message = 'W'.
*-- Begin RM191006
*-- We do want all warning messages on the report
lv_qty = w_stck_cnt-quarn.
CONDENSE lv_qty NO-GAPS.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_qty
IMPORTING
output = lv_qty.
w_stck_cnt-msg_txt = 'Quarantine balance is not zero'.
CONCATENATE 'Quarantine balance is ' lv_qty '- not zero'
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
IF lv_sell = 'X'.
APPEND w_stck_cnt TO d_stck_cnt.
CLEAR lv_sell.
ELSE.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM191006
ENDIF.
ENDLOOP.
*-- Begin RM191006
*-- Finally get all the records into dummy table to report
APPEND LINES OF t_stck_cnt TO d_stck_cnt.
SORT d_stck_cnt.
DELETE ADJACENT DUPLICATES FROM d_stck_cnt.
*-- End RM191006
ENDFORM. " process_checks
*& Form file_check_report
Write warning and Error messages from File checks
FORM file_check_report.
WRITE: /2 'Material',
22 'Batch',
32 'Sell By',
45 'Message Text'.
WRITE: /2 sy-uline(115).
SKIP.
LOOP AT t_stck_cnt INTO w_stck_cnt. "RM191006
LOOP AT d_stck_cnt INTO w_stck_cnt. "RM191006
CHECK w_stck_cnt-message NE ' '.
WRITE: /2 w_stck_cnt-matnr,
22 w_stck_cnt-charg,
32 w_stck_cnt-vfdat,
43 w_stck_cnt-message,
45 w_stck_cnt-msg_txt.
ENDLOOP.
ENDFORM. " file_check_report
*& Form post_process_checks
Check Material Batches in SAP against NP File
FORM post_process_checks.
RANGES: r_matnr FOR mchb-matnr,
r_lgort FOR mchb-lgort,
r_werks FOR mchb-werks.
SORT t_stck_cnt.
LOOP AT t_stck_cnt INTO w_stck_cnt.
AT END OF matnr.
r_lgort-sign = 'I'.
r_lgort-option = 'EQ'.
r_lgort-low = w_stck_cnt-lgort.
APPEND r_lgort.
r_werks-sign = 'I'.
r_werks-option = 'EQ'.
r_werks-low = w_stck_cnt-werks.
APPEND r_werks.
r_matnr-sign = 'I'.
r_matnr-option = 'EQ'.
r_matnr-low = w_stck_cnt-matnr.
APPEND r_matnr.
ENDAT.
ENDLOOP.
Select all material batches for NP Materials
SELECT matnr charg clabs
INTO TABLE t_batch_errors
FROM mchb
WHERE werks IN r_werks
AND lgort IN r_lgort.
IF sy-subrc EQ 0.
Check if the Material Batches are in the NP file
LOOP AT t_batch_errors INTO w_batch_errors.
Disregard Batches without positive unrestricted stock
IF w_batch_errors-clabs LE 0.
DELETE t_batch_errors.
CONTINUE.
ENDIF.
READ TABLE t_stck_cnt INTO w_stck_cnt
WITH KEY matnr = w_batch_errors-matnr
charg = w_batch_errors-charg.
IF sy-subrc = 0.
DELETE t_batch_errors.
ENDIF.
ENDLOOP.
ENDIF.
CHECK NOT t_batch_errors[] IS INITIAL.
Write Batch chak results to report
SKIP.
WRITE: / text-b02.
WRITE: / sy-uline(74).
WRITE: /2 'Material',
22 'Batch'.
WRITE: /2 sy-uline(32).
SKIP.
LOOP AT t_batch_errors INTO w_batch_errors.
WRITE: /2 w_batch_errors-matnr,
22 w_batch_errors-charg.
ENDLOOP.
ENDFORM. " post_process_checks
G E T _ I N T E R F A C E _ F I L E N A M E
FORM get_interface_filename USING filename lw_path.
DATA: i_file TYPE filename-fileintern,
out_filename LIKE v_path-pathextern.
CLEAR: out_filename.
i_file = filename.
get the interface filename to be used when creating file
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = i_file
IMPORTING
file_name = out_filename
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
MOVE out_filename TO lw_path.
IF filename NE c_archive_file. "RM080107
CONCATENATE lw_path 'NP_StockBalance.dat'
INTO lw_path.
*-- Begin RM080107 - Add timestamp to the archived file
ELSE.
CONCATENATE lw_path 'NP_StockBalance' sy-datum sy-uzeit '.dat'
INTO lw_path.
ENDIF.
*-- End RM080107
ELSE.
ENDIF.
ENDFORM. "get_interface_filename
*& Form move_file RM080107
Move the processed file to archive directory
FORM move_file.
*-- At last move the file to archive directory
OPEN DATASET p_arch FOR OUTPUT IN TEXT MODE.
IF sy-subrc = 0.
LOOP AT t_rawdata INTO w_rawdata.
TRANSFER w_rawdata TO p_arch.
ENDLOOP.
ENDIF.
CLOSE DATASET p_arch.
DELETE DATASET p_file.
ENDFORM. " move_fileHi,
S E L E C T I O N S C R E E N
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_file LIKE rlgrap-filename,
p_arch LIKE rlgrap-filename. "RM080107
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK b1.
I N C L U D E S
INCLUDE zwm_np_stock_recon_top.
INCLUDE zwm_np_stock_recon_f01.
I N I T I A L I Z A T I O N
INITIALIZATION.
PERFORM get_interface_filename USING c_interface_file p_file.
PERFORM get_interface_filename USING c_archive_file p_arch."RM080107
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
PERFORM read_file USING p_file.
PERFORM pre_processing.
E N D O F S E L E C T I O N
END-OF-SELECTION.
PERFORM process_checks.
IF w_no_change = 'X'.
WRITE: / text-b03.
WRITE: / sy-uline(34).
ELSE.
PERFORM bdc_mi09.
PERFORM file_check_report.
PERFORM bdc_report.
ENDIF.
PERFORM post_process_checks.
*-- Move the processed file to archive directory
PERFORM move_file.
...*************.........first include...................************
INCLUDE ZWM_NP_STOCK_RECON_TOP *
Data declaration ----------------------------------------------
TYPES: st_rawdata(2000) TYPE c.
TYPES: BEGIN OF st_stck_cnt,
werks TYPE iseg-werks, "plant
lgort TYPE iseg-lgort, "storage location
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
vfdat TYPE mch1-vfdat, "Sell by date
lwedt TYPE mch1-lwedt, "Manufacture date
quarn(8) TYPE n, "qaunrantine quantity
menge(8) TYPE n, "quantity on hand
message(1), "Message Type (E/W/I)
msg_txt TYPE t100-text, "Message Text
zerostck(1), "Zero stock identifier "RM220307
END OF st_stck_cnt.
TYPES: BEGIN OF st_batch_errors,
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
clabs TYPE mchb-clabs, "Stock Balance
END OF st_batch_errors.
DATA:
t_rawdata TYPE TABLE OF st_rawdata,
w_rawdata TYPE st_rawdata,
t_stck_cnt TYPE TABLE OF st_stck_cnt,
d_stck_cnt TYPE TABLE OF st_stck_cnt, "RM191006
w_stck_cnt TYPE st_stck_cnt,
t_batch_errors TYPE TABLE OF st_batch_errors,
w_batch_errors TYPE st_batch_errors,
t_messtab LIKE bdcmsgcoll OCCURS 0,
w_messtab LIKE LINE OF t_messtab,
w_no_change.
CONSTANTS: c_interface_file(26) TYPE c VALUE 'ZNP_STOCK_RECON',
c_archive_file(26) TYPE c
VALUE 'ZNP_STOCK_RECON_ARCHIVE'. "RM080107
.*************................second include..........************
***INCLUDE ZWM_NEXTPHARMA_STOKRECON_F01 .
*& Form read_file
reads NextPharma file sent through via webmethods
-->P_FILENAME
FORM read_file USING p_filename.
CLEAR: t_rawdata,
w_rawdata.
REFRESH: t_rawdata.
OPEN DATASET p_filename FOR INPUT IN TEXT MODE.
IF sy-subrc <> 0.
MESSAGE e720(01).
ENDIF.
DO.
READ DATASET p_filename INTO w_rawdata.
IF sy-subrc <> 0.
EXIT.
ELSE.
APPEND w_rawdata TO t_rawdata.
ENDIF.
ENDDO.
CLOSE DATASET p_filename.
ENDFORM. " read_file
*& Form pre_processing
Read file values into internal table
FORM pre_processing.
DATA: lw_matnr TYPE iseg-matnr.
LOOP AT t_rawdata INTO w_rawdata.
lw_matnr = w_rawdata+21(20). "RM031006
lw_matnr = w_rawdata+22(18). "RM031006
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = lw_matnr
IMPORTING
output = lw_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
MOVE: lw_matnr TO w_stck_cnt-matnr.
w_stck_cnt-werks = w_rawdata+14(4).
w_stck_cnt-lgort = w_rawdata+18(4).
w_stck_cnt-charg = w_rawdata+84(25).
w_stck_cnt-vfdat = w_rawdata+109(8).
w_stck_cnt-lwedt = w_rawdata+117(8).
w_stck_cnt-quarn = w_rawdata+141(8).
w_stck_cnt-menge = w_rawdata+125(8).
APPEND w_stck_cnt TO t_stck_cnt.
CLEAR w_stck_cnt.
ENDLOOP.
SORT t_stck_cnt BY werks
lgort
matnr
charg.
DELETE ADJACENT DUPLICATES FROM t_stck_cnt.
ENDFORM. " pre_processing
*& Form bdc_mi09
Run file data via BDC TCODE: MI09
FORM bdc_mi09.
DATA: t_bdcdata TYPE TABLE OF bdcdata,
w_bdcdata TYPE bdcdata,
lw_datum(10) TYPE c,
lw_count(2) TYPE n.
WRITE sy-datum TO lw_datum DD/MM/YYYY.
<b>select single MATNR
WERKS
CHARG
from MCHA
into (l_matnr, l_werks, l_charg)
where matnr = w_stck_cnt-matnr
and werks = w_stck_cnt-werks.
and charg = w_stck_cnt-charg.
if sy-subrc ne 0.
continue.
endif.</b>
Front Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0700'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Enter
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '/00'.
APPEND w_bdcdata TO t_bdcdata.
Count Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-ZLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Document Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-BLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Plant
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-WERKS'.
w_bdcdata-fval = w_stck_cnt-werks.
APPEND w_bdcdata TO t_bdcdata.
Storage Location
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-LGORT'.
w_bdcdata-fval = w_stck_cnt-lgort.
APPEND w_bdcdata TO t_bdcdata.
LOOP AT t_stck_cnt INTO w_stck_cnt.
Do not submit items with Errors against them
CHECK w_stck_cnt-message NE 'E' AND
w_stck_cnt-zerostck NE 'X'.
"RM220307
lw_count = lw_count + 1.
Input Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Page Down
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=P+'.
APPEND w_bdcdata TO t_bdcdata.
Material
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-MATNR(01)'.
w_bdcdata-fval = w_stck_cnt-matnr.
APPEND w_bdcdata TO t_bdcdata.
Batch
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-CHARG(01)'.
w_bdcdata-fval = w_stck_cnt-charg.
APPEND w_bdcdata TO t_bdcdata.
IF w_stck_cnt-menge NE 0.
Quantity
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-ERFMG(01)'.
w_bdcdata-fval = w_stck_cnt-menge.
APPEND w_bdcdata TO t_bdcdata.
*-- Begin RM220307 - We need to create an item when the quantity is zero
*-- in file and is non-zero in SAP
ELSE.
Zero Stock indicator
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-XNULL(01)'.
w_bdcdata-fval = 'X'.
APPEND w_bdcdata TO t_bdcdata.
*-- End RM220307
ENDIF.
ENDLOOP.
CHECK lw_count NE 0.
After all line items have been input
Final Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Save Document
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=BU'.
APPEND w_bdcdata TO t_bdcdata.
CALL TRANSACTION 'MI09' USING t_bdcdata
MODE p_mode
MESSAGES INTO t_messtab.
ENDFORM. " bdc_mi09
*& Form bdc_report
Write BDC Messages.
FORM bdc_report.
DATA: lw_text TYPE t100-text.
SKIP.
WRITE: / text-b01.
WRITE: / sy-uline(21).
SKIP.
Write BDC Messages
LOOP AT t_messtab INTO w_messtab WHERE msgspra = sy-langu.
MESSAGE ID w_messtab-msgid TYPE w_messtab-msgtyp
NUMBER w_messtab-msgnr
WITH w_messtab-msgv1
w_messtab-msgv2
w_messtab-msgv3
w_messtab-msgv4
INTO lw_text.
WRITE: / lw_text.
ENDLOOP.
ENDFORM. " bdc_report
*& Form process_checks
Perform process check before creating BDC Session
FORM process_checks.
DATA: lw_clabs LIKE mchb-clabs,
lw_menge LIKE mchb-clabs,
lw_matnr LIKE mara-matnr,
lw_charg LIKE mch1-charg,
lw_fail,
lw_vfdat TYPE mch1-vfdat,
lv_sell TYPE c, "RM191006
lv_qty(8) TYPE c. "RM191006
CLEAR: d_stck_cnt[], d_stck_cnt. "RM191006
Check if any of the stock figures differ from current stock figures
LOOP AT t_stck_cnt INTO w_stck_cnt.
lw_menge = w_stck_cnt-menge.
SELECT SINGLE clabs INTO lw_clabs
FROM mchb
WHERE matnr = w_stck_cnt-matnr
AND werks = w_stck_cnt-werks
AND lgort = w_stck_cnt-lgort
AND charg = w_stck_cnt-charg.
IF sy-subrc = 0.
IF lw_clabs NE lw_menge.
lw_fail = 'X'.
*-- Begin RM220307 - Do not create PI item if the stock is zero in the
*-- file and is zero in SAP
EXIT.
ELSEIF lw_clabs = 0 AND lw_menge = 0.
w_stck_cnt-zerostck = 'X'.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM220307
ELSE.
lw_fail = 'X'.
ERROR
ENDIF.
ENDLOOP.
If no differences are found set NO CHANGE Flag
IF lw_fail NE 'X'.
w_no_change = 'X'.
EXIT.
ENDIF.
Check for Errors in file data
LOOP AT t_stck_cnt INTO w_stck_cnt.
CLEAR lv_sell. "RM191006
SELECT SINGLE matnr INTO lw_matnr
FROM mara
WHERE matnr = w_stck_cnt-matnr.
IF sy-subrc NE 0.
Invalid Material (E)
w_stck_cnt-message = 'E'.
w_stck_cnt-msg_txt = 'Invalid Material'.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ENDIF.
SELECT SINGLE charg vfdat
INTO (lw_charg, lw_vfdat)
FROM mch1 "KOB01 - changed from MCHA
WHERE matnr = w_stck_cnt-matnr
AND charg = w_stck_cnt-charg.
AND werks = w_stck_cnt-werks.
IF sy-subrc NE 0.
Invalid Material Batch (E)
w_stck_cnt-message = 'E'.
CONCATENATE 'Invalid Material Batch for plant' w_stck_cnt-werks
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ELSE.
IF w_stck_cnt-vfdat <> lw_vfdat.
Sell by dates do not match (W)
w_stck_cnt-message = 'W'.
w_stck_cnt-msg_txt =
'Sell by Date does not match Shelf life Expiry Date'.
MODIFY t_stck_cnt FROM w_stck_cnt.
lv_sell = 'X'. "RM191006
CONTINUE. "RM191006
ENDIF.
ENDIF.
IF w_stck_cnt-quarn > 0.
Quarantine balance not Zero (W)
w_stck_cnt-message = 'W'.
*-- Begin RM191006
*-- We do want all warning messages on the report
lv_qty = w_stck_cnt-quarn.
CONDENSE lv_qty NO-GAPS.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_qty
IMPORTING
output = lv_qty.
w_stck_cnt-msg_txt = 'Quarantine balance is not zero'.
CONCATENATE 'Quarantine balance is ' lv_qty '- not zero'
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
IF lv_sell = 'X'.
APPEND w_stck_cnt TO d_stck_cnt.
CLEAR lv_sell.
ELSE.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM191006
ENDIF.
ENDLOOP.
*-- Begin RM191006
*-- Finally get all the records into dummy table to report
APPEND LINES OF t_stck_cnt TO d_stck_cnt.
SORT d_stck_cnt.
DELETE ADJACENT DUPLICATES FROM d_stck_cnt.
*-- End RM191006
ENDFORM. " process_checks
*& Form file_check_report
Write warning and Error messages from File checks
FORM file_check_report.
WRITE: /2 'Material',
22 'Batch',
32 'Sell By',
45 'Message Text'.
WRITE: /2 sy-uline(115).
SKIP.
LOOP AT t_stck_cnt INTO w_stck_cnt. "RM191006
LOOP AT d_stck_cnt INTO w_stck_cnt. "RM191006
CHECK w_stck_cnt-message NE ' '.
WRITE: /2 w_stck_cnt-matnr,
22 w_stck_cnt-charg,
32 w_stck_cnt-vfdat,
43 w_stck_cnt-message,
45 w_stck_cnt-msg_txt.
ENDLOOP.
ENDFORM. " file_check_report
*& Form post_process_checks
Check Material Batches in SAP against NP File
FORM post_process_checks.
RANGES: r_matnr FOR mchb-matnr,
r_lgort FOR mchb-lgort,
r_werks FOR mchb-werks.
SORT t_stck_cnt.
LOOP AT t_stck_cnt INTO w_stck_cnt.
AT END OF matnr.
r_lgort-sign = 'I'.
r_lgort-option = 'EQ'.
r_lgort-low = w_stck_cnt-lgort.
APPEND r_lgort.
r_werks-sign = 'I'.
r_werks-option = 'EQ'.
r_werks-low = w_stck_cnt-werks.
APPEND r_werks.
r_matnr-sign = 'I'.
r_matnr-option = 'EQ'.
r_matnr-low = w_stck_cnt-matnr.
APPEND r_matnr.
ENDAT.
ENDLOOP.
Select all material batches for NP Materials
SELECT matnr charg clabs
INTO TABLE t_batch_errors
FROM mchb
WHERE werks IN r_werks
AND lgort IN r_lgort.
IF sy-subrc EQ 0.
Check if the Material Batches are in the NP file
LOOP AT t_batch_errors INTO w_batch_errors.
Disregard Batches without positive unrestricted stock
IF w_batch_errors-clabs LE 0.
DELETE t_batch_errors.
CONTINUE.
ENDIF.
READ TABLE t_stck_cnt INTO w_stck_cnt
WITH KEY matnr = w_batch_errors-matnr
charg = w_batch_errors-charg.
IF sy-subrc = 0.
DELETE t_batch_errors.
ENDIF.
ENDLOOP.
ENDIF.
CHECK NOT t_batch_errors[] IS INITIAL.
Write Batch chak results to report
SKIP.
WRITE: / text-b02.
WRITE: / sy-uline(74).
WRITE: /2 'Material',
22 'Batch'.
WRITE: /2 sy-uline(32).
SKIP.
LOOP AT t_batch_errors INTO w_batch_errors.
WRITE: /2 w_batch_errors-matnr,
22 w_batch_errors-charg.
ENDLOOP.
ENDFORM. " post_process_checks
G E T _ I N T E R F A C E _ F I L E N A M E
FORM get_interface_filename USING filename lw_path.
DATA: i_file TYPE filename-fileintern,
out_filename LIKE v_path-pathextern.
CLEAR: out_filename.
i_file = filename.
get the interface filename to be used when creating file
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = i_file
IMPORTING
file_name = out_filename
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
MOVE out_filename TO lw_path.
IF filename NE c_archive_file. "RM080107
CONCATENATE lw_path 'NP_StockBalance.dat'
INTO lw_path.
*-- Begin RM080107 - Add timestamp to the archived file
ELSE.
CONCATENATE lw_path 'NP_StockBalance' sy-datum sy-uzeit '.dat'
INTO lw_path.
ENDIF.
*-- End RM080107
ELSE.
ENDIF.
ENDFORM. "get_interface_filename
*& Form move_file RM080107
Move the processed file to archive directory
FORM move_file.
*-- At last move the file to archive directory
OPEN DATASET p_arch FOR OUTPUT IN TEXT MODE.
IF sy-subrc = 0.
LOOP AT t_rawdata INTO w_rawdata.
TRANSFER w_rawdata TO p_arch.
ENDLOOP.
ENDIF.
CLOSE DATASET p_arch.
DELETE DATASET p_file.
ENDFORM. " move_file
Best regards,
Prashant -
RFC enabled function module is not runing the BDC code in it.
Dear Experts,
1. We have created a RFC enabled function module to change status of a activity and to save it we are using BDC code and we have also put the code in the RFC FM only.
The RFC fm is runing fine and changing the data and also saving it by runing the BDC when run in the R/3 system only.
But when i run the FM from portal its just chaning the status but not runing the BDC code in it.
below i am puting the code of the FM.
FUNCTION ZRFC_CRM_STATUS_CHANGE_EXTERN .
""Local Interface:
*" IMPORTING
*" VALUE(CHECK_ONLY) TYPE XFELD DEFAULT ' '
*" VALUE(CLIENT) LIKE SY-MANDT DEFAULT SY-MANDT
*" VALUE(OBJNR) TYPE CRM_JSTO-OBJNR OPTIONAL
*" VALUE(USER_STATUS) LIKE CRM_JEST-STAT
*" VALUE(SET_INACT) TYPE XFELD DEFAULT ' '
*" VALUE(SET_CHGKZ) LIKE CRM_JSTO-CHGKZ OPTIONAL
*" VALUE(XNOAUTO) LIKE CRM_JSTO_UPD-XNOAUTO OPTIONAL
*" VALUE(NO_CHECK) TYPE XFELD DEFAULT ' '
*" VALUE(ZOBJNR) TYPE CHAR80
*" VALUE(OBJECT_ID) TYPE CRMT_OBJECT_ID
*" EXPORTING
*" VALUE(STONR) LIKE TJ30-STONR
*" EXCEPTIONS
*" OBJECT_NOT_FOUND
*" STATUS_INCONSISTENT
*" STATUS_NOT_ALLOWED
*{ INSERT D60K900707 1
DATA: BEGIN OF JSTAT_TMP.
INCLUDE STRUCTURE JSTAT.
DATA: END OF JSTAT_TMP.
data: bdcdata like bdcdata occurs 0 with header line.
data: dire type CRMD_ACTIVITY_H-direction.
CLEAR: DIRE.
OBJNR = ZOBJNR.
MANDT = CLIENT.
JSTAT_TMP-STAT = USER_STATUS.
JSTAT_TMP-INACT = SET_INACT.
IF USER_STATUS+0(1) NE EXTERN.
RAISE STATUS_NOT_ALLOWED.
ENDIF.
Statusobjekt ggf. einlesen
PERFORM STATUS_READ USING OBJNR IOBTYP ISTSMA NOT_FOUND.
CHECK NOT_FOUND = OFF.
ggf. Änderungsbelege aktivieren
IF SET_CHGKZ = 'X' AND JSTO_BUF-CHGKZ = SPACE AND CHECK_ONLY = SPACE.
PERFORM SET_CHGKZ USING OBJNR.
ENDIF.
set XNOAUTO-flag if desired
IF XNOAUTO = 'X' AND CHECK_ONLY = SPACE.
PERFORM SET_XNOAUTO USING OBJNR.
ENDIF.
crm_jostd-OBJNR = OBJNR.
Status-Puffer füllen
REFRESH JEST_BUF_A.
REFRESH JEST_BUF_E.
CLEAR JEST_BUF_A.
CLEAR JEST_BUF_E.
CLEAR JEST_K.
MOVE MANDT TO JEST_K-MANDT.
MOVE crm_jostd-OBJNR TO JEST_K-OBJNR.
READ TABLE JEST_BUF WITH KEY JEST_K BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
TABIX = SY-TABIX.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_E.
APPEND JEST_BUF_E.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_A.
MOVE MANDT TO JEST_BUF_A-MANDT.
APPEND JEST_BUF_A.
DO.
ADD 1 TO TABIX.
READ TABLE JEST_BUF INDEX TABIX.
IF SY-SUBRC IS INITIAL AND JEST_BUF-OBJNR = crm_jostd-OBJNR.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_E.
APPEND JEST_BUF_E.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_A.
MOVE MANDT TO JEST_BUF_A-MANDT.
APPEND JEST_BUF_A.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
g_no_check = no_check.
OBJNR = ZOBJNR.
PERFORM STATUS_CHANGE_EXTERN USING CHECK_ONLY
OBJNR
JSTAT_TMP
EXTERN.
clear g_no_check.
Zurückschreiben in Puffer
PERFORM CHG_JEST_BUF_E.
ggf. Statusordnungsnummer ermitteln
IF STONR IS REQUESTED.
CALL FUNCTION 'CRM_STATUS_READ'
EXPORTING
OBJNR = OBJNR
ONLY_ACTIVE = 'X'
IMPORTING
STONR = STONR.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN =
*COMMIT WORK.
wait up to 10 seconds.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0100'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=READ'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0510'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_CURSOR'.
bdcdata-fval = 'GV_OBJECT_ID'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'GV_OBJECT_ID'.
bdcdata-fval = OBJECT_ID.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=OKAY'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0100'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=1OMAIN_TT'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0100'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_CURSOR'.
bdcdata-fval = 'CRMT_7010_ACTIVITY_UI-DIRECTION'.
APPEND bdcdata.
select single direction from CRMD_ACTIVITY_H into dire
where guid = objnr.
if sy-subrc = 0.
if dire = '0'.
dire = '1'.
elseif dire = '1'.
dire = ''.
elseif dire is initial.
dire = '1'.
endif.
endif.
CLEAR bdcdata.
bdcdata-fnam = 'CRMT_7010_ACTIVITY_UI-DIRECTION'.
bdcdata-fVAL = DIRE.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=SAVE'.
APPEND bdcdata.
CALL TRANSACTION 'CRMD_BUS2000126' using bdcdata mode 'N'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN =
*COMMIT WORK.
wait up to 5 seconds.
*} INSERT
ENDFUNCTION.
Thanks and regards
NeelDear experts,
Already the FM is RFC enabled other i won't be able to call it from portal
and coming to using the BAPI_ACTIVITY CHANGE fm that acting very weird so we are using the CRM EXTERN CHANGE USER STATUS fm which is working fine but the only problem is even when we comit from BAPI_TRANSACTION_COMMIT its not getting the delta queue of BW updated eventhough its chaning the status.
So for the above reasons we are using the BDC code in the FM for pressing the save button then its will update the changes to BW delta queue as well.
its working fine when i run it from the system in tcode SE37 only the BDC code is not runing when i am doing it from portal apart from the fm is chaning the status .
thanks and regards
Neel -
Where to put javascript code?
Hello,
I am trying to set some columns in a list as "read-only" and is using the following code:
<script type=”text/javascript”>
function SetReadOnly()
var elements=document.getElementById(’4_ctl00_ctl00_TextField’);
elements.readOnly=true;
_spBodyOnLoadFunctionNames.push(“SetReadOnly()”);
</script>
But I am not sure where to put the code in. Should I put it in the space in Content Editor Web Part,
or through a link to a txt file, or in "Edit HTML"? I've tried them but none works.
Thanks a lot!
PatrickYou can try this:
1) Open your Sharepoint List. Go to List edit view.
2) On right side of Ribbon you will find "Form Web Parts" option as shown in figure.
3) Choose your List form which you want to edit.
4) Now you can add web part in new window.
5) Add Content Editor Web part.
6) In content editor web part add the path of your "txt" file in which you have written your script, for eg.
<!DOCTYPE html>
<html>
<body>
<script type=”text/javascript”>
function SetReadOnly()
var elements=document.getElementById('4_ctl00_ctl00_TextField');
elements.readOnly=true;
_spBodyOnLoadFunctionNames.push("SetReadOnly()");
</script>
</body>
</html>
I haven't tried this method so I am not sure but hope it works...:D
***If my post is answer for your query please mark as answer***
***If my answer is helpful please vote*** -
I have a power Mac G4 with a mirror front running 10.4.9. How current of an OS can I run on this machine? I want to put it back into use but need to upgrade the OS so that I can run the newest version of Quickbooks amoung other things.
I think you're out of luck...
System Requirements:
Minimum System Requirements
Mac with an Intel processor
Mac OS X v10.6
1 GB RAM
CD-ROM drive for installation
120 MB of available disk space
Printer: 100% Macintosh-compatible printer, if you plan to print invoices, checks, deposit slips, lists, purchase orders, mailing labels, reports, or graphs
Checks: Use Intuit Checks if you plan to print checks. Canadian Image Ready Cheques are not supported.
Integration/Compatibility Requirements
Export report data requires Numbers '09 (included with iWork from Apple) or Microsoft Excel 2004 or 2008 for Mac.
E-mail requires Apple Mail; Microsoft Entourage 2004 or 2008 for Mac
Back up to MobileMe requires paid MobileMe account available separately from Apple, Inc.
iCal, iChat, and AddressBook are included in Mac OS X. Internet access required for iChat.
Accepting credit and debit cards directly into QuickBooks 2011 for Mac requires Intuit Merchant Service for QuickBooks for Mac (sold separately); subject to application approval and debit card transactions are processed as Signature Debit which does not require entering a PIN code. See http://payments.intuit.com/legal.jsp for details.
Processing payroll, integrated with QuickBooks for Mac, requires paid subscription (sold separately), EIN and Internet access. QuickBooks 2011 for Mac works with Intuit QuickBooks Payroll for Mac.
http://www.amazon.com/Intuit-413615-QuickBooks-2011-for/dp/system-requirements/B 003YJ8WFE/ref=noref?ie=UTF8&n=229534&s=software -
I want to put header while stroing file in application server
Hi Guru,
Can anybody tell how to put header while stroing file in application server.
in the below pgm data is coming i want to put heading .if we see in al11 transaction the header should come .plese give on eg in the code itself.its urgent
eg:
material number
100
200
declarations...................................................
tables: bkpf. " Accounting Document Header
*"Selection screen elements............................................
parameters:
p_burks like bkpf-bukrs. " Company Code
select-options:
s_gjahr for bkpf-gjahr. " Fiscal year
Type declaration of the structure to hold Accounting Document Header*
data:
begin of fs_bkpf,
bukrs type bkpf-bukrs, " Company Code
belnr type bkpf-belnr, " Accounting Document Number
gjahr type bkpf-gjahr, " Fiscal year
blart type bkpf-blart, " Document type
bldat type bkpf-bldat, " Document date in document
end of fs_bkpf.
Internal table to hold Accounting Document Header *
data:
t_bkpf like standard table
of fs_bkpf.
Type declaration of the structure to hold file data *
data:
begin of fs_table,
str type string,
end of fs_table.
Internal table to hold file data *
data:
t_table like standard table
of fs_table.
field-symbols: <fs>.
*" Data declarations...................................................
Work variables *
data:
w_char(50) type c,
w_file_name(50) type c value 'YH645_050103'.
select bukrs " Company Code
belnr " Accounting Document Number
gjahr " Fiscal year
blart " Document type
bldat " Document date in document
from bkpf
into table t_bkpf
where bukrs eq p_burks
and gjahr in s_gjahr.
if sy-subrc eq 0.
loop at t_bkpf into fs_bkpf.
do.
assign component sy-index of structure fs_bkpf to <fs>.
if sy-subrc ne 0.
exit.
else.
move <fs> to w_char.
if sy-index eq 1.
fs_table-str = <fs>.
else.
concatenate fs_table-str ',' w_char into fs_table-str.
endif. " IF SY-INDEX...
endif. " IF SY-SUBRC...
enddo. " DO...
append fs_table to t_table.
endloop. " LOOP AT T_KNA1...
endif. " IF SY-SUBRC...
open dataset w_file_name for output in text mode encoding default.
loop at t_table into fs_table.
transfer fs_table-str to w_file_name.
endloop. " LOOP AT T_TABLE...Hi,
may i know what kind of heading you want to display?
like date, filename, time etc
then modify the below code:
*& Form send_statistic
Create the status Report on application Server
---> pv_rlines - Total No of Records in Internal table *
---> pv_slines - Total No of Successful records *
---> pv_elines - Total No of Errornous records *
---> pv_path - File Path where the file to be created *
---> pv_flag - Flag to check for A/c group *
FORM sub_send_statistic USING pv_rlines TYPE int4
pv_slines TYPE int4
pv_elines TYPE int4
pv_path TYPE salfile-longname
pv_name TYPE rlgrap-filename
pv_flag TYPE char1.
CLEAR : i_tab,
wa_tab.
Convert date to MM/DD/YYYY format
PERFORM date_convert.
Convert Time to HH:MM:SS format
CONCATENATE sy-uzeit+0(2)
c_colon
sy-uzeit+2(2)
c_colon
sy-uzeit+4(2)
INTO v_time1.
Build the Output File name
IF p_sold = c_x
AND pv_flag = c_x.
CONCATENATE c_objid
c_us
c_z001
c_us
sy-datum
c_us
sy-uzeit
INTO v_file.
ENDIF. " IF p_sold = c_x
IF p_cons = c_x.
CONCATENATE c_objid
c_us
c_z008
c_us
sy-datum
c_us
sy-uzeit
INTO v_file.
ELSEIF p_sold = c_x
AND pv_flag <> c_x.
CONCATENATE c_objid
c_us
sy-datum
c_us
sy-uzeit
INTO v_file.
ENDIF. " IF p_cons = c_x
Build the Complete Output File Path
CONCATENATE pv_path
c_slash
v_file
INTO v_outfile.
Populate the data required for output into an internal table and
then transfer the table contents to file on application server
DATA UPLOAD STATISTICS
wa_tab-rec = text-001.
APPEND wa_tab TO i_tab.
CLEAR wa_tab.
TITLE
IF p_sold = c_x
AND pv_flag <> c_x.
sy-title = text-t17.
ENDIF. " IF p_sold = c_x
IF p_sold = c_x
AND pv_flag = c_x.
sy-title = text-t16.
ENDIF. " IF p_sold = c_x
IF p_cons = c_x
AND pv_flag = c_x.
sy-title = text-t19.
ENDIF. " IF p_cons = c_x
wa_tab-rec+0(7) = text-002.
wa_tab-rec+7(60) = sy-title.
APPEND wa_tab TO i_tab.
CLEAR wa_tab.
Date & Time
wa_tab-rec+0(5) = text-012.
CONDENSE v_date NO-GAPS.
wa_tab-rec+6(10) = v_date.
wa_tab-rec+60(10) = text-003.
wa_tab-rec+70(15) = v_time1.
APPEND wa_tab TO i_tab.
CLEAR wa_tab.
Folder Name
wa_tab-rec+0(18) = text-005.
wa_tab-rec+19(72) = pv_path.
APPEND wa_tab TO i_tab.
CLEAR wa_tab.
File Name
wa_tab-rec+0(18) = text-006.
---Begin of addition -Shivakumar - 09-05-2007--
wa_tab-rec+19(72) = pv_name.
---Begin of addition -Shivakumar - 09-05-2007--
APPEND wa_tab TO i_tab.
CLEAR wa_tab.
Records Read
CLEAR v_count.
v_data = pv_rlines.
v_count = STRLEN( v_data ).
CONDENSE v_data NO-GAPS.
wa_tab-rec+0(46) = text-007.
wa_tab-rec+47(4) = v_data.
APPEND wa_tab TO i_tab.
CLEAR : wa_tab,
v_data.
Successfull Records
CLEAR v_count.
v_data = pv_slines.
v_count = STRLEN( v_data ).
CONDENSE v_data NO-GAPS.
wa_tab-rec+0(46) = text-008.
wa_tab-rec+47(4) = v_data.
APPEND wa_tab TO i_tab.
CLEAR : wa_tab,
v_data.
Error Records
CLEAR v_count.
v_data = pv_elines.
v_count = STRLEN( v_data ).
CONDENSE v_data NO-GAPS.
wa_tab-rec+0(46) = text-009.
wa_tab-rec+47(4) = v_data.
APPEND wa_tab TO i_tab.
CLEAR : wa_tab,
v_data.
v_mesg = text-t04.
IF p_sold = c_x
AND pv_flag <> c_x.
MOVE i_tab TO i_file.
ENDIF. " IF p_sold = c_x
IF p_sold = c_x
AND pv_flag = c_x.
MOVE i_tab TO i_file1.
ENDIF. " IF p_sold = c_x
IF NOT i_tab IS INITIAL.
Open the file on Application server to write the report
OPEN DATASET v_outfile
FOR OUTPUT IN TEXT MODE
ENCODING DEFAULT MESSAGE v_mesg.
IF sy-subrc <> 0.
MESSAGE e000(zconversions) WITH v_mesg.
ELSE. " IF sy-subrc <> 0
Transfer details to the file on application server
CLEAR wa_tab.
LOOP AT i_tab INTO wa_tab.
TRANSFER wa_tab-rec TO v_outfile.
CLEAR wa_tab.
ENDLOOP. " LOOP AT i_tab INTO wa_tab
Close the file
CLOSE DATASET v_outfile.
ENDIF. " IF sy-subrc <> 0
ENDIF. " IF NOT i_tab IS INITIAL
ENDFORM. " Create_Report -
Dont want to put pasword again and again
how i will turn off key pad lock password
in menu-options -security options-general setting-pasword is enabled
i dont want to put pasword again and again i want to disable it
please help me friendsEMOTION wrote:
in menu-options -security options-general setting-pasword is enabled
Set that (in red above) to DISABLED, and save.
If you have a red lock symbol next to that setting you cannot. If that is the situation, you are probably in a corporate BES which REQUIRES you to use a password via the IT Policy set to the device by your employer.
Is that your situation?
1. If any post helps you please click the below the post(s) that helped you.
2. Please resolve your thread by marking the post "Solution?" which solved it for you!
3. Install free BlackBerry Protect today for backups of contacts and data.
4. Guide to Unlocking your BlackBerry & Unlock Codes
Join our BBM Channels (Beta)
BlackBerry Support Forums Channel
PIN: C0001B7B4 Display/Scan Bar Code
Knowledge Base Updates
PIN: C0005A9AA Display/Scan Bar Code -
Want to put URLs into a custom field in the requirements
I tried to put some code into a custom field in Empirix eManager. I was trying to add a URL to the requirement where the person could see more information. Specifically, we have use-cases online and a mockup of the final product to be developed. I wanted to put a mockup URL and use-case URL for each of the requirements where appropriate to help the developers further understand their task.
So, I did added something like this into the custom field when creating the test case:
View Textbook Use Case
Unfortunately the javascript didn't execute because the eManager application put the whole command in as a string. What displayed is exactly what you see above. I'm sure this is done for security reasons so that cross-sight scripting is protected against. However, I'm not trying to do anything suspect -- just trying to link things together.
So I went to the database for our project in eManager. I could bypass the security coding that disallows code to be placed into the field by adding it at the database level. However, when I got there it became evident that I didn't know the datamodel well enough to successfully add a field value there without possibly causing some problems. In the past I've only queried the database and not any modifications.
Can someone tell me how a custom field value is inserting into the database? Which tables does it need to be added to to maintain referential integrity? Or alternatively, do you have a document with the schema outlined? Are there any important stored procedures we'd be missing if going directly at the database. Can anybody advise me?Hello Gandalf,
If you created a customer field in OXK3, I am afraid that the customer defined field created is only
available on G/L account line items but not Customer or Vendor line items(The field is not available on SAPMF05A screens 301 and 302).But it is possible to use it in fast entry screens SAPMF05A 8xxx (see note 2596).
Best Regards,
Gladys xing -
Architecture question...where to put the code
Newbie here, so please be gentle and explicit (no detail is
too much to give or insulting to me).
I'm hoping one of you architecture/design gurus can help me
with this. I am trying to use good principals of design and not
have code scattered all over the place and also use OO as much as
possible. Therefore I would appreciate very much some advice on
best practices/good design for the following situation.
On my main timeline I have a frame where I instantiate all my
objects. These objects refer to movieClips and textFields etc. that
are on a content frame on that timeline. I have all the
instantiation code in a function called initialize() which I call
from the content frame. All this works just fine. One of the
objects on the content frame is a movieClip which I allow the user
to go forward and backward in using some navigation controls.
Again, the object that manages all that is instantiated on the main
timeline in the initialize() function and works fine too. So here's
my question. I would like to add some interactive objects on some
of the frames of the movieClip I allow the user to navigate forward
and backward in (lets call it NavClip) . For example on frame 1 I
might have a button, on frame 2 and 3 nothing, on frame 4 maybe a
clip I allow the user to drag around etc. So I thought I would add
a layer to NavClip where I will have key frames and put the various
interactive assets on the appropriate key frames. So now I don't
know where to put the code that instantiates these objects (i.e.
the objects that know how to deal with the events and such for each
of these interactive assets). I tried putting the code on my main
timeline, but realized that I can't address the interactive assets
until the NavClip is on the frame that holds the particular asset.
I'm trying not to sprinkle code all over the place, so what do I
do? I thought I might be able to address the assets by just
providing a name for the asset and not a reference to the asset
itself, and then address the asset that way (i.e.
NavClip["interactive_mc"] instead of NavClip.interactive_mc), but
then I thought that's not good since I think there is no type
checking when you use the NavClip["interactive_mc"] form.
I hope I'm not being too dim a bulb on this and have missed
something really obvious. Thanks in advance to anyone who can help
me use a best practice.1. First of all, the code should be:
var myDraggable:Draggable=new Draggable(myClip_mc);
myDraggable.initDrag();
Where initDrag() is defined in the Draggable class. When you
start coding functions on the timeline... that's asking for
problems.
>>Do I wind up with another object each time this
function is called
Well, no, but. That would totally depend on the code in the
(Draggable) class. Let's say you would have a private static var
counter (private static, so a class property instead of an instance
property) and you would increment that counter using a
setInterval(). The second time you enter the frame and create a new
Draggable object... the counter starts at the last value of the
'old' object. So, you don't get another object with your function
literal but you still end up with a faulty program. And the same
goes for listener objects that are not removed, tweens that are
running and so on.
The destroy() method in a custom class (=object, I can't
stress that enough...) needs to do the cleanup, removing anything
you don't need anymore.
2. if myDraggable != undefined
You shouldn't be using that, period. If you don't need the
asset anymore, delete it using the destroy() method. Again, if you
want to make sure only one instance of a custom object is alive,
use the Singleton design pattern. To elaborate on inheritance:
define the Draggable class (class Draggable extends MovieClip) and
connect it to the myClip_mc using the linkage identifier in the
library). In the Draggable class you can define a function unOnLoad
(an event fired when myClip_mc is removed using
myClip_mc.removeMovieClip()...) and do the cleanup there.
3. A destroy() method performs a cleanup of any assets we
don't need anymore to make sure we don't end up with all kinds of
stuff hanging around in the memory. When you extend the MovieClip
Class you can (additionally) use the onUnLoad event. And with the
code you posted, no it wouldn't delete the myClip_mc unless you
program it to do so. -
MIRO, don't want to propose company code
Hi all,
I want to enter company code in each time when I call MIRO.
How can I do this? (Like FB50/FB60/FB70, it's can select
an option to do this.)HI Anek
SAP defaults certen fields after you logon and enter data in those fields and praposes them where ever applicable, this is to avoid entering same data again and again, And so Company codes is defaulted when u do couple of customizations before MIGO,
And, as u said after new logon it is poping up screen for company code, yes it does so, because u haven't entered company code yet in this logon, if u do other customization entering company code even in this new logon it won't popup to enter the company code.
regards
Satish -
I need to knew were can i put a code that will run after any step.
i want that a specific code that i wrote will run after any step in the main sequence.
this code suppose to increment a variable if the step is failed.
i did not find the place in the VB Operator Interface that executed after each step.
please tell me where i need to put my code so it will be excuted after any step regardless if the tracing is enabled or disabled.
this question is about the original source code of TS VB Operator Interface.
advaced thank's.
avi gafa, RADA,Israel.Avi,
There is an NI KB article on this titled "How Can I Perform Some Action
After Every Step Executes" at:
http://zone.ni.com/devzone/devzoneweb.nsf/opendoc?openagent&06109F4BC56EAC03
86256838005EB865&cat=629CD2F2758A8D00862567C2005ACE42
HTH,
Bob Rafuse
Etec Inc.
"avi gafa" wrote in message
news:[email protected]..
> i want that a specific code that i wrote will run after any step in
> the main sequence.
> this code suppose to increment a variable if the step is failed.
> i did not find the place in the VB Operator Interface that executed
> after each step.
>
> please tell me where i need to put my code so it will be excuted after
> any step regardless if the tracing is enabled or disabled.
>
> this question is about the o
riginal source code of TS VB Operator
> Interface.
>
> advaced thank's.
>
> avi gafa, RADA,Israel.
Maybe you are looking for
-
ASSIGNING addition used in the LOOP statement
Hello Guys , I have a problem about at new and at end statements, basically I want to use them in a loop with assigning like this : loop at ti_itab assigning <wa_itab>. at new of kunnr. endat. at end of xref1. endat. endloop. xref1
-
Ignore linking errors in XCode
Hi all! I have a library to include in my iPhone app, the problem is that this library requires function that are in CoreServices.framework. And i cannot use the CoreServices since it will build only for the simulator. So i've added CFNetwork.framewo
-
Hello. I have a bit of a problem. I have a table, essentially a list of two numbers. The first is the "day" of the observation, essentially the number of days since the experiment began. The second is the actual measured value for that observation. D
-
Delete old exchange 2007 server
Hi, We have 2 exchange 2007 server(a and b) a is v very old hardware so we have configure new exchange 2007 name is b after configure create new data base and moved all mail box A to B server but if now server A is shutdown user prompting put user na
-
Inner Join between MARA, MARC and MVKE
hi experts, please give me a sample code to join these 3 tables. thanks. sasi.