sitemap
ALE function module to process Change Pointers
Note: ABAP/4 is the proprietary programming language of SAP™.
This function module has been modeled after standard SAP™ function modules for processing master data
change pointers, such as MASTERIDOC_CREATE_SMD_DEBMAS. This function module was used as a skeleton for the
following function module for processing customer hierarchy change pointers.
FUNCTION ZMASTERIDOC_CREATE_SMD_ZDEBHI.
*"---------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(MESSAGE_TYPE) LIKE TBDME-MESTYP
*"---------------------------------------------------------------------
*
************************MODIFICATION************************************
* Programmer : Rajeev Kasturi *
* Date : Feb. 1998 *
* Description : This function module has been created anew for *
* generating Customer Hierarchy IDOCs used in ALE distribution of *
* changes (creates/changes/deletes) of SD Customer Hierarchy. The new *
* message type for this purpose is ZDEBHI, and the custom "Basic IDOC" *
* type is ZKNVHM01. *
************************************************************************
DATA: BEGIN OF F_KNVHKEY,
MANDT LIKE KNVH-MANDT,
HITYP LIKE KNVH-HITYP,
KUNNR LIKE KNVH-KUNNR,
VKORG LIKE KNVH-VKORG,
VTWEG LIKE KNVH-VTWEG,
SPART LIKE KNVH-SPART,
DATAB LIKE KNVH-DATAB,
END OF F_KNVHKEY.
*
DATA: BEGIN OF F_KNVH.
INCLUDE STRUCTURE ZKNVHKEY.
DATA: END OF F_KNVH.
*
DATA: BEGIN OF T_KNVHKEY OCCURS 10.
INCLUDE STRUCTURE ZKNVHKEY.
DATA: END OF T_KNVHKEY.
*
DATA: BEGIN OF T_CHGPTRS OCCURS 10.
INCLUDE STRUCTURE BDCP.
DATA: END OF T_CHGPTRS.
DATA: BEGIN OF T_CPIDENT OCCURS 10,
CPIDENT LIKE BDCP-CPIDENT,
END OF T_CPIDENT.
DATA: BEGIN OF T_CPIDENT_KNVH OCCURS 10,
MANDT LIKE KNVH-MANDT,
HITYP LIKE KNVH-HITYP,
KUNNR LIKE KNVH-KUNNR,
VKORG LIKE KNVH-VKORG,
VTWEG LIKE KNVH-VTWEG,
SPART LIKE KNVH-SPART,
DATAB LIKE KNVH-DATAB,
CPIDENT LIKE BDCP-CPIDENT,
END OF T_CPIDENT_KNVH.
* created idocs
* SAP created variables - does not follow naming stds.
DATA: CREATED_M_IDOCS LIKE SY-TABIX.
DATA: CREATED_COMM_IDOCS LIKE SY-TABIX.
DATA: CREATED_C_IDOCS LIKE SY-TABIX.
DATA: DONE_SINCE_COMMIT LIKE SY-TABIX.
* read all not processed change pointers for the given messagetype,
* object class KUNHIER
* return code is not checked for since no exception is raised by
* the function module.
CALL FUNCTION 'CHANGE_POINTERS_READ'
EXPORTING
CHANGE_DOCUMENT_OBJECT_CLASS = 'KUNHIER'
MESSAGE_TYPE = MESSAGE_TYPE
READ_NOT_PROCESSED_POINTERS = 'X'
TABLES
CHANGE_POINTERS = T_CHGPTRS.
*
REFRESH T_KNVHKEY.
*
* create all keys from the change pointers
LOOP AT T_CHGPTRS.
* table KNVH
* table KNVH of the change document equals the table KNVH
PERFORM MOVE_X_TO_Y USING T_CHGPTRS-TABKEY+0(3)
F_KNVHKEY-MANDT.
IF F_KNVHKEY-MANDT = SPACE.
F_KNVHKEY-MANDT = T_CHGPTRS-MANDT.
ENDIF.
*
PERFORM MOVE_X_TO_Y USING T_CHGPTRS-TABKEY+3(1)
F_KNVHKEY-HITYP.
*
PERFORM MOVE_X_TO_Y USING T_CHGPTRS-TABKEY+4(10)
F_KNVHKEY-KUNNR.
*
PERFORM MOVE_X_TO_Y USING T_CHGPTRS-TABKEY+14(4)
F_KNVHKEY-VKORG.
*
PERFORM MOVE_X_TO_Y USING T_CHGPTRS-TABKEY+18(2)
F_KNVHKEY-VTWEG.
*
PERFORM MOVE_X_TO_Y USING T_CHGPTRS-TABKEY+20(2)
F_KNVHKEY-SPART.
*
PERFORM MOVE_X_TO_Y USING T_CHGPTRS-TABKEY+22(8)
F_KNVHKEY-DATAB.
*
READ TABLE T_KNVHKEY WITH KEY F_KNVHKEY.
*
MOVE F_KNVHKEY-MANDT TO T_KNVHKEY-MANDT.
MOVE F_KNVHKEY-HITYP TO T_KNVHKEY-HITYP.
MOVE F_KNVHKEY-KUNNR TO T_KNVHKEY-KUNNR.
MOVE F_KNVHKEY-VKORG TO T_KNVHKEY-VKORG.
MOVE F_KNVHKEY-VTWEG TO T_KNVHKEY-VTWEG.
MOVE F_KNVHKEY-SPART TO T_KNVHKEY-SPART.
MOVE F_KNVHKEY-DATAB TO T_KNVHKEY-DATAB.
*
PERFORM CONVERT_CDCHGID_TO_MSGFN USING T_CHGPTRS-CDCHGID
T_KNVHKEY-MSGFN.
IF SY-SUBRC <> 0.
APPEND T_KNVHKEY.
ELSE.
MODIFY T_KNVHKEY INDEX SY-TABIX.
ENDIF.
*
* add pointer to processed pointers
MOVE-CORRESPONDING F_KNVHKEY TO T_CPIDENT_KNVH.
MOVE T_CHGPTRS-CPIDENT TO T_CPIDENT_KNVH-CPIDENT.
APPEND T_CPIDENT_KNVH.
ENDLOOP.
*
SORT T_KNVHKEY BY MANDT HITYP KUNNR VKORG VTWEG SPART DATAB.
SORT T_CPIDENT_KNVH BY MANDT HITYP KUNNR VKORG VTWEG SPART DATAB.
*
* initialize counter variables for created idocs
CREATED_M_IDOCS = 0.
CREATED_C_IDOCS = 0.
DONE_SINCE_COMMIT = 0.
CLEAR T_CPIDENT. REFRESH T_CPIDENT.
* call of the idoc creator
LOOP AT T_KNVHKEY WHERE MANDT = SY-MANDT.
CLEAR F_KNVH.
MOVE-CORRESPONDING T_KNVHKEY TO F_KNVH.
* return code is not checked for since no exception is raised by
* the function module.
*
CALL FUNCTION 'ZMASTERIDOC_CREATE_ZDEBHI'
EXPORTING
KNVHKEY = F_KNVH
RCVPFC = ' '
RCVPRN = ' '
RCVPRT = ' '
SNDPFC = ' '
SNDPRN = ' '
SNDPRT = ' '
MESSAGE_TYPE = MESSAGE_TYPE
IMPORTING
CREATED_COMM_IDOCS = CREATED_COMM_IDOCS.
*
CREATED_M_IDOCS = CREATED_M_IDOCS + 1.
CREATED_C_IDOCS = CREATED_C_IDOCS + CREATED_COMM_IDOCS.
DONE_SINCE_COMMIT = DONE_SINCE_COMMIT + 1.
*
* append all processed pointer
LOOP AT T_CPIDENT_KNVH WHERE MANDT = F_KNVH-MANDT
AND HITYP = F_KNVH-HITYP
AND KUNNR = F_KNVH-KUNNR
AND VKORG = F_KNVH-VKORG
AND VTWEG = F_KNVH-VTWEG
AND SPART = F_KNVH-SPART
AND DATAB = F_KNVH-DATAB.
*
T_CPIDENT-CPIDENT = T_CPIDENT_KNVH-CPIDENT.
APPEND T_CPIDENT.
*
ENDLOOP.
IF DONE_SINCE_COMMIT >= C_IDOCS_BEFORE_COMMIT.
DONE_SINCE_COMMIT = 0.
*
* write status of all processed pointers
* return code is not checked for since no exception is raised by
* the function module.
CALL FUNCTION 'CHANGE_POINTERS_STATUS_WRITE'
EXPORTING
MESSAGE_TYPE = MESSAGE_TYPE
TABLES
CHANGE_POINTERS_IDENTS = T_CPIDENT.
*
COMMIT WORK.
* return code is not checked for since no exception is raised by
* the function module.
CALL FUNCTION 'DEQUEUE_ALL'.
*
CLEAR T_CPIDENT. REFRESH T_CPIDENT.
*
ENDIF.
*
ENDLOOP. "at t_knvhkey
*
* commit if necessary
IF DONE_SINCE_COMMIT > 0.
*
* write status of all processed pointers
* return code is not checked for since no exception is raised by
* the function module.
CALL FUNCTION 'CHANGE_POINTERS_STATUS_WRITE'
EXPORTING
MESSAGE_TYPE = MESSAGE_TYPE
TABLES
CHANGE_POINTERS_IDENTS = T_CPIDENT.
*
COMMIT WORK.
* return code is not checked for since no exception is raised by
* the function module.
CALL FUNCTION 'DEQUEUE_ALL'.
*
ENDIF.
*
MESSAGE ID 'B1' TYPE 'I' NUMBER '038'
WITH CREATED_M_IDOCS MESSAGE_TYPE.
MESSAGE ID 'B1' TYPE 'I' NUMBER '039'
WITH CREATED_C_IDOCS MESSAGE_TYPE.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& Form MOVE_X_TO_Y
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_CHGPTRS-TABKEY+20(2) text *
* -->P_F_KNVHKEY-SPART text *
*----------------------------------------------------------------------*
FORM MOVE_X_TO_Y USING X Y.
*
Y = X.
*
ENDFORM. " MOVE_X_TO_Y
*&---------------------------------------------------------------------*
*& Form CONVERT_CDCHGID_TO_MSGFN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_CHGPTRS-CDCHGID text *
* -->P_T_KNVHKEY-MSGFN text *
*----------------------------------------------------------------------*
FORM CONVERT_CDCHGID_TO_MSGFN USING CDCHGID LIKE BDCP-CDCHGID
MSGFN LIKE Z1KNVHM-MSGFN.
*
MSGFN = SPACE.
*
CASE CDCHGID.
WHEN 'I'.
MSGFN = C_MSGFN_I.
WHEN 'U'.
MSGFN = C_MSGFN_U.
WHEN ' '.
MSGFN = C_MSGFN_R.
WHEN 'D'.
MSGFN = C_MSGFN_D.
WHEN 'E'.
MSGFN = C_MSGFN_D.
WHEN 'S'.
MSGFN = C_MSGFN_S.
ENDCASE.
*
ENDFORM. " CONVERT_CDCHGID_TO_MSGFN
*&---------------------------------------------------------------------*
*& Form FILL_SEGMENT_Z1KNVHM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_KNVHKEY-MSGFN text *
*----------------------------------------------------------------------*
FORM FILL_SEGMENT_Z1KNVHM USING MSGFN.
*
CLEAR Z1KNVHM.
*
Z1KNVHM-MSGFN = MSGFN.
Z1KNVHM-HITYP = KNVH-HITYP.
Z1KNVHM-KUNNR = KNVH-KUNNR.
Z1KNVHM-VKORG = KNVH-VKORG.
Z1KNVHM-VTWEG = KNVH-VTWEG.
Z1KNVHM-SPART = KNVH-SPART.
Z1KNVHM-DATAB = KNVH-DATAB.
Z1KNVHM-DATBI = KNVH-DATBI.
Z1KNVHM-HKUNNR = KNVH-HKUNNR.
Z1KNVHM-HVKORG = KNVH-HVKORG.
Z1KNVHM-HVTWEG = KNVH-HVTWEG.
Z1KNVHM-HSPART = KNVH-HSPART.
Z1KNVHM-GRPNO = KNVH-GRPNO.
Z1KNVHM-BOKRE = KNVH-BOKRE.
Z1KNVHM-PRFRE = KNVH-PRFRE.
Z1KNVHM-HZUOR = KNVH-HZUOR.
*
ENDFORM. " FILL_SEGMENT_Z1KNVHM
All of the product names here are trademarks of their respective companies. The site
www.allsaplinks.com no way affiliated with SAP AG. We have made every effort for the content
integrity. Information used on this site is at your own risk.
ALE Function module