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.
SapMaterial.com   
ABAP TECHNICAL

SAP Introduction

sap abap faq

sap Tables

SAP Transaction codes

Internal tables

data dictionary

performance tuning

transports & Requests

Sap scripts

Smartforms

lsmw

reports

sap Workflow

module pool/ dialog
programming

table control

user exits

sap memory

abap memory

alv reports

ABAP ADVANCED

IDOC

ALE

BAPI

BADI

RFC


FUNCTIONAL SIDE

Materials Management

FICO

Human Resources

BIW / BW / SEM


Free Documentation
Abap Material

Ale Material

BAPI Material

BC Material

IDOC Material

R/3 Database Management

SAP material

RFC

Transport

Sales & Distribution Material

Basic Data and Function
Material

Basis (BC) Material

Billing Material

CA Material

CATT : Computer Aided Test
Tool

Capacity Evaluation and
leveling Material

Capacity Planning Material

Cross Application Material

Countries

Customer Service Material

Enterpise  Material

Financial / Controlling (FICO)

Internet Time Sheet

Inspection Material

HR Material

Material Management
Material

Payments Material

Payroll Material

Pension Fund

Production Planning and
Control

Plant Maintenance

Quality Management Material

Real Estate Material

SAP material

Wage Types
ALE Function module