You are on page 1of 6

*&---------------------------------------------------------------------* *& Report ZSD_SALES_ORDER_CHANGE_RPT *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZSD_SALES_ORDER_CHANGE_RPT.

TABLES:VBAK, VBAP, CDHDR, CDPOS, VBEP. TYPE-POOLS:SLIS. DATA: REPORT LIKE SY-REPID, FIELDCAT_LN TYPE SLIS_FIELDCAT_ALV, GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. TYPES:BEGIN OF TY_FINAL, VBELN TYPE VBELN_VA, KUNNR TYPE KUNNR, KWMENG TYPE KWMENG, USERNAME TYPE CDUSERNAME, UDATE TYPE CDDATUM, VALUE_OLD TYPE CDFLDVALO, END OF TY_FINAL. TYPES:BEGIN OF TY_VBAP, VBELN TYPE VBELN_VA, KUNNR TYPE KUNNR, ERDAT TYPE ERDAT, VKORG TYPE VKORG, VTWEG TYPE VTWEG, SPART TYPE SPART, KWMENG TYPE KWMENG, OBJECTID TYPE CDOBJECTV, END OF TY_VBAP. TYPES:BEGIN OF TY_CDPOS, OBJECTCLAS TYPE CDOBJECTCL, OBJECTID TYPE CDOBJECTV, CHANGENR TYPE CDCHANGENR, TABNAME TYPE TABNAME, FNAME TYPE FIELDNAME, VALUE_NEW TYPE CDFLDVALN, VALUE_OLD TYPE CDFLDVALO, END OF TY_CDPOS. TYPES:BEGIN OF TY_CDHDR, OBJECTCLAS TYPE CDOBJECTCL, OBJECTID TYPE CDOBJECTV, CHANGENR TYPE CDCHANGENR, USERNAME TYPE CDUSERNAME, UDATE TYPE CDDATUM, TCODE TYPE CDTCODE, END OF TY_CDHDR.

DATA:T_VBAP TYPE STANDARD TABLE OF TY_VBAP, W_VBAP TYPE TY_VBAP, T_CDPOS TYPE STANDARD TABLE OF TY_CDPOS, W_CDPOS TYPE TY_CDPOS, T_CDHDR TYPE STANDARD TABLE OF TY_CDHDR, W_CDHDR TYPE TY_CDHDR, T_FINAL TYPE STANDARD TABLE OF TY_FINAL, W_FINAL TYPE TY_FINAL. SELECTION-SCREEN:BEGIN OF BLOCK B1 WITH FRAME TITLE TXT. SELECT-OPTIONS:S_ERDAT S_VKORG S_VTWEG S_SPART FOR FOR FOR FOR VBAK-ERDAT VBAK-VKORG VBAK-VTWEG VBAK-SPART OBLIGATORY, OBLIGATORY NO INTERVALS, NO INTERVALS, NO INTERVALS.

SELECTION-SCREEN:END OF BLOCK B1. START-OF-SELECTION. PERFORM SELECT_DATA. * PERFORM PROCESS_DATA. PERFORM BUILD_CATALOG. PERFORM DISPLAY_DATA. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form SELECT_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM SELECT_DATA. SELECT A~VBELN A~KUNNR A~ERDAT A~VKORG A~VTWEG A~SPART B~KWMENG INTO TABLE T_VBAP FROM VBAK AS A INNER JOIN VBAP AS B ON A~VBELN EQ B~VBELN WHERE A~ERDAT IN S_ERDAT AND A~VKORG IN S_VKORG AND A~VTWEG IN S_VTWEG AND A~SPART IN S_SPART. IF T_VBAP[] IS NOT INITIAL.

LOOP AT T_VBAP INTO W_VBAP. MOVE:W_VBAP-VBELN TO W_VBAP-OBJECTID. MODIFY T_VBAP FROM W_VBAP TRANSPORTING OBJECTID. CLEAR:W_VBAP. ENDLOOP. SELECT OBJECTCLAS OBJECTID CHANGENR TABNAME FNAME VALUE_NEW VALUE_OLD INTO TABLE T_CDPOS FROM CDPOS FOR ALL ENTRIES IN T_VBAP WHERE OBJECTID EQ T_VBAP-OBJECTID AND OBJECTCLAS EQ 'VERKBELEG' AND TABNAME EQ 'VBEP' AND FNAME EQ 'WMENG'. IF T_CDPOS[] IS NOT INITIAL. SORT T_CDPOS BY OBJECTID CHANGENR. SELECT OBJECTCLAS OBJECTID CHANGENR USERNAME UDATE TCODE FROM CDHDR INTO TABLE T_CDHDR FOR ALL ENTRIES IN T_CDPOS WHERE OBJECTCLAS EQ 'VERKBELEG' AND OBJECTID EQ T_CDPOS-OBJECTID AND CHANGENR EQ T_CDPOS-CHANGENR. SORT T_CDHDR BY OBJECTID CHANGENR. ENDIF. ENDIF. ENDFORM. "SELECT_DATA

*&---------------------------------------------------------------------* *& Form PROCESS_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM PROCESS_DATA. IF T_CDPOS[] IS NOT INITIAL. LOOP AT T_VBAP INTO W_VBAP.

MOVE:W_VBAP-VBELN TO W_FINAL-VBELN, W_VBAP-KUNNR TO W_FINAL-KUNNR, W_VBAP-KWMENG TO W_FINAL-KWMENG. READ TABLE T_CDPOS INTO W_CDPOS WITH KEY OBJECTID = W_VBAP-OBJECTID. IF SY-SUBRC = 0. MOVE:W_CDPOS-VALUE_OLD TO W_FINAL-VALUE_OLD. READ TABLE T_CDHDR INTO W_CDHDR WITH KEY OBJECTID = W_CDPOS-OBJECTID CHANGENR = W_CDPOS-CHANGENR. IF SY-SUBRC = 0. MOVE:W_CDHDR-UDATE TO W_FINAL-UDATE, W_CDHDR-USERNAME TO W_FINAL-USERNAME. ENDIF. ENDIF. APPEND W_FINAL TO T_FINAL. CLEAR:W_VBAP,W_CDPOS,W_CDHDR,W_FINAL. ENDLOOP. IF T_FINAL[] IS NOT INITIAL. DELETE T_FINAL WHERE VALUE_OLD IS INITIAL. ENDIF. ENDIF. ENDFORM. "PROCESS_DATA

*&---------------------------------------------------------------------* *& Form BUILD_CATALOG *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM BUILD_CATALOG. REFRESH GT_FIELDCAT. CLEAR FIELDCAT_LN. FIELDCAT_LN-FIELDNAME FIELDCAT_LN-TABNAME FIELDCAT_LN-SELTEXT_L FIELDCAT_LN-OUTPUTLEN APPEND FIELDCAT_LN TO CLEAR FIELDCAT_LN. FIELDCAT_LN-FIELDNAME FIELDCAT_LN-TABNAME FIELDCAT_LN-SELTEXT_L FIELDCAT_LN-OUTPUTLEN APPEND FIELDCAT_LN TO = 'VBELN'. = 'T_FINAL'. = 'Order No.'. = '10'. GT_FIELDCAT. = 'KUNNR'. = 'T_FINAL'. = 'Sold To Party'. = '10'. GT_FIELDCAT.

CLEAR FIELDCAT_LN. FIELDCAT_LN-FIELDNAME FIELDCAT_LN-TABNAME FIELDCAT_LN-SELTEXT_L FIELDCAT_LN-OUTPUTLEN APPEND FIELDCAT_LN TO CLEAR FIELDCAT_LN. FIELDCAT_LN-FIELDNAME FIELDCAT_LN-TABNAME FIELDCAT_LN-SELTEXT_L FIELDCAT_LN-OUTPUTLEN APPEND FIELDCAT_LN TO CLEAR FIELDCAT_LN. FIELDCAT_LN-FIELDNAME FIELDCAT_LN-TABNAME FIELDCAT_LN-SELTEXT_L FIELDCAT_LN-OUTPUTLEN APPEND FIELDCAT_LN TO CLEAR FIELDCAT_LN. FIELDCAT_LN-FIELDNAME FIELDCAT_LN-TABNAME FIELDCAT_LN-SELTEXT_L FIELDCAT_LN-OUTPUTLEN APPEND FIELDCAT_LN TO ENDFORM.

= 'USERNAME'. = 'T_FINAL'. = 'Changed By'. = '10'. GT_FIELDCAT. = 'UDATE'. = 'T_FINAL'. = 'Changed Date'. = '10'. GT_FIELDCAT. = 'VALUE_OLD'. = 'T_FINAL'. = 'Old Quantity'. = '10'. GT_FIELDCAT. = 'KWMENG'. = 'T_FINAL'. = 'New Quantity'. = '10'. GT_FIELDCAT. "BUILD_CATALOG

*&---------------------------------------------------------------------* *& Form DISPLAY_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM DISPLAY_DATA. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM I_CALLBACK_USER_COMMAND I_CALLBACK_TOP_OF_PAGE IT_FIELDCAT IS_LAYOUT I_SAVE I_DEFAULT = = = = SY-REPID 'USER_COMMAND' 'TOP_OF_PAGE' GT_FIELDCAT = XS_LAYOUT = 'A' = 'X'

* * * *

TABLES T_OUTTAB = T_FINAL EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2 . IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

ENDFORM.

"DISPLAY_DATA

You might also like