SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
*&---------------------------------------------------------------------*
*& Include ZVEN6T
*&---------------------------------------------------------------------*
TYPE-POOLS:ICON.
TABLES:SSCRFIELDS,
KOMG,
KONP.
***************定义结构
TYPES: BEGIN OF TY_ITAB,
KSCHL TYPE KSCHL, "condition type 1
VKORG TYPE KOMG-VKORG, "sales organiztion 2
VTWEG TYPE KOMG-VTWEG, "distribution channel 3
KUNNR TYPE KOMG-KUNNR, "customer 4
INCO1 TYPE KOMG-INCO1, "Incoterms 5
KDKGR TYPE KOMG-KDKGR, "Container Size 6
MATNR TYPE KOMG-MATNR, "Material 7
KBETR TYPE KONP-KBETR, "price 8
KONWA TYPE KONP-KONWA, "Currency
KPEIN TYPE KONP-KPEIN, "Price per 9
KMEIN TYPE KONP-KMEIN, "unit 10
DATAB TYPE DATAB, "valid from 11
DATBI TYPE DATBI, "valid to 12
XH TYPE I,
SEL TYPE C,
ZTYPE TYPE BAPI_MTYPE,
ZMSG TYPE BAPI_MSG,
END OF TY_ITAB.
DATA:GT_ITAB TYPE STANDARD TABLE OF TY_ITAB,
GS_ITAB TYPE TY_ITAB.
DATA: IT_DATA1 TYPE STANDARD TABLE OF ALSMEX_TABLINE WITH HEADER LINE,
IS_DATA1 TYPE ALSMEX_TABLINE.
FIELD-SYMBOLS: <WA_ITAB> TYPE ALSMEX_TABLINE.
*创建ALV必不可少的组件
TYPE-POOLS SLIS.
DATA: WS_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
WS_LAYOUT TYPE SLIS_LAYOUT_ALV,
WS_SORTFIELDS_TAB TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
WS_EVENTS TYPE SLIS_T_EVENT,
ALV_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
ALV_T_SORTINFO TYPE SLIS_T_SORTINFO_ALV.
DATA: V_REPID LIKE SY-REPID.
DATA: NN TYPE I VALUE 0.
DATA: TITLE TYPE LVC_TITLE.
DATA: ILEN TYPE I VALUE 0,
CLEN(7) TYPE C.
DATA GV_FIELD LIKE SMP_DYNTXT.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
*&---------------------------------------------------------------------*
*& Include ZUPWIPS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Include ZVEN6S
*&---------------------------------------------------------------------*
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_FNAME LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN BEGIN OF BLOCK BLK02 WITH FRAME TITLE TEXT-002 .
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_01 RADIOBUTTON GROUP GRP1 DEFAULT 'X' USER-COMMAND MI1.
SELECTION-SCREEN COMMENT (55) TEXT-S01 FOR FIELD P_01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_02 RADIOBUTTON GROUP GRP1 .
SELECTION-SCREEN COMMENT (55) TEXT-S02 FOR FIELD P_02.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_03 RADIOBUTTON GROUP GRP1 .
SELECTION-SCREEN COMMENT (55) TEXT-S03 FOR FIELD P_03.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_04 RADIOBUTTON GROUP GRP1 .
SELECTION-SCREEN COMMENT (60) TEXT-S04 FOR FIELD P_04.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLK02 .
AT SELECTION-SCREEN.
PERFORM FRM_FC_UCOMM.
INITIALIZATION.
PERFORM FRM_INIT_DATA.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
MASK = ',EXCEL FILE,*.XLS;*.XLSX;'
MODE = 'O' "S为保存,O为打开
IMPORTING
FILENAME = P_FNAME
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC NE 0 AND SY-SUBRC NE 3.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*&---------------------------------------------------------------------*
*& Form FRM_FC_UCOMM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_FC_UCOMM .
DATA: LV_UCOMM LIKE SY-UCOMM.
LV_UCOMM = SY-UCOMM.
CASE LV_UCOMM.
WHEN 'FC01'.
PERFORM FRM_DOW_DATA.
WHEN OTHERS.
ENDCASE.
ENDFORM. " FRM_FC_UCOMM
*&---------------------------------------------------------------------*
*& Form FRM_DOW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DOW_DATA .
DATA: LV_OBJID TYPE STRING VALUE 'ZVK11_NEW',
LS_OBJDATA TYPE WWWDATATAB.
DATA: LV_TITLE TYPE STRING,
LV_FILENAME TYPE STRING,
LV_DESTINATION TYPE STRING VALUE 'D:\',
LV_FILENAME_TEMP TYPE STRING,
LV_FULLPATH TYPE STRING,
LV_PATH TYPE STRING,
LV_USR_ACT TYPE I,
LV_RC LIKE SY-SUBRC,
LV_DEST TYPE RLGRAP-FILENAME.
CLEAR: LS_OBJDATA,LV_TITLE,LV_FILENAME,LV_FILENAME_TEMP,LV_FULLPATH,LV_PATH,
LV_USR_ACT,LV_RC,LV_DEST.
LV_TITLE = TEXT-T03.
data:lv_data type sy-datum.
CONCATENATE LV_FILENAME 'Uploading_Sales_Price_Template-' lv_data '-Template' INTO LV_FILENAME.
* LV_FILENAME = TEXT-T04.
"取得对应的模板,并判断是否存在
SELECT SINGLE RELID OBJID FROM WWWDATA INTO CORRESPONDING FIELDS OF LS_OBJDATA WHERE SRTF2 = 0 AND RELID = 'MI' AND OBJID = LV_OBJID.
IF SY-SUBRC NE 0 AND LS_OBJDATA-OBJID EQ SPACE.
MESSAGE TEXT-M03 TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ELSE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = LV_TITLE
DEFAULT_EXTENSION = 'XLS'
DEFAULT_FILE_NAME = LV_FILENAME
* FILE_FILTER = 'EXCEL|*.xlsx;*xls'
FILE_FILTER = 'EXCEL|*xls'
INITIAL_DIRECTORY = LV_DESTINATION
CHANGING
FILENAME = LV_FILENAME_TEMP
PATH = LV_PATH
FULLPATH = LV_FULLPATH
USER_ACTION = LV_USR_ACT.
IF SY-SUBRC = 0 AND LV_USR_ACT <> CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
LV_DEST = LV_FULLPATH.
ELSEIF LV_USR_ACT = CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
CLEAR: LV_DEST.
ENDIF.
ENDIF.
IF LV_DEST NE SPACE.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
KEY = LS_OBJDATA
DESTINATION = LV_DEST
IMPORTING
RC = LV_RC.
IF LV_RC NE 0.
MESSAGE TEXT-M04 TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDIF.
ENDFORM. " FRM_DOW_DATA
*&---------------------------------------------------------------------*
*& Form FRM_INIT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_INIT_DATA .
GV_FIELD-ICON_ID = '@48@'.
GV_FIELD-ICON_TEXT = TEXT-F01.
GV_FIELD-QUICKINFO = TEXT-F01.
SSCRFIELDS-FUNCTXT_01 = GV_FIELD.
ENDFORM. " FRM_INIT_DATA
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
*&---------------------------------------------------------------------*
*& Include ZUPWIPE
*&---------------------------------------------------------------------*
START-OF-SELECTION.
IF P_FNAME IS INITIAL.
MESSAGE S001(00) WITH 'Please enter a file location!' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
BREAK XIAOYONG.
PERFORM GET_DATA.
PERFORM START_ALV.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
*&---------------------------------------------------------------------*
*& Include ZUPWIPF
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
CHECK P_FNAME IS NOT INITIAL.
DATA:LV_LINE TYPE I.
REFRESH IT_DATA1.
DATA:GT_XT TYPE STANDARD TABLE OF ZINVCOST,
GS_XT TYPE ZINVCOST.
FIELD-SYMBOLS: <L_VALUE> TYPE ANY.
DATA:T_BEGIN_COL TYPE I,
T_END_COL TYPE I.
T_BEGIN_COL = 8.
DO 1000 TIMES.
T_END_COL = T_BEGIN_COL + 2000.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FNAME
I_BEGIN_COL = '2'
I_BEGIN_ROW = T_BEGIN_COL
I_END_COL = '14'
I_END_ROW = T_END_COL
TABLES
INTERN = IT_DATA1 "对应itab
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
* IF SY-SUBRC <> 0.
* MESSAGE S001(00) WITH 'File upload unsuccessful!' DISPLAY LIKE 'E'.
* RETURN.
* ENDIF.
T_BEGIN_COL = T_END_COL + 1.
IF IT_DATA1[] IS INITIAL.
EXIT.
ENDIF.
SORT IT_DATA1 BY ROW COL.
LOOP AT IT_DATA1 INTO IS_DATA1.
ASSIGN COMPONENT IS_DATA1-COL OF STRUCTURE GS_ITAB TO <L_VALUE>.
IF IS_DATA1-VALUE IS INITIAL.
CLEAR: IS_DATA1-VALUE.
<L_VALUE> = IS_DATA1-VALUE.
ELSE.
<L_VALUE> = IS_DATA1-VALUE.
ENDIF.
AT END OF ROW.
APPEND GS_ITAB TO GT_ITAB.
CLEAR:GS_ITAB.
ENDAT.
ENDLOOP.
LOOP AT GT_ITAB INTO GS_ITAB.
GS_ITAB-XH = SY-TABIX.
MODIFY GT_ITAB FROM GS_ITAB.
ENDLOOP.
CLEAR:IT_DATA1[].
ENDDO.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form START_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM START_ALV .
DEFINE HOUT.
NN = NN + 1.
WS_FIELDCAT-TABNAME = 'GT_ITAB'.
WS_FIELDCAT-FIELDNAME = &1.
WS_FIELDCAT-KEY = &5.
WS_FIELDCAT-SELTEXT_M = &2.
WS_FIELDCAT-COL_POS = NN.
WS_FIELDCAT-OUTPUTLEN = &3.
* ws_fieldcat-datatype = &4.
WS_FIELDCAT-DO_SUM = &4.
WS_FIELDCAT-NO_ZERO = &6.
WS_FIELDCAT-LZERO = 'X'.
APPEND WS_FIELDCAT.
CLEAR WS_FIELDCAT.
END-OF-DEFINITION.
HOUT 'XH' 'Line Items' '4' '' '' ''.
HOUT 'KSCHL' 'Condition Type' '10' '' '' ''.
HOUT 'VKORG' 'Sales Organiztion' '10' '' '' ''.
HOUT 'VTWEG' 'Distribution Channel' '10' '' '' ''.
HOUT 'KUNNR' 'Customer' '10' '' '' ''.
HOUT 'INCO1' 'Incoterms' '10' '' '' ''.
HOUT 'KDKGR' 'Container Size' '10' '' '' ''.
HOUT 'MATNR' 'Material' '10' '' '' ''.
HOUT 'KBETR' 'Price' '10' '' '' ''.
HOUT 'KONWA' 'Currency' '10' '' '' ''.
HOUT 'KPEIN' 'Price Per' '10' '' '' ''.
HOUT 'KMEIN' 'Unit' '10' '' '' ''.
HOUT 'DATAB' 'Valid From' '10' '' '' ''.
HOUT 'DATBI' 'Valid To' '10' '' '' ''.
HOUT 'ZTYPE' 'type' '10' '' '' ''.
HOUT 'ZMSG' 'Message' '20' '' '' ''.
WS_LAYOUT-ZEBRA = 'X'.
WS_LAYOUT-GET_SELINFOS = ''.
WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WS_LAYOUT-DETAIL_POPUP = 'X'.
WS_LAYOUT-NO_INPUT = ''.
WS_LAYOUT-BOX_FIELDNAME = 'SEL'.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = 'MENU_SET'
I_CALLBACK_USER_COMMAND = 'EXECUTE_COMMAND'
IS_LAYOUT = WS_LAYOUT
IT_FIELDCAT = WS_FIELDCAT[]
IT_EVENTS = WS_EVENTS[]
TABLES
T_OUTTAB = GT_ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " START_ALV
FORM MENU_SET USING RT_EXTAB TYPE SLIS_T_EXTAB..
SET PF-STATUS '100'.
ENDFORM. "menu_set
FORM EXECUTE_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA:LV_KONH TYPE KONH,
LS_KEYS TYPE KOMG,
KOMK LIKE TABLE OF KOMK WITH HEADER LINE,
KOMP LIKE TABLE OF KOMP WITH HEADER LINE,
LS_KOMV TYPE KOMV,
LT_KOMV TYPE TABLE OF KOMV.
DATA VL_MSG TYPE BAPI_MSG.
DATA:LV_VAKEY TYPE KONH-VAKEY.
BREAK XIAOYONG.
CASE R_UCOMM.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
CLEAR R_UCOMM.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'SEND'.
LOOP AT GT_ITAB INTO GS_ITAB WHERE SEL = 'X'.
CLEAR:LS_KEYS,LV_KONH.
* CONCATENATE '%' GS_ITAB-MATNR '%' INTO LV_VAKEY.
* SELECT SINGLE * INTO LV_KONH FROM KONH
* WHERE KSCHL = GS_ITAB-KSCHL
* AND VAKEY LIKE LV_VAKEY.
* IF SY-SUBRC = 0.
* ELSE.
* LV_KONH-KOTABNR = '305'.
* ENDIF.
CALL FUNCTION 'RV_CONDITION_RESET'
* EXPORTING
* FREE_MEMORY =
.
IF P_01 = 'X'.
LV_KONH-KOTABNR = '305'.
LS_KEYS-MATNR = GS_ITAB-MATNR.
LS_KEYS-VKORG = GS_ITAB-VKORG.
LS_KEYS-VTWEG = GS_ITAB-VTWEG.
LS_KEYS-KUNNR = GS_ITAB-KUNNR.
ELSEIF P_02 = 'X'.
LV_KONH-KOTABNR = '910'.
LS_KEYS-MATNR = GS_ITAB-MATNR.
LS_KEYS-VKORG = GS_ITAB-VKORG.
LS_KEYS-VTWEG = GS_ITAB-VTWEG.
LS_KEYS-INCO1 = GS_ITAB-INCO1.
LS_KEYS-KUNNR = GS_ITAB-KUNNR.
ELSEIF P_03 = 'X'.
LV_KONH-KOTABNR = '911'.
LS_KEYS-MATNR = GS_ITAB-MATNR.
LS_KEYS-VKORG = GS_ITAB-VKORG.
LS_KEYS-VTWEG = GS_ITAB-VTWEG.
LS_KEYS-KDKGR = GS_ITAB-KDKGR.
LS_KEYS-KUNNR = GS_ITAB-KUNNR.
ELSEIF P_04 = 'X'.
LV_KONH-KOTABNR = '912'.
LS_KEYS-MATNR = GS_ITAB-MATNR.
LS_KEYS-VKORG = GS_ITAB-VKORG.
LS_KEYS-VTWEG = GS_ITAB-VTWEG.
LS_KEYS-INCO1 = GS_ITAB-INCO1.
LS_KEYS-KDKGR = GS_ITAB-KDKGR.
LS_KEYS-KUNNR = GS_ITAB-KUNNR.
ENDIF.
CLEAR:LS_KOMV.
LS_KOMV-KBETR = GS_ITAB-KBETR.
LS_KOMV-WAERS = GS_ITAB-KONWA.
LS_KOMV-KPEIN = GS_ITAB-KPEIN.
LS_KOMV-KMEIN = GS_ITAB-KMEIN.
LS_KOMV-KSCHL = GS_ITAB-KSCHL.
APPEND LS_KOMV TO LT_KOMV.
CALL FUNCTION 'RV_CONDITION_COPY'
EXPORTING
APPLICATION = 'V'
CONDITION_TABLE = LV_KONH-KOTABNR
CONDITION_TYPE = GS_ITAB-KSCHL
DATE_FROM = GS_ITAB-DATAB
DATE_TO = GS_ITAB-DATBI
* ENQUEUE = ' '
* I_KOMK = ' '
* I_KOMP = ' '
KEY_FIELDS = LS_KEYS
MAINTAIN_MODE = 'A'
* NO_AUTHORITY_CHECK = ' '
* NO_FIELD_CHECK = ' '
* SELECTION_DATE = '00000000'
* KEEP_OLD_RECORDS = ' '
* MATERIAL_M =
* USED_BY_IDOC = ' '
* I_KONA =
* OVERLAP_CONFIRMED = ' '
* NO_DB_UPDATE = ' '
* USED_BY_RETAIL = ' '
* IMPORTING
* E_KOMK =
* E_KOMP =
* NEW_RECORD =
* E_DATAB =
* E_DATBI =
* E_PRDAT =
TABLES
COPY_RECORDS = LT_KOMV
* COPY_STAFFEL =
* COPY_RECS_IDOC =
EXCEPTIONS
ENQUEUE_ON_RECORD = 1
INVALID_APPLICATION = 2
INVALID_CONDITION_NUMBER = 3
INVALID_CONDITION_TYPE = 4
NO_AUTHORITY_EKORG = 5
NO_AUTHORITY_KSCHL = 6
NO_AUTHORITY_VKORG = 7
NO_SELECTION = 8
TABLE_NOT_VALID = 9
NO_MATERIAL_FOR_SETTLEMENT = 10
NO_UNIT_FOR_PERIOD_COND = 11
NO_UNIT_REFERENCE_MAGNITUDE = 12
INVALID_CONDITION_TABLE = 13
OTHERS = 14.
IF SY-SUBRC <> 0.
CLEAR:VL_MSG.
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
MSG_ID = SY-MSGID
MSG_NO = SY-MSGNO
MSG_VAR1 = SY-MSGV1
MSG_VAR2 = SY-MSGV2
MSG_VAR3 = SY-MSGV3
MSG_VAR4 = SY-MSGV4
IMPORTING
MSG_TEXT = VL_MSG.
GS_ITAB-ZTYPE = 'E'.
GS_ITAB-ZMSG = VL_MSG.
ELSE.
CALL FUNCTION 'RV_CONDITION_SAVE'.
COMMIT WORK AND WAIT.
CALL FUNCTION 'RV_CONDITION_RESET'.
COMMIT WORK AND WAIT.
GS_ITAB-ZTYPE = 'S'.
GS_ITAB-ZMSG = 'Update completed success'.
ENDIF.
CLEAR:LT_KOMV[],LS_KOMV.
MODIFY GT_ITAB FROM GS_ITAB.
ENDLOOP.
ENDCASE.
RS_SELFIELD-REFRESH = 'X'.
ENDFORM.