Activity_Object BDoc Erweiterung

Activity_Object BDoc Erweiterung

Postby Alen3085 » Wed Nov 10, 2004 8:21 am

Hallo zusammen,

wir haben CRM 3.0 SP12 im Einsatz, es ist nun gewünscht ein zusätzliches Flag vom MSA ins CRM zu bringen! In der CDB habe ich ein zusätzliches Feld ZZCHECKED in der Tabelle SMOKVBEZ11 angelegt, dieses Feld habe ich dann auch im BDOC ACTIVITY_OBJECT im Segment ACT_RESPONSIBLE angehängt, das Mapping mache ich über die BADI Implementation CRM_30A_USER_EXITS (Upload und Download)! Im CRM habe ich die Tabelle CRMD_PARTNER und die Struktur BAD_PARTNER_MESS um das ZZCHECKED Feld erweitert!

Der Upload User-Exit sieht wie folgt aus:
method IF_EX_CRM_30A_USER_EXITS~USER_EXIT_UPLOAD_ACTIVITY .
DATA: is_structure TYPE ddobjname,
lt_fields TYPE TABLE OF smog_sfldn,
l_tabix TYPE sy-tabix,
ls_partner TYPE bad_partner_mess,
ls_actresp TYPE /1CRMG0/ACT_RESPONSIBLE01.

DATA: ev_sendbits TYPE smog_sinc-sendbits.

is_structure = 'BAD_PARTNER_MESS'.
APPEND: 'CALENDAR' TO lt_fields,
'ZZCHECKED' TO lt_fields.
l_tabix = 0.

LOOP AT es_bus_trans_msg-partner INTO ls_partner.
l_tabix = l_tabix + 1.

READ TABLE is_activity_object-act_responsible
INTO ls_actresp
WITH KEY sfamitabt = ls_partner-bp_partner_guid
sfavbka = ls_partner-orderadm_h_guid
TRANSPORTING zzcalendar zzchecked.

IF sy-subrc NE 0.
CONTINUE.
ENDIF.

MOVE: ls_actresp-zzcalendar TO ls_partner-calendar,
ls_actresp-zzchecked TO ls_partner-zzchecked.
* Neuberechnung der Sendbits
CLEAR ev_sendbits.
CALL FUNCTION 'SMO_SNDBITS_SETX'
EXPORTING
structurename = is_structure
* FIELDNAME = 'CALENDAR'
* RESET_BITS = ' '
* DDIC = 'X'
BDOCNAME = 'ACTIVITY_OBJECT'
tables
sfields = lt_fields
changing
sndbits = ev_sendbits
EXCEPTIONS
STRUCTURE_NOT_FOUND = 1
WRONG_FIELDNAME = 2
OTHERS = 3.
ls_partner-sendbits = ls_partner-sendbits BIT-OR ev_sendbits.
MODIFY es_bus_trans_msg-partner FROM ls_partner INDEX l_tabix.
ENDLOOP.

endmethod.

Das Szenario läuft auch einwandfrei durch nur wird, eben das Feld ZZCHECKED der CRM Tabelle CRMD_PARTNER nicht upgedated!
Bin ich hier etwas zu naiv, oder was ist hier noch zusätzlich zu beachten?

Danke für eure Hilfe
Meex
Alen3085
...
...
 
Posts: 120
Joined: Tue May 27, 2003 6:22 am

Postby Alva1590 » Wed Nov 10, 2004 9:29 am

Wir hatten auch ein ähnliches Problem, was an den Sendbits lag, die nicht richtig gefüllt wurden. Die müssen für das eigene Feld auch richtig gesetzt werden. Ich muß mal nachschauen (kann etwas dauern), irgendwo habe ich das Coding noch.
Ansonsten würde ich auf jeden Fall auch eine Generierung der BDOC-Schnittstelle empfehlen, Transaktion BDFG.
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Alva1590 » Wed Nov 10, 2004 3:25 pm

Schau mal hier Beispielcoding aus einem BBPCRM3.5

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FORM convert_in_header_order    USING is_data           TYPE crmxif_bustrans
  2.                           CHANGING ct_orderadm_h     TYPE bad_orderadm_h_mess_t.
  3.  
  4.  
  5.   STATICS lt_fieldlist TYPE TABLE OF smog_sfldn.
  6.  
  7.   DATA:   ls_fieldlist TYPE smog_sfldn.
  8.  
  9.   FIELD-SYMBOLS: <lf_orderadm_h> TYPE bad_orderadm_h_mess,
  10.                  <lf_m1o_ind_response> TYPE crmt_m1o_ind_response.
  11.  
  12.  
  13.   LOOP AT ct_orderadm_h ASSIGNING <lf_orderadm_h>.
  14.  
  15. * Only set additional sendbits &#40;flaglist&#41;
  16.     IF lt_fieldlist IS INITIAL.
  17.       ls_fieldlist-fieldname = gc_orderadm_i_m1o_ind_asn. APPEND ls_fieldlist TO lt_fieldlist.
  18.       ls_fieldlist-fieldname = gc_orderadm_i_m1o_ind_confirm. APPEND ls_fieldlist TO lt_fieldlist.
  19.       ls_fieldlist-fieldname = gc_orderadm_i_m1o_ind_invoice. APPEND ls_fieldlist TO lt_fieldlist.
  20.       ls_fieldlist-fieldname = gc_orderadm_i_m1o_ind_ers. APPEND ls_fieldlist TO lt_fieldlist.
  21.       ls_fieldlist-fieldname = gc_orderadm_h_m1o_ind_response. APPEND ls_fieldlist TO lt_fieldlist.
  22.       ls_fieldlist-fieldname = gc_orderadm_h_m1o_bidid. APPEND ls_fieldlist TO lt_fieldlist.
  23.     ENDIF.
  24.  
  25.  
  26.  
  27. ASSIGN COMPONENT gc_orderadm_h_m1o_ind_response OF STRUCTURE <lf_orderadm_h> TO <lf_m1o_ind_response>.
  28.     CLEAR <lf_m1o_ind_response>.
  29.  
  30.     CALL FUNCTION 'SMO_SNDBITS_SETX'
  31.       EXPORTING
  32.         structurename = 'BAD_ORDERADM_H_MESS'
  33.       TABLES
  34.         sfields       = lt_fieldlist
  35.       CHANGING
  36.         sndbits       = <lf_orderadm_h>-sendbits.
  37.  
  38.  
  39. ENDFORM.                    " convert_in_object_id
  40.  
GeSHi ©


Nur dann, wenn die sendbits richtig gesetzt sind, werden die Felder auf die Datenbank geschrieben.
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Postby Alen3085 » Thu Nov 11, 2004 7:51 am

Danke für deine Ausführungen, die Sendbits wurden richtig gesetzt das Problem lag an einer Struktur, welche noch nicht um das neue Feld erweitert wurde!

Trotzdem vielen Dank für deine Bemühungen!
Meex
Alen3085
...
...
 
Posts: 120
Joined: Tue May 27, 2003 6:22 am


Return to CRM (Customer Relationship Management)

Who is online

Users browsing this forum: No registered users and 3 guests