ZSD018出货明细表

47 篇文章 0 订阅
出货明细表,反正都是差不多的,ALV显示呗。以后一定要记得即时写Blog。还是不多说了,直接上code

  1. *&---------------------------------------------------------------------*  
  2. *& Report  ZSD018  
  3. *&---------------------------------------------------------------------*  
  4. * Author  : Jasson.Lee  
  5. * Date    : 2011.12.08  
  6. * Purpose :  
  7. * Modi Log: 2011.12.08  Jasson.Lee Create  
  8. * Modi Log:  
  9. * Modi Log:  
  10. * Modi Log:  
  11. *----------------------------------------------------------------------  
  12. REPORT  zsd018.  
  13. TABLES: likp,vttp.  
  14. TYPE-POOLS: slis.  
  15. *--------------------------------  
  16. * Selection Screen  
  17. *--------------------------------  
  18. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.  
  19. SELECT-OPTIONS:  
  20.   s_num FOR likp-vbeln,  "送货单  
  21.   s_date FOR likp-bldat.  
  22. SELECTION-SCREEN END OF BLOCK b1.  
  23.   
  24. *****************************************************************************  
  25. DATA: g_status TYPE slis_formname VALUE 'STANDARD_02'.        "加工具栏  
  26.   
  27. DATA:  
  28.       i_fieldcat_alv    TYPE slis_t_fieldcat_alv,  
  29.       i_fieldcat        TYPE slis_fieldcat_alv,  
  30.       i_layout          TYPE slis_layout_alv,  
  31.       i_events          TYPE slis_t_event,  
  32.       w_events          LIKE LINE OF i_events,  
  33.       i_list_comments   TYPE slis_t_listheader,  
  34.       w_list_comments   LIKE LINE OF i_list_comments,  
  35.       w_repid           LIKE sy-repid.  
  36.   
  37. DATA:  
  38.       w_loop        TYPE sy-tabix.  
  39. *      l_prod_num1   type co_psmng,  
  40. *      l_prod_num2   type  co_psmng.  
  41. DATA: BEGIN OF i_tab1 OCCURS 0,  
  42.         vbeln    LIKE likp-vbeln,  
  43.         tknum    LIKE vttk-tknum,  
  44.         exti1    LIKE vttk-exti1,  
  45.         exti2    LIKE vttk-exti2,  
  46.        END OF i_tab1.  
  47. DATA: BEGIN OF i_tab2 OCCURS 0,  
  48.         vbeln    LIKE likp-vbeln, "送货编号  
  49.         posnr    LIKE lips-posnr, "行项号  
  50.         bldat    LIKE likp-bldat, "凭证日期  
  51.         kunnr    LIKE likp-kunnr, "送达方  
  52.         wadat    LIKE likp-wadat, "计划货物移动日期  
  53. *        wadat_ist    like likp-wadat_ist, "实际货物移动日期  
  54.         anzpk    LIKE likp-anzpk, "包数  
  55.         lfimg    LIKE lips-lfimg, "交货数量  
  56.         matnr    LIKE lips-matnr, "物料号  
  57.         tknum    LIKE vttk-tknum, "装运编号  
  58.         exti1    LIKE vttk-exti1,                           "外部标识1 运输公司  
  59.         exti2    LIKE vttk-exti2, "外部标识2 司机/车牌号  
  60.         vgpos    LIKE lips-vgpos, "参考项目的项目号  
  61.        END OF i_tab2.  
  62. DATA: BEGIN OF i_tab3 OCCURS 0,  
  63.         vbeln    LIKE likp-vbeln,  
  64.         posnr    LIKE lips-posnr,  
  65.         vgpos    LIKE lips-vgpos,  
  66.        END OF i_tab3.  
  67. *data :p_coco like knb1-bukrs.  
  68. *data :w_total(10) type c.  
  69. *data :w_loop1 like sy-tabix.  
  70. *data :w_loop2 like sy-tabix.  
  71. *data :w_loop3 like sy-tabix.  
  72. DATA scount(8).  
  73. DATA :rcount LIKE sy-tabix.  
  74. DATA lstr(20).  
  75. DATA lpos(6).  
  76. *data lstr1(40).  
  77. *data lstr2(40).  
  78. *data lstr3(100).  
  79. *data lstr4(40).  
  80. *data lstr5(40).  
  81. *--------------------------------  
  82. * Initialization  
  83. *--------------------------------  
  84. INITIALIZATION.  
  85. *--------------------------------  
  86. * At Selection Screen PBO  
  87. *--------------------------------  
  88. AT SELECTION-SCREEN OUTPUT.  
  89. *--------------------------------  
  90. * Start of Selection  
  91. *--------------------------------  
  92. START-OF-SELECTION.  
  93.   PERFORM get_data.  
  94.   PERFORM process_data.  
  95. *  perform cal_data.  
  96.   PERFORM events_build.  
  97.   PERFORM layout_build.  
  98.   PERFORM fields_build.  
  99.   PERFORM display_data.  
  100.   
  101. END-OF-SELECTION.  
  102. *--------------------------------  
  103. * Top of Page  
  104. *--------------------------------  
  105. TOP-OF-PAGE.  
  106. *&---------------------------------------------------------------------*  
  107. *&      Form  get_data  
  108. *&---------------------------------------------------------------------*  
  109. FORM get_data.  
  110.   
  111.   SELECT k~vbeln p~posnr k~bldat k~kunnr k~wadat k~anzpk p~lfimg p~matnr p~vgpos  
  112.     INTO CORRESPONDING FIELDS OF TABLE i_tab2  
  113.     FROM likp AS k INNER JOIN lips AS p ON k~vbeln = p~vbeln  
  114.     WHERE k~vbeln IN s_num  
  115.     AND   k~bldat IN s_date  
  116.     AND   p~lfimg > 0  .  
  117.   
  118.   IF i_tab2[] IS INITIAL .  
  119.     MESSAGE i000(zmsg) WITH '没找到对应的数据,请更改查询条件'.  
  120.     LEAVE LIST-PROCESSING .  
  121.   ELSE.  
  122.     SELECT p~vbeln k~tknum k~exti1 k~exti2  
  123.        INTO TABLE i_tab1  
  124.        FROM vttk AS k INNER JOIN vttp AS p ON k~tknum = p~tknum  
  125.        FOR ALL ENTRIES IN i_tab2  
  126.        WHERE p~vbeln = i_tab2-vbeln.  
  127.   
  128.     SELECT p~vbeln p~posnr p~vgpos  
  129.        INTO TABLE i_tab3  
  130.        FROM lips AS p  
  131.        FOR ALL ENTRIES IN i_tab2  
  132.        WHERE p~vbeln = i_tab2-vbeln AND  p~posnr < '900001'.  
  133.   
  134.   ENDIF.  
  135.   
  136. ENDFORM.                    "get_data  
  137. *&---------------------------------------------------------------------*  
  138. *&      Form  process_data  
  139. *&---------------------------------------------------------------------*  
  140. FORM process_data.  
  141.   LOOP AT i_tab2.  
  142.     w_loop = sy-tabix.  
  143.     CLEAR i_tab1.  
  144.     READ TABLE i_tab1 WITH KEY vbeln = i_tab2-vbeln BINARY SEARCH.  
  145.     IF sy-subrc = 0.  
  146.       i_tab2-tknum  = i_tab1-tknum.  
  147.       i_tab2-exti1  = i_tab1-exti1.  
  148.       i_tab2-exti2  = i_tab1-exti2.  
  149.     ENDIF.  
  150.     READ TABLE i_tab3 WITH KEY vbeln = i_tab2-vbeln  
  151.                                vgpos = i_tab2-vgpos.  
  152.     IF sy-subrc = 0.  
  153.       i_tab2-posnr = i_tab3-posnr.  
  154.     ENDIF.  
  155.     MODIFY i_tab2 INDEX w_loop.  
  156.     sy-tabix = w_loop + 1.  
  157.   ENDLOOP.  
  158. ENDFORM.                    "process_data  
  159. *&---------------------------------------------------------------------*  
  160. *&      Form  CAL_DATA  
  161. *&---------------------------------------------------------------------*  
  162. FORM cal_data .  
  163.   DESCRIBE TABLE i_tab2 LINES rcount.  
  164.   scount = rcount.  
  165.   CONCATENATE '符合条件的记录数:' scount INTO lstr.  
  166.   
  167.   IF i_tab2[] IS INITIAL .  
  168.     MESSAGE i000(zmsg) WITH '没找到对应的数据,请更改查询条件'.  
  169.     LEAVE LIST-PROCESSING .  
  170.   ENDIF.  
  171. ENDFORM.                    " CAL_DATA  
  172. *&---------------------------------------------------------------------*  
  173. *&      Form  EVENTS_BUILD  
  174. *&---------------------------------------------------------------------*  
  175. FORM events_build .  
  176.   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'  
  177.     EXPORTING  
  178.       i_list_type = 0  
  179.     IMPORTING  
  180.       et_events   = i_events.  
  181.   
  182. *  read table i_events  with key name = 'END_OF_LIST'  into w_events.  
  183. *   if sy-subrc = 0.  
  184. *     move 'ALV_END_OF_LIST' to w_events-form.  
  185. *     modify i_events from w_events index sy-tabix.  
  186. *   endif.  
  187.   
  188.   READ TABLE i_events WITH KEY name = 'USER_COMMAND'   INTO w_events.  
  189.   IF sy-subrc = 0.  
  190.     MOVE 'USER_COMMAND' TO w_events-form.  
  191.     MODIFY i_events FROM w_events INDEX sy-tabix.  
  192.   ENDIF.  
  193.   
  194. ENDFORM.                    " EVENTS_BUILD  
  195. *&--------------------------------------------------------------------*  
  196. *&      Form  ALV_END_OF_LIST  
  197. *&--------------------------------------------------------------------*  
  198. FORM alv_top_of_page.  
  199.   
  200.   CLEAR: i_list_comments.  
  201.   w_list_comments-typ = 'H'.  
  202.   w_list_comments-key = ''.  
  203.   w_list_comments-info = '  '.  
  204.   APPEND w_list_comments TO i_list_comments.  
  205.   CLEAR w_list_comments.  
  206.   
  207.   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'  
  208.     EXPORTING  
  209.       it_list_commentary = i_list_comments  
  210.       i_end_of_list_grid = 'X'.  
  211. ENDFORM.                    "ALV_TOP_OF_PAGE  
  212. *&--------------------------------------------------------------------*  
  213. *&      Form  ALV_END_OF_LIST  
  214. *&--------------------------------------------------------------------*  
  215. FORM alv_end_of_list.  
  216.   CLEAR: i_list_comments.  
  217.   w_list_comments-typ = 'H'.  
  218.   w_list_comments-key = ''.  
  219.   w_list_comments-info = lstr.  
  220.   APPEND w_list_comments TO i_list_comments.  
  221.   CLEAR w_list_comments.  
  222.   
  223.   w_list_comments-typ = 'S'.  
  224.   w_list_comments-key = ''.  
  225.   w_list_comments-info = '    报表开发者:IT部              开发日期:2011/12/08'.  
  226.   APPEND w_list_comments TO i_list_comments.  
  227.   CLEAR w_list_comments.  
  228.   
  229.   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'  
  230.     EXPORTING  
  231.       it_list_commentary = i_list_comments  
  232.       i_end_of_list_grid = 'X'.  
  233. ENDFORM.                    "ALV_END_OF_LIST  
  234. *&---------------------------------------------------------------------*  
  235. *&      Form  LAYOUT_BUILD  
  236. *&---------------------------------------------------------------------*  
  237. FORM layout_build .  
  238.   i_layout-zebra                = 'X' .         " 显示界面成色带交替  
  239.   i_layout-detail_popup         = 'X'.          "弹出详细信息窗口  
  240.   i_layout-info_fieldname       = 'COLOR'.      "颜色值  
  241. *  I_LAYOUT-COLWIDTH_OPTIMIZE   = 'X'.          "优化列宽选项  
  242.   i_layout-detail_initial_lines = 'X'.  
  243.   i_layout-detail_titlebar      = 'Delivery Status'.  
  244.   i_layout-no_colhead           =' '.  
  245. *  I_LAYOUT-BOX_FIELDNAME       = 'BOX' .       " 指明复选框  
  246.   w_repid = sy-repid.  
  247. ENDFORM.                    " LAYOUT_BUILD  
  248. *&---------------------------------------------------------------------*  
  249. *&      Form  DISPLAY_DATA  
  250. *&---------------------------------------------------------------------*  
  251. FORM display_data .  
  252.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'  
  253. *  call function 'REUSE_ALV_LIST_DISPLAY'  
  254.     EXPORTING  
  255.       i_callback_user_command  = 'USER_COMMAND'           "用户触发事件  
  256.       i_callback_pf_status_set = g_status                 "调用用户事件和按钮事件  
  257.       i_callback_program       = w_repid                  "当前程序  
  258.       is_layout                = i_layout                 "子函数layout_build填充的格式定义  
  259.       it_fieldcat              = i_fieldcat_alv[]         "子函数fields填充的各列  
  260.       it_events                = i_events[]  
  261.       i_save                   = 'A'                      "保存变式  
  262.     TABLES  
  263.       t_outtab                 = i_tab2.                  "假设数据都在itab内表中  
  264.   
  265. ENDFORM.                    " DISPLAY_DATA  
  266. *-----------------------------------------------------------------------  
  267. *    FORM PF_STATUS_SET   加工具栏  
  268. *-----------------------------------------------------------------------  
  269. FORM standard_02 USING  extab TYPE slis_t_extab.  
  270.   SET PF-STATUS 'STD' EXCLUDING extab.  
  271. ENDFORM.                    "STANDARD_02  
  272. *&---------------------------------------------------------------------*  
  273. *&      Form  USER_COMMAND  
  274. *&---------------------------------------------------------------------*  
  275. FORM user_command  USING i_ucomm LIKE sy-ucomm  
  276.                          selfield TYPE slis_selfield.  
  277.   CASE i_ucomm.  
  278.     WHEN '&IC1'.  
  279.       CASE selfield-sel_tab_field.  
  280.         WHEN '1-VBELN'.  
  281.           SET PARAMETER ID 'VL' FIELD selfield-value.  
  282.           CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.  
  283.         WHEN '1-TKNUM'.  
  284.           SET PARAMETER ID 'TNR' FIELD selfield-value.  
  285.           CALL TRANSACTION 'VT03N' AND SKIP FIRST SCREEN.  
  286.       ENDCASE.  
  287.     WHEN OTHERS.  
  288.   ENDCASE.  
  289.   
  290. ENDFORM.                    "callback_ucomm  
  291. *&---------------------------------------------------------------------*  
  292. *&      Form  FIELDS_BUILD  
  293. *&---------------------------------------------------------------------*  
  294. FORM fields_build .  
  295.   
  296.   DATA tmp_pos TYPE i.  
  297.   REFRESH i_fieldcat_alv.  
  298.   CLEAR   i_fieldcat.  
  299.   
  300.   tmp_pos = tmp_pos + 1.  
  301.   i_fieldcat-col_pos = tmp_pos.  
  302.   i_fieldcat-fieldname = 'VBELN'.  
  303.   i_fieldcat-seltext_l = '送货单号'.  
  304.   i_fieldcat-outputlen = 10.  
  305.   i_fieldcat-no_zero   = 'X'.  
  306.   i_fieldcat-key       = 'X'.  
  307.   APPEND i_fieldcat TO i_fieldcat_alv.  
  308.   CLEAR i_fieldcat.  
  309.   
  310.   tmp_pos = tmp_pos + 1.  
  311.   i_fieldcat-col_pos = tmp_pos.  
  312.   i_fieldcat-fieldname = 'POSNR'.  
  313.   i_fieldcat-seltext_l = '行项'.  
  314.   i_fieldcat-outputlen = 6.  
  315.   i_fieldcat-no_zero   = 'X'.  
  316.   i_fieldcat-key       = 'X'.  
  317.   APPEND i_fieldcat TO i_fieldcat_alv.  
  318.   CLEAR i_fieldcat.  
  319.   
  320.   tmp_pos = tmp_pos + 1.  
  321.   i_fieldcat-col_pos = tmp_pos.  
  322.   i_fieldcat-fieldname = 'KUNNR'.  
  323.   i_fieldcat-seltext_l = '送达方'.  
  324.   i_fieldcat-outputlen = 10.  
  325.   APPEND i_fieldcat TO i_fieldcat_alv.  
  326.   CLEAR i_fieldcat.  
  327.   
  328.   tmp_pos = tmp_pos + 1.  
  329.   i_fieldcat-col_pos = tmp_pos.  
  330.   i_fieldcat-fieldname = 'BLDAT'.  
  331.   i_fieldcat-seltext_l = '凭证日期'.  
  332.   i_fieldcat-outputlen = 10.  
  333.   APPEND i_fieldcat TO i_fieldcat_alv.  
  334.   CLEAR i_fieldcat.  
  335.   
  336.   tmp_pos = tmp_pos + 1.  
  337.   i_fieldcat-col_pos = tmp_pos.  
  338.   i_fieldcat-fieldname = 'WADAT'.  
  339.   i_fieldcat-seltext_l = '计划货物移动日期'.  
  340.   i_fieldcat-outputlen = 16.  
  341.   APPEND i_fieldcat TO i_fieldcat_alv.  
  342.   CLEAR i_fieldcat.  
  343.   
  344.   tmp_pos = tmp_pos + 1.  
  345.   i_fieldcat-col_pos = tmp_pos.  
  346.   i_fieldcat-fieldname = 'ANZPK'.  
  347.   i_fieldcat-seltext_l = '包数'.  
  348.   i_fieldcat-outputlen = 5.  
  349.   i_fieldcat-no_zero   = 'X'.  
  350.   APPEND i_fieldcat TO i_fieldcat_alv.  
  351.   CLEAR i_fieldcat.  
  352.   
  353.   tmp_pos = tmp_pos + 1.  
  354.   i_fieldcat-col_pos = tmp_pos.  
  355.   i_fieldcat-fieldname = 'LFIMG'.  
  356.   i_fieldcat-seltext_l = '数量'.  
  357.   i_fieldcat-outputlen = 8.  
  358.   i_fieldcat-no_zero   = 'X'.  
  359.   APPEND i_fieldcat TO i_fieldcat_alv.  
  360.   CLEAR i_fieldcat.  
  361.   
  362.   tmp_pos = tmp_pos + 1.  
  363.   i_fieldcat-col_pos = tmp_pos.  
  364.   i_fieldcat-fieldname = 'MATNR'.  
  365.   i_fieldcat-seltext_l = '物料号'.  
  366.   i_fieldcat-outputlen = 15.  
  367.   APPEND i_fieldcat TO i_fieldcat_alv.  
  368.   CLEAR i_fieldcat.  
  369.   
  370.   tmp_pos = tmp_pos + 1.  
  371.   i_fieldcat-col_pos = tmp_pos.  
  372.   i_fieldcat-fieldname = 'TKNUM'.  
  373.   i_fieldcat-seltext_l = '装运号'.  
  374.   i_fieldcat-outputlen = 9.  
  375.   i_fieldcat-no_zero   = 'X'.  
  376.   APPEND i_fieldcat TO i_fieldcat_alv.  
  377.   CLEAR i_fieldcat.  
  378.   
  379.   tmp_pos = tmp_pos + 1.  
  380.   i_fieldcat-col_pos = tmp_pos.  
  381.   i_fieldcat-fieldname = 'EXTI1'.  
  382.   i_fieldcat-seltext_l = '商号名称'.  
  383.   i_fieldcat-outputlen = 12.  
  384.   APPEND i_fieldcat TO i_fieldcat_alv.  
  385.   CLEAR i_fieldcat.  
  386.   
  387.   tmp_pos = tmp_pos + 1.  
  388.   i_fieldcat-col_pos = tmp_pos.  
  389.   i_fieldcat-fieldname = 'EXTI2'.  
  390.   i_fieldcat-seltext_l = '带货人/车'.  
  391.   i_fieldcat-outputlen = 15.  
  392.   APPEND i_fieldcat TO i_fieldcat_alv.  
  393.   CLEAR i_fieldcat.  
  394.   
  395. ENDFORM.                    " FIELDS_BUILD  
*&---------------------------------------------------------------------*
*& Report  ZSD018
*&---------------------------------------------------------------------*
* Author  : Jasson.Lee
* Date    : 2011.12.08
* Purpose :
* Modi Log: 2011.12.08  Jasson.Lee Create
* Modi Log:
* Modi Log:
* Modi Log:
*----------------------------------------------------------------------
REPORT  zsd018.
TABLES: likp,vttp.
TYPE-POOLS: slis.
*--------------------------------
* Selection Screen
*--------------------------------
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
  s_num FOR likp-vbeln,  "送货单
  s_date FOR likp-bldat.
SELECTION-SCREEN END OF BLOCK b1.

*****************************************************************************
DATA: g_status TYPE slis_formname VALUE 'STANDARD_02'.        "加工具栏

DATA:
      i_fieldcat_alv    TYPE slis_t_fieldcat_alv,
      i_fieldcat        TYPE slis_fieldcat_alv,
      i_layout          TYPE slis_layout_alv,
      i_events          TYPE slis_t_event,
      w_events          LIKE LINE OF i_events,
      i_list_comments   TYPE slis_t_listheader,
      w_list_comments   LIKE LINE OF i_list_comments,
      w_repid           LIKE sy-repid.

DATA:
      w_loop        TYPE sy-tabix.
*      l_prod_num1   type co_psmng,
*      l_prod_num2   type  co_psmng.
DATA: BEGIN OF i_tab1 OCCURS 0,
        vbeln    LIKE likp-vbeln,
        tknum    LIKE vttk-tknum,
        exti1    LIKE vttk-exti1,
        exti2    LIKE vttk-exti2,
       END OF i_tab1.
DATA: BEGIN OF i_tab2 OCCURS 0,
        vbeln    LIKE likp-vbeln, "送货编号
        posnr    LIKE lips-posnr, "行项号
        bldat    LIKE likp-bldat, "凭证日期
        kunnr    LIKE likp-kunnr, "送达方
        wadat    LIKE likp-wadat, "计划货物移动日期
*        wadat_ist    like likp-wadat_ist, "实际货物移动日期
        anzpk    LIKE likp-anzpk, "包数
        lfimg    LIKE lips-lfimg, "交货数量
        matnr    LIKE lips-matnr, "物料号
        tknum    LIKE vttk-tknum, "装运编号
        exti1    LIKE vttk-exti1,                           "外部标识1 运输公司
        exti2    LIKE vttk-exti2, "外部标识2 司机/车牌号
        vgpos    LIKE lips-vgpos, "参考项目的项目号
       END OF i_tab2.
DATA: BEGIN OF i_tab3 OCCURS 0,
        vbeln    LIKE likp-vbeln,
        posnr    LIKE lips-posnr,
        vgpos    LIKE lips-vgpos,
       END OF i_tab3.
*data :p_coco like knb1-bukrs.
*data :w_total(10) type c.
*data :w_loop1 like sy-tabix.
*data :w_loop2 like sy-tabix.
*data :w_loop3 like sy-tabix.
DATA scount(8).
DATA :rcount LIKE sy-tabix.
DATA lstr(20).
DATA lpos(6).
*data lstr1(40).
*data lstr2(40).
*data lstr3(100).
*data lstr4(40).
*data lstr5(40).
*--------------------------------
* Initialization
*--------------------------------
INITIALIZATION.
*--------------------------------
* At Selection Screen PBO
*--------------------------------
AT SELECTION-SCREEN OUTPUT.
*--------------------------------
* Start of Selection
*--------------------------------
START-OF-SELECTION.
  PERFORM get_data.
  PERFORM process_data.
*  perform cal_data.
  PERFORM events_build.
  PERFORM layout_build.
  PERFORM fields_build.
  PERFORM display_data.

END-OF-SELECTION.
*--------------------------------
* Top of Page
*--------------------------------
TOP-OF-PAGE.
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data.

  SELECT k~vbeln p~posnr k~bldat k~kunnr k~wadat k~anzpk p~lfimg p~matnr p~vgpos
    INTO CORRESPONDING FIELDS OF TABLE i_tab2
    FROM likp AS k INNER JOIN lips AS p ON k~vbeln = p~vbeln
    WHERE k~vbeln IN s_num
    AND   k~bldat IN s_date
    AND   p~lfimg > 0  .

  IF i_tab2[] IS INITIAL .
    MESSAGE i000(zmsg) WITH '没找到对应的数据,请更改查询条件'.
    LEAVE LIST-PROCESSING .
  ELSE.
    SELECT p~vbeln k~tknum k~exti1 k~exti2
       INTO TABLE i_tab1
       FROM vttk AS k INNER JOIN vttp AS p ON k~tknum = p~tknum
       FOR ALL ENTRIES IN i_tab2
       WHERE p~vbeln = i_tab2-vbeln.

    SELECT p~vbeln p~posnr p~vgpos
       INTO TABLE i_tab3
       FROM lips AS p
       FOR ALL ENTRIES IN i_tab2
       WHERE p~vbeln = i_tab2-vbeln AND  p~posnr < '900001'.

  ENDIF.

ENDFORM.                    "get_data
*&---------------------------------------------------------------------*
*&      Form  process_data
*&---------------------------------------------------------------------*
FORM process_data.
  LOOP AT i_tab2.
    w_loop = sy-tabix.
    CLEAR i_tab1.
    READ TABLE i_tab1 WITH KEY vbeln = i_tab2-vbeln BINARY SEARCH.
    IF sy-subrc = 0.
      i_tab2-tknum  = i_tab1-tknum.
      i_tab2-exti1  = i_tab1-exti1.
      i_tab2-exti2  = i_tab1-exti2.
    ENDIF.
    READ TABLE i_tab3 WITH KEY vbeln = i_tab2-vbeln
                               vgpos = i_tab2-vgpos.
    IF sy-subrc = 0.
      i_tab2-posnr = i_tab3-posnr.
    ENDIF.
    MODIFY i_tab2 INDEX w_loop.
    sy-tabix = w_loop + 1.
  ENDLOOP.
ENDFORM.                    "process_data
*&---------------------------------------------------------------------*
*&      Form  CAL_DATA
*&---------------------------------------------------------------------*
FORM cal_data .
  DESCRIBE TABLE i_tab2 LINES rcount.
  scount = rcount.
  CONCATENATE '符合条件的记录数:' scount INTO lstr.

  IF i_tab2[] IS INITIAL .
    MESSAGE i000(zmsg) WITH '没找到对应的数据,请更改查询条件'.
    LEAVE LIST-PROCESSING .
  ENDIF.
ENDFORM.                    " CAL_DATA
*&---------------------------------------------------------------------*
*&      Form  EVENTS_BUILD
*&---------------------------------------------------------------------*
FORM events_build .
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = i_events.

*  read table i_events  with key name = 'END_OF_LIST'  into w_events.
*   if sy-subrc = 0.
*     move 'ALV_END_OF_LIST' to w_events-form.
*     modify i_events from w_events index sy-tabix.
*   endif.

  READ TABLE i_events WITH KEY name = 'USER_COMMAND'   INTO w_events.
  IF sy-subrc = 0.
    MOVE 'USER_COMMAND' TO w_events-form.
    MODIFY i_events FROM w_events INDEX sy-tabix.
  ENDIF.

ENDFORM.                    " EVENTS_BUILD
*&--------------------------------------------------------------------*
*&      Form  ALV_END_OF_LIST
*&--------------------------------------------------------------------*
FORM alv_top_of_page.

  CLEAR: i_list_comments.
  w_list_comments-typ = 'H'.
  w_list_comments-key = ''.
  w_list_comments-info = '  '.
  APPEND w_list_comments TO i_list_comments.
  CLEAR w_list_comments.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = i_list_comments
      i_end_of_list_grid = 'X'.
ENDFORM.                    "ALV_TOP_OF_PAGE
*&--------------------------------------------------------------------*
*&      Form  ALV_END_OF_LIST
*&--------------------------------------------------------------------*
FORM alv_end_of_list.
  CLEAR: i_list_comments.
  w_list_comments-typ = 'H'.
  w_list_comments-key = ''.
  w_list_comments-info = lstr.
  APPEND w_list_comments TO i_list_comments.
  CLEAR w_list_comments.

  w_list_comments-typ = 'S'.
  w_list_comments-key = ''.
  w_list_comments-info = '    报表开发者:IT部              开发日期:2011/12/08'.
  APPEND w_list_comments TO i_list_comments.
  CLEAR w_list_comments.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = i_list_comments
      i_end_of_list_grid = 'X'.
ENDFORM.                    "ALV_END_OF_LIST
*&---------------------------------------------------------------------*
*&      Form  LAYOUT_BUILD
*&---------------------------------------------------------------------*
FORM layout_build .
  i_layout-zebra                = 'X' .         " 显示界面成色带交替
  i_layout-detail_popup         = 'X'.          "弹出详细信息窗口
  i_layout-info_fieldname       = 'COLOR'.      "颜色值
*  I_LAYOUT-COLWIDTH_OPTIMIZE   = 'X'.          "优化列宽选项
  i_layout-detail_initial_lines = 'X'.
  i_layout-detail_titlebar      = 'Delivery Status'.
  i_layout-no_colhead           =' '.
*  I_LAYOUT-BOX_FIELDNAME       = 'BOX' .       " 指明复选框
  w_repid = sy-repid.
ENDFORM.                    " LAYOUT_BUILD
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
*  call function 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      i_callback_user_command  = 'USER_COMMAND'           "用户触发事件
      i_callback_pf_status_set = g_status                 "调用用户事件和按钮事件
      i_callback_program       = w_repid                  "当前程序
      is_layout                = i_layout                 "子函数layout_build填充的格式定义
      it_fieldcat              = i_fieldcat_alv[]         "子函数fields填充的各列
      it_events                = i_events[]
      i_save                   = 'A'                      "保存变式
    TABLES
      t_outtab                 = i_tab2.                  "假设数据都在itab内表中

ENDFORM.                    " DISPLAY_DATA
*-----------------------------------------------------------------------
*    FORM PF_STATUS_SET   加工具栏
*-----------------------------------------------------------------------
FORM standard_02 USING  extab TYPE slis_t_extab.
  SET PF-STATUS 'STD' EXCLUDING extab.
ENDFORM.                    "STANDARD_02
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
FORM user_command  USING i_ucomm LIKE sy-ucomm
                         selfield TYPE slis_selfield.
  CASE i_ucomm.
    WHEN '&IC1'.
      CASE selfield-sel_tab_field.
        WHEN '1-VBELN'.
          SET PARAMETER ID 'VL' FIELD selfield-value.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
        WHEN '1-TKNUM'.
          SET PARAMETER ID 'TNR' FIELD selfield-value.
          CALL TRANSACTION 'VT03N' AND SKIP FIRST SCREEN.
      ENDCASE.
    WHEN OTHERS.
  ENDCASE.

ENDFORM.                    "callback_ucomm
*&---------------------------------------------------------------------*
*&      Form  FIELDS_BUILD
*&---------------------------------------------------------------------*
FORM fields_build .

  DATA tmp_pos TYPE i.
  REFRESH i_fieldcat_alv.
  CLEAR   i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'VBELN'.
  i_fieldcat-seltext_l = '送货单号'.
  i_fieldcat-outputlen = 10.
  i_fieldcat-no_zero   = 'X'.
  i_fieldcat-key       = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'POSNR'.
  i_fieldcat-seltext_l = '行项'.
  i_fieldcat-outputlen = 6.
  i_fieldcat-no_zero   = 'X'.
  i_fieldcat-key       = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'KUNNR'.
  i_fieldcat-seltext_l = '送达方'.
  i_fieldcat-outputlen = 10.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'BLDAT'.
  i_fieldcat-seltext_l = '凭证日期'.
  i_fieldcat-outputlen = 10.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'WADAT'.
  i_fieldcat-seltext_l = '计划货物移动日期'.
  i_fieldcat-outputlen = 16.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'ANZPK'.
  i_fieldcat-seltext_l = '包数'.
  i_fieldcat-outputlen = 5.
  i_fieldcat-no_zero   = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'LFIMG'.
  i_fieldcat-seltext_l = '数量'.
  i_fieldcat-outputlen = 8.
  i_fieldcat-no_zero   = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'MATNR'.
  i_fieldcat-seltext_l = '物料号'.
  i_fieldcat-outputlen = 15.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'TKNUM'.
  i_fieldcat-seltext_l = '装运号'.
  i_fieldcat-outputlen = 9.
  i_fieldcat-no_zero   = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'EXTI1'.
  i_fieldcat-seltext_l = '商号名称'.
  i_fieldcat-outputlen = 12.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  tmp_pos = tmp_pos + 1.
  i_fieldcat-col_pos = tmp_pos.
  i_fieldcat-fieldname = 'EXTI2'.
  i_fieldcat-seltext_l = '带货人/车'.
  i_fieldcat-outputlen = 15.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

ENDFORM.                    " FIELDS_BUILD



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值