zoukankan      html  css  js  c++  java
  • SAP 与 扫码枪调用平台 过账功能

    1、该程序无筛选屏幕,运行直接进入界面,如下:

     代码如下:

    *&---------------------------------------------------------------------*
    *&程序描述                    :
    *&申请人                      :
    *&作者                        :
    *&日期                        :2021.03.24
    *&---------------------------------------------------------------------*
    *&摘要:
    *      1.
    *      2.
    *&---------------------------------------------------------------------*
    *&变更记录:                                                           *
    *&Date         Developer           ReqNo       Descriptions            *
    *& ==========  ==================  ==========  ========================*
    *&
    *&---------------------------------------------------------------------*
    PROGRAM zsdf029.
    *--------------------------------------------------------------------*
    *                   类型定义
    *--------------------------------------------------------------------*
    TABLES:lips.
    TYPES:
      BEGIN OF ty_lips,
        mark     TYPE c,
        zgzzt    TYPE char5"过账状态
        wbstk    TYPE vbuk-wbstk,
        vbeln    TYPE lips-vbeln,
        posnr    TYPE lips-posnr,
        matnr    TYPE lips-matnr,
        maktx    TYPE makt-maktx,
        zcpgg    TYPE mara-zcpgg,
        werks    TYPE lips-werks,
        lgort    TYPE lips-lgort,
        lfimg    TYPE lips-lfimg,
        zxulie1  TYPE zsdt033-zxulie1,
        zxulie2  TYPE zsdt033-zxulie2,
        zzcno    TYPE zsdt003-zzcno,
        zzshipno TYPE zsdt003-zzshipno,
        zmsg     TYPE c LENGTH 100,
      END OF ty_lips.

    *--------------------------------------------------------------------*
    *                    内表定义
    *--------------------------------------------------------------------*
    DATA:
      gt_lips   TYPE TABLE OF ty_lips,
      gs_lips   TYPE          ty_lips,
      lt_zsd033 TYPE TABLE OF zsdt033,
      ls_zsd033 TYPE          zsdt033.
    DATA:BEGIN OF ls_post,
         vbeln TYPE lips-vbeln,
         wbstk TYPE vbuk-wbstk,
         zmess TYPE c LENGTH 100,
         END OF ls_post,
         lt_post LIKE STANDARD TABLE OF ls_post.
    DATA:BEGIN OF gs_wl,
         vbeln TYPE lips-vbeln,
         zzcno    TYPE zsdt003-zzcno,
         zzshipno TYPE zsdt003-zzshipno,
         END OF gs_wl,
         gt_wl LIKE STANDARD TABLE OF gs_wl.
    *                    表声明
    *--------------------------------------------------------------------*
    *-----常量
    DATA:
      gv_time    TYPE i,
      gc_x       TYPE c LENGTH  VALUE 'X',        "X
      gc_status  TYPE slis_formname VALUE 'FRM_PF_STATUS_SET'"FRM_PF_STATUS_SET
      gc_command TYPE slis_formname VALUE 'FRM_USER_COMMAND'.  "FRM_USER_COMMAND
    DATA:
      ok_code TYPE sy-ucomm.                        "OK_CODE
    *alv相关变量
    DATA:
    *  GC_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER, "分屏主容器
      gc_grid01 TYPE REF TO cl_gui_alv_grid ,        "ALV List Viewer
      gc_con01  TYPE REF TO cl_gui_custom_container"存放ALV的容器
    DATA:
      gs_stbl TYPE lvc_s_stbl.
    DATA lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.

    INITIALIZATION.
    CLEAR lt_f4[].
    lt_f4-fieldname  'ZZCNO'.
    lt_f4-register   'X'.
    APPEND lt_f4.


    DEFINE m_refresh_grid.
      GS_STBL-ROW 'X'." 基于行的稳定刷新
      GS_STBL-COL 'X'." 基于列稳定刷新

      CALL METHOD &1->REFRESH_TABLE_DISPLAY
        EXPORTING
        IS_STABLE = GS_STBL.
    END-OF-DEFINITION.
    *&---------------------------------------------------------------------*
    *&       Class CL_EVT_RECEIVER
    *&---------------------------------------------------------------------*
    *        Text
    *----------------------------------------------------------------------*
    CLASS cl_evt_receiver DEFINITION.
      PUBLIC SECTION.
    *   自定义功能
        METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
          IMPORTING e_object e_interactive.
    *   user_command事件
        METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
          IMPORTING e_ucomm.
    *   回车事件
        METHODS handle_data_changed_finished  FOR EVENT data_changed_finished OF cl_gui_alv_grid
          IMPORTING e_modified et_good_cells.
    *  双击
    *    METHODS handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
    *      IMPORTING e_row e_column.
    *F4
    *    METHODS handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid
    *     IMPORTING e_fieldname es_row_no er_event_data.
    ENDCLASS.               "CL_EVT_RECEIVER
    *&---------------------------------------------------------------------*
    *&       Class (Implementation)  cl_evt_receiver
    *&---------------------------------------------------------------------*
    *        Text
    *----------------------------------------------------------------------*
    CLASS cl_evt_receiver IMPLEMENTATION.
      METHOD handle_data_changed_finished.
        CHECK sy-ucomm <> 'BACK'.
        CHECK e_modified 'X'.

    **   数据改变
    *    PERFORM FRM_DATA_CHANGED
    *      USING ET_GOOD_CELLS.
      ENDMETHOD.

      METHOD handle_toolbar.
        DATA: ls_toolbar TYPE stb_button.
        DATA: lr_fcode TYPE RANGE OF ui_func.
        DATA: ls_fcode LIKE LINE OF lr_fcode.

        ls_fcode-sign 'I'.
        ls_fcode-option 'EQ'.
        "排除无用按键
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_append_row .
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_copy .
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_copy_row.
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_cut.
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_insert_row.
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_move_row .
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_paste .
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_paste_new_row .
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_undo .
        APPEND ls_fcode TO lr_fcode.
        ls_fcode-low = cl_gui_alv_grid=>mc_fc_loc_delete_row  .
        APPEND ls_fcode TO lr_fcode.

        DELETE e_object->mt_toolbar WHERE function IN lr_fcode.

        CLEAR ls_toolbar.
        MOVE TO ls_toolbar-butn_type.
        APPEND ls_toolbar TO e_object->mt_toolbar.
      ENDMETHOD.


      METHOD handle_user_command.
        DATA:
          lt_rows  TYPE lvc_t_roid,
          ls_rows  TYPE lvc_s_roid,
          ls_style TYPE lvc_s_styl,
          lt_style TYPE lvc_t_styl.

        CASE e_ucomm.
          WHEN ''.


        ENDCASE.

        m_refresh_grid gc_grid01.
      ENDMETHOD.

    *  METHOD handle_onf4.
    *    DATA: ls_modi TYPE lvc_s_modi,
    *          lt_ret_tab TYPE TABLE OF ddshretval,
    *          ls_ret_tab TYPE ddshretval.
    *    DATA:BEGIN OF ls_zwuliu,
    *         zwuliu TYPE zsdt034-zwuliu,
    *         END OF ls_zwuliu,
    *         lt_zwuliu LIKE STANDARD TABLE OF ls_zwuliu.
    *    SELECT zwuliu
    *      INTO TABLE lt_zwuliu
    *      FROM zsdt034.
    *    FIELD-SYMBOLS <modtab> TYPE lvc_t_modi.
    *    IF e_fieldname = 'ZZCNO'. "我们自定义搜索的字段名
    *      READ TABLE gt_lips INTO gs_lips INDEX es_row_no-row_id.
    *      CHECK sy-subrc = 0.
    ***  这里可以添加代码以对lt_hitlist内表进行填充
    *      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    *        EXPORTING
    *          retfield        = 'ZZCNO'
    *          value_org       = 'S'
    *        TABLES
    *          value_tab       = lt_zwuliu
    **          return_tab      = lt_ret_tab
    *        EXCEPTIONS
    *          parameter_error = 1
    *          no_values_found = 2
    *          OTHERS          = 3.
    **      IF sy-subrc = 0.
    ****  Update the value in ALV cell
    **        READ TABLE lt_ret_tab INTO ls_ret_tab INDEX 1.
    **        IF sy-subrc = 0. " User didn't cancel
    **          ls_modi-row_id = es_row_no-row_id.
    **          ls_modi-fieldname = e_fieldname.
    **          ls_modi-value = ls_ret_tab-fieldval.
    **          ASSIGN er_event_data->m_data->* TO <modtab>.
    **          APPEND ls_modi TO <modtab>.
    **        ENDIF.
    **      ENDIF.
    ***  Inform ALV Grid that event 'onf4' has been processed
    *      er_event_data->m_event_handled = 'X'.
    *    ENDIF.
    *  ENDMETHOD.                    "handle_onf4

    *  METHOD handle_double_click.
    *    CONDENSE e_row     NO-GAPS.
    *    CONDENSE e_column  NO-GAPS.
    *    MESSAGE i001(00) WITH '双击事件->行号:' e_row  '、列名:' e_column.
    *  ENDMETHOD.
    ENDCLASS.               "cl_evt_receiver


    *&---------------------------------------------------------------------*
    *& Module STATUS_0100 OUTPUT
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    MODULE status_0100 OUTPUT.
      DATA:
        lc_evt_receiver TYPE REF TO   cl_evt_receiver,
        lt_extab        LIKE TABLE OF sy-ucomm WITH HEADER LINE.
      SET PF-STATUS 'STA_001' EXCLUDING lt_extab.

    *  PERFORM  

    IF gc_con01 IS NOT BOUND.
    *   创建容器对象    
    CREATE OBJECT gc_con01      
    EXPORTING        container_name 
    'GC_CON01'.  
    ENDIF.  

    IF gc_grid01 IS NOT BOUND.
    *   创建ALV OO表格对象    
    CREATE OBJECT gc_grid01      
    EXPORTING        i_parent 
    = gc_con01.  
    ENDIF.

    * 设置事件  
    IF lc_evt_receiver IS NOT BOUND.    
    CREATE OBJECT lc_evt_receiver.  
    ENDIF.  

    CALL METHOD gc_grid01->register_edit_event    
    EXPORTING      i_event_id 
    = cl_gui_alv_grid=>mc_evt_modified.
    * 回车事件  
    CALL METHOD gc_grid01->register_edit_event    
    EXPORTING      i_event_id 
    = cl_gui_alv_grid=>mc_evt_enter.
    * 绑定事件  
    SET HANDLER lc_evt_receiver->handle_toolbar FOR gc_grid01.  
    SET HANDLER lc_evt_receiver->handle_user_command FOR gc_grid01.
    *  SET HANDLER lc_evt_receiver->handle_double_click FOR gc_grid01.
    *  SET HANDLER lc_evt_receiver->handle_data_changed FOR gc_grid01.  
    SET HANDLER lc_evt_receiver->handle_data_changed_finished FOR gc_grid01.
    *  SET HANDLER lc_evt_receiver->handle_onf4 FOR gc_grid01.
    *
    *  CALL METHOD gc_grid01->register_f4_for_fields
    *     EXPORTING
    *       it_f4 = lt_f4[].


    * 展示ALV  
    PERFORM frm_alv_display.
    ENDMODULE.
    *&---------------------------------------------------------------------*
    *& Form FRM_ALV_DISPLAY
    *&---------------------------------------------------------------------*
    *& 展示ALV
    *&---------------------------------------------------------------------*
    FORM frm_alv_display .  
    DATA:    ls_layout   
    TYPE lvc_s_layo,    ls_variant  
    TYPE disvariant,    lt_fieldcat 
    TYPE lvc_t_fcat,    ls_fieldcat 
    TYPE lvc_s_fcat.  

    DEFINE m_fieldcat.    
    CLEAR LS_FIELDCAT.    LS_FIELDCAT
    -FIELDNAME = &1.                  "字段ID
    *    LS_FIELDCAT-COLTEXT   = &2.                  "列标题    LS_FIELDCAT
    -SCRTEXT_S     = &2.    LS_FIELDCAT
    -SCRTEXT_M     = &2.    LS_FIELDCAT
    -SCRTEXT_L    = &2.    LS_FIELDCAT
    -REF_TABLE = &3.                  "参考表名称    LS_FIELDCAT
    -REF_FIELD = &4.                  "参考字段名称    LS_FIELDCAT
    -OUTPUTLEN = &5.                  "输出字段长度 (影响ALV中的筛选功能)    LS_FIELDCAT
    -EDIT      = &6.                  "可编辑    LS_FIELDCAT
    -DO_SUM   = &7.     "F4AVAILABL    LS_FIELDCAT
    -CHECKBOX    = &8.    
    APPEND LS_FIELDCAT TO LT_FIELDCAT.  
    END-OF-DEFINITION.  m_fieldcat  
    'MARK' '选择' '' '' '' 'X' '' 'X'.  m_fieldcat  
    'ZGZZT' '过账状态' '' '' '' '' '' ''.  m_fieldcat  
    'VBELN' '销售交货单' 'LIPS' 'VBELN' '' '' '' ''.  m_fieldcat  
    'POSNR' '交货单行号' 'LIPS' 'POSNR' '' '' '' ''.  m_fieldcat  
    'MATNR' '物料号' 'LIPS' 'MATNR' '' '' '' ''.  m_fieldcat  
    'MAKTX' '物料描述' 'MAKT' 'MAKTX' '' '' '' ''.  m_fieldcat  
    'ZCPGG' '规格型号' 'MARA' 'ZCPGG' '' '' '' ''.  m_fieldcat  
    'WERKS' '工厂' 'LIPS' 'WERKS' '' '' '' ''.  m_fieldcat  
    'LGORT' '库位' 'LIPS' 'LGORT' '' '' '' ''.  m_fieldcat  
    'LFIMG' '交货数量' 'LIPS' 'LFIMG' '' '' '' ''.  m_fieldcat  
    'ZXULIE1' '开始序列号' 'ZSDT033' 'ZXULIE1' '' 'X' '' ''.  m_fieldcat  
    'ZXULIE2' '结束序列号' 'ZSDT033' 'ZXULIE2' '' 'X' '' ''.  m_fieldcat  
    'ZZCNO' '物流公司' 'ZSDT034' 'ZWULIU' '20' 'X' '' ''.  m_fieldcat  
    'ZZSHIPNO' '货运单号' '' '' '40' 'X' '' ''.  m_fieldcat  
    'ZMSG' '消息' '' '' '' '' '' ''.

    * 布局设置  
    CLEAR ls_layout.  ls_layout
    -zebra      'X'.    "斑马线  ls_layout
    -cwidth_opt 'X'.    "最优宽
    *  ls_layout-box_fname = 'MARK'.
    *  LS_LAYOUT-SEL_MODE   = 'D'.
    *  LS_LAYOUT-GRID_TITLE = '采购订单明细'.  ls_variant
    -report    = sy-repid.  

    CALL METHOD gc_grid01->set_table_for_first_display    
    EXPORTING      i_save                        
    'A'      is_layout                     
    = ls_layout      is_variant                    
    = ls_variant    
    CHANGING      it_outtab                     
    = gt_lips[]      it_fieldcatalog               
    = lt_fieldcat[]    
    EXCEPTIONS      invalid_parameter_combination 
    1      program_error                 
    2      too_many_lines                
    3      
    OTHERS                        4.  

    IF sy-subrc NE 0.    
    MESSAGE 'ALV创建失败' TYPE 'S' DISPLAY LIKE 'E'.  
    ENDIF.

    *    CALL METHOD gc_grid01->register_edit_event
    *       EXPORTING
    *        i_event_id = cl_gui_alv_grid=>mc_evt_modified.


    ENDFORM.

    *&---------------------------------------------------------------------*
    *&      Module  USER_COMMAND_0100  INPUT
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    MODULE user_command_0100 INPUT.  
    DATA: save_ok TYPE sy-ucomm.  save_ok 

    = ok_code.  
    CLEAR ok_code.  
    CLEAR sy-ucomm.  
    CASE save_ok.    
    WHEN '&SAVE'.
    *     维护时保存
    *      PERFORM frm_save_wh.    
    WHEN '&EXIT'.      
    LEAVE PROGRAM.    
    WHEN '&BACK'.      
    LEAVE TO SCREEN 0.    
    WHEN '&CANCEL'.      
    LEAVE TO SCREEN 0.
    *   回车时    
    WHEN ''.      
    PERFORM frm_get_alv_data.
    *   销售出库过账    
    WHEN 'POST'.      
    PERFORM frm_post_date.
    *   刷新    
    WHEN 'REFRESH'.      
    IF lips-vbeln IS NOT INITIAL.        
    CLEAR lips-vbeln.      
    ENDIF.      
    PERFORM frm_wuliu_data"根据交货单号自动填充物流信息      
    "扫码枪双击
    *    WHEN 'DCLICK'.
    *      PERFORM frm_get_alv_data.      
    "保存    
    WHEN 'ZSAVE'.      
    IF gt_lips IS NOT INITIAL.        
    READ TABLE gt_lips INTO gs_lips WITH KEY mark 'X'.        
    IF sy-subrc <> 0.           
    MESSAGE '请选择你要保存的数据' TYPE 'E'.        
    ENDIF.        
    CLEAR:lt_zsd033,ls_zsd033.        
    LOOP AT gt_lips INTO gs_lips WHERE mark 'X'.          
    MOVE-CORRESPONDING gs_lips TO ls_zsd033.          ls_zsd033
    -zvbeln = gs_lips-vbeln.          ls_zsd033
    -zposnr = gs_lips-posnr.          
    APPEND ls_zsd033 TO lt_zsd033.        
    ENDLOOP.        
    IF lt_zsd033[] IS NOT INITIAL.          
    MODIFY zsdt033 FROM TABLE lt_zsd033.          
    IF sy-subrc 0.             
    LOOP AT gt_lips INTO gs_lips WHERE mark 'X'.                gs_lips
    -zmsg '保存成功'.                
    MODIFY gt_lips FROM gs_lips TRANSPORTING zmsg.             
    ENDLOOP.          
    ENDIF.        
    ENDIF.      
    ENDIF.     
    WHEN 'GV_SEL'.       
    LOOP AT gt_lips INTO gs_lips.          gs_lips
    -mark 'X'.          
    MODIFY gt_lips FROM gs_lips TRANSPORTING mark.       
    ENDLOOP.     
    WHEN 'GV_NSEL'.       
    LOOP AT gt_lips INTO gs_lips WHERE mark 'X'.          gs_lips
    -mark ''.          
    MODIFY gt_lips FROM gs_lips TRANSPORTING mark.       
    ENDLOOP.  
    ENDCASE.
    ENDMODULE.
    *&---------------------------------------------------------------------*
    *&      Form  FRM_GET_ALV_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM frm_get_alv_data .  
    IF lips-vbeln IS NOT INITIAL.    
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'      
    EXPORTING        
    input  = lips-vbeln      
    IMPORTING        
    output = lips-vbeln.    

    SELECT a~vbeln a~posnr a~matnr c~maktx           b
    ~zcpgg a~werks a~lgort a~lfimg           d
    ~zxulie1 d~zxulie2 e~zzcno e~zzshipno f~wbstk      
    APPENDING CORRESPONDING FIELDS OF TABLE gt_lips      
    FROM lips AS a      INNER 
    JOIN mara AS b ON a~matnr = b~matnr      INNER 
    JOIN makt AS ON b~matnr c~matnr AND c~spras '1'      
    LEFT JOIN zsdt033 AS d ON a~vbeln = d~zvbeln AND a~posnr = d~zposnr      
    LEFT JOIN zsdt003 AS e ON a~vbeln = e~vbeln AND a~posnr = e~posnr      
    LEFT JOIN vbuk AS f ON a~vbeln = f~vbeln      
    WHERE a~vbeln = lips-vbeln.      

    CLEAR lips-vbeln.      
    SORT gt_lips BY vbeln posnr matnr.      
    DELETE ADJACENT DUPLICATES FROM gt_lips COMPARING vbeln posnr matnr.      

    LOOP AT gt_lips INTO gs_lips.          
    IF gs_lips-wbstk 'A'.             gs_lips
    -zgzzt '未过账'.             
    ELSEIF gs_lips-wbstk 'C'.               gs_lips
    -zgzzt '已过账'.          
    ENDIF.          
    MODIFY gt_lips FROM gs_lips TRANSPORTING zgzzt.      
    ENDLOOP.  

    ENDIF.
    ENDFORM.                    " FRM_GET_ALV_DATA
    *&---------------------------------------------------------------------*
    *&      Form  FRM_POST_DATE
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM frm_post_date .  
    DATA: ls_header_data    LIKE          bapiobdlvhdrcon,        ls_header_control 
    LIKE          bapiobdlvhdrctrlcon,        lt_return         
    LIKE TABLE OF bapiret2 WITH HEADER LINE,        c_return          
    LIKE TABLE OF bapiret2 WITH HEADER LINE.  
    DATA:lt_item LIKE TABLE OF bapiobdlvitemcon WITH HEADER LINE"交货单项目  
    DATA:lt_zsd003 TYPE TABLE OF zsdt003,       ls_zsd003 
    TYPE zsdt003.  
    DATA:lv_flg TYPE c.  
    DATA:lv_mess TYPE c LENGTH 100.  
    CLEAR lv_flg.  
    IF gt_lips[] IS NOT INITIAL.    
    PERFORM frm_check_data.    
    LOOP AT lt_post INTO ls_post.        ls_header_data
    -deliv_numb = ls_post-vbeln.        ls_header_control
    -deliv_numb = ls_post-vbeln.        ls_header_control
    -post_gi_flg 'X'."过账状态        ls_header_control
    -volume_flg 'X'"量的确认        ls_header_control
    -deliv_date_flg 'X'"确认交货日期        

    CALL FUNCTION 'BAPI_OUTB_DELIVERY_CONFIRM_DEC'          
    EXPORTING            header_data    
    = ls_header_data            header_control 
    = ls_header_control            delivery       
    = ls_post-vbeln
    *           TECHN_CONTROL  =
    *           HEADER_DATA_SPL                  =
    *           HEADER_CONTROL_SPL               =          
    TABLES
    *           HEADER_PARTNER =
    *           HEADER_PARTNER_ADDR              =
    *           HEADER_DEADLINES                 =
    *           ITEM_DATA      =
    *           ITEM_CONTROL   =
    *           HANDLING_UNIT_SERNO              =            
    return         = lt_return.        
    READ TABLE lt_return WITH KEY type 'E'.        
    IF sy-subrc 0.          
    CLEAR lv_mess.          
    LOOP AT lt_return WHERE type 'E' .              lv_mess 
    = lv_mess && lt_return-message.          
    ENDLOOP.          
    CONDENSE lv_mess NO-GAPS.          
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.           ls_post
    -wbstk 'A'"过账失败  未过账状态        

    ELSE.          
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'            
    EXPORTING              
    wait   'X'            
    IMPORTING              
    return = c_return.            ls_post
    -wbstk 'C'."已过账        
    ENDIF.        ls_post
    -zmess = lv_mess.        
    MODIFY lt_post FROM ls_post TRANSPORTING wbstk zmess.    
    ENDLOOP.    
    LOOP AT gt_lips INTO gs_lips WHERE mark 'X'.        
    READ TABLE lt_post INTO ls_post WITH KEY vbeln = gs_lips-vbeln"更新过账状态        
    IF sy-subrc 0.            gs_lips
    -zmsg = ls_post-zmess.           
    IF ls_post-wbstk 'C'"过账成功 更新表
    *              SELECT * INTO TABLE lt_zsd003
    *                FROM zsdt003
    *               WHERE vbeln = gs_lips-vbeln
    *                  AND posnr = gs_lips-posnr.                ls_zsd003


    -vbeln = gs_lips-vbeln.                ls_zsd003
    -posnr = gs_lips-posnr.                ls_zsd003
    -zzcno = gs_lips-zzcno"物流公司                ls_zsd003
    -zzshipno = gs_lips-zzshipno."货运单号                
    APPEND ls_zsd003 TO lt_zsd003.                
    CLEAR ls_zsd003.             gs_lips
    -wbstk ='C'.             gs_lips
    -zgzzt '已过账'.             gs_lips
    -zmsg '过账成功'.             

    ELSE.               gs_lips
    -wbstk 'A'.               gs_lips
    -zgzzt '未过账'.            
    ENDIF.        
    ENDIF.            
    MODIFY gt_lips FROM gs_lips TRANSPORTING wbstk zgzzt zmsg.            
    CLEAR gs_lips.    
    ENDLOOP.    

    IF lt_zsd003[] IS NOT INITIAL.        
    MODIFY zsdt003 FROM TABLE lt_zsd003.       
    IF sy-subrc 0.          
    COMMIT WORK.          
    ELSE.            
    ROLLBACK WORK.       
    ENDIF.    
    ENDIF.  
    ENDIF.
    ENDFORM.                    " FRM_POST_DATE
    *&---------------------------------------------------------------------*
    *&      Form  FRM_CHECK_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM frm_check_data .  
    READ TABLE gt_lips INTO gs_lips WITH KEY mark 'X'.  
    IF sy-subrc <> 0.      
    MESSAGE '请选择你要过账的数据' TYPE 'E'.  
    ENDIF.  
    LOOP AT gt_lips INTO gs_lips WHERE mark 'X'.     
    IF gs_lips-zxulie1 IS INITIAL OR gs_lips-zxulie2 IS INITIAL OR gs_lips-zzcno IS INITIAL OR gs_lips-zzshipno IS INITIAL.        
    MESSAGE '请先完善开始序列号、结束序列号、物流公司、货运单号信息后才能过账' TYPE 'E'.     
    ENDIF.     
    IF gs_lips-wbstk 'C'.        
    MESSAGE gs_lips-vbeln && ',单号已过账,不允许重复过账' TYPE 'E'.     
    ENDIF.     ls_post
    -vbeln = gs_lips-vbeln"可以过账内表     
    APPEND ls_post TO lt_post.     
    CLEAR:gs_lips,ls_post.  
    ENDLOOP.
    ENDFORM.                    " FRM_CHECK_DATA
    *&---------------------------------------------------------------------*
    *&      Form  FRM_WULIU_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM frm_wuliu_data .
    LOOP AT gt_lips INTO gs_lips.  
    IF gs_lips-wbstk NE 'C' AND ( gs_lips-zzcno IS NOT INITIAL AND gs_lips-zzshipno IS NOT INITIAL ).    
    MOVE-CORRESPONDING gs_lips TO gs_wl.    
    APPEND gs_wl TO gt_wl.    
    CLEAR:gs_lips,gs_wl.  
    ENDIF.
    ENDLOOP.

    SORT gt_wl.
    DELETE ADJACENT DUPLICATES FROM gt_wl COMPARING ALL FIELDS.
    LOOP AT gt_lips INTO gs_lips.   
    IF gs_lips-wbstk NE 'C' AND ( gs_lips-zzcno IS INITIAL OR gs_lips-zzshipno IS INITIAL ).      
    READ TABLE gt_wl INTO gs_wl WITH KEY vbeln = gs_lips-vbeln.      
    IF sy-subrc 0.          gs_lips
    -zzcno = gs_wl-zzcno.          gs_lips
    -zzshipno = gs_wl-zzshipno.      
    ENDIF.   
    ENDIF.   
    MODIFY gt_lips FROM gs_lips TRANSPORTING zzcno zzshipno.
    ENDLOOP.
    ENDFORM.                    " FRM_WULIU_DATA

     2、GUI STATUS

    3、屏幕号100  条码录入输入框属性设置双击响应

    社会很单纯,复杂的是人
  • 相关阅读:
    centos mongo数据库搭建
    闪屏页白屏或者显示旧图
    在Sqlserver下巧用行列转换日期的数据统计
    读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
    MVC的自定义动作过滤器(一)
    【算法】快排
    【编程范式】C语言1
    排序
    日志记录类
    邮箱发送类
  • 原文地址:https://www.cnblogs.com/coderfarmer/p/14686402.html
Copyright © 2011-2022 走看看