ABAPのBOM EXCELによる一括導入(三)
11448 ワード
LOOP AT GT_OUTPUT INTO GS_OUTPUT.
IF GS_OUTPUT-IDNRK IS INITIAL." : ,
LIT_BOM_SUB_ITEM-STYPE = PARENT_STYPE.
LIT_BOM_SUB_ITEM-XLINE = PARENT_XLINE.
LIT_BOM_SUB_ITEM-UPOSZ = GS_OUTPUT-UPOSZ.
LIT_BOM_SUB_ITEM-EBORT = GS_OUTPUT-EBORT.
LIT_BOM_SUB_ITEM-UPMNG = GS_OUTPUT-UPMNG.
APPEND LIT_BOM_SUB_ITEM.
CONTINUE.
ENDIF.
CLEAR:LV_MSGID,LV_MSGNO,LV_MSGTY,LV_MSGV1,LV_MSGV2,LV_MSGV3,LV_MSGV4,LV_END.
*-----header
LWA_TEMP = GS_OUTPUT.
AT NEW MATNR.
READ TABLE lt_exist INTO ls_exist WITH KEY MATNR = GS_OUTPUT-MATNR.
CLEAR:LWA_BOM_HEADER,LWA_GROUP_DATA,LIT_BOM_ITEM[],LIT_BOM_SUB_ITEM[].
LWA_BOM_HEADER-STYPE = '1'.
LWA_BOM_HEADER-TCODE = 'CS01'.
LWA_BOM_HEADER-DATUV = gv_datuv.
LWA_BOM_HEADER-MATNR = LWA_TEMP-MATNR.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = LWA_BOM_HEADER-MATNR
IMPORTING
OUTPUT = LWA_BOM_HEADER-MATNR
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2.
LWA_BOM_HEADER-STLAN = LWA_TEMP-STLAN.
LWA_BOM_HEADER-WERKS = LWA_TEMP-WERKS.
LWA_BOM_HEADER-STLAL = LWA_TEMP-STLAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LWA_BOM_HEADER-STLAL
IMPORTING
OUTPUT = LWA_BOM_HEADER-STLAL.
LWA_BOM_HEADER-SELAL = '1'.
LV_FLG = 'X'.
ENDAT.
*----- ALV
IF ls_exist-FLAG = 'X'.
CHECK LV_FLG = 'X'.
MOVE-CORRESPONDING GS_OUTPUT TO GS_OUTPUT1.
GS_OUTPUT1-TYPE = 'E'.
* CONCATENATE TEXT-008 GS_OUTPUT-IDNRK INTO GS_OUTPUT1-MESSAGE.
GS_OUTPUT1-MESSAGE = TEXT-008.
GS_OUTPUT1-COLOR_ROW = 'C600'.
APPEND GS_OUTPUT1 TO GT_OUTPUT1.
CLEAR GS_OUTPUT1.
LV_FLG = ''.
CONTINUE.
ENDIF.
*-----
LIT_BOM_ITEM-XLINE = '0001'."COUNTER_XLINE.
LIT_BOM_ITEM-POSNR = GS_OUTPUT-POSNR.
LIT_BOM_ITEM-IDNRK = GS_OUTPUT-IDNRK.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = LIT_BOM_ITEM-IDNRK
IMPORTING
OUTPUT = LIT_BOM_ITEM-IDNRK
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2
.
*-----
IF GS_OUTPUT-IDNRK IS NOT INITIAL AND
GS_OUTPUT-UPOSZ IS NOT INITIAL AND
GS_OUTPUT-EBORT IS NOT INITIAL AND
GS_OUTPUT-UPMNG IS NOT INITIAL.
LIT_BOM_ITEM-UPSKZ = 'X'.
ELSE.
LIT_BOM_ITEM-UPSKZ = ' '.
ENDIF.
LIT_BOM_ITEM-MENGE = GS_OUTPUT-MENGE.
LIT_BOM_ITEM-SANKA = GS_OUTPUT-SANKA.
LIT_BOM_ITEM-POSTP = GS_OUTPUT-POSTP.
LIT_BOM_ITEM-POTX1 = GS_OUTPUT-POTX1." :
LIT_BOM_ITEM-POTX2 = GS_OUTPUT-POTX2." :
LIT_BOM_ITEM-SORTF = GS_OUTPUT-SORTP." :
LIT_BOM_ITEM-STYPE = LWA_BOM_HEADER-STYPE." :
PARENT_STYPE = LIT_BOM_ITEM-STYPE." :
PARENT_XLINE = COUNTER_XLINE."LIT_BOM_ITEM-XLINE." :
COUNTER_XLINE = COUNTER_XLINE + 1.
IF GS_OUTPUT-UPOSZ IS NOT INITIAL AND
GS_OUTPUT-EBORT IS NOT INITIAL AND
GS_OUTPUT-UPMNG IS NOT INITIAL.
CLEAR LIT_BOM_SUB_ITEM.
LIT_BOM_SUB_ITEM-STYPE = PARENT_STYPE.
LIT_BOM_SUB_ITEM-XLINE = PARENT_XLINE.
LIT_BOM_SUB_ITEM-UPOSZ = GS_OUTPUT-UPOSZ.
LIT_BOM_SUB_ITEM-EBORT = GS_OUTPUT-EBORT.
LIT_BOM_SUB_ITEM-UPMNG = GS_OUTPUT-UPMNG.
APPEND LIT_BOM_SUB_ITEM.
ENDIF.
APPEND LIT_BOM_ITEM.
*----- header ALV
AT END OF MATNR.
LV_END = 'X'.
ENDAT.
IF LV_END = 'X'.
READ TABLE LIT_MAST WITH KEY MATNR = LWA_BOM_HEADER-MATNR
WERKS = LWA_BOM_HEADER-WERKS
STLAN = LWA_BOM_HEADER-STLAN
STLAL = LWA_BOM_HEADER-STLAL.
IF SY-SUBRC = 0.
CALL FUNCTION 'CSAP_MAT_BOM_DELETE'
EXPORTING
MATERIAL = LWA_BOM_HEADER-MATNR
PLANT = LWA_BOM_HEADER-WERKS
BOM_USAGE = LWA_BOM_HEADER-STLAN
ALTERNATIVE = LWA_BOM_HEADER-STLAL
* VALID_FROM =
* CHANGE_NO =
* REVISION_LEVEL =
* FL_NO_CHANGE_DOC = ' '
FL_COMMIT_AND_WAIT = 'X'
* IMPORTING
* FL_WARNING =
EXCEPTIONS
ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MOVE-CORRESPONDING GS_OUTPUT TO GS_OUTPUT1.
GS_OUTPUT1-TYPE = 'E'.
CONCATENATE TEXT-009 GS_OUTPUT-IDNRK INTO GS_OUTPUT1-MESSAGE.
GS_OUTPUT1-COLOR_ROW = 'C600'.
APPEND GS_OUTPUT1 TO GT_OUTPUT1.
CLEAR GS_OUTPUT1.
ENDIF.
ENDIF.
CALL FUNCTION 'ZCS_BI_BOM_CREATE_BATCH_INPUT1'
EXPORTING
BDC_FLAG = ' '
BOM_HEADER = LWA_BOM_HEADER
CLOSE_GROUP = ' '
COMMIT_WORK = ' '
GROUP_DATA = LWA_GROUP_DATA
NEW_GROUP = ' '
TCODE_MODE = 'N'
TCODE_UPDATE = 'S'
IMPORTING
MSGID = LV_MSGID
MSGNO = LV_MSGNO
MSGTY = LV_MSGTY
MSGV1 = LV_MSGV1
MSGV2 = LV_MSGV2
MSGV3 = LV_MSGV3
MSGV4 = LV_MSGV4
TABLES
BOM_ITEM = LIT_BOM_ITEM[]
BOM_SUB_ITEM = LIT_BOM_SUB_ITEM[].
MOVE-CORRESPONDING GS_OUTPUT TO GS_OUTPUT1.
MESSAGE ID LV_MSGID TYPE LV_MSGTY NUMBER LV_MSGNO
WITH LV_MSGV1 LV_MSGV2 LV_MSGV3 LV_MSGV4
INTO GS_OUTPUT1-MESSAGE.
GS_OUTPUT1-TYPE = LV_MSGTY.
IF LV_MSGTY = 'E'.
GS_OUTPUT1-COLOR_ROW = 'C600'.
ENDIF.
APPEND GS_OUTPUT1 TO GT_OUTPUT1. "#EC *
CLEAR GS_OUTPUT1.
ENDIF.
ENDLOOP.
ENDFORM. " FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form FRM_OUTLOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_OUTLOG .
GWA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'."
GWA_LAYOUT-ZEBRA = 'X'."
GWA_LAYOUT-INFO_FIELDNAME = 'COLOR_ROW'."
GWA_LAYOUT-BOX_FIELDNAME = 'ZSEL'.
M_ALV_FIELDCAT:
'WERKS' '' TEXT-F01 '' '' '' '' 'X' '' , "
'MATNR' '' TEXT-F02 '' '' '' '' 'X' '' , "
'STLAN' '' TEXT-F03 '' '' '' '' 'X' '' , "BOM
'TYPE' '' TEXT-F04 '' '' '' '' 'X' '' , "
'MESSAGE' '' TEXT-F05 '' '' '' '' 'X' '' "
* 'IDNRK' '' TEXT-F06 '' '' '' '' 'X' '' , "
* 'MENGE' '' TEXT-F07 '' '' '' '' 'X' '' , "
* 'POSTP' '' TEXT-F08 '' '' '' '' 'X' '' , "
* 'POTX1' '' TEXT-F09 '' '' '' '' 'X' '' , " 1
* 'RFPNT' '' TEXT-F10 '' '' '' '' 'X' '' "
.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = GWA_LAYOUT
IT_FIELDCAT = GIT_FIELD
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_OUTPUT1
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. " FRM_OUTLOG
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_LOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_WRITE_LOG .
data: lv_filename type string,
lv_fenlei type string.
"process ( :620_ZFI009 ( )_2011.12.26_105050_ZZ0003.txt)
lv_fenlei = 'BOM '.
concatenate 'C:\' sy-MANDT '_' sy-tcode lv_fenlei '_' sy-datum+0(4) '.' sy-datum+4(2) '.' sy-datum+6(2) '_' sy-uzeit '_' sy-uname '.txt'
into lv_filename.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = lv_filename
FILETYPE = 'ASC'
* APPEND = 'X'
WRITE_FIELD_SEPARATOR = 'X'"tab
TABLES
DATA_TAB = GT_OUTPUT1
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-MSGNO with sy-MSGV1 sy-MSGV2 sy-MSGV3 sy-MSGV4.
MESSAGE I000 WITH ' , !'.
else.
MESSAGE I000 WITH ' :' lv_filename.
ENDIF.
ENDFORM. " FRM_WRITE_LOG