BAPI_OPPORTUNITY_CREATEMULTI Appointment
Anyone have any experience with BAPI_OPPORTUNITY_CREATEMULTI
creating APPOINTMENTS?
Any code would be appreciated.
In LCRM_BUSPROCESSND_BAPIF66, there is a call to map_into_appointment, which in our case does not return a Time zone... and cause a problem
Hi,
I am not able to upload the data for Partner and Sales Prospect fields using BAPI_OPPORTUNITY_CREATEMULTI whereas all the other header and item fields are getting uploaded. Kindly suggest solution for this issue.
Regards,
Dinesh
Similar Messages
-
BAPI_OPPORTUNITY_CREATEMULTI
Can someone please show me an example of how to use this BAPI to create CRM Sub-Opportunities - have been struggling for several days. Am creating a simple prototype prg to see if feasible at-this-time. Sub-Opps already exist in the system, I just want to add/assign them to a Master CRM rec.
Seems like I only need 3 param tables:
1. HEADER - is this for the Master Rec or do you build header based on sub-opp info/guid?
2. OPPORTUNITY - seems clear but am not sure about fields REF_HANDLE & REF_GUID. Are these for the master rec or the opportunity?
3. INPUT_FIELDS - everyone has trouble with this:
lt_InputFields-REF_HANDLE = ? "N(10)
lt_InputFields-REF_GUID = ? "C(32)
lt_InputFields-REF_KIND = ? "C(01)
lt_InputFields-OBJECTNAME = ? "C(30)
lt_InputFields-LOGICAL_KEY = ? "C(42)
lt_InputFields-FIELDNAME = ? "C(30)
lt_InputFields-CHANGEABLE = ? "C(1)
I have tried the following alternate strategies too, maybe
1. Debug main transaction CRMD_BUS2000111 (Maintain Opportunities) at point of saving sub-opps but I cannot find where the save occurs to see how SAP does it. Ran SE30 on it and found some functions that look promising but when I set a break-point on a specific func-name, it never stops!
2. Function CRM_WAP_OPP_CREATE() actually calls BAPI_OPPORTUNITY_CREATEMULTI and it seems much-much simpler because it requires a minimal number of parameters but I get nothing.
If anyone can help, I promise to upload my final prototype here for others.Below is a complete prototype program that exercises the CRM OPPORTUNITY BAPIs. It should run as-is, since no special tables or text-elements are used. I did not use EVERY table parameter available to the BAPIs, but this is a good start.
As I promised, once I got these working - I wanted to post my results. I hope this may be useful and serve as a big relief for the next guy.
Program Name: ZJRC_CRMBAPI01 (SAP vers 4.7, CRM 4.0)
Description : Test program for the CRM Opportunity BAPI's.
: CRM_OPPORTUNITYCRM_BAPI BAPI Implementations:
: BAPI_OPPORTUNITY_GETDETAILMUL Read Opportunities
: BAPI_OPPORTUNITY_CREATEMULTI Generate Opportunities
: BAPI_OPPORTUNITY_CHANGEMULTI Change Opportunities
: BAPI_OPPORTUNITY_DELETEMULTI Delete Opportunities
: Once the concepts are proven, a function module will
: will created for Steven J. Lee to call from his
: modified CRM opportunity screen.
Parameters : None
Called from : SE38/SA38
Calls to :
Internal : 1. L_Main() - main body.
: 2. L_GetGUID() - returns guid based on obj_id #.
: 3. L_GetOppInfo() - calls BAPI_OPPORTUNITY_GETDETAILMU()
: 4. L_CreateOpp() - calls BAPI_OPPORTUNITY_CREATEMULTI()
: 5. L_BldCHeader() - builds header param itab.
: 6. L_BldCOpp() - builds opportunity param itab.
: 7. L_BldCOrg() - builds organization param itab.
: 8. L_BldCCustH() - builds customer_head itab.
: 9. L_BldCFields() - builds input_fields itab. (Partner too)
:10. L_LinkOpp() - calls BAPI_OPPORTUNITY_CHANGEMULTI()
:11. L_CheckOpen() - if order is open, cannot save.
:12. L_ChangeOpp() - calls BAPI_OPPORTUNITY_CHANGEMULTI()
:13. L_DeleteOpp - calls BAPI_OPPORTUNITY_DELETEMULTI()
:14. L_OutPut() - displays guid info and bapi results.
:15. L_DispSubOpps()- displays linked sub-opp guid info.
:16. L_ClearITabs() - clears various global itabs.
External : 1. BAPI_OPPORTUNITY_GETDETAILMUL()
: 2. BAPI_OPPORTUNITY_CREATEMULTI()
: 3. BAPI_OPPORTUNITY_CHANGEMULTI()
: 4. BAPI_OPPORTUNITY_DELETEMULTI()
: 5. BAPI_TRANSACTION_COMMIT()
: 6. GUID_CREATE() - not implemented.
: 7. POPUP_TO_INFORM()
: 8. POPUP_TO_CONFIRM_STEP()
: 9. CRM_ORDERADM_H_GUID_GET_OW() - get guid by Obj_Id. (Cuzed problems.)
:10. GET_FIELDTAB_REMOTE() - get list of fieldnames.
Coupling : None
Files used :
SAP files : 1. CRMD_ORDERADM_H = get guid via Obj_Id directly when function
: CRM_ORDERADM_H_GUID_GET_OW() cuzed problems.
I-TABS : 1. Many for bapi's, none for other purposes.
Returns : None
Examples : 1. *-- As called from SE38/SA38.
: ZJRC_CRMBAPI01
Revision His:
JRC, 05/25/05 - initial.
REPORT ZJRC_CRMBAPI01.
*-- Constants.
CONSTANTS: NO(1) TYPE C VALUE ' ',
YES(1) TYPE C VALUE 'X'.
*-- INCLUDES:
INCLUDE <ICON>.
*-- Tables
*-- BAPI GET-INFO tables. (Global because I use them here/there to "seed"
corresponding tables for the CREATE/CHANGE/DELETE bapi's. For example,
if delete, the header info is the same. However, you must be careful
because the structures are seldom identical requiring a move-corresponding.)
!!! NOTE !!! - don't forget to also add any new itabs here to module
L_ClearITabs at the end of this prg. If not, you may get duplicate
recs in the itab for each call to L_GetOppInfo().
DATA: ith_GetGUID TYPE TABLE OF BAPIBUS20001_GUID_DIS WITH HEADER LINE,
ith_GetHEADER TYPE TABLE OF BAPIBUS20001_HEADER_DIS WITH HEADER LINE,
ith_MastHeader TYPE TABLE OF BAPIBUS20001_HEADER_DIS WITH HEADER LINE,
ith_GetORG TYPE TABLE OF BAPIBUS20001_ORGMAN_DIS WITH HEADER LINE,
ith_GetPARTNER TYPE TABLE OF BAPIBUS20001_PARTNER_DIS WITH HEADER LINE,
ith_GetOPP TYPE TABLE OF BAPIBUS20001_OPPORTUNITY_DIS WITH HEADER LINE,
ith_GetCustH TYPE TABLE OF BAPIBUS20001_CUSTOMER_H_DIS WITH HEADER LINE,
ith_GetDOCFLOW TYPE TABLE OF BAPIBUS20001_DOC_FLOW_DIS WITH HEADER LINE,
ith_GetReturn TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
*-- BAPI CREATE tables. (Declared global so output can be display at end of report.)
DATA: ith_CreReturn TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
ith_CreSaved TYPE TABLE OF BAPIBUS20001_OBJECT_ID WITH HEADER LINE,
ith_CreCreated TYPE TABLE OF BAPIBUS20001_HEADER_INS WITH HEADER LINE.
*-- BAPI CHANGE tables. (Declared global so output can be display at end of report.)
DATA: ith_ChgReturn TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
*-- BAPI DELETE tables. (Declared global so output can be display at end of report.)
DATA: ith_DelObjs TYPE TABLE OF BAPIBUS20001_OBJECT_ID WITH HEADER LINE,
ith_DelReturn TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
*-- When using a Tab control in conjunction with my "OK/EXIT"
buttons, I need this to go to the START-OF-SELECTION event
when the OK button is clicked and controlled from the
AT SELECTION-SCREEN event.
TABLES: SSCRFIELDS.
********************[ USER INPUT SCREEN ]*********************
*--[ Selection Screen Title ]--
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN COMMENT 1(60) T_0Title.
SELECTION-SCREEN SKIP 1.
*--[ START SCRN BLOCK 1 ]--
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T_1Title.
SELECTION-SCREEN BEGIN OF LINE.
*-- Master CRM key.
SELECTION-SCREEN COMMENT 1(10) T_CRMKey.
PARAMETERS: S_CRMKey(10) TYPE C DEFAULT '369'.
*-- Display master opportunity info.
SELECTION-SCREEN PUSHBUTTON 25(11) T_OKBut USER-COMMAND OK.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
*--[ START SCRN BLOCK 2 ]--
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE T_2Title.
SELECTION-SCREEN BEGIN OF LINE.
*-- Enter sub-opp key to clone from.
SELECTION-SCREEN COMMENT 1(10) T_SubOp1.
PARAMETERS: S_SubOp1(40) TYPE C DEFAULT '(Cloned from master nnn)' LOWER CASE.
*-- Add Sub-Opp button.
SELECTION-SCREEN PUSHBUTTON 55(15) T_AddSOP USER-COMMAND ADDSOP.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
*--[ START SCRN BLOCK 3 ]--
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE T_3Title.
SELECTION-SCREEN BEGIN OF LINE.
*-- Enter sub-opp key to link to master.
SELECTION-SCREEN COMMENT 1(10) T_LnkKey.
PARAMETERS: S_LnkKey(10) TYPE C DEFAULT '725'.
*-- Link Sub-Opp button.
SELECTION-SCREEN PUSHBUTTON 25(15) T_LnkSOP USER-COMMAND LNKSOP.
*-- Un-Link Sub-Opp button.
SELECTION-SCREEN PUSHBUTTON 45(15) T_ULkSOP USER-COMMAND ULKSOP.
*-- Delete Sub-Opp button.
SELECTION-SCREEN PUSHBUTTON 65(15) T_DELSOP USER-COMMAND DELSOP.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B3.
*--[ OK/EXIT ]--
*-- Ok/Exit pushbuttons. (Actually, OK is DISPLAY above.)
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 40(11) T_EXBut USER-COMMAND EXIT.
*--[ INFORMATION ]--
SELECTION-SCREEN SKIP 1.
*-- Set Break point(s).
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: S_Break AS CHECKBOX DEFAULT ' ' MODIF ID BUG.
SELECTION-SCREEN COMMENT 3(31) T_BugTxt MODIF ID BUG.
SELECTION-SCREEN END OF LINE.
********************[ INITIALIZATION ]*********************
INITIALIZATION.
*-- Global vars.
DATA: g_Ok(1) TYPE C VALUE YES,
g_RunWhat(10) TYPE C,
g_MastGuid TYPE GUID_32,
g_BlankGuid TYPE GUID_32 VALUE '00000000000000000000000000000000',
g_LogicalKey1(4) TYPE N VALUE '0001'.
*-- Screen elements.
*-- Title
CONCATENATE SY-REPID '-' 'CRM BAPI OPPORTUNITY TEST01'
INTO T_0Title SEPARATED BY SPACE.
T_1Title = 'Master Opportunity'.
*-- Block1 selections.
T_CRMKey = 'CRM Key:'.
*-- Block2 selections.
T_2Title = 'Create Opp'.
T_AddSOP = 'Clone Opp'.
T_SubOp1 = 'Desc 2:'.
*-- Block3 selections.
T_3Title = 'Link/Delete Opp'.
T_LnkKey = 'Link Key:'.
T_LnkSOP = 'Link SubOpp'.
T_ULkSOP = 'UnLink SubOpp'.
T_DelSOP = 'Delete SubOpp'.
*-- Ok/Exit
T_OKBut = '@15@Ok'.
T_OKBut = 'Display'.
T_EXBut = '@2O@Exit'.
T_BugTxt = 'Activate break points.'.
GET PARAMETER ID 'MGU' FIELD S_MGuid.
********************[ AT SELECTION-SCREEN ]********************
AT SELECTION-SCREEN.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*-- User pressed the continue or exit button?
g_RunWhat = SY-UCOMM.
CASE g_RunWhat.
WHEN 'ADDSOP' OR 'LNKSOP' OR 'ULKSOP' OR 'DELSOP'.
*-- Goto START-OF-SELECTION event...
SSCRFIELDS-UCOMM = 'ONLI'.
WHEN 'OK' OR 'ONLI'. "OK button or SAP F8.
*-- Goto START-OF-SELECTION event...
SSCRFIELDS-UCOMM = 'ONLI'.
WHEN 'HELP1'.
*-- Goto START-OF-SELECTION event...
SSCRFIELDS-UCOMM = 'ONLI'.
WHEN 'EXIT'.
LEAVE.
WHEN OTHERS.
IF SY-UCOMM IS INITIAL. "Pressed ENTER on some prompt.
*-- Here's your chance to update something on screen.
ENDIF.
ENDCASE.
********************[ START-OF-SELECTION ]*********************
START-OF-SELECTION.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*-- What pushbutton was selected.
CASE g_RunWhat.
WHEN 'OK' OR 'ONLI' OR 'ADDSOP' OR 'LNKSOP' OR 'ULKSOP' OR 'DELSOP'.
*-- Start the report.
PERFORM L_Main.
ENDCASE.
********************[ START L_Main() ]*********************
FORM L_Main.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*-- For Delete, the obj_id in the "CRM Key:" input field is not
* used. We are going to delete whatever obj_id is in the
* "Link Key:" prompt so store it to CRMKey and pretend it's
* the master. This way lookups will validate it. For Link/Unlink
* we must still validate that the master CRM Key exists.
IF g_RunWhat EQ 'DELSOP'.
S_CRMKey = S_LnkKey.
ENDIF.
*-- Get GUID for Master-Opportunity.
PERFORM L_GetGUID USING S_CRMKey CHANGING g_MastGuid g_Ok.
CHECK g_Ok = YES.
*-- Save Master-Opportunity info.
PERFORM L_GetOppInfo USING g_MastGuid CHANGING g_Ok.
CHECK g_Ok = YES.
*-- Store master info and place result in header.
ith_MastHeader[] = ith_GetHEADER[].
READ TABLE ith_MastHeader INDEX 1.
*-- What action?
CASE g_RunWhat.
WHEN 'ADDSOP'.
*-- Create/Clone Sub-Opportunity from Master Opportunity.
PERFORM L_CreateOpp CHANGING g_Ok.
WHEN 'LNKSOP' OR 'ULKSOP'.
*-- Link or UnLink Sub-Opportunity to Master.
PERFORM L_LinkOpp USING g_RunWhat S_CRMKey S_LnkKey CHANGING g_Ok.
WHEN 'DELSOP'.
*-- Delete Sub-Opportunity.
PERFORM L_DeleteOpp USING S_LnkKey CHANGING g_Ok.
ENDCASE.
CHECK g_Ok = YES.
*-- Get Master-Opportunity info again before output
* in case we added or linked something. If Delete
* do NOT re-get info because we deleted it and
* the GETDETAIL info BAPI would now fail.
IF g_RunWhat NE 'DELSOP'.
PERFORM L_ClearItabs.
PERFORM L_GetOppInfo USING ith_MastHeader-GUID CHANGING g_Ok.
ENDIF.
*-- Diplay GUIDs, Opportunities, BAPI messages, etc.
PERFORM L_OutPut.
*-- END Output.
WRITE: / 'END:', SY-UZEIT.
*-- End report.
NEW-PAGE PRINT OFF.
ENDFORM.
********************[ END L_Main() ]*******************
********************[ START L_GetGUID() ]*******************
FORM L_GetGUID USING P_CRMKey CHANGING P_Guid p_Ok.
*-- Local vars.
DATA: L_CRMKey(10) TYPE C,
L_TmpTxt3(45) TYPE C,
L_LookupMode(1) TYPE C VALUE '1'. "Tried two ways to get guid.
*-- For SAP function CRM_ORDERADM_H_GUID_GET_OW() - if used.
DATA: ET_GuidKey TYPE CRMT_OBJECT_GUID_TAB,
EV_GuidKey TYPE CRMT_OBJECT_GUID.
*-- For manually getting guids from table CRMD_ORDERADM_H.
DATA: BEGIN OF L_TabGuids OCCURS 0,
GUID LIKE CRMD_ORDERADM_H-GUID,
OBJECT_ID LIKE CRMD_ORDERADM_H-OBJECT_ID,
END OF L_TabGuids.
*-- Default to YES, if error will set to NO below.
p_OK = YES.
*-- Format CMR key. (ie: 369 must be '0000000369')
l_CRMKey = P_CRMKey.
SHIFT l_CRMKey RIGHT DELETING TRAILING SPACE.
OVERLAY l_CRMKey WITH '0000000000'.
*-- How do you want to retrieve GUID?
CASE L_LookupMode.
WHEN '1'.
*-- Get GUID directly from order-admin table for id.
SELECT GUID OBJECT_ID
FROM CRMD_ORDERADM_H INTO TABLE L_TabGuids
WHERE OBJECT_ID = l_CRMKey AND
OBJECT_TYPE = 'BUS2000111'. "Opportunity
IF SY-SUBRC = 0.
READ TABLE L_TabGuids INDEX 1.
P_Guid = L_TabGuids-GUID.
ELSE.
p_Ok = NO.
l_TmpTxt3 = 'was not found. Try again.'.
ENDIF.
WHEN '2'.
*-- This function works, but it sometimes retrieves multiple GUIDs
* for the same CRMKey/ObjID - which messes me up. Maybe there are
* different kinds of "objects" for the same id? Thought using the
* OBJECT_TYPE = 'BUS2000111' might work but no. Decided to use the
* direct SELECT on CRMD_ORDERADM_H above.
*-- Get GUID for CRM object.
CALL FUNCTION 'CRM_ORDERADM_H_GUID_GET_OW'
EXPORTING
IV_OBJECT_ID = L_CRMKey "Object ID ie: 12
IV_OBJECT_TYPE = 'BUS2000111'
IMPORTING
ET_ORDERADM_H_GUID = ET_GuidKey
EV_ORDERADM_H_GUID = EV_GuidKey
EXCEPTIONS
RECORD_NOT_FOUND = 1
OBJECT_ID_IS_NOT_UNIQUE = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
P_Guid = EV_GuidKey.
ELSE.
p_Ok = NO.
CASE SY-SUBRC.
WHEN 1.
l_TmpTxt3 = 'was not found. Try again.'.
WHEN 2.
l_TmpTxt3 = 'was not unique. Maybe linked already?'.
WHEN OTHERS.
l_TmpTxt3 = 'OTHER error msg. ???'.
ENDCASE.
ENDIF. "Failed
ENDCASE. "L_LookupMode
*-- Display fail msg.
IF p_Ok = NO.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = 'INVALID CRM NUMBER'
TXT1 = 'CRM Number'
TXT2 = l_CRMKey
TXT3 = l_TmpTxt3.
ENDIF.
ENDFORM.
********************[ END L_GetGUID() ]*******************
********************[ START L_GetOppInfo() ]*******************
FORM L_GetOppInfo USING p_GuidKey CHANGING p_Ok.
*-- Local vars.
DATA: L_LCnt TYPE I.
*-- Local tables. (Use these if you want to examine output of
the GET BAPI. They are not used anywhere else.)
DATA: lth_ITEM TYPE TABLE OF BAPIBUS20001_ITEM_DIS WITH HEADER LINE,
lth_TEXT TYPE TABLE OF BAPIBUS20001_TEXT_DIS WITH HEADER LINE,
lth_STATUS TYPE TABLE OF BAPIBUS20001_STATUS_DIS WITH HEADER LINE,
lth_PRODUCT TYPE TABLE OF BAPIBUS20001_PRODUCT_DIS WITH HEADER LINE,
lth_SALES TYPE TABLE OF BAPIBUS20001_SALES_DIS WITH HEADER LINE,
lth_CUSTOMER_ITEM TYPE TABLE OF BAPIBUS20001_CUSTOMER_I_DIS WITH HEADER LINE,
lth_EXTENSIONOUT TYPE TABLE OF BAPIPAREX WITH HEADER LINE,
lth_APPOINTMENT TYPE TABLE OF BAPIBUS20001_APPOINTMENT_DIS WITH HEADER LINE,
lth_SERVICE_OS TYPE TABLE OF BAPIBUS20001_SERVICE_OS_DIS WITH HEADER LINE,
lth_LISTOFRELATIONS TYPE TABLE OF BAPIRELLK WITH HEADER LINE,
lth_PRICING TYPE TABLE OF BAPIBUS20001_PRICING_DIS WITH HEADER LINE,
lth_PRICING_ITEM TYPE TABLE OF BAPIBUS20001_PRICING_ITEM_DIS WITH HEADER LINE,
lth_SCHEDULE TYPE TABLE OF BAPIBUS20001_SCHEDLIN_DIS WITH HEADER LINE,
lth_SCHEDULE_ITEM TYPE TABLE OF BAPIBUS20001_SCHEDLIN_ITEM_DIS WITH HEADER LINE,
lth_CONFIG_CFG TYPE TABLE OF BAPIBUS20001_CONFIG_CUCFG_DIS WITH HEADER LINE,
lth_CONFIG_BLB TYPE TABLE OF BAPIBUS20001_CONFIG_CUBLB_DIS WITH HEADER LINE,
lth_CONFIG_INS TYPE TABLE OF BAPIBUS20001_CONFIG_CUINS_DIS WITH HEADER LINE,
lth_CONFIG_PRT TYPE TABLE OF BAPIBUS20001_CONFIG_CUPRT_DIS WITH HEADER LINE,
lth_CONFIG_VAL TYPE TABLE OF BAPIBUS20001_CONFIG_CUVAL_DIS WITH HEADER LINE,
lth_CONFIG_VK TYPE TABLE OF BAPIBUS20001_CONFIG_CUVK_DIS WITH HEADER LINE,
lth_CONFIG_REF TYPE TABLE OF BAPIBUS20001_CONFIG_CUREF_DIS WITH HEADER LINE,
lth_LIKE_ITEM TYPE TABLE OF BAPIBUS20001_STRUCTURE_DIS WITH HEADER LINE,
lth_CUMULATED_H TYPE TABLE OF BAPIBUS20001_CUMULATED_H_DIS WITH HEADER LINE.
*-- Initialize GUID tab.
CLEAR ith_GetGUID. REFRESH ith_GetGUID.
ith_GetGUID-GUID = p_GuidKey.
APPEND ith_GetGUID.
*------------[ GET OPPORTUNITY INFO ]--------------
CALL FUNCTION 'BAPI_OPPORTUNITY_GETDETAILMUL'
TABLES
GUID = ith_GetGUID "<== Global
HEADER = ith_GetHEADER "<== Global
ITEM = lth_ITEM
OPPORTUNITY = ith_GetOPP "<== Global
PARTNER = ith_GetPARTNER "<== Global
ORGANISATION = ith_GetORG "<== Global
TEXT = lth_TEXT
STATUS = lth_STATUS
PRODUCT = lth_PRODUCT
SALES = lth_SALES
CUSTOMER_HEAD = ith_GetCustH "<== Global
CUSTOMER_ITEM = lth_CUSTOMER_ITEM
EXTENSIONOUT = lth_EXTENSIONOUT
RETURN = ith_GetRETURN "<== Global
APPOINTMENT = lth_APPOINTMENT
SERVICE_OS = lth_SERVICE_OS
LISTOFRELATIONS = lth_LISTOFRELATIONS
PRICING = lth_PRICING
PRICING_ITEM = lth_PRICING_ITEM
SCHEDULE = lth_SCHEDULE
SCHEDULE_ITEM = lth_SCHEDULE_ITEM
CONFIG_CFG = lth_CONFIG_CFG
CONFIG_BLB = lth_CONFIG_BLB
CONFIG_INS = lth_CONFIG_INS
CONFIG_PRT = lth_CONFIG_PRT
CONFIG_VAL = lth_CONFIG_VAL
CONFIG_VK = lth_CONFIG_VK
CONFIG_REF = lth_CONFIG_REF
LIKE_ITEM = lth_LIKE_ITEM
CUMULATED_H = lth_CUMULATED_H
DOC_FLOW = ith_GetDOCFLOW. "<== Global
*-- Check header for results.
DESCRIBE TABLE ith_GetHEADER LINES L_LCnt.
IF L_LCnt > 0.
p_Ok = YES.
ELSE.
MESSAGE i000(crm0) WITH 'Error retrieving header for GUID.'.
p_Ok = NO.
ENDIF.
ENDFORM.
*******************[ END L_GetOppInfo() ]********************
*******************[ START L_CreateOpp() ]********************
FORM L_CreateOpp CHANGING p_OK.
*-- Local vars.
DATA: L_Answer(1) TYPE C,
lth_Text LIKE TLINE OCCURS 0,
l_TmpDesc LIKE BAPIBUS20001_HEADER_INS-DESCRIPTION. "C(40)
*-- Default this.
p_OK = YES.
*-- Prompt user.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
DEFAULTOPTION = 'Y'
TEXTLINE1 = 'Ready to CREATE Opportunity?'
TEXTLINE2 =
TITEL = 'CREATE OPPORTUNITY'
CANCEL_DISPLAY = ' ' "Hide the CANCEL button
IMPORTING
ANSWER = L_Answer.
IF L_Answer <> 'J'.
p_Ok = NO.
EXIT.
ENDIF.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*-------------[ RE-GET MASTER OPP INFO AGAIN ]-------------
*-- Start with all empty itabs.
PERFORM L_ClearITabs.
*-- Get GUID for Master-Opportunity.
PERFORM L_GetGUID USING S_CRMKey CHANGING g_MastGuid p_Ok.
CHECK p_Ok = YES.
*-- Get Master-Opportunity info.
PERFORM L_GetOppInfo USING g_MastGuid CHANGING p_Ok.
CHECK p_Ok = YES.
*---------[ Build BAPI Table Params ]-----------
DATA: lth_CHeader TYPE TABLE OF BAPIBUS20001_HEADER_INS WITH HEADER LINE,
lth_COpp TYPE TABLE OF BAPIBUS20001_OPPORTUNITY WITH HEADER LINE,
lth_COrg TYPE TABLE OF BAPIBUS20001_ORGMAN_INS WITH HEADER LINE,
lth_CPartner TYPE TABLE OF BAPIBUS20001_PARTNER_INS WITH HEADER LINE,
lth_CPricing TYPE TABLE OF BAPIBUS20001_PRICING WITH HEADER LINE,
lth_CCustH TYPE TABLE OF BAPIBUS20001_CUSTOMER_H WITH HEADER LINE,
lth_CFields TYPE TABLE OF BAPIBUS20001_INPUT_FIELDS WITH HEADER LINE.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*---------[ Build Header itab ]-----------
PERFORM L_BldCHeader TABLES lth_CHeader.
*---------[ Build Opportunities itab ]-----------
PERFORM L_BldCOpp TABLES lth_COpp.
*---------[ Build Organization itab ]-----------
PERFORM L_BldCOrg TABLES lth_COrg.
*---------[ Build Pricing itab ]-----------
PERFORM L_BldCPricing TABLES lth_CPricing lth_COpp.
*---------[ Build CustomerHead itab ]-----------
PERFORM L_BldCCustH TABLES lth_CCustH.
*---------[ Build Input_Fields itab ]-----------
* Note, Partner itab is built here too.
PERFORM L_BldCFields TABLES lth_CFields lth_CPartner.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*---------[ CREATE NEW OPPORTUNITY ]-----------
CALL FUNCTION 'BAPI_OPPORTUNITY_CREATEMULTI'
EXPORTING
TESTRUN = ' '
TABLES
HEADER = lth_CHeader
OPPORTUNITY = lth_COpp
ORGANISATION = lth_COrg
PARTNER = lth_CPartner
TEXT =
PRODUCT =
PRICING = lth_CPricing "<== Needed for CURRENCY.
INPUT_FIELDS = lth_CFields
CREATED_PROCESS = ith_CreCreated
RETURN = ith_CreReturn
SAVED_PROCESS = ith_CreSaved
ITEM =
SCHEDULELINE =
APPOINTMENT =
SERVICE_OS =
STATUS =
CUSTOMER_HEAD = lth_CCustH. "<== For SAIC detail data.
CUSTOMER_ITEM =
DOCUMENT_FLOW =
PRICING_ITEM =
CONFIG_CFG =
CONFIG_BLB =
CONFIG_INS =
CONFIG_PRT =
CONFIG_VAL =
CONFIG_VK =
CONFIG_REF =
CONDITION_CREATE =
EXTENSIONIN = .
*-- The new Opportunity will not appear until you commit.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDFORM.
*******************[ END L_CreateOpp() ]********************
*******************[ START L_BldCHeader() ]********************
FORM L_BldCHeader TABLES lth_CHeader STRUCTURE BAPIBUS20001_HEADER_INS.
*-- Use Master header fields. Structures are different between
* the GETDETAIL and CREATE BAPI's so we have to map.
READ TABLE ith_GetHEADER INDEX 1.
MOVE-CORRESPONDING ith_GetHEADER TO lth_CHeader.
CLEAR lth_CHeader-GUID. "Contains guid from master rec.
CLEAR lth_CHeader-OBJECT_ID. "ie: 000000369
lth_CHeader-GUID = g_BlankGuid.
lth_CHeader-HANDLE = 1. "<== Set this and NO SAVE at all unless ALL are set.
lth_CHeader-PROCESS_TYPE = 'OISU'. "ith_HEADER-PROCESS_TYPE = ZMST
lth_CHeader-BIN_RELATION_TYPE = 'MASU'.
APPEND lth_CHeader.
ENDFORM.
*******************[ END L_BldCHeader() ]********************
*******************[ START L_BldCOpp() ]********************
FORM L_BldCOpp TABLES lth_COpp STRUCTURE BAPIBUS20001_OPPORTUNITY.
*-- Local vars.
DATA: L_RHandle LIKE BAPIBUS20001_OPPORTUNITY-REF_HANDLE VALUE 1,
L_TmpC10(10) TYPE C,
L_TmpDesc2 LIKE BAPIBUS20001_OPPORTUNITY-DESCRIPTION_OPP. "C(40)
*-- Structures are slightly different between
* the GETDETAIL and CREATE BAPI's.
READ TABLE ith_GetOPP INDEX 1.
MOVE-CORRESPONDING ith_GetOPP TO lth_COpp.
lth_COpp-REF_HANDLE = L_RHandle. "<== Set this and NO 2nd Desc line saved unless ALL are set.
lth_COpp-REF_GUID = g_BlankGuid.
L_TmpDesc2 = S_SubOp1.
IF S_SubOp1 IS INITIAL OR S_SubOp1 CS '(Cloned from master nnn)'.
CONCATENATE S_CRMKey ')' INTO L_TmpC10.
CONCATENATE '(Cloned from master' L_TmpC10 INTO L_TmpDesc2
SEPARATED BY SPACE.
ENDIF.
lth_COpp-DESCRIPTION_OPP = l_TmpDesc2."<== 2nd line of desc.
APPEND lth_COpp.
ENDFORM.
*******************[ END L_BldCOpp() ]*******************
*******************[ START L_BldCOrg() ]*******************
FORM L_BldCOrg TABLES lth_COrg STRUCTURE BAPIBUS20001_ORGMAN_INS.
*-- Structures are slightly different between
* the GETDETAIL and CREATE BAPI's.
READ TABLE ith_GetORG INDEX 1.
MOVE-CORRESPONDING ith_GetORG TO lth_COrg.
CLEAR lth_COrg-REF_GUID.
lth_COrg-REF_GUID = g_BlankGuid.
lth_COrg-REF_HANDLE = 1.
APPEND lth_COrg.
ENDFORM.
*******************[ END L_BldCOrg() ]*******************
*******************[ START L_BldCPricing() ]*******************
FORM L_BldCPricing TABLES lth_CPricing STRUCTURE BAPIBUS20001_PRICING
lth_COpp STRUCTURE BAPIBUS20001_OPPORTUNITY.
*-- Make sure opportunity info is in header.
READ TABLE lth_COpp INDEX 1.
*-- Needed to store CURRENCY.
CLEAR lth_CPricing.
lth_CPricing-REF_HANDLE = 1.
lth_CPricing-REF_GUID = g_BlankGuid.
lth_CPricing-REF_KIND = 'A'.
lth_CPricing-CURRENCY = lth_COpp-CURRENCY.
lth_CPricing-CURRENCY_ISO = lth_COpp-CURRENCY_ISO.
APPEND lth_CPricing.
CLEAR lth_CPricing.
ENDFORM.
*******************[ END L_BldCPricing() ]*******************
*******************[ START L_BldCCustH() ]*******************
FORM L_BldCCustH TABLES lth_CCustH STRUCTURE BAPIBUS20001_CUSTOMER_H.
*-- Structures are slightly different between
* the GETDETAIL and CREATE BAPI's.
READ TABLE ith_GetCustH INDEX 1.
MOVE-CORRESPONDING ith_GetCustH TO lth_CCustH.
CLEAR lth_CCustH-REF_GUID.
lth_CCustH-REF_GUID = g_BlankGuid.
lth_CCustH-REF_HANDLE = 1.
APPEND lth_CCustH.
ENDFORM.
*******************[ END L_BldCCustH() ]*******************
*******************[ START L_BldCFields() ]*******************
FORM L_BldCFields TABLES lth_CFields STRUCTURE BAPIBUS20001_INPUT_FIELDS
lth_CPartner STRUCTURE BAPIBUS20001_PARTNER_INS.
*---------[ Admin Rec ]---------
CLEAR lth_CFields.
lth_CFields-REF_HANDLE = 1. "<== Must be set if the others are too.
lth_CFields-REF_GUID = g_BlankGuid.
lth_CFields-OBJECTNAME = 'ORDERADM_H'.
lth_CFields-REF_KIND = ' '. "A <== No effect setting to A or leave blank.
lth_CFields-LOGICAL_KEY = '0001'.
lth_CFields-FIELDNAME = 'DESCRIPTION'.
APPEND lth_CFields.
*---------[ Opportunity ]---------
CLEAR lth_CFields.
lth_CFields-REF_HANDLE = 1. "<== Must be set if the others are too.
lth_CFields-REF_GUID = g_BlankGuid.
lth_CFields-OBJECTNAME = 'OPPORT_H'.
lth_CFields-REF_KIND = 'A'.
lth_CFields-LOGICAL_KEY = '0001'.
lth_CFields-FIELDNAME = 'EXP_REVENUE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'BUDGET_BP'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'CURRENCY'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'CURRENCY_ISO'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'STARTDATE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'EXPECT_END'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'CURR_PHASE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'PHASE_SINCE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'PROBABILITY'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'FORECAST_REL'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SOURCE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'IMPORTANCE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALESCYCLE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'ADDRESS_NO'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'TYPE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'STATUS_SINCE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'DESCRIPTION_OPP'.
APPEND lth_CFields.
*-- Try these to get partners. ???
lth_CFields-FIELDNAME = 'PARTNER_NUMBER'.
APPEND lth_CFields.
*---------[ Organisation ]---------
CLEAR lth_CFields.
lth_CFields-REF_HANDLE = 1. "<== Must be set if the others are too.
lth_CFields-REF_GUID = g_BlankGuid.
lth_CFields-OBJECTNAME = 'ORGMAN'.
lth_CFields-REF_KIND = 'A'.
lth_CFields-LOGICAL_KEY = '0001'. "'0006'.
lth_CFields-FIELDNAME = 'DIS_CHANNEL'.
lth_CFields-CHANGEABLE = ' '. "X = ???
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'DIS_CHANNEL_ORI'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'DIVISION'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'DIVISION_ORI'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_GROUP'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_GROUP_ORI'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_GROUP_SHORT'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_OFFICE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_OFFICE_SHORT'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_OFF_ORI'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_ORG'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_ORGR_ORI'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_ORG_ORI'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_ORG_RESP'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_ORG_RESP_SHORT'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SALES_ORG_SHORT'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SERVICE_ORG_RESP'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'SERVICE_ORG'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'DISTRICT'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'MODE'.
APPEND lth_CFields.
*---------[ Partner info ]---------
DATA:L_PRHandle LIKE BAPIBUS20001_PARTNER_INS-REF_HANDLE VALUE 1,
L_PRPHandle LIKE BAPIBUS20001_PARTNER_INS-REF_PARTNER_HANDLE VALUE 1.
LOOP AT ith_GetPARTNER.
*-- Create one new partner rec for the BAPI.
MOVE-CORRESPONDING ith_GetPARTNER TO lth_CPartner.
CLEAR lth_CPartner-REF_GUID. "<== No effect either way.
CLEAR lth_CPartner-REF_HANDLE.
CLEAR lth_CPartner-REF_PARTNER_HANDLE.
CLEAR lth_CPartner-REF_PARTNER_FCT.
CLEAR lth_CPartner-REF_PARTNER_NO.
CLEAR lth_CPartner-REF_NO_TYPE.
CLEAR lth_CPartner-REF_DISPLAY_TYPE.
CLEAR lth_CPartner-MAINPARTNER.
CLEAR lth_CPartner-RELATION_PARTNER.
CLEAR lth_CPartner-BUSINESSPARTNERGUID.
lth_CPartner-MAINPARTNER = 'X'.
lth_CPartner-REF_GUID = g_BlankGuid.
lth_CPartner-REF_HANDLE = L_PRHandle.
lth_CPartner-REF_PARTNER_HANDLE = L_PRPHandle.
APPEND lth_CPartner.
*-- Create block of new input_fields for this partner.
CLEAR lth_CFields.
lth_CFields-REF_HANDLE = 1. "<== Must be set if the others are too.
lth_CFields-REF_GUID = g_BlankGuid.
lth_CFields-OBJECTNAME = 'PARTNER'.
lth_CFields-REF_KIND = 'A'.
lth_CFields-LOGICAL_KEY = L_PRPHandle. "ie: '0001'.
lth_CFields-FIELDNAME = 'DISPLAY_TYPE'.
lth_CFields-CHANGEABLE = ' '.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'KIND_OF_ENTRY'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'NO_TYPE'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'PARTNER_FCT'.
APPEND lth_CFields.
lth_CFields-FIELDNAME = 'PARTNER_NO'.
APPEND lth_CFields.
*-- Inc ref-handles.
L_PRHandle = L_PRHandle + 1. "<== Do NOT increment. (Unless creating multiple opps)
L_PRPHandle = L_PRPHandle + 1. "<== Import to link partners to CFields.
ENDLOOP.
*---------[ Pricing Rec]---------
CLEAR lth_CFields.
lth_CFields-REF_HANDLE = 1. "<== Must be set if the others are too.
lth_CFields-REF_GUID = g_BlankGuid.
lth_CFields-OBJECTNAME = 'PRICING'.
lth_CFields-REF_KIND = 'A'. "A <== No effect setting to A or leave blank.
lth_CFields-LOGICAL_KEY = '0001'.
lth_CFields-FIELDNAME = 'CURRENCY'.
APPEND lth_CFields.
*-------[ CustomerHead Rec]-------
CLEAR lth_CFields.
lth_CFields-REF_HANDLE = 1. "<== Must be set if the others are too.
lth_CFields-REF_GUID = g_BlankGuid.
lth_CFields-OBJECTNAME = 'CUSTOMER_H'.
lth_CFields-REF_KIND = 'A'. "A <== No effect setting to A or leave blank.
lth_CFields-LOGICAL_KEY = '0001'.
*-- Get all custom fields.
DATA: LTH_FieldTab TYPE TABLE OF DFIES WITH HEADER LINE.
CALL FUNCTION 'GET_FIELDTAB_REMOTE'
EXPORTING
TABNAME = 'CRMD_CUSTOMER_H'
TABLES
FIELDTAB = LTH_FieldTab.
*-- Add only custom fields to input-fields list.
LOOP AT LTH_FieldTab FROM 5.
lth_CFields-FIELDNAME = LTH_FieldTab-FieldName.
APPEND lth_CFields.
ENDLOOP.
ENDFORM.
*******************[ END L_BldCFields() ]*******************
********************[ START L_LinkOpp() ]*******************
FORM L_LinkOpp USING p_Mode p_CRMKey p_LinkKey CHANGING p_Ok.
*-- Local vars.
DATA: L_MastGuid TYPE CRMT_OBJECT_GUID,
L_LinkGuid TYPE CRMT_OBJECT_GUID,
L_CheckOk(1) TYPE C VALUE YES,
L_TryAgain(1) TYPE C VALUE NO.
*-- Default this.
p_OK = YES.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*-- Get GUID for Master-Opportunity.
PERFORM L_GetGUID USING p_CRMKey CHANGING L_MastGuid p_Ok.
CHECK p_Ok = YES.
*-- Get GUID for Sub-Opportunity.
PERFORM L_GetGUID USING p_LinkKey CHANGING L_LinkGuid p_Ok.
CHECK p_Ok = YES.
*---------[ Build BAPI Table Params ]-----------
DATA: lth_CHeader TYPE TABLE OF BAPIBUS20001_HEADER_UPD WITH HEADER LINE,
lth_CDFlow TYPE TABLE OF BAPIBUS20001_DOC_FLOW_INS WITH HEADER LINE,
lth_CFields TYPE TABLE OF BAPIBUS20001_INPUT_FIELDS WITH HEADER LINE.
*--------------[ HEAD INFO ]------------
READ TABLE ith_GetHEADER INDEX 1. "<== Header info from Master.
MOVE-CORRESPONDING ith_GetHEADER TO lth_CHeader.
APPEND lth_CHeader.
*--------------[ INPUT FIELDS ]------------
CLEAR lth_CFields.
lth_CFields-REF_HANDLE = 1.
lth_CFields-REF_GUID = l_MastGuid. "Master Opp.
lth_CFields-REF_KIND = 'A'.
lth_CFields-OBJECTNAME = 'DOC_FLOW'.
lth_CFields-LOGICAL_KEY = 'INS'. "<== Default to ADD.
*-- Delete (UnLink) works in conjunction with
* lth_CDFlow-BREL_MODE = 'D' set below.
IF p_Mode = 'ULKSOP'.
lth_CFields-LOGICAL_KEY = 'DEL'.
ENDIF.
APPEND lth_CFields.
*-------------[ DOCUMENT FLOW ]------------
*-- Maybe start with original doc-flow data from Master?
READ TABLE ith_GetDOCFLOW INDEX 1.
MOVE-CORRESPONDING ith_GetDOCFLOW TO lth_CDFlow.
lth_CDFlow-REF_GUID = l_MastGuid. "Master Opp.
lth_CDFlow-REF_HANDLE = '1'.
lth_CDFlow-REF_KIND = 'A'.
lth_CDFlow-OBJKEY_A = l_MastGuid. "Master Opp.
lth_CDFlow-OBJTYPE_A = 'BUS2000111'.
lth_CDFlow-LOGSYS_A
lth_CDFlow-OBJKEY_B = l_LinkGuid. "Sub Opp.
lth_CDFlow-OBJTYPE_B = 'BUS2000111'.
lth_CDFlow-LOGSYS_B
lth_CDFlow-RELTYPE = 'MASU'.
lth_CDFlow-VONA_KIND
lth_CDFlow-BREL_KIND = 'A'.
lth_CDFlow-BREL_MODE = 'A'. "A=add, B or C=Change ?, D=Del
*-- Delete (UnLink) works in conjunction with
* lth_CFields-LOGICAL_KEY = 'DEL' set above.
IF p_Mode = 'ULKSOP'.
lth_CDFlow-BREL_MODE = 'D'.
ENDIF.
lth_CDFlow-HANDLE_A
lth_CDFlow-HANDLE_B
CLEAR lth_CDFlow-RELATIONID. "<== Was preventing me from linking multi...
lth_CDFlow-RELATION_HANDLE = 1.
APPEND lth_CDFlow.
*-- Activate trace/debug?
IF S_Break = YES. BREAK-POINT. ENDIF.
*-- If user has Master GUID open in EDIT mode, the
* BAPI will fail to LINK the new sub-opp.
DO.
*-- Clear these every try.
CLEAR ith_ChgReturn. REFRESH ith_ChgReturn.
*---------[ CHANGE/LINK OPPORTUNITY ]--------
CALL FUNCTION 'BAPI_OPPORTUNITY_CHANGEMULTI'
EXPORTING
TESTRUN = ' '
TABLES
HEADER = lth_CHeader
ITEM =
OPPORTUNITY =
ORGANISATION =
PRICING =
PARTNER =
TEXT =
PRODUCT =
STATUS =
SERVICE_OS =
INPUT_FIELDS = lth_CFields
RETURN = ith_ChgReturn
APPOINTMENT =
SCHEDULELINE =
DOCUMENT_FLOW = lth_CDFlow.
PRICING_ITEM =
CONDITION_CREATE =
CONDITION_CHANGE =
CONDITION_DELETE =.
*-- Changes will not appear until you commit.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
-
Populating Quantity field in BAPI : "BAPI_OPPORTUNITY_CREATEMULTI"
I want to populate quantity field for an Item while creating Opportunity using BAPI_OPPORTUNITY_CREATEMULTI.
along with other data, I am populating BAPI internal table required for quantity as below, opportunity is being created with item. But quantity field is blank. Can anyone advise what I have been doing wrong or whats right way of populating this table parameter.
Appreciate help on this.
s_scheduleline-item_handle = 0000000002.
s_scheduleline-handle = 0000000001.
s_scheduleline-quantity = s_valid-est_qty. " Quantity
APPEND s_scheduleline TO it_scheduleline.
s_input-ref_handle = 0000000002
s_input-ref_kind = 'B'.
s_input-objectname = 'SCHEDLIN'.
s_input-fieldname = 'QUANTITY'.
APPEND s_input TO it_input.
CALL FUNCTION 'BAPI_OPPORTUNITY_CREATEMULTI'
TABLES
header = it_header
opportunity = it_opp
partner = it_partner
appointment = it_appointment
status = it_status
customer_head = it_cust_h
text = it_text
item = it_item
product = it_product
scheduleline = it_scheduleline
pricing_item = it_price_i
input_fields = it_input
saved_process = it_saved
return = it_return.Be sure to reset logical_key field from input_fields structure after inserting partner data.
ls_fields-objectname = 'PARTNER'.
ls_fields-logical_key = '0000'.
ls_fields-fieldname = gc_fieldname-partner_no.
APPEND ls_fields TO lt_fields.
ls_fields-logical_key = ''.
Edited by: Dalibor Riger on Nov 29, 2011 5:09 PM -
Looking for a client appointment app
I'm looking for an application for a friend who is a personal trainer. And if such an application doesn't exist, I'm considering writing one (I'm a software engineer)
The application would maintain a database of clients, and a schedule of appointments with them.
For each client, the following data needs to be maintained: contact information, current statistics (weight, body fat percentage, strength) as well as a history of statistics. Clients pay for a package of sessions in advance, and the app would keep track of how many prepaid sessions remain, updating that number with each scheduled appointment and each payment. Every client has recurring appointments, several per week, but rescheduling is common, and needs to be easy. And the app should be able to print out a year report for taxes.
I was thinking that it should interface with Address Book for contact information, and Calendar for appointments.
The main app should run on Snow Leopard, but mobile access through an iOS 4 sister app would be great. (Although if it works with Address Book and Calendar, their synchronization through MobileMe might be sufficient)
Is there any such thing? There must be other trainers, and other professionals with similar needs.
-Ron.Hi Ron,
was there a template for bento that met all of the requirements that you detailed? My wife is a personal trainer and we've been looking for similar functionality in an app. Currently she's using the calendar app and contact book, but as you say, rescheduling is frequent and tracking remaining sessions would be very helpful. Let me know,
Paul -
I can not change the time in activity Appointment in WebUi
Dear Experts!
I can not change the time in activity Appointment when creating: calendar -> month -> click on the day
snapshot of problem:
http://imglink.ru/show-image.php?id=e7a096115a6371ffab46c701f8e470ba
When I create a Appointment (Activities -> Create Appointment) of all good:
http://imglink.ru/show-image.php?id=ef65a38bdf7fc77eb9a71ec5c3ad5603
Help me this problem?You need to add that attribute using the config tool for your view configuration. Select the attribute All Day from the context node BTDATE in the available fields to your display field and then save it. It should now be visible in your UI and now you can select or uncheck it to make the time field enable. Check the below image
http://imglink.ru/show-image.php?id=a9a660778c0fee2b3fd7409d620eddc5
Regards,
Shobhit -
Why is it not possible to connect a photo with an appointment in my ical?
The calender features are in all too basic. I want to click on a certain time and set an appointment for that time. Does this work and i just dont know how yet? Thank you for any answer!
I don't believe the addition of a photo to an event is possible. I just tried it myself. If you would like to let Apple know that you are interested in a feature, the go to the feedback page. www.apple.com/feedback and click on the appropriate link.
-
Effect of time zone change on scheduled appointment times
I have had a Palm Treo 650 for three years. It had its shortcomings, but the calendar was well-designed. I could be in the Pacific time zone and arrange an appointment in New York for 1:00PM on a certain day. When I arrived in New York, the Treo's time had automatically changed to Eastern time and the appointment time was still 1:00PM on the calendar.
I just bought a BlackBerry 8330 because Verizon's network coverage is far superior to ATT's at places where I spend most of my time. The BB has excellent web access and email, but the calendar has a problem. If I were in the Pacific time zone and set an appointment for New York at 1:00PM and then traveled to New York, the BB's time would change to Eastern, but the appointment time would also be changed to 4:00PM. This can be a trap that can cause me to occasionally miss an important meeting. I can't afford this risk. I'm likely to return the BB and look for another PDA.
*My Question: Is the iPhone's calendar like the Treo's or the BlackBerry's?*Thank you for the quick replies. It is not totally clear to me, but it sounds as though the iPhone may be the same as the BlackBerry. If so, then I have to set a time AND make sure that, at the time the appointment is entered, the time zone is properly set for the location of the meeting. The Treo's meeting time was independent of the time zone that was in effect when the appointment time was entered. There was no special setting for it, but there is a setting to either keep the desired time zone in effect regardless of where the phone was located or to let the network adjust the time zone whenever a trip was made. It automatically took the network time from wherever it was so the clock was always right and the alarm for an upcoming meeting would go off at the proper time even if the appointment was entered while set for another time zone. The statement "Time Zone Support always shows event dates and times in the time zone selected for calendars" doesn't really say how it affects previously set appointments. It will only become clear when someone who travels a lot says how it works in practice.
-
I am automating the process of sending appointment reminders to my clients. I started with an alert with an email in calendar using the clients email address as a custom entry in my me card in my contacts. this was resulting in three emails being sent with slightly different versions of the same address (see my previous post). Heating someone else's suggestion I created a workflow file to send an email and calling that file from an alert on my calendar. This is working and sends only one email to the client.
My calendar is on I cloud and I access it from three different computers so I can keep my appointment calendar current. The files that send the email only exist on one computer. My other computers show error messages when those emails get sent. It seems that each computer wants to send the email. It's a small problem but is there a way that I could not get those alerts.
But appreciate any thoughts about this. It seems like both problems might be related to the iCloud system.
Thank you in advance,
MichaelGood work, catch so far Michael, does seem to be a "feature" of iCloud syncing, not sure what you could do to disable it.
-
I got my Mac OSX with Lion about 9 months ago. Two months after I bought it, it crashed. Apple gave no direct explanation and ended up wiping the computer. Two months after that it happended again. That time they gave me a knew hard drive but they still didn't give me an explanation. Then recenty it crashed (kernal panicked) after I downloaded the thunderbolt application. That time apple was able to restore everything.
Unfortunately, my computer is now showing many of the same symptoms (slow loading, safari freezing, applications needing to be forced quit...etc) as it did before it crashed the first two times. I should mention that when I say "crashed" I mean my computer wouldn't turn on again. Now I am afraid to turn my computer off or even let it go to sleep. I know this isn't good for it but I don't know what else to do.
So my question is, will Apple Genius Bar run some diagnostic tests for me or give me a special lesson? Or do I need to pay for a special lesson? I just want a trained person to run some diagnostics and go through the basics of updating, shutting down, and restarting my computer with me. That way if anything goes wrong they see it first hand.
One more thing, could it be something I am doing. I have downloaded Flash Player but only from the Flash website. But I have heard Flash/Mac problems. Or is there anything else I could be doing or downloading?With Apple you Always Need to Make an Appointment. Otherwise they will turn you away. Even if the place is empty.
-
Save and Close button issue in CRM 2013 for Activity Type Appointment
Hi All,
Have come across a strange behavior in CRM 2013 and would like to be sure that it really is an issue which others have encountered too.
Open a Case record, and click on Activity navigation link to see the Open Activity Associated View. Then try creating an Activity of type Meeting and click on
Save & Close button (not just Save). When you refresh the view, the activity might show up. But repeat the same steps and create another Activity of Type Meeting and this activity will not show up. It doesnt show up even in the All Activities
view. Seems like the activity does not get created when using Save and Close button.
This behavior is replicated even on online 30 day trial version. Any inputs?
Regards,
YogeshThe problem only occurs when your appointment times clash. "Save and close" just throws the appointment away. "Save" tells you about clash (or perhaps it's just unavailability) and allows you to ignore and continue with the
save. -
Function Modules on Appointment Calendar
Hi friends,
I have to create a rfc which has to create entries into the appointment calendar (scc1-tcode). I want to know whether there are any BAPIs or function modules which insert this data into the respective table. And more over there is a field APPT_ID in the table which has to be automatically generated when a new appointment is created and which is to be returned ...
Please help me out
Edited by: pradeepwitu on Jul 12, 2011 9:00 AMHI ALL,
finally got the function moodule for that.... 'APPT_CREATE'. But how do i get the timezone??? can any 1 help me please
Edited by: pradeepwitu on Jul 12, 2011 3:24 PM -
After I updated my Ipad2 to IOS5 my calendar lost all appointments. After re-entering a couple of appointments it froze. After getting it going again, the calendar will not populate an end date for the current day and consequently I can't save the appointment. Is this a common problem as I have just purchased this ipad and the calendar function is very important to me.
Hmm... It looks like they are gone forever now then. I can't think of any other way of getting them back apart from restoring from an iTunes or iCloud backup. Somebody else might be able to help but I think they're gone forever. I don't know why they were wiped from your iPod but it could be something to do with security. In the future I would recommend syncing to iTunes or iCloud to prevent it from happening again. You can always make a reservation at the Genius Bar and see what those guys can do because it seems that they are still there, they are just 'hidden' from view. http://concierge.apple.com/reservation/gb/en/techsupport/
Cheers,
Khal
P.S I'm sorry for the late reply -
How to make a job run on a appointed node
I have a problem. The database is Oracle 10g, RAC, two nodes
There are some job which run on everyday night. Now, something happened, the job run on Node A can't work as normal, but if run on node B, It will work well.
so I just want to submit the jobs on Node B, I submited the jobs on Node B, but the jobs always run on Node A.
I want to know how to make a job run on a appointed node.the Job just transfer some procedure to add partitions for some table, to merge the records from some tables to one table and so on.
the problem is when the job run on Node A, it is very very slow, the procedure would run hours and not success end, but if on Node B it will successfully end in seconds.
restart the Node A would be a way for the problem, but may it will leave a hidden trouble. I want save the scene to find out the problem
so can you help me -
How do I stop iCal from changing my appointment times when traveling?
Once again I missed an important meeting as I had entered it into my iPhone so that event is to start at 10 AM. Last night I flew to this city which is two hours ahead of my town. So what again happened is that iCal just decided to change the time of my appointment to 12 AM.
Why on earth would iCal asume that I would eneter the event into it in my hometowns time? I mean, when agreeing on the phone with a client, you do not say I'll be there 10 AM my time. You obviously say "ok let us meet at 10 AM".
So how do I stop this from happening.I was having the same problem and spent some time on the phone with apple today.(new computer is under apple care). Tried a ton of stuff with different folks and ultimately I (well, me and 3 apple specialists) was able to solve this issue.
Here's the break down:
1. Quit Mail, Calendar and Messages.
2. Open: System Preference -> Mail, Contacts & Calendars
3. Delete all your google accounts (using the little minus button below your account list)
4. Restart your computer.
5. Re-add your google accounts. (Obviously, keep the calendar box checked).
6. Open calendar and wait for your google info to populate.
7. Attempt to add an event with correct time zone.
IMPORTANT NOTE:
Events I created while I was having the problem still had the problem.
I simply deleted those broken events and recreated them with refreshed settings.
I've only had this working for a few hours so I'm not certain it will stay working forever.
But for now it is a relief.
I realize deleting and re-adding the accounts is annoying but it's a lot less frustrating than seeing UTC every time you add an event.
Hope that helps everyone else having this problem. -
Booking an appointment prompt Microsoft Exchange is offline
HI,
I am faced with this weird problem. My user is able to connect to her mailbox using outlook anywhere. Sending/receving mails are ok. But when she tries to book an appointment in the her own calendar, It said the Outlook must online even though I am connected
to Exchange server.
I am using Outlook 2007 and Exchange 2007.
Can anyone advice?
Thanks a millHi,
Does the issue happen to all users or only one specific user? Please book an appointment in Outlook Web Access to check whether it can be created successfully. If the issue doesn't happen in OWA, it indicates that the issue should be related to Outlook client
or the connection between Outlook and server.
Please create a new Outlook profile to check whether the issue is caused by corrupted profile:
http://support.microsoft.com/kb/829918/en-us
Regards,
Winnie Liang
TechNet Community Support
Thank you, Winnie for the suggestion. Booking through OWA is ok. We tried to recreate the Outlook profile and it gets worse. When we clicked 'Check Name', it prompt ' the action is incomplete. Microsoft Exchange has to be online ...." We do not have
this problem before. We reinstalled the self-signed certificate again and still the problem still exists. This self-signed certificate was used before and it was ok. Checking the Outlook Anywhere settings and compare with another working notebook showed no
sign of differences.
I read somewhere to restart Exchange System attendant. I am fearful of this as we are running Exchange 2007 CCR and we are unsure how to go about doing it and the impact it has to the rest of the organisation.
Thanks again for the reply. Please keep sending in suggestions.
Maybe you are looking for
-
Mysql jdbc drivers not found in weblogic server
I want to create a connection pool in weblogic server, and use mysqldatabase. My drivers is "org.gjt.mm.mysql.Driver" I put the jar in "D:\bea\weblogic700\server\lib" ,but when i apply ,there is an error blow: Error creating connection pool at w
-
Serial number not accepted when installing
I received photoshop elements 10 as a present. I wanted to wait until we had our new computer to install (Mac OS) but now the disc seems out of date and I can't install it. I tried downloading the updated version online, but it won't accept my serial
-
I have built a personal iGoogle home page. I have checked 'stay logged in'. when I open the home page in Firefox it goes to the frontdoor instead of the page I built.
-
Is there a way I can connect my mp3 player to my AV Receiv
Is there a type of wiring that I need to buy? Can anyone help me?
-
How to create public group in office 365 admin panel?
Dear Microsoft , I try to create group in office 365 admin panel but in that group when i add outsider mail id eg([email protected],[email protected]) is not created ...it's showing error.Can please help me to how i create public group in office 36