Sample Program Update Order BUCO :
REPORT Z_CS_DWN_IW32 .
TABLES: AUFK,JEST.
* MARC,MVKE,MARA,KLAH,CABN ,
* A100,KONP,SSCRFIELDS,A902,A604,A614,KONM,A305,MAST.
TYPE-POOLS: SLIS.
DATA : NO(2) TYPE P.
DATA: it_folder LIKE STANDARD TABLE OF sdokpath,
it_file LIKE STANDARD TABLE OF sdokpath,
it_fol_fil LIKE STANDARD TABLE OF sdokpath,
wa_fol_fil LIKE sdokpath,
file_count TYPE i,
dir_count TYPE i.
DATA : BEGIN OF it_join_fields OCCURS 0,
field_name(20),
END OF it_join_fields.
DATA : BEGIN OF it_data OCCURS 0,
AUFNR(018),
LINE(100),
AUART(010),
END OF it_data.
TYPES : BEGIN OF TY_ORDO,
AUFNR(18)," TYPE AUFK-AUFNR,
OBJNR TYPE OBJNR,
AUART LIKE AUFK-AUART,
STAT TYPE JEST-STAT,
LINE LIKE BSVX-STTXT,
USER_LINE LIKE BSVX-STTXT,
STATUS(60),
END OF TY_ORDO.
DATA :IT_ORDO TYPE TABLE OF TY_ORDO,
WA_ORDO TYPE TY_ORDO.
*----------------------------------------------------------------------*
* data definition
*----------------------------------------------------------------------*
* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
* error session opened (' ' or 'X')
DATA: BEGIN OF IT_MESSTAB OCCURS 0 .
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: AUFNR TYPE AUFK-AUFNR.
DATA: MESS(15).
DATA: L_MSTRING(480) TYPE C.
DATA: END OF IT_MESSTAB,
* IT_AUSP TYPE TABLE OF TY_AUSP,
* WA_AUSP TYPE TY_AUSP,
TABLE_N TYPE I ,
T_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
S_FLDCAT TYPE SLIS_FIELDCAT_ALV,
T_SORT TYPE SLIS_T_SORTINFO_ALV," WITH HEADER LINE,
WA_SORTINFO TYPE SLIS_SORTINFO_ALV,
X_LAYOUT TYPE SLIS_LAYOUT_ALV,
GD_LAYOUT TYPE LVC_S_LAYO,
X_PRINT TYPE SLIS_PRINT_ALV,
X_VARIANT TYPE DISVARIANT,
D_REPID TYPE SY-REPID,
CT_TYPE(2) ,
F_FLDCAT2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
G_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_FIELDCATALOG TYPE LVC_S_FCAT OCCURS 0,
GV_FCAT LIKE LINE OF GS_FIELDCATALOG,
GUS_FIELDCATALOG TYPE LVC_S_FCAT OCCURS 0,
it_alv_hedr TYPE TABLE OF slis_listheader
INITIAL SIZE 0, "ALVHEADER
st_alv_hedr TYPE slis_listheader,
st_alv_layt TYPE slis_layout_alv, "ALVLEYOUT
it_alv_fcat TYPE TABLE OF slis_fieldcat_alv
INITIAL SIZE 0,
st_alv_fcat TYPE slis_fieldcat_alv,
it_alv_sort TYPE TABLE OF slis_sortinfo_alv
INITIAL SIZE 0,
st_alv_sort TYPE slis_sortinfo_alv,
st_disvariant TYPE slis_vari.
DATA: gd_scftx TYPE smp_dyntxt. "function key 1 properties
DATA : OK_CODE TYPE SY-UCOMM,
SAVE_OK LIKE OK_CODE,
OUTPUT LIKE OK_CODE.
DATA:
t_stpo_read like STPO_API02 occurs 0 with header line,
t_stpo_data like STPO_API02 occurs 0 with header line,
t_stpo_update like STPO_API03 occurs 0 with header line,
i_stko LIKE stko_api01," OCCURS 0 WITH HEADER LINE,
T_STKO LIKE STKO_API02 OCCURS 0 WITH HEADER LINE,
wrk_date like CSAP_MBOM-DATUV.
DATA: AUFK_LINES TYPE I,
GD_PERCENT TYPE I.
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_AUFNR FOR AUFK-AUFNR ,
S_AUART FOR AUFK-AUART OBLIGATORY,
S_ERDAT FOR AUFK-ERDAT,
S_VAPLZ FOR AUFK-VAPLZ.
*SELECTION-SCREEN SKIP 1.
*PARAMETERS : C_TECO AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BLOCK1.
SELECTION-SCREEN BEGIN OF SCREEN 0100 AS WINDOW TITLE txtblk03.
PARAMETERS: p_pdirp TYPE pfeflnamel DEFAULT 'C:\',
psavep TYPE string DEFAULT 'Order.XLS'.
SELECTION-SCREEN END OF SCREEN 0100.
*AT SELECTION-SCREEN OUTPUT.
* PERFORM MODIFY_SCREEN.
*F4 for Getting Directory Path
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pdirp.
DATA: fname TYPE string.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Select Directory'
CHANGING
selected_folder = fname
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
p_pdirp = fname.
*F4 for Getting File Path and Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR psavep.
DATA: filename TYPE string,
path TYPE string.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = 'Select path and file name'
default_extension = 'XLS'
CHANGING
filename = filename
path = path
fullpath = psavep
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
INITIALIZATION.
PERFORM INIT.
txtblk03 = 'Download File'.
psavep = 'Order.XLS'.
START-OF-SELECTION.
PERFORM FILL_DATA.
PERFORM VIEW_DATA.
* ENDIF.
*&---------------------------------------------------------------------*
*& Form FILL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FILL_DATA .
DATA : DG_OBJNR TYPE AUFK-OBJNR.
* Append Data to Itab.
REFRESH IT_DATA.
IT_DATA-AUFNR = 'Material Bom'.
IT_DATA-LINE = 'System User'.
IT_DATA-AUART = 'Order Type'.
APPEND IT_DATA.CLEAR IT_DATA.
* First Step and .
REFRESH IT_ORDO.
SELECT AUFK~AUFNR AUFK~OBJNR AUFK~AUART JEST~STAT
INTO CORRESPONDING FIELDS OF TABLE IT_ORDO
FROM AUFK
INNER JOIN JEST AS JEST ON JEST~OBJNR = AUFK~OBJNR
WHERE AUFK~AUFNR IN S_AUFNR
AND AUFK~AUART IN S_AUART
AND AUFK~ERDAT IN S_ERDAT
AND AUFK~VAPLZ IN S_VAPLZ
AND JEST~INACT NE 'X'
AND JEST~STAT = 'I0046'.
table_n = 0.
DESCRIBE TABLE IT_ORDO LINES table_n.
IF table_n EQ 0.
CALL FUNCTION 'C14A_POPUP_NO_HITS'.
STOP.
ENDIF.
* SORT IT_ORDO BY AUFNR.
* DELETE ADJACENT DUPLICATES FROM IT_ORDO COMPARING AUFNR.
*
LOOP AT IT_ORDO INTO WA_ORDO.
DG_OBJNR = WA_ORDO-OBJNR.
CALL FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
FLG_USER_STAT = 'X'
OBJNR = DG_OBJNR "WA_OR02-OBJNR
SPRAS = sy-langu
IMPORTING
* ANW_STAT_EXISTING =
* E_STSMA =
LINE = WA_ORDO-LINE
USER_LINE = WA_ORDO-USER_LINE
* STONR =
* EXCEPTIONS
* OBJECT_NOT_FOUND = 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.
MODIFY IT_ORDO FROM WA_ORDO.
ENDLOOP.
* Change using IW32
Perform Proses.
* `WAIT UP TO 30 SECONDS.
Perform lst_view.
* SORT IT_ORDO BY ORDONR POSNR.
LOOP AT IT_ORDO INTO WA_ORDO.
CONCATENATE '="' WA_ORDO-AUFNR '"' INTO WA_ORDO-AUFNR.
MOVE-CORRESPONDING WA_ORDO TO IT_DATA.
APPEND IT_DATA.
ENDLOOP.
SORT IT_ORDO BY AUFNR.
* SORT IT_DATA BY AUFNR.
ENDFORM. " FILL_DATA
*&---------------------------------------------------------------------*
*& Form DOWNLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWNLOAD .
Concatenate p_Pdirp '\' psavep INTO psavep.
IF IT_DATA[] IS NOT INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = psavep " Path and Name of Excel File with Extension .xls
write_field_separator = 'X'
* FILETYPE = 'ASC'
TABLES
data_tab = it_data " Internal Table having all Name of Folders and Files
* fieldnames = it_join_fields
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
MESSAGE: 'No file found in the selected Directory' TYPE 'I'.
ENDIF.
ENDFORM. " DOWNLOAD
*&---------------------------------------------------------------------*
*& Form MODIFY_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN .
LOOP AT SCREEN.
IF screen-name = 'pdirp'.
screen-input = '0'.
PSAVEP = 'Material Master.xls'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. " MODIFY_SCREEN
*&---------------------------------------------------------------------*
*& Form VIEW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM VIEW_DATA .
* Display Message Upload.
PERFORM build_fieldcat.
PERFORM L_build_layout.
.
SORT IT_ORDO BY AUFNR.
PERFORM View.
ENDFORM. " VIEW_DATA
*&---------------------------------------------------------------------*
*& Form INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM INIT .
DEFINE f_fldcat.
clear s_fldcat.
s_fldcat-fieldname = &1.
s_fldcat-decimals_out = &2.
s_fldcat-seltext_l = &3.
s_fldcat-outputlen = &4.
s_fldcat-just = &5.
s_fldcat-no_out = &6.
s_fldcat-datatype = &7.
s_fldcat-cfieldname = &8.
s_fldcat-no_zero = &9.
* s_fldcat-outputlen = &10.
append s_fldcat to t_fldcat.
END-OF-DEFINITION.
ENDFORM. " INIT
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT .
* * * 1 2 3 4 5 6 7 8 9
f_fldcat 'AUFNR' '' 'Order' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'LINE' '' 'System User' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'AUART' '' 'Order Type' '' 'L' '' 'CHAR' '' ''.
f_fldcat 'STATUS' '' 'Status' '' 'L' '' 'CHAR' '' ''.
CLEAR S_FLDCAT.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM L_BUILD_LAYOUT .
x_layout-colwidth_optimize = 'X'.
x_layout-info_fieldname = 'LINE_COLOR'.
x_layout-def_status = 'X'.
ENDFORM. " L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form VIEW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM VIEW .
d_repid = sy-repid.
Call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = d_repid
i_callback_pf_status_set = 'F_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = t_fldcat[]
it_sort = t_sort[]
is_layout = x_layout
* i_default = 'X'
i_save = 'A'
* is_variant = x_variant
* it_event_exit = t_event_exit[]
* is_print = x_print
TABLES
t_outtab = IT_ORDO[]
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. " VIEW
*&---------------------------------------------------------------------*
*& Form f_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM f_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZALVV'.
ENDFORM. "f_status_set
"stat_set
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->P_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING p_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&DWN'.
CLEAR: p_pdirp,psavep. .
CALL SCREEN 0101 STARTING AT 10 05.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Module PF_STATUS OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PF_STATUS OUTPUT.
SET PF-STATUS 'Z_ST_ALV'.
ENDMODULE. " PF_STATUS OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0101 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0101 OUTPUT.
SET PF-STATUS 'Z_ST_ALV'.
* SET TITLEBAR 'xxx'.
PERFORM MODIFY_SCREEN_101.
ENDMODULE. " STATUS_0101 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0101 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0101 INPUT.
CASE SY-UCOMM.
WHEN '&EXEC'.
IF p_pdirp is not INITIAL AND psavep is not initial.
* PERFORM DOWNLOAD.
MESSAGE: 'Can Not Download ' TYPE 'S'.
LEAVE TO SCREEN 0.
ELSE.
MESSAGE: 'Folder and File Name Cannot Empty ' TYPE 'S'.
ENDIF.
WHEN 'G_FIND'.
PERFORM FIND.
WHEN '&CANC'.
LEAVE TO SCREEN 0 .
ENDCASE.
ENDMODULE. " USER_COMMAND_0101 INPUT
*&---------------------------------------------------------------------*
*& Form MODIFY_SCREEN_101
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN_101 .
LOOP AT SCREEN.
IF screen-name = 'OK_CODE'." 'pdirp'.
screen-input = '0'.
* P_PDIRP = 'D:\'.
PSAVEP = 'Order.xls'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. " MODIFY_SCREEN_101
*&---------------------------------------------------------------------*
*& Form FIND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FIND .
DATA: fname TYPE string.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Select Directory'
CHANGING
selected_folder = fname
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
p_pdirp = fname.
ENDFORM. " FIND
*&---------------------------------------------------------------------*
*& Form PROSES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROSES .
* DATA: AUFK_LINES TYPE I,
* GD_PERCENT TYPE I.
SORT IT_ORDO BY AUFNR.
DELETE ADJACENT DUPLICATES FROM IT_ORDO COMPARING AUFNR.
* CHECK SY-SUBRC EQ 0.
DESCRIBE TABLE IT_ORDO LINES AUFK_LINES.
* AUFK_LINES = SY-DBCNT.
CLEAR: GD_PERCENT.
SORT IT_ORDO BY AUFNR .
LOOP AT IT_ORDO INTO WA_ORDO.
PERFORM PROGRESS_BAR USING ' Retrieving data...'(001)
SY-TABIX
AUFK_LINES.
perform bdc_dynpro using 'SAPLCOIH' '0101'.
perform bdc_field using 'BDC_CURSOR'
'CAUFVD-AUFNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'CAUFVD-AUFNR'
WA_ORDO-AUFNR.
perform bdc_dynpro using 'SAPLCOIH' '3000'.
perform bdc_field using 'BDC_OKCODE'
'=BBAB'.
perform bdc_field using 'BDC_CURSOR'
'CAUFVD-KTEXT'.
perform bdc_dynpro using 'SAPLCOIH' '3000'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_field using 'BDC_CURSOR'
'CAUFVD-KTEXT'.
perform bdc_transaction using 'IW32'.
* WAIT UP TO 5 SECONDS.
ENDLOOP.
MESSAGE ' ' TYPE 'S'.
ENDFORM. " PROSES
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> SPACE. "NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
*----------------------------------------------------------------------*
* Start new transaction according to parameters *
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE 'N' " 'N' "'A' "CTUMODE
UPDATE 'L' "'L' "'S' "CUPDATE
MESSAGES INTO MESSTAB.
LOOP AT MESSTAB.
MESSAGE ID MESSTAB-MSGID
TYPE MESSTAB-MSGTYP
NUMBER MESSTAB-MSGNR
INTO L_MSTRING
WITH MESSTAB-MSGV1
MESSTAB-MSGV2
MESSTAB-MSGV3
MESSTAB-MSGV4.
IT_MESSTAB-MSGTYP = MESSTAB-MSGTYP.
IT_MESSTAB-MSGV1 = MESSTAB-MSGV1.
IT_MESSTAB-MSGV2 = MESSTAB-MSGV2.
IF MESSTAB-MSGV2 IS NOT INITIAL.
IT_MESSTAB-MSGV1 = MESSTAB-MSGV2.
ENDIF.
IT_MESSTAB-MSGV3 = MESSTAB-MSGV3.
IT_MESSTAB-MSGV4 = MESSTAB-MSGV4.
IT_MESSTAB-L_MSTRING = L_MSTRING.
APPEND IT_MESSTAB .
ENDLOOP.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form LST_VIEW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LST_VIEW.
LOOP AT IT_MESSTAB.
IT_MESSTAB-AUFNR = IT_MESSTAB-AUFNR.
IT_MESSTAB-MESS = IT_MESSTAB-L_MSTRING+6(5).
MODIFY IT_MESSTAB.
ENDLOOP.
SORT IT_MESSTAB BY MESS.
DELETE IT_MESSTAB WHERE MESS NE 'saved'.
SORT IT_MESSTAB BY MSGV1.
SORT IT_ORDO BY AUFNR.
SORT IT_MESSTAB BY MSGV1.
IF IT_MESSTAB IS NOT INITIAL.
LOOP AT IT_ORDO INTO WA_ORDO.
READ TABLE IT_MESSTAB WITH KEY MSGV1 = WA_ORDO-AUFNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
WA_ORDO-STATUS = 'Updated'.
REPLACE ALL OCCURRENCES OF 'CLSD' IN WA_ORDO-LINE WITH 'TECO'.
ELSE.
WA_ORDO-STATUS = 'Not Update'.
ENDIF.
MODIFY IT_ORDO FROM WA_ORDO.
ENDLOOP.
ENDIF.
* LOOP AT IT_ORDO INTO WA_ORDO.
* MOVE-CORRESPONDING WA_ORDO TO WA_MMXX.
* APPEND WA_MMXX TO IT_MMXX.
* ENDLOOP.
ENDFORM. " LST_VIEW
*&---------------------------------------------------------------------*
*& Form PROGRESS_BAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_1177 text
* -->P_SY_TABIX text
* -->P_AUFK_LINES text
*----------------------------------------------------------------------*
FORM PROGRESS_BAR USING P_VALUE
P_SY-TABIX
P_NLINES.
DATA: W_TEXT(40),
W_PERCENTAGE TYPE P,
W_PERCENT_CHAR(3).
W_PERCENTAGE = ( P_SY-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 need to re-display same percentage anyway)
IF W_PERCENTAGE GT GD_PERCENT OR P_SY-TABIX EQ 1.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = W_PERCENTAGE
TEXT = W_TEXT.
GD_PERCENT = W_PERCENTAGE.
ENDIF.
ENDFORM. " PROGRESS_BAR