SAP 訂貨單、發貨單批量打印(實例)2019.06.20


首先需要做好一個ALV,這個肯定是必要的。

一,ALV多選及取值

1.Function-ALV

添加一個選擇字段:SEL。設置 layout  屬性  box_fieldname  :  layout-box_fieldname = ‘SEL’  即可選擇多條。

2.OO-ALV

設置 layout 的屬性 SEL_MODE 來實現,SEL_MODE的值有’A’,’B’,’C’,’D’

模式

可能的選擇

SPACE

等同於B

參考B

'A'

行和列的選擇,無法選擇單元格

多行,多列

'B'

單選,不可以多選行,不可以多選單元格

多行,多列

'C'

多選,可以多選行,不可以多選單元格

多行,多列

'D'

單元格的選擇,可以多選單元格

多行,多列,任何單元格多選

之后在ALV顯示網格里就可以通過按住crtl實現多行,多列的選擇。

獲取選擇的行號

這時function ALV就不可以了,要臨時把 function ALV 轉換為 OO ALV

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' "把function ALV臨時轉換成 OO ALV,可以把ALV上修改的數據傳到內表
IMPORTING
e_grid = lr_alv_grid.

"獲取數據的方法:"GET_SELECTED_CELLS","GET_SELECTED_CELLS_ID",
         "GET_SELECTED_ROWS","GET_SELECTED_COLUMNS "獲取行 / 獲取列

      "獲取行號

  DATA:lt_row_id TYPE lvc_t_roid.
  DATA:wa_row_id TYPE LINE OF lvc_t_roid.
  CALL METHOD lr_alv_grid->get_selected_rows
  IMPORTING
  * et_index_rows = et_index_rows
  et_row_no = lt_row_id.

  LOOP AT lt_row_id INTO wa_row_id.  "讀取選擇的行到 gtd_out_sel 內表中
    READ TABLE gtd_out INTO gth_out INDEX wa_row_id-row_id.
    IF sy-subrc = 0.
      APPEND gth_out TO gtd_out_sel.
    ENDIF.
    CLEAR:wa_row_id,gth_out.
  ENDLOOP.
  CLEAR:lt_row_id.

至此,取到了選擇的數據。

 

二,調用smartforms輸出打印

1.程序的抬頭用結構傳值

遇到2個問題,第一個,彈出多個打印選項的窗口,可以修改以下參數解決

  DATA: w_ctrlop TYPE ssfctrlop, "Smart Forms: 控制結構 "W_CONTROL
        w_compop TYPE ssfcompop, "SAP Smart Forms: 智能寫作器 (傳輸) 選項"W_OUTPUT.
        w_return TYPE ssfcrescl. "Smart Forms: 表格打印結束時返回值

  w_ctrlop-no_dialog = 'X'. "關閉打印對話框
  w_ctrlop-preview = 'X'. "直接預覽,不打印
  w_compop-tdnoprev = 'X'. "沒有打印預覽 直接打印

 

第二個問題,彈出多個選擇打印機的窗口,這個就很麻煩了,暫時放棄了。

 

2.程序的抬頭用內表傳值

這種就比較簡單了,

主窗口先循環抬頭,再循環明細,明細用訂單號和頁數來做條件,換頁  即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM