REPORT ZPPWCE001 NO STANDARD PAGE HEADING LINE-SIZE 255 MESSAGE-ID MG.
*----------------------------------------------------------------------*
* Program : ZPPWCE001 *
* Author : Patrick,Song *
* Date : Aug 26, 2008 *
* Code type : conversion *
* Version : new creation *
* (interface/conversion/on-line transaction/report) *
* *
*----------------------------------------------------------------------*
* Error handling : *
*----------------------------------------------------------------------*
* 1. *
* *
*----------------------------------------------------------------------*
* Change log : *
*----------------------------------------------------------------------*
* CR# : *
* Corr. no. : *
* Date : *
* Author : *
* Change : *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* include program & subrouting *
*----------------------------------------------------------------------*
INCLUDE : ZBCDWI000 .
TYPE-POOLS: KCDE.
*----------------------------------------------------------------------*
* table declaration
*----------------------------------------------------------------------*
TABLES: CSKS,
CRHD,
TFACD.
*----------------------------------------------------------------------*
* selection screen definition *
*----------------------------------------------------------------------*
* Input file information block B1
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-TB1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: P_CRT RADIOBUTTON GROUP GRP DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(20) TEXT-S13 FOR FIELD P_CRT.
SELECTION-SCREEN POSITION 45.
PARAMETER: P_CHG RADIOBUTTON GROUP GRP .
SELECTION-SCREEN COMMENT 48(20) TEXT-S15 FOR FIELD P_CHG.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: P_KOSTL AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(20) TEXT-S14 FOR FIELD P_KOSTL.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
PARAMETER: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY .
*----------------------------------------------------------------------*
* Internal tables and field strings *
*----------------------------------------------------------------------*
*-* to store uploaded data
*----------------------------------------------------------------------*
* Global program variables *
*----------------------------------------------------------------------*
* define table to store tempoary data
DATA INT_TAB TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF ITAB OCCURS 0 .
DATA: ARBPL(008). " Work Center
DATA: WERKS(004). " Plant
DATA: VERWE(004). " W/C Category
DATA: KTEXT1(040). " W/C Short Text 1
DATA: CAPIT(001). " Indicator for Intervals
DATA: BEGZT1 LIKE KAZA-BEGZT .
DATA: ENDZT1 LIKE KAZA-ENDZT.
DATA: PAUSE1 LIKE KAZA-PAUSE.
DATA: AZNOR1(003).
DATA: ENDZT2 LIKE KAZA-ENDZT.
DATA: BEGZT2 LIKE KAZA-BEGZT.
DATA: PAUSE2 LIKE KAZA-PAUSE.
DATA: AZNOR2(003).
DATA: KOSTL LIKE CSKS-KOSTL.
DATA: KTEXT2(040). " W/C Short Text 2
DATA: KTEXT3(040). " W/C Short Text 3
DATA: SELK(001) .
DATA: END OF ITAB .
DATA: S_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD_ST01',
S_STATUS_ERR TYPE SLIS_FORMNAME VALUE 'STANDARD_ER01',
S_USER_COMM TYPE SLIS_FORMNAME VALUE 'USER_COMM-ALV',
S_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
CONSTANTS: C_NODATA(001) VALUE ' '. "nodata-character
DATA: C_GROUP(012) VALUE 'ZPP_WCCRT'.
*data: c_user(012) value sy-uname .
DATA: C_KEEP(001) .
DATA: C_HOLDDATE LIKE SY-DATUM.
DATA: BEGIN OF BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA.
DATA: BEGIN OF I_ERROR OCCURS 0 .
DATA: ARBPL(008). " Work Center
DATA: WERKS(004). " Plant
DATA: VERWE(004). " W/C Category
DATA: KTEXT1(040). " W/C Short Text 1
DATA: CAPIT(001). " Indicator for Intervals
DATA: BEGZT1 LIKE KAZA-BEGZT .
DATA: ENDZT1 LIKE KAZA-ENDZT.
DATA: PAUSE1 LIKE KAZA-PAUSE.
DATA: AZNOR1(003).
DATA: KOSTL LIKE CSKS-KOSTL.
DATA: FIELD(020) .
DATA: VALUE(020).
DATA: ERROR(040).
DATA: SELK(001).
DATA: END OF I_ERROR .
DATA: L_PROCESSED(001) .
DATA: L_CHANGE(001) .
DATA: L_IDENT LIKE TFACD-IDENT .
*----------------------------------------------------------------------*
* initialization. *
*----------------------------------------------------------------------*
INITIALIZATION.
REFRESH: ITAB, INT_TAB .
CLEAR : ITAB, INT_TAB .
*----------------------------------------------------------------------*
* At Selection-screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_FILE_PATHNAME.
*----------------------------------------------------------------------*
* Start-of-selection *
*----------------------------------------------------------------------*
START-OF-SELECTION.
CLEAR: L_PROCESSED .
PERFORM READ_INPUT_FILE .
PERFORM CHECK_UPLOAD_DATA.
CLEAR: TFACD .
SELECT SINGLE * FROM TFACD WHERE IDENT IN ('TB', 'JH').
MOVE TFACD-IDENT TO L_IDENT .
IF I_ERROR[] IS INITIAL .
PERFORM PREPARE_ALV_FIELDS.
PERFORM DISPLAY_ALV_RESULT .
ELSE.
PERFORM PREPARE_ALV_ERROR .
PERFORM DISPLAY_ALV_ERROR.
ENDIF .
*----------------------------------------------------------------------*
* End-of-selection *
*----------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_FILE_PATHNAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE_PATHNAME .
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = TEXT-H10
IMPORTING
FILENAME = P_FILE
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
ENDFORM. " GET_FILE_PATHNAME
*&---------------------------------------------------------------------*
*& Form READ_INPUT_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM READ_INPUT_FILE .
** call function to get path and name if parameter is initial
IF P_FILE IS INITIAL.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_FILE.
ENDIF.
REFRESH: ITAB, INT_TAB .
CLEAR : ITAB, INT_TAB .
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 16
I_END_ROW = 9999
TABLES
INTERN = INT_TAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
SORT INT_TAB BY ROW COL.
REFRESH: ITAB.
CLEAR : ITAB .
IF P_CHG EQ 'X' .
LOOP AT INT_TAB.
AT NEW ROW.
CLEAR: ITAB.
ENDAT.
CASE INT_TAB-COL.
WHEN 1.
MOVE INT_TAB-VALUE TO ITAB-WERKS.
TRANSLATE ITAB-WERKS TO UPPER CASE.
WHEN 2.
MOVE INT_TAB-VALUE TO ITAB-ARBPL.
TRANSLATE ITAB-ARBPL TO UPPER CASE.
WHEN 3.
MOVE INT_TAB-VALUE TO ITAB-KOSTL.
TRANSLATE ITAB-KOSTL TO UPPER CASE.
ENDCASE.
AT END OF ROW.
APPEND ITAB.
CLEAR ITAB.
ENDAT.
ENDLOOP.
ELSE .
LOOP AT INT_TAB.
AT NEW ROW.
CLEAR: ITAB.
ENDAT.
CASE INT_TAB-COL.
WHEN 1.
MOVE INT_TAB-VALUE TO ITAB-WERKS.
TRANSLATE ITAB-WERKS TO UPPER CASE.
WHEN 2.
MOVE INT_TAB-VALUE TO ITAB-ARBPL.
TRANSLATE ITAB-ARBPL TO UPPER CASE.
WHEN 3.
MOVE INT_TAB-VALUE TO ITAB-VERWE.
WHEN 4.
MOVE INT_TAB-VALUE TO ITAB-KTEXT1.
TRANSLATE ITAB-KTEXT1 TO UPPER CASE.
WHEN 5.
MOVE INT_TAB-VALUE TO ITAB-CAPIT.
TRANSLATE ITAB-CAPIT TO UPPER CASE.
WHEN 6.
MOVE INT_TAB-VALUE TO ITAB-BEGZT1.
WHEN 7.
MOVE INT_TAB-VALUE TO ITAB-ENDZT1.
WHEN 8.
MOVE INT_TAB-VALUE TO ITAB-PAUSE1.
WHEN 9.
MOVE INT_TAB-VALUE TO ITAB-AZNOR1.
WHEN 10.
MOVE INT_TAB-VALUE TO ITAB-BEGZT2.
WHEN 11.
MOVE INT_TAB-VALUE TO ITAB-ENDZT2.
WHEN 12.
MOVE INT_TAB-VALUE TO ITAB-PAUSE2.
WHEN 13.
MOVE INT_TAB-VALUE TO ITAB-AZNOR2.
WHEN 14.
MOVE INT_TAB-VALUE TO ITAB-KOSTL.
TRANSLATE ITAB-KOSTL TO UPPER CASE.
WHEN 15.
MOVE INT_TAB-VALUE TO ITAB-KTEXT2.
TRANSLATE ITAB-KTEXT2 TO UPPER CASE.
WHEN 16.
MOVE INT_TAB-VALUE TO ITAB-KTEXT3.
TRANSLATE ITAB-KTEXT3 TO UPPER CASE.
ENDCASE.
AT END OF ROW.
APPEND ITAB.
CLEAR ITAB.
ENDAT.
ENDLOOP.
ENDIF .
ENDFORM. " READ_INPUT_FILE
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELDS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'ITAB' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'ITAB' '' TEXT-C02.
IF P_CRT EQ 'X' .
PERFORM SET_ALV_FIELDS USING 'VERWE' 'ITAB' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'KTEXT1' 'ITAB' '' TEXT-C04.
PERFORM SET_ALV_FIELDS USING 'CAPIT' 'ITAB' '' TEXT-C05.
PERFORM SET_ALV_FIELDS USING 'BEGZT1' 'ITAB' '' TEXT-C06.
PERFORM SET_ALV_FIELDS USING 'ENDZT1' 'ITAB' '' TEXT-C07.
PERFORM SET_ALV_FIELDS USING 'PAUSE1' 'ITAB' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'ANZHL1' 'ITAB' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'ENDZT2' 'ITAB' '' TEXT-C10.
PERFORM SET_ALV_FIELDS USING 'BEGZT2' 'ITAB' '' TEXT-C11.
PERFORM SET_ALV_FIELDS USING 'PAUSE2' 'ITAB' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'ANZHL2' 'ITAB' '' TEXT-C13.
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'ITAB' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'KTEXT2' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'KTEXT3' 'ITAB' '' TEXT-C16.
ELSE .
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'ITAB' '' TEXT-C14.
ENDIF .
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_RESULT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = G_ALV_LAYOUT
* i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
I_CALLBACK_PF_STATUS_SET = S_STATUS
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMMAND
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = ITAB[].
ENDFORM. " DISPLAY_ALV_RESULT
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMMAND-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
WHEN 'WCCT' .
IF P_CRT EQ 'X' AND L_PROCESSED EQ SPACE .
READ TABLE ITAB WITH KEY SELK = 'X'.
IF SY-SUBRC <> 0 .
MESSAGE E899 WITH TEXT-E02.
ELSE.
CLEAR: L_ANSWER .
PERFORM POPUP_TO_CONFIRM USING TEXT-T01 TEXT-Q01.
IF L_ANSWER = '1'.
PERFORM WORK_CENTER_CREATE .
L_PROCESSED = 'Y'.
ENDIF .
ENDIF .
ELSEIF P_CRT EQ 'X' AND L_PROCESSED NE SPACE.
MESSAGE E899 WITH TEXT-E01.
ENDIF .
IF P_CHG EQ 'X' AND L_PROCESSED EQ SPACE .
READ TABLE ITAB WITH KEY SELK = 'X'.
IF SY-SUBRC <> 0 .
MESSAGE E899 WITH TEXT-E02.
ELSE.
CLEAR: L_ANSWER .
PERFORM POPUP_TO_CONFIRM USING TEXT-T01 TEXT-Q01.
IF L_ANSWER = '1'.
PERFORM COST_CENTER_CHANGE .
L_PROCESSED = 'Y'.
ENDIF .
ENDIF .
ELSEIF P_CHG EQ 'X' AND L_PROCESSED NE SPACE.
MESSAGE E899 WITH TEXT-E01.
ENDIF.
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. "user_command-alv
*&---------------------------------------------------------------------*
*& Form STANDARD_ST01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ST01 USING EXTAB TYPE SLIS_T_EXTAB.
* contain all fcode from ALV *
DELETE EXTAB WHERE FCODE = '&RNT_PREV'.
DELETE EXTAB WHERE FCODE = '&LFO'.
DELETE EXTAB WHERE FCODE = '&NFO'.
DELETE EXTAB WHERE FCODE = '&RNT'.
SET PF-STATUS 'ALVST'.
SET TITLEBAR 'ALVST'.
ENDFORM. "standard_st01
*&---------------------------------------------------------------------*
*& Form WORK_CENTER_CREATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WORK_CENTER_CREATE .
PERFORM OPEN_GROUP.
LOOP AT ITAB WHERE SELK EQ 'X'.
IF ITAB-CAPIT EQ 'B' .
refresh: bdcdata .clear: bdcdata .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RC68A-ARBPL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=GRND'.
PERFORM BDC_FIELD USING 'RC68A-WERKS'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'RC68A-ARBPL'
ITAB-ARBPL.
PERFORM BDC_FIELD USING 'RC68A-VERWE'
ITAB-VERWE.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VORA'.
PERFORM BDC_FIELD USING 'P1000-STEXT'
ITAB-KTEXT1.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAUE'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAZA'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT'
ITAB-KTEXT2.
PERFORM BDC_FIELD USING 'KAKO-NGRAD'
'100'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'RC68K-BEGZT'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'RC68K-ENDZT'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'RC68K-PAUSE'
ITAB-PAUSE1.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-BEGZT(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KTXT'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NPOS'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NEXT'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT(02)'
ITAB-KTEXT3.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TERM'.
IF P_KOSTL EQ 'X'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VK11'.
IF ITAB-VERWE = '0001' .
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'001'.
ELSEIF ITAB-VERWE = '0003'.
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'002'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'CRKEYK-KOSTL'
ITAB-KOSTL.
PERFORM BDC_FIELD USING 'RC68A-LARXX(02)'
'DP01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(03)'
'DL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(04)'
'IL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(05)'
'PO01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(06)'
'OM01'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(02)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(03)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(04)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(05)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(06)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(02)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(03)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(04)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(05)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(06)'
'ZAP007'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_TRANSACTION USING 'CR01'.
ELSEIF ITAB-CAPIT EQ 'C' OR ITAB-CAPIT EQ 'A'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RC68A-ARBPL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=GRND'.
PERFORM BDC_FIELD USING 'RC68A-WERKS'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'RC68A-ARBPL'
ITAB-ARBPL.
PERFORM BDC_FIELD USING 'RC68A-VERWE'
ITAB-VERWE.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VORA'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'P1000-STEXT'.
PERFORM BDC_FIELD USING 'P1000-STEXT'
ITAB-KTEXT1.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAUE'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAZA'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT'
ITAB-KTEXT2.
IF ITAB-CAPIT EQ 'A'.
PERFORM BDC_FIELD USING 'KAKO-NGRAD'
'100'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'RC68K-BEGZT'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'RC68K-ENDZT'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'RC68K-PAUSE'
ITAB-PAUSE1.
ELSE.
PERFORM BDC_FIELD USING 'KAKO-VERSA'
'1'.
PERFORM BDC_FIELD USING 'KAKO-MOSID'
L_IDENT.
PERFORM BDC_FIELD USING 'KAKO-NGRAD'
'100'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-DATUV(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=INSI'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-ANZSH(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KAZA-DATUV(01)'
SY-DATUM.
PERFORM BDC_FIELD USING 'KAZA-DATUB(01)'
'9999.12.31'.
PERFORM BDC_FIELD USING 'KAZA-ANZSH(01)'
'2'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-BEGZT(08)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(02)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(03)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(04)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(05)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(06)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(07)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(08)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(09)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(02)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(03)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(04)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(05)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(06)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(07)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(08)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(09)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(02)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(03)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(04)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(05)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(06)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(07)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(08)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(09)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(02)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(03)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(04)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(05)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(06)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(07)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(08)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(09)'
ITAB-AZNOR2.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-BEGZT(08)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(01)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(02)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(03)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(04)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(01)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(02)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(03)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(04)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(01)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(02)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(03)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(04)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(01)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(02)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(03)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(04)'
ITAB-AZNOR2.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-ANZHL(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KTXT'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NPOS'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NEXT'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT(02)'
ITAB-KTEXT3.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TERM'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'P3006-FORK1(01)'.
IF P_KOSTL EQ 'X'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VK11'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RC68A-KAPART'.
IF ITAB-VERWE = '0003'.
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'002'.
ELSEIF ITAB-VERWE = '0001'.
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'001'.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'CRKEYK-KOSTL'
ITAB-KOSTL.
PERFORM BDC_FIELD USING 'RC68A-LARXX(02)'
'DP01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(03)'
'DL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(04)'
'IL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(05)'
'PO01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(06)'
'OM01'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(02)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(03)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(04)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(05)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(06)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(02)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(03)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(04)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(05)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(06)'
'ZAP007'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_TRANSACTION USING 'CR01'.
ENDIF .
ENDLOOP .
PERFORM CLOSE_GROUP.
PERFORM BATCH_INPUT_SESSION_SUBMIT. " submit process to backgound .
ENDFORM. " WORK_CENTER_CREATE
*&---------------------------------------------------------------------*
*& Form BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_INPUT_SESSION_SUBMIT .
* Run BDC session automatically instead execute in SM35.
SUBMIT RSBDCSUB AND RETURN
WITH USER = SY-UNAME
WITH MAPPE = C_GROUP
WITH VON = SY-DATUM
WITH BIS = SY-DATUM
WITH Z_VERARB = 'X'
WITH FEHLER = ''.
ENDFORM. " BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> C_NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TCODE text
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: SMALLLOG(001) .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDCDATA.
IF SMALLLOG <> 'X'.
WRITE: /(25) 'BDC_INSERT'(I03),
TCODE,
(12) 'returncode:'(I05),
SY-SUBRC,
'RECORD:',
SY-INDEX.
ENDIF.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form CLOSE_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CLOSE_GROUP.
* close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "CLOSE_GROUP
*&---------------------------------------------------------------------*
*& Form OPEN_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM OPEN_GROUP.
SKIP.
WRITE: /(20) 'Create group'(I01), C_GROUP.
SKIP.
* open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = C_GROUP
* user = c_user
USER = SY-UNAME
KEEP = C_KEEP
HOLDDATE = C_HOLDDATE.
WRITE: /(30) 'BDC_OPEN_GROUP'(I02),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "OPEN_GROUP
*&---------------------------------------------------------------------*
*& Form CHECK_UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_UPLOAD_DATA .
REFRESH: I_ERROR .
CLEAR : I_ERROR .
LOOP AT ITAB .
IF P_CRT EQ 'X' .
CLEAR: CRHD.
SELECT SINGLE * FROM CRHD WHERE ARBPL = ITAB-ARBPL
AND WERKS = ITAB-WERKS .
IF SY-SUBRC EQ 0 .
I_ERROR-FIELD = 'ITAB-ARBPL'.
I_ERROR-VALUE = ITAB-ARBPL.
I_ERROR-ERROR = TEXT-M01 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
IF P_KOSTL EQ 'X'.
CLEAR: CSKS.
SELECT SINGLE * FROM CSKS WHERE KOKRS = '1000'
AND KOSTL = ITAB-KOSTL.
IF SY-SUBRC NE 0 .
MOVE-CORRESPONDING ITAB TO I_ERROR .
I_ERROR-FIELD = 'ITAB-KOSTL'.
I_ERROR-VALUE = ITAB-KOSTL.
I_ERROR-ERROR = TEXT-M02 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
ENDIF .
ENDIF .
IF P_CHG EQ 'X' .
CLEAR: CRHD.
SELECT SINGLE * FROM CRHD WHERE ARBPL = ITAB-ARBPL
AND WERKS = ITAB-WERKS .
IF SY-SUBRC NE 0 .
MOVE-CORRESPONDING ITAB TO I_ERROR .
I_ERROR-FIELD = 'ITAB-ARBPL'.
I_ERROR-VALUE = ITAB-ARBPL.
I_ERROR-ERROR = TEXT-M03 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
CLEAR: CSKS.
SELECT SINGLE * FROM CSKS WHERE KOKRS = '1000'
AND KOSTL = ITAB-KOSTL.
IF SY-SUBRC NE 0 .
I_ERROR-FIELD = 'ITAB-KOSTL'.
I_ERROR-VALUE = ITAB-KOSTL.
I_ERROR-ERROR = TEXT-M02 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
ENDIF .
ENDLOOP .
ENDFORM. " CHECK_UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_ERROR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_ERROR .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = G_ALV_LAYOUT
* i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
I_CALLBACK_PF_STATUS_SET = S_STATUS_ERR
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMM
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = I_ERROR[].
ENDFORM. " DISPLAY_ALV_ERROR
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMM-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. "user_command-alv
*&---------------------------------------------------------------------*
*& Form STANDARD_ST01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ER01 USING EXTAB TYPE SLIS_T_EXTAB.
* contain all fcode from ALV *
DELETE EXTAB WHERE FCODE = '&RNT_PREV'.
DELETE EXTAB WHERE FCODE = '&LFO'.
DELETE EXTAB WHERE FCODE = '&NFO'.
DELETE EXTAB WHERE FCODE = '&RNT'.
SET PF-STATUS 'ALVER'.
SET TITLEBAR 'ALVER'.
ENDFORM. "STANDARD_ER01
*&---------------------------------------------------------------------*
*& Form COST_CENTER_CHANGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM COST_CENTER_CHANGE .
PERFORM OPEN_GROUP .
LOOP AT ITAB WHERE SELK EQ 'X'.
refresh: bdcdata . clear: bdcdata .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VK11'.
PERFORM BDC_FIELD USING 'RC68A-WERKS'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'RC68A-ARBPL'
ITAB-ARBPL.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'CRKEYK-KOSTL'
ITAB-KOSTL.
PERFORM BDC_FIELD USING 'RC68A-LARXX(02)'
'DP01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(03)'
'DL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(04)'
'IL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(05)'
'PO01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(06)'
'OM01'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(02)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(03)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(04)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(05)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(06)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(02)'
'zap006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(03)'
'zap007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(04)'
'zap007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(05)'
'zap006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(06)'
'zap007'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_TRANSACTION USING 'CR02'.
ENDLOOP .
PERFORM CLOSE_GROUP.
PERFORM BATCH_INPUT_SESSION_SUBMIT. " submit process to backgound .
ENDFORM. " COST_CENTER_CHANGE
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_ERROR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_ERROR .
CLEAR : G_ALV_FIELDCAT .
IF P_CHG EQ 'X'.
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'I_ERROR' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'I_ERROR' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'I_ERROR' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'FIELD' 'I_ERROR' '' TEXT-A01.
PERFORM SET_ALV_FIELDS USING 'VALUE' 'I_ERROR' '' TEXT-A02.
PERFORM SET_ALV_FIELDS USING 'ERROR' 'I_ERROR' '' TEXT-A03.
ELSE .
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'I_ERROR' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'I_ERROR' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'VERWE' 'I_ERROR' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'KTEXT1' 'I_ERROR' '' TEXT-C04.
PERFORM SET_ALV_FIELDS USING 'CAPIT' 'I_ERROR' '' TEXT-C05.
PERFORM SET_ALV_FIELDS USING 'BEGZT1' 'I_ERROR' '' TEXT-C06.
PERFORM SET_ALV_FIELDS USING 'ENDZT1' 'I_ERROR' '' TEXT-C07.
PERFORM SET_ALV_FIELDS USING 'PAUSE1' 'I_ERROR' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'ANZHL1' 'I_ERROR' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'I_ERROR' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'FIELD' 'I_ERROR' '' TEXT-A01.
PERFORM SET_ALV_FIELDS USING 'VALUE' 'I_ERROR' '' TEXT-A02.
PERFORM SET_ALV_FIELDS USING 'ERROR' 'I_ERROR' '' TEXT-A03.
ENDIF .
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_ERROR
*----------------------------------------------------------------------*
* Program : ZPPWCE001 *
* Author : Patrick,Song *
* Date : Aug 26, 2008 *
* Code type : conversion *
* Version : new creation *
* (interface/conversion/on-line transaction/report) *
* *
*----------------------------------------------------------------------*
* Error handling : *
*----------------------------------------------------------------------*
* 1. *
* *
*----------------------------------------------------------------------*
* Change log : *
*----------------------------------------------------------------------*
* CR# : *
* Corr. no. : *
* Date : *
* Author : *
* Change : *
* *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* include program & subrouting *
*----------------------------------------------------------------------*
INCLUDE : ZBCDWI000 .
TYPE-POOLS: KCDE.
*----------------------------------------------------------------------*
* table declaration
*----------------------------------------------------------------------*
TABLES: CSKS,
CRHD,
TFACD.
*----------------------------------------------------------------------*
* selection screen definition *
*----------------------------------------------------------------------*
* Input file information block B1
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-TB1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: P_CRT RADIOBUTTON GROUP GRP DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(20) TEXT-S13 FOR FIELD P_CRT.
SELECTION-SCREEN POSITION 45.
PARAMETER: P_CHG RADIOBUTTON GROUP GRP .
SELECTION-SCREEN COMMENT 48(20) TEXT-S15 FOR FIELD P_CHG.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: P_KOSTL AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(20) TEXT-S14 FOR FIELD P_KOSTL.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
PARAMETER: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY .
*----------------------------------------------------------------------*
* Internal tables and field strings *
*----------------------------------------------------------------------*
*-* to store uploaded data
*----------------------------------------------------------------------*
* Global program variables *
*----------------------------------------------------------------------*
* define table to store tempoary data
DATA INT_TAB TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF ITAB OCCURS 0 .
DATA: ARBPL(008). " Work Center
DATA: WERKS(004). " Plant
DATA: VERWE(004). " W/C Category
DATA: KTEXT1(040). " W/C Short Text 1
DATA: CAPIT(001). " Indicator for Intervals
DATA: BEGZT1 LIKE KAZA-BEGZT .
DATA: ENDZT1 LIKE KAZA-ENDZT.
DATA: PAUSE1 LIKE KAZA-PAUSE.
DATA: AZNOR1(003).
DATA: ENDZT2 LIKE KAZA-ENDZT.
DATA: BEGZT2 LIKE KAZA-BEGZT.
DATA: PAUSE2 LIKE KAZA-PAUSE.
DATA: AZNOR2(003).
DATA: KOSTL LIKE CSKS-KOSTL.
DATA: KTEXT2(040). " W/C Short Text 2
DATA: KTEXT3(040). " W/C Short Text 3
DATA: SELK(001) .
DATA: END OF ITAB .
DATA: S_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD_ST01',
S_STATUS_ERR TYPE SLIS_FORMNAME VALUE 'STANDARD_ER01',
S_USER_COMM TYPE SLIS_FORMNAME VALUE 'USER_COMM-ALV',
S_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
CONSTANTS: C_NODATA(001) VALUE ' '. "nodata-character
DATA: C_GROUP(012) VALUE 'ZPP_WCCRT'.
*data: c_user(012) value sy-uname .
DATA: C_KEEP(001) .
DATA: C_HOLDDATE LIKE SY-DATUM.
DATA: BEGIN OF BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA.
DATA: BEGIN OF I_ERROR OCCURS 0 .
DATA: ARBPL(008). " Work Center
DATA: WERKS(004). " Plant
DATA: VERWE(004). " W/C Category
DATA: KTEXT1(040). " W/C Short Text 1
DATA: CAPIT(001). " Indicator for Intervals
DATA: BEGZT1 LIKE KAZA-BEGZT .
DATA: ENDZT1 LIKE KAZA-ENDZT.
DATA: PAUSE1 LIKE KAZA-PAUSE.
DATA: AZNOR1(003).
DATA: KOSTL LIKE CSKS-KOSTL.
DATA: FIELD(020) .
DATA: VALUE(020).
DATA: ERROR(040).
DATA: SELK(001).
DATA: END OF I_ERROR .
DATA: L_PROCESSED(001) .
DATA: L_CHANGE(001) .
DATA: L_IDENT LIKE TFACD-IDENT .
*----------------------------------------------------------------------*
* initialization. *
*----------------------------------------------------------------------*
INITIALIZATION.
REFRESH: ITAB, INT_TAB .
CLEAR : ITAB, INT_TAB .
*----------------------------------------------------------------------*
* At Selection-screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_FILE_PATHNAME.
*----------------------------------------------------------------------*
* Start-of-selection *
*----------------------------------------------------------------------*
START-OF-SELECTION.
CLEAR: L_PROCESSED .
PERFORM READ_INPUT_FILE .
PERFORM CHECK_UPLOAD_DATA.
CLEAR: TFACD .
SELECT SINGLE * FROM TFACD WHERE IDENT IN ('TB', 'JH').
MOVE TFACD-IDENT TO L_IDENT .
IF I_ERROR[] IS INITIAL .
PERFORM PREPARE_ALV_FIELDS.
PERFORM DISPLAY_ALV_RESULT .
ELSE.
PERFORM PREPARE_ALV_ERROR .
PERFORM DISPLAY_ALV_ERROR.
ENDIF .
*----------------------------------------------------------------------*
* End-of-selection *
*----------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_FILE_PATHNAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE_PATHNAME .
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = TEXT-H10
IMPORTING
FILENAME = P_FILE
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
ENDFORM. " GET_FILE_PATHNAME
*&---------------------------------------------------------------------*
*& Form READ_INPUT_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM READ_INPUT_FILE .
** call function to get path and name if parameter is initial
IF P_FILE IS INITIAL.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_FILE.
ENDIF.
REFRESH: ITAB, INT_TAB .
CLEAR : ITAB, INT_TAB .
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 16
I_END_ROW = 9999
TABLES
INTERN = INT_TAB
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
SORT INT_TAB BY ROW COL.
REFRESH: ITAB.
CLEAR : ITAB .
IF P_CHG EQ 'X' .
LOOP AT INT_TAB.
AT NEW ROW.
CLEAR: ITAB.
ENDAT.
CASE INT_TAB-COL.
WHEN 1.
MOVE INT_TAB-VALUE TO ITAB-WERKS.
TRANSLATE ITAB-WERKS TO UPPER CASE.
WHEN 2.
MOVE INT_TAB-VALUE TO ITAB-ARBPL.
TRANSLATE ITAB-ARBPL TO UPPER CASE.
WHEN 3.
MOVE INT_TAB-VALUE TO ITAB-KOSTL.
TRANSLATE ITAB-KOSTL TO UPPER CASE.
ENDCASE.
AT END OF ROW.
APPEND ITAB.
CLEAR ITAB.
ENDAT.
ENDLOOP.
ELSE .
LOOP AT INT_TAB.
AT NEW ROW.
CLEAR: ITAB.
ENDAT.
CASE INT_TAB-COL.
WHEN 1.
MOVE INT_TAB-VALUE TO ITAB-WERKS.
TRANSLATE ITAB-WERKS TO UPPER CASE.
WHEN 2.
MOVE INT_TAB-VALUE TO ITAB-ARBPL.
TRANSLATE ITAB-ARBPL TO UPPER CASE.
WHEN 3.
MOVE INT_TAB-VALUE TO ITAB-VERWE.
WHEN 4.
MOVE INT_TAB-VALUE TO ITAB-KTEXT1.
TRANSLATE ITAB-KTEXT1 TO UPPER CASE.
WHEN 5.
MOVE INT_TAB-VALUE TO ITAB-CAPIT.
TRANSLATE ITAB-CAPIT TO UPPER CASE.
WHEN 6.
MOVE INT_TAB-VALUE TO ITAB-BEGZT1.
WHEN 7.
MOVE INT_TAB-VALUE TO ITAB-ENDZT1.
WHEN 8.
MOVE INT_TAB-VALUE TO ITAB-PAUSE1.
WHEN 9.
MOVE INT_TAB-VALUE TO ITAB-AZNOR1.
WHEN 10.
MOVE INT_TAB-VALUE TO ITAB-BEGZT2.
WHEN 11.
MOVE INT_TAB-VALUE TO ITAB-ENDZT2.
WHEN 12.
MOVE INT_TAB-VALUE TO ITAB-PAUSE2.
WHEN 13.
MOVE INT_TAB-VALUE TO ITAB-AZNOR2.
WHEN 14.
MOVE INT_TAB-VALUE TO ITAB-KOSTL.
TRANSLATE ITAB-KOSTL TO UPPER CASE.
WHEN 15.
MOVE INT_TAB-VALUE TO ITAB-KTEXT2.
TRANSLATE ITAB-KTEXT2 TO UPPER CASE.
WHEN 16.
MOVE INT_TAB-VALUE TO ITAB-KTEXT3.
TRANSLATE ITAB-KTEXT3 TO UPPER CASE.
ENDCASE.
AT END OF ROW.
APPEND ITAB.
CLEAR ITAB.
ENDAT.
ENDLOOP.
ENDIF .
ENDFORM. " READ_INPUT_FILE
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELDS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'ITAB' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'ITAB' '' TEXT-C02.
IF P_CRT EQ 'X' .
PERFORM SET_ALV_FIELDS USING 'VERWE' 'ITAB' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'KTEXT1' 'ITAB' '' TEXT-C04.
PERFORM SET_ALV_FIELDS USING 'CAPIT' 'ITAB' '' TEXT-C05.
PERFORM SET_ALV_FIELDS USING 'BEGZT1' 'ITAB' '' TEXT-C06.
PERFORM SET_ALV_FIELDS USING 'ENDZT1' 'ITAB' '' TEXT-C07.
PERFORM SET_ALV_FIELDS USING 'PAUSE1' 'ITAB' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'ANZHL1' 'ITAB' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'ENDZT2' 'ITAB' '' TEXT-C10.
PERFORM SET_ALV_FIELDS USING 'BEGZT2' 'ITAB' '' TEXT-C11.
PERFORM SET_ALV_FIELDS USING 'PAUSE2' 'ITAB' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'ANZHL2' 'ITAB' '' TEXT-C13.
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'ITAB' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'KTEXT2' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'KTEXT3' 'ITAB' '' TEXT-C16.
ELSE .
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'ITAB' '' TEXT-C14.
ENDIF .
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_RESULT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = G_ALV_LAYOUT
* i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
I_CALLBACK_PF_STATUS_SET = S_STATUS
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMMAND
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = ITAB[].
ENDFORM. " DISPLAY_ALV_RESULT
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMMAND-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
WHEN 'WCCT' .
IF P_CRT EQ 'X' AND L_PROCESSED EQ SPACE .
READ TABLE ITAB WITH KEY SELK = 'X'.
IF SY-SUBRC <> 0 .
MESSAGE E899 WITH TEXT-E02.
ELSE.
CLEAR: L_ANSWER .
PERFORM POPUP_TO_CONFIRM USING TEXT-T01 TEXT-Q01.
IF L_ANSWER = '1'.
PERFORM WORK_CENTER_CREATE .
L_PROCESSED = 'Y'.
ENDIF .
ENDIF .
ELSEIF P_CRT EQ 'X' AND L_PROCESSED NE SPACE.
MESSAGE E899 WITH TEXT-E01.
ENDIF .
IF P_CHG EQ 'X' AND L_PROCESSED EQ SPACE .
READ TABLE ITAB WITH KEY SELK = 'X'.
IF SY-SUBRC <> 0 .
MESSAGE E899 WITH TEXT-E02.
ELSE.
CLEAR: L_ANSWER .
PERFORM POPUP_TO_CONFIRM USING TEXT-T01 TEXT-Q01.
IF L_ANSWER = '1'.
PERFORM COST_CENTER_CHANGE .
L_PROCESSED = 'Y'.
ENDIF .
ENDIF .
ELSEIF P_CHG EQ 'X' AND L_PROCESSED NE SPACE.
MESSAGE E899 WITH TEXT-E01.
ENDIF.
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. "user_command-alv
*&---------------------------------------------------------------------*
*& Form STANDARD_ST01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ST01 USING EXTAB TYPE SLIS_T_EXTAB.
* contain all fcode from ALV *
DELETE EXTAB WHERE FCODE = '&RNT_PREV'.
DELETE EXTAB WHERE FCODE = '&LFO'.
DELETE EXTAB WHERE FCODE = '&NFO'.
DELETE EXTAB WHERE FCODE = '&RNT'.
SET PF-STATUS 'ALVST'.
SET TITLEBAR 'ALVST'.
ENDFORM. "standard_st01
*&---------------------------------------------------------------------*
*& Form WORK_CENTER_CREATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM WORK_CENTER_CREATE .
PERFORM OPEN_GROUP.
LOOP AT ITAB WHERE SELK EQ 'X'.
IF ITAB-CAPIT EQ 'B' .
refresh: bdcdata .clear: bdcdata .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RC68A-ARBPL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=GRND'.
PERFORM BDC_FIELD USING 'RC68A-WERKS'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'RC68A-ARBPL'
ITAB-ARBPL.
PERFORM BDC_FIELD USING 'RC68A-VERWE'
ITAB-VERWE.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VORA'.
PERFORM BDC_FIELD USING 'P1000-STEXT'
ITAB-KTEXT1.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAUE'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAZA'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT'
ITAB-KTEXT2.
PERFORM BDC_FIELD USING 'KAKO-NGRAD'
'100'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'RC68K-BEGZT'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'RC68K-ENDZT'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'RC68K-PAUSE'
ITAB-PAUSE1.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-BEGZT(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KTXT'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NPOS'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NEXT'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT(02)'
ITAB-KTEXT3.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TERM'.
IF P_KOSTL EQ 'X'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VK11'.
IF ITAB-VERWE = '0001' .
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'001'.
ELSEIF ITAB-VERWE = '0003'.
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'002'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'CRKEYK-KOSTL'
ITAB-KOSTL.
PERFORM BDC_FIELD USING 'RC68A-LARXX(02)'
'DP01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(03)'
'DL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(04)'
'IL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(05)'
'PO01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(06)'
'OM01'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(02)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(03)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(04)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(05)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(06)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(02)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(03)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(04)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(05)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(06)'
'ZAP007'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_TRANSACTION USING 'CR01'.
ELSEIF ITAB-CAPIT EQ 'C' OR ITAB-CAPIT EQ 'A'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RC68A-ARBPL'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=GRND'.
PERFORM BDC_FIELD USING 'RC68A-WERKS'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'RC68A-ARBPL'
ITAB-ARBPL.
PERFORM BDC_FIELD USING 'RC68A-VERWE'
ITAB-VERWE.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VORA'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'P1000-STEXT'.
PERFORM BDC_FIELD USING 'P1000-STEXT'
ITAB-KTEXT1.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAUE'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KAZA'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT'
ITAB-KTEXT2.
IF ITAB-CAPIT EQ 'A'.
PERFORM BDC_FIELD USING 'KAKO-NGRAD'
'100'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'RC68K-BEGZT'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'RC68K-ENDZT'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'RC68K-PAUSE'
ITAB-PAUSE1.
ELSE.
PERFORM BDC_FIELD USING 'KAKO-VERSA'
'1'.
PERFORM BDC_FIELD USING 'KAKO-MOSID'
L_IDENT.
PERFORM BDC_FIELD USING 'KAKO-NGRAD'
'100'.
PERFORM BDC_FIELD USING 'KAKO-AZNOR'
ITAB-AZNOR1.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-DATUV(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=INSI'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-ANZSH(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KAZA-DATUV(01)'
SY-DATUM.
PERFORM BDC_FIELD USING 'KAZA-DATUB(01)'
'9999.12.31'.
PERFORM BDC_FIELD USING 'KAZA-ANZSH(01)'
'2'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-BEGZT(08)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(02)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(03)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(04)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(05)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(06)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(07)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(08)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(09)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(02)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(03)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(04)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(05)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(06)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(07)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(08)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(09)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(02)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(03)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(04)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(05)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(06)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(07)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(08)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(09)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(02)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(03)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(04)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(05)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(06)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(07)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(08)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(09)'
ITAB-AZNOR2.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-BEGZT(08)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(01)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(02)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(03)'
ITAB-BEGZT1.
PERFORM BDC_FIELD USING 'KAZA-BEGZT(04)'
ITAB-BEGZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(01)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(02)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(03)'
ITAB-ENDZT1.
PERFORM BDC_FIELD USING 'KAZA-ENDZT(04)'
ITAB-ENDZT2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(01)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(02)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(03)'
ITAB-PAUSE1.
PERFORM BDC_FIELD USING 'KAZA-PAUSE(04)'
ITAB-PAUSE2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(01)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(02)'
ITAB-AZNOR2.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(03)'
ITAB-AZNOR1.
PERFORM BDC_FIELD USING 'KAZA-ANZHL(04)'
ITAB-AZNOR2.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0116'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAZA-ANZHL(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KTXT'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NPOS'.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0108'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KAKT-KTEXT(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NEXT'.
PERFORM BDC_FIELD USING 'KAKT-KTEXT(02)'
ITAB-KTEXT3.
PERFORM BDC_DYNPRO USING 'SAPLCRK0' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TERM'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'P3006-FORK1(01)'.
IF P_KOSTL EQ 'X'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VK11'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RC68A-KAPART'.
IF ITAB-VERWE = '0003'.
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'002'.
ELSEIF ITAB-VERWE = '0001'.
PERFORM BDC_FIELD USING 'RC68A-KAPART'
'001'.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'CRKEYK-KOSTL'
ITAB-KOSTL.
PERFORM BDC_FIELD USING 'RC68A-LARXX(02)'
'DP01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(03)'
'DL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(04)'
'IL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(05)'
'PO01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(06)'
'OM01'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(02)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(03)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(04)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(05)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(06)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(02)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(03)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(04)'
'ZAP007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(05)'
'ZAP006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(06)'
'ZAP007'.
ENDIF .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_TRANSACTION USING 'CR01'.
ENDIF .
ENDLOOP .
PERFORM CLOSE_GROUP.
PERFORM BATCH_INPUT_SESSION_SUBMIT. " submit process to backgound .
ENDFORM. " WORK_CENTER_CREATE
*&---------------------------------------------------------------------*
*& Form BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BATCH_INPUT_SESSION_SUBMIT .
* Run BDC session automatically instead execute in SM35.
SUBMIT RSBDCSUB AND RETURN
WITH USER = SY-UNAME
WITH MAPPE = C_GROUP
WITH VON = SY-DATUM
WITH BIS = SY-DATUM
WITH Z_VERARB = 'X'
WITH FEHLER = ''.
ENDFORM. " BATCH_INPUT_SESSION_SUBMIT
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> C_NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TCODE text
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: SMALLLOG(001) .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDCDATA.
IF SMALLLOG <> 'X'.
WRITE: /(25) 'BDC_INSERT'(I03),
TCODE,
(12) 'returncode:'(I05),
SY-SUBRC,
'RECORD:',
SY-INDEX.
ENDIF.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form CLOSE_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CLOSE_GROUP.
* close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "CLOSE_GROUP
*&---------------------------------------------------------------------*
*& Form OPEN_GROUP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM OPEN_GROUP.
SKIP.
WRITE: /(20) 'Create group'(I01), C_GROUP.
SKIP.
* open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = C_GROUP
* user = c_user
USER = SY-UNAME
KEEP = C_KEEP
HOLDDATE = C_HOLDDATE.
WRITE: /(30) 'BDC_OPEN_GROUP'(I02),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "OPEN_GROUP
*&---------------------------------------------------------------------*
*& Form CHECK_UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_UPLOAD_DATA .
REFRESH: I_ERROR .
CLEAR : I_ERROR .
LOOP AT ITAB .
IF P_CRT EQ 'X' .
CLEAR: CRHD.
SELECT SINGLE * FROM CRHD WHERE ARBPL = ITAB-ARBPL
AND WERKS = ITAB-WERKS .
IF SY-SUBRC EQ 0 .
I_ERROR-FIELD = 'ITAB-ARBPL'.
I_ERROR-VALUE = ITAB-ARBPL.
I_ERROR-ERROR = TEXT-M01 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
IF P_KOSTL EQ 'X'.
CLEAR: CSKS.
SELECT SINGLE * FROM CSKS WHERE KOKRS = '1000'
AND KOSTL = ITAB-KOSTL.
IF SY-SUBRC NE 0 .
MOVE-CORRESPONDING ITAB TO I_ERROR .
I_ERROR-FIELD = 'ITAB-KOSTL'.
I_ERROR-VALUE = ITAB-KOSTL.
I_ERROR-ERROR = TEXT-M02 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
ENDIF .
ENDIF .
IF P_CHG EQ 'X' .
CLEAR: CRHD.
SELECT SINGLE * FROM CRHD WHERE ARBPL = ITAB-ARBPL
AND WERKS = ITAB-WERKS .
IF SY-SUBRC NE 0 .
MOVE-CORRESPONDING ITAB TO I_ERROR .
I_ERROR-FIELD = 'ITAB-ARBPL'.
I_ERROR-VALUE = ITAB-ARBPL.
I_ERROR-ERROR = TEXT-M03 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
CLEAR: CSKS.
SELECT SINGLE * FROM CSKS WHERE KOKRS = '1000'
AND KOSTL = ITAB-KOSTL.
IF SY-SUBRC NE 0 .
I_ERROR-FIELD = 'ITAB-KOSTL'.
I_ERROR-VALUE = ITAB-KOSTL.
I_ERROR-ERROR = TEXT-M02 .
APPEND I_ERROR .
CLEAR I_ERROR .
ENDIF .
ENDIF .
ENDLOOP .
ENDFORM. " CHECK_UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_ERROR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_ERROR .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
IS_LAYOUT = G_ALV_LAYOUT
* i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
I_CALLBACK_PF_STATUS_SET = S_STATUS_ERR
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMM
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = I_ERROR[].
ENDFORM. " DISPLAY_ALV_ERROR
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMM-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. "user_command-alv
*&---------------------------------------------------------------------*
*& Form STANDARD_ST01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ER01 USING EXTAB TYPE SLIS_T_EXTAB.
* contain all fcode from ALV *
DELETE EXTAB WHERE FCODE = '&RNT_PREV'.
DELETE EXTAB WHERE FCODE = '&LFO'.
DELETE EXTAB WHERE FCODE = '&NFO'.
DELETE EXTAB WHERE FCODE = '&RNT'.
SET PF-STATUS 'ALVER'.
SET TITLEBAR 'ALVER'.
ENDFORM. "STANDARD_ER01
*&---------------------------------------------------------------------*
*& Form COST_CENTER_CHANGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM COST_CENTER_CHANGE .
PERFORM OPEN_GROUP .
LOOP AT ITAB WHERE SELK EQ 'X'.
refresh: bdcdata . clear: bdcdata .
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=VK11'.
PERFORM BDC_FIELD USING 'RC68A-WERKS'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'RC68A-ARBPL'
ITAB-ARBPL.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'CRKEYK-KOSTL'
ITAB-KOSTL.
PERFORM BDC_FIELD USING 'RC68A-LARXX(02)'
'DP01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(03)'
'DL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(04)'
'IL01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(05)'
'PO01'.
PERFORM BDC_FIELD USING 'RC68A-LARXX(06)'
'OM01'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(02)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(03)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(04)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(05)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-LEINH(06)'
'H'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(02)'
'zap006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(03)'
'zap007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(04)'
'zap007'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(05)'
'zap006'.
PERFORM BDC_FIELD USING 'RC68A-FORXX(06)'
'zap007'.
PERFORM BDC_DYNPRO USING 'SAPLCRA0' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_TRANSACTION USING 'CR02'.
ENDLOOP .
PERFORM CLOSE_GROUP.
PERFORM BATCH_INPUT_SESSION_SUBMIT. " submit process to backgound .
ENDFORM. " COST_CENTER_CHANGE
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_ERROR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_ERROR .
CLEAR : G_ALV_FIELDCAT .
IF P_CHG EQ 'X'.
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'I_ERROR' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'I_ERROR' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'I_ERROR' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'FIELD' 'I_ERROR' '' TEXT-A01.
PERFORM SET_ALV_FIELDS USING 'VALUE' 'I_ERROR' '' TEXT-A02.
PERFORM SET_ALV_FIELDS USING 'ERROR' 'I_ERROR' '' TEXT-A03.
ELSE .
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'I_ERROR' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'I_ERROR' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'VERWE' 'I_ERROR' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'KTEXT1' 'I_ERROR' '' TEXT-C04.
PERFORM SET_ALV_FIELDS USING 'CAPIT' 'I_ERROR' '' TEXT-C05.
PERFORM SET_ALV_FIELDS USING 'BEGZT1' 'I_ERROR' '' TEXT-C06.
PERFORM SET_ALV_FIELDS USING 'ENDZT1' 'I_ERROR' '' TEXT-C07.
PERFORM SET_ALV_FIELDS USING 'PAUSE1' 'I_ERROR' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'ANZHL1' 'I_ERROR' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'KOSTL' 'I_ERROR' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'FIELD' 'I_ERROR' '' TEXT-A01.
PERFORM SET_ALV_FIELDS USING 'VALUE' 'I_ERROR' '' TEXT-A02.
PERFORM SET_ALV_FIELDS USING 'ERROR' 'I_ERROR' '' TEXT-A03.
ENDIF .
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_ERROR