Professional Documents
Culture Documents
*& Report ZMM_MAT_DOC_CANCEL_PROGM
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZMM_MAT_DOC_CANCEL_PROGM.
TYPES: BEGIN OF TY_UPLOAD,
MBLNR TYPE STRING,
MJAHR TYPE STRING,
END OF TY_UPLOAD.
DATA: WA_UPLOAD TYPE TY_UPLOAD,
IT_UPLOAD TYPE TABLE OF TY_UPLOAD,
LINE TYPE I,
COUNT TYPE I,
GD_PERCENT TYPE I,
LV_PROLE TYPE STRING,
IT_TYPE TYPE TRUXS_T_TEXT_DATA,
W_MSG(100),
V_LINES TYPE I,
V_CONTC(30) TYPE C,
BEGIN OF WA_ERROR,
LNO TYPE SY-TABIX,
MSG(100) TYPE C,
* MSG1(100) TYPE C,
END OF WA_ERROR,
BEGIN OF WA_RETFINAL,
BILLNO TYPE STRING,
TYPE TYPE BAPIRET1-TYPE,
MESSAGE TYPE BAPIRET1-MESSAGE,
END OF WA_RETFINAL,
LV_MBLNR TYPE BAPI2017_GM_HEAD_02-MAT_DOC,
LV_MJAHR TYPE BAPI2017_GM_HEAD_02-DOC_YEAR,
WA_FINAL TYPE BAPI2017_GM_HEAD_RET,
IT_FINAL TYPE TABLE OF BAPI2017_GM_HEAD_RET,
IT_RETFINAL LIKE TABLE OF WA_RETFINAL,
IT_RETURN TYPE TABLE OF BAPIRET2,
WA_RETURN TYPE BAPIRET2,
LV_MSG TYPE STRING,
IT_ERROR LIKE TABLE OF WA_ERROR.
PARAMETERS:CAN_FILE LIKE RLGRAP-FILENAME,
P_DATE TYPE BAPI2017_GM_HEAD_02-PSTNG_DATE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR CAN_FILE.
PERFORM BROWSE_FILE.
START-OF-SELECTION.
PERFORM LOAD_FILE.
DESCRIBE TABLE IT_UPLOAD LINES LINE.
COUNT = 0.
SORT IT_UPLOAD BY MBLNR.
CLEAR WA_UPLOAD.
LOOP AT IT_UPLOAD INTO WA_UPLOAD.
COUNT = COUNT + 1.
PERFORM PROGRESS_BAR USING 'Retrieving Data...'
SY-TABIX LINE.
WA_ERROR-LNO = SY-TABIX.
LV_MBLNR = WA_UPLOAD-MBLNR.
LV_MJAHR = WA_UPLOAD-MJAHR.
CALL FUNCTION 'BAPI_GOODSMVT_CANCEL'
EXPORTING
MATERIALDOCUMENT = LV_MBLNR
MATDOCUMENTYEAR = LV_MJAHR
GOODSMVT_PSTNG_DATE = P_DATE
* GOODSMVT_PR_UNAME =
* DOCUMENTHEADER_TEXT =
IMPORTING
GOODSMVT_HEADRET = wa_FINAL
TABLES
RETURN = IT_RETURN
* GOODSMVT_MATDOCITEM =
.
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
* IMPORTING
* RETURN =
.
* LOOP AT IT_FINAL INTO WA_FINAL.
WA_RETFINAL-BILLNO = WA_FINAL-MAT_DOC.
WA_RETFINAL-TYPE = 'I'.
CONCATENATE LV_MBLNR ` ` LV_MJAHR ` canceled Sucessfully` INTO WA_RE
TFINAL-MESSAGE.
APPEND WA_RETFINAL TO IT_RETFINAL.
CLEAR: WA_FINAL, WA_RETFINAL.
* ENDLOOP.
LOOP AT IT_RETURN INTO WA_RETURN .
WA_RETFINAL-BILLNO = WA_RETURN-MESSAGE_V1.
WA_RETFINAL-TYPE = WA_RETURN-TYPE.
WA_RETFINAL-MESSAGE = WA_RETURN-MESSAGE.
APPEND WA_RETFINAL TO IT_RETFINAL.
CLEAR: WA_RETURN, WA_RETFINAL.
ENDLOOP.
ENDIF.
CLEAR: LV_MBLNR, LV_MJAHR, IT_FINAL, IT_RETURN, WA_UPLOAD.
ENDLOOP.
LOOP AT IT_RETFINAL INTO WA_RETFINAL.
CASE WA_RETFINAL-TYPE.
WHEN 'I'.
WRITE: WA_RETFINAL-BILLNO, WA_RETFINAL-MESSAGE COLOR 5 .
WHEN 'E'.
WRITE: WA_RETFINAL-BILLNO, WA_RETFINAL-MESSAGE COLOR 6 .
WHEN 'S'.
WRITE: WA_RETFINAL-BILLNO, WA_RETFINAL-MESSAGE COLOR 5 .
WHEN OTHERS.
ENDCASE.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form BROWSE_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BROWSE_FILE .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = CAN_FILE.
ENDFORM. "BROWSE_FILE
*&---------------------------------------------------------------------*
*& Form LOAD_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LOAD_FILE .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER = 'X'
I_TAB_RAW_DATA = IT_TYPE
I_FILENAME = CAN_FILE
TABLES
I_TAB_CONVERTED_DATA = IT_UPLOAD[]
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID
TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "LOAD_FILE
*&———————————————————————*
*& Form PROGRESS_BAR
*&———————————————————————*
FORM PROGRESS_BAR USING P_VALUE
P_TABIX
P_NLINES.
DATA: W_TEXT(40),
W_PERCENTAGE TYPE P,
W_PERCENT_CHAR(3).
W_PERCENTAGE = ( P_TABIX / P_NLINES ) * 100.
W_PERCENT_CHAR = W_PERCENTAGE.
SHIFT W_PERCENT_CHAR LEFT DELETING LEADING ' '.
CONCATENATE P_VALUE W_PERCENT_CHAR '% Complete'(002) INTO W_TEXT.
*This check needs to be in, otherwise when looping around big tables
*SAP will re-display indicator too many times causing report to run
*very slow. (No ned to re-display same percentage anyways)
IF W_PERCENTAGE GT GD_PERCENT
OR P_TABIX EQ 1.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = W_PERCENTAGE
TEXT = W_TEXT.
GD_PERCENT = W_PERCENTAGE.
ENDIF.
ENDFORM. " PROGRESS_BAR