0% found this document useful (0 votes)
181 views

So Change History

This document contains ABAP code that defines a report to display changes that were made to sales order quantities. It selects the relevant data from various tables, processes it to extract the key fields, and builds an ALV grid catalog to display the results, highlighting the old and new quantities for each changed order record.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
181 views

So Change History

This document contains ABAP code that defines a report to display changes that were made to sales order quantities. It selects the relevant data from various tables, processes it to extract the key fields, and builds an ALV grid catalog to display the results, highlighting the old and new quantities for each changed order record.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 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