SAP-MM-暂支单

业务背景: 没错,就是你想象的那种暂时支出,但又不是真正的支出,属于预付范畴,暂支单属于临时借用,业务完成以后应当及时报帐或用业务提成冲减。

REPORT ZMM017.

TABLES: ZZMM017,EKKO,EKPO.
***********************************************************************
* ALV数据定义
************************************************************************
TYPE-POOLS:SLIS.

DATA: BEGIN OF WA_TAB,
        SEL_BOX     TYPE CHAR1,
        NAME_FIRST  TYPE ADRP-NAME_FIRST, "币种
        A_EBELN     TYPE EKKO-EBELN,    "订单号
        BEDAT       TYPE EKKO-BEDAT,    "凭证日期
        NAME1       TYPE LFA1-NAME1,    "供应商名称
        TXZ01       TYPE EKPO-TXZ01,    "物料描述
        MENGE       TYPE EKPO-MENGE,    "采购数量
        MEINS       TYPE EKPO-MEINS,    "单位
        A_BRTWR     TYPE EKPO-BRTWR,    "含税金额
        B_BRTWR(16) TYPE P DECIMALS 4,  "含税金额
        LIFNR       TYPE EKKO-LIFNR,    "供应商
        BUKRS       TYPE EKKO-LIFNR,    "工厂代码
        WAERS       TYPE EKKO-WAERS,    "币种
        MATNR       TYPE EKPO-MATNR,    "物料号
        MWSKZ       TYPE EKPO-MWSKZ,    "税率
        ERNAM       TYPE EKKO-ERNAM,    "创建对象的人员名称
        LDANJIA(16) TYPE P DECIMALS 4, "含税单价
        ZZSY(250)   TYPE C,            "暂支事由
        A_MENT(3)   TYPE N,            "付款比例
        A_TAX(1)    TYPE C,            "是否含税
        BRTWR       TYPE EKPO-BRTWR,    "含税金额
        NETWR       TYPE EKPO-NETWR,    "不含税金额
        A_NETWR(16) TYPE P DECIMALS 2,  "不含税金额
        NAME1_T     TYPE T001W-NAME1, "工厂描述
        KBETR       TYPE KBETR_KOND,       "税率
        DIAOBO      TYPE CHAR2, "调拨订单处理
      END OF WA_TAB.

DATA:BEGIN OF IT_NAME_FIRST OCCURS 0,
       NAME_FIRST TYPE AD_NAMEFIR,
       BNAME      TYPE XUBNAME,
     END OF IT_NAME_FIRST.

DATA:BEGIN OF IT_KBETR OCCURS 0,
       MWSKZ TYPE MWSKZ,
       KNUMH TYPE KNUMH,
       KBETR TYPE KBETR_KOND,
     END OF IT_KBETR.

DATA:BEGIN OF WA_TAB_TMP ,  "用来汇总金额的。
       EBELN TYPE EKKO-EBELN,    "订单号
       BRTWR TYPE EKPO-BRTWR,    "含税金额
       NETWR TYPE EKPO-NETWR,    "不含税金额
     END OF WA_TAB_TMP.

*DATA:BEGIN OF IT_TAB_TMP_T OCCURS 0,  "用来汇总金额的。
*       BRTWR TYPE EKPO-BRTWR,    "含税金额
*       NETWR TYPE EKPO-NETWR,    "不含税金额
*     END OF IT_TAB_TMP_T.

DATA:IT_TAB_TMP_T LIKE TABLE OF WA_TAB_TMP WITH HEADER LINE .
DATA:IT_TAB_TMP  LIKE TABLE OF WA_TAB_TMP WITH HEADER LINE .

DATA:BEGIN OF IT_TAB01 OCCURS 0,
       BRTWR       TYPE EKPO-BRTWR,    "含税金额
       TXZ01       TYPE EKPO-TXZ01,    "物料描述
       MEINS       TYPE EKPO-MEINS,    "单位
       MENGE       TYPE EKPO-MENGE,    "采购数量
       A_NETWR(16) TYPE P DECIMALS 2,  "不含税金额
       B_BRTWR(16) TYPE P DECIMALS 2,  "含税金额
       WAERS       TYPE EKKO-WAERS,    "币种
       NETWR       TYPE EKPO-NETWR,    "不含税金额
       A_TAX(1)    TYPE C,            "是否含税
       ZZSY(250)   TYPE C,            "暂支事由
     END OF IT_TAB01.

"DATA ZZSY(250)  TYPE C.            "暂支事由
DATA IT_ZMM017 LIKE TABLE OF ZZMM017 WITH HEADER LINE.    "存放导入数据的自检表
DATA IT_ZMM017_TMP LIKE TABLE OF ZZMM017 WITH HEADER LINE."存放ALV数据的内表
DATA IT_SELECTED_TMP LIKE TABLE OF ZZMM017 WITH HEADER LINE."存放ALV数据的内表
DATA IT_ZMM017_T LIKE TABLE OF ZZMM017 WITH HEADER LINE.  "计算暂支次数
DATA IT_ZMM017_T1 LIKE TABLE OF ZZMM017 WITH HEADER LINE. "计算付款比例不能超过%100
DATA IT_DATA_TMP LIKE TABLE OF WA_TAB WITH HEADER LINE.
DATA IT_SELECTED LIKE TABLE OF  WA_TAB WITH HEADER LINE.     "创建一个内表,引用同样结构
DATA IT_TAB LIKE TABLE OF  WA_TAB WITH HEADER LINE.
DATA IT_TAB02 LIKE TABLE OF ZMM017_T WITH HEADER LINE.
DATA P_NAME TYPE ADRP-NAME_FIRST.
DATA P_BEDAT TYPE EKKO-BEDAT.
DATA P_LIFNR TYPE EKKO-LIFNR.
DATA P_MATNR TYPE EKPO-MATNR.
DATA P_EBELN TYPE EKKO-EBELN.

* Custom Container Instance Reference
DATA: GR_CCONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: GR_CCONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
* Name of custom control added on the screen.
DATA: GC_CUSTOM_CONTROL_NAME1 TYPE SCRFNAME VALUE 'C001'.
DATA: GC_CUSTOM_CONTROL_NAME2 TYPE SCRFNAME VALUE 'C002'.
* ALV Grid Instance Reference
DATA: GR_ALVGRID1 TYPE REF TO CL_GUI_ALV_GRID.
DATA: GR_ALVGRID2 TYPE REF TO CL_GUI_ALV_GRID.
* Field Catalog table
DATA: GT_FIELDCAT1 TYPE LVC_T_FCAT.
DATA: GT_FIELDCAT2 TYPE LVC_T_FCAT.
* Layout Structure
DATA: GS_LAYOUT1 TYPE LVC_S_LAYO.
DATA: GS_LAYOUT2 TYPE LVC_S_LAYO.

* Toolbar Table
DATA: GT_EXCLUDE TYPE UI_FUNCTIONS.
* Sort Table
DATA: GT_SORT TYPE LVC_T_SORT.
* Filter Table
DATA: GT_FILT TYPE LVC_T_FILT.

* Selected Rows
DATA: GT_ROW_NO TYPE LVC_T_ROID.
* Scroll Status
DATA: ST_ROW_NO   TYPE LVC_S_ROID,
      GT_COL_INFO TYPE LVC_S_COL.

*----------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_HANDLER1 DEFINITION.
  PUBLIC SECTION.
    METHODS:
* To add new functional buttons to the ALV toolbar
      HANDLE_TOOLBAR
                    FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
        IMPORTING E_OBJECT E_INTERACTIVE,
* To implement user commands
      HANDLE_USER_COMMAND
                    FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
        IMPORTING E_UCOMM.
ENDCLASS.                    "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_HANDLER1 IMPLEMENTATION.
* Handle Toolbar
  METHOD HANDLE_TOOLBAR.
    PERFORM HANDLE_TOOLBAR1 USING E_OBJECT E_INTERACTIVE.
  ENDMETHOD.                    "handle_toolbar
* Handle User Command
  METHOD HANDLE_USER_COMMAND.
    PERFORM HANDLE_USER_COMMAND1 USING E_UCOMM.
  ENDMETHOD.                    "handle_user_command
ENDCLASS.                    "lcl_event_handler IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_HANDLER2 DEFINITION.
  PUBLIC SECTION.
    METHODS:
* To add new functional buttons to the ALV toolbar
      HANDLE_TOOLBAR
                    FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
        IMPORTING E_OBJECT E_INTERACTIVE,
* To implement user commands
      HANDLE_USER_COMMAND
                    FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
        IMPORTING E_UCOMM.
ENDCLASS.                    "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_HANDLER2 IMPLEMENTATION.
* Handle Toolbar
  METHOD HANDLE_TOOLBAR.
    PERFORM HANDLE_TOOLBAR2 USING E_OBJECT E_INTERACTIVE.
  ENDMETHOD.                    "handle_toolbar
* Handle User Command
  METHOD HANDLE_USER_COMMAND.
    PERFORM HANDLE_USER_COMMAND2 USING E_UCOMM.
  ENDMETHOD.                    "handle_user_command
ENDCLASS.                    "lcl_event_handler IMPLEMENTATION


*&---------------------------------------------------------------------*
*&      Form  HANDLE_TOOLBAR1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_OBJECT  text
*      -->P_E_INTERACTIVE  text
*----------------------------------------------------------------------*
FORM HANDLE_TOOLBAR1  USING P_E_OBJECT TYPE REF TO CL_ALV_EVENT_TOOLBAR_SET
                              P_E_INTERACTIVE TYPE CHAR01.
  DATA LS_TOOLBAR TYPE STB_BUTTON.
  CLEAR LS_TOOLBAR.
  MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
  APPEND LS_TOOLBAR TO P_E_OBJECT->MT_TOOLBAR.

  CLEAR LS_TOOLBAR.
  MOVE 'CREATE' TO LS_TOOLBAR-FUNCTION.
  MOVE ICON_DISPLAY_TEXT TO LS_TOOLBAR-ICON.
  MOVE '新增' TO LS_TOOLBAR-QUICKINFO.
  MOVE '新增' TO LS_TOOLBAR-TEXT.
  MOVE ' ' TO LS_TOOLBAR-DISABLED.
  APPEND LS_TOOLBAR TO P_E_OBJECT->MT_TOOLBAR.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  HANDLE_USER_COMMAND1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_UCOMM  text
*----------------------------------------------------------------------*
FORM HANDLE_USER_COMMAND1 USING    P_E_UCOMM TYPE SY-UCOMM.
  CASE P_E_UCOMM.
    WHEN 'CREATE'.
      CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
        EXPORTING
          FUNCTIONCODE           = 'CREATE'
        EXCEPTIONS
          FUNCTION_NOT_SUPPORTED = 1
          OTHERS                 = 2.
  ENDCASE.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  HANDLE_TOOLBAR2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_OBJECT  text
*      -->P_E_INTERACTIVE  text
*----------------------------------------------------------------------*
FORM HANDLE_TOOLBAR2  USING   P_E_OBJECT TYPE REF TO CL_ALV_EVENT_TOOLBAR_SET
                              P_E_INTERACTIVE TYPE CHAR01.
  DATA LS_TOOLBAR TYPE STB_BUTTON.
  CLEAR LS_TOOLBAR.
  MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
  APPEND LS_TOOLBAR TO P_E_OBJECT->MT_TOOLBAR.

  CLEAR LS_TOOLBAR.
  MOVE 'PRINT' TO LS_TOOLBAR-FUNCTION.
  MOVE ICON_DISPLAY_TEXT TO LS_TOOLBAR-ICON.
  MOVE '打印'   TO LS_TOOLBAR-QUICKINFO.
  MOVE '打印'   TO LS_TOOLBAR-TEXT.
  MOVE ' ' TO LS_TOOLBAR-DISABLED.
  APPEND LS_TOOLBAR TO P_E_OBJECT->MT_TOOLBAR.

  CLEAR LS_TOOLBAR.
  MOVE 'REPRINT' TO LS_TOOLBAR-FUNCTION.
  MOVE ICON_DISPLAY_TEXT TO LS_TOOLBAR-ICON.
  MOVE '重置打印'  TO LS_TOOLBAR-QUICKINFO.
  MOVE '重置打印'  TO LS_TOOLBAR-TEXT.
  MOVE ' ' TO LS_TOOLBAR-DISABLED.
  APPEND LS_TOOLBAR TO P_E_OBJECT->MT_TOOLBAR.

  CLEAR LS_TOOLBAR.
  MOVE 'DELETE' TO LS_TOOLBAR-FUNCTION.
  MOVE ICON_DISPLAY_TEXT TO LS_TOOLBAR-ICON.
  MOVE '删除'  TO LS_TOOLBAR-QUICKINFO.
  MOVE '删除'  TO LS_TOOLBAR-TEXT.
  MOVE ' ' TO LS_TOOLBAR-DISABLED.
  APPEND LS_TOOLBAR TO P_E_OBJECT->MT_TOOLBAR.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  HANDLE_USER_COMMAND2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_UCOMM  text
*----------------------------------------------------------------------*
FORM HANDLE_USER_COMMAND2  USING    P_E_UCOMM TYPE SY-UCOMM.
  CASE P_E_UCOMM.
    WHEN 'PRINT'.
      CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
        EXPORTING
          FUNCTIONCODE           = 'PRINT'
        EXCEPTIONS
          FUNCTION_NOT_SUPPORTED = 1
          OTHERS                 = 2.
    WHEN 'REPRINT'.
      CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
        EXPORTING
          FUNCTIONCODE           = 'REPRINT'
        EXCEPTIONS
          FUNCTION_NOT_SUPPORTED = 1
          OTHERS                 = 2.
    WHEN 'DELETE'.
      CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
        EXPORTING
          FUNCTIONCODE           = 'DELETE'
        EXCEPTIONS
          FUNCTION_NOT_SUPPORTED = 1
          OTHERS                 = 2.
  ENDCASE.
ENDFORM.

* ALV Event Handler Reference
DATA: GR_EVENT_HANDLER1 TYPE REF TO LCL_EVENT_HANDLER1.
DATA: GR_EVENT_HANDLER2 TYPE REF TO LCL_EVENT_HANDLER2.

SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
PARAMETER:  S_NAME LIKE P_NAME DEFAULT SY-UNAME OBLIGATORY .
SELECT-OPTIONS: S_BEDAT FOR P_BEDAT .
SELECT-OPTIONS: S_LIFNR FOR P_LIFNR .
SELECT-OPTIONS: S_MATNR FOR P_MATNR .
SELECT-OPTIONS: S_EBELN FOR P_EBELN .
SELECTION-SCREEN END OF BLOCK BL1.

INITIALIZATION.

AT SELECTION-SCREEN OUTPUT.

AT SELECTION-SCREEN.

START-OF-SELECTION.

  IF SY-UNAME <> 'HS_08' AND SY-UNAME <> 'HDX' .
    IF S_NAME <> SY-UNAME.
      MESSAGE '不允许操作其他采购人员发起的订单' TYPE 'E' DISPLAY LIKE 'I'.
    ENDIF.
  ENDIF.
  PERFORM GET_DATA. "数据提取
  PERFORM GET_DATA_TABLS. "自建表数据提取
  PERFORM GET_DATA_TMP."数据处理

  CALL SCREEN 2000.

END-OF-SELECTION.

FORM GET_DATA.
  SELECT
    A~BUKRS
    A~ERNAM
    A~EBELN AS A_EBELN
    A~BEDAT
    B~MENGE
    A~LIFNR
    A~WAERS
    B~BRTWR AS A_BRTWR
    B~NETWR "非含税金额
    B~TXZ01
    C~NAME1
    B~MATNR
    B~MWSKZ
    B~MEINS
    INTO CORRESPONDING FIELDS OF TABLE IT_TAB
      FROM EKKO  AS A                                              INNER JOIN
           EKPO  AS B  ON A~EBELN = B~EBELN                        INNER JOIN
           LFA1  AS C  ON A~LIFNR = C~LIFNR
           WHERE A~EBELN IN S_EBELN AND
                 B~MATNR IN S_MATNR AND
                 A~LIFNR IN S_LIFNR AND
                 A~BEDAT IN S_BEDAT .

  IF SY-SUBRC = 0.
    IT_DATA_TMP[] = IT_TAB[].
    SORT IT_DATA_TMP BY ERNAM.
    DELETE ADJACENT DUPLICATES FROM IT_DATA_TMP COMPARING ERNAM.
    IF IT_DATA_TMP[] IS NOT INITIAL .
      SELECT
        B~NAME_FIRST
        A~BNAME
        INTO CORRESPONDING FIELDS OF TABLE IT_NAME_FIRST
        FROM  USR21 AS A  INNER JOIN
              ADRP  AS B ON A~PERSNUMBER = B~PERSNUMBER
          FOR ALL ENTRIES IN IT_DATA_TMP
          WHERE BNAME = IT_DATA_TMP-ERNAM.

      IF SY-SUBRC = 0.
        LOOP AT IT_TAB .
          READ TABLE IT_NAME_FIRST WITH KEY BNAME = IT_TAB-ERNAM.
          IF SY-SUBRC = 0.
            IT_TAB-NAME_FIRST = IT_NAME_FIRST-NAME_FIRST.
            MODIFY IT_TAB.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDIF.
  ENDIF.

  IT_DATA_TMP[]  =  IT_TAB[] .
  SORT IT_DATA_TMP BY MWSKZ.
  DELETE ADJACENT DUPLICATES FROM IT_DATA_TMP COMPARING MWSKZ.
  IF IT_DATA_TMP[] IS NOT INITIAL .
    SELECT
      J~KNUMH
      K~KBETR
      J~MWSKZ
      INTO CORRESPONDING FIELDS OF TABLE IT_KBETR
      FROM  A003  AS J INNER JOIN
            KONP  AS K ON J~KNUMH = K~KNUMH AND J~MWSKZ = K~MWSK1
     FOR ALL ENTRIES IN IT_DATA_TMP
     WHERE MWSKZ = IT_DATA_TMP-MWSKZ AND J~KSCHL = 'MWVS' AND J~KAPPL = 'TX' AND J~ALAND = 'CN'.
    IF SY-SUBRC = 0.
      LOOP AT IT_TAB  .
        READ TABLE IT_KBETR WITH KEY MWSKZ = IT_TAB-MWSKZ .
        IF SY-SUBRC = 0.
          IT_TAB-KBETR = IT_KBETR-KBETR.
          MODIFY IT_TAB .
        ENDIF.
      ENDLOOP.
    ENDIF.
  ENDIF.

  DELETE IT_TAB WHERE ERNAM <> S_NAME.

  LOOP AT IT_TAB.
    IT_TAB-B_BRTWR = IT_TAB-A_BRTWR.
    DATA: A_BRTWR_T TYPE CHAR50.
    IF IT_TAB-WAERS = 'JPY' .
      IF IT_TAB-A_TAX = 'X'.
        IT_TAB-B_BRTWR =  IT_TAB-B_BRTWR * 100. "含税金额
      ELSE.
        IT_TAB-B_BRTWR   = IT_TAB-NETWR * 100.  "未税金额
*      CONDENSE A_BRTWR_T NO-GAPS.
*      IT_TAB-B_BRTWR = A_BRTWR_T.
      ENDIF.
    ENDIF.
    IT_TAB-LDANJIA = IT_TAB-B_BRTWR / IT_TAB-MENGE.

    IT_TAB-KBETR = IT_TAB-KBETR / 10.  "税率算法

    IT_TAB-DIAOBO = IT_TAB-A_EBELN+0(2). "删除移库的订单

    MODIFY IT_TAB.
  ENDLOOP.

  LOOP AT IT_TAB .

    MODIFY IT_TAB.
  ENDLOOP.



  DELETE IT_TAB WHERE DIAOBO = '46'.  "删除移库的订单
ENDFORM.

FORM GET_DATA_TABLS. "自建表数据提取

  SELECT
     LIFNR      "供应商
     NAME1      "供应商名称
     NAME_FIRST "受款人
     ZZSY       "暂支事由
     BRTWR      "暂支金额
     A_MENT     "付款比例
     A_TAX      "是否含税
     EBELN      "采购订单号
     A_ERNAM    "创建人
     B_BEDAT    "创建日期
     A_TIME     "创建时间
     A_BNAME    "修改人
     C_MODAT    "修改日期
     A_TIME1    "修改时间
     A_ZANZH    "暂支次数
     A_BEDAT    "暂支日期
     A_PRINT     "打印状态
     WAERS       "币种
     A_FUKUAN    "付款日期
     A_BEIZ       "付款日期
     BUKRS       "公司代码
     KBETR       "税率
   INTO CORRESPONDING FIELDS OF TABLE IT_ZMM017_TMP
    FROM ZZMM017
    WHERE EBELN IN S_EBELN AND
          A_BEIZ = ''.

  DELETE IT_ZMM017_TMP WHERE A_ERNAM <> S_NAME.

ENDFORM.

FORM CONV_AMOUNT USING VALUE(F_SOURCE)  "小写金额转换成大写
                 CHANGING VALUE(F_RESULT).
  DATA: SCR(30) TYPE C, RES(60) TYPE C,FEN(2) TYPE C .
  DATA: LEN TYPE I, C1 TYPE I, C2 TYPE I, C3 TYPE I, C4 TYPE I.
  DATA: D1(1) TYPE C, D2(1) TYPE C, D3 TYPE I.
  DATA: DIGIT(2)  TYPE C, WEIGHT(2) TYPE C.
  DATA: RULE1(20) TYPE C VALUE '零壹贰叁肆伍陆柒捌玖'.
  DATA: RULE2(30) TYPE C VALUE '分角元拾佰仟万拾佰仟亿拾佰仟万'.
  SCR = F_SOURCE * 100.
  CONDENSE SCR NO-GAPS.
  IF SCR = '0'.
    RES = '零元'.
  ELSE.
    LEN = STRLEN( SCR ).
    C1 = 0.
    D1 = '0'.
    CLEAR RES.
    DO LEN TIMES.
      C1 = C1 + 1.
      C2 = LEN - C1.
      D2 = SCR+C2(1) .
      IF D2 = '0'.
        D3 = 0.
      ELSE.
        D3 = D2.
        "d3 = d2 * 2.
      ENDIF.
      DIGIT = RULE1+D3(1) .
      C3 = ( C1 - 1 ) .
      WEIGHT = RULE2+C3(1) .
      "       digit = rule1+d3(2) .
      "       c3 = ( c1 - 1 ) * 2.
      "       weight = rule2+c3(2) .
      IF D2 = '0'.
        IF C1 = 3.
          DIGIT = ''.
        ELSEIF C1 = 7.
          DIGIT = ''.
          IF LEN > 10 .
            C4 = LEN - 10.
            IF SCR+C4(4) = '0000'.
              WEIGHT = ''.
            ENDIF.
          ENDIF.
        ELSEIF C1 = 11.
          DIGIT = ''.
        ELSEIF D1 = '0'.
          DIGIT = ''.
          WEIGHT = ''.
        ELSE.
          WEIGHT = ''.
        ENDIF.
      ENDIF.
      CONCATENATE DIGIT WEIGHT RES INTO RES .
      D1 = D2.
    ENDDO.
  ENDIF.
  LEN = STRLEN( RES ) - 1.
  FEN = RES+LEN(1).
  IF FEN <> '分' .
    CONCATENATE RES '整' INTO F_RESULT.
  ELSE.
    F_RESULT = RES.
  ENDIF.
ENDFORM.


FORM GET_DATA_TMP."数据处理
  LOOP AT IT_TAB .
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'    "去除前导零
      EXPORTING
        INPUT  = IT_TAB-MATNR
      IMPORTING
        OUTPUT = IT_TAB-MATNR.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'    "去除前导零
      EXPORTING
        INPUT  = IT_TAB-LIFNR
      IMPORTING
        OUTPUT = IT_TAB-LIFNR.

    MODIFY IT_TAB.
  ENDLOOP.

ENDFORM.


FORM GET_DATA_XINZENG. "新增操作

  LOOP AT IT_SELECTED.

    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        INPUT          = IT_SELECTED-MEINS
        LANGUAGE       = SY-LANGU
      IMPORTING
*       LONG_TEXT      =
        OUTPUT         = IT_SELECTED-MEINS
*       SHORT_TEXT     =
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.

    DATA C_MENGE(30) TYPE C.
    DATA C_LDANJIA(20) TYPE C.
    DATA C_BRTWR(30) TYPE C.
    C_MENGE = IT_SELECTED-MENGE.
    C_LDANJIA = IT_SELECTED-LDANJIA.
    C_BRTWR = IT_SELECTED-B_BRTWR.
    CONCATENATE IT_SELECTED-TXZ01 ',' '数量:' C_MENGE ',' '单位:' IT_SELECTED-MEINS ',' '单价:' C_LDANJIA ',' '金额:' C_BRTWR INTO IT_SELECTED-ZZSY.
    CONDENSE IT_SELECTED-ZZSY NO-GAPS.

    IF IT_SELECTED-WAERS <> 'CNY'.
      IF IT_SELECTED-A_TAX = 'X'..
        MESSAGE '操作失败,外币不存在含税' TYPE 'E'.
      ENDIF.
    ENDIF.
    DATA: B_BEDAT TYPE SY-DATLO.
    DATA: A_ERNAM TYPE SY-UNAME.
    DATA: A_TIME  TYPE SY-TIMLO.
    A_ERNAM  = SY-UNAME . "当前用户
    B_BEDAT  = SY-DATLO . "当前日期
    A_TIME   = SY-TIMLO . "当前时间
    IF IT_SELECTED-A_TAX = 'X'.
      SELECT
        B~EBELN
        BRTWR
      INTO CORRESPONDING FIELDS OF TABLE IT_TAB_TMP
      FROM EKPO AS A   INNER JOIN
           EKKO AS B ON  A~EBELN = B~EBELN
      WHERE B~EBELN = IT_SELECTED-A_EBELN.
    ELSE.
      SELECT
       NETWR
       B~EBELN
      INTO CORRESPONDING FIELDS OF TABLE IT_TAB_TMP
      FROM EKPO AS A   INNER JOIN
           EKKO AS B ON  A~EBELN = B~EBELN
       WHERE B~EBELN = IT_SELECTED-A_EBELN.
    ENDIF.
    IF IT_TAB_TMP[] IS NOT INITIAL.
      CLEAR IT_TAB_TMP_T[].
      LOOP AT IT_TAB_TMP.
        COLLECT IT_TAB_TMP INTO IT_TAB_TMP_T.
      ENDLOOP.
    ENDIF.

    LOOP AT IT_TAB_TMP_T WHERE EBELN =  IT_SELECTED-A_EBELN.
      IF IT_SELECTED-A_TAX = 'X'.
        IT_SELECTED-B_BRTWR = IT_TAB_TMP_T-BRTWR.
      ELSE.
        IT_SELECTED-B_BRTWR = IT_TAB_TMP_T-NETWR.
      ENDIF.
      MODIFY IT_SELECTED.
    ENDLOOP.
    IF IT_SELECTED-WAERS = 'JPY' .
      IT_SELECTED-B_BRTWR =  IT_SELECTED-B_BRTWR * 100. "日元金额
    ENDIF.
    IT_SELECTED-A_NETWR = IT_SELECTED-B_BRTWR / 100 * IT_SELECTED-A_MENT. "通过比例计算出暂支金额
    CLEAR IT_ZMM017_T[].
    SELECT
    EBELN
    A_MENT
    FROM ZZMM017
    INTO CORRESPONDING FIELDS OF TABLE IT_ZMM017_T
    WHERE EBELN = IT_SELECTED-A_EBELN AND A_BEIZ = ''.

    DATA LV_CONT(1) TYPE C.
    CLEAR LV_CONT.
    DESCRIBE TABLE IT_ZMM017_T LINES LV_CONT. "计算条目数

    IF LV_CONT >= 0.
      LV_CONT = LV_CONT + 1.
    ENDIF.

    IF LV_CONT > 4.
      MESSAGE '此次订单已经暂支超过4次,不允许继续操作' TYPE 'E'.
    ENDIF.
    IF IT_SELECTED-A_MENT = ''.
      MESSAGE '必须填写暂支比例,否则无法新增。' TYPE 'E'.
    ENDIF.

    CLEAR IT_ZMM017_T1[].
    LOOP AT IT_ZMM017_T.
      COLLECT IT_ZMM017_T INTO IT_ZMM017_T1.
    ENDLOOP.
    LOOP AT IT_ZMM017_T1.
      DATA SUM TYPE VRKME.
      SUM = IT_ZMM017_T1-A_MENT.
    ENDLOOP.
    SUM = SUM + IT_SELECTED-A_MENT.
    IF SUM > 100 .
      MESSAGE '暂支比例超过了%100,不允许继续操作' TYPE 'E'.
    ELSE.
      IT_ZMM017-LIFNR    =     IT_SELECTED-LIFNR  .
      IT_ZMM017-NAME1    =     IT_SELECTED-NAME1  .
      IT_ZMM017-NAME_FIRST =   IT_SELECTED-NAME_FIRST.
      IT_ZMM017-ZZSY     =     IT_SELECTED-ZZSY.
      IT_ZMM017-BRTWR    =     IT_SELECTED-A_NETWR.
      IT_ZMM017-A_MENT   =     IT_SELECTED-A_MENT.
      IT_ZMM017-A_TAX    =     IT_SELECTED-A_TAX.
      IT_ZMM017-EBELN    =     IT_SELECTED-A_EBELN.
      IT_ZMM017-WAERS    =     IT_SELECTED-WAERS.
      IT_ZMM017-BUKRS    =     IT_SELECTED-BUKRS.
      IT_ZMM017-KBETR    =     IT_SELECTED-KBETR.
      IT_ZMM017-A_ERNAM  =     A_ERNAM.
      IT_ZMM017-B_BEDAT  =     B_BEDAT.
      IT_ZMM017-A_TIME   =     A_TIME.
      IT_ZMM017-A_ZANZH  =     LV_CONT.
      MODIFY ZZMM017 FROM IT_ZMM017.
      CLEAR:  IT_ZMM017 ,SUM .
      MESSAGE '导入数据成功' TYPE 'S'.
    ENDIF.
    CLEAR: IT_ZMM017_TMP .
    IF IT_SELECTED[] IS NOT INITIAL.
      IT_SELECTED-SEL_BOX = 'X'.
      IT_ZMM017_TMP-LIFNR    =     IT_SELECTED-LIFNR  .
      IT_ZMM017_TMP-NAME1    =     IT_SELECTED-NAME1  .
      IT_ZMM017_TMP-NAME_FIRST =   IT_SELECTED-NAME_FIRST.
      IT_ZMM017_TMP-ZZSY     =     IT_SELECTED-ZZSY.
      IT_ZMM017_TMP-BRTWR    =     IT_SELECTED-A_NETWR.
      IT_ZMM017_TMP-A_MENT   =     IT_SELECTED-A_MENT.
      IT_ZMM017_TMP-A_TAX    =     IT_SELECTED-A_TAX.
      IT_ZMM017_TMP-EBELN    =     IT_SELECTED-A_EBELN.
      IT_ZMM017_TMP-WAERS    =     IT_SELECTED-WAERS.
      IT_ZMM017_TMP-A_ERNAM  =     A_ERNAM.
      IT_ZMM017_TMP-B_BEDAT  =     B_BEDAT.
      IT_ZMM017_TMP-A_TIME   =     A_TIME.
      IT_ZMM017_TMP-A_ZANZH  =     LV_CONT.
      IT_ZMM017_TMP-SEL_BOX  =     IT_SELECTED-SEL_BOX.
      IT_ZMM017_TMP-A_BEDAT  =     SY-DATLO.
      IT_ZMM017_TMP-BUKRS    =     IT_SELECTED-BUKRS.
      IT_ZMM017_TMP-KBETR    =     IT_SELECTED-KBETR. "税率
      APPEND IT_ZMM017_TMP.
    ENDIF.
  ENDLOOP.
ENDFORM.

FORM GET_PRINT .  "重置打印

  LOOP AT IT_SELECTED_TMP.
    DATA NUM(1) TYPE C.
    DATA DATE(8) TYPE N.
    DATA ZDATE(8) TYPE N.

    DATA: B_BEDAT TYPE SY-DATLO.
    DATA: A_ERNAM TYPE SY-UNAME.
    DATA: A_TIME  TYPE SY-TIMLO.
    A_ERNAM  = SY-UNAME . "当前用户
    B_BEDAT  = SY-DATLO . "当前日期
    A_TIME   = SY-TIMLO . "当前时间

    DATE = IT_SELECTED_TMP-A_BEDAT.
    ZDATE = IT_SELECTED_TMP-B_BEDAT.

    DATA F_SOURCE LIKE VBAP-KWMENG.
    DATA F_RESULT(40) TYPE C.
    F_SOURCE = IT_SELECTED_TMP-BRTWR.
    PERFORM CONV_AMOUNT USING F_SOURCE
                     CHANGING F_RESULT.
    MOVE F_RESULT TO IT_SELECTED_TMP-A_DAXIE.

    MODIFY IT_SELECTED_TMP.

    IF IT_SELECTED_TMP-A_BEDAT = 00000000.
      MESSAGE '暂支日期不能为空' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_FUKUAN = 00000000.
      MESSAGE '付款日期不能为空' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_BEDAT > IT_SELECTED_TMP-A_FUKUAN.
      MESSAGE '付款日期不能早于创建日期' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_BEDAT < IT_SELECTED_TMP-B_BEDAT.
      MESSAGE '暂支日期不能早于创建日期' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_PRINT = ''.
      MESSAGE '此订单尚未打印,不需要重置打印' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_BEIZ = ''.
      MESSAGE '请在备注填写重置打印原因,否则不能重置打印' TYPE 'E'.
    ELSE.

*      IT_SELECTED_TMP-A_PRINT = 'X'.
      IT_ZMM017-EBELN      =     IT_SELECTED_TMP-EBELN.    "订单号
      IT_ZMM017-A_BEDAT    =     IT_SELECTED_TMP-A_BEDAT.  "暂支日期
      IT_ZMM017-A_PRINT    =     IT_SELECTED_TMP-A_PRINT.  "打印状态
      IT_ZMM017-LIFNR      =     IT_SELECTED_TMP-LIFNR.    "供应商
      IT_ZMM017-A_ZANZH    =     IT_SELECTED_TMP-A_ZANZH.  "暂支次数
      IT_ZMM017-NAME1      =     IT_SELECTED_TMP-NAME1.    "供应商简称
      IT_ZMM017-ZZSY       =     IT_SELECTED_TMP-ZZSY.     "暂支事由
      IT_ZMM017-BRTWR      =     IT_SELECTED_TMP-BRTWR.    "暂支金额
      IT_ZMM017-A_MENT     =     IT_SELECTED_TMP-A_MENT.   "暂支比例(%)
      IT_ZMM017-A_TAX      =     IT_SELECTED_TMP-A_TAX.    "是否含税
      IT_ZMM017-WAERS      =     IT_SELECTED_TMP-WAERS.    "币种
      IT_ZMM017-A_ERNAM    =     IT_SELECTED_TMP-A_ERNAM.  "创建人
      IT_ZMM017-BUKRS      =     IT_SELECTED_TMP-BUKRS.    "公司代码
      IT_ZMM017-B_BEDAT    =     IT_SELECTED_TMP-B_BEDAT.  "创建日期
      IT_ZMM017-A_TIME     =     IT_SELECTED_TMP-A_TIME.   "创建时间
      IT_ZMM017-A_BNAME    =     A_ERNAM.  "修改人
      IT_ZMM017-A_TIME1    =     A_TIME.  "修改时间
      IT_ZMM017-C_MODAT    =     B_BEDAT.  "修改日期
      IT_ZMM017-NAME_FIRST =     IT_SELECTED_TMP-NAME_FIRST."受款人
      IT_ZMM017-A_FUKUAN   =     IT_SELECTED_TMP-A_FUKUAN.  "付款日期
      IT_ZMM017-A_BEIZ     =     IT_SELECTED_TMP-A_BEIZ.  "备注
      IT_ZMM017-KBETR      =     IT_SELECTED_TMP-KBETR.  ""税率
      MODIFY ZZMM017 FROM IT_ZMM017.
      CLEAR IT_ZMM017.
    ENDIF.

  ENDLOOP.

  DATA:
    LW_PATH              TYPE RSPOPNAME,
    LW_FUNC_NAME         TYPE RS38L_FNAM,
    T_CONTROL_PARAMETERS TYPE SSFCTRLOP,
    T_OUTPUT_OPTIONS     TYPE SSFCOMPOP.
***获取SMARTFORMS的Function Module***
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      FORMNAME           = 'ZMM017'                    "SMARTFORMS的表名
    IMPORTING
      FM_NAME            = LW_FUNC_NAME                      "功能名称
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.
  CLEAR:T_CONTROL_PARAMETERS,T_OUTPUT_OPTIONS.
***Smart Forms: 控制结构*****
  T_CONTROL_PARAMETERS-PREVIEW       = 'X'.             "不打印预览,X 则打印预览
  T_CONTROL_PARAMETERS-NO_OPEN       = 'X'.             "新的假脱机请求(必写)
  T_CONTROL_PARAMETERS-NO_CLOSE      = 'X'.             "不关闭新的假脱机请求(必写)
  T_CONTROL_PARAMETERS-NO_DIALOG     = ' '.             "弹出打印设置的对话框,X 则不显示框
  T_CONTROL_PARAMETERS-DEVICE        = 'PRINTER'.       "PRINTER\MAIL\TELEFAX,缺省是PRINTER
***SAP Smart Forms: 智能写作器 (传输) 选项*****
  T_OUTPUT_OPTIONS-TDNOPREV  = ' '.                      "是否打印预览,X是不预览。
  T_OUTPUT_OPTIONS-TDNOPRINT = ' '.                      "没有打印预览的打印输出,设置X。
  T_OUTPUT_OPTIONS-TDIMMED   = ' '.                      "立即打印标志。
  T_OUTPUT_OPTIONS-TDDEST    = 'LP01'.                   "假脱机,输出设备。
***调用SSF_OPEN函数设置打印机,打开输出请求,使用用户打印设置必须调用SSF_OPEN***
  CALL FUNCTION 'SSF_OPEN'
    EXPORTING
      OUTPUT_OPTIONS     = T_OUTPUT_OPTIONS
      CONTROL_PARAMETERS = T_CONTROL_PARAMETERS
      USER_SETTINGS      = ' '
    EXCEPTIONS
      FORMATTING_ERROR   = 1
      INTERNAL_ERROR     = 2
      SEND_ERROR         = 3
      USER_CANCELED      = 4
      OTHERS             = 5.
  "循环工作区如果SEL_BOX=X
  LOOP AT IT_SELECTED_TMP WHERE SEL_BOX = 'X' .
    DATA YEAR(4) TYPE C.
    DATA YUE(2)  TYPE C.
    DATA RI(2)   TYPE C.
    DATA SHUI(3) TYPE C.
    YEAR = IT_SELECTED_TMP-A_BEDAT+0(4).
    YUE = IT_SELECTED_TMP-A_BEDAT+4(2).
    RI = IT_SELECTED_TMP-A_BEDAT+6(2).

    DATA A_YEAR(4) TYPE C.
    DATA A_YUE(2)  TYPE C.
    DATA A_RI(2)   TYPE C.
    A_YEAR = IT_SELECTED_TMP-A_FUKUAN+0(4).
    A_YUE = IT_SELECTED_TMP-A_FUKUAN+4(2).
    A_RI = IT_SELECTED_TMP-A_FUKUAN+6(2).

    IF IT_SELECTED_TMP-A_TAX = 'X'.
      SHUI = '含税'.
    ELSE.
      SHUI =  '未税'.
    ENDIF.
    DATA C_MENT(3) TYPE C.
    DATA C_BEIZHU(250) TYPE C.
    DATA C_FUKUAN(8) TYPE C.
    DATA C_ZANZH TYPE CHAR1.
    C_FUKUAN = IT_SELECTED_TMP-A_FUKUAN.
    C_MENT = IT_SELECTED_TMP-A_MENT.
    C_ZANZH = IT_SELECTED_TMP-A_ZANZH+3(1).
    CONCATENATE  SHUI ',' '预付:' C_MENT '%' ',' '付款日期:' A_YEAR '-'  A_YUE '-' A_RI ',' '暂支次数:' C_ZANZH '次'  INTO C_BEIZHU.
    CONDENSE C_BEIZHU NO-GAPS.

    SELECT SINGLE NAME1   INTO  IT_SELECTED_TMP-NAME1_T FROM T001W WHERE WERKS = IT_SELECTED_TMP-BUKRS.

    SELECT
     BRTWR
     TXZ01
     MENGE
     WAERS
     NETWR
     MEINS
      INTO CORRESPONDING FIELDS OF TABLE IT_TAB01
      FROM EKPO AS A   INNER JOIN
           EKKO AS B ON  A~EBELN = B~EBELN
      WHERE A~EBELN = IT_SELECTED_TMP-EBELN.
    DATA:   LDANJIA(16) TYPE P DECIMALS 4. "含税单价

    LOOP AT IT_TAB01.
      IF IT_SELECTED_TMP-A_TAX IS NOT INITIAL.
        IT_TAB01-A_TAX = IT_SELECTED_TMP-A_TAX.
      ENDIF.
      IF IT_TAB01-A_TAX = 'X'..
        IT_TAB01-B_BRTWR =  IT_TAB01-BRTWR.
      ELSE.
        IT_TAB01-B_BRTWR   = IT_TAB01-NETWR.
      ENDIF.
      IF IT_TAB01-WAERS = 'JPY' .
        IT_TAB01-B_BRTWR =  IT_TAB01-B_BRTWR * 100. " 日元
      ENDIF.
      IF IT_TAB01-WAERS = 'JPY'.
        LDANJIA = IT_TAB01-B_BRTWR / IT_TAB01-MENGE.
      ELSE.
        LDANJIA = IT_TAB01-BRTWR / IT_TAB01-MENGE.
      ENDIF.
      DATA C_MENGE(30) TYPE C.
      DATA C_LDANJIA(20) TYPE C.
      DATA C_BRTWR(30) TYPE C.
      C_MENGE = IT_TAB01-MENGE.
      C_LDANJIA = LDANJIA.
      IF IT_TAB01-WAERS = 'JPY'.
        C_BRTWR = IT_TAB01-B_BRTWR.
      ELSE.
        C_BRTWR = IT_TAB01-BRTWR.
      ENDIF.

      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
        EXPORTING
          INPUT          = IT_TAB01-MEINS
          LANGUAGE       = SY-LANGU
        IMPORTING
*         LONG_TEXT      =
          OUTPUT         = IT_TAB01-MEINS
*         SHORT_TEXT     =
        EXCEPTIONS
          UNIT_NOT_FOUND = 1
          OTHERS         = 2.

*      CONDENSE C_MENGE NO-GAPS.
*      CONCATENATE C_MENGE IT_TAB01-MEINS INTO C_MENGE.
*      CONDENSE C_MENGE NO-GAPS.
      CONCATENATE IT_TAB01-TXZ01 ',' '数量:' C_MENGE ',' '单位:' IT_TAB01-MEINS ',' '单价:' C_LDANJIA ',' '金额:' C_BRTWR INTO IT_TAB01-ZZSY.
      CONDENSE IT_TAB01-ZZSY NO-GAPS.
      MODIFY IT_TAB01.
    ENDLOOP.

    DATA: LNUM TYPE CHAR2.
    CLEAR :IT_TAB02[] ,LNUM.
    LOOP AT IT_TAB01.
      IT_TAB02-ZZSY = IT_TAB01-ZZSY.
      LNUM = LNUM + 1.
      IT_TAB02-LNUM = LNUM.
      APPEND IT_TAB02.
    ENDLOOP.

    IF IT_SELECTED_TMP-WAERS = 'CNY'.
      IF IT_SELECTED_TMP-KBETR IS INITIAL.
        SELECT SINGLE MWSKZ  INTO IT_SELECTED_TMP-MWSKZ FROM EKPO WHERE EBELN = IT_SELECTED_TMP-EBELN.
        SELECT SINGLE  B~KBETR INTO IT_SELECTED_TMP-KBETR   FROM KONP AS B INNER JOIN
                                           A003 AS A ON A~KNUMH = B~KNUMH AND A~MWSKZ = B~MWSK1
                                           WHERE A~MWSKZ = IT_SELECTED_TMP-MWSKZ AND  A~KSCHL = 'MWVS' AND A~KAPPL = 'TX' AND A~ALAND = 'CN'.
        IT_SELECTED_TMP-KBETR = IT_SELECTED_TMP-KBETR / 10.  "税率算法
      ENDIF.
    ENDIF.

    CALL FUNCTION LW_FUNC_NAME                          "则循环打印规则
      EXPORTING
        CONTROL_PARAMETERS = T_CONTROL_PARAMETERS     "设置不显示打印确认对话框
        OUTPUT_OPTIONS     = T_OUTPUT_OPTIONS         "默认打印选项设置传输
        USER_SETTINGS      = SPACE
        EBELN              = IT_SELECTED_TMP-EBELN    "订单号
        NAME_FIRST         = IT_SELECTED_TMP-NAME_FIRST "受款人
        NAME1              = IT_SELECTED_TMP-NAME1    "供应商
        ZZSY               = IT_SELECTED_TMP-ZZSY     "暂支事由
        BRTWR              = IT_SELECTED_TMP-BRTWR    "暂支金额
        A_DAXIE            = IT_SELECTED_TMP-A_DAXIE  "大写金额
        C_BEIZHU           = C_BEIZHU
        YEAR               = YEAR
        YUE                = YUE
        RI                 = RI
        BUKRS              = IT_SELECTED_TMP-BUKRS
        NAME1_T            = IT_SELECTED_TMP-NAME1_T
        WAERS              = IT_SELECTED_TMP-WAERS
        KBETR              = IT_SELECTED_TMP-KBETR
      TABLES
        IT_TAB             = IT_TAB02
      EXCEPTIONS
        FORMATTING_ERROR   = 1
        INTERNAL_ERROR     = 2
        SEND_ERROR         = 3
        USER_CANCELED      = 4
        OTHERS             = 5.

  ENDLOOP.



  IF SY-SUBRC <> 0.
*    MESSAGE S008(ZHKTL1) WITH SY-SUBRC DISPLAY LIKE CNS_E.
*    LEAVE LIST-PROCESSING.
  ENDIF.

***关闭打印机设置***
  CALL FUNCTION 'SSF_CLOSE'
*  IMPORTING
*    JOB_OUTPUT_INFO
    EXCEPTIONS
      FORMATTING_ERROR = 1
      INTERNAL_ERROR   = 2
      SEND_ERROR       = 3
      OTHERS           = 4.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.


ENDFORM.

FORM GET_PRINT1 .

  LOOP AT IT_SELECTED_TMP.
    DATA NUM(1) TYPE C.
    DATA DATE(8) TYPE N.
    DATA ZDATE(8) TYPE N.

    DATE = IT_SELECTED_TMP-A_BEDAT.
    ZDATE = IT_SELECTED_TMP-B_BEDAT.

    DATA F_SOURCE LIKE VBAP-KWMENG.
    DATA F_RESULT(40) TYPE C.
    F_SOURCE = IT_SELECTED_TMP-BRTWR.
    PERFORM CONV_AMOUNT USING F_SOURCE
                     CHANGING F_RESULT.
    MOVE F_RESULT TO IT_SELECTED_TMP-A_DAXIE.

    MODIFY IT_SELECTED_TMP.

    IF IT_SELECTED_TMP-A_BEDAT = 00000000.
      MESSAGE '暂支日期不能为空' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_FUKUAN = 00000000.
      MESSAGE '付款日期不能为空' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_BEDAT < IT_SELECTED_TMP-B_BEDAT.
      MESSAGE '暂支日期不能早于创建日期' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_PRINT = 'X'.
      MESSAGE '此暂支单已经打印过,无法继续打印' TYPE 'E'.
    ENDIF.

    IF IT_SELECTED_TMP-A_BEDAT > IT_SELECTED_TMP-A_FUKUAN.
      MESSAGE '付款日期不能早于创建日期' TYPE 'E'.
    ELSE.
      IT_SELECTED_TMP-A_PRINT = 'X'.
      IT_ZMM017-EBELN      =     IT_SELECTED_TMP-EBELN.    "订单号
      IT_ZMM017-A_BEDAT    =     IT_SELECTED_TMP-A_BEDAT.  "暂支日期
      IT_ZMM017-A_PRINT    =     IT_SELECTED_TMP-A_PRINT.  "打印状态
      IT_ZMM017-LIFNR      =     IT_SELECTED_TMP-LIFNR.    "供应商
      IT_ZMM017-A_ZANZH    =     IT_SELECTED_TMP-A_ZANZH.  "暂支次数
      IT_ZMM017-NAME1      =     IT_SELECTED_TMP-NAME1.    "供应商简称
      IT_ZMM017-ZZSY       =     IT_SELECTED_TMP-ZZSY.     "暂支事由
      IT_ZMM017-BRTWR      =     IT_SELECTED_TMP-BRTWR.    "暂支金额
      IT_ZMM017-A_MENT     =     IT_SELECTED_TMP-A_MENT.   "暂支比例(%)
      IT_ZMM017-A_TAX      =     IT_SELECTED_TMP-A_TAX.    "是否含税
      IT_ZMM017-WAERS      =     IT_SELECTED_TMP-WAERS.    "币种
      IT_ZMM017-A_ERNAM    =     IT_SELECTED_TMP-A_ERNAM.  "创建人
      IT_ZMM017-BUKRS      =     IT_SELECTED_TMP-BUKRS.    "公司代码
      IT_ZMM017-B_BEDAT    =     IT_SELECTED_TMP-B_BEDAT.  "创建日期
      IT_ZMM017-A_TIME     =     IT_SELECTED_TMP-A_TIME.   "创建时间
      IT_ZMM017-A_BNAME    =     IT_SELECTED_TMP-A_BNAME.  "修改人
      IT_ZMM017-A_TIME1    =     IT_SELECTED_TMP-A_TIME1.  "修改时间
      IT_ZMM017-C_MODAT    =     IT_SELECTED_TMP-C_MODAT.  "修改日期
      IT_ZMM017-NAME_FIRST =     IT_SELECTED_TMP-NAME_FIRST."受款人
      IT_ZMM017-A_FUKUAN   =     IT_SELECTED_TMP-A_FUKUAN."付款日期
      IT_ZMM017-KBETR   =     IT_SELECTED_TMP-KBETR.      "税率
      MODIFY ZZMM017 FROM IT_ZMM017.
      CLEAR IT_ZMM017.
    ENDIF.

  ENDLOOP.

  DATA:
    LW_PATH              TYPE RSPOPNAME,
    LW_FUNC_NAME         TYPE RS38L_FNAM,
    T_CONTROL_PARAMETERS TYPE SSFCTRLOP,
    T_OUTPUT_OPTIONS     TYPE SSFCOMPOP.
***获取SMARTFORMS的Function Module***
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      FORMNAME           = 'ZMM017'                    "SMARTFORMS的表名
    IMPORTING
      FM_NAME            = LW_FUNC_NAME                      "功能名称
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.
  CLEAR:T_CONTROL_PARAMETERS,T_OUTPUT_OPTIONS.
***Smart Forms: 控制结构*****
  T_CONTROL_PARAMETERS-PREVIEW       = 'X'.             "不打印预览,X 则打印预览
  T_CONTROL_PARAMETERS-NO_OPEN       = 'X'.             "新的假脱机请求(必写)
  T_CONTROL_PARAMETERS-NO_CLOSE      = 'X'.             "不关闭新的假脱机请求(必写)
  T_CONTROL_PARAMETERS-NO_DIALOG     = ' '.             "弹出打印设置的对话框,X 则不显示框
  T_CONTROL_PARAMETERS-DEVICE        = 'PRINTER'.       "PRINTER\MAIL\TELEFAX,缺省是PRINTER
***SAP Smart Forms: 智能写作器 (传输) 选项*****
  T_OUTPUT_OPTIONS-TDNOPREV  = ' '.                      "是否打印预览,X是不预览。
  T_OUTPUT_OPTIONS-TDNOPRINT = ' '.                      "没有打印预览的打印输出,设置X。
  T_OUTPUT_OPTIONS-TDIMMED   = ' '.                      "立即打印标志。
  T_OUTPUT_OPTIONS-TDDEST    = 'LP01'.                   "假脱机,输出设备。
***调用SSF_OPEN函数设置打印机,打开输出请求,使用用户打印设置必须调用SSF_OPEN***
  CALL FUNCTION 'SSF_OPEN'
    EXPORTING
      OUTPUT_OPTIONS     = T_OUTPUT_OPTIONS
      CONTROL_PARAMETERS = T_CONTROL_PARAMETERS
      USER_SETTINGS      = ' '
    EXCEPTIONS
      FORMATTING_ERROR   = 1
      INTERNAL_ERROR     = 2
      SEND_ERROR         = 3
      USER_CANCELED      = 4
      OTHERS             = 5.
  "循环工作区如果SEL_BOX=X

  LOOP AT IT_SELECTED_TMP WHERE SEL_BOX = 'X' .
    DATA YEAR(4) TYPE C.
    DATA YUE(2)  TYPE C.
    DATA RI(2)   TYPE C.
    DATA SHUI(3) TYPE C.

    YEAR = IT_SELECTED_TMP-A_BEDAT+0(4).
    YUE = IT_SELECTED_TMP-A_BEDAT+4(2).
    RI = IT_SELECTED_TMP-A_BEDAT+6(2).

    DATA A_YEAR(4) TYPE C.
    DATA A_YUE(2)  TYPE C.
    DATA A_RI(2)   TYPE C.
    A_YEAR = IT_SELECTED_TMP-A_FUKUAN+0(4).
    A_YUE = IT_SELECTED_TMP-A_FUKUAN+4(2).
    A_RI = IT_SELECTED_TMP-A_FUKUAN+6(2).

    IF IT_SELECTED_TMP-A_TAX = 'X'.
      SHUI = '含税'.
    ELSE.
      SHUI =  '未税'.
    ENDIF.

    DATA C_MENT(3) TYPE C.
    DATA C_BEIZHU(250) TYPE C.
    DATA C_FUKUAN(8) TYPE C.
    DATA C_ZANZH TYPE CHAR1.
    C_FUKUAN = IT_SELECTED_TMP-A_FUKUAN.
    C_MENT = IT_SELECTED_TMP-A_MENT.
    C_ZANZH = IT_SELECTED_TMP-A_ZANZH+3(1).
    CONCATENATE  SHUI ',' '预付:' C_MENT '%' ',' '付款日期' A_YEAR '-'  A_YUE '-' A_RI ',' '暂支次数' C_ZANZH '次'  INTO C_BEIZHU.
    CONDENSE C_BEIZHU NO-GAPS.

    SELECT SINGLE NAME1   INTO  IT_SELECTED_TMP-NAME1_T FROM T001W WHERE WERKS = IT_SELECTED_TMP-BUKRS.

    SELECT
     BRTWR
     TXZ01
     MENGE
     WAERS
     NETWR
      MEINS
      INTO CORRESPONDING FIELDS OF TABLE IT_TAB01
      FROM EKPO AS A   INNER JOIN
           EKKO AS B ON  A~EBELN = B~EBELN
      WHERE A~EBELN = IT_SELECTED_TMP-EBELN.
    DATA:   LDANJIA(16) TYPE P DECIMALS 4. "含税单价
    IT_TAB01-A_TAX = IT_SELECTED_TMP-A_TAX.

    LOOP AT IT_TAB01.
      IF IT_TAB01-A_TAX = 'X'..
        IT_TAB01-B_BRTWR =  IT_TAB01-BRTWR.
      ELSE.
        IT_TAB01-B_BRTWR   = IT_TAB01-NETWR.
      ENDIF.
      IF IT_TAB01-WAERS = 'JPY' .
        IT_TAB01-B_BRTWR =  IT_TAB01-B_BRTWR * 100. " 日元
      ENDIF.
      IF IT_TAB01-WAERS = 'JPY'.
        LDANJIA = IT_TAB01-B_BRTWR / IT_TAB01-MENGE.
      ELSE.
        LDANJIA = IT_TAB01-BRTWR / IT_TAB01-MENGE.
      ENDIF.
      DATA C_MENGE(30) TYPE C.
      DATA C_LDANJIA(20) TYPE C.
      DATA C_BRTWR(30) TYPE C.
      C_MENGE = IT_TAB01-MENGE.
      C_LDANJIA = LDANJIA.
      IF IT_TAB01-WAERS = 'JPY'.
        C_BRTWR = IT_TAB01-B_BRTWR.
      ELSE.
        C_BRTWR = IT_TAB01-BRTWR.
      ENDIF.

      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
        EXPORTING
          INPUT          = IT_TAB01-MEINS
          LANGUAGE       = SY-LANGU
        IMPORTING
*         LONG_TEXT      =
          OUTPUT         = IT_TAB01-MEINS
*         SHORT_TEXT     =
        EXCEPTIONS
          UNIT_NOT_FOUND = 1
          OTHERS         = 2.

      CONCATENATE IT_TAB01-TXZ01 ',' '数量:' C_MENGE ',' '单位:' IT_TAB01-MEINS ',' '单价:' C_LDANJIA ',' '金额:' C_BRTWR INTO IT_TAB01-ZZSY.
      CONDENSE IT_TAB01-ZZSY NO-GAPS.
      MODIFY IT_TAB01.
    ENDLOOP.

    DATA: LNUM TYPE CHAR2.
    CLEAR :IT_TAB02[] ,LNUM.
    LOOP AT IT_TAB01.
      IT_TAB02-ZZSY = IT_TAB01-ZZSY.
      LNUM = LNUM + 1.
      IT_TAB02-LNUM = LNUM.
      APPEND IT_TAB02.
    ENDLOOP.
    IF IT_SELECTED_TMP-WAERS = 'CNY'.
      IF IT_SELECTED_TMP-KBETR IS INITIAL.
        SELECT SINGLE MWSKZ  INTO IT_SELECTED_TMP-MWSKZ FROM EKPO WHERE EBELN = IT_SELECTED_TMP-EBELN.
        SELECT SINGLE  B~KBETR INTO IT_SELECTED_TMP-KBETR   FROM KONP AS B INNER JOIN
                                           A003 AS A ON A~KNUMH = B~KNUMH AND A~MWSKZ = B~MWSK1
                                           WHERE A~MWSKZ = IT_SELECTED_TMP-MWSKZ AND  A~KSCHL = 'MWVS' AND A~KAPPL = 'TX' AND A~ALAND = 'CN'.
        IT_SELECTED_TMP-KBETR = IT_SELECTED_TMP-KBETR / 10.  "税率算法
      ENDIF.
    ENDIF.

    CALL FUNCTION LW_FUNC_NAME                          "则循环打印规则
      EXPORTING
        CONTROL_PARAMETERS = T_CONTROL_PARAMETERS     "设置不显示打印确认对话框
        OUTPUT_OPTIONS     = T_OUTPUT_OPTIONS         "默认打印选项设置传输
        USER_SETTINGS      = SPACE
        EBELN              = IT_SELECTED_TMP-EBELN    "订单号
        NAME_FIRST         = IT_SELECTED_TMP-NAME_FIRST "受款人
        NAME1              = IT_SELECTED_TMP-NAME1    "供应商
        ZZSY               = IT_SELECTED_TMP-ZZSY     "暂支事由
        BRTWR              = IT_SELECTED_TMP-BRTWR    "暂支金额
        A_DAXIE            = IT_SELECTED_TMP-A_DAXIE  "大写金额
        YEAR               = YEAR
        YUE                = YUE
        RI                 = RI
        C_BEIZHU           = C_BEIZHU
        BUKRS              = IT_SELECTED_TMP-BUKRS
        NAME1_T            = IT_SELECTED_TMP-NAME1_T
        WAERS              = IT_SELECTED_TMP-WAERS
        KBETR              = IT_SELECTED_TMP-KBETR
      TABLES
        IT_TAB             = IT_TAB02
      EXCEPTIONS
        FORMATTING_ERROR   = 1
        INTERNAL_ERROR     = 2
        SEND_ERROR         = 3
        USER_CANCELED      = 4
        OTHERS             = 5.

  ENDLOOP.

  IF SY-SUBRC <> 0.
*    MESSAGE S008(ZHKTL1) WITH SY-SUBRC DISPLAY LIKE CNS_E.
*    LEAVE LIST-PROCESSING.
  ENDIF.

***关闭打印机设置***
  CALL FUNCTION 'SSF_CLOSE'
*  IMPORTING
*    JOB_OUTPUT_INFO
    EXCEPTIONS
      FORMATTING_ERROR = 1
      INTERNAL_ERROR   = 2
      SEND_ERROR       = 3
      OTHERS           = 4.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

  LOOP AT IT_ZMM017_TMP WHERE SEL_BOX = 'X'.
    IT_ZMM017_TMP-A_PRINT = 'X'.
    MODIFY IT_ZMM017_TMP.
  ENDLOOP.

ENDFORM.


*&---------------------------------------------------------------------*
*&      Module  STATUS_2000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_2000 OUTPUT.
  SET PF-STATUS 'ZMM017_A'.
  SET TITLEBAR 'TITLE0100'.

  PERFORM F_DISPLAY_ALV.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_2000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2000 INPUT.
  DATA:OK_UCOMM    TYPE SY-UCOMM.
*       RS_SELFIELD TYPE SLIS_SELFIELD.
  OK_UCOMM = SY-UCOMM.
  CLEAR SY-UCOMM.
  CASE OK_UCOMM.
    WHEN 'BACK'.
      SET SCREEN 0.

    WHEN 'CREATE'.
      CLEAR IT_SELECTED[].
      LOOP AT IT_TAB WHERE SEL_BOX = 'X'.
        APPEND  IT_TAB TO IT_SELECTED  .
      ENDLOOP.


      DATA LV_CONT_A(1) TYPE C.
      CLEAR LV_CONT_A.
      DESCRIBE TABLE IT_SELECTED LINES LV_CONT_A.

      IF LV_CONT_A > 1.
        MESSAGE '错误!不允许同时操作多个订单' TYPE 'E'.
      ENDIF.

      IF IT_SELECTED[] IS NOT INITIAL.
        PERFORM   GET_DATA_XINZENG.                     "则调用定义的模块
      ELSE.
        MESSAGE '至少选择一个条目' TYPE 'E'.
      ENDIF.


    WHEN 'PRINT'.

      CLEAR IT_SELECTED_TMP[].
      LOOP AT IT_ZMM017_TMP WHERE SEL_BOX = 'X'.
        APPEND IT_ZMM017_TMP TO IT_SELECTED_TMP  .
      ENDLOOP.
      IF IT_SELECTED_TMP[] IS NOT INITIAL.
        PERFORM GET_PRINT1.                  "则调用定义的模块
      ELSE.
        MESSAGE '至少选择一个条目' TYPE 'E'.
      ENDIF.

    WHEN  'REPRINT'.
      CLEAR IT_SELECTED_TMP[].
      LOOP AT IT_ZMM017_TMP WHERE SEL_BOX = 'X'.
        APPEND IT_ZMM017_TMP TO IT_SELECTED_TMP  .
      ENDLOOP.

      IF IT_SELECTED_TMP[] IS NOT INITIAL.
        PERFORM  GET_PRINT .                  "则调用定义的模块
      ELSE.
        MESSAGE '至少选择一个条目' TYPE 'E'.
      ENDIF.

    WHEN 'DELETE'.
      CLEAR IT_SELECTED_TMP[].
      LOOP AT IT_ZMM017_TMP WHERE SEL_BOX = 'X'.
        APPEND IT_ZMM017_TMP TO IT_SELECTED_TMP  .
      ENDLOOP.

      IF IT_SELECTED_TMP[] IS NOT INITIAL.
        PERFORM  GET_DELETE .                  "则调用定义的模块
      ELSE.
        MESSAGE '至少选择一个条目' TYPE 'E'.
      ENDIF.


    WHEN OTHERS.                      "其他的不操作
  ENDCASE.


ENDMODULE.
*&---------------------------------------------------------------------*
*&      Form  F_DISPLAY_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_DISPLAY_ALV .
  PERFORM PREPARE_TOOLBAR CHANGING GT_EXCLUDE.

  PERFORM F_ALV1."暂支单发起

  PERFORM F_ALV2."暂支单打印

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_TOOLBAR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_GT_EXCLUDE  text
*----------------------------------------------------------------------*
FORM PREPARE_TOOLBAR  CHANGING P_GT_EXCLUDE TYPE UI_FUNCTIONS.
  DATA LS_EXCLUDE TYPE UI_FUNC.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAXIMUM.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MINIMUM.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_AVERAGE.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_MB_SUM.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_MB_SUBTOT.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT_BACK.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT_PREV.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_REFRESH.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CHECK.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CHECK.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_INFO.
  APPEND LS_EXCLUDE TO P_GT_EXCLUDE.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  F_ALV1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_ALV1 .
  IF GR_ALVGRID1 IS INITIAL.
* Creating custom container instance
    CREATE OBJECT GR_CCONTAINER1
      EXPORTING
        CONTAINER_NAME              = GC_CUSTOM_CONTROL_NAME1
      EXCEPTIONS
        CNTL_ERROR                  = 1
        CNTL_SYSTEM_ERROR           = 2
        CREATE_ERROR                = 3
        LIFETIME_ERROR              = 4
        LIFETIME_DYNPRO_DYNPRO_LINK = 5
        OTHERS                      = 6.
    IF SY-SUBRC <> 0.
    ENDIF.
* Creating ALV Grid instance
    CREATE OBJECT GR_ALVGRID1
      EXPORTING
        I_PARENT          = GR_CCONTAINER1
      EXCEPTIONS
        ERROR_CNTL_CREATE = 1
        ERROR_CNTL_INIT   = 2
        ERROR_CNTL_LINK   = 3
        ERROR_DP_CREATE   = 4
        OTHERS            = 5.
    IF SY-SUBRC <> 0.
    ENDIF.
* Preparing field catalog
    PERFORM PREPARE_FIELD_CATALOG1." CHANGING gt_fieldcat1.
* Preparing layout structure
    PERFORM PREPARE_LAYOUT1." CHANGING gs_layout1.

* Create an instance for the event handler
    CREATE OBJECT GR_EVENT_HANDLER1.
* Registering handler methods to handle ALV Grid events
    SET HANDLER GR_EVENT_HANDLER1->HANDLE_TOOLBAR FOR GR_ALVGRID1.
    SET HANDLER GR_EVENT_HANDLER1->HANDLE_USER_COMMAND FOR GR_ALVGRID1.



    CALL METHOD GR_ALVGRID1->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        IS_LAYOUT                     = GS_LAYOUT1
        IT_TOOLBAR_EXCLUDING          = GT_EXCLUDE[]
      CHANGING
        IT_OUTTAB                     = IT_TAB[]
        IT_FIELDCATALOG               = GT_FIELDCAT1
*       it_sort                       = gt_sort[]
*       it_filter                     = gt_filt[]
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION = 1
        PROGRAM_ERROR                 = 2
        TOO_MANY_LINES                = 3
        OTHERS                        = 4.
    IF SY-SUBRC <> 0.
    ENDIF.

  ELSE.
    CALL METHOD GR_ALVGRID1->REFRESH_TABLE_DISPLAY
      EXCEPTIONS
        FINISHED = 1
        OTHERS   = 2.
    IF SY-SUBRC <> 0.
    ENDIF.
    CALL METHOD GR_ALVGRID1->SET_SELECTED_ROWS
      EXPORTING
        IT_ROW_NO = GT_ROW_NO.
    IF SY-SUBRC <> 0.
    ENDIF.
    CALL METHOD GR_ALVGRID1->SET_SCROLL_INFO_VIA_ID
      EXPORTING
        IS_COL_INFO = GT_COL_INFO
        IS_ROW_NO   = ST_ROW_NO.
    IF SY-SUBRC <> 0.
    ENDIF.

  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  F_ALV2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_ALV2 .
  IF GR_ALVGRID2 IS INITIAL.
* Creating custom container instance
    CREATE OBJECT GR_CCONTAINER2
      EXPORTING
        CONTAINER_NAME              = GC_CUSTOM_CONTROL_NAME2
      EXCEPTIONS
        CNTL_ERROR                  = 1
        CNTL_SYSTEM_ERROR           = 2
        CREATE_ERROR                = 3
        LIFETIME_ERROR              = 4
        LIFETIME_DYNPRO_DYNPRO_LINK = 5
        OTHERS                      = 6.
    IF SY-SUBRC <> 0.
    ENDIF.
* Creating ALV Grid instance
    CREATE OBJECT GR_ALVGRID2
      EXPORTING
        I_PARENT          = GR_CCONTAINER2
      EXCEPTIONS
        ERROR_CNTL_CREATE = 1
        ERROR_CNTL_INIT   = 2
        ERROR_CNTL_LINK   = 3
        ERROR_DP_CREATE   = 4
        OTHERS            = 5.
    IF SY-SUBRC <> 0.
    ENDIF.
* Preparing field catalog
    PERFORM PREPARE_FIELD_CATALOG2." CHANGING gt_fieldcat1.
* Preparing layout structure
    PERFORM PREPARE_LAYOUT2." CHANGING gs_layout1.
* Edit Cell
*    PERFORM prepare_editcells1.

*( Create an instance for the event handler
    CREATE OBJECT GR_EVENT_HANDLER2.
* Registering handler methods to handle ALV Grid events
    SET HANDLER GR_EVENT_HANDLER2->HANDLE_USER_COMMAND FOR GR_ALVGRID2.
    SET HANDLER GR_EVENT_HANDLER2->HANDLE_TOOLBAR FOR GR_ALVGRID2.
*    SET HANDLER gr_event_handler1->handle_data_changed FOR gr_alvgrid1.

    CALL METHOD GR_ALVGRID2->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        IS_LAYOUT                     = GS_LAYOUT2
        IT_TOOLBAR_EXCLUDING          = GT_EXCLUDE[]
      CHANGING
        IT_OUTTAB                     = IT_ZMM017_TMP[]
        IT_FIELDCATALOG               = GT_FIELDCAT2
*       it_sort                       = gt_sort[]
*       it_filter                     = gt_filt[]
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION = 1
        PROGRAM_ERROR                 = 2
        TOO_MANY_LINES                = 3
        OTHERS                        = 4.
    IF SY-SUBRC <> 0.
    ENDIF.
*    CALL METHOD gr_alvgrid2->set_toolbar_interactive.
*    CALL METHOD gr_alvgrid2->set_ready_for_input
*      EXPORTING
*        i_ready_for_input = 1.
*    CALL METHOD gr_alvgrid2->register_edit_event
*      EXPORTING
*        i_event_id = cl_gui_alv_grid=>mc_evt_modified.
  ELSE.
    CALL METHOD GR_ALVGRID2->REFRESH_TABLE_DISPLAY
*      exporting
*        IS_STABLE = 'X'
*        I_SOFT_REFRESH
      EXCEPTIONS
        FINISHED = 1
        OTHERS   = 2.
    IF SY-SUBRC <> 0.
    ENDIF.
    CALL METHOD GR_ALVGRID2->SET_SELECTED_ROWS
      EXPORTING
        IT_ROW_NO = GT_ROW_NO.
    IF SY-SUBRC <> 0.
    ENDIF.
    CALL METHOD GR_ALVGRID2->SET_SCROLL_INFO_VIA_ID
      EXPORTING
        IS_COL_INFO = GT_COL_INFO
        IS_ROW_NO   = ST_ROW_NO.
    IF SY-SUBRC <> 0.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_FIELD_CATALOG1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PREPARE_FIELD_CATALOG1 .
  DATA LS_FCAT TYPE LVC_S_FCAT.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'SEL_BOX'.
  LS_FCAT-COL_POS = 1.
  LS_FCAT-CHECKBOX = 'X'.
  LS_FCAT-EDIT = 'X'.
  LS_FCAT-COLTEXT = '选择'.
  LS_FCAT-SELTEXT = '选择'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_EBELN'.
  LS_FCAT-HOTSPOT = 'X'.
  LS_FCAT-REF_TABLE = 'IT_TAB'.
  LS_FCAT-COL_POS = 2.
  LS_FCAT-COLTEXT = '采购订单号'.
  LS_FCAT-SELTEXT = '采购订单号'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'NAME_FIRST'.
  LS_FCAT-COL_POS = 3.
  LS_FCAT-COLTEXT = '采购人员(受款人)'.
  LS_FCAT-SELTEXT = '采购人员(受款人)'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'LIFNR'.
  LS_FCAT-COL_POS = 4.
  LS_FCAT-COLTEXT = '供应商'.
  LS_FCAT-SELTEXT = '供应商'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'NAME1'.
  LS_FCAT-COL_POS = 5.
  LS_FCAT-COLTEXT = '供应商名称'.
  LS_FCAT-SELTEXT = '供应商名称'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'TXZ01'.
  LS_FCAT-COL_POS = 6.
  LS_FCAT-COLTEXT = '物料描述'.
  LS_FCAT-SELTEXT = '物料描述'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'MENGE'.
  LS_FCAT-COL_POS = 7.
  LS_FCAT-COLTEXT = '采购数量'.
  LS_FCAT-SELTEXT = '采购数量'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'MEINS'.
  LS_FCAT-COL_POS = 7.
  LS_FCAT-REF_TABLE = 'MSEG'.
  LS_FCAT-REF_FIELD = 'MEINS'.
  LS_FCAT-COLTEXT = '单位'.
  LS_FCAT-SELTEXT = '单位'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'LDANJIA'.
  LS_FCAT-COL_POS = 9.
  LS_FCAT-COLTEXT = '含税单价'.
  LS_FCAT-SELTEXT = '含税单价'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'B_BRTWR'.
  LS_FCAT-COL_POS = 8.
  LS_FCAT-COLTEXT = '含税金额'.
  LS_FCAT-SELTEXT = '含税金额'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'WAERS'.
  LS_FCAT-COL_POS = 11.
  LS_FCAT-COLTEXT = '币种'.
  LS_FCAT-SELTEXT = '币种'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_MENT'.
  LS_FCAT-COL_POS = 12.
  LS_FCAT-EDIT = 'X'.
  LS_FCAT-COLTEXT = '暂支比例(付款)'.
  LS_FCAT-SELTEXT = '暂支比例(付款)'.
  APPEND LS_FCAT TO GT_FIELDCAT1.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_TAX'.
  LS_FCAT-COL_POS = 13.
  LS_FCAT-CHECKBOX = 'X'.
  LS_FCAT-EDIT = 'X'.
  LS_FCAT-COLTEXT = '是否含税'.
  LS_FCAT-SELTEXT = '是否含税'.
  APPEND LS_FCAT TO GT_FIELDCAT1.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_LAYOUT1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PREPARE_LAYOUT1 .
  GS_LAYOUT1-ZEBRA = 'X'.
  GS_LAYOUT1-CWIDTH_OPT = 'X'.
  GS_LAYOUT1-GRID_TITLE = ''.
  DATA: DATE TYPE SY-DATUM.
  DATA: YUE TYPE SY-DATUM.
  DATA: RI TYPE SY-DATUM.
  DATE = SY-DATUM+0(4).
  YUE  = SY-DATUM+4(2).
  RI   = SY-DATUM+6(2).

  DATA: SHI  TYPE CHAR2,
        FEN  TYPE CHAR2,
        MIAO TYPE CHAR2.

  SHI = SY-UZEIT+0(2).
  FEN = SY-UZEIT+2(2).
  MIAO = SY-UZEIT+4(2).

  DATA LV_CONT_A(10) TYPE C.
  CLEAR LV_CONT_A.
  DESCRIBE TABLE IT_TAB LINES LV_CONT_A.
  CONDENSE LV_CONT_A NO-GAPS.

  CONCATENATE  '当前用户:' SY-UNAME   '当前日期:' DATE '年' YUE '月' RI '日'  '显示条目:' LV_CONT_A  INTO GS_LAYOUT1-GRID_TITLE SEPARATED BY SPACE.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_FIELD_CATALOG2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PREPARE_FIELD_CATALOG2 .
  DATA LS_FCAT TYPE LVC_S_FCAT.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'SEL_BOX'.
  LS_FCAT-COL_POS = 1.
  LS_FCAT-CHECKBOX = 'X'.
  LS_FCAT-EDIT = 'X'.
  LS_FCAT-COLTEXT = '选择'.
  LS_FCAT-SELTEXT = '选择'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'EBELN'.
  LS_FCAT-COL_POS = 2.
  LS_FCAT-COLTEXT = '采购订单号'.
  LS_FCAT-SELTEXT = '采购订单号'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'NAME_FIRST'.
  LS_FCAT-COL_POS = 3.
  LS_FCAT-COLTEXT = '采购人员(受款人)'.
  LS_FCAT-SELTEXT = '采购人员(受款人)'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'NAME1'.
  LS_FCAT-COL_POS = 4.
  LS_FCAT-COLTEXT = '供应商名称'.
  LS_FCAT-SELTEXT = '供应商名称'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_ZANZH'.
  LS_FCAT-COL_POS = 5.
  LS_FCAT-COLTEXT = '暂支单次数'.
  LS_FCAT-SELTEXT = '暂支单次数'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'ZZSY'.
  LS_FCAT-COL_POS = 6.
  LS_FCAT-COLTEXT = '暂支事由'.
  LS_FCAT-SELTEXT = '暂支事由'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'BRTWR'.
  LS_FCAT-COL_POS = 7.
  LS_FCAT-COLTEXT = '暂支金额'.
  LS_FCAT-SELTEXT = '暂支金额'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_MENT'.
  LS_FCAT-COL_POS = 8.
  LS_FCAT-COLTEXT = '暂支比例(付款)'.
  LS_FCAT-SELTEXT = '暂支比例(付款)'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'WAERS'.
  LS_FCAT-COL_POS = 9.
  LS_FCAT-COLTEXT = '币种'.
  LS_FCAT-SELTEXT = '币种'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_BEDAT'.
  LS_FCAT-COL_POS = 10.
  LS_FCAT-EDIT = 'X'.
  LS_FCAT-COLTEXT = '暂 支 日 期'.
  LS_FCAT-SELTEXT = '暂 支 日 期'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_FUKUAN'.
  LS_FCAT-COL_POS = 11.
  LS_FCAT-EDIT = 'X'.
  LS_FCAT-COLTEXT = '付 款 日 期'.
  LS_FCAT-SELTEXT = '付款日期'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_ERNAM'.
  LS_FCAT-COL_POS = 12.
  LS_FCAT-COLTEXT = '创建人'.
  LS_FCAT-SELTEXT = '创建人'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'B_BEDAT'.
  LS_FCAT-COL_POS = 13.
  LS_FCAT-COLTEXT = '创建日期'.
  LS_FCAT-SELTEXT = '创建日期'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_TIME'.
  LS_FCAT-COL_POS = 14.
  LS_FCAT-COLTEXT = '创建时间'.
  LS_FCAT-SELTEXT = '创建时间'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_BNAME'.
  LS_FCAT-COL_POS = 15.
  LS_FCAT-COLTEXT = '修改人'.
  LS_FCAT-SELTEXT = '修改人'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'C_MODAT'.
  LS_FCAT-COL_POS = 16.
  LS_FCAT-COLTEXT = '修改日期'.
  LS_FCAT-SELTEXT = '修改日期'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_TIME1'.
  LS_FCAT-COL_POS = 17.
  LS_FCAT-COLTEXT = '修改时间'.
  LS_FCAT-SELTEXT = '修改时间'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_PRINT'.
  LS_FCAT-COL_POS = 18.
  LS_FCAT-CHECKBOX = 'X'.
  LS_FCAT-COLTEXT = '打印状态'.
  LS_FCAT-SELTEXT = '打印状态'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_TAX'.
  LS_FCAT-COL_POS = 18.
  LS_FCAT-CHECKBOX = 'X'.
  LS_FCAT-COLTEXT = '是否含税'.
  LS_FCAT-SELTEXT = '是否含税'.
  APPEND LS_FCAT TO GT_FIELDCAT2.

  CLEAR LS_FCAT.
  LS_FCAT-FIELDNAME = 'A_BEIZ'.
  LS_FCAT-COL_POS = 18.
  LS_FCAT-EDIT = 'X'.
  LS_FCAT-COLTEXT = '备 注(重置打印,删除必填)'.
  LS_FCAT-SELTEXT = '备 注(重置打印,删除必填)'.
  APPEND LS_FCAT TO GT_FIELDCAT2.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_LAYOUT2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PREPARE_LAYOUT2 .
  GS_LAYOUT2-ZEBRA = 'X'.
  GS_LAYOUT2-CWIDTH_OPT = 'X'.
ENDFORM.
**&---------------------------------------------------------------------*
**&      Form  F_PRO_UCOMM
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM F_PRO_UCOMM .
*  CASE SSCRFIELDS-UCOMM.
*    WHEN 'ONLI'.
*      PERFORM F_UPLOAD_FILE.
*    WHEN OTHERS.
*  ENDCASE.
*
*ENDFORM.
**&---------------------------------------------------------------------*
**&      Form  F_UPLOAD_FILE
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM F_UPLOAD_FILE .
*IF S_NAME <> SY-UNAME.
*MESSAGE '不允许操作其他采购人员发起的订单' TYPE 'E'.
*ENDIF.
*
*
*ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_DELETE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DELETE .

  LOOP AT IT_ZMM017_TMP WHERE SEL_BOX = 'X'.
    IF IT_ZMM017_TMP-A_BEIZ IS INITIAL.
      MESSAGE '删除条目必须在备注填写理由,否则不能操作' TYPE 'E' DISPLAY LIKE 'I'.
    ENDIF.
  ENDLOOP.
  DELETE IT_ZMM017_TMP WHERE SEL_BOX = 'X'.
  LOOP AT IT_SELECTED_TMP.
    IT_ZMM017-EBELN      =     IT_SELECTED_TMP-EBELN.    "订单号
    IT_ZMM017-A_BEDAT    =     IT_SELECTED_TMP-A_BEDAT.  "暂支日期
    IT_ZMM017-A_PRINT    =     IT_SELECTED_TMP-A_PRINT.  "打印状态
    IT_ZMM017-LIFNR      =     IT_SELECTED_TMP-LIFNR.    "供应商
    IT_ZMM017-A_ZANZH    =     IT_SELECTED_TMP-A_ZANZH.  "暂支次数
    IT_ZMM017-NAME1      =     IT_SELECTED_TMP-NAME1.    "供应商简称
    IT_ZMM017-ZZSY       =     IT_SELECTED_TMP-ZZSY.     "暂支事由
    IT_ZMM017-BRTWR      =     IT_SELECTED_TMP-BRTWR.    "暂支金额
    IT_ZMM017-A_MENT     =     IT_SELECTED_TMP-A_MENT.   "暂支比例(%)
    IT_ZMM017-A_TAX      =     IT_SELECTED_TMP-A_TAX.    "是否含税
    IT_ZMM017-WAERS      =     IT_SELECTED_TMP-WAERS.    "币种
    IT_ZMM017-A_ERNAM    =     IT_SELECTED_TMP-A_ERNAM.  "创建人
    IT_ZMM017-BUKRS      =     IT_SELECTED_TMP-BUKRS.    "公司代码
    IT_ZMM017-B_BEDAT    =     IT_SELECTED_TMP-B_BEDAT.  "创建日期
    IT_ZMM017-A_TIME     =     IT_SELECTED_TMP-A_TIME.   "创建时间
    IT_ZMM017-A_BNAME    =     IT_SELECTED_TMP-A_BNAME.  "修改人
    IT_ZMM017-A_TIME1    =     IT_SELECTED_TMP-A_TIME1.  "修改时间
    IT_ZMM017-C_MODAT    =     IT_SELECTED_TMP-C_MODAT.  "修改日期
    IT_ZMM017-NAME_FIRST =     IT_SELECTED_TMP-NAME_FIRST."受款人
    IT_ZMM017-A_FUKUAN   =     IT_SELECTED_TMP-A_FUKUAN.  "付款日期
    IT_ZMM017-A_BEIZ     =     IT_SELECTED_TMP-A_BEIZ.  "备注
    IT_ZMM017-KBETR      =     IT_SELECTED_TMP-KBETR.      "税率
    IT_ZMM017-DELETE_T   =     'X' .  "删除标示
    MODIFY ZZMM017 FROM IT_ZMM017.
    CLEAR IT_ZMM017.

    MESSAGE '删除成功' TYPE 'S'.


  ENDLOOP.
ENDFORM.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小啊曼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值