INCLUDE ZTL_BAPI_03_TOP."全局变量
INCLUDE ZTL_BAPI_03_SCREEN."选择屏幕
INCLUDE ZTL_BAPI_03_O01."显示
INCLUDE ZTL_BAPI_03_F01."导入数据
INCLUDE ZTL_BAPI_03_G01. "判断语句
INITIALIZATION.
"模板下载图标设置
START-OF-SELECTION.
PERFORM UPLOUD_EXCEL. "导入EXCEL数据
"这是子例程 INCLUDE ZTL_BAPI_03_TOP."全局变量
TYPES:BEGIN OF TY_DATA,
ID TYPE ZTL_WH_TABLE-ID, "市区域ID
REGION_CODE TYPE ZTL_WH_TABLE-REGION_CODE, "市级地区编码
REGION_NAME TYPE ZTL_WH_TABLE-REGION_NAME, "市级地区名称
PARENT_ID TYPE ZTL_WH_TABLE-PARENT_ID, "省级地区编码
PARENT_CODE TYPE ZTL_WH_TABLE-PARENT_CODE, "省级地区描述
REGION_TYPE TYPE ZTL_WH_TABLE-REGION_TYPE, "地区类型
SAP_REGION_CODE TYPE ZTL_WH_TABLE-SAP_REGION_CODE, "SAP区域代码
" LMESS TYPE STRING, "测试信息
END OF TY_DATA.
DATA: GT_DATA TYPE TABLE OF TY_DATA, "上穿数据
GW_DATA TYPE TY_DATA.
"双击
DATA : ID2(8) TYPE N.
DATA : PARENT_CODE2(6) TYPE C.
DATA : REGION_TYPE2(8) TYPE N.
DATA : PARENT_ID2(8) TYPE N.
TYPES:BEGIN OF TY_CN,
ID TYPE ZTL_WH_TABLE-ID, "市区域ID
REGION_CODE TYPE ZTL_WH_TABLE-REGION_CODE, "市级地区编码
REGION_NAME TYPE ZTL_WH_TABLE-REGION_NAME, "市级地区名称
PARENT_ID TYPE ZTL_WH_TABLE-PARENT_ID, "省级地区编码
PARENT_CODE TYPE ZTL_WH_TABLE-PARENT_CODE, "省级地区描述
REGION_TYPE TYPE ZTL_WH_TABLE-REGION_TYPE, "地区类型
SAP_REGION_CODE TYPE ZTL_WH_TABLE-SAP_REGION_CODE, "SAP区域代码
BOX, "自主选择按钮
ICON(4), "校验灯 图标
LMESS TYPE STRING, "测试信息
NUM,
END OF TY_CN.
DATA: GT_CN TYPE TABLE OF TY_CN, "上穿数据
GW_CN TYPE TY_CN,
GT_CN2 TYPE TABLE OF TY_CN, "用于存放临时的对比数据
GW_CN2 TYPE TY_CN.
DATA: BEGIN OF GW_ALV,
NUM, "自主定义编号
BOX, "自主选择按钮
ICON(4), "校验灯 图标
LMESS TYPE STRING. "测试信息
INCLUDE STRUCTURE GW_DATA. "定义结构体继承的具体语句为:INCLUDE STRUCTURE
DATA: END OF GW_ALV,
GT_ALV LIKE STANDARD TABLE OF GW_ALV. "参照gs_alv创建内表
"@EB@ 熄灯 @0A@ 红灯 @08@ 绿灯 @09@黄 灯
CONSTANTS:
C_ICON_BLACK TYPE ICON_D VALUE '@EB@', "熄灯
C_ICON_RED TYPE ICON_D VALUE '@0A@', "红灯
C_ICON_GREAD TYPE ICON_D VALUE '@08@', "绿灯
C_ICON_YELLOW TYPE ICON_D VALUE '@09@'. "黄灯
*定义alv显示用到的全局参数
*定义FIELDCAT内表和工作区
DATA :GT_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE.
*定义布局
DATA: GW_LAYOUT TYPE LVC_S_LAYO,
GW_GRID_SETTINGS TYPE LVC_S_GLAY.
*设置字段排序
DATA : GT_SORT TYPE LVC_T_SORT WITH HEADER LINE.
*定义alv对象,alv回调时候用,一般不用
DATA: GR_GRID TYPE REF TO CL_GUI_ALV_GRID.
*为FIELDCAT定义宏,其中&1表示占位符
*以下含有“是否”的值范围内为空和X
DEFINE DE_FIELDCAT.
CLEAR GT_FIELDCAT.
GT_FIELDCAT-FIELDNAME = &1. "字段名
GT_FIELDCAT-SCRTEXT_L = &2. "字段长描述
GT_FIELDCAT-KEY = &3. "主键,蓝底显示,默认冻结列
GT_FIELDCAT-NO_ZERO = &4. "不显示0值
GT_FIELDCAT-EDIT = &5. "是否编辑
GT_FIELDCAT-REF_FIELD = &6. "参考字段 &6 &7 一起使用
GT_FIELDCAT-REF_TABLE = &7. "参考表 &6 &7 一起使用
GT_FIELDCAT-FIX_COLUMN = &8. "冻结列
GT_FIELDCAT-ICON = &9. "图标
APPEND GT_FIELDCAT.
END-OF-DEFINITION.
*定义alv显示用到的全局参数
*定义FIELDCAT内表和工作区
DATA :GT_FIELDCAT2 TYPE LVC_T_FCAT WITH HEADER LINE.
*定义布局
DATA: GW_LAYOUT2 TYPE LVC_S_LAYO,
GW_GRID_SETTINGS2 TYPE LVC_S_GLAY.
*设置字段排序
DATA : GT_SORT2 TYPE LVC_T_SORT WITH HEADER LINE.
*定义alv对象,alv回调时候用,一般不用
DATA: GR_GRID2 TYPE REF TO CL_GUI_ALV_GRID.
*为FIELDCAT定义宏,其中&1表示占位符
*以下含有“是否”的值范围内为空和X
DEFINE DE_FIELDCAT2.
CLEAR GT_FIELDCAT2.
GT_FIELDCAT2-FIELDNAME = &1. "字段名
GT_FIELDCAT2-SCRTEXT_L = &2. "字段长描述
GT_FIELDCAT2-KEY = &3. "主键,蓝底显示,默认冻结列
GT_FIELDCAT2-NO_ZERO = &4. "不显示0值
GT_FIELDCAT2-EDIT = &5. "是否编辑
GT_FIELDCAT2-REF_FIELD = &6. "参考字段 &6 &7 一起使用
GT_FIELDCAT2-REF_TABLE = &7. "参考表 &6 &7 一起使用
GT_FIELDCAT2-FIX_COLUMN = &8. "冻结列
GT_FIELDCAT2-ICON = &9. "图标
APPEND GT_FIELDCAT2.
END-OF-DEFINITION.
"选择屏幕"
SELECTION-SCREEN BEGIN OF BLOCK BK2 WITH FRAME TITLE TEXT-001.
PARAMETERS P_FILE LIKE RLGRAP-FILENAME . "上传文件
SELECTION-SCREEN END OF BLOCK BK2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. "文件搜索帮助
PERFORM GET_FILENAME.
FORM GET_FILENAME .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE
.
ENDFORM.
*&---------------------------------------------------------------------*
*& 包含 ZTL_BAPI_03_O01
*&---------------------------------------------------------------------*
FORM FRM_SELECT_DATA .
REFRESH GT_FIELDCAT.
DE_FIELDCAT 'ICON' '校验灯' 'X' '' '' '' '' '' ''.
DE_FIELDCAT 'LMESS' '错误消息' 'X' '' '' '' '' '' '' .
DE_FIELDCAT 'ID' '市区域ID' 'X' '' '' '' '' '' '' .
DE_FIELDCAT 'REGION_CODE' '市级地区编码' '' '' '' '' '' '' '' .
DE_FIELDCAT 'REGION_NAME' '市级地区名称' '' '' '' '' '' '' '' .
DE_FIELDCAT 'PARENT_ID' '省级地区编码' '' '' '' '' '' '' '' .
DE_FIELDCAT 'PARENT_CODE' '省级地区描述' '' '' '' '' '' '' '' .
DE_FIELDCAT 'REGION_TYPE' '地区类型' '' '' '' '' '' '' '' .
DE_FIELDCAT 'SAP_REGION_CODE' 'SAP区域代码' '' '' '' '' '' '' '' .
GW_LAYOUT-CWIDTH_OPT = 'X'. "自动优化宽度
GW_LAYOUT-BOX_FNAME = 'BOX'."ALV显示内表的一个字段,用于标记被选中
IF GT_ALV IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_BUFFER_ACTIVE = 'X'
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS' "选择屏幕
I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
IS_LAYOUT_LVC = GW_LAYOUT
I_GRID_SETTINGS = GW_GRID_SETTINGS
IT_FIELDCAT_LVC = GT_FIELDCAT[]
IT_SORT_LVC = GT_SORT[]
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_ALV.
ELSE.
MESSAGE TEXT-W01 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
FORM FRM_SET_STATUS USING IT_EXTAB TYPE SLIS_T_EXTAB.
DATA:WA_EXTAB_LINE LIKE LINE OF IT_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN' EXCLUDING IT_EXTAB .
ENDFORM.
FORM FRM_USER_COMMAND USING UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD.
DATA: L_REF_ALV TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = L_REF_ALV.
IF L_REF_ALV IS NOT INITIAL.
CALL METHOD L_REF_ALV->CHECK_CHANGED_DATA.
ENDIF.
CASE UCOMM.
WHEN '&IC1'.
READ TABLE GT_ALV INTO GW_ALV INDEX SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
IF SELFIELD-FIELDNAME = 'ID' AND GW_ALV-ID IS NOT INITIAL.
ID2 = GW_ALV-ID.
* PARENT_CODE2 = GW_ALV-PARENT_CODE.
* REGION_TYPE2 = GW_ALV-REGION_TYPE.
* SAP_REGION_CODE2 = GW_ALV-SAP_REGION_CODE.
PERFORM FIND_ID.
PERFORM OOAL.
ELSEIF SELFIELD-FIELDNAME = 'PARENT_CODE' AND GW_ALV-PARENT_CODE IS NOT INITIAL.
PARENT_CODE2 = GW_ALV-PARENT_CODE.
PERFORM PARENT_CODE.
PERFORM OOAL.
ELSEIF SELFIELD-FIELDNAME = 'REGION_TYPE' AND GW_ALV-REGION_TYPE IS NOT INITIAL.
REGION_TYPE2 = GW_ALV-REGION_TYPE.
PERFORM REGION_TYPE.
PERFORM OOAL.
ELSEIF SELFIELD-FIELDNAME = 'PARENT_ID' AND GW_ALV-PARENT_ID IS NOT INITIAL.
PARENT_ID2 = GW_ALV-PARENT_ID.
PERFORM SAP_REGION_CODE.
PERFORM OOAL.
ENDIF.
ENDIF.
WHEN 'ZCHEAK'.
CLEAR GT_ALV.
PERFORM FRM_CHECK_DATA.
PERFORM FRM_SELECT_DATA.
SELFIELD-REFRESH = 'X'. "刷新界面
WHEN 'ZUPLOUD'.
LOOP AT GT_ALV INTO GW_ALV WHERE BOX = 'X'.
" MODIFY GT_ALV FROM GW_ALV TRANSPORTING NUM.
IF GW_ALV-ICON = ICON_LED_GREEN.
MODIFY GT_ALV FROM GW_ALV TRANSPORTING NUM.
ELSEIF GW_ALV-ICON = ICON_LED_YELLOW OR GW_ALV-ICON = ICON_LED_RED.
MESSAGE E001(00) WITH '选择错误,只能批导检查通过的数据!'.
ENDIF.
ENDLOOP.
WHEN 'MX'.
* READ TABLE GT_DATA INTO GS_DATA INDEX RS_SELFIELD-TABINDEX.
* IF SY-SUBRC EQ 0.
* IF RS_SELFIELD-FIELDNAME EQ 'PARENT_CODE' AND GS_DATA-PARENT_CODE IS NOT INITIAL.
* PERFORM FRM_SHOW_OO1.
*PERFORM FRM_SELECT_DATA.
* " PERFORM FRM_BAPI_DATA.
SELFIELD-REFRESH = 'X'. "刷新界面
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_OO1
*&---------------------------------------------------------------------*
*& 双击屏幕事件
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
*FORM FRM_SHOW_OO1 .
* LOOP AT GT_ALV INTO GW_ALV .
*
* IF GW_ALV-PARENT_CODE = 'CN' .
* LOOP AT GT_ALV INTO GW_ALV WHERE PARENT_CODE = 'CN'.
*
** MOVE-CORRESPONDING GW_ALV TO GW_CN.
** " MODIFY GT_CN FROM GW_CN.
** APPEND GW_CN TO GT_CN.
** CLEAR GW_CN.
*
* ENDLOOP.
*
* ELSE.
* LOOP AT GT_ALV INTO GW_ALV WHERE PARENT_CODE <> 'CN'.
*
** MOVE-CORRESPONDING GW_ALV TO GW_CN.
** " MODIFY GT_CN FROM GW_CN.
** APPEND GW_CN TO GT_CN.
** CLEAR GW_CN.
*
* ENDLOOP.
*
* ENDIF.
*DATA: TEST2(6) TYPE C."440000
*
* LOOP AT GT_ALV INTO GW_ALV WHERE BOX = 'X'.
* MOVE-CORRESPONDING GW_ALV TO GW_CN2.
* APPEND GW_CN2 TO GT_CN2.
* TEST2 = GW_CN2-PARENT_CODE.
* "440000
* CLEAR GW_CN2.
*
* ENDLOOP.
*
* LOOP AT GT_ALV INTO GW_ALV WHERE PARENT_CODE = TEST2.
*
* MOVE-CORRESPONDING GW_ALV TO GW_CN.
*
* APPEND GW_CN TO GT_CN.
* CLEAR GW_CN.
*
* ENDLOOP.
*DATA: TEST2(8) TYPE C.
*
*LOOP AT GT_ALV INTO .
*
*ENDLOOP.
FORM FIND_ID.
LOOP AT GT_ALV INTO GW_ALV WHERE ID = ID2.
MOVE-CORRESPONDING GW_ALV TO GW_CN.
APPEND GW_CN TO GT_CN.
ENDLOOP.
" ENDLOOP.
*LOOP AT GT_CN INTO GW_CN.
*
* "区域ID为空时
* IF GW_DATA-PARENT_CODE = 'CN'.
* IF GW_ALV-LMESS <> ''.
* CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
* ENDIF.
* CONCATENATE GW_ALV-LMESS '市区域ID不能为空' INTO GW_ALV-LMESS.
* GW_ALV-ICON = ICON_LED_RED.
* ENDIF.
*
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PARENT_CODE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM PARENT_CODE .
LOOP AT GT_ALV INTO GW_ALV WHERE PARENT_CODE = PARENT_CODE2.
MOVE-CORRESPONDING GW_ALV TO GW_CN.
APPEND GW_CN TO GT_CN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form REGION_TYPE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM REGION_TYPE .
LOOP AT GT_ALV INTO GW_ALV WHERE REGION_TYPE = REGION_TYPE2.
MOVE-CORRESPONDING GW_ALV TO GW_CN.
APPEND GW_CN TO GT_CN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SAP_REGION_CODE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SAP_REGION_CODE .
LOOP AT GT_ALV INTO GW_ALV WHERE PARENT_ID = PARENT_ID2.
MOVE-CORRESPONDING GW_ALV TO GW_CN.
APPEND GW_CN TO GT_CN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form OOAL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM OOAL .
REFRESH GT_FIELDCAT2.
DE_FIELDCAT2 'ICON' '校验灯' 'X' '' '' '' '' '' ''.
DE_FIELDCAT2 'LMESS' '错误消息' 'X' '' '' '' '' '' '' .
DE_FIELDCAT2 'ID' '市区域ID' 'X' '' '' '' '' '' '' .
DE_FIELDCAT2 'REGION_CODE' '市级地区编码' '' '' '' '' '' '' '' .
DE_FIELDCAT2 'REGION_NAME' '市级地区名称' '' '' '' '' '' '' '' .
DE_FIELDCAT2 'PARENT_ID' '省级地区编码' '' '' '' '' '' '' '' .
DE_FIELDCAT2 'PARENT_CODE' '省级地区描述' '' '' '' '' '' '' '' .
DE_FIELDCAT2 'REGION_TYPE' '地区类型' '' '' '' '' '' '' '' .
DE_FIELDCAT2 'SAP_REGION_CODE' 'SAP区域代码' '' '' '' '' '' '' '' .
" LOOP AT GT_ALV INTO GW_ALV WHERE BOX = 'X'.
IF GT_CN IS NOT INITIAL.
" MODIFY GT_ALV FROM GW_ALV TRANSPORTING NUM.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_BUFFER_ACTIVE = 'X'
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS' "选择屏幕
I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
IS_LAYOUT_LVC = GW_LAYOUT2
I_GRID_SETTINGS = GW_GRID_SETTINGS2
IT_FIELDCAT_LVC = GT_FIELDCAT2[]
IT_SORT_LVC = GT_SORT2[]
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_CN.
ELSE.
MESSAGE TEXT-W01 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
CLEAR GT_CN.
ENDFORM.
*&---------------------------------------------------------------------*
*& 包含 ZTL_BAPI_03_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form UPLOUD_EXCEL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM UPLOUD_EXCEL .
DATA:LT_INTERN TYPE STANDARD TABLE OF KCDE_INTERN_STRUC,
LS_INTERN TYPE KCDE_INTERN_STRUC,
L_COL TYPE I.
FIELD-SYMBOLS:<FS>. "在ABAP编程中使用非常广泛,类似于指针,可以指代任何变量。
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_FILE "读取导入的EXCEL信息
I_BEGIN_COL = 1 "从excel表格的第一列开始读取
I_BEGIN_ROW = 2 ""从excel表格的第二行开始读取,因为第一行存储所填信息字段
I_END_COL = 40
I_END_ROW = 99999
TABLES
INTERN = LT_INTERN
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CHECK LT_INTERN IS NOT INITIAL. "判断已传入内表中
LOOP AT LT_INTERN INTO LS_INTERN.
MOVE LS_INTERN-COL TO L_COL. "将列号存入L_COL中
ASSIGN COMPONENT L_COL OF STRUCTURE GW_DATA TO <FS>. "再GW_EXCEL中的列号存入<FS>中
MOVE LS_INTERN-VALUE TO <FS>.
AT END OF ROW.
APPEND GW_DATA TO GT_DATA.
MOVE-CORRESPONDING GT_DATA TO GT_ALV.
CLEAR GW_DATA.
ENDAT.
ENDLOOP.
PERFORM FRM_SELECT_DATA .
ENDFORM.
*&---------------------------------------------------------------------*
*& 包含 ZTL_BAPI_03_G01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_CHECK_DATA .
LOOP AT GT_DATA INTO GW_DATA.
MOVE-CORRESPONDING GW_DATA TO GW_ALV.
"区域ID为空时
IF GW_DATA-ID = ''.
IF GW_ALV-LMESS <> ''.
CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
ENDIF.
CONCATENATE GW_ALV-LMESS '市区域ID不能为空' INTO GW_ALV-LMESS.
GW_ALV-ICON = ICON_LED_RED.
ENDIF.
"市级地区编码
IF GW_DATA-REGION_CODE = ''.
IF GW_ALV-LMESS <> ''.
CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
ENDIF.
CONCATENATE GW_ALV-LMESS '市级地区编码不能为空' INTO GW_ALV-LMESS.
GW_ALV-ICON = ICON_LED_RED.
ENDIF.
"市级地区名称
IF GW_DATA-REGION_NAME = ''.
IF GW_ALV-LMESS <> ''.
CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
ENDIF.
CONCATENATE GW_ALV-LMESS '市级地区名称不能为空' INTO GW_ALV-LMESS.
GW_ALV-ICON = ICON_LED_RED.
ENDIF.
"省级地区编码
IF GW_DATA-PARENT_ID = ''.
IF GW_ALV-LMESS <> ''.
CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
ENDIF.
CONCATENATE GW_ALV-LMESS '省级地区编码不能为空' INTO GW_ALV-LMESS.
GW_ALV-ICON = ICON_LED_RED.
ENDIF.
"省级地区描述
IF GW_DATA-PARENT_CODE = ''.
IF GW_ALV-LMESS <> ''.
CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
ENDIF.
CONCATENATE GW_ALV-LMESS '省级地区编码' INTO GW_ALV-LMESS.
GW_ALV-ICON = ICON_LED_RED.
"---------------------------------
ELSE.
IF GW_DATA-PARENT_CODE = 'CN'.
IF GW_DATA-SAP_REGION_CODE = ''.
IF GW_ALV-LMESS <> ''.
CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
ENDIF.
CONCATENATE GW_ALV-LMESS 'SAP区域代码不能为空' INTO GW_ALV-LMESS.
GW_ALV-ICON = ICON_LED_RED.
ENDIF.
ENDIF.
ENDIF.
"地区类型
IF GW_DATA-REGION_TYPE = ''.
IF GW_ALV-LMESS <> ''.
CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
ENDIF.
CONCATENATE GW_ALV-LMESS '地区类型' INTO GW_ALV-LMESS.
GW_ALV-ICON = ICON_LED_RED.
ENDIF.
"SAP区域代码
* IF GW_DATA-SAP_REGION_CODE = ''.
* IF GW_ALV-LMESS <> ''.
* CONCATENATE GW_ALV-LMESS '||' INTO GW_ALV-LMESS.
* ENDIF.
* CONCATENATE GW_ALV-LMESS 'sap区域代码不能为空' INTO GW_ALV-LMESS.
*
* ENDIF.
IF GW_ALV-ICON IS INITIAL.
GW_ALV-ICON = ICON_LED_GREEN.
ENDIF.
APPEND GW_ALV TO GT_ALV.
CLEAR GW_ALV.
CLEAR GW_DATA.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BAPI_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_BAPI_DATA .
"如果我传输数据的话,我就在代码结尾写上,下面一段代码
"以前写的bapi可以不用写,重新写
DATA:GT_ZCRM TYPE TABLE OF ZTL_WH_TABLE,
GW_ZCRM TYPE ZTL_WH_TABLE,
XML_XSTRING TYPE XSTRING,
XML_STRING TYPE STRING,
LV_OREF TYPE REF TO CX_ST_ERROR,
LW_MESSAGE TYPE CHAR200.
LOOP AT GT_ALV INTO GW_ALV WHERE BOX = 'X'.
GW_ZCRM-ID = GW_ALV-ID .
GW_ZCRM-REGION_CODE = GW_ALV-REGION_CODE .
GW_ZCRM-REGION_NAME = GW_ALV-REGION_NAME .
GW_ZCRM-PARENT_ID = GW_ALV-PARENT_ID .
GW_ZCRM-PARENT_CODE = GW_ALV-PARENT_CODE .
GW_ZCRM-REGION_TYPE = GW_ALV-REGION_TYPE .
GW_ZCRM-SAP_REGION_CODE = GW_ALV-SAP_REGION_CODE.
APPEND GW_ZCRM TO GT_ZCRM.
CLEAR GW_ZCRM.
ENDLOOP.
TRY .
CALL TRANSFORMATION ZTL_TEXT_01 "调用格式转换器
SOURCE POHEADER = GT_ZCRM "此时导入的是内表!(将内表数据转化成字符串)
RESULT XML XML_XSTRING. "用于接收的字符串,(此处的XML_xstring为XSTRING“类型,后续需要转换成我们需要的string类型)
CATCH CX_ST_ERROR INTO LV_OREF.
LW_MESSAGE = LV_OREF->GET_TEXT( ).
ENDTRY.
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING' "调用函数ECATT_CONV_XSTRING_TO_STRING
EXPORTING "将XSTRING类型转换为STRING类型
IM_XSTRING = XML_XSTRING
* IM_ENCODING = 'UTF-8'
IMPORTING
EX_STRING = XML_STRING. "传出的XML_STRING即是我们的所需要的XML
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH '创建成功'.
ENDIF.
ENDFORM.