1. 程式人生 > >abap中,利用write進行表單列印示例

abap中,利用write進行表單列印示例

*&---------------------------------------------------------------------*
*& Report  Z_PRINT_LEND                                                *
*&                                                                     *
*&---------------------------------------------------------------------*

*&developer : liuxy
*&date      : 2015.04.23
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_PRINT_LEND NO STANDARD PAGE HEADING."借還物臺帳

TABLES : ZLEND_MAIN,ZLEND_DETAIL,ZRETURN_INFOR,ZRENEW_INFOR,ZLEND_LL.
TABLES
 : SSCRFIELDS , ZT016T."用於按鈕的]欄位屬性
DATA : FLAG TYPE C.
DATA : LEND_MAIN LIKE ZLEND_MAIN OCCURS 0 WITH HEADER LINE.
DATA : LEND_DETAIL LIKE ZLEND_DETAIL OCCURS 0 WITH HEADER LINE.
DATA : RETURN_DATA LIKE ZRETURN_INFOR OCCURS 0 WITH HEADER LINE.
DATA : LEND_LL LIKE ZLEND_LL OCCURS 0 WITH HEADER LINE.
DATA
 : LEND_LL2 LIKE ZLEND_LL OCCURS 0 WITH HEADER LINE.
DATA : ITAB(72OCCURS 0 WITH HEADER LINE.
DATA : P_PRO(10) ,LLD_NO(10) , HLD_NO(10) ,TT TYPE C,P_PRY(10).
DATA : NUM,NUM2(20),P_NUM ,NUM3(20TYPE I.
DATA : APPLY_NUM , GET_NUM ,RET_NUM LIKE ZLEND_DETAIL-APPLY_NUM .
DATA : P_NO LIKE ZRETURN_INFOR-RETURN_NO ."用於記錄還物單號
DATA : S_STORE(10) ,NAME(20) ,NAME2(20TYPE C.
TYPE-POOLS: SLIS.
DATA: FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATABEGIN OF INFOR_ALL OCCURS 0,"用於記錄所有資訊
*        MANDT    like zlend_detail-mandt,"集團
*        line_no  like zlend_detail-line_no ,"行號
        LEND_NO  LIKE ZLEND_DETAIL-LEND_NO ,"借料單號碼
        MATNR    LIKE ZLEND_DETAIL-MATNR,"物料號
        STORE_TYPE LIKE ZLEND_DETAIL-STORE_TYPE,"庫類別
        PROPERTY LIKE ZLEND_DETAIL-PROPERTY,"屬性
        MEINS    LIKE ZLEND_DETAIL-MEINS,"計量單位
        APPLY_NUM  LIKE ZLEND_DETAIL-APPLY_NUM,"申請數量
        PRICE    LIKE ZLEND_DETAIL-PRICE,"單價
*        total    like zlend_detail-price,"總金額
        TOTAL    TYPE  I,"總計顯示
        APPLY_NO LIKE ZLEND_DETAIL-APPLY_NO,"申請單號
        NUM      LIKE ZLEND_DETAIL-APPLY_NUM,"拖欠數量
        GET_NUM  LIKE ZLEND_DETAIL-GET_NUM,"得到數量
        SENDER   LIKE ZLEND_DETAIL-SENDER,"發貨人
        STORER   LIKE ZLEND_DETAIL-SOTRER,"庫管人員  輸入用
        MACHI_SERIES  LIKE ZLEND_DETAIL-MACHI_SERIES ,"機器序列號
        RETURN_NUM LIKE ZLEND_DETAIL-RETURN_NUM,"歸還數量
        LAST_DATE  LIKE ZLEND_DETAIL-LAST_DATE,"最後一次的操作日期
        STATUS   LIKE ZLEND_DETAIL-STATUS,"狀態
        MAKTX    LIKE ZLEND_DETAIL-MAKTX,"物料描述
        SERIES   LIKE ZLEND_DETAIL-SERIES,"規格型號
        ZTBS     LIKE ZLEND_DETAIL-ZTBS,"在途標示
        CHECKS   TYPE C,"detail information
        LEND_DEPART LIKE ZLEND_MAIN-LEND_DEPART,"nomber
        LEND_DEP    LIKE ZLEND_MAIN-DEP_DETAIL,
        DEP_DETAIL  LIKE ZLEND_MAIN-DEP_DETAIL,"部門詳述
        LEND_DATE   LIKE ZLEND_MAIN-LEND_DATE,
        RETURN_DATE LIKE ZLEND_MAIN-RETURN_DATE,
        PURPOSE     LIKE ZLEND_MAIN-PURPOSE,
        PUR_DETAIL  LIKE ZLEND_MAIN-PUR_DETAIL,
        MANAGER1    LIKE ZLEND_MAIN-MANAGER1,
*        manager2    like zlend_main-manager2,
*        storer      like zlend_main-storer,
        OPERATOR    LIKE ZLEND_MAIN-OPERATOR,
        LENDER      LIKE ZLEND_MAIN-LENDER,
        OVER_DAY   TYPE I,
        RETURN_NO  LIKE ZLEND_DETAIL-LEND_NO,
*        have_date  like zreturn_infor-return_date,
        " 用於記錄超期天數
      END OF INFOR_ALL.
DATA : RETURN_DAT LIKE ZRETURN_INFOR OCCURS 0 WITH HEADER LINE.
DATA : LEND_NUM(16TYPE I .
DATA:S TYPE I,
     S2 TYPE I.


SELECTION-SCREEN BEGIN OF BLOCK RAD1 WITH FRAME TITLE T1."ADD group
SELECTION-SCREEN BEGIN OF LINE."新增選項 借物臺帳
SELECTION-SCREEN COMMENT 1(20) T11.
PARAMETERS LEND  RADIOBUTTON GROUP RAD1 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."還物臺帳
SELECTION-SCREEN COMMENT 1(20) T12.
PARAMETERS RETURN RADIOBUTTON GROUP RAD1 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK RAD1.        " end of group

*selection-screen begin of block che1 with frame title T7." add checbox
SELECTION-SCREEN BEGIN OF BLOCK RAD2 WITH FRAME TITLE T5."ADD GROUP 2

SELECTION-SCREEN BEGIN OF LINE."逾期未還借物的用途分類統計表
SELECTION-SCREEN COMMENT 1(20) T52."已還借物資訊lend_main,
"lend_detail
PARAMETERS OVER_PUR RADIOBUTTON GROUP RAD2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."已還物庫資訊統計
SELECTION-SCREEN COMMENT 1(20) T54."
PARAMETERS RETU_DAT RADIOBUTTON GROUP RAD2 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."按照歸還日期統計
SELECTION-SCREEN COMMENT 1(20) T55."
PARAMETERS P_DATE RADIOBUTTON GROUP RAD2 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."各月借物統計表
SELECTION-SCREEN COMMENT 1(20) T53."未還資訊
PARAMETERS MON_DAT RADIOBUTTON GROUP RAD2 DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK RAD2." END OF GROUP 2


SELECTION-SCREEN BEGIN OF BLOCK RAD3 WITH FRAME TITLE T7.
" begin of print
SELECTION-SCREEN BEGIN OF LINE."借物單列印
SELECTION-SCREEN COMMENT 1(20) T14.
*    parameters c_lend as checkbox.
PARAMETERS C_LEND  RADIOBUTTON GROUP RAD3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."還料單列印
SELECTION-SCREEN COMMENT 1(20) T15.
*    parameters c_retu as checkbox .
PARAMETERS C_RETU RADIOBUTTON GROUP RAD3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."領料單列印
SELECTION-SCREEN COMMENT 1(20) T16.
PARAMETERS C_LLD  RADIOBUTTON GROUP RAD3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK RAD3.

SELECTION-SCREEN BEGIN OF LINE."借物日期選項
SELECTION-SCREEN COMMENT 1(20) T2.
SELECT-OPTIONS L_DATE FOR ZLEND_MAIN-LEND_DATE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."歸還日期選項
SELECTION-SCREEN COMMENT 1(20) T6.
SELECT-OPTIONS R_DATE FOR ZLEND_MAIN-RETURN_DATE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE."部門選項
SELECTION-SCREEN COMMENT 1(20) T3.
*  PARAMETERS DEPART(20) TYPE C.
*  PARAMETERS : DEPART LIKE T016T-BRSCH .
SELECT-OPTIONS  DEPART FOR ZT016T-BRSCH .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(23) T4.
PARAMETERS PERMIT(8) ."審批人
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) T8.
*  PARAMETERS NO(10) ."借料單號
SELECT-OPTIONS NO FOR ZLEND_DETAIL-LEND_NO .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) T9.
*  PARAMETERS R_NO(10) ."還料單好
SELECT-OPTIONS R_NO FOR ZRETURN_INFOR-RETURN_NO.
SELECTION-SCREEN END OF LINE.

INITIALIZATION.

  T1 =  '臺帳選項'.
  T11 = '借物臺帳'.

  T12 = '單據列印'.

  T14 = '借料單列印'.
  T15 = '還料單列印'.
  T16 = '領料單列印'.
  T2 =  '請選擇借料日期:'.
  T3 = '部門選項:'.
  T4 = '審批人:'.
  T5 = '具體分類資訊'.

  T52 = '已還借物統計表'.
  T54 = '已還批次統計表'.
  T55 = '按歸還日期統計'.
  T53 = '未還借物統計表'.

  T6 = '請選擇還物日期:'.
  T7 = '單據種類選項:'.
  T8 = '借料單號:'.
  T9 = '還料單號:'.

AT SELECTION-SCREEN.

  CLEAR ITAB[].



  IF PERMIT <> ''.
    IF ITAB IS INITIAL.
      CONCATENATE 'manager1 = ' ' permit ' INTO ITAB.
    ELSE.
      CONCATENATE ' and manager1 = ' ' permit ' INTO ITAB.
    ENDIF.
    APPEND ITAB.
  ENDIF.
*  if NO <> '' .
*     if itab is initial.
*       concatenate 'lend_no = ' ' NO ' into itab .
*     else.
*       concatenate ' and lend_no = ' ' NO ' into itab.
*     endif.
*     append itab.
*  endif.


*  if SY-UNAME = 'LIUSHENG' .
*    if itab is initial.
*      concatenate 'operator = ' ' sy-uname ' into itab.
*    else.
*      concatenate ' and operator = ' ' sy-uname ' into itab.
*    endif.
*    append itab.
*  endif.
*  if SY-UNAME = 'NIEJIAN' .
*    if itab is initial.
*      concatenate 'operator = ' ' sy-uname ' into itab.
*    else.
*      concatenate ' and operator = ' ' sy-uname ' into itab.
*    endif.
*    append itab.
*  endif.
  IF SY-UNAME = 'LIUQJ'.
    IF ITAB IS INITIAL.
      CONCATENATE 'operator = ' ' sy-uname ' INTO ITAB.
    ELSE.
      CONCATENATE ' and operator = ' ' sy-uname ' INTO ITAB.
    ENDIF.
    APPEND ITAB.
  ENDIF.

START-OF-SELECTION.
*  set pf-status 'LEND01'.
END-OF-SELECTION.

  IF LEND =  'X'.
    IF MON_DAT = 'X'.
      PERFORM LEND_DATA."未還資訊
    ELSEIF RETU_DAT = 'X'.
      PERFORM RETURN_DATA."已還批次
    ELSEIF P_DATE = 'X'."按歸還時間統計
      PERFORM TIME_DATA.
    ELSEIF OVER_PUR = 'X'.
      PERFORM PUR_DATA."已還資訊
    ENDIF.
  ENDIF.
  IF RETURN = 'X'.
    PERFORM RETU_DAT.
  ENDIF.



*&--------------------------------------------------------------------*
*&      Form  LEND_DATA
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM LEND_DATA."借物臺帳未還資訊
  IF SY-UNAME = 'YINGZHAO' OR SY-UNAME = 'ZHANGSHP' OR SY-UNAME =
'YAOLJ'.
    NAME = '2000'.
    IF ITAB IS INITIAL.
      CONCATENATE 'LEND_DEPART = ' ' NAME 'INTO ITAB.
    ELSE.
      CONCATENATE ' AND LEND_DEPART = ' ' NAME 'INTO ITAB.
    ENDIF.
    APPEND ITAB.
    CLEAR DEPART.
  ENDIF.
*  if depart <> '' .
*    if itab is initial.
*        concatenate 'lend_depart = ' ' depart ' into itab.
*    else.
*       concatenate ' and lend_depart = ' ' depart ' into itab.
*    endif.
*    append itab.
*  endif.
  CLEAR LEND_MAIN[].
  CLEAR LEND_DETAIL[].
  CLEAR INFOR_ALL[].
  SELECT * INTO TABLE LEND_MAIN FROM ZLEND_MAIN WHERE LEND_DEPART
   IN DEPART AND LEND_NO IN NO AND LEND_DATE IN L_DATE AND
   RETURN_DATE IN R_DATE AND (ITAB).
  LOOP AT LEND_MAIN.
    CLEAR INFOR_ALL.
    INFOR_ALL-LEND_NO     = LEND_MAIN-LEND_NO.
    INFOR_ALL-LEND_DEPART = LEND_MAIN-LEND_DEPART.
    CLEAR INFOR_ALL-LEND_DEP.
    SELECT BRTXT INTO INFOR_ALL-LEND_DEP FROM ZT016T WHERE BRSCH =
 INFOR_ALL-LEND_DEPART AND SPRAS = '1' .
    ENDSELECT.
    INFOR_ALL-DEP_DETAIL  = LEND_MAIN-DEP_DETAIL.
    INFOR_ALL-LEND_DATE   = LEND_MAIN-LEND_DATE.
    INFOR_ALL-RETURN_DATE = LEND_MAIN-RETURN_DATE.
*   infor_all-purpose     = lend_main-purpose.
    CASE LEND_MAIN-PURPOSE.
      WHEN '1'.
        INFOR_ALL-PURPOSE = '專案測試'.
      WHEN '2'.
        INFOR_ALL-PURPOSE = '專案備機'.
      WHEN '3'.
        INFOR_ALL-PURPOSE = '缺貨使用'.
      WHEN '4'.
        INFOR_ALL-PURPOSE = '開發測試'.
      WHEN '5'.
        INFOR_ALL-PURPOSE = '例行試驗'.
      WHEN '6'.
        INFOR_ALL-PURPOSE = '新品測試'.
      WHEN '7'.
        INFOR_ALL-PURPOSE = '各類認證'.
      WHEN '8'.
        INFOR_ALL-PURPOSE = '媒體評測'.
      WHEN '9'.
        INFOR_ALL-PURPOSE = '辦公暫借'.
      WHEN '10'.
        INFOR_ALL-PURPOSE = '銷售'.
      WHEN '11'.
        INFOR_ALL-PURPOSE = '展覽'.
      WHEN '12'.
        INFOR_ALL-PURPOSE = '更換'.
      WHEN '13'.
        INFOR_ALL-PURPOSE = '培訓'.
      WHEN '14'.
        INFOR_ALL-PURPOSE = 'DOA'.
    ENDCASE.
    INFOR_ALL-PUR_DETAIL  = LEND_MAIN-PUR_DETAIL.
    INFOR_ALL-MANAGER1    = LEND_MAIN-MANAGER1.
    INFOR_ALL-LENDER      = LEND_MAIN-LENDER.
    INFOR_ALL-OPERATOR    = LEND_MAIN-OPERATOR.
*   infor_all-over_day = sy-datum - lend_main-return_date.

    SELECT * INTO TABLE LEND_DETAIL FROM ZLEND_DETAIL WHERE
    LEND_NO = LEND_MAIN-LEND_NO .
    LOOP AT LEND_DETAIL .
      "加入if 判斷已還物資訊
      IF LEND_DETAIL-GET_NUM <> LEND_DETAIL-RETURN_NUM.
        INFOR_ALL-MATNR = LEND_DETAIL-MATNR.
        INFOR_ALL-MAKTX = LEND_DETAIL-MAKTX.
        INFOR_ALL-ZTBS  = LEND_DETAIL-ZTBS.
*     infor_all-store_type = lend_detail-store_type.
        CASE LEND_DETAIL-STORE_TYPE.
          WHEN '1'.
            INFOR_ALL-STORE_TYPE = 'SER整機庫'.
          WHEN '2'.
            INFOR_ALL-STORE_TYPE = 'SER散件庫'.
          WHEN '3'.
            INFOR_ALL-STORE_TYPE = 'PC整機庫'.
          WHEN '4'.
            INFOR_ALL-STORE_TYPE = 'PC散件庫'.
          WHEN '5'.
            INFOR_ALL-STORE_TYPE = 'PC顯示器'.
          WHEN '6'.
            INFOR_ALL-STORE_TYPE = 'SER顯示器'.
        ENDCASE.

        CASE LEND_DETAIL-PROPERTY.
          WHEN '1'.
            INFOR_ALL-PROPERTY = 'A'.
          WHEN '2'.
            INFOR_ALL-PROPERTY = 'C'.
          WHEN '3'.
            INFOR_ALL-PROPERTY = 'D'.
          WHEN '4'.
            INFOR_ALL-PROPERTY = 'B'.
          WHEN '5'.
            INFOR_ALL-PROPERTY = 'E'.
          WHEN '6'.
            INFOR_ALL-PROPERTY = '過保'.
        ENDCASE.
        CASE LEND_DETAIL-STATUS.
          WHEN '1'.
            INFOR_ALL-STATUS = '未發貨'.
          WHEN '2'.
            INFOR_ALL-STATUS = '部分發貨'.
          WHEN '3'.
            INFOR_ALL-STATUS = '全部發貨'.
        ENDCASE.
        INFOR_ALL-APPLY_NUM = LEND_DETAIL-APPLY_NUM.
        INFOR_ALL-GET_NUM   = LEND_DETAIL-GET_NUM.
        INFOR_ALL-RETURN_NUM = LEND_DETAIL-RETURN_NUM.
        INFOR_ALL-OVER_DAY = SY-DATUM - LEND_DETAIL-LAST_DATE.
        INFOR_ALL-LAST_DATE = LEND_DETAIL-LAST_DATE.
        INFOR_ALL-NUM   = INFOR_ALL-GET_NUM - INFOR_ALL-RETURN_NUM .
        INFOR_ALL-APPLY_NO  = LEND_DETAIL-APPLY_NO.
        INFOR_ALL-MEINS     = LEND_DETAIL-MEINS.
        INFOR_ALL-PRICE     = LEND_DETAIL-PRICE.
        INFOR_ALL-TOTAL     = INFOR_ALL-PRICE * INFOR_ALL-APPLY_NUM .
        INFOR_ALL-SENDER    = LEND_DETAIL-SENDER.
        INFOR_ALL-STORER    = LEND_DETAIL-SOTRER.
        INFOR_ALL-MACHI_SERIES = LEND_DETAIL-MACHI_SERIES.
        APPEND INFOR_ALL.
        CLEAR LEND_DETAIL.
      ENDIF.
    ENDLOOP.
  ENDLOOP.
  SORT INFOR_ALL BY PURPOSE.
  CLEAR FIELDCAT[].
  CLEAR FIELDCAT.
  FIELDCAT-FIELDNAME     = 'LEND_NO'.
  FIELDCAT-TABNAME       = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S     = '借料單號'.
  FIELDCAT-SELTEXT_M     = '借料單號'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME   = 'LEND_DEPART'.
  FIELDCAT-TABNAME     = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S   = '部門編號'.
  FIELDCAT-SELTEXT_M   = '部門編號'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME   = 'LEND_DEP'.
  FIELDCAT-TABNAME     = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S   = '借料部門'.
  FIELDCAT-SELTEXT_M   = '借料部門'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME   = 'DEP_DETAIL'.
  FIELDCAT-TABNAME     = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S   = '部門詳述'.
  FIELDCAT-SELTEXT_M   = '部門詳述'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME   = 'ZTBS'.
  FIELDCAT-TABNAME     = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S   = '在途數量'.
  FIELDCAT-SELTEXT_M   = '在途數量'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME  = 'LEND_DATE'.
  FIELDCAT-TABNAME    = 'LEND_MAIN'.
  FIELDCAT-SELTEXT_S  = '借料日期'.
  FIELDCAT-SELTEXT_M  = '借料日期'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'RETURN_DATE'.
  FIELDCAT-TABNAME   = 'LEND_MAIN'.
  FIELDCAT-SELTEXT_S = '預計歸還日期'.
  FIELDCAT-SELTEXT_M = '預計歸還日期'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'LAST_DATE'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '續借日期'.
  FIELDCAT-SELTEXT_M = '續借日期'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'STATUS'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '發貨狀態'.
  FIELDCAT-SELTEXT_M = '發貨狀態'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'PURPOSE'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '用途'.
  FIELDCAT-SELTEXT_M = '用途'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'PUR_DETAIL'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '用途詳細'.
  FIELDCAT-SELTEXT_M = '用途詳細'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'MANAGER1'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '審批經理'.
  FIELDCAT-SELTEXT_M = '審批經理'.
  APPEND FIELDCAT.
  CLEAR FIELDCAT.
  FIELDCAT-FIELDNAME = 'OPERATOR'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '操作人'.
  FIELDCAT-SELTEXT_M = '操作人'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'MATNR'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '物料號'.
  FIELDCAT-SELTEXT_M = '物料號'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'MAKTX'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '物料描述'.
  FIELDCAT-SELTEXT_M = '物料描述'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'MEINS'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '單位'.
  FIELDCAT-SELTEXT_M = '單位'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'STORE_TYPE'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '庫類別'.
  FIELDCAT-SELTEXT_M = '庫類別'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'PROPERTY'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '物料屬性'.
  FIELDCAT-SELTEXT_M = '物料屬性'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'APPLY_NUM'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '申請數量'.
  FIELDCAT-SELTEXT_M = '申請數量'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'GET_NUM'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '發貨數量'.
  FIELDCAT-SELTEXT_M = '發貨數量'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'RETURN_NUM'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '歸還數量'.
  FIELDCAT-SELTEXT_M = '歸還數量'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'NUM'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '餘額'.
  FIELDCAT-SELTEXT_M = '餘額'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'LENDER'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '借物人'.
  FIELDCAT-SELTEXT_M = '借物人'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'PRICE'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '單價'.
  FIELDCAT-SELTEXT_M = '單價'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'TOTAL'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '金額'.
  FIELDCAT-SELTEXT_M = '金額'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'APPLY_NO'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '申請單號'.
  FIELDCAT-SELTEXT_M = '申請單號'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'MACHI_SERIES'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '機器序列號'.
  FIELDCAT-SELTEXT_M = '機器序列號'.
  APPEND FIELDCAT.
  FIELDCAT-FIELDNAME = 'OVER_DAY'.
  FIELDCAT-TABNAME   = 'INFOR_ALL'.
  FIELDCAT-SELTEXT_S = '超期天數'.
  FIELDCAT-SELTEXT_M = '超期天數'.
  APPEND FIELDCAT.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      IT_FIELDCAT = FIELDCAT[]
      I_DEFAULT   = 'X'
      I_SAVE      = 'A'
    TABLES
      T_OUTTAB    = INFOR_ALL
    EXCEPTIONS
      OTHERS      = 2.
ENDFORM.                    "LEND_DATA
*&--------------------------------------------------------------------*
*&      Form  RETU_dat
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM RETU_DAT."單據列印
  IF  C_LEND = 'X'."借料單列印
    PERFORM PRINT_LEND.
  ENDIF.
  IF C_RETU = 'X'.
    PERFORM PRINT_RETURN."還料單列印
  ENDIF.
  IF C_LLD = 'X'."領料單列印
    PERFORM PRINT_LLD.
  ENDIF.

ENDFORM.                    "RETU_dat
*&--------------------------------------------------------------------*
*&      Form  print_lend
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM PRINT_LEND."
  CLEAR LEND_MAIN[]."借物單據列印
  CLEAR LEND_DETAIL[].
  CLEAR NUM3 .
  NUM2 = 0 .
  NUM = 1 .
  SELECT * INTO TABLE LEND_MAIN FROM ZLEND_MAIN WHERE LEND_DEPART IN
DEPART AND LEND_NO IN NO AND LEND_DATE IN L_DATE AND RETURN_DATE IN
R_DATE AND (ITAB).
  LOOP AT LEND_MAIN.
    SELECT * INTO TABLE LEND_DETAIL FROM ZLEND_DETAIL WHERE LEND_NO =
    LEND_MAIN-LEND_NO.
    NUM3 = SY-DBCNT.
    LOOP AT LEND_DETAIL."查詢所有的發貨數量不等於申請數量的資料
      IF LEND_DETAIL-APPLY_NUM > LEND_DETAIL-GET_NUM.
        IF NUM2 = 0 .
          WRITE / .
          WRITE / .
          WRITE /  .

          WRITE 30 '浪潮資訊公司借物單'.
          WRITE : 60  '單號:' , LEND_MAIN-LEND_NO.
*         write 58 num."用於輸出單子樹木

          WRITE /26(30) SY-ULINE .
          CLEAR INFOR_ALL-LEND_DEP.
          SELECT BRTXT INTO INFOR_ALL-LEND_DEP FROM ZT016T WHERE BRSCH =
 LEND_MAIN-LEND_DEPART AND SPRAS = '1' .
          ENDSELECT.

*         write :  /2 '借料部門:' , lend_main-lend_depart.
          WRITE :  /2 '借料部門:' , INFOR_ALL-LEND_DEP.
          WRITE :  '借料日期:' , LEND_MAIN-LEND_DATE.
          WRITE :  '應還日期:' , LEND_MAIN-RETURN_DATE.
*         write :  '單號:' , lend_main-lend_no.

          WRITE /0(80) SY-ULINE.
          WRITE /0 SY-VLINE.
          WRITE 80 SY-VLINE.
          WRITE : 5 '產品編碼'.
          WRITE  19 SY-VLINE.
          WRITE :  30 '物料描述 ' .
*         write 59 sy-vline.
*         write :  60 'SN/QN' .
*         write :  60 '單位' .
          WRITE 64 SY-VLINE.
          WRITE :  65 '單位'.
          WRITE  80 SY-VLINE.
          WRITE 69 SY-VLINE.
          WRITE :  74 '數量'.
          WRITE : /0(80) SY-ULINE.
        ENDIF.
        NUM2 = NUM2 + 1 .
        "add lend_detial infromation
        WRITE /0 SY-VLINE.
        WRITE : LEND_DETAIL-MATNR.
        WRITE 19 SY-VLINE.
        WRITE : 20 LEND_DETAIL-MAKTX.
*       write 59 sy-vline.


*       write : 74 lend_detail-apply_num .
*       write 64 lend_detail-apply_num .
        CLEAR S.
        S = LEND_DETAIL-APPLY_NUM.
        WRITE 71(10) S .
        WRITE 64 SY-VLINE.
        WRITE : 65 LEND_DETAIL-MEINS.
        WRITE SY-VLINE.
        WRITE 80 SY-VLINE.
        WRITE /0(80) SY-ULINE.

        WRITE /0 SY-VLINE.
        WRITE 2 'SN/QN'.
        WRITE 19 SY-VLINE.
        WRITE 80 SY-VLINE.
        WRITE /0(80) SY-ULINE.

        CASE LEND_DETAIL-STORE_TYPE.
          WHEN '1'.
            S_STORE = 'SER整機庫'.
          WHEN '2'.
            S_STORE = 'SER散件庫'.
          WHEN '3'.
            S_STORE = 'PC整機庫'.
          WHEN '4'.
            S_STORE = 'PC散件庫'.
          WHEN '5'.
            S_STORE = 'PC顯示器'.
          WHEN '6'.
            S_STORE = 'SER顯示器'.
          WHEN '7'.
            S_STORE = '儲存整機'.
          WHEN '8'.
            S_STORE = '儲存散件'.
          WHEN '9'.
            S_STORE = '高效能整機'.
          WHEN '10'.
            S_STORE = '高效能散件'.
          WHEN '11'.
            S_STORE = 'VIT整機'.
          WHEN '12'.
            S_STORE = 'VIT散件'.
          WHEN '13'.
            S_STORE = '高階整機'.
          WHEN '14'.
            S_STORE = '高階散件'.
        ENDCASE.
        CASE LEND_DETAIL-PROPERTY.
          WHEN '1'.
            P_PRO = 'A'.
          WHEN '2'.
            P_PRO = 'C'.
          WHEN '3'.
            P_PRO = 'D'.
          WHEN '4'.
            P_PRO = 'B'.
          WHEN '5'.
            P_PRO = 'E'.
          WHEN '6'.
            P_PRO = '過保'.
          WHEN '7'.
            P_PRO = 'C1'.
        ENDCASE.
*       if num2 = sy-dbcnt ."列印完詳細
        IF NUM2 = NUM3 ."列印完詳細
          WRITE /0 SY-VLINE .
          WRITE 2 '用途說明:'.
          WRITE LEND_MAIN-PUR_DETAIL.
          WRITE 59 SY-VLINE.
          WRITE 80 SY-VLINE.
          WRITE /0 SY-VLINE.
          WRITE 59 SY-VLINE.
          WRITE 80 SY-VLINE.

          WRITE /0 SY-VLINE.
          WRITE  '備註:'.
          WRITE 59 SY-VLINE.
          WRITE 80 SY-VLINE .
**********************************add by dingyang 091217**********************************
*          使輸出欄位拐彎,判斷最後一個字元是否正常顯示
          DATA : B1(55),B2(55TYPE C.
          IF STRLEN( LEND_MAIN-BZ ) > 56.
            CLEAR B1.
            CLEAR B2.
            PERFORM WRITE_STRING USING LEND_MAIN-BZ B1 B2 .
            WRITE /0 SY-VLINE .
            WRITE B1.
            WRITE 59 SY-VLINE.
            WRITE 80 SY-VLINE .
            

相關推薦

abap利用write進行單列示例

*&---------------------------------------------------------------------* *& Report  Z_PRINT_LEND                                                *

ABAP利用函式WS_DELIVERY_UPDATE進行VL02N發貨過賬時獲取憑證號(mblnr)

某專案中,做wms介面時,根據wms傳過來的引數,利用函式WS_DELIVERY_UPDATE進行發貨過賬(vl02n發貨過賬),而函式本身是不返回憑證號的,但客戶需求要在介面中返回過賬成功的憑證號,可以下幾種方式獲取到憑證號: 方法一:這種方法是最原始的方法,判斷函式執行

PowerCLI腳本利用哈希對參數進行轉換

存儲 HERE 創建虛擬機 哈希 滿足 fir 主機 centos7 shell腳本 在使用PowerCLI的編寫powershell腳本的過程中,有這樣一個需求:例如需要重啟一個指定的虛擬機,運行腳本時輸入的參數,參數為虛擬機的名字,但是虛擬機的名字在建立的時候可能是千奇

OutSystems 利用聚合對結果進行排序

大多數情況下,記錄會按照某些順序列在螢幕上,以便於閱讀或幫助更快地查詢資訊。 在 OutSystems 中,聚合允許對返回的記錄進行排序,排序可以是固定的或動態的。 對結果進行固定排序: 在聚合中,開啟要排序的屬性選單; 選擇A-Z作為升序或Z-A作為降序;

在Excel表格插入函式利用公式進行計算

在這個工資表中需要用到加法(基礎工資+績效工資)和減法(工資總數-病/事假所扣工資)兩個公式。滑鼠點選實際工資得數的表格,鍵盤按=鍵,得數的表格會顯示出一個=號,然後滑鼠點選相加的兩個數,中間按一次鍵盤上的+號,(表示是加法),在得數格會依次顯示出相加的兩個數所在位置程式碼。(如B3和E3)。再按下鍵盤上

mysql 獲取一張 另一張不存在的資料

   編寫sql語句中,經常需要編寫獲取一張資料表中不存在與另一張表的資料,相關編寫方法如下:  方法1: 使用not in ,效率低下,在資料較小的情況下可以採用如下編寫    SELECT * FROM a WHERE 1=1 AND a.Id NOT IN( SELECT

同一個伺服器繫結多個域名利用Nginx進行域名重定向

背景:同一個伺服器繫結多個域名,利用Nginx進行域名重定向。 首先:tomcat進行部署網站後臺介面,進行重設9090埠(可根據需要自定義,但是注意外網訪問埠,需在阿里雲上配置開放埠)。   Tomcat版本8.044,Nginx版本nginx-1.14.1 Tomcat

資料庫事務的四大特性、隔離級別以及Spring如何利用AOP進行事務管理

首先,什麼是事務? 事務就是業務上的一個邏輯單元,它能夠保證其中對資料所有的操作,要麼成功,要麼失敗。 其次,事務的特性有哪些? 1.原子性。 例如,轉賬,A賬戶減少,B賬戶增加。雖然是兩條 DML語句,但是被當做是一個整體,一次事務。兩條語句只能同時成功或者同時失敗。 2

在Mac pro上如何將Android SDK的adb命令新增到環境變數這裡將進行說明!

此時文字編輯器會開啟一個文字,編輯內容如下: export PATH=${PATH}:/Users/apple/Library/Android/sdk/platform-tools export PATH=${PATH}:/Users/apple/Library/Android/sdk/tools

Java註解:自定義註解示例利用反射進行解析

        Java註解能夠提供程式碼的相關資訊,同時對於所註解的程式碼結構又沒有直接影響。在這篇教程中,我們將學習Java註解,如何編寫自定義註解,註解的使用,以及如何使用反射解析註解。        註解是Java 1.5引入的,目前已被廣泛應用於各種Java框

oracle建立其他使用者的對應檢視

需求是這樣:在A使用者下,需要批量生成B使用者的所有表對應的檢視。在網上找了很多例子,最後用比較容易的方法解決了。 注意,不能簡單的賦予A使用者DBA許可權,有些操作也是無效的;另外不能授權所有許可權給A使用者,否則A使用者可以刪除B使用者中的表。 方法如下: 1.授權B使

abapftp上傳檔案demo

*&---------------------------------------------------------------------**&      Form  frm_trans_file_to_ftp*&----------------

Latext批量新增參考文獻利用bibtex進行參考文獻排版

Latex批量新增參考文獻,利用bibtex進行參考文獻排版 在寫論文的時候需要引用大量的參考文獻,如果一個個按照格式手碼,會耗費大量的時間和精力。Latex提供了Bibtex可用於批量的新增參考文獻。 前期工作: 準備需要引用的參考文獻。(個人覺得這一步

在springnvc/springboot 利用jason 的Map引數實現多個引數傳遞

在在springnvc/springboot中,我們知道如用HTTP POST方法來寫REST 呼叫,則@RequestBody是不允許有多個的,比如下面的宣告是無效的。 @RequestMapping(value = "/updateInsert", method =

Vuejs在v-for利用index來對第一項新增class

<aclass="list-group-item":class="{'active':!index}"v-for="(i,index) in announcement"> index來源於v-for,i表示遍歷的陣列的元素,index表示索引。 由於index從0開始,因此如果要

python mysql不能在同一個sql語句先select同一個的某些值然後再update這個

例: 首先新建表,插入值: DROP TABLE IF EXISTS table_score_one; CREATE TABLE table_score_one ( id INT (10) NOT NULL PRIMARY KEY auto_i

C++程式設計利用WINDOWS API獲得系統狀態資訊[CPU佔用率硬碟使用情況記憶體使用情況]

#include <Ice/Ice.h> #include <iostream> #include <GetWinSysState.h> #include <Winbase.h> #include <conio.h>

Oracle資料庫知道一張查詢與其有主外來鍵關係的

--查外來鍵表NC56.CSCI有無對應的主鍵表 SELECT a.owner, A.TABLE_NAME pr

Vuejs(14)——在v-for利用index來對第一項新增class

<aclass="list-group-item":class="{'active':!index}"v-for="(i,index) in announcement"> index來源於v-for,i表示遍歷的陣列的元素,index表示索引。 由於index從0開始,因此如果要

vue 父子元件通訊利用物件進行通訊

大家都知道vue父子元件間通訊用到了props,$emit。 通過props可以實現父向子通訊,通過$emit可以實現子向父通訊,現在我要介紹另外一種方式,通過props傳物件的形式通訊。 首先寫一個簡單的例子 //父元件 <parent>