How we load Bom through bdc pgm
Hi I want to load BOM through BDC pgm in wich i am unbale to record the screect flow b coz it asking abt materical not matiching so can u plz send me the navigation screen flow and exple of fields in with i can enter in BOM throus cs01 transaction ... this is very urgent.. Thanking U
Hi
See the Below sample Program ....
Program Loads the Bill of Material
*& REPORT ZPP0120 *
*& Module : PP |
*& Application : The program loads the Bill of Material |
*& |
*| Modification Log |
*| ---------------- |
REPORT zpp0120 NO STANDARD PAGE HEADING
MESSAGE-ID z0
LINE-SIZE 132
LINE-COUNT 65(2).
* Internal Tables *
*Internal table for the BOM file.
DATA: BEGIN OF i_bom OCCURS 0,
matnr(18),
werks(4),
stlan(1),
stlal(2),
stktx(40),
bmeng(16),
menge(16),
posnr(4),
postp(1),
meins(3),
datuv(10),
fmeng(1),
idnrk(18),
potx1(40),
ausch(7),
END OF i_bom.
* Extracting Document and Doc type for POSTP = D.
DATA : BEGIN OF i_stpo OCCURS 1,
doknr(25),
dokar(3),
posnr(4),
stlnr LIKE mast-stlnr,
END OF i_stpo.
* Local work area
DATA: g_my_rec_in LIKE i_bom.
** Declare internal table for Call Transaction and BDC Session
DATA: i_bdc_table LIKE bdcdata OCCURS 0 WITH HEADER LINE.
* Global Variables *
DATA: g_counter(2) TYPE n,
g_field_name(18) TYPE c,
zc_yes TYPE syftype VALUE 'X'.
* Selection Screen *
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
PARAMETERS: p_fname1 TYPE localfile .
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
PARAMETERS: p_rloc1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-005.
PARAMETERS p_group(12) OBLIGATORY DEFAULT 'ZBOM'.
SELECTION-SCREEN END OF BLOCK c.
SELECTION-SCREEN END OF BLOCK b.
SELECTION-SCREEN END OF BLOCK a.
**WRITE the report header
TOP-OF-PAGE.
INCLUDE zheading.
* Start of selection *
START-OF-SELECTION.
* Load Input file
PERFORM f_load_input_file.
* Create BDC records.
PERFORM create_bdc_records .
*& Form Create_BDC_records
* text:* perform the BDC for the records in the internal table
* --> p1 text
* <-- p2 text
FORM create_bdc_records .
DATA: v_stlnr LIKE mast-stlnr.
DATA: v_postp(1) VALUE 'D'.
IF NOT i_bom[] IS INITIAL.
** Open BDC session
PERFORM open_bdc_session.
SORT i_bom BY matnr werks posnr.
SELECT SINGLE stlnr INTO v_stlnr
FROM mast
WHERE matnr = i_bom-matnr
AND werks = i_bom-werks.
SELECT doknr dokar posnr stlnr
INTO TABLE i_stpo
FROM stpo
FOR ALL ENTRIES IN i_bom
WHERE postp = v_postp
AND posnr = i_bom-posnr
AND stlnr = v_stlnr.
SORT i_stpo BY posnr stlnr.
LOOP AT i_bom.
g_my_rec_in = i_bom.
READ TABLE i_stpo WITH KEY posnr = i_bom-posnr
stlnr = v_stlnr
BINARY SEARCH.
AT NEW matnr.
CLEAR i_bdc_table[].
PERFORM insert_screen_header.
ENDAT.
* Setting up counter for 20 line items
IF g_counter = 20.
g_counter = 1.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
*next screen
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-FMENG(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
CONCATENATE 'RC29P-POSNR(' g_counter ')' INTO g_field_name.
PERFORM bdc_field USING g_field_name i_bom-posnr.
CONCATENATE 'RC29P-IDNRK(' g_counter ')' INTO g_field_name.
PERFORM bdc_field USING g_field_name i_bom-idnrk.
CONCATENATE 'RC29P-MENGE(' g_counter ')' INTO g_field_name.
PERFORM bdc_field USING g_field_name i_bom-menge.
CONCATENATE 'RC29P-MEINS(' g_counter ')' INTO g_field_name.
PERFORM bdc_field USING g_field_name i_bom-meins.
CONCATENATE 'RC29P-POSTP(' g_counter ')' INTO g_field_name.
PERFORM bdc_field USING g_field_name i_bom-postp.
CONCATENATE 'RC29P-FMENG(' g_counter ')' INTO g_field_name.
PERFORM bdc_field USING g_field_name i_bom-fmeng.
*next screen
PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
* Check the Item category to direct the screen flow accordingly.
CASE i_bom-postp.
WHEN 'B'.
PERFORM item_text_insert.
WHEN 'Z'.
PERFORM item_text_insert.
WHEN 'T'.
PERFORM item_text_insert.
WHEN 'N'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-AUSCH'.
PERFORM bdc_field USING 'RC29P-AUSCH' i_bom-ausch.
* next screen
PERFORM item_text_insert.
*next screen
PERFORM bdc_dynpro USING 'SAPLCSDI' '0133'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RC29P-EKORG' ' '.
WHEN 'D'.
PERFORM bdc_field USING 'RC29P-DOKNR' i_stpo-doknr.
PERFORM bdc_field USING 'RC29P-DOKAR' i_stpo-dokar.
* next screen
PERFORM item_text_insert.
* When POSTP = X, L.
WHEN OTHERS.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-AUSCH'.
PERFORM bdc_field USING 'RC29P-AUSCH' i_bom-ausch.
* next screen
PERFORM item_text_insert.
ENDCASE.
g_counter = g_counter + 1.
* next screen
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-POSNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=FCBU'.
AT END OF matnr.
PERFORM insert_bdc_new.
ENDAT.
ENDLOOP.
CLEAR i_bom[].
PERFORM close_bdc_session.
** Release the BDC sessions created
PERFORM release_bdc.
ENDIF.
ENDFORM. " open_group
*& Form bdc_dynpro_start
* Initialize the screen
* -->P_G_PROGRAM_1
* -->P_G_SCREEN
FORM bdc_dynpro USING p_g_program_1
p_g_screen.
CLEAR i_bdc_table.
i_bdc_table-program = p_g_program_1.
i_bdc_table-dynpro = p_g_screen.
i_bdc_table-dynbegin = 'X'.
APPEND i_bdc_table.
ENDFORM. " bdc_dynpro_start
*& Form bdc_field
* Insert field *
FORM bdc_field USING f_name f_value.
CLEAR i_bdc_table.
i_bdc_table-fnam = f_name.
i_bdc_table-fval = f_value.
APPEND i_bdc_table.
ENDFORM. "bdc_insert_field
*& Form open_bdc_session
* Open the BDC session
FORM open_bdc_session .
** Open BDC session and creat and update condition records
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
* DEST = FILLER8
group = p_group
* HOLDDATE = FILLER8
keep = 'X'
user = sy-uname
* RECORD = FILLER1
* PROG = SY-CPROG
* IMPORTING
* QID =
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " create_bdc_session
*& Form insert_screen_header
* Insert the Header data into the screens
FORM insert_screen_header .
g_counter = 1.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29N-STLAL'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RC29N-MATNR' g_my_rec_in-matnr.
PERFORM bdc_field USING 'RC29N-WERKS' g_my_rec_in-werks.
PERFORM bdc_field USING 'RC29N-STLAN' g_my_rec_in-stlan.
PERFORM bdc_field USING 'RC29N-STLAL' g_my_rec_in-stlal.
PERFORM bdc_field USING 'RC29N-DATUV' g_my_rec_in-datuv.
* next screen
PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-BMENG'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RC29K-STKTX' g_my_rec_in-stktx.
PERFORM bdc_field USING 'RC29K-BMENG' g_my_rec_in-bmeng.
*next screen
PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-LABOR'.
ENDFORM. " insert_screen_header
*& Form insert_bdc
* Insert the BDC session
FORM insert_bdc_new .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'CS01'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ' '
* CTUPARAMS = ' '
TABLES
dynprotab = i_bdc_table
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR i_bdc_table[].
ENDFORM. " insert_bdc
*& Form close_bdc_session
* Close the BDC session
FORM close_bdc_session .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " close_bdc_session
*& Form f_load_input_file
* Load the file into the Internal table
FORM f_load_input_file.
IF p_rloc1 = zc_yes.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_fname1
filetype = 'DAT'
TABLES
data_tab = i_bom
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
STOP.
ENDIF.
ENDIF.
ENDFORM. " f_load_input_file
*& Form release_bdc
* Release BDC session
FORM release_bdc.
SUBMIT rsbdcsub WITH mappe EQ p_group
WITH von EQ sy-datum
WITH bis EQ sy-datum
WITH fehler EQ '.'
EXPORTING LIST TO MEMORY
AND RETURN.
ENDFORM. " release_bdc
*& Form item_text_insert
* Repetitive code in the screen flow
FORM item_text_insert.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-POTX1'.
PERFORM bdc_field USING 'RC29P-POTX1' i_bom-potx1.
ENDFORM. " item_text_insert
Similar Messages
-
I want to load BOM through bdc how?
Hi i want to load BOm through bdc wht fields i can fill and plx help in screen flow while recording in shdb
Goto SHDB an dto recording with the help of your Function team. They will tell you which fields they want to fill and what.
-
How to create material bom through CS01 if bom created by using ppe
Hi experts,
I have created a material bom through PPE of material A. Now i want to create bom through CS01for same material A.
system shows error "A breakdown (PVS/VA) already exists in iPPE for material".
So how can create bom through CS01?
Suggest me.
Regards,
Nitin NerkarHi,
Please check and implement the below note,
[1311089|https://websmp130.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=1311089]
Thanks
Hrishi -
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 -
How To Load a Project Budget Line Through API in R12 ?
Hello
Could you please let me know how to load the project budget lines through API in R12 system, I am trying with below script but it is not working.
Could you please let me know if you have any solution.
=========================================================================================================================================================================
Script
DECLARE
--––variables needed for API standard parameters
l_api_version_number NUMBER := 1.0;
l_commit VARCHAR2 (1) := 'T';
l_return_status VARCHAR2 (1);
l_init_msg_list VARCHAR2 (1);
l_msg_count NUMBER;
l_msg_data VARCHAR2 (2000);
l_data VARCHAR2 (2000);
l_msg_entity VARCHAR2 (100);
l_msg_entity_index NUMBER;
l_msg_index NUMBER;
l_msg_index_out NUMBER;
l_encoded VARCHAR2 (1);
i NUMBER;
a NUMBER;
--––variables needed for Oracle Project specific parameters
l_pm_product_code VARCHAR2 (100);
l_pa_project_id NUMBER;
l_pm_project_reference VARCHAR2 (100);
l_budget_type_code VARCHAR2 (30);
l_change_reason_code VARCHAR2 (30);
l_description VARCHAR2 (255);
l_entry_method_code VARCHAR2 (30);
l_resource_list_name VARCHAR2 (60);
l_resource_list_id NUMBER;
l_budget_lines_in pa_budget_pub.budget_line_in_tbl_type;
l_budget_lines_in_rec pa_budget_pub.budget_line_in_rec_type;
l_budget_lines_out pa_budget_pub.budget_line_out_tbl_type;
l_line_index NUMBER;
l_line_return_status VARCHAR2 (1);
l_user_id NUMBER;
l_responsibility_id NUMBER;
API_ERROR EXCEPTION;
BEGIN
-- SET GLOBAL INFO
SELECT user_id,
responsibility_id
INTO l_user_id,
l_responsibility_id
FROM pa_user_resp_v
WHERE user_name = 'RAJU';
PA_INTERFACE_UTILS_PUB.SET_GLOBAL_INFO (p_api_version_number => 1.0,
p_responsibility_id => l_responsibility_id,
p_user_id => l_user_id,
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => l_return_status
IF l_return_status != 'S'
THEN
RAISE API_ERROR;
END IF;
--––PRODUCT RELATED DATA
l_pm_product_code := 'GMS';
--––BUDGET DATA
l_pa_project_id := 6271;
l_pm_project_reference := NULL;--'ABC';
l_budget_type_code := 'FC';
-- l_change_reason_code := 'INITIAL';
l_description := 'New description –> 2';
l_entry_method_code := 'PA_TASKLVL_BASELINE';
l_resource_list_id := 1001;
--––BUDGET LINES DATA
a := 1;
FOR i IN 1 .. a
LOOP
l_budget_lines_in_rec.pa_task_id := 405156;
l_budget_lines_in_rec.pm_task_reference := NULL;
l_budget_lines_in_rec.resource_alias := 'Labor';
l_budget_lines_in_rec.resource_list_member_id := '1034';
-- l_budget_lines_in_rec.budget_start_date := '01-Jan-13';
-- l_budget_lines_in_rec.budget_end_date := '31-Dec-14';
-- l_budget_lines_in_rec.period_name := 'JUL-10FY2011';
l_budget_lines_in_rec.description := 'Some Text';
l_budget_lines_in_rec.quantity := 100.00;
l_budget_lines_in_rec.raw_cost := 300.00;
l_budget_lines_in (i) := l_budget_lines_in_rec;
END LOOP;
--––INIT_BUDGET
pa_budget_pub.init_budget;
--––LOAD_BUDGET_LINE
FOR i IN 1 .. a
LOOP
pa_budget_pub.load_budget_line
(p_api_version_number => l_api_version_number,
p_return_status => l_return_status,
p_pa_task_id => l_budget_lines_in (i).pa_task_id,
p_pm_task_reference => l_budget_lines_in (i).pm_task_reference,
p_resource_alias => l_budget_lines_in (i).resource_alias,
p_resource_list_member_id => l_budget_lines_in (i).resource_list_member_id,
p_budget_start_date => l_budget_lines_in (i).budget_start_date,
p_budget_end_date => l_budget_lines_in (i).budget_end_date,
p_period_name => l_budget_lines_in (i).period_name,
p_description => l_budget_lines_in (i).description,
p_raw_cost => l_budget_lines_in (i).raw_cost,
p_burdened_cost => l_budget_lines_in (i).burdened_cost,
p_revenue => l_budget_lines_in (i).revenue,
p_quantity => l_budget_lines_in (i).quantity
END LOOP;
IF l_return_status != 'S'
THEN
RAISE api_error;
END IF;
--––EXECUTE_CREATE_DRAFT_BUDGET
pa_budget_pub.execute_create_draft_budget (p_api_version_number => l_api_version_number,
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => l_return_status,
p_pm_product_code => l_pm_product_code,
p_pa_project_id => l_pa_project_id,
p_pm_project_reference => l_pm_project_reference,
p_budget_type_code => l_budget_type_code,
p_change_reason_code => l_change_reason_code,
p_description => l_description,
p_entry_method_code => l_entry_method_code,
p_resource_list_name => l_resource_list_name,
p_resource_list_id => l_resource_list_id
IF l_return_status != 'S'
THEN
NULL; --––RAISE API_ERROR;
END IF;
--––FETCH_LINE
FOR l_line_index IN 1 .. pa_budget_pub.g_budget_lines_tbl_count
LOOP
pa_budget_pub.fetch_budget_line (p_api_version_number => l_api_version_number,
p_return_status => l_return_status,
p_line_index => l_line_index,
p_line_return_status => l_line_return_status
IF l_return_status != 'S' OR l_line_return_status != 'S'
THEN
RAISE api_error;
END IF;
END LOOP;
--––CLEAR_BUDGET
pa_budget_pub.clear_budget;
IF l_return_status != 'S'
THEN
RAISE api_error;
END IF;
--––HANDLE EXCEPTIONS
EXCEPTION
WHEN api_error
THEN
FOR i IN 1 .. l_msg_count
LOOP
pa_interface_utils_pub.get_messages (p_msg_data => l_msg_data,
p_data => l_data,
p_msg_count => l_msg_count,
p_msg_index_out => l_msg_index_out
DBMS_OUTPUT.put_line ('Error Mesg ' || l_data);
DBMS_OUTPUT.put_line ('Error Mesg ' || l_msg_data);
END LOOP;
WHEN OTHERS
THEN
FOR i IN 1 .. l_msg_count
LOOP
pa_interface_utils_pub.get_messages (p_msg_data => l_msg_data,
p_data => l_data,
p_msg_count => l_msg_count,
p_msg_index_out => l_msg_index_out
DBMS_OUTPUT.put_line ('error mesg ' || l_data);
END LOOP;
END;
=========================================================================================================================================================================Not knowing how its embedded... you will need to get the report instance from the dll and cast it as a ReportDocument object.
Given the info so far, that is all we can say.
Ludek
Follow us on Twitter http://twitter.com/SAPCRNetSup
Got Enhancement ideas? Try the [SAP Idea Place|https://ideas.sap.com/community/products_and_solutions/crystalreports] -
How can i get production version value(verid) for luck through bdc.
HI..
i have one requirement..that in c223 tcode while i luck the production version through BDC in my report program as i given bellow...i upload mat.no , plant, production version and 1(for luck)...
req:: i want while i given production version for particlular plant and material no...that production version should be luck....
so in standard tcode c223 how can i get value to compair it with my input production version value then i will close that...
program:::
report ZC2232
no standard page heading line-size 255.
*include bdcrecx1.
Tables : mkal.
data : nodata value '/' .
data : CTUMODE type c value 'E'.
DATA : CUPDATE TYPE C VALUE 'L'.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
data: begin of HEADER OCCURS 0,
data element: MATNR
MATNR_001(018),
data element: WERKS_D
WERKS_002(004),
data element: PLNNR
PLNNR_003(008),
data element: CP_STTAG
STTAG_003(010),
data element: ENTRY_ACT
ENTRY_ACT_005(011),
data element: PLNAL
PLNAL_004(001),
data element: FLG_SEL
FLG_SEL_01_006(001),
data element: PLANTEXT
STLAL_004(002),
DATUV_005(010),
data element: WERKS_D
WERKS_008(004),
data element: PLN_VERWE
ktext_005(001),
data element: PLNST
DELKZ_005(001),
data element: LOSGRVON
LOSVN_011(017),
data element: LOSGRBIS
LOSBS_012(017),
data element: PLNME
PLNME_013(003),
data element: PLNME
stlal_014(002),
end of HEADER.
data : begin of it_header occurs 0,
matnr like marc-matnr,
werks like marc-matnr,
verid like mkal-verid,
mksp like mkal-mksp,
end of it_header.
data : exnum(40) type c,
exnum1(40) type c,
cnt type I,
CN(2) TYPE C,
c1 type c value '(',
c2 type c value ')'.
start-of-selection.
parameters: p_file like rlgrap-filename.
at selection-screen on value-request for p_file.
call function 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
importing
file_name = p_file.
start-of-selection.
call function 'WS_UPLOAD'
exporting
CODEPAGE = ' '
filename = p_file
filetype = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
tables
data_tab = it_header
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
DELETE it_header WHERE MATNR IS INITIAL.
LOOP AT it_header.
*start-of-selection.
*perform open_group.
perform bdc_dynpro using 'SAPLCMFV' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'BDC_CURSOR'
'MKAL-WERKS'.
perform bdc_field using 'MKAL-WERKS'
it_header-werks.
perform bdc_field using 'MKAL-MATNR'
it_header-matnr.
perform bdc_dynpro using 'SAPLCMFV' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=PICK'.
perform bdc_field using 'MKAL-WERKS'
it_header-werks.
perform bdc_field using 'MKAL-MATNR'
it_header-matnr.
*>>>>>>>>>>>>>>>>>>>>here what logic can i write****
clear cnt.
do 15 times.
cnt = cnt + 1 .
CN = CNT.
exnum = 'MKAL_EXPAND-VERID'.
concatenate exnum c1 cn c2 into exnum1.
*perform bdc_field using 'BDC_CURSOR'
exnum1.
GET PARAMETER ID 'VER' FIELD EXNUM1.
CALL TRANSACTION 'C223' AND SKIP FIRST SCREEN.
if ( it_header-verid = EXNUM1 ).
exit.
endif.
enddo.
****************************************************end***>>>>>>>>
perform bdc_field using 'BDC_CURSOR'
exnum1.
perform bdc_dynpro using 'SAPLCMFV' '2000'.
perform bdc_field using 'BDC_CURSOR'
'MKAL_EXPAND-PLNTY'.
perform bdc_field using 'BDC_OKCODE'
'=PRFG'.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_OKCODE'
'=RW'.
perform bdc_dynpro using 'SAPLCMFV' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ECANC'.
perform bdc_field using 'BDC_CURSOR'
'MKAL_EXPAND-VERID'.
perform bdc_dynpro using 'SAPLCMFV' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=SAVE'.
perform bdc_field using 'BDC_CURSOR'
'MKAL-WERKS'.
perform bdc_field using 'MKAL-WERKS'
it_header-werks.
perform bdc_field using 'MKAL-MATNR'
it_header-matnr.
perform bdc_dynpro using 'SAPLCMFV' '1000'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_transaction using 'C223'.
endloop.
*perform close_group.
*& Form bdc_dynpro
text
-->P_0161 text
-->P_0162 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_transaction
text
-->P_0351 text
form bdc_transaction USING TCODE.
call transaction 'C223' using bdcdata
mode CTUMODE
update CUPDATE
messages into messtab.
if sy-subrc <> 0.
message e000(zmm01) with
'Check your input data'.
endif.
endform. " bdc_transaction
*& Form bdc_field
text
-->P_0346 text
-->P_0347 text
form bdc_field USING FNAM FVAL.
if fval <> nodata.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
endif.
endform. " bdc_fieldl_nl := dbms_xslprocessor.selectNodes(l_n, '/TaxInvoice/TaxInvoiceDocument');try to change as follow
l_nl := dbms_xslprocessor.selectnodes(l_n,'/TaxInvoice/TaxInvoiceDocument','xmlns="urn:kr:or:kec:standard:Tax:ReusableAggregateBusinessInformation:1:0"');Edited by: AlexAnd on Aug 17, 2011 12:36 AM -
How to upload datas in excel sheet through BDC
Hi,
I know how to upload datas in Text format through BDC...Suppose even when datas are in .xls format,I saved that file as Text(tab delimited) format...then file become text format and it can be easily uploaded....
So, I want to know How to upload datas in excel sheet through BDChi,
try this Example, hope useful to u, assign me point.
report ZMSV1_BDC_CALL
no standard page heading line-size 255.
*include bdcrecx1.
*parameters: dataset(132) lower case.
DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
If it is nessesary to change the data section use the rules:
1.) Each definition of a field exists of two lines
2.) The first line shows exactly the comment
'* data element: ' followed with the data element
which describes the field.
If you don't have a data element use the
comment without a data element name
3.) The second line shows the fieldname of the
structure, the fieldname must consist of
a fieldname and optional the character '_' and
three numbers and the field length in brackets
4.) Each field must be type C.
Generated data section with specific formatting - DO NOT CHANGE ***
data: begin of record,
data element: BUKRS
BUKRS_001(004),
data element: KTOKK
KTOKK_002(004),
data element: NAME1_GP
NAME1_003(035),
data element: SORTL
SORTL_004(010),
data element: ORT01_GP
ORT01_005(035),
data element: LAND1_GP
LAND1_006(003),
data element: SPRAS
SPRAS_007(002),
data element: BANKS
BANKS_01_008(003),
data element: BANKK
BANKL_01_009(015),
data element: BANKN
BANKN_01_010(018),
end of record.
End generated data section ***
data: itab like record occurs 0 .
data: it_bdc type bdcdata occurs 0 with header line.
data: it_msg type bdcmsgcoll occurs 0 with header line.
parameter p_file type rlgrap-filename default 'c:\vendor.txt' obligatory
start-of-selection.
perform open_dataset using p_file.
perform open_group.
*perform close_group.
*perform close_dataset using dataset.
*& Form open_dataset
text
-->P_P_FILE text
form open_dataset using p_p_file.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
CODEPAGE = ' '
FILENAME = p_file
FILETYPE = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
TABLES
data_tab = itab
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endform. " open_dataset
*& Form open_group
text
--> p1 text
<-- p2 text
form open_group .
loop at itab into record.
perform bdc_dynpro using 'SAPMF02K' '0105'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-KTOKK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-BUKRS'
record-BUKRS_001.
perform bdc_field using 'RF02K-KTOKK'
record-KTOKK_002.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-ORT01'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFA1-NAME1'
record-NAME1_003.
perform bdc_field using 'LFA1-SORTL'
record-SORTL_004.
perform bdc_field using 'LFA1-ORT01'
record-ORT01_005.
perform bdc_field using 'LFA1-LAND1'
record-LAND1_006.
perform bdc_field using 'LFA1-SPRAS'
record-SPRAS_007.
perform bdc_dynpro using 'SAPMF02K' '0120'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-KOINH(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'LFBK-BANKS(01)'
record-BANKS_01_008.
perform bdc_field using 'LFBK-BANKL(01)'
record-BANKL_01_009.
perform bdc_field using 'LFBK-BANKN(01)'
record-BANKN_01_010.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02K' '0210'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-AKONT'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0215'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-ZTERM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0220'.
perform bdc_field using 'BDC_CURSOR'
'LFB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
call transaction 'FK01' using it_bdc mode 'A' update 'S'
messages into it_msg.
write:/ sy-subrc.
perform message_formatwrite.
refresh it_bdc.
clear it_bdc.
endloop.
endform. " open_group
*& Form message_formatwrite
text
--> p1 text
<-- p2 text
form message_formatwrite .
data:l_msg(10).
loop at it_msg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = sy-langu
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = l_msg
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endloop.
endform. " message_formatwrite
*& Form bdc_dynpro
text
-->P_0112 text
-->P_0113 text
form bdc_dynpro using value(p_0112)
value(p_0113).
it_bdc-program = p_0112.
it_bdc-dynpro = p_0113.
it_bdc-dynbegin = 'X'.
append it_bdc.
clear it_bdc.
endform. " bdc_dynpro
*& Form bdc_field
text
-->P_0117 text
-->P_0118 text
form bdc_field using value(p_0117)
value(p_0118).
it_bdc-fnam = p_0117.
it_bdc-fval = p_0118.
append it_bdc.
clear it_bdc.
endform. " bdc_field
Regards
fareedas -
How to load data with carriage return through DRM action script ?
Hello,
We are using DRM to manage Essbase metadata. These metadata contain a field for member formula.
Currently it's a string data type property in DRM so we can't use carriage return and our formula are really hard to read.
But DRM support other data type property : memo or formatted memo where we can use carriage return.
Then in the export file, we have change the record delimiter to an other character than CRLF
Our issue : we are regularly using action script to load new metadata => How to load data properties with carriage return using action script ? There is no option to change the record delimiter.
Thanks!Hello Sandeep
here what I want to do through action script : loading a formula that use more on than one line:
Here, I write my formula using 4 lines but action script cannot load since one line = 1 record.
ChangeProp|Version_name|Hier_name|Node_name|Formula|@round(
qty*price
*m05*fy13 -
How to load flat file in BPS through Web-debugging
Hi,
We are working on flat file upload in BPS thru guide 'How to load flat file in BPS through Web'. Can some one guide on how to debug the function modules used while uploading the data.
We have set up the break point in the function modules and also in the BSP page. But when trying to debug while uploading, it is not going to the break point which was set.
Could you assist in setting up the break point.
Regards,
Sreenath
Message was edited by:
sreenath reddyHi,
I have put an external break-point.
I have hard coded it in the coding of the function module itself.
The code is perfectly working. But, when I want to check for the values of the variables in the F.M during runtime, the break-point is not triggering. Any ideas??
Regards, -
How to see any changes done in BOM through Engineering change management?
Dear experts,
My client need to verify the revision of some assemblies in BOM through ECM.
I tried to verify it by taking some change numbers & executing it in CC03. I am getting the history date & name of person who done the changes. But can not able to see the actual changes.
Could you please tell me how to see the changes done?
Thanks in advance for cooperation & support.
Regards,
Mehul VeniDear Mehul Veni,
Assuming you have created a change number through CC01 and made changes in CS02 for a particular BOM by entering this
change number in the input screen in CS02.
Once after making BOM changes,save the data and check in CC03>enter the same change number>menu->environment-
>reporting->Bill of material--->select the change number and click on expand sub-tree and you will get all the required details.
Check and revert
Regards
Mangalraj.S -
How to load the Employee Images through Script
Dear All,
How to load Employee Images into HRMS module through script, Pls provide scripts any body having..
Thank in advance,
Hanimi
Edited by: Hanimi on Jun 7, 2011 10:12 AMHi Hussain,
Following ctl file is working fine for loading images, But problem is at a time it is loading only 64 rows, pls let me know what i have change in my ctl file for loading all data at a time..
load data
infile '/usr/tmp/Images_Data.dat'
INTO TABLE PER_IMAGES
append
FIELDS TERMINATED BY ','
TRAILING NULLCOLS(
parent_id,
table_name constant "PER_PEOPLE_F",
ext_fname FILLER CHAR(80),
"IMAGE" LOBFILE(ext_fname) TERMINATED BY EOF,i
mage_id "PER_IMAGES_S.nextval"
Thanks,
Hanimi.. -
How do load system form matrix -Inventory-Goods Issue through SDK UI &DI
While I am accessing system form matrix -Inventory Goods Issue/ Goods Receipt, the matrix object is not accessible.
Error is coming stating "Item 13 is invalid, where 13 is item uid for matrix.
So,How do load system form matrix -Inventory-Goods Issue(FORM 720/-720) through SDK UI &DIAPI.
Form Type: -720
How to get reference of System form matrix object -Inventory-GoodsIssue.
Some thing similar to CopyFrom functionality for -Inventory-Goods Issue.
Currently my client requirement is as follows.
I created a UDF ((U_ILC) Incoming Log Challan) for marketing documents. And, this field is added in the header level of Goods Reciept, Goods Issue documents.
1. Through Inventory->Goods Receipt (ILCNo.10), items are received. Assume, M00001, M00002 are the items received with qty, price, whse, account values.
2. Through Inventory->Goods Issue, item should be issued. In this Goods Issue Form, after entering U_ILC value as 10, pressing Tab, the GoodsIssue matrix should be loaded with the values of GoodsReceipt(IGN1 for U_ILC:10) document i.e. M00001,M00002 along with the same values as in GoodsReceipt of ILC:10.
The code is as follows:
If (( ( pVal.FormType = "-720" or pVal.FormType = 720) And pVal.EventType <> SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD) And (pVal.Before_Action = False)) Then
'// get the event sending form
oForm = SBO_Application.Forms.GetFormByTypeAndCount(pVal.FormType, pVal.FormTypeCount)
If pVal.ItemUID = "U_ILCNo" And pVal.EventType = SAPbouiCOM.BoEventTypes.et_LOST_FOCUS And pVal.Before_Action = False Then
SBO_Application.MessageBox("ILC No. Lost Focus")
oMatrix = oForm.Items.Item("13").Specific
oColumn = oForm.Columns.Item("1")
oEditItmCode = oColumn.Cells.Item(1).Specific
oEditItmCode.Value = "07215090x606"
oItem = oForm.Items.Item("U_ILCNo")
oEdit = oItem.Specific
SBO_Application.MessageBox(oEdit.String)
End If
End If
3. The code
oMatrix = oForm.Items.Item("13").Specific
is raising error. I have used Event Logger and breakpoints to see where the code is halting.
Help me, how to access the matrix of Goods Receipt/ Goods Issue and load based on the existing data.
Thanks in advanceHI
If your code is in the SBO_Application_ItemEvent then try using this line
oForm = SBO_Application.Forms.Item(strFormUID)
instead of
oForm = SBO_Application.Forms.GetFormByTypeAndCount(pVal.FormType, pVal.FormTypeCount) -
How to upload a file which has more than 999 line item through BDC ?
Hello Techards
Hi to all
Can any body tell me how to upload a file which has more than 999 line item through BDC for traction F-02 ?
Thanks in advance.
ShovanHello Shovan,
You split it up to post two accounting documents with the help of a "suspense" a/c.
Say, you have to post the following line items below:
line 1 - dr. - GL a/c X - $1000
line 2 - cr. - GL a/c Y - $1
line 3 - cr. - GL a/c Y - $1
line 1001 - cr. - GL a/c Y - $1
You cannot post the above as a single doc in SAP (because of technical reasons), so you need to break it up into 2 documents as below:
Doc1
line 1 - dr - GL a/c X - $1000
line 2 - cr - GL a/c Y - $1
line 3 - cr - GL a/c Y - $1
line 998 - cr - GL a/c Y - $1
line 999 - cr - SUSPENSE a/c - $3
Doc2
line 1 - dr - SUSPENSE a/c - $3
line 2 - cr - GL a/c Y - $3
Note that there is no incorrect impact on accounting as first we credit suspense a/c by $3 and next we debit the same suspense a/c by $3 as a result the effect is nil. Similarly, we credit $997 to GL a/c Y (which is less by $3) in the first doc which is compensated by the second doc by crediting the shortfall of $3.
Hope this helps,
Cheers,
Sougata. -
How can we execute the BDC session in error mode through se38 programme
Dear Experts,
How can we execute the BDC session in error mode through se38 programme....
we can execute the session in the below 2 ways
1) Through SM35 we can process the session manually in foreground/Error mode or Background also.
2) through RSBDCSUB (standared Program) we can process the session in back ground.
But i want to process the session in foreground or Error mode..Do we have any standared program for process the session in foreground or error mode.
Please suggest.
Regards,
Bussa.Hi,
SAP was smart enough to provide this little program: RSBDCCTU
Sandra
Edited by: Sandra Rossi, 15 minutes later
Maybe the answer to your question is just to use CALL TRANSACTION ... USING ... (see the example in RSBDCCTU). You can also generate such a program using transaction SHDB -
Unable to update the serial number through bdc in Sales Order
Hi experts,
I written the inboud FM for to update the 3rd party items serial number to the sales orders through BDC Call transaction Method.
Here i am facing a problem when i have the 19 item Quan ,it is updating correct through idoc , when ever there is moe than 19 and at that if any serial number repeated for that if i am changing at that time it is loosing the control of the BDC and giving the control to the salesorder screen.
how can i handle that control again has to come to BDC prgrm......
Thnks,
Regards,
BharaniHi,
Can you please let me know the segment in ORDERS05 Idoc to process the Payment card information and if the standard Function Module can handle the creation of a Sales Order with data for Payment Card.
We have a requirement to map the Tokenized Number of the Credit Card send from a store front end to ECC mapping via SAP-PI.
Thanks in Advance,
Maybe you are looking for
-
IMac Keeps Wi-Fi but looses Internet
Can anyone help with this as it's driving me crazy. my new iMac keeps loosing it's Internet connection even though it remains connected to the Modem Router and reports great signal strength with the Wi-Fi signal. A Bit of Background Info 3 days ago I
-
Until the Firefox 23 update I had no difficulty opening or saving pdfs in Firefox, but since the most recent update (Firefox 23) I often get error messages about damaged files when I use the download button and try to open or save files. I've checked
-
Here's more info. Bought the iMac in Nov. 2009. It's been one with lots of problems, including a new mother board. Haven't had any big troubles lately until now. The exact error is: Invalid volume file count (It should be 888333 instead of 888334) In
-
Problem with updating database
Hi, gurus. here is the snippet of my program, dont know why it doesnt work properly. //this the first java bean, storing user's form inputs public class FirstPageBean private String userName; private String docType; private int index; public
-
Uploading songs & using them as ringtones
I have some ringtones that I previously had on my old phone & uploaded them to my iPhone along w/ my other songs. Can I set the short songs as a ringtone or do I have to purchase the ringtones/songs thru iTunes?