ABAP省地区维护03



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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值