ABAP 订单转交货单

Posted 衣斜川

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP 订单转交货单相关的知识,希望对你有一定的参考价值。

*& Report  ZSDR025
*&
*&---------------------------------------------------------------------*
*&程序名称
*&事物代码:
*&导入模板:无
*&作者
*&时间:
*&更新时间
REPORT zsdr025.

TYPE-POOLS: slis.
TABLES : vbak,vbap,vbep,ztsd024,t171t.
SELECTION-SCREEN BEGIN OF BLOCK sc3 WITH FRAME TITLE text-003.
SELECT-OPTIONS : vkorg FOR vbak-vkorg  MEMORY ID vko,
                          werks FOR  vbap-werks,
*PARAMETERS : "vkorg LIKE vbak-vkorg OBLIGATORY MEMORY ID vko,
                         vtweg FOR  vbak-vtweg  MEMORY ID vtw,
                         "spart FOR  vbak-spart  MEMORY ID spa,
                         "spart2 FOR  vbap-spart  MEMORY ID spa1,
                         bzrik FOR  t171t-bzirk,
                         vkbur FOR  vbak-vkbur ,
                         vkgrp FOR  vbak-vkgrp

.
SELECTION-SCREEN END OF BLOCK sc3.

SELECTION-SCREEN BEGIN OF BLOCK sc1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : auart FOR vbak-auart.

*kunnr_y LIKE  vbpa-kunnr,
SELECT-OPTIONS :
kunnr FOR  vbak-kunnr,
*werks FOR  vbap-werks,
lgort FOR  vbap-lgort,
vstel FOR  vbap-vstel,
ernam FOR  vbak-ernam,
vbeln FOR  vbak-vbeln,
  erdat FOR vbak-erdat.
SELECT-OPTIONS :
 edatu FOR vbep-edatu,
  ezeit FOR vbep-ezeit.
*PARAMETERS : ck_audit AS CHECKBOX. "已审核
SELECTION-SCREEN END OF BLOCK sc1.

SELECTION-SCREEN BEGIN OF BLOCK sc2 WITH FRAME TITLE text-002.
*SKIP 2.
PARAMETERS : ck_audit AS CHECKBOX"已审核
*SKIP 2.
SELECT-OPTIONS:
           p_vl_s  FOR ztsd024-vbeln_vl,
           p_vbn_s FOR ztsd024-vbeln,
          p_erdat FOR ztsd024-erdat,
          p_ernam FOR ztsd024-ernam .
SELECTION-SCREEN END OF BLOCK sc2.

DATA : gs_layout  TYPE  slis_layout_alv.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.  "抬头
DATA: gt_fieldcat_d TYPE slis_t_fieldcat_alv WITH HEADER LINE.  "明细
DATA: gt_fieldcat_s TYPE slis_t_fieldcat_alv WITH HEADER LINE.  "审核取消
DATA : is_keyinfo TYPE  slis_keyinfo_alv.

TYPESBEGIN OF ty_vbap ,
         ck,
         auart          LIKE vbak-auart,
         vbeln          LIKE   vbak-vbeln,
         vstel          LIKE vbap-vstel,
         spart1         LIKE vbak-spart,
         spart2         LIKE vbap-spart,


         bezei          LIKE v_tvak-bezei,

         kunnr          LIKE vbak-kunnr,
         name4          TYPE ad_name1,
         kunnr_s        LIKE vbpa-kunnr,
         name5          TYPE ad_name1,
         kunnr_j        LIKE vbpa-kunnr,
         name6          TYPE ad_name1,

         bzirk          LIKE t171t-bzirk,
         adrnr          LIKE vbpa-adrnr,
         vkbur          LIKE vbak-vkbur,
         vkgrp          LIKE vbak-vkgrp,  "办事处
         name7          TYPE ad_name1,
         bzirk_txt      LIKE  t171t-bztxt,
         telf1          LIKE kna1-telf1,
         erdat          LIKE vbak-erdat,
         erzet          LIKE vbak-erzet,
*  配送方式
         stype(10),
         street         LIKE adrc-street,
         edatu          LIKE vbep-edatu,
         ezeit          LIKE vbep-ezeit,
         posnr          LIKE vbap-posnr,


         matnr          LIKE vbap-matnr,
         arktx          LIKE vbap-arktx,
         werks          LIKE vbap-werks,
         lgort          LIKE vbap-lgort,

         kwmeng_j       LIKE vbap-kwmeng"计价数量
         meins          LIKE vbep-meins,
         kwmeng         LIKE vbap-kwmeng,
         vrkme          LIKE vbap-vrkme,
         kpein          LIKE vbap-kpein,
         kmein          LIKE vbap-kmein,
         netwr_d        LIKE vbap-netwr,  "单价
         mwsbp          LIKE vbap-mwsbp,
         umvkz          LIKE vbap-umvkz,
         netwr_s        LIKE vbap-netwr,  "销售单价
         kdmat          LIKE vbap-kdmat "头数  ++++++++++
         umvkn          LIKE vbap-umvkn,
         netwr          LIKE vbap-netwr,  "金额

         name1          LIKE t001w-name1"工厂描述‘
         name2          LIKE t001l-lgobe"仓库描述‘ 8 ‘GT_VBAP‘.
         name3          LIKE  tvstt-vtext"装运点描述‘ 8 ‘GT_VBAP‘.
         datbi          LIKE lv50c-datbi"KETDAT
         kzwi1          LIKE vbap-kzwi1"单价(合计)
         taxk1          LIKE vbak-taxk1,
         taxm1          LIKE vbap-taxm1,
         netpr          LIKE vbap-netpr,

         prsdt          TYPE prsdt"定价日期
         bstkd          LIKE vbkd-bstkd,
         txt_posnr(100TYPE c"行文本(工艺描述)

         knumv          LIKE konv-knumv,
         zh_kwert       LIKE konv-kwert,

       END OF ty_vbap.


DATA : wa_vbap TYPE ty_vbap,
       gt_vbap TYPE TABLE OF ty_vbap  WITH HEADER LINE.

DATA : wa_vbap_vl TYPE ty_vbap,
       gt_vbap_vl TYPE TABLE OF ty_vbap WITH HEADER LINE.

DATA : wa_vbap_sel TYPE ty_vbap,
       gt_vbap_sel TYPE TABLE OF ty_vbap.

TYPES BEGIN OF ty_vbak,
          ck,
          vbeln          LIKE   vbak-vbeln,
          kunnr          LIKE vbak-kunnr,
          name4          TYPE ad_name1,
          kunnr_s        LIKE vbpa-kunnr,
          name5          TYPE ad_name1,
          kunnr_j        LIKE vbpa-kunnr,
          name6          TYPE ad_name1,
          bzirk          LIKE t171t-bzirk,
          vkbur          LIKE vbak-vkbur,
          vkgrp          LIKE vbak-vkgrp,  "办事处
          name7          TYPE ad_name1,
          bzirk_txt      LIKE  t171t-bztxt,
          telf1          LIKE kna1-telf1,

          erdat          LIKE vbak-erdat,
          erzet          LIKE vbak-erzet,
          auart          LIKE vbak-auart,
          bezei          LIKE v_tvak-bezei,
          street         LIKE adrc-street,
          edatu          LIKE vbep-edatu,
          ezeit          LIKE vbep-ezeit,
          datbi          LIKE lv50c-datbi"KETDAT
          klimk          LIKE knkk-klimk"信贷余额

          cmgst          LIKE vbuk-cmgst,
          cmgst_text(10),
          vkbur_text     TYPE bezei20,
          txt30          LIKE tj30t-txt30"审批文本
          bstkd          LIKE vbkd-bstkd,
          hdtxt(100TYPE C,             "抬头文本

          zh_kwert       LIKE konv-kwert,
          knumv          LIKE konv-knumv,
        END OF ty_vbak.
DATA : wa_vbak TYPE ty_vbak,        gt_vbak 
TYPE TABLE OF ty_vbak.

*"---------------add by ymq---------------------------
*DATA: BEGIN OF l_s066  ,                    "取清销售订单信贷值
*      knkli LIKE s066-knkli,
*      oeikw LIKE s066-oeikw,
*      END OF l_s066.
*data: lt_s066 like l_s066 occurs 0 with header line.
*data: begin of l_s067 occurs 0,                     " 未清交货单信贷值
*      knkli like s067-knkli,
*      olikw like s067-olikw,
*      ofakw like s067-ofakw,
*      end of l_s067.
*data: lt_s067 like l_s067 occurs  0 with header line.
*data: begin of l_knkk occurs 0 ,                    "未清开票信贷值
*      knkli like knkk-knkli,
*      skfor like knkk-skfor,
*      klimk like knkk-klimk,
*      ctlpc like knkk-ctlpc,
*      end of l_knkk .
*data: lt_knkk like l_knkk occurs 0 with header line.
*
*types: BEGIN OF type_detail,                           "用户所有信贷值结构
*      kunnr  like  vbak-kunnr,    "客户编号
*      oeikw  LIKE  s066-oeikw,    "未清销售订单信贷值
*      olikw  LIKE  s067-olikw,    "未清交货单信贷值
*      ofakw  LIKE  s067-ofakw,    "未清开票信贷值
*      skfor  LIKE  knkk-skfor,    "客户往来余额 ,如果为负,表示由余款,为其绝对值
*      klimk  LIKE  knkk-klimk,    "客户信用额度
*      klimks LIKE  knkk-klimk,    "当前客户信用额度
*      ctlpc  LIKE  knkk-ctlpc,    "是否检查信用额
*      END OF  type_detail.
*DATA: wa_detail  TYPE type_detail.
*
*DATA: BEGIN OF itab ,
*    vbeln LIKE vbak-vbeln,                                        "无用
*    erdat LIKE vbak-erdat,
*    auart LIKE vbak-auart,
*    cmgst LIKE vbuk-cmgst,
*     END OF itab.
*DATA: gt_itab TYPE  itab OCCURS 0 WITH HEADER LINE.   " add by ymq  2014.11.23  更新信贷状态通过

*BDC定义
DATA: c_update  TYPE VALUE ‘S‘.
DATA: bdcdata    TYPE TABLE OF  bdcdata WITH HEADER LINE.
DATA: messtab    TYPE TABLE OF  bdcmsgcoll WITH HEADER LINE.
DATA: gt_msg    TYPE TABLE OF  bdcmsgcoll WITH HEADER LINE.

*审核
TYPES BEGIN OF ty_ztsd003.
TYPES : ck.         
INCLUDE STRUCTURE ztsd024.
TYPES:    adrnr     LIKE vbpa-adrnr,           kunnr     
LIKE vbak-kunnr,           name4     
TYPE ad_name1,           kunnr_s   
LIKE vbpa-kunnr,           name5     
TYPE ad_name1,           vkgrp     
LIKE vbak-vkgrp,  "办事处           name7     
TYPE ad_name1,           bzirk     
LIKE  t171t-bzirk,           bzirk_txt 
LIKE  t171t-bztxt,           erdat_c   
LIKE vbak-erdat,           erzet_c   
LIKE vbak-erzet,           auart     
LIKE vbak-auart,           bezei     
LIKE v_tvak-bezei,           name_text 
TYPE ad_namtext.
TYPES END OF ty_ztsd003.
DATA : wa_ztsd003 TYPE ty_ztsd003,        gt_ztsd003 
TYPE TABLE OF ty_ztsd003.


TYPES:BEGIN OF ty_konv,         kwert 
LIKE konv-kwert,         knumv 
LIKE konv-knumv,       
END OF ty_konv.
DATA:git_konv TYPE ty_konv OCCURS WITH HEADER LINE.
DATA:gwa_konv TYPE ty_konv.

RANGES : lt_spart FOR vbak-spart.
RANGES : lt_spart2 FOR vbak-spart.


*&---------------------------------------------------------------------*
*&      Form  alpha_input
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_P  text
*----------------------------------------------------------------------*
FORM alpha_input  CHANGING p_p.   
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT‘     
EXPORTING       
input  = p_p     
IMPORTING       
output = p_p.
ENDFORM.                    " alpha_input
*&---------------------------------------------------------------------*
*&      Form  frm_build_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_build_fieldcat .   
CLEAR : gt_fieldcat,gt_fieldcat[].   
CLEAR : gt_fieldcat_d,gt_fieldcat_d[].   
DEFINE alv_head.     
clear gt_fieldcat.     
if &1 ‘CK‘.       gt_fieldcat
-checkbox ‘X‘.       gt_fieldcat
-edit ‘X‘.     
else.       gt_fieldcat
-edit ‘‘.     
endif.     gt_fieldcat
-fieldname = &1.     gt_fieldcat
-tabname = &4.     gt_fieldcat
-seltext_s = &2 .     gt_fieldcat
-seltext_m = &2 .     gt_fieldcat
-seltext_l = &2 .     gt_fieldcat
-outputlen = &3.     gt_fieldcat
-just  = &5.     gt_fieldcat
-key   = &6.     gt_fieldcat
-no_zero ‘X‘.
*      gt_fieldcat-decimals_out = 2.     
if &1 ‘DATBI‘.       gt_fieldcat
-edit ‘X‘.     
endif.     
append gt_fieldcat.   
END-OF-DEFINITION.   
DEFINE alv_head_d.     
clear gt_fieldcat_d.     
if &1 ‘CK‘.       gt_fieldcat_d
-checkbox ‘X‘.       gt_fieldcat_d
-edit ‘X‘.     
else.       gt_fieldcat_d
-edit ‘‘.     
endif.     gt_fieldcat_d
-fieldname = &1.     gt_fieldcat_d
-tabname = &4.     gt_fieldcat_d
-seltext_s = &2 .     gt_fieldcat_d
-seltext_m = &2 .     gt_fieldcat_d
-seltext_l = &2 .     gt_fieldcat_d
-outputlen = &3.     gt_fieldcat_d
-just  = &5.     gt_fieldcat_d
-KEY  = &6.     gt_fieldcat_d
-no_zero ‘X‘.     

if &1 ‘KWMENG_J‘ or &1 ‘KWMENG‘ or &1 ‘NETWR‘.       gt_fieldcat_d
-do_sum ‘X‘.     
endif.

*      gt_fieldcat-decimals_out = 2.     
append gt_fieldcat_d.   
END-OF-DEFINITION.

*头  R)ight (L)eft (C)ent.   alv_head 
‘CK‘ ‘SEL‘ ‘GT_VBAK‘  ‘L‘ ‘X‘.   alv_head 
‘VBELN‘ ‘订单号‘ ‘GT_VBAK‘ ‘L‘ ‘X‘.
*  alv_head ‘KUNNR‘ ‘售达方‘ 10 ‘GT_VBAK‘.   alv_head 
‘NAME4‘ ‘售达方名称‘ 10 ‘GT_VBAK‘  ‘L‘ ‘‘.
*  alv_head ‘KUNNR_S‘ ‘送达方‘ 10 ‘GT_VBAK‘.   alv_head 
‘NAME5‘ ‘送达方名称‘ 10 ‘GT_VBAK‘ ‘L‘ ‘‘.
*  alv_head ‘KUNNR_J‘ ‘经办人‘ 10 ‘GT_VBAK‘.
*  alv_head ‘VKBUR‘ ‘销售大区‘ 10 ‘GT_VBAK‘.
*  alv_head ‘VKGRP‘ ‘办事处‘ 10 ‘GT_VBAK‘.   alv_head 
‘BZIRK_TXT‘ ‘销售部‘ 10 ‘GT_VBAK‘ ‘L‘ ‘‘.   alv_head 
‘VKBUR_TEXT‘ ‘销售区域‘ 10 ‘GT_VBAK‘ ‘L‘ ‘‘.   alv_head 
‘NAME7‘ ‘销售片区‘ 10 ‘GT_VBAK‘ ‘L‘ ‘‘.

*  alv_head ‘TELF1‘ ‘客户联系方式‘ 10 ‘GT_VBAK‘.   alv_head 
‘ERDAT‘ ‘订单日期‘ 10 ‘GT_VBAK‘ ‘L‘ ‘‘.   alv_head 
‘ERZET‘ ‘订单时间‘ 10 ‘GT_VBAK‘ ‘L‘ ‘‘.
*  alv_head ‘AUART‘ ‘订单类型‘ 10 ‘GT_VBAK‘ ‘L‘.   alv_head 
‘BEZEI‘ ‘订单描述‘ 10 ‘GT_VBAK‘ ‘L‘ ‘‘.
*  alv_head ‘STREET‘ ‘配送地址‘ 10 ‘GT_VBAK‘.
*  alv_head ‘EDATU‘ ‘到货日期‘ 10 ‘GT_VBAK‘ ‘L‘.
*  alv_head ‘EZEIT‘ ‘到货时间‘ 10 ‘GT_VBAK‘ ‘L‘.   alv_head 
‘DATBI‘ ‘缺省交货日期‘ 12 ‘GT_VBAK‘ ‘L‘ ‘‘.
*  alv_head ‘TXT30‘ ‘审批状态‘ 10 ‘GT_VBAK‘ ‘L‘.   alv_head 
‘CMGST_TEXT‘ ‘信贷状态‘ ‘GT_VBAK‘ ‘L‘ ‘‘.   alv_head 
‘KLIMK‘ ‘可用信贷‘ 15 ‘GT_VBAK‘ ‘L‘ ‘‘.   alv_head 
‘BSTKD‘ ‘采购订单编号‘ 15 ‘GT_VBAK‘ ‘L‘ ‘‘.   alv_head 
‘HDTXT‘ ‘采购订单抬头文本‘  100 ‘GT_VBAK‘ ‘L‘ ‘‘.
*明细
*  alv_head_d ‘CK‘ ‘行号‘ 8 ‘GT_VBAP‘ ‘R‘.   alv_head_d 
‘POSNR‘ ‘行号‘ ‘GT_VBAP‘ ‘R‘ ‘‘.   alv_head_d 
‘MATNR‘ ‘物料号‘ ‘GT_VBAP‘  ‘L‘ ‘‘.   alv_head_d 
‘ARKTX‘ ‘物料描述‘ 18 ‘GT_VBAP‘  ‘L‘ ‘‘.
*   alv_head_d 
‘KWMENG_J‘ ‘  计价数量‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 
‘NETWR_D‘ ‘ 单价‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 
‘MEINS‘ ‘  计价单位‘ ‘GT_VBAP‘ ‘C‘ ‘‘.

*  alv_head_d ‘KPEIN‘ ‘  定价单位‘ 8 ‘GT_VBAP‘ ‘L‘.   alv_head_d 

‘KWMENG‘ ‘  销售数量‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   
"alv_head_d ‘KDMAT‘ ‘  头数‘ 8 ‘GT_VBAP‘ ‘L‘.   alv_head_d 

‘NETWR_S‘ ‘ 销售单价‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 
‘VRKME‘ ‘  销售单位‘ ‘GT_VBAP‘ ‘C‘ ‘‘.   alv_head_d 
‘NETWR‘ ‘  金额‘ ‘GT_VBAP‘ ‘L‘ ‘‘.
*   alv_head_d 
‘WERKS‘ ‘工厂‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 
‘NAME1‘ ‘工厂描述‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 
‘LGORT‘ ‘仓库‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 
‘NAME2‘ ‘仓库描述‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 

‘VSTEL‘ ‘  装运点‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 
‘NAME3‘ ‘  装运点描述‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   alv_head_d 

‘PRSDT‘ ‘  定价日期‘ ‘GT_VBAP‘ ‘L‘ ‘‘.   
"alv_head_d ‘TXT_POSNR‘ ‘  工艺描述‘ 8 ‘GT_VBAP‘ ‘L‘.   


"  alv_head ‘ZH_KWERT‘ ‘  总共折扣金额‘ 8 ‘GT_VBAK‘ ‘L‘.
*

ENDFORM.                    " frm_build_fieldcat

*&---------------------------------------------------------------------*
*&      Form  frm_display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_display_data .   gs_layout
-box_fieldname ‘CK‘.   gs_layout
-box_tabname ‘GT_VBAK‘.   gs_layout

-colwidth_optimize ‘X‘.   

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘     
EXPORTING       i_callback_program       
= sy-repid       i_callback_pf_status_set 
‘SET_STATUS‘       i_callback_user_command  
‘USER_COMMAND‘      

以上是关于ABAP 订单转交货单的主要内容,如果未能解决你的问题,请参考以下文章

SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里

sap 如何查BOM

sap系统中,一张销售订单做了三张交货单,现要对其中一张交货单做退货,如何配置实现。

交货单和销售订单增强不能报错误消息导致DUMP问题解决;

维护 订单 交货单 各种 文本 标准功能

ABAP如何判断单据是否被锁定