Tuesday, 18 February 2020
Send Popup Message BAPI- RS_SET_SELSCREEN_STATUS
REPORT Z_MSG_CLIENT.
INCLUDE ZMSGTOP.
INCLUDE ZMSGPRO.
AT SELECTION-SCREEN OUTPUT.
APPEND :
'PRIN' TO it_ucomm, "for print
'SPOS' TO it_ucomm,
'E' TO it_ucomm. "for back
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
TABLES
p_exclude = it_ucomm.
INITIALIZATION.
PERFORM BINT.
START-OF-SELECTION.
PERFORM COL_DATA.
*PERFORM DISPLAY.
Include------------
*&---------------------------------------------------------------------*
*& Include ZUSERTOP
*&---------------------------------------------------------------------*
TABLES : USR02,USR06,USER_ADDR,ZTBUSRLCS.
CONTROLS ZCTRUSER TYPE TABLEVIEW USING SCREEN '100'.
RANGES: R_BEFORE FOR BSIS-BUDAT,
R_CURRENT FOR BSIS-BUDAT.
TYPE-POOLS : slis, icon,vimty.
*Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME.
SELECT-OPTIONS: S_BNAME FOR USR02-BNAME.
PARAMETERS: r_mess(128) DEFAULT ' '."." like T100-TEXT.
*MESSAGE(128) default ' Error ! Please" logoff now ! '.
* r_det RADIOBUTTON GROUP rad1 DEFAULT 'X',
* r_sum RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK BLOCK1.
* interne Tabelle mit Auftragskopfdaten *
TYPES :
BEGIN OF ty_mod,
row TYPE i,
END OF ty_mod.
DATA :
i_mod TYPE STANDARD TABLE OF ty_mod,
i_del TYPE STANDARD TABLE OF ty_mod.
DATA: it_ucomm TYPE TABLE OF sy-ucomm.
TYPES: BEGIN OF i_usr_s,
BNAME type USER_ADDR-BNAME,
CLASS type USR02-CLASS,
UFLAG type USR02-UFLAG,
TRDAT type USR02-TRDAT,
LTIME type USR02-LTIME,
GLTGV type USR02-GLTGV,
GLTGB type USR02-GLTGB,
ERDAT type USR02-ERDAT,
VONDAT type USR06-VONDAT,
BISDAT type USR06-BISDAT,
LIC_TYPE type USR06-LIC_TYPE,
NAME_FIRST type USER_ADDR-NAME_FIRST,
NAME_LAST type USER_ADDR-NAME_LAST,
NAME_TEXTC type USER_ADDR-NAME_TEXTC,
DEPARTMENT type USER_ADDR-DEPARTMENT,
ctr_stat(15) type C,
no(1) type P,
exp(1) type C,
lockby(30) TYPE C,
END OF i_usr_s.
TYPES: BEGIN OF i_sum,
ctr_stat(15) type C,
bname type usr02-bname,
NO type P, " DECIMALS 0,
gltgb TYPE usr02-gltgb,
exp(1) TYPE C,
NOP(3) type C,
END OF i_sum.
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA: o_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
DATA: i_usr_usr2 LIKE TABLE OF usr02,
i_usr_dat type standard Table OF i_usr_s WITH HEADER LINE,
i_usr_su type standard Table OF i_sum WITH HEADER LINE,
i_usr_susu type standard Table OF i_sum WITH HEADER LINE,
i_usr_sum type standard Table OF i_sum WITH HEADER LINE,
i_usr_summ LIKE TABLE OF ZTBUSRLCS with header line.
DATA: table_n TYPE i,
table_nn TYPE i,
sy_repid_save LIKE sy-repid,
sumrec type i.
DATA : datval type sy-datum,
gstring TYPE c.
DATA : ls_exclude TYPE ui_func,
pt_exclude TYPE ui_functions,
NO TYPE STRING.
DATA: 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,
t_events TYPE slis_t_event WITH HEADER LINE,
t_event_exit TYPE slis_t_event_exit WITH HEADER LINE,
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.
DATA: BEGIN OF gt_outtab occurs 0 ."with header line.
include structure ZTBUSRLCS.
DATA: celltab type LVC_T_STYL.
DATA: END OF gt_outtab.
DATA: it_table LIKE standard table of gt_outtab WITH HEADER LINE,
t_table LIKE standard table of gt_outtab WITH HEADER LINE.
DATA: OK_CODE LIKE sy-ucomm,
save_ok like sy-ucomm,
g_container TYPE scrfname VALUE 'ZCTRUSER',
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
gs_layout TYPE lvc_s_layo,
g_max type i value 100.
DATA : user_name LIKE usr02-bname,
user_mess LIKE t100-text.
AT SELECTION-SCREEN.
*--------------------------------------------------------------------
* C L A S S E S
*--------------------------------------------------------------------
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS: handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
ENDCLASS. "lcl_event_receiver DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed.
*event is ttriggered when data is changed in the output
* PERFORM check_data USING er_data_changed
* i_usr_summ.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Include ZUSERPRO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form BINT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BINT .
DEFINE f_fldcat.
clear s_fldcat.
s_fldcat-fieldname = &1.
* s_fldcat-key = &2.
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-qfieldname = &8.
s_fldcat-no_zero = &9.
* s_fldcat-outputlen = &10.
append s_fldcat to t_fldcat.
END-OF-DEFINITION.
ENDFORM. " BINT
*&---------------------------------------------------------------------*
*& Form SUMMARY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SUMMARY .
IF NOT i_usr_dat IS INITIAL.
LOOP AT i_usr_dat .
MOVE-CORRESPONDING i_usr_dat to i_usr_su.
Append i_usr_su.
ENDLOOP.
ELSE.
STOP.
ENDIF.
SORT i_usr_su by ctr_stat.
LOOP AT i_usr_su.
AT END OF ctr_stat.
Read table i_usr_su INDEX sy-tabix.
SUM.
i_usr_sum-ctr_stat = i_usr_su-ctr_stat.
i_usr_sum-no = i_usr_su-no.
APPEND i_usr_sum.
ENDAT.
ENDLOOP.
LOOP AT i_usr_sum.
i_usr_sum-nop = i_usr_sum-no.
modify i_usr_sum.
ENDLOOP.
i_usr_sum-ctr_stat = 'TOTAL USER '.
i_usr_sum-nop = sumrec.
APPEND i_usr_sum.
* Update to Summary table
IF SY-SUBRC EQ 0.
LOOP AT i_usr_sum .
i_usr_summ-CLIENT = sy-mandt.
i_usr_summ-USERSAP = i_usr_sum-ctr_stat.
i_usr_summ-SUMOF = i_usr_sum-nop.
* i_usr_summ-SAVEDATE = SY-DATUM. " unmark this after test
append i_usr_summ.
ENDLOOP.
ENDIF.
* Update itab From Table
CLEAR i_usr_summ.
LOOP AT i_usr_summ.
SELECT SINGLE CURRLCS SAVEDATE from ZTBUSRLCS
INTO (i_usr_summ-CURRLCS,i_usr_summ-SAVEDATE)
WHERE USERSAP EQ i_usr_summ-USERSAP.
MODIFY i_usr_summ.
ENDLOOP.
ENDFORM. " SUMMARY
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form COL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM COL_DATA .
CLEAR : USR02,USR06,USER_ADDR .
SELECT usr02~bname usr02~class usr02~uflag usr02~trdat usr02~ltime
usr02~gltgv usr02~gltgb usr02~erdat
user_addr~name_first user_addr~name_last user_addr~name_textc
user_addr~department
INTO CORRESPONDING FIELDS OF TABLE i_usr_dat
FROM usr02
INNER JOIN user_addr AS user_addr ON user_addr~bname = usr02~bname
WHERE usr02~bname IN s_bname.
table_n = 0.
DESCRIBE TABLE i_usr_dat LINES table_n.
IF table_n EQ 0.
CALL FUNCTION 'C14A_POPUP_NO_HITS'.
STOP.
ENDIF.
LOOP AT i_usr_dat.
user_name = i_usr_dat-bname.
user_mess = r_mess.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = sy-mandt
USER = user_name
MESSAGE = r_mess
* MESSAGE_LEN = 0
* CUT_BLANKS = ' '
EXCEPTIONS
USER_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.
ENDLOOP.
ENDFORM. " COL_DATA
*
*&---------------------------------------------------------------------*
*& Form SWITCH_EDIT_MODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SWITCH_EDIT_MODE .
* PERFORM MODIFY_SCR.
IF grid1->is_ready_for_input( ) eq 0.
* set edit enabled cells ready for input
CALL METHOD grid1->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD GRID1->CHECK_CHANGED_DATA.
* UPDATE ZTBUSRLCS FROM TABLE i_usr_summ.
ELSE.
* lock edit enabled cells against input
CALL METHOD grid1->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
ENDFORM. " SWITCH_EDIT_MODE
*&---------------------------------------------------------------------*
*& Form SAVEMONEY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVEMONEY .
IF grid1->is_ready_for_input( ) EQ 0.
MESSAGE ' Cannot Save Data in Display Mode' TYPE 'S'.
ELSE.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'ZTBUSRLCS'
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab[].
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD Grid1->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED
EXCEPTIONS
ERROR = 1
OTHERS = 2.
CREATE OBJECT o_event_receiver.
SET HANDLER o_event_receiver->handle_data_changed FOR grid1.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid1.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'SAVING DATA'
text_question = 'Do you want save the data?'
icon_button_1 = 'icon_booking_ok'
IMPORTING
answer = gstring
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF ( gstring = '1' ).
MESSAGE ' Data Saved' TYPE 'S'.
READ TABLE i_usr_summ INDEX sy-tabix. "l_selfield-tabindex.
* Update or Save Data to Table
Delete from ZTBUSRLCS.
* IF SY-SUBRC EQ 0.
IF i_usr_summ IS NOT INITIAL.
LOOP AT gt_outtab.
gt_outtab-SAVEDATE = SY-DATUM.
ZTBUSRLCS-CLIENT = SY-MANDT.
ZTBUSRLCS-USERSAP = gt_outtab-USERSAP.
ZTBUSRLCS-SUMOF = gt_outtab-SUMOF.
ZTBUSRLCS-CURRLCS = gt_outtab-CURRLCS.
ZTBUSRLCS-SAVEDATE = gt_outtab-SAVEDATE.
MODIFY gt_outtab.
INSERT ZTBUSRLCS.
ENDLOOP.
ENDIF.
ENDIF.
CALL METHOD grid1->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
* is_variant = l2_layout
i_structure_name = 'ZTBUSRLCS'
i_save = 'A'
it_toolbar_excluding = pt_exclude
is_layout = gs_layout
CHANGING
it_fieldcatalog = gus_fieldcatalog
it_outtab = gt_outtab[].
ENDIF.
ENDFORM. " SAVEMONEY
*&---------------------------------------------------------------------*
*& Form MODIFY_SCR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_SCR .
SET PF-STATUS 'PF_PUSER'.
refresh it_ucomm.
APPEND :
'PRIN' TO it_ucomm, "for print
'E' TO it_ucomm. "for back
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
TABLES
p_exclude = it_ucomm.
ENDFORM. " MODIFY_SCR
Upload And Download Bom and Comp master Data
Sample Using BDC :
Repor Z_SD_CRT_DEL_COM .
TABLES: MARA,ZTB_BOM_UPL_LOG.
DATA ZCSAPII.
TYPE-POOLS : slis,icon,vimty,abap,truxs.
INCLUDE <icon>.
INCLUDE <symbol>.
*----------------------------------------------------------------------*
* 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: L_MSTRING(480) TYPE C.
DATA: END OF IT_MESSTAB.
DATA: E_GROUP_OPENED.
* message texts
TABLES: T100.
TYPES : BEGIN OF TY_MM01,
MATNR(018), "Material Bom
AETXT(045), "Change Number Description
DATUVC(040) ," TYPE AENR-DATUV, "Valid-From Date
POSNR TYPE POSNR ,"(040), "Line Item
OBJKT(040), "Material Component
DATUV TYPE DATUV, "Valid-From Date
AENNR TYPE AENNR,
WERKS TYPE WERKS,
STLAN TYPE STLAN,
MSGE(480),
TRF_LIGHT(1),
EXIST(1),
STATUS(40),
END OF TY_MM01.
TYPES: BEGIN OF TY_MAT,
AENNR TYPE AENR-AENNR,
AENST TYPE AENR-AENST,
DATUV TYPE AENR-DATUV,
ANDAT TYPE AENR-ANDAT,
ANNAM TYPE AENR-ANNAM,
AEDAT TYPE AENR-AEDAT,
AETXT TYPE AENR-AETXT,
FLUSE TYPE AENR-FLUSE,
AEDIF TYPE AENR-AEDIF,
STLNR TYPE STZU-STLNR,
MATNR TYPE MAST-MATNR,
AETYP TYPE AEOI-AETYP,
OBJKT TYPE AEOI-OBJKT,
USOBJ TYPE AEOI-USOBJ,
MAKTX TYPE MAKT-MAKTX,
DATUVC(12),
ANDATC(12),
END OF TY_MAT.
TYPES : BEGIN OF TY_BOM,
MATNR TYPE MAST-MATNR,
DATUV TYPE STPO-DATUV,
END OF TY_BOM.
Data: begin of t_stpo occurs 0,
matnr like mast-matnr,
werks like mast-werks,
stlan like mast-stlan,
stlnr like stpo-stlnr,
idnrk like stpo-idnrk,
posnr like stpo-posnr,
aennr like stpo-aennr,
BULK(1) type c,
mmbulk like marc-schgt,
valid_from like STKO_API02-valid_from,
error(220) type c,
end of t_stpo.
DATA : IT_MM01 TYPE TABLE OF TY_MM01,
WA_MM01 TYPE TY_MM01.
*
DATA : IT_MMC1 TYPE TABLE OF TY_MM01,
WA_MMC1 TYPE TY_MM01.
*
DATA : IT_MMXX TYPE TABLE OF TY_MM01,
WA_MMXX TYPE TY_MM01.
DATA :IT_MAT TYPE TABLE OF TY_MAT,
WA_MAT TYPE TY_MAT.
DATA :IT_BOM TYPE TABLE OF TY_BOM,
WA_BOM TYPE TY_BOM.
DATA : LV_FNAME TYPE STRING,
TABLE_N TYPE I.
DATA: t_fldcat TYPE slis_t_fieldcat_alv,
s_fldcat TYPE slis_fieldcat_alv,
t_sort TYPE slis_t_sortinfo_alv," WITH HEADER LINE,
t_fldcat2 TYPE slis_t_fieldcat_alv,
s_fldcat2 TYPE slis_fieldcat_alv,
t_sort2 TYPE slis_t_sortinfo_alv," WITH HEADER LINE,
t_fldcat3 TYPE slis_t_fieldcat_alv,
s_fldcat3 TYPE slis_fieldcat_alv,
t_sort3 TYPE slis_t_sortinfo_alv," WITH HEADER LINE,
wa_sortinfo TYPE slis_sortinfo_alv,
x_layout TYPE slis_layout_alv,
y_layout TYPE slis_layout_alv,
Z_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,
f_fldcat3 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.
DATA: IDX(2),
FNAM(20).
DATA : rs_selfield TYPE slis_selfield.
DATA: OK_CODE LIKE sy-ucomm,
save_ok like sy-ucomm,
g_container TYPE scrfname VALUE 'ZCTRUSER',
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
gs_layout TYPE lvc_s_layo,
g_max type i value 100.
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 : CNTR_NO(4) TYPE N,
LINE_NO(4) TYPE N.
DATA : vf_start_col TYPE i, "start column
vf_start_row TYPE i, "start row
vf_end_col TYPE i, "maximum column
vf_end_row TYPE i, "maximum row
p_text(20).
DATA: itabb TYPE STANDARD TABLE OF kcde_cells WITH HEADER LINE,
vf_index TYPE i.
DATA: tab type table of itab,
wa_tab like itab.
DATA:
t_stpo_read like STPO_API02 occurs 0 with header line,
t_stpo_update like STPO_API03 occurs 0 with header line,
i_stko LIKE stko_api01,
T_STKO LIKE STKO_API02 OCCURS 0 WITH HEADER LINE,
wrk_date like CSAP_MBOM-DATUV.
FIELD-SYMBOLS: <fs>.
SELECTION-SCREEN BEGIN OF BLOCK SEL1 WITH FRAME TITLE TEXT-003.
PARAMETERS : RB_UP RADIOBUTTON GROUP RB_1 DEFAULT 'X' USER-COMMAND ucom.
PARAMETERS : P_FNAME TYPE IBIPPARMS-PATH .
SELECTION-SCREEN SKIP 1.
PARAMETERS : RB_TMP RADIOBUTTON GROUP RB_1.
PARAMETER : pdirp TYPE pfeflnamel DEFAULT 'D:\',
p_psavep TYPE string DEFAULT 'Material Template.XLS'.
SELECTION-SCREEN SKIP 1.
PARAMETERS : RB_DWN RADIOBUTTON GROUP RB_1.
SELECTION-SCREEN END OF BLOCK SEL1.
AT SELECTION-SCREEN OUTPUT.
PERFORM MODIFY_SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
DATA: PATH LIKE RLGRAP-FILENAME.
PATH = 'D:\'.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = SPACE
DEF_PATH = PATH
* MASK = ',.xls , .xlsx.'
* MASK = ', .txt , .txt.'
MODE = 'O'
TITLE = 'PC-File-Selection'
IMPORTING
FILENAME = p_fname
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR 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.
pdirp = fname.
INITIALIZATION.
PERFORM BINT.
START-OF-SELECTION.
IF RB_TMP = 'X'.
SUBMIT ZDID_SD_DEL_COM_TMP WITH p_pdirp EQ pdirp
WITH psavep EQ p_psavep
AND RETURN.
STOP.
ENDIF.
IF RB_DWN = 'X'.
SUBMIT ZDID_SD_DEL_COM_DWN WITH p_pdirp EQ pdirp
WITH psavep = 'Change Component Master.XLS' via SELECTION-SCREEN
AND RETURN.
STOP.
ENDIF.
* SPLIT data Form Excel
vf_start_col = '1'.
vf_start_row = '2'.
vf_end_col = '60'.
vf_end_row = '10000'.
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' " Function to download data
" from excel
EXPORTING
filename = p_fname
i_begin_col = vf_start_col
i_begin_row = vf_start_row
i_end_col = vf_end_col
i_end_row = vf_end_row
TABLES
intern = itabb "B09
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE i454(0) WITH 'File not found'.
ENDIF.
CLEAR: itabb .
SORT itabb BY row col.
LOOP AT itabb.
MOVE : itabb-col TO vf_index.
ASSIGN COMPONENT vf_index OF STRUCTURE WA_MM01 TO <fs>.
MOVE : itabb-value TO <fs>.
AT END OF row.
APPEND WA_MM01 to IT_MM01.
CLEAR WA_MM01.
ENDAT.
ENDLOOP.
table_n = 0.
DESCRIBE TABLE IT_MM01 LINES table_n.
IF table_n EQ 0.
MESSAGE I208(00) WITH 'Different File Type'.
STOP.
ENDIF.
LOOP AT IT_MM01 INTO WA_MM01.
TRANSLATE WA_MM01-MATNR TO UPPER CASE.
TRANSLATE WA_MM01-OBJKT TO UPPER CASE.
REPLACE ALL OCCURRENCES OF '.' IN WA_MM01-DATUVC WITH SPACE.
CONCATENATE WA_MM01-DATUVC+4(4) WA_MM01-DATUVC+2(2) WA_MM01-DATUVC(2) INTO WA_MM01-DATUV.
MODIFY IT_MM01 FROM WA_MM01.
ENDLOOP.
**Check for New or exist Material
REFRESH IT_MAT.
SELECT AENR~AENNR AENR~AENST AENR~DATUV AENR~ANDAT AENR~ANNAM AENR~AEDAT AENR~AETXT AENR~FLUSE AENR~AEDIF
AEOI~AETYP AEOI~OBJKT AEOI~USOBJ AEOI~ANDAT AEOI~ANNAM
MAKT~MAKTX
INTO CORRESPONDING FIELDS OF TABLE IT_MAT
FROM AENR
INNER JOIN AEOI AS AEOI ON AEOI~AENNR EQ AENR~AENNR
INNER JOIN MAKT AS MAKT ON MAKT~MATNR EQ AEOI~OBJKT
FOR ALL ENTRIES IN IT_MM01
WHERE AENR~DATUV EQ IT_MM01-DATUV.
IF IT_MAT IS NOT INITIAL.
SORT IT_MAT BY DATUV.
SORT IT_MM01 BY DATUV.
LOOP AT IT_MM01 INTO WA_MM01.
READ TABLE IT_MAT INTO WA_MAT WITH KEY DATUV = WA_MM01-DATUV BINARY SEARCH.
IF SY-SUBRC EQ 0.
WA_MM01-EXIST = 'F'.
WA_MM01-STATUS = 'Already Have Change Number'.
ELSE.
WA_MM01-EXIST = 'N'.
WA_MM01-STATUS = 'Create Change Number'.
ENDIF.
MODIFY IT_MM01 FROM WA_MM01.
ENDLOOP.
ENDIF.
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST EQ SPACE.
WA_MM01-STATUS = 'Create Change Number'.
WA_MM01-EXIST = 'N'.
MODIFY IT_MM01 FROM WA_MM01.
ENDLOOP.
*Processing data
PERFORM FIRST_VIEW_DATA.
*----------------------------------------------------------------------*
* 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
*----------------------------------------------------------------------*
* 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
*&---------------------------------------------------------------------*
*& Form BINT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BINT .
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-qfieldname = &8.
s_fldcat-no_zero = &9.
append s_fldcat to t_fldcat.
END-OF-DEFINITION.
DEFINE f_fldcat2.
clear s_fldcat2.
s_fldcat2-fieldname = &1.
s_fldcat2-decimals_out = &2.
s_fldcat2-seltext_l = &3.
s_fldcat2-outputlen = &4.
s_fldcat2-just = &5.
s_fldcat2-no_out = &6.
s_fldcat2-datatype = &7.
s_fldcat2-qfieldname = &8.
s_fldcat2-no_zero = &9.
append s_fldcat2 to t_fldcat2.
END-OF-DEFINITION.
DEFINE f_fldcat3.
clear s_fldcat3.
s_fldcat3-fieldname = &1.
s_fldcat3-decimals_out = &2.
s_fldcat3-seltext_l = &3.
s_fldcat3-outputlen = &4.
s_fldcat3-just = &5.
s_fldcat3-no_out = &6.
s_fldcat3-datatype = &7.
s_fldcat3-qfieldname = &8.
s_fldcat3-no_zero = &9.
append s_fldcat3 to t_fldcat3.
END-OF-DEFINITION.
ENDFORM. " BINT
*&---------------------------------------------------------------------*
*& Form MODIFY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_DATA. "HERE
REFRESH IT_MAT.
SELECT AENR~AENNR AENR~AENST AENR~DATUV AENR~ANDAT AENR~ANNAM AENR~AEDAT AENR~AETXT AENR~FLUSE AENR~AEDIF
AEOI~AETYP AEOI~OBJKT AEOI~USOBJ AEOI~ANDAT AEOI~ANNAM
INTO CORRESPONDING FIELDS OF TABLE IT_MAT
FROM AENR
INNER JOIN AEOI AS AEOI ON AEOI~AENNR EQ AENR~AENNR
FOR ALL ENTRIES IN IT_MM01
WHERE AENR~DATUV EQ IT_MM01-DATUV.
IF IT_MAT IS NOT INITIAL.
SORT IT_MAT BY DATUV.
SORT IT_MM01 BY DATUV.
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST = 'N'.
READ TABLE IT_MAT INTO WA_MAT WITH KEY DATUV = WA_MM01-DATUV BINARY SEARCH.
IF SY-SUBRC EQ 0.
WA_MM01-MSGE = 'Change Number Created'.
WA_MM01-AENNR = WA_MAT-AENNR.
WA_MM01-TRF_LIGHT = '3'. "Green
ENDIF.
MODIFY IT_MM01 FROM WA_MM01.
MOVE-CORRESPONDING WA_MM01 TO WA_MMXX.
APPEND WA_MMXX TO IT_MMXX.
ENDLOOP.
* ENDIF.
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST EQ 'F'.
READ TABLE IT_MAT INTO WA_MAT WITH KEY DATUV = WA_MM01-DATUV BINARY SEARCH.
IF SY-SUBRC EQ 0.
WA_MM01-MSGE = 'Change Number Created'.
WA_MM01-AENNR = WA_MAT-AENNR.
WA_MM01-TRF_LIGHT = '3'. "Green
ENDIF.
MODIFY IT_MM01 FROM WA_MM01.
MOVE-CORRESPONDING WA_MM01 TO WA_MMXX.
APPEND WA_MMXX TO IT_MMXX.
ENDLOOP.
ENDIF.
ENDFORM. " MODIFY_DATA
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT .
* * * * 1 2 3 4 5 6 7 8 9
f_fldcat2 'AENNR' '' 'Change Number Component' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'MATNR' '' 'Material Bom' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'DATUV' '' 'Valid To' '' 'L' '' 'DATS' '' '' .
f_fldcat2 'AETXT' '' 'Change Number Description' '' 'L' '' 'CHAR' '' '' .
f_fldcat2 'OBJKT' '' 'Material Component' '' 'L' '' 'DATS' '' '' .
f_fldcat2 'MSGE' '' 'Status' '' 'L' '' 'CHAR' '' ''.
CLEAR S_FLDCAT2.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM L_BUILD_LAYOUT .
y_layout-colwidth_optimize = 'X'.
y_layout-info_fieldname = 'LINE_COLOR'.
y_layout-def_status = 'X'.
* y_layout-lights_fieldname = 'TRF_LIGHT'.
y_layout-lights_tabname = 'I_LIGHTS'.
ENDFORM. " L_BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY .
d_repid = sy-repid.
Call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = d_repid
i_callback_pf_status_set = 'STATUS_SET'
i_callback_user_command = 'USR_CMD'
it_fieldcat = t_fldcat2[]
it_sort = t_sort2[]
is_layout = y_layout
* i_default = 'X'
i_save = 'U'
* is_variant = x_variant
* it_event_exit = t_event_exit[]
* is_print = x_print
TABLES
t_outtab = IT_MMXX[]
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
*&---------------------------------------------------------------------*
*& Form f_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM STATUS_SET USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZALV'.
ENDFORM. "f_status_set
*&---------------------------------------------------------------------*
*& Form PROS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROS_DATA.
IF IT_MM01 IS NOT INITIAL.
SORT IT_MM01 BY MATNR POSNR OBJKT DATUV.
DELETE ADJACENT DUPLICATES FROM IT_MM01 COMPARING MATNR POSNR OBJKT DATUV.
*
SORT IT_MM01 BY DATUV.
LOOP AT IT_MM01 INTO WA_MM01 WHERE EXIST = 'N'.
*
perform bdc_dynpro using 'SAPMC29C' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RC29A-AENNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RAD_BUT_ECNTYP-NORM'
'X'.
perform bdc_field using 'RAD_AEFUN-OHFR'
'X'.
perform bdc_dynpro using 'SAPMC29C' '0010'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RC29A-AETXT'
WA_MM01-AETXT.
* 'Change BRCxxx'.
perform bdc_field using 'BDC_CURSOR'
'RC29A-AENST'.
perform bdc_field using 'RC29A-DATUV'
WA_MM01-DATUVC.
* '26.07.2016'.
perform bdc_field using 'RC29A-AENST'
'01'.
perform bdc_dynpro using 'SAPMC29C' '0020'.
perform bdc_field using 'BDC_OKCODE'
'=ENT1'.
perform bdc_field using 'BDC_CURSOR'
'RC29A-AEERL(01)'.
perform bdc_field using 'RC29A-AEERL(01)'
'X'.
perform bdc_dynpro using 'SAPMC29C' '0020'.
perform bdc_field using 'BDC_OKCODE'
'=ENT1'.
perform bdc_field using 'BDC_CURSOR'
'RC29A-AEERL(04)'.
perform bdc_field using 'RC29A-AEERL(04)'
'X'.
perform bdc_dynpro using 'SAPMC29C' '0020'.
perform bdc_field using 'BDC_OKCODE'
'=UEOB'.
perform bdc_field using 'BDC_CURSOR'
'RC29A-AEERL(04)'.
perform bdc_dynpro using 'SAPMC29C' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RC29A-MATNR(01)'.
perform bdc_field using 'RC29A-MATNR(01)'
WA_MM01-OBJKT.
* 'FT15LV14'.
perform bdc_dynpro using 'SAPMC29C' '2000'.
perform bdc_field using 'BDC_OKCODE'
'=FCBU'.
perform bdc_field using 'BDC_CURSOR'
'RC29A-OITXT(01)'.
perform bdc_transaction using 'CC01'.
ENDLOOP.
ENDIF.
MESSAGE ' ' TYPE 'S'.
* Process Data
IF IT_MM01 IS NOT INITIAL.
PERFORM Modify_data.
ENDIF.
SORT IT_MMXX BY AENNR DATUV.
ENDFORM. " PROS_DATA
*&---------------------------------------------------------------------*
*& Form END_VIEW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM END_VIEW_DATA . "Sini
rs_selfield-refresh = abap_true.
PERFORM build_fieldcat.
PERFORM l_build_layout.
PERFORM display.
ENDFORM. " END_VIEW_DATA
*&---------------------------------------------------------------------*
*& Form FIRST_VIEW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FIRST_VIEW_DATA .
PERFORM build_fieldcat_ist.
PERFORM l_build_layout_ist.
PERFORM display_ist.
ENDFORM. " FIRST_VIEW_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_IST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_IST.
d_repid = sy-repid.
Call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = d_repid
i_callback_pf_status_set = 'STAT_SET'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = t_fldcat[]
it_sort = t_sort[]
is_layout = x_layout
i_default = ''
i_save = ''
TABLES
t_outtab = IT_MM01[]
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_IST
*&---------------------------------------------------------------------*
*& Form L_BUILD_LAYOUT_IST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM L_BUILD_LAYOUT_IST .
x_layout-colwidth_optimize = 'X'.
x_layout-info_fieldname = 'LINE_COLOR'.
x_layout-def_status = 'X'.
ENDFORM. " L_BUILD_LAYOUT_IST
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT_IST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT_IST.
f_fldcat 'MATNR' '' 'Material Bom' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'DATUV' '' 'Valid To' '' 'L' '' 'DATS' '' '' .
f_fldcat 'AETXT' '' 'Change Number Description' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'POSNR' '' 'Line Item' '' 'L' '' 'CHAR' '' '' .
f_fldcat 'OBJKT' '' 'Material Component' '' 'L' '' 'DATS' '' '' .
f_fldcat 'STATUS' '' 'Status' '' 'L' '' 'CHAR' '' ''.
CLEAR S_FLDCAT.
ENDFORM. " BUILD_FIELDCAT_IST
*&---------------------------------------------------------------------*
*& Form f_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM stat_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZALV2'.
ENDFORM. "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 '&PRO'.
PERFORM PROS_DATA.
PERFORM END_VIEW_DATA.
WHEN '&BACK'.
LEAVE TO SCREEN 0.
WHEN '&EXIT'.
LEAVE TO SCREEN 0.
WHEN '&CNCL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->P_SELFIELD text
*----------------------------------------------------------------------*
FORM USR_CMD USING p_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&CHG'.
PERFORM PROS_CHG.
PERFORM LAST_VIEW_DATA.
WHEN '&BACK'.
SUBMIT Z_DID_SD_CRT_DEL_COM via SELECTION-SCREEN.
WHEN '&EXIT'.
LEAVE TO SCREEN 0.
WHEN '&CNCL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form MODIFY_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM MODIFY_SCREEN .
LOOP AT SCREEN.
IF RB_UP = 'X' .
IF screen-name = 'PDIRP' OR screen-name = 'P_PSAVEP'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
CLEAR : PDIRP,P_PSAVEP.
ELSEIF RB_TMP = 'X' .
IF screen-name = 'P_FNAME'.
screen-input = '0'.
P_PSAVEP = 'Change Number Master.xls'.
MODIFY SCREEN.
ENDIF.
CLEAR: P_FNAME.
ELSEIF RB_DWN = 'X'.
IF screen-name = 'P_FNAME' OR screen-name = 'PDIRP' OR screen-name = 'P_PSAVEP'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
CLEAR : PDIRP,P_PSAVEP,P_FNAME.
ELSE.
IF screen-name = 'PDIRP' OR screen-name = 'P_PSAVEP'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
CLEAR: PDIRP,P_PSAVEP,P_FNAME.
ENDIF.
ENDLOOP.
ENDFORM. " MODIFY_SCREEN
*&---------------------------------------------------------------------*
*& Form SAVE_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVE_TABLE .
SELECT MAX( CNTRL ) FROM ZTB_BOM_UPL_LOG INTO CNTR_NO.
LINE_NO = 1.
LINE_NO = LINE_NO + CNTR_NO.
LOOP AT IT_MM01 INTO WA_MM01 WHERE TRF_LIGHT NE '1'.
ZTB_BOM_UPL_LOG-CNTRL = LINE_NO.
ZTB_BOM_UPL_LOG-BLART = 'CC'. " Change Component
ZTB_BOM_UPL_LOG-MATNR = WA_MM01-MATNR.
ZTB_BOM_UPL_LOG-POSNR = WA_MM01-POSNR.
ZTB_BOM_UPL_LOG-IDNRK = WA_MM01-OBJKT.
ZTB_BOM_UPL_LOG-DATUB = WA_MM01-DATUV.
ZTB_BOM_UPL_LOG-USNAM = SY-UNAME.
ZTB_BOM_UPL_LOG-CPUDT = SY-DATUM.
LINE_NO = LINE_NO + 1.
INSERT ZTB_BOM_UPL_LOG.
ENDLOOP.
ENDFORM. " SAVE_TABLE
*&---------------------------------------------------------------------*
*& Form PROS_CHG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROS_CHG.
SORT IT_MM01 BY MATNR.
LOOP AT IT_MM01 INTO WA_MM01.
WA_MM01-WERKS = '1000'.
WA_MM01-STLAN = '5'.
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
MATERIAL = WA_MM01-MATNR
PLANT = WA_MM01-WERKS
BOM_USAGE = WA_MM01-STLAN
CHANGE_NO = WA_MM01-AENNR
TABLES
T_STPO = T_STPO_READ
T_STKO = T_STKO
EXCEPTIONS
ERROR = 1
OTHERS = 2.
LOOP AT T_STPO_READ WHERE COMPONENT = WA_MM01-OBJKT AND
ITEM_NO = WA_MM01-POSNR.
MOVE-CORRESPONDING T_STPO_READ TO T_STPO_UPDATE.
T_STPO_UPDATE-ITEM_NO = WA_MM01-POSNR. "ITEM IDENTIFICATION.
T_STPO_UPDATE-FLDELETE = 'X'.
APPEND T_STPO_UPDATE.
CLEAR T_STPO_UPDATE.
PERFORM BEGIN_OF_API USING 'CSAP_MAT_BOM_MAINTAIN'.
CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
EXPORTING
MATERIAL = WA_MM01-MATNR
PLANT = WA_MM01-WERKS
BOM_USAGE = WA_MM01-STLAN
CHANGE_NO = WA_MM01-AENNR
I_STKO = I_STKO
FL_COMMIT_AND_WAIT = 'X'
TABLES
T_STPO = T_STPO_UPDATE
EXCEPTIONS
ERROR = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
WA_MM01-TRF_LIGHT = '1'.
WA_MM01-EXIST = 'C'.
WA_MM01-MSGE = 'DisActive BOM Component Fail'.
ELSE.
WA_MM01-TRF_LIGHT = '3'.
WA_MM01-MSGE = 'DisActive BOM Component Successfull'.
ENDIF.
ENDLOOP.
IF SY-SUBRC NE 0.
WA_MM01-TRF_LIGHT = '1'.
WA_MM01-EXIST = 'C'.
WA_MM01-MSGE = 'DisActive BOM Component Fail'.
ENDIF.
MODIFY IT_MM01 FROM WA_MM01.
REFRESH T_STPO_UPDATE.
ENDLOOP.
* Save to table
PERFORM SAVE_TABLE.
SORT IT_MM01 BY AENNR.
PERFORM LAST_VIEW_DATA.
ENDFORM. " PROS_CHG
*&---------------------------------------------------------------------*
*& Form BEGIN_OF_API
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_2011 text
*----------------------------------------------------------------------*
FORM BEGIN_OF_API USING api_name..
CALL FUNCTION 'CALO_INIT_API'.
*---- initialize log
CALL FUNCTION 'STAP_INIT_SINGLE_API'
EXPORTING
api_name = api_name.
ENDFORM. " BEGIN_OF_API
*&---------------------------------------------------------------------*
*& Form LAST_VIEW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LAST_VIEW_DATA .
PERFORM build_fieldcat_Lst.
PERFORM l_build_layout_Lst.
PERFORM display_Lst.
ENDFORM. " LAST_VIEW_DATA
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT_LST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT_LST .
f_fldcat3 'AENNR' '' 'Change Number Component' '' 'L' '' 'CHAR' '' '' .
f_fldcat3 'MATNR' '' 'Material Bom' '' 'L' '' 'CHAR' '' '' .
f_fldcat3 'DATUV' '' 'Valid To' '' 'L' '' 'DATS' '' '' .
f_fldcat3 'AETXT' '' 'Change Number Description' '' 'L' '' 'CHAR' '' '' .
f_fldcat3 'OBJKT' '' 'Material Component' '' 'L' '' 'DATS' '' '' .
f_fldcat3 'MSGE' '' 'Status' '' 'L' '' 'CHAR' '' ''.
CLEAR S_FLDCAT3.
ENDFORM. " BUILD_FIELDCAT_LST
*&---------------------------------------------------------------------*
*& Form DISPLAY_LST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_LST .
d_repid = sy-repid.
Call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = d_repid
i_callback_pf_status_set = 'STATUS_ST'
i_callback_user_command = 'USER_CMD'
it_fieldcat = t_fldcat3[]
it_sort = t_sort3[]
is_layout = z_layout
i_default = ''
i_save = ''
TABLES
t_outtab = IT_MM01[]
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_LST
*&---------------------------------------------------------------------*
*& Form L_BUILD_LAYOUT_LST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM L_BUILD_LAYOUT_LST .
Z_layout-colwidth_optimize = 'X'.
Z_layout-info_fieldname = 'LINE_COLOR'.
Z_layout-def_status = 'X'.
Z_layout-lights_fieldname = 'TRF_LIGHT'.
Z_layout-lights_tabname = 'I_LIGHTS'.
ENDFORM. " L_BUILD_LAYOUT_LST
*&---------------------------------------------------------------------*
*& Form f_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM STATUS_ST USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZALV3'.
ENDFORM. "stat_set
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->P_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_CMD USING p_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&BACK'.
SUBMIT Z_DID_SD_CRT_DEL_COM via SELECTION-SCREEN.
WHEN '&EXIT'.
LEAVE TO SCREEN 0.
WHEN '&CNCL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "USER_COMMAND
Subscribe to:
Posts (Atom)
Visitor
Code Syntax Try...Endtry
Code : Report Try. Parameters NUMBER type I . data RESULT type P decimals 2 . data OREF type ref to CX_ROOT . data TEXT typ...
-
refresh it_pr . select ebkn ~ banfn ebkn ~ bnfpo ebkn ~ sakto ebkn ~ aufnr * AFVC~LTXA1 * ...
-
data : it_status type table of jstat , wa_status type jstat . *Teco Complete refresh lt_methods . clear ls_methods ...
-
Sample Code Report ZTEST. tables : mseg . type-pools : slis , icon , vimty , abap , truxs . data : begin of it_mseg occurs...