‎2008 Jul 01 9:17 AM
Hello friends
Their is a TCODE BP in CRM
where i need to update Language data in Adress Tab-strip and IS CUSTOMER field in Classification Tab-strip.
When iam try to do recording for this it is not working.
how can i update data for this fields know.
thanks and regads
‎2008 Jul 01 9:19 AM
Sush,
i would suggest you to post this one in CRM for better and quick reply.
Amit.
‎2008 Jul 01 9:40 AM
Try this FM: BAPI_BUPA_ADDRESS_CHANGE or BAPI_BUPA_CENTRAL_CHANGE
‎2008 Jul 01 9:53 AM
Hello Sourav,
I neww to update only Language fields in Address Tab and IS Customer field in classification.
How can i do this with the BAPI's that u had given
‎2008 Jul 01 10:55 AM
Use the FM BAPI_BUPA_CENTRAL_CHANGE and pass the BUSINESSPARTNER, CENTRALDATA, CENTRALDATA_X to change the language.
You can update relationship by using BAPI_BUPR_RELATIONSHIP_CHANGE
Below is a sample code that i used to "delete" and "create" 'HAS APR Relationship'. You may refer it.
==============================================
************************************************************************
Includes *
************************************************************************
INCLUDE:
z_report_header. "Include for standart report header
************************************************************************
Type Declaration *
************************************************************************
TYPES:
*Type for input file structure
BEGIN OF x_file,
bp TYPE char10, "BP Number
apr_id TYPE char10, "APR ID
distance TYPE char11, "Distance
status_msg(132) TYPE c, "APR Status Message
END OF x_file,
*Type declaration for final information
BEGIN OF x_data,
bp TYPE bu_partner, "BP Number
apr_id TYPE bu_partner, "APR ID
distance TYPE s_distance, "Distance
status_msg TYPE tdline, "APR Status Message
apr_attrib_10 TYPE crmt_bu_katr10, "APR Attribute 10
del_flag TYPE char1, "Delete flag
END OF x_data,
*The final BP information
BEGIN OF x_bp_info,
bp TYPE bu_partner, "BP Number
status_msg TYPE tdline, "APR Status Message
bp_attrib_10 TYPE crmt_bu_katr10, "BP Attribute 10
bp_attrib_9 TYPE crmt_bu_katr9, "BP Attribute 9
create_rel TYPE char1, "Create relationship
std_apr TYPE bu_partner, "Standard Partner
END OF x_bp_info,
*Type declaration for final message
BEGIN OF x_message,
bp TYPE bu_partner, "BP Number
main_flag TYPE char1, "If it is the main msg
err_flag TYPE char1, "Error flag
message(125) TYPE c, "Message text
END OF x_message,
*Type for BP: General data I
BEGIN OF x_but000,
partner TYPE bu_partner, "BP Number
partner_guid TYPE bu_partner_guid, "BP GUID
xdele TYPE bu_xdele, "Central Archiving
xblck TYPE bu_xblck, "Central Block
END OF x_but000,
*Type for relation number
BEGIN OF x_but050,
relnr TYPE bu_relnr, "Relationship number
partner1 TYPE bu_partner, "Partner 1
partner2 TYPE bu_partner, "Partner 2
date_to TYPE bu_datto, "Validity date
END OF x_but050.
************************************************************************
Internal Table Declaration *
************************************************************************
DATA:
*File information
i_data TYPE STANDARD TABLE OF x_data INITIAL SIZE 0,
*Final BP info to update
i_bp_info TYPE STANDARD TABLE OF x_bp_info INITIAL SIZE 0,
*final Message table
i_message TYPE STANDARD TABLE OF x_message INITIAL SIZE 0,
*BP: General data I
i_but000 TYPE STANDARD TABLE OF x_but000 INITIAL SIZE 0,
*Relation number
i_but050 TYPE STANDARD TABLE OF x_but050 INITIAL SIZE 0,
"For table related to FRG0081
i_frg0081 TYPE STANDARD TABLE OF crmm_but_frg0081
INITIAL SIZE 0.
************************************************************************
Range Table Declaration *
************************************************************************
DATA:
r_bp TYPE RANGE OF bu_partner, "R-tab for BP
r_bp_apr TYPE RANGE OF bu_partner, "R-tab for BP, APR ID
r_apr TYPE RANGE OF bu_partner. "R-tab for APR ID
************************************************************************
Workarea Declaration *
************************************************************************
DATA:
wa_file TYPE x_file, "Input file
wa_data TYPE x_data, "File info
wa_bp_info TYPE x_bp_info, "Final BP info
wa_data_tmp TYPE x_data, "Temp Final info
wa_message TYPE x_message, "Message
wa_bp LIKE LINE OF r_bp, "BP number
wa_but000 TYPE x_but000, "BP: General data I
wa_but050 TYPE x_but050. "Relation no
************************************************************************
Global data declaration *
************************************************************************
DATA:
v_time(30) TYPE c, "Execution time
v_start_date TYPE sydatum, "Start Date
v_start_time TYPE syuzeit, "Start Time
v_end_date TYPE sydatum, "End Date
v_end_time TYPE syuzeit, "End Time
v_message TYPE string, "Message
v_count TYPE i, "BPs read
v_sucs_cnt TYPE i, "Success count
v_bp_guid TYPE bu_partner_guid, "BP GUID
v_sales_org TYPE crmt_sales_org, "Sales Org
v_dis_channel TYPE crmt_distribution_channel, "Distr Channel
v_division TYPE crmt_division, "Division
v_index TYPE sytabix. "Global index
************************************************************************
Constant Declaration *
************************************************************************
CONSTANTS:
c_check(1) TYPE c VALUE 'X', "Check
c_colon(1) TYPE c VALUE ':', "Colon
c_apath(30) TYPE c "App. srv path
VALUE '/data/interfaces/idd0312/',
c_fname(30) TYPE c "File name
VALUE 'IDD0312_BP_APR.dat',
c_reltyp TYPE bu_reltyp "Relationship type
VALUE 'ZRA001', "APR Distributor Rlshp
c_attrib_999 TYPE crmt_bu_katr10 VALUE '999', "Attrib 10 value
c_partner_fct TYPE crmt_partner_fct
VALUE 'Z0000024', "Partner Function
c_action TYPE bu_action VALUE 'U', "Action
c_rel TYPE char6 VALUE 'ZRA001', "APR Dist Reln
c_error TYPE char1 VALUE 'E', "Error
c_abend TYPE char1 VALUE 'A', "Abend
c_textid_apr TYPE tdid VALUE 'Z003', "APR Audit text id
c_object TYPE tdobject VALUE 'BUT000', "Object name
c_tdformat TYPE char1 VALUE '*', "Default paragraph
c_task TYPE char1 VALUE 'M', "Modify
c_validto TYPE timestamp VALUE '99991231235959',"Time
c_validfrom TYPE timestamp VALUE '10101000000'. "Time
************************************************************************
Selection Screen *
************************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-a01.
PARAMETERS:
p_afile TYPE localfile. "App. server file
SELECTION-SCREEN: END OF BLOCK b1.
************************************************************************
Initialization *
************************************************************************
INITIALIZATION.
Set the default file path
CONCATENATE c_apath c_fname INTO p_afile.
************************************************************************
At selection-screen on F4 help for Application Server file *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_afile.
Provide a F4 help for source file
PERFORM sub_afile_f4 USING p_afile.
************************************************************************
At selection-screen *
************************************************************************
AT SELECTION-SCREEN.
If the user click 'Execute' / press 'Enter' / press F8
IF sy-ucomm = 'ONLI' "Execute/F8
OR sy-ucomm = space. "Enter
Validate file path
PERFORM sub_validate_file_path.
ENDIF.
************************************************************************
Start of Selection *
************************************************************************
START-OF-SELECTION.
Set the run time clock on
PERFORM sub_startclock.
Import the file data
PERFORM sub_import_file_data.
Get the Business Partner General Data
PERFORM sub_get_bp_general_data.
Do extensive check & update i_data for further processing
PERFORM sub_check_update_i_data.
Populate the final BP information to update
PERFORM sub_gather_bp_details.
Update the BP
PERFORM sub_update_bp.
************************************************************************
End of Selection *
************************************************************************
END-OF-SELECTION.
Stop the application clock and calculate the execution time
PERFORM sub_stopclock.
Calculate the time duration
PERFORM sub_getduration.
Displaying summary for the report
PERFORM sub_display_summary.
Displaying detail report
PERFORM sub_display_report.
************************************************************************
Top of Page *
************************************************************************
TOP-OF-PAGE.
Display the report header
PERFORM sub_header USING sy-title space.
&----
*& Form sub_afile_f4
&----
Provide a F4 help for source application server file
----
-->P_P_AFILE text
----
FORM sub_afile_f4 USING p_p_afile TYPE localfile.
This function module provides the F4 help for application server
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
EXPORTING
directory = c_apath
filemask = space
IMPORTING
serverfile = p_p_afile
EXCEPTIONS
canceled_by_user = 1
OTHERS = 2.
If the help funtion has an error, display a message.
IF sy-subrc <> 0.
Message 'Unable to find filepath'.
MESSAGE i000 WITH 'Unable to find filepath'(001).
ENDIF.
ENDFORM. " sub_afile_f4
&----
*& Form sub_validate_file_path
&----
Check if the input file path is valid or not
----
No Parameter
----
FORM sub_validate_file_path .
Local data declaration
DATA: l_fname TYPE xuval. "Filename
Check if input is given
IF p_afile IS NOT INITIAL.
l_fname = p_afile.
Check the authority
CALL FUNCTION 'AUTHORITY_CHECK'
EXPORTING
object = 'S_DATASET'
field1 = 'PROGRAM'
value1 = sy-cprog
field2 = 'ACTVT'
value2 = '33'
field3 = 'FILENAME'
value3 = l_fname
EXCEPTIONS
user_dont_exist = 1
user_is_authorized = 2
user_not_authorized = 3
OTHERS = 4.
IF sy-subrc = 2.
Check if the path is valid
OPEN DATASET p_afile FOR INPUT IN TEXT MODE ENCODING DEFAULT
MESSAGE v_message.
If the file already exists
IF sy-subrc = 0.
Close the dataset
CLOSE DATASET p_afile.
ELSE.
SET CURSOR FIELD 'P_AFILE'.
MESSAGE e000 WITH v_message.
ENDIF.
ELSE.
SET CURSOR FIELD 'P_AFILE'.
MESSAGE e000(z_zzz_ca_messages)
WITH 'ERROR: No Authorization to the file!'(002).
ENDIF.
ELSE.
SET CURSOR FIELD 'P_AFILE'.
MESSAGE e000 WITH
'Please give the file path'(003).
ENDIF.
ENDFORM. " sub_validate_file_path
&----
*& Form sub_startclock
&----
This perform starts the system clock for calculating
execution time
----
No Parameters
----
FORM sub_startclock .
*--Starting the clock
GET TIME.
v_start_date = sy-datum.
v_start_time = sy-uzeit.
ENDFORM. " sub_startclock
&----
*& Form sub_stopclock
&----
Stop the clock
----
No parameters
----
FORM sub_stopclock .
*---Stopping the clock
GET TIME.
v_end_date = sy-datum. " Date
v_end_time = sy-uzeit. " Time
ENDFORM. " sub_stopclock
&----
*& Form sub_getduration
&----
Calculation of time required for execution
----
No parameter
----
FORM sub_getduration.
DATA: l_time TYPE i, "Time
l_secs(2) TYPE n, "Seconds
l_mins(2) TYPE n, "Minutes
l_hrs(2) TYPE n, "Hours
l_days TYPE i. "Days
*---Calculating the executing time
l_days = v_end_date - v_start_date.
l_time = ( v_end_time + ( l_days * 86400 ) ) - v_start_time .
l_hrs = l_time DIV 3600.
l_mins = ( l_time MOD 3600 ) DIV 60.
l_secs = ( l_time MOD 3600 ) MOD 60.
CONCATENATE l_hrs c_colon
l_mins c_colon
l_secs
INTO v_time.
ENDFORM. " sub_getduration
&----
*& Form sub_import_file_data
&----
Import the file data
----
-->P_I_FILE Table to store file data
----
FORM sub_import_file_data.
Show the progress bar
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = 'Importing data from file...'(004).
Open the source file for reading
OPEN DATASET p_afile FOR INPUT IN TEXT MODE
ENCODING DEFAULT
MESSAGE v_message.
IF sy-subrc = 0.
Read each line in the source file and add it's contents to the
internal table.
Populate the range table for BP
wa_bp-sign = 'I'.
wa_bp-option = 'EQ'.
DO.
READ DATASET p_afile INTO wa_file.
EOF reached
IF sy-subrc <> 0.
EXIT.
ELSE.
Check if the distance is in proper format
IF NOT wa_file-distance CO '0123456789. '.
CONCATENATE 'Distance'(035)
wa_file-distance
'for APR Id'(036)
wa_file-apr_id
'is invalid'(037)
INTO v_message
SEPARATED BY space.
Add message
PERFORM sub_append_message USING wa_file-bp
space
c_check
v_message.
CONTINUE.
ENDIF.
Populate the final formatted table as well---------
CLEAR wa_data.
MOVE-CORRESPONDING wa_file TO wa_data.
Padding leading zeros to BP
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_data-bp
IMPORTING
output = wa_data-bp.
Padding leading zeros to APR ID
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_data-apr_id
IMPORTING
output = wa_data-apr_id.
APPEND wa_data TO i_data.
Store the BP and APR id in a range table for future use
wa_bp-low = wa_data-bp.
APPEND wa_bp TO r_bp.
APPEND wa_bp TO r_bp_apr.
wa_bp-low = wa_data-apr_id.
APPEND wa_bp TO r_bp_apr.
ENDIF.
ENDDO.
Get the uniuqe BP nos
IF r_bp[] IS NOT INITIAL.
SORT r_bp.
DELETE r_bp WHERE low = space.
DELETE ADJACENT DUPLICATES FROM r_bp.
ENDIF.
Get the unique APR ids
IF r_bp_apr[] IS NOT INITIAL.
SORT r_bp_apr.
DELETE r_bp_apr WHERE low = space.
DELETE ADJACENT DUPLICATES FROM r_bp_apr.
ENDIF.
Close the source file
CLOSE DATASET p_afile.
IF i_data[] IS INITIAL.
MESSAGE i000 WITH
'Sorry, the file does not contain any data'(005).
LEAVE LIST-PROCESSING.
ELSE.
SORT i_data BY bp apr_id.
ENDIF.
ELSE.
MESSAGE i000 WITH v_message.
LEAVE LIST-PROCESSING.
ENDIF.
Clear variables
CLEAR: wa_file, wa_data.
ENDFORM. " sub_import_file_data
&----
*& Form sub_get_bp_general_data
&----
Get the Business Partner general data & store in
the table i_but000
----
No Parameter
----
FORM sub_get_bp_general_data .
IF r_bp_apr[] IS NOT INITIAL.
SELECT partner "Partner no
partner_guid "Partner GUID
xdele "Central Archiving
xblck "Central Block
FROM but000 "BP: General data I
INTO TABLE i_but000
WHERE partner IN r_bp_apr[].
IF sy-subrc = 0.
SORT i_but000 BY partner.
ENDIF.
ENDIF.
ENDFORM. " sub_get_bp_general_data
&----
*& Form sub_check_update_i_data
&----
Check the contents of i_data for further processing.
It will contain Attrib_10 value for the Distributors
----
No Parameter
----
FORM sub_check_update_i_data .
DATA:
l_tabix TYPE sytabix, "Tabix-value
l_tabix2 TYPE sytabix, "Tabix-value
l_bp TYPE bu_partner, "BP number
l_bp2 TYPE bu_partner. "BP number
Show the progress bar
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = 'Validating imported data...'(006).
LOOP AT i_data INTO wa_data.
l_tabix = sy-tabix.
For new BP (Check the BP)**************************
IF wa_data-bp = space
OR wa_data-bp NE l_bp.
l_bp = wa_data-bp.
Increase the Global counter
v_count = v_count + 1.
If BP number given is blank
IF wa_data-bp IS INITIAL.
v_message = 'BP number is blank in the file'(007).
Add message
PERFORM sub_append_message USING wa_data-bp
c_check
c_check
v_message.
Check it for deletion
wa_data-del_flag = c_check.
MODIFY i_data INDEX l_tabix
FROM wa_data
TRANSPORTING del_flag.
CONTINUE.
ELSE.
*>----Check if BP Exists/blocked/archived--
CLEAR: wa_but000, v_message.
READ TABLE i_but000 INTO wa_but000
WITH KEY partner = wa_data-bp
BINARY SEARCH.
If BP does not exist
IF sy-subrc NE 0.
CONCATENATE 'BP'(008)
wa_data-bp
'does not exist'(009)
INTO v_message
SEPARATED BY space.
ELSE.
If Centrally Archived
IF wa_but000-xdele = c_check.
CONCATENATE 'BP'(008)
wa_data-bp
'is Centrally Archived'(010)
INTO v_message
SEPARATED BY space.
If Centrally Blocked
ELSEIF wa_but000-xblck = c_check.
CONCATENATE 'BP'(008)
wa_data-bp
'is Centrally Blocked'(011)
INTO v_message
SEPARATED BY space.
ENDIF.
ENDIF.
If BP exists/blocked/centrally archived
IF v_message IS NOT INITIAL.
Add message
PERFORM sub_append_message USING wa_data-bp
c_check
c_check
v_message.
Check it for deletion
wa_data-del_flag = c_check.
MODIFY i_data FROM wa_data
TRANSPORTING del_flag
WHERE bp = wa_data-bp.
ENDIF.
*>----/Check if BP Exists/blocked/archived--
ENDIF.
ENDIF.
Check if it is not marked to delete
IF wa_data-del_flag IS INITIAL.
IF wa_data-apr_id IS NOT INITIAL.
If BP & APR ID are same
IF wa_data-bp = wa_data-apr_id.
CONCATENATE 'Relationship cannot be created between'(052)
'identical business partners'(053)
INTO v_message
SEPARATED BY space.
Add message
PERFORM sub_append_message USING wa_data-bp
space
c_check
v_message.
Check it for deletion
wa_data-del_flag = c_check.
MODIFY i_data INDEX l_tabix
FROM wa_data
TRANSPORTING del_flag.
CONTINUE.
ENDIF.
*>----Check if APR id Exists/blocked/archived--
CLEAR: wa_but000, v_message.
READ TABLE i_but000 INTO wa_but000
WITH KEY partner = wa_data-apr_id
BINARY SEARCH.
If APR ID does not exist
IF sy-subrc NE 0.
CONCATENATE 'APR Id'(054)
wa_data-apr_id
'does not exist'(009)
INTO v_message
SEPARATED BY space.
ELSE.
If Centrally Archived
IF wa_but000-xdele = c_check.
CONCATENATE 'APR Id'(054)
wa_data-apr_id
'is Centrally Archived'(010)
INTO v_message
SEPARATED BY space.
If Centrally Blocked
ELSEIF wa_but000-xblck = c_check.
CONCATENATE 'APR Id'(054)
wa_data-apr_id
'is Centrally Blocked'(011)
INTO v_message
SEPARATED BY space.
ENDIF.
ENDIF.
If BP exists/blocked/centrally archived
IF v_message IS NOT INITIAL.
Add message
PERFORM sub_append_message USING wa_data-bp
space
c_check
v_message.
Check it for deletion
wa_data-del_flag = c_check.
MODIFY i_data INDEX l_tabix
FROM wa_data
TRANSPORTING del_flag.
CONTINUE.
ENDIF.
*>----/Check if APR id Exists/blocked/archived--
Get the ATTRIB_10 Value for the Distributor
PERFORM sub_get_attrib_10_value USING wa_but000-partner_guid
CHANGING wa_data-apr_attrib_10.
If ATTRIB_10 value is not found
IF wa_data-apr_attrib_10 IS INITIAL.
CONCATENATE 'ATTRIB_10 value for the APR Id'(055)
wa_data-apr_id
'not found'(056)
INTO v_message
SEPARATED BY space.
Add message
PERFORM sub_append_message USING wa_data-bp
space
c_check
v_message.
Check it for deletion
wa_data-del_flag = c_check.
MODIFY i_data INDEX l_tabix
FROM wa_data
TRANSPORTING del_flag.
CONTINUE.
ELSE.
Update ATTRIB_10 vlaue to table
MODIFY i_data INDEX l_tabix
FROM wa_data
TRANSPORTING apr_attrib_10.
*>----
If there is any record for BP where APR ID has no value
Check if this check is performed only once for a BP
IF l_bp2 NE wa_data-bp.
l_bp2 = wa_data-bp.
READ TABLE i_data TRANSPORTING NO FIELDS
WITH KEY bp = wa_data-bp
apr_id = space.
IF sy-subrc = 0.
v_message = 'APR Id is blank'(057).
Add message
PERFORM sub_append_message USING wa_data-bp
space
c_check
v_message.
wa_data-del_flag = c_check.
MODIFY i_data FROM wa_data
TRANSPORTING del_flag
WHERE bp = wa_data-bp
AND apr_id = space.
ENDIF.
ENDIF. "l_bp NE wa_data-bp.
*>----
/If there is any record for BP where APR ID has no value
*>----
If same APR ID found multiple times for a BP
l_tabix2 = l_tabix + 1.
LOOP AT i_data FROM l_tabix2
INTO wa_data_tmp.
l_tabix2 = sy-tabix.
IF wa_data_tmp-bp NE wa_data-bp.
EXIT.
ENDIF.
If same APR ID
IF wa_data_tmp-apr_id = wa_data-apr_id.
CONCATENATE 'Duplicate APR Id'(058)
wa_data-apr_id
'for BP'(019)
wa_data-bp
INTO v_message
SEPARATED BY space.
Add message
PERFORM sub_append_message USING wa_data-bp
space
c_check
v_message.
Check it for deletion
wa_data_tmp-del_flag = c_check.
MODIFY i_data INDEX l_tabix2
FROM wa_data_tmp
TRANSPORTING del_flag.
ELSE.
EXIT.
ENDIF.
ENDLOOP.
*>-------/If same APR ID found multiple times for a BP
ENDIF. "IF wa_data-apr_attrib_10 IS INITIAL.
ENDIF. "IF wa_data-apr_id IS NOT INITIAL.
ENDIF. "IF wa_data-del_flag IS INITIAL.
ENDLOOP.
DELETE i_data WHERE del_flag = c_check.
Clear variables
CLEAR: wa_file, wa_data, wa_data_tmp, v_message.
ENDFORM. " sub_check_update_i_data
&----
*& Form sub_append_message
&----
Populate the final message table using the input parameter
----
-->P_L_BP Business Partner Number
-->P_L_MAIN_FLAG Main flag (As header)
-->P_L_ERR_FLAG Error Flag
-->P_L_MESSAGE Message text
----
FORM sub_append_message USING p_l_bp TYPE bu_partner
p_l_main_flag TYPE char1
p_l_err_flag TYPE char1
p_l_message TYPE string.
wa_message-bp = p_l_bp.
wa_message-main_flag = p_l_main_flag.
wa_message-err_flag = p_l_err_flag.
wa_message-message = p_l_message.
APPEND wa_message TO i_message.
CLEAR wa_message.
ENDFORM. " sub_append_message
&----
*& Form sub_get_attrib_10_value
&----
Get Atribute 10 for the Distributor
----
-->P_L_GUID Partner GUID
<--P_L_ATTRIB_10 ATTRIB_10 Value
----
FORM sub_get_attrib_10_value USING p_l_guid TYPE bu_partner_guid
CHANGING p_l_attrib_10 TYPE crmt_bu_katr10.
DATA : l_wa_frg0040_apr TYPE crmt_bus_frg0040.
"CRM BP Fragment Structure
Get the Attribute details
CALL FUNCTION 'CRM_BUPA_FRG0040_GET_DETAIL'
EXPORTING
iv_partner_guid = p_l_guid
IMPORTING
es_data = l_wa_frg0040_apr.
p_l_attrib_10 = l_wa_frg0040_apr-attrib_10.
ENDFORM. " sub_get_attrib_10_value
&----
*& Form sub_gather_bp_details
&----
Make decission about the relationship and ATTRIB values
based on the file info and update the final BP info table
----
No Parameter
----
FORM sub_gather_bp_details .
DATA:
l_std_partner TYPE bu_partner, "Standard partner
l_attrib1 TYPE crmt_bu_katr10, "Attrib value
l_attrib2 TYPE crmt_bu_katr10, "Attrib value
l_attrib3 TYPE crmt_bu_katr10. "Attrib value
SORT i_data BY bp distance.
CLEAR r_bp.
Populate the range table for BP
wa_bp-sign = 'I'.
wa_bp-option = 'EQ'.
LOOP AT i_data INTO wa_data_tmp.
wa_data = wa_data_tmp.
For the first record of BP
AT NEW bp.
If there is APR relations
IF wa_data-apr_id IS NOT INITIAL.
l_std_partner = wa_data-apr_id.
l_attrib1 = wa_data-apr_attrib_10.
ENDIF.
ENDAT.
Get the unique ATTRIB_10 value
IF wa_data-apr_attrib_10 NE l_attrib1.
IF l_attrib2 IS INITIAL.
l_attrib2 = wa_data-apr_attrib_10.
ELSEIF wa_data-apr_attrib_10 NE l_attrib2.
l_attrib3 = wa_data-apr_attrib_10.
ENDIF.
ENDIF.
AT END OF bp.
For APR Distributor relations
IF wa_data-apr_id IS NOT INITIAL.
wa_bp_info-bp = wa_data-bp.
If one unique APR Distributor
IF l_attrib1 IS NOT INITIAL
AND l_attrib2 IS INITIAL
AND l_attrib3 IS INITIAL.
wa_bp_info-bp_attrib_10 = l_attrib1.
wa_bp_info-create_rel = c_check.
wa_bp_info-std_apr = l_std_partner.
If two unique Distributor
ELSEIF l_attrib1 IS NOT INITIAL
AND l_attrib2 IS NOT INITIAL
AND l_attrib3 IS INITIAL.
wa_bp_info-bp_attrib_10 = l_attrib1.
wa_bp_info-bp_attrib_9 = l_attrib2.
wa_bp_info-create_rel = c_check.
If more than two unique Distributor
ELSEIF l_attrib1 IS NOT INITIAL
AND l_attrib2 IS NOT INITIAL
AND l_attrib3 IS NOT INITIAL.
wa_bp_info-bp_attrib_10 = c_attrib_999.
ENDIF.
APPEND wa_bp_info TO i_bp_info.
For APR Status message updation
ELSE.
wa_bp_info-bp = wa_data-bp.
wa_bp_info-status_msg = wa_data-status_msg.
wa_bp_info-bp_attrib_10 = c_attrib_999.
APPEND wa_bp_info TO i_bp_info.
ENDIF.
Populate the BP range table
wa_bp-low = wa_data-bp.
APPEND wa_bp TO r_bp.
CLEAR: wa_bp_info,
l_std_partner,
l_attrib1,
l_attrib2,
l_attrib3.
ENDAT.
ENDLOOP.
ENDFORM. " sub_gather_bp_details
&----
*& Form sub_update_bp
&----
Update the Business Partner
----
No Parameter
----
FORM sub_update_bp .
DATA:
l_subrc TYPE sysubrc, "sy-subrc value
"Temporary table for BP details
l_i_but000 TYPE STANDARD TABLE OF x_but000 INITIAL SIZE 0,
l_total TYPE i, "Total no
l_percent TYPE i, "Percentage complete.
l_per_text TYPE text70. "Updating BP..
*>Get sales area details for all BP----
IF r_bp[] IS NOT INITIAL.
l_i_but000[] = i_but000[].
SORT l_i_but000 BY partner.
DELETE l_i_but000 WHERE partner NOT IN r_bp.
DELETE ADJACENT DUPLICATES is not reqd.
as i_but000 contains unique BP
IF l_i_but000[] IS NOT INITIAL.
SELECT *
FROM crmm_but_frg0081
INTO TABLE i_frg0081
FOR ALL ENTRIES IN l_i_but000
WHERE partner_guid = l_i_but000-partner_guid
AND partner_fct = c_partner_fct
AND is_deflt_partner = c_check.
IF sy-subrc = 0.
SORT i_frg0081 BY partner_guid sales_org channel division.
ENDIF.
ENDIF.
ENDIF.
*>/Get sales area details for all BP----
SORT i_data BY bp.
SORT i_bp_info BY bp.
l_total = LINES( i_bp_info ).
LOOP AT i_bp_info INTO wa_bp_info.
l_percent = 100 * sy-tabix / l_total.
CONCATENATE 'Updating BP'(020)
wa_bp_info-bp
'...'(021)
INTO l_per_text
SEPARATED BY space.
Display process indicator
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = l_percent
text = l_per_text.
CLEAR l_subrc.
Lock the BP
PERFORM sub_lock_bp USING wa_bp_info-bp
CHANGING l_subrc.
IF l_subrc = 0.
Get the BP GUID
CLEAR wa_but000.
READ TABLE i_but000 INTO wa_but000
WITH KEY partner = wa_bp_info-bp
BINARY SEARCH.
IF sy-subrc = 0.
Store BP GUID in a global variablw
v_bp_guid = wa_but000-partner_guid.
Populate sales data for future use
PERFORM sub_get_sales_data USING wa_bp_info-bp
CHANGING l_subrc.
IF l_subrc = 0.
Delete the existing APR relations
PERFORM sub_delete_relations USING wa_bp_info-bp
CHANGING l_subrc.
If all existing APR relations are deleted
IF l_subrc = 0.
Case for status message updation
IF wa_bp_info-status_msg IS NOT INITIAL.
Update ststus message
PERFORM sub_update_apr_text_for_bp USING wa_bp_info-bp
wa_bp_info-status_msg
CHANGING l_subrc.
ENDIF.
Case for relation creation
IF wa_bp_info-create_rel = c_check.
Create relation
PERFORM sub_create_relation USING wa_bp_info-bp
wa_bp_info-std_apr
CHANGING l_subrc.
ENDIF.
IF l_subrc = 0.
Update attrib 10 value
PERFORM sub_update_attrib_10 USING wa_bp_info-bp
wa_bp_info-bp_attrib_10
wa_bp_info-bp_attrib_9
CHANGING l_subrc.
ENDIF.
ENDIF.
ENDIF.
IF l_subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
v_sucs_cnt = v_sucs_cnt + 1.
Populate the error message
v_message = 'BP Updated Successfully'(022).
PERFORM sub_append_message USING wa_bp_info-bp
c_check
space
v_message.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ENDIF.
Unlock the BP
PERFORM sub_unlock_bp USING wa_bp_info-bp.
ENDIF.
ENDLOOP.
ENDFORM. " sub_update_bp
&----
*& Form sub_lock_bp
&----
Lock the BP for Updation
----
-->P_BP BP Number
<--P_SUBRC Subrc value
----
FORM sub_lock_bp USING p_bp TYPE bu_partner
CHANGING p_subrc TYPE sysubrc.
Check if the BP is locked for updation
CALL FUNCTION 'ENQUEUE_EBU_PARTNR'
EXPORTING
partner = p_bp
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
p_subrc = sy-subrc.
IF p_subrc NE 0.
CONCATENATE 'Business Partner is Currently Being Processed By'(023)
sy-msgv1
INTO v_message
SEPARATED BY space.
PERFORM sub_append_message USING p_bp
c_check
c_check
v_message.
ENDIF.
ENDFORM. " sub_lock_bp
&----
*& Form sub_get_sales_data
&----
Retrieve the Sales data and keep in global
variable for future use
----
-->P_BP BP Number
<--P_SUBRC Subrc value
----
FORM sub_get_sales_data USING p_bp TYPE bu_partner
CHANGING p_subrc TYPE sysubrc.
DATA:
l_i_sales_area TYPE STANDARD TABLE OF crmt_orgman_sales_area
INITIAL SIZE 0, "Sales area data
l_wa_sales_area TYPE crmt_orgman_sales_area."Sales area
Get sales area data
CALL FUNCTION 'CRM_ORGMAN_VTAREA_GET'
EXPORTING
iv_keydate = sy-datum
use_buffer = c_check
TABLES
et_sales_area_tab = l_i_sales_area
EXCEPTIONS
nothing_found = 1
OTHERS = 2.
IF sy-subrc = 0.
CLEAR l_wa_sales_area.
READ TABLE l_i_sales_area INTO l_wa_sales_area INDEX 1.
IF sy-subrc = 0.
v_sales_org = l_wa_sales_area-sales_org.
v_dis_channel = l_wa_sales_area-dis_channel.
v_division = l_wa_sales_area-division.
ENDIF.
ENDIF.
p_subrc = sy-subrc.
IF p_subrc NE 0.
v_message = 'Sales area data is not found'(024).
PERFORM sub_append_message USING p_bp
c_check
c_check
v_message.
ENDIF.
ENDFORM. " sub_get_sales_data
&----
*& Form sub_delete_relations
&----
Delete existing Has APR Distributor relationship for the BP
----
-->P_BP BP Number
<--P_SUBRC Subrc value
----
FORM sub_delete_relations USING p_bp TYPE bu_partner
CHANGING p_subrc TYPE sysubrc.
DATA:
"For Relationship data
l_i_relations TYPE STANDARD TABLE OF but050 INITIAL SIZE 0,
"For Return messages
l_i_return TYPE STANDARD TABLE OF bapiret2 INITIAL SIZE 0,
l_wa_relations TYPE but050, "For Relationship data.
l_wa_return TYPE bapiret2. "For return messages
To get all the relationships for a business partner
CALL FUNCTION 'BUB_BUPR_BUT050_READ'
EXPORTING
e_partner = p_bp
TABLES
et_relations = l_i_relations.
sy-subrc is not checked as exceptions is not thrown
IF NOT l_i_relations[] IS INITIAL.
Delete Standard Relation
PERFORM sub_delete_std_rel.
LOOP AT l_i_relations INTO l_wa_relations WHERE partner1 = p_bp
AND reltyp = c_rel.
REFRESH l_i_return[].
Delete the existing 'Has APR Distributor' relationships
CALL FUNCTION 'BAPI_BUPR_RELATIONSHIP_DELETE'
EXPORTING
businesspartner1 = p_bp
businesspartner2 = l_wa_relations-partner2
relationshipcategory = l_wa_relations-reltyp
TABLES
return = l_i_return.
LOOP AT l_i_return INTO l_wa_return WHERE type = c_error OR
type = c_abend .
p_subrc = 1.
Format the message
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = l_wa_return-id
lang = sy-langu
no = l_wa_return-number
v1 = l_wa_return-message_v1
v2 = l_wa_return-message_v2
v3 = l_wa_return-message_v3
v4 = l_wa_return-message_v4
IMPORTING
msg = v_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
Populate the error message
PERFORM sub_append_message USING p_bp
c_check
c_check
v_message.
ENDIF.
EXIT.
ENDLOOP.
IF p_subrc NE 0.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " sub_delete_relations
&----
*& Form sub_delete_std_rel
&----
Delete Existing Standard relation for the BP
----
No Parameter
----
FORM sub_delete_std_rel.
DATA:
l_i_frg0081 TYPE STANDARD TABLE OF crmt_bus_frg0081_wrk
INITIAL SIZE 0, "For table related to FRG0081
l_i_frg0080 TYPE STANDARD TABLE OF crmt_bus_frg0080_wrk
INITIAL SIZE 0, "For table related to FRG0080
l_wa_frg0081 TYPE crmt_bus_frg0081_wrk.
"For workarea related to FRG0081
Get data from Business Partner - Sales Area - Partner Function
READ TABLE i_frg0081 INTO l_wa_frg0081
WITH KEY partner_guid = v_bp_guid
sales_org = v_sales_org
channel = v_dis_channel
division = v_division
BINARY SEARCH.
IF sy-subrc = 0.
l_wa_frg0081-is_deflt_partner = space.
l_wa_frg0081-action = c_action.
l_wa_frg0081-xchng = c_check.
APPEND l_wa_frg0081 TO l_i_frg0081.
CLEAR l_wa_frg0081.
Uncheck standard partner indicator
CALL FUNCTION 'CRMH_BUPR_UPDATE'
TABLES
it_frg0080_wrk = l_i_frg0080
it_frg0081_wrk = l_i_frg0081.
ENDIF.
ENDFORM. " sub_delete_std_rel
&----
*& Form sub_create_relation
&----
Create 'Has APR Distributor' Relationship
----
-->P_BP BP Number
-->P_STD_APR Standard Relation
<--P_SUBRC Sy-subrc value
----
FORM sub_create_relation USING p_bp TYPE bu_partner
p_std_apr TYPE bu_partner
CHANGING p_subrc TYPE sysubrc.
DATA:
"For Return messages
l_i_return TYPE STANDARD TABLE OF bapiret2 INITIAL SIZE 0,
l_wa_return TYPE bapiret2. "For return messages
REFRESH r_apr.
CLEAR: r_apr, wa_bp.
Populate the range table for BP
wa_bp-sign = 'I'.
wa_bp-option = 'EQ'.
LOOP AT i_data FROM v_index
INTO wa_data.
Store the index in a global variable
v_index = sy-tabix.
IF wa_data-bp = p_bp.
To create the relationship "Has APR Distributor"
CALL FUNCTION 'BAPI_BUPR_RELATIONSHIP_CREATE'
EXPORTING
businesspartner1 = wa_data-bp
businesspartner2 = wa_data-apr_id
relationshipcategory = c_rel
TABLES
return = l_i_return.
LOOP AT l_i_return INTO l_wa_return WHERE type = c_error OR
type = c_abend .
p_subrc = 1.
Format the message
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = l_wa_return-id
lang = sy-langu
no = l_wa_return-number
v1 = l_wa_return-message_v1
v2 = l_wa_return-message_v2
v3 = l_wa_return-message_v3
v4 = l_wa_return-message_v4
IMPORTING
msg = v_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
Populate the error message
PERFORM sub_append_message USING p_bp
c_check
c_check
v_message.
ENDIF.
EXIT.
ENDLOOP.
Collect the APR ID for the successful relation
It will be used in the update relation
IF p_subrc = 0.
wa_bp-low = wa_data-apr_id.
APPEND wa_bp TO r_apr.
ELSE.
EXIT.
ENDIF.
The table i_data is sorted by bp...
If it finds any bp greater than p_bp... exit the loop
ELSEIF wa_data-bp > p_bp.
EXIT.
ENDIF.
ENDLOOP.
If successful, then Commit work
IF p_subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_check.
Update the relation
PERFORM sub_update_relation USING p_bp
p_std_apr.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ENDFORM. " sub_create_relation
&----
*& Form sub_update_relation
&----
Update sales data & Standard check for the relation
----
-->P_BP BP Number
-->P_STD_APR Standard Relation
----
FORM sub_update_relation USING p_bp TYPE bu_partner
p_std_apr TYPE bu_partner.
DATA:
l_i_frg0081 TYPE STANDARD TABLE OF crmt_bus_frg0081_wrk
INITIAL SIZE 0, "For table related to FRG0081
l_i_frg0080 TYPE STANDARD TABLE OF crmt_bus_frg0080_wrk
INITIAL SIZE 0, "For table related to FRG0080
l_wa_frg0081 TYPE crmt_bus_frg0081_wrk.
REFRESH i_but050[].
IF r_apr[] IS NOT INITIAL.
Get the relationship number
SELECT relnr "BP Relationship No
partner1 "BP Number1
partner2 "BP Number2
date_to "Validity Date
FROM but050
INTO TABLE i_but050
WHERE partner1 = p_bp
AND partner2 IN r_apr[]
AND date_to >= sy-datum
AND reltyp = c_reltyp.
IF sy-subrc = 0.
SORT i_but050 BY partner2.
ENDIF.
ENDIF.
Update the relationship*************************************
l_wa_frg0081-partner_guid = v_bp_guid.
l_wa_frg0081-sales_org = v_sales_org.
l_wa_frg0081-channel = v_dis_channel.
l_wa_frg0081-division = v_division.
l_wa_frg0081-partner_fct = c_partner_fct.
l_wa_frg0081-valid_to = c_validto.
l_wa_frg0081-valid_from = c_validfrom.
l_wa_frg0081-xchng = c_check.
l_wa_frg0081-partner1 = p_bp.
l_wa_frg0081-action = c_action.
LOOP AT r_apr INTO wa_bp.
Get the relationship number
CLEAR wa_but050.
READ TABLE i_but050 INTO wa_but050
WITH KEY
partner2 = wa_bp-low
BINARY SEARCH.
IF sy-subrc = 0.
l_wa_frg0081-relnr = wa_but050-relnr.
ENDIF.
Get the APR guid
CLEAR wa_but000.
READ TABLE i_but000 INTO wa_but000
WITH KEY partner = wa_bp-low
BINARY SEARCH.
IF sy-subrc = 0.
l_wa_frg0081-rel_partner_guid =
wa_but000-partner_guid.
ENDIF.
Mark the standard relationship
IF wa_bp-low = p_std_apr.
l_wa_frg0081-is_deflt_partner = c_check.
ELSE.
CLEAR l_wa_frg0081-is_deflt_partner.
ENDIF.
Append the relationship
APPEND l_wa_frg0081 TO l_i_frg0081.
ENDLOOP.
Update the standard partner indicator (X)***********************
CALL FUNCTION 'CRMH_BUPR_UPDATE'
TABLES
it_frg0080_wrk = l_i_frg0080
it_frg0081_wrk = l_i_frg0081.
ENDFORM. " sub_update_relation
&----
*& Form sub_update_apr_text_for_bp
&----
Update APR audit text in transaction BP
----
-->P_BP BP Number
-->P_STATUS_MSG Status message
<--P_SUBRC Sy-subrc value
----
FORM sub_update_apr_text_for_bp USING p_bp TYPE bu_partner
p_status_msg TYPE tdline
CHANGING p_subrc TYPE sysubrc.
DATA:
l_i_header TYPE STANDARD TABLE OF thead,
l_i_longtexts TYPE STANDARD TABLE OF bus_ei_bupa_longtext,
l_i_lines TYPE comt_text_lines_t, "Text lines
l_wa_data_key TYPE bus_ei_struc_longtext_key, "Long text key
l_wa_header TYPE thead,
l_wa_longtexts TYPE bus_ei_bupa_longtext,
l_tdid TYPE tdid,
l_name TYPE tdobname,
l_wa_tline TYPE tline, "SAPscript Text line
l_wa_data TYPE bus_ei_struc_longtext. "Long text
l_tdid = c_textid_apr.
l_name = p_bp.
Read all old entries of ID numbers
CALL FUNCTION 'SELECT_TEXT'
EXPORTING
database_only = c_check
object = c_object
name = l_name
id = l_tdid
TABLES
selections = l_i_header
EXCEPTIONS
OTHERS = 0.
READ TABLE l_i_header INTO l_wa_header WITH KEY tdid = l_tdid.
IF sy-subrc = 0.
l_wa_longtexts-data_key-text_id = l_wa_header-tdid.
l_wa_longtexts-data_key-langu = l_wa_header-tdspras.
APPEND l_wa_longtexts TO l_i_longtexts.
ENDIF.
READ TABLE l_i_longtexts INTO l_wa_longtexts INDEX 1.
IF sy-subrc = 0.
Delete the long text if new text for that text-id is available
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
id = l_wa_longtexts-data_key-text_id
language = l_wa_longtexts-data_key-langu
name = l_name
object = c_object.
ENDIF.
CLEAR: l_wa_header, l_wa_longtexts.
REFRESH : l_i_longtexts.
l_wa_tline-tdformat = c_tdformat.
l_wa_tline-tdline = p_status_msg.
APPEND l_wa_tline TO l_i_lines.
l_wa_data_key-text_id = c_textid_apr.
l_wa_data_key-langu = sy-langu.
l_wa_longtexts-task = c_task.
l_wa_longtexts-data_key = l_wa_data_key.
l_wa_data-lines = l_i_lines.
l_wa_longtexts-data = l_wa_data.
APPEND l_wa_longtexts TO l_i_longtexts.
l_wa_header-tdid = l_wa_longtexts-data_key-text_id.
l_wa_header-tdspras = l_wa_longtexts-data_key-langu.
l_wa_header-tdname = p_bp.
l_wa_header-tdobject = c_object.
Save the long text
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
header = l_wa_header
TABLES
lines = l_wa_longtexts-data-lines
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
p_subrc = sy-subrc.
IF p_subrc = 0.
save text memory
CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
object = c_object
name = l_name.
No need to check sy-subrc as no exception is thrown
ELSE.
v_message = 'Status message updation failed!'(050).
PERFORM sub_append_message USING p_bp
c_check
c_check
v_message.
ENDIF.
ENDFORM. " sub_update_apr_text_for_bp
&----
*& Form sub_update_attrib_10
&----
Update Attribute 9, 10 field the BP in Classification Tab
----
-->P_BP BP Number
-->P_ATTRIB_10 Attrib 10 value
-->P_ATTRIB_9 Attrib 9 value
<--P_SUBRC Subrc value
----
FORM sub_update_attrib_10 USING p_bp TYPE bu_partner
p_attrib_10 TYPE crmt_bu_katr10
p_attrib_9 TYPE crmt_bu_katr9
CHANGING p_subrc TYPE sysubrc.
DATA:
l_changed_on TYPE timestamp, "UTC Time Stamp
l_home_system TYPE logsys, "Logical system
l_wa_frg0040 TYPE crmm_but_frg0040, "For CRMM_BUT_FRG0040
l_wa_frg0041 TYPE crmm_but_frg0041, "For CRMM_BUT_FRG0041
l_wa_frg0040_bp TYPE crmt_bus_frg0040, "CRM BP Fragment Structure
l_wa_return TYPE bapiret2, "Return parameter
l_i_frg0040_old TYPE crmt_but_frg0040_t, "For CRMM_BUT_FRG0040
l_i_frg0040_new TYPE crmt_but_frg0040_t, "For CRMM_BUT_FRG0040
l_i_frg0041_old TYPE crmt_but_frg0041_t, "For CRMM_BUT_FRG0041
l_i_frg0041_new TYPE crmt_but_frg0041_t, "For CRMM_BUT_FRG0041
l_i_return TYPE STANDARD TABLE OF bapiret2."Return table
Get the attribute 10 field of the MAIN BP
CALL FUNCTION 'CRM_BUPA_FRG0040_GET_DETAIL'
EXPORTING
iv_partner_guid = v_bp_guid
IMPORTING
es_data = l_wa_frg0040_bp
et_return = l_i_return.
LOOP AT l_i_return INTO l_wa_return WHERE type = c_error OR
type = c_abend .
p_subrc = 1.
Format the message
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = l_wa_return-id
lang = sy-langu
no = l_wa_return-number
v1 = l_wa_return-message_v1
v2 = l_wa_return-message_v2
v3 = l_wa_return-message_v3
v4 = l_wa_return-message_v4
IMPORTING
msg = v_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
Populate the error message
PERFORM sub_append_message USING p_bp
c_check
c_check
v_message.
ENDIF.
EXIT.
ENDLOOP.
IF p_subrc = 0.
Change the currently valid data.
GET TIME STAMP FIELD l_changed_on.
Get home system
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
own_logical_system = l_home_system
EXCEPTIONS
own_logical_system_not_defined = 1
OTHERS = 2.
IF sy-subrc = 0.
l_wa_frg0040-home_system = l_home_system.
ENDIF.
Populating the internal table for FRG0040
l_wa_frg0040-client = sy-mandt.
l_wa_frg0040-partner_guid = v_bp_guid.
l_wa_frg0040-changed_by = sy-uname.
l_wa_frg0040-changed_on = l_changed_on.
APPEND l_wa_frg0040 TO l_i_frg0040_old.
APPEND l_wa_frg0040 TO l_i_frg0040_new.
Populating the internal table for FRG0041
MOVE-CORRESPONDING l_wa_frg0040_bp TO l_wa_frg0041.
l_wa_frg0041-client = sy-mandt.
l_wa_frg0041-partner_guid = v_bp_guid.
l_wa_frg0041-valid_to = c_validto.
APPEND l_wa_frg0041 TO l_i_frg0041_old.
l_wa_frg0041-attrib_10 = p_attrib_10.
l_wa_frg0041-attrib_9 = p_attrib_9.
APPEND l_wa_frg0041 TO l_i_frg0041_new.
CALL FUNCTION 'CRM_BUPA_FRG0040_SAVE'
EXPORTING
iv_in_update_task = c_check
it_frg0040_old = l_i_frg0040_old
it_frg0041_old = l_i_frg0041_old
it_frg0040_new = l_i_frg0040_new
it_frg0041_new = l_i_frg0041_new.
ENDIF.
ENDFORM. " sub_update_attrib_10
&----
*& Form sub_unlock_bp
&----
Unlock the BP
----
-->P_BP Unlock the BP
----
FORM sub_unlock_bp USING p_bp TYPE bu_partner.
CALL FUNCTION 'DEQUEUE_EBU_PARTNR'
EXPORTING
partner = p_bp.
ENDFORM. " sub_unlock_bp
&----
*& Form sub_display_summary
&----
Displaying header for the report
----
No parameter
----
FORM sub_display_summary .
DATA: l_str TYPE string,
l_count_tmp TYPE i.
It is written because sy-pagno can not be set without write statement
WRITE space.
Output basic report header details
IF sy-pagno = 1.
SKIP 1.
WRITE: / 'Summary:'(025),
/ '.................................................'(026).
SKIP.
Write the report header
This conversion is done because the
filename data element creates new line
l_str = p_afile.
l_count_tmp = v_count - v_sucs_cnt.
WRITE: /3 'Source File :'(027), l_str,
/3 'Target System :'(028), sy-sysid,
/3 'No of BP :'(029), v_count LEFT-JUSTIFIED,
/3 'Updated :'(030), v_sucs_cnt LEFT-JUSTIFIED,
/3 'Failed :'(031), l_count_tmp LEFT-JUSTIFIED,
/3 'Execution Time:'(032), v_time.
ENDIF.
ENDFORM. " sub_display_summary
&----
*& Form sub_display_report
&----
Display detail report
----
No Parameter
----
FORM sub_display_report .
SORT i_message BY bp main_flag.
SKIP 2.
WRITE: / 'Detail Result:'(033),
/ '.................................................'(026).
Display the field level
ULINE AT /(142).
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
WRITE: /1 sy-vline, 'BP'(008),
15 sy-vline, 'Message'(034),
142 sy-vline.
ULINE AT /(142).
Display the records
LOOP AT i_message INTO wa_message.
If successful
IF wa_message-err_flag = space.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
If failed
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF.
ENDIF.
Display the details
WRITE: /1 sy-vline, wa_message-bp,
15 sy-vline, wa_message-message,
142 sy-vline.
ENDLOOP.
ULINE AT /(142).
FORMAT RESET.
ENDFORM. " sub_display_report
==============================================
‎2008 Jul 01 9:43 AM
in crm bdc will not help u go for some Fm.........
BPOB_MAINTAIN_CHANGES&CRM_TM_UI_BP_MAINTAIN
check this..............else.........
Regards
Anbu
‎2008 Jul 01 9:46 AM
BDC won't work. Go to function group BUBA_3 there you will find lots of APIs which will help you.
‎2008 Jul 01 11:03 AM
‎2008 Jul 01 1:00 PM
Hi,
I think as for my knowledge the recording for the transaction BP is similar to the recording fo the SAP Njoy transactions which is not feasible.
So Please search for the available bAPIS.
REgards
Abhilash.