Hello!
I need to get all the payment form information and the service dates of an order from a BADI on the CHECK_BEFORE_SAVE method in CRM_ORDER_SAVE. I saw that the CRM_ORDER_READ_OW could get SERVICEPLAN_I and PAYPLAN_D objects. The problem is that it does not fetch this information and the tables that I'm importing remain initial.
Is there any other function that I could use to get this info?
By checking this function, it seems that it also calls another function that gets the allowed objects list and none of these two tables are included on that list. Why is this? Am I missing an export parameter or something?
I will really appreciate your help. Here's part of the code.
Thank you!
INCLUDE CRM_OBJECT_NAMES_CON. INCLUDE OLE2INCL.
TYPES:
BEGIN OF ClientAddr, STREET TYPE AD_STREET, HOUSE_NUM1 TYPE AD_HSNM1, HOUSE_NUM2 TYPE AD_HSNM2, POST_CODE1 TYPE AD_PSTCD1, CITY2 TYPE AD_CITY2, CITY1 TYPE AD_CITY1, REGION TYPE REGIO, TEL_NUMBER TYPE AD_TLNMBR1, END OF ClientAddr, BEGIN OF ClientData, NAME_ORG1 TYPE BU_NAMEOR1, TAXNUM TYPE BPTAXNUM, END OF ClientData.
* Tablas internas de la función DATA: COMMENTS TYPE STANDARD TABLE OF THEAD WITH HEADER LINE, ORDERTAB TYPE CRMT_OBJECT_GUID_TAB, IMPORTOB TYPE CRMT_OBJECT_NAME_TAB, ORDERADM TYPE CRMT_ORDERADM_I_WRKT, ORDERENC TYPE CRMT_ORDERADM_H_WRKT, ACTIVITY TYPE CRMT_ACTIVITY_H_WRKT, PRODUCTO TYPE CRMT_PRODUCT_I_WRKT, PARTINFO TYPE CRMT_PARTNER_EXTERNAL_WRK, QUANTITY TYPE CRMT_SCHEDLIN_WRKT, PAYMPLAN TYPE CRMT_PAYPLAN_D_WRKT, SERVPLAN TYPE CRMT_SERVICEPLAN_I_WRKT, GCLIENTE TYPE ClientData, ACLIENTE TYPE ClientAddr, SOUTCOME TYPE CRMT_SRV_SUBJECT_COM, ORSTATUS TYPE CRMT_STATUS_WRKT, GUIDNAME TYPE THEAD-TDNAME, "Conversión de GUID Para FM GETPARTNER PARTNUMB(10) TYPE N, "Conversión de PARTNERNUMBER para SELECT GCLIENTE FMENSAJE(277) TYPE C, OBSERVAC(29) TYPE C, GUIDCHAR(32) TYPE C, IDOBJETO TYPE CRMT_OBJECT_ID, LISTCODE(10) TYPE C, BYPASSAU TYPE C, W_ACTIVI TYPE LINE OF CRMT_ACTIVITY_H_WRKT, W_ENCABE TYPE LINE OF CRMT_ORDERADM_H_WRKT, W_PRODUC TYPE LINE OF CRMT_PRODUCT_I_WRKT, W_QUANTI TYPE LINE OF CRMT_SCHEDLIN_WRKT, W_PAYMPL TYPE LINE OF CRMT_PAYPLAN_WRKT, W_SERVPL TYPE LINE OF CRMT_SERVICEPLAN_I_WRKT, W_STATUS TYPE LINE OF CRMT_STATUS_WRKT, TEMPINT1 TYPE I, TEMPSTRI(20) TYPE C, TEMPSTR2(2) TYPE N, UNIDADMD(20) TYPE C, CANTIDAD(4) TYPE C, BIPERON TYPE OLE2_OBJECT, RETURNS TYPE OLE2_OBJECT, LOGHAND TYPE BALLOGHNDL. "Log de la Función ORDER READ OW GUIDNAME = GUID. GUIDCHAR = GUID. BYPASSAU = 'X'. INSERT GUID INTO TABLE ORDERTAB. CALL FUNCTION 'READ_TEXT' EXPORTING ID = 'ZCOM' LANGUAGE = 'S' NAME = GUIDNAME OBJECT = 'CRM_ORDERH' TABLES LINES = COMMENTS EXCEPTIONS ID = 1 LANGUAGE = 2 NAME = 3 NOT_FOUND = 4 OBJECT = 5 REFERENCE_CHECK = 6 WRONG_ACCESS_TO_ARCHIVE = 7 OTHERS = 8. IF SY-SUBRC <> 0. COMMENTS-TDOBJECT = '*'. COMMENTS-TDNAME = 'Sin Comentarios'. APPEND COMMENTS. ENDIF. READ TABLE COMMENTS. OBSERVAC = COMMENTS-TDNAME(29). CALL FUNCTION 'CRM_ORDERADM_I_READ_PARTNER_OW' EXPORTING IV_HEADER = GUID IMPORTING ES_MAIN_PARTNER_WRK = PARTINFO. INSERT GC_OBJECT_NAME-ORDERADM_H INTO TABLE IMPORTOB. INSERT GC_OBJECT_NAME-ORDERADM_I INTO TABLE IMPORTOB. INSERT GC_OBJECT_NAME-SCHEDLIN INTO TABLE IMPORTOB. INSERT GC_OBJECT_NAME-PRODUCT_I INTO TABLE IMPORTOB. INSERT GC_OBJECT_NAME-ACTIVITY_H INTO TABLE IMPORTOB. INSERT GC_OBJECT_NAME-PAYPLAN_D INTO TABLE IMPORTOB. INSERT GC_OBJECT_NAME-SERVICEPLAN_I INTO TABLE IMPORTOB. INSERT GC_OBJECT_NAME-STATUS INTO TABLE IMPORTOB. CALL FUNCTION 'CRM_ORDER_READ_OW' EXPORTING IT_HEADER_GUID = ORDERTAB IT_REQUESTED_OBJECTS = IMPORTOB IV_NO_AUTH_CHECK = 'X' IMPORTING ET_ORDERADM_H = ORDERENC ET_ORDERADM_I = ORDERADM ET_PRODUCT_I = PRODUCTO ET_SCHEDLIN = QUANTITY ET_PAYPLAN_D = PAYMPLAN ET_SERVICEPLAN_I = SERVPLAN ET_STATUS = ORSTATUS CHANGING CV_LOG_HANDLE = LOGHAND. READ TABLE ORDERENC INDEX 1 INTO W_ENCABE. READ TABLE ACTIVITY INDEX 1 INTO W_ACTIVI. READ TABLE ORSTATUS INDEX 1 INTO W_STATUS. IF SY-UNAME = 'MFRANCO'. BREAK-POINT. ENDIF. CALL FUNCTION 'CRM_ACTIVITY_OUTCOME_READ' EXPORTING IV_ACTIVITY_GUID = GUIDCHAR IMPORTING ES_STATUS_REASON = SOUTCOME. CONCATENATE SOUTCOME-KATALOGART SOUTCOME-CODEGRUPPE INTO LISTCODE. IF W_STATUS-STATUS = 'E0001' AND LISTCODE = 'A2ZPGT1' AND ( SOUTCOME-CODE = 'ZREG' OR SOUTCOME-CODE = 'ZCEF' OR SOUTCOME-CODE = 'ZRET' ). CREATE OBJECT BIPERON 'EjemploOLEObj.BiperonMsgAutoObj'. CALL FUNCTION 'CRM_ORDERADM_H_OBJECTID_DET_OW' EXPORTING IV_HEADER_GUID = GUID EXCEPTIONS ERROR_OCCURRED = 1 NO_NUMBER_RANGE_DEFINED = 2 OTHERS = 3. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. CALL FUNCTION 'CRM_ORDERADM_H_READ_OW' EXPORTING IV_ORDERADM_H_GUID = GUID IMPORTING EV_OBJECT_ID = IDOBJETO EXCEPTIONS ADMIN_HEADER_NOT_FOUND = 1 OTHERS = 2. PARTNUMB = PARTINFO-PARTNER_NO. SELECT SINGLE K~NAME_ORG1 D~TAXNUM INTO CORRESPONDING FIELDS OF GCLIENTE FROM BUT000 AS K INNER JOIN DFKKBPTAXNUM AS D ON K~PARTNER = D~PARTNER WHERE K~PARTNER = PARTNUMB. SELECT SINGLE STREET HOUSE_NUM1 HOUSE_NUM2 POST_CODE1 CITY2 CITY1 REGION INTO CORRESPONDING FIELDS OF ACLIENTE FROM ADRC WHERE ADDRNUMBER = PARTINFO-ADDR_NR. LOOP AT PRODUCTO INTO W_PRODUC. SELECT SINGLE MSEHL INTO TEMPSTRI FROM T006A WHERE MSEHI = W_PRODUC-PROCESS_QTY_UNIT AND SPRAS = SY-LANGU. READ TABLE QUANTITY INTO W_QUANTI WITH KEY ITEM_GUID = W_PRODUC-GUID. TEMPINT1 = W_QUANTI-QUANTITY. TEMPSTR2 = TEMPINT1. CONDENSE TEMPSTRI. CONCATENATE UNIDADMD TEMPSTRI '(' TEMPSTR2 ')' INTO UNIDADMD. IF SY-TABIX >= 2. EXIT. ENDIF. ENDLOOP. CONDENSE UNIDADMD. CONCATENATE IDOBJETO '-' UNIDADMD '-' GCLIENTE-NAME_ORG1 '_NIT:' GCLIENTE-TAXNUM ',' ACLIENTE-STREET '-' ACLIENTE-HOUSE_NUM1 '-' ACLIENTE-HOUSE_NUM2 '_ZONA_' ACLIENTE-POST_CODE1 '_' ACLIENTE-CITY2 ',' ACLIENTE-CITY1 ',' ACLIENTE-REGION ',Tel:' ACLIENTE-TEL_NUMBER ',' OBSERVAC ',' SY-DATUM ',' SY-UZEIT INTO FMENSAJE. CONDENSE FMENSAJE. CALL METHOD OF BIPERON 'EnvMsgOA' = RETURNS EXPORTING #1 = W_ACTIVI-ACT_LOCATION #2 = IDOBJETO #3 = FMENSAJE. CALL FUNCTION 'ENQUE_SLEEP' EXPORTING SECONDS = 1 EXCEPTIONS SYSTEM_FAILURE = 1 OTHERS = 2. FREE OBJECT BIPERON. ENDIF.