创建的流水号,如果想能用alv显示出来,可以建个表来存储,这样其他程序也能调用。

从打印程序中截取出来的,按自己需求更改
DATA:lv_zcrkdjbh_max TYPE ztqm023-zcrkdjbh,
lv_zcrkdjbh_new TYPE ztqm023-zcrkdjbh,
lv_compare TYPE char9,
lv_dynamic_max TYPE numc3,
lv_dynamic TYPE numc3.
DATA:lt_ztqm023 TYPE TABLE OF ztqm023,
ls_ztqm023 TYPE ztqm023.
*计算编号
*出入库单据的编号规则:单据类型(2位字母)+年月日(6位)+流水号(3位)
lv_compare = 'QY' && sy-datum+2(6).
SELECT MAX( zcrkdjbh )
FROM ztqm023 WHERE substring( zcrkdjbh,1,8 ) = @lv_compare
INTO @lv_zcrkdjbh_max.
IF lv_zcrkdjbh_max IS INITIAL.
lv_dynamic = 0.
lv_zcrkdjbh_max = lv_compare && lv_dynamic.
ELSE.
ENDIF.
READ TABLE lt_alv INTO DATA(ls_alv_only) INDEX 1.
CLEAR:ls_head,ls_item,lt_item,lv_index.
IF ls_alv_only-zcrkdjbh IS INITIAL."ALV中没有该编号
CLEAR:lv_dynamic,lv_zcrkdjbh_new.
lv_dynamic_max = lv_zcrkdjbh_max+8(3).
lv_dynamic = lv_dynamic_max + 1.
lv_zcrkdjbh_new = lv_compare && lv_dynamic.
lv_zcrkdjbh_max = lv_zcrkdjbh_new.
ls_head-zcrkdjbh = lv_zcrkdjbh_new.
ELSE.
ls_head-zcrkdjbh = ls_alv_only-zcrkdjbh.
ENDIF.
LOOP AT lt_alv INTO ls_alv.
ls_ztqm023-prueflos = ls_alv-prueflos.
ls_ztqm023-werks = ls_alv-werk.
ls_ztqm023-zcrkdjbh = lv_zcrkdjbh_new.
ls_ztqm023-uname = sy-uname.
ls_ztqm023-datum = sy-datum.
ls_ztqm023-uzeit = sy-uzeit.
APPEND ls_ztqm023 TO lt_ztqm023.
CLEAR:ls_ztqm023.
ENDLOOP.
IF lt_ztqm023[] IS NOT INITIAL.
MODIFY ztqm023 FROM TABLE lt_ztqm023[].
COMMIT WORK.
CLEAR:lt_ztqm023[].
ENDIF.
为避免我自己日后也看不懂,我把该打印程序完整的子例程也放在下面
FORM frm_print_sj01 .
DATA:lv_formname TYPE tdsfname,
lv_fm_name TYPE rs38l_fnam,
ls_control TYPE ssfctrlop,
ls_control_param TYPE ssfctrlop,
ls_composer_param TYPE ssfcompop,
ls_jobinfo TYPE ssfcrescl,
ls_output_options TYPE ssfcompop,
ls_control_parameters TYPE ssfctrlop,
ls_job_output_options TYPE ssfcresop,
ls_outinfo TYPE ssfcrescl.
DATA:ls_alv TYPE t_show,
lt_alv TYPE TABLE OF t_show.
DATA:lv_zcrkdjbh_max TYPE ztqm023-zcrkdjbh,
lv_zcrkdjbh_new TYPE ztqm023-zcrkdjbh,
lv_compare TYPE char9,
lv_dynamic_max TYPE numc3,
lv_dynamic TYPE numc3.
DATA:lt_ztqm023 TYPE TABLE OF ztqm023,
ls_ztqm023 TYPE ztqm023.
DATA:ls_head TYPE zsqm041_sj_head,
ls_item TYPE zsqm041_sj_item,
lt_item TYPE STANDARD TABLE OF zsqm041_sj_item.
DATA:lv_index TYPE i,
lv_line TYPE i.
ls_output_options-tdimmed = 'X'.
ls_output_options-tddelete = 'X'.
ls_output_options-tddest = 'LP01'.
ls_control-no_open = 'X'. "没有新的假脱机请求
ls_control-no_close = 'X'. "不关闭假脱机请求
LOOP AT gt_alv INTO gs_alv WHERE box = 'X'.
MOVE-CORRESPONDING gs_alv TO ls_alv.
APPEND ls_alv TO lt_alv.
CLEAR:ls_alv,gs_alv.
ENDLOOP.
IF lt_alv IS NOT INITIAL .
lv_formname = 'ZQM_SF_041_SJ01'."产成品请验单(02)苏州打印
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_formname
IMPORTING
fm_name = lv_fm_name.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
user_settings = 'X'
output_options = ls_output_options
control_parameters = ls_control_parameters
IMPORTING
job_output_options = ls_job_output_options
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*计算编号
*出入库单据的编号规则:单据类型(2位字母)+年月日(6位)+流水号(3位)
lv_compare = 'QY' && sy-datum+2(6).
SELECT MAX( zcrkdjbh )
FROM ztqm023 WHERE substring( zcrkdjbh,1,8 ) = @lv_compare
INTO @lv_zcrkdjbh_max.
IF lv_zcrkdjbh_max IS INITIAL.
lv_dynamic = 0.
lv_zcrkdjbh_max = lv_compare && lv_dynamic.
ELSE.
ENDIF.
READ TABLE lt_alv INTO DATA(ls_alv_only) INDEX 1.
CLEAR:ls_head,ls_item,lt_item,lv_index.
IF ls_alv_only-zcrkdjbh IS INITIAL.
CLEAR:lv_dynamic,lv_zcrkdjbh_new.
lv_dynamic_max = lv_zcrkdjbh_max+8(3).
lv_dynamic = lv_dynamic_max + 1.
lv_zcrkdjbh_new = lv_compare && lv_dynamic.
lv_zcrkdjbh_max = lv_zcrkdjbh_new.
ls_head-zcrkdjbh = lv_zcrkdjbh_new.
ELSE.
ls_head-zcrkdjbh = ls_alv_only-zcrkdjbh.
ENDIF.
*抬头参数处理
ls_head-lifnr = |{ ls_alv_only-lifnr ALPHA = OUT }|.
ls_head-AUFNR = |{ ls_alv_only-AUFNR ALPHA = OUT }|.
CONDENSE ls_head-lifnr NO-GAPS.
ls_head-name1 = ls_alv_only-name1.
ls_head-ebeln = |{ ls_alv_only-ebeln ALPHA = OUT }|.
CONDENSE ls_head-ebeln NO-GAPS.
ls_head-datum = sy-datum+(4) && '.' && sy-datum+4(2) && '.' && sy-datum+6(2).
LOOP AT lt_alv INTO ls_alv.
gs_ztqm001-prueflos = ls_alv-prueflos."检验编号
gs_ztqm001-zqjr = ls_alv-name_textc.
gs_ztqm001-zbz = ls_alv-zbz."检验编号
gs_ztqm001-zspec = ls_alv-zspec."规格
gs_ztqm001-zqjrq = ls_alv-zqjrq."
APPEND gs_ztqm001 TO gt_ztqm001.
CLEAR gs_ztqm001.
SELECT SINGLE zdycs INTO @DATA(lv_zdycs) FROM ztdycs WHERE ebeln = @ls_alv-prueflos AND ztcode = 'ZQM041'.
IF sy-subrc = 0.
gs_ztdycs-ztcode = 'ZQM041'.
gs_ztdycs-ebeln = ls_alv-prueflos.
gs_ztdycs-zdycs = lv_zdycs + 1.
gs_ztdycs-chdat = sy-datum.
gs_ztdycs-chtim = sy-uzeit.
gs_ztdycs-chnam = sy-uname.
ELSE.
gs_ztdycs-ztcode = 'ZQM041'.
gs_ztdycs-ebeln = ls_alv-prueflos.
gs_ztdycs-zdycs = 1.
gs_ztdycs-crdat = sy-datum.
gs_ztdycs-crtim = sy-uzeit.
gs_ztdycs-crnam = sy-uname.
ENDIF.
APPEND gs_ztdycs TO gt_ztdycs.
CLEAR gs_ztdycs.
ls_ztqm023-prueflos = ls_alv-prueflos.
ls_ztqm023-werks = ls_alv-werk.
ls_ztqm023-zcrkdjbh = lv_zcrkdjbh_new.
ls_ztqm023-uname = sy-uname.
ls_ztqm023-datum = sy-datum.
ls_ztqm023-uzeit = sy-uzeit.
APPEND ls_ztqm023 TO lt_ztqm023.
CLEAR:ls_ztqm023.
IF ls_alv-zcrkdjbh IS INITIAL.
ls_alv-zcrkdjbh = lv_zcrkdjbh_new.
MODIFY gt_alv FROM ls_alv TRANSPORTING zcrkdjbh WHERE prueflos = ls_alv-prueflos AND werk = ls_alv-werk.
ENDIF.
*行项目参数处理
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = ls_alv-matnr
IMPORTING
output = ls_alv-matnr.
lv_index = lv_index + 1.
ls_item-index = lv_index.
CONDENSE ls_item-index NO-GAPS.
ls_item-matnr = ls_alv-matnr .
CONDENSE ls_item-matnr NO-GAPS.
ls_item-maktx = ls_alv-maktx .
ls_item-zspec = ls_alv-zspec .
ls_item-prueflos = |{ ls_alv-prueflos ALPHA = OUT }|.
CONDENSE ls_item-prueflos NO-GAPS.
ls_item-charg = ls_alv-charg .
ls_item-mengeneinh = ls_alv-mengeneinh.
ls_item-lmengeist2 = ls_alv-lmengeist2.
CONDENSE ls_item-lmengeist2 NO-GAPS.
ls_item-lmengeist = ls_alv-lmengeist .
CONDENSE ls_item-lmengeist NO-GAPS.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ENDLOOP.
*计算内表行数
CLEAR lv_line.
DESCRIBE TABLE lt_item LINES lv_line.
lv_line = lv_line MOD 8.
*计算需要的空行
IF lv_line > 0.
lv_line = 8 - lv_line.
DO lv_line TIMES.
CLEAR ls_item.
APPEND ls_item TO lt_item.
ENDDO.
ENDIF.
*-->调用Smartforms的Function Module打印–smart表及变量传递
CALL FUNCTION lv_fm_name
EXPORTING
control_parameters = ls_control
is_head = ls_head
IMPORTING
job_output_options = ls_job_output_options
TABLES
it_item = lt_item
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno DISPLAY LIKE 'E'
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
LEAVE LIST-PROCESSING.
ENDIF.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
job_output_info = ls_outinfo
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF ls_outinfo-outputdone = 'X'."已打印
MESSAGE '已打印' TYPE 'S'.
IF gt_ztdycs[] IS NOT INITIAL.
MODIFY ztdycs FROM TABLE gt_ztdycs[].
COMMIT WORK.
CLEAR:gt_ztdycs[].
ENDIF.
ENDIF.
IF gt_ztqm001[] IS NOT INITIAL.
MODIFY ztqm001 FROM TABLE gt_ztqm001[].
COMMIT WORK.
CLEAR:gt_ztqm001[].
ENDIF.
IF lt_ztqm023[] IS NOT INITIAL.
MODIFY ztqm023 FROM TABLE lt_ztqm023[].
COMMIT WORK.
CLEAR:lt_ztqm023[].
ENDIF.
ELSE.
MESSAGE '请选中需要打印的数据' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDFORM.