Skip to Content
0
Former Member
Sep 02, 2009 at 04:14 AM

change data update to CDHDR & CDPOS

1643 Views

Hi All,

I have created a Zemp_hdr custom table with EMPNO as Key field & i checked "Change document " in data element. For this table i have created on Object also. When I'm trying to update data to CDHDR & CDPOS by below simple code. But changed data is not is updating in those tables. Plzz help me on this & give me any other suggestions or processor.

*&---------------------------------------------------------------------*
*& Report  ZEMP_DATA                                                   *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZEMP_DATA                               .

tables: zemp_hdr, zemp_details.
data: lt_emphdr type table of zemp_hdr with header line.
DATA: LT_EMPDET TYPE TABLE OF ZEMP_DETAILS WITH HEADER LINE.
Data: w_newvalues type zemp_hdr,
      w_oldvalues type zemp_hdr.

DATA: LV_TABIX TYPE SY-TABIX.
DATA: LV_STATUS(1).

DATA: L_OBJECTID                TYPE CDHDR-OBJECTID,
      L_TCODE                   TYPE CDHDR-TCODE,
      L_PLANNED_CHANGE_NUMBER   TYPE CDHDR-PLANCHNGNR,
      L_UTIME                   TYPE CDHDR-UTIME,
      L_UDATE                   TYPE CDHDR-UDATE,
      L_USERNAME                TYPE CDHDR-USERNAME,
      L_CDOC_PLANNED_OR_REAL    TYPE CDHDR-CHANGE_IND,
      L_CDOC_UPD_OBJECT         TYPE CDHDR-CHANGE_IND VALUE 'U',
      L_CDOC_NO_CHANGE_POINTERS TYPE CDHDR-CHANGE_IND.


* declaration for the long text
DATA: BEGIN OF ICDTXT_ZEMP_CD         OCCURS 20.
        INCLUDE STRUCTURE CDTXT.
DATA: END OF ICDTXT_ZEMP_CD        .

DATA: UPD_ICDTXT_ZEMP_CD         TYPE C.

*TABLES: *ZEMP_HDR
*       , ZEMP_HDR                      .
DATA: UPD_ZEMP_HDR                       TYPE C.






PARAMETERS: P_EMPNO LIKE ZEMP_HDR-EMPNO obligatory,
            P_EMPNAM LIKE ZEMP_HDR-EMPNAME,
            P_VALDFR TYPE SY-DATUM,
            P_VALDTO TYPE SY-DATUM,
            P_CITY LIKE ZEMP_HDR-CITY.


START-OF-SELECTION.

* HEADER TABLE

  L_OBJECTID = 'ZEMP_CD'.
  L_TCODE    = SY-TCODE.
  L_UTIME    = SY-UZEIT.
  L_UDATE    = SY-DATUM.
  L_USERNAME = SY-UNAME.


  select * from zemp_hdr into table lt_emphdr
                         WHERE EMPNO = P_EMPNO.
                         
  IF SY-SUBRC <> 0.

    W_NEWVALUES-EMPNO      = P_EMPNO.
    W_NEWVALUES-EMPNAME    = P_EMPNAM.
    W_NEWVALUES-VALFRM     = P_VALDFR.
    W_NEWVALUES-VALTO      = P_VALDTO.
    W_NEWVALUES-CITY       = P_CITY.
    W_NEWVALUES-CHANGE_USR = SY-UNAME.
    W_NEWVALUES-CHANGE_DAT = SY-DATUM.
    W_NEWVALUES-CHANGE_TIM = sy-uzeit.

    APPEND W_NEWVALUES TO LT_EMPHDR.
    DELETE ADJACENT DUPLICATES FROM lt_emphdr.
    INSERT ZEMP_HDR FROM TABLE LT_EMPHDR.
    IF sy-subrc EQ 0.
      COMMIT WORK.
      MESSAGE 'Document Updated Successfully' TYPE 'S'.
* UPDATE DATA TO CHANGE DOCU TABLES
      LV_STATUS = 'I'.
      PERFORM UPDATE_DATA USING LV_STATUS.
    ENDIF.
  ELSE.

    W_OLDVALUES-EMPNO      = P_EMPNO.
    W_OLDVALUES-EMPNAME    = P_EMPNAM.
    W_OLDVALUES-VALFRM     = P_VALDFR.
    W_OLDVALUES-VALTO      = P_VALDTO.
    W_OLDVALUES-CITY       = P_CITY.
    W_OLDVALUES-CHANGE_USR = SY-UNAME.
    W_OLDVALUES-CHANGE_DAT = SY-DATUM.
    W_OLDVALUES-CHANGE_TIM = sy-uzeit.

    APPEND W_OLDVALUES TO LT_EMPHDR.
    DELETE ADJACENT DUPLICATES FROM lt_emphdr.
    MODIFY ZEMP_HDR FROM TABLE LT_EMPHDR.
    IF sy-subrc EQ 0.
      COMMIT WORK.
      MESSAGE 'Document Updated Successfully' TYPE 'S'.
* UPDATE DATA TO CHANGE DOCU TABLES
      LV_STATUS = 'U'.
      PERFORM UPDATE_DATA USING LV_STATUS.
    ENDIF.
  ENDIF.


  SORT: LT_EMPHDR, lt_empdet.

  LOOP AT lt_emphdr.
    write: / lt_emphdr-EMPNO, lt_emphdr-EMPNAME, lt_emphdr-CHANGE_USR, 
             lt_emphdr-CHANGE_DAT, lt_emphdr-CHANGE_TIM.
  ENDLOOP.

*DELETE ADJACENT DUPLICATES FROM lt_emphdr COMPARING empno.

*&---------------------------------------------------------------------*
*&      Form  UPDATE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM UPDATE_DATA  USING    P_LV_STATUS.

  CALL FUNCTION 'ZEMP_CD_WRITE_DOCUMENT'
    EXPORTING
      OBJECTID                      = L_OBJECTID
      TCODE                         = L_TCODE
      UTIME                         = L_UTIME
      UDATE                         = L_UDATE
      USERNAME                      = L_USERNAME
*   PLANNED_CHANGE_NUMBER         = ' '
     OBJECT_CHANGE_INDICATOR       = 'U'
*   PLANNED_OR_REAL_CHANGES       = ' '
*   NO_CHANGE_POINTERS            = ' '
      UPD_ICDTXT_ZEMP_CD            = 'U'
      N_ZEMP_HDR                    = W_NEWVALUES
      O_ZEMP_HDR                    = W_OLDVALUES
      UPD_ZEMP_HDR                  = 'U'
    TABLES
      ICDTXT_ZEMP_CD                = ICDTXT_ZEMP_CD
            .


ENDFORM.                    " UPDATE_DATA

Thanks & regards.