admin 管理员组文章数量: 1086019
2023年12月24日发(作者:android游戏开发从入门到精通 pdf)
Sap abap 发出商品明细程序
*&--------------------------------------------------------------------*
*& Program ID : ZRP_FI_047
*& Program Title :
发出商品明细
*& Transaction : ZFI047
*& Created By : Javenk
*& Created At : 2019.11.11
*& Modify At :
*&---------------------------------------------------------------------*
REPORT zrp_fi_047.
TABLES:acdoca,vbrp,mseg,lips.
DATA: BEGIN OF gs_acdoca ,"取ACDOCA表
rbukrs TYPE acdoca-rbukrs, "公司代码
gjahr TYPE acdoca-gjahr, "会计年度
werks TYPE acdoca-werks, "工厂
belnr TYPE acdoca-belnr, "会计凭证编号
docln TYPE acdoca-docln, "会计凭证行项目
awtyp TYPE acdoca-awtyp, "参考过程
awref TYPE acdoca-awref, "参考凭证
awitem TYPE acdoca-awitem, "参考项
awitem1 TYPE mseg-zeile, "参考项
racct TYPE acdoca-racct, "科目
rhcur TYPE acdoca-rhcur, "公司代码货币
hsl TYPE acdoca-hsl, "公司代码货币金额
rwcur TYPE acdoca-rwcur, "公司代码货币金额
wsl TYPE acdoca-wsl, "公司代码货币金额
msl TYPE acdoca-msl, "数量
drcrk TYPE acdoca-drcrk, "借/贷
budat TYPE acdoca-budat, "过账日期
bldat TYPE acdoca-bldat, "凭证日期
blart TYPE acdoca-blart, "凭证类型
sgtxt TYPE acdoca-sgtxt, "文本
matnr TYPE acdoca-matnr, "物料
kunnr TYPE acdoca-kunnr, "客户
END OF gs_acdoca.
DATA: gt_acdoca LIKE TABLE OF gs_acdoca .
DATA: BEGIN OF gs_vbrp , "开票凭证信息
vbeln TYPE vbrp-vbeln, "开票凭证号
posnr TYPE mseg-zeile, "开票凭证项目
vgbel TYPE vbrp-vgbel, "交货单号
vgpos TYPE vbrp-vgpos, "交货单项目
aubel TYPE vbrp-aubel,
aupos TYPE vbrp-aupos,
END OF gs_vbrp.
DATA gt_vbrp LIKE TABLE OF gs_vbrp.
DATA: BEGIN OF gs_mseg , "物料凭证信息
mblnr TYPE mseg-mblnr, "物料凭证号
zeile TYPE mseg-zeile, "物料凭证项目
vbeln_im TYPE mseg-vbeln_im, "交货单号
vbelp_im TYPE mseg-vbelp_im, "先前类别
vgbel TYPE lips-vgbel , "销售凭证
vgpos TYPE lips-vgpos, "销售凭证行项目
END OF gs_mseg.
DATA gt_mseg LIKE TABLE OF gs_mseg.
DATA: BEGIN OF gs_makt , "物料描述
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
END OF gs_makt.
DATA gt_makt LIKE TABLE OF gs_makt.
DATA: BEGIN OF gs_kna1, "客户主数据
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF gs_kna1.
DATA gt_kna1 LIKE TABLE OF gs_kna1.
DATA: BEGIN OF gs_tvakt, "销售订单类型
auart TYPE tvakt-auart,
bezei TYPE tvakt-bezei,
END OF gs_tvakt.
DATA gt_tvakt LIKE TABLE OF gs_tvakt.
DATA: BEGIN OF gs_alv,
rbukrs TYPE acdoca-rbukrs, "公司代码
gjahr TYPE acdoca-gjahr, "会计年度
werks TYPE acdoca-werks, "工厂
belnr TYPE acdoca-belnr, "会计凭证编号
docln TYPE acdoca-docln, "会计凭证行项目
awtyp TYPE acdoca-awtyp, "参考过程
awref TYPE acdoca-awref, "开票/物料凭证
awitem TYPE mseg-zeile, "开票/物料凭证
racct TYPE acdoca-racct, "科目
rhcur TYPE acdoca-rhcur, "公司代码货币
hsl TYPE acdoca-hsl, "公司代码货币金额
rwcur TYPE acdoca-rwcur, "公司代码货币金额
wsl TYPE acdoca-wsl, "公司代码货币金额
msl TYPE acdoca-msl, "数量
drcrk TYPE acdoca-drcrk, "借/贷
budat TYPE acdoca-budat, "过账日期
bldat TYPE acdoca-bldat, "凭证日期
blart TYPE acdoca-blart, "凭证类型
sgtxt TYPE acdoca-sgtxt, "文本
matnr TYPE acdoca-matnr, "物料
kunnr TYPE acdoca-kunnr, "客户
maktx TYPE makt-maktx, "物料描述
name1 TYPE kna1-name1, "客户名称
bezei TYPE tvakt-bezei, "订单类型描述
vgbel TYPE vbrp-vgbel, "交货单号
vgpos TYPE vbrp-vgpos, "交货单项目
aubel TYPE vbrp-aubel , "销售订单
aupos TYPE vbrp-aupos , "销售订单项目
END OF gs_alv.
DATA: gt_alv LIKE TABLE OF gs_alv .
DATA: gw_alv LIKE gs_alv .
DATA:go_grid TYPE REF TO cl_gui_alv_grid.
DATA: wa_fieldcat TYPE lvc_s_fcat, "lvc_s_fcat
gt_fieldcat TYPE lvc_t_fcat,
wa_layout TYPE lvc_s_layo.
DEFINE alv_add_column .
CLEAR: wa_fieldcat.
* WA_FIELDCAT-COL_POS = &1. "列序号
wa_fieldcat-fieldname = &1. "字段名称
wa_fieldcat-coltext = &2. "显示标题
wa_fieldcat-outputlen = &3.
wa_fieldcat-ref_field = &4.
wa_fieldcat-ref_table = &5.
wa_fieldcat-no_out = &6.
wa_fieldcat-no_zero = &7.
* IF &2 = 'SEL' .
* WA_FIELDCAT-KEY = 'X'.
* WA_FIELDCAT-EDIT = 'X'.
* WA_FIELDCAT-CHECKBOX = 'X'.
* ENDIF.
APPEND wa_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.
*选择屏幕
SELECTION-SCREEN:BEGIN OF BLOCK zbk1 WITH FRAME TITLE TEXT-001.
PARAMETERS p_rbukrs TYPE acdoca-rbukrs OBLIGATORY DEFAULT '1000'. "公司代码
SELECT-OPTIONS:
s_kuunr FOR acdoca-kunnr, "客户
s_budat FOR acdoca-budat , "凭证过账日期
s_matnr FOR acdoca-matnr.
SELECTION-SCREEN:END OF BLOCK zbk1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE b1_title.
SELECTION-SCREEN COMMENT /2(79) comm1.
SELECTION-SCREEN END OF BLOCK block1.
INITIALIZATION. "初始化
b1_title = '说明'.
comm1 = '本报表用于依科目查询发出商品明细。'.
AT SELECTION-SCREEN.
* AUTHORITY-CHECK OBJECT 'Z_YM_WERKS'
* ID 'WERKS' FIELD P_WERKS
* ID 'ACTVT' DUMMY.
* IF SY-SUBRC <> 0.
* MESSAGE E001(00) WITH '没有工厂' P_WERKS '的权限'.
* ENDIF.
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_set_data.
PERFORM frm_alv.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data .
CLEAR: gs_acdoca,gt_acdoca,gs_makt,gt_makt,gs_kna1,gt_kna1..
SELECT
rbukrs "公司代码
gjahr "会计年度
werks "工厂
belnr
docln
awtyp
awref
awitem
racct
rhcur
hsl
rwcur
wsl
msl
drcrk
budat
bldat
blart
sgtxt
matnr
"会计凭证编号
"会计凭证行项目
"参考过程
"参考凭证
"参考项
"科目
"公司代码货币
"公司代码货币金额
"公司代码货币金额
"公司代码货币金额
"数量
"借/贷
"过账日期
"凭证日期
"凭证类型
"文本
"物料
kunnr "客户
INTO CORRESPONDING FIELDS OF TABLE gt_acdoca
FROM acdoca
WHERE rbukrs = p_rbukrs
AND kunnr IN s_kuunr
AND matnr IN s_matnr
AND budat IN s_budat
AND racct = '1406010100'
.
IF gt_acdoca IS NOT INITIAL.
LOOP AT gt_acdoca INTO gs_acdoca.
gs_acdoca-awitem1 = gs_acdoca-awitem+2(4).
MODIFY gt_acdoca FROM gs_acdoca TRANSPORTING awitem1 .
ENDLOOP.
*取开票信息
SELECT
vbeln "开票凭证号
posnr "开票凭证项目
vgbel "参考凭证
vgpos "参考凭证项目
aubel
aupos
INTO TABLE gt_vbrp
FROM vbrp
FOR ALL ENTRIES IN gt_acdoca
WHERE vbeln = gt_acdoca-awref
AND posnr = gt_acdoca-awitem
.
*取物料凭证信息
SELECT
a~mblnr "物料凭证号
a~zeile "物料凭证项目
a~vbeln_im "交货单号
a~vbelp_im "先前类别
b~vgbel
b~vgpos
INTO TABLE gt_mseg
FROM mseg AS a
JOIN lips AS b ON a~vbeln_im = b~vbeln AND a~vbelp_im = b~posnr
FOR ALL ENTRIES IN gt_acdoca
WHERE mblnr = gt_acdoca-awref
AND zeile = gt_acdoca-awitem1
.
*取物料描述
SELECT matnr maktx INTO TABLE gt_makt
FROM makt
FOR ALL ENTRIES IN gt_acdoca
WHERE matnr = gt_acdoca-matnr
AND spras = sy-langu.
*供应商债权人描述
SELECT kunnr name1 INTO TABLE gt_kna1
FROM kna1
FOR ALL ENTRIES IN gt_acdoca
WHERE kunnr = gt_acdoca-kunnr
AND spras = sy-langu.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_DATA
*&---------------------------------------------------------------------*
*& text
*&-------------------------------------------------------------------
--*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_set_data .
DATA: l_awkey TYPE bkpf-awkey.
CLEAR: gs_acdoca .
LOOP AT gt_acdoca INTO gs_acdoca.
CLEAR: gs_alv ,gs_kna1 , gs_makt..
MOVE-CORRESPONDING gs_acdoca TO gs_alv.
IF gs_acdoca-awtyp = 'VBRK' .
READ TABLE gt_vbrp INTO gs_vbrp WITH KEY vbeln = gs_acdoca-awref posnr = gs_acdoca-awitem .
IF sy-subrc = 0.
gs_alv-vgbel = gs_vbrp-vgbel.
gs_alv-vgpos = gs_vbrp-vgpos.
gs_alv-aubel = gs_vbrp-aubel.
gs_alv-aupos = gs_vbrp-aupos.
ENDIF.
ENDIF.
IF gs_acdoca-awtyp = 'MKPF' .
READ TABLE gt_mseg INTO gs_mseg WITH KEY mblnr = gs_acdoca-awref zeile = gs_acdoca-awitem1 .
IF sy-subrc = 0.
gs_alv-vgbel = gs_mseg-vbeln_im.
gs_alv-vgpos = gs_mseg-vbelp_im..
gs_alv-aubel = gs_mseg-vgbel.
gs_alv-aupos = gs_mseg-vgpos.
ENDIF.
ENDIF.
*物料描述
READ TABLE gt_makt INTO gs_makt WITH KEY matnr = gs_alv-matnr.
IF sy-subrc = 0.
gs_alv-maktx = gs_makt-maktx.
ENDIF.
*供应商描述
READ TABLE gt_kna1 INTO gs_kna1 WITH KEY kunnr = gs_alv-kunnr.
IF sy-subrc = 0.
gs_alv-name1 = gs_kna1-name1.
ENDIF.
APPEND gs_alv TO gt_alv.
ENDLOOP.
BREAK-POINT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_alv .
alv_add_column:
'RBUKRS' '公司代码' '' '' '' '' '',
'WERKS' '工厂' '' '' '' '' '',
'GJAHR' '会计年度' '' '' '' '' '',
'KUNNR' '客户' '' '' '' '' 'X',"物料号
'NAME1' '客户名称' '' '' '' '' '',"物料号
'AUBEL' '销售订单' '' '' '' '' 'X',"物料号
'AUPOS' '销售订单项目' '' '' '' '' 'X',"物料号
'MATNR' '物料编码' '' '' '' '' 'X',"物料号
'MAKTX' '物料描述' '' '' '' '' '',"物料号
'VGBEL' '交货单号' '' '' '' '' 'X',"物料号
'VGPOS' '交货单行项目' '' '' '' '' 'X',"物料号
'AWTYP' '参考过程' '' '' '' '' '',
'AWREF' '"发票/物料凭证' '' '' '' '' 'X',"
'AWITEM' '发票/物料项目' '' '' '' '' 'X',
'BELNR' '会计凭证编号' '' '' '' '' 'X',
'DOCLN' '会计凭证行项目' '' '' '' '' 'X',
'RACCT' '科目' '' '' '' '' '',"物料号
'RHCUR' '公司代码货币' '' '' '' '' 'X',"物料号
'HSL' '公司代码货币金额' '' '' '' '' '',"采购凭证创建日期
'RWCUR' '交易货币' '' '' '' '' '',"物料号
'WSL' '交易货币金额' '' '' '' '' '',"物料号
'MSL' '数量' '' '' '' '' '',"物料号
'DRCRK' '借/贷' '' '' '' '' '',"物料号
'BUDAT' '过账日期' '' '' '' '' '',"物料号
'BLDAT' '凭证日期' '' '' '' '' '',"物料号
'BLART' '凭证类型' '' '' '' '' '',"物料号
'SGTXT' '文本' '' '' '' '' ''."物料号
wa_layout-zebra = 'X'.
* wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
LOOP AT gt_fieldcat ASSIGNING FIELD-SYMBOL(
CASE
WHEN 'BELNR' OR'AWREF' OR 'VGBEL' OR 'AUBEL' .
ENDCASE.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_SET_PF_STATUS'
* I_CALLBACK_HTML_TOP_OF_PAGE = 'FRM_TOP_OF_PAGE'
i_callback_user_command = 'USER_COMMAND'
* I_GRID_TITLE = L_LVC_TITLE
* I_GRID_SETTINGS =
* IT_SORT_LVC = LT_LVC_S_SORT[]
is_layout_lvc = wa_layout
it_fieldcat_lvc = gt_fieldcat
i_save = 'A'
TABLES
t_outtab = gt_alv "GT_TABLE1[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_PF_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_EXTAB text
*----------------------------------------------------------------------*
FORM frm_set_pf_status USING pt_extab TYPE slis_t_extab.
REFRESH pt_extab.
SET PF-STATUS 'STANDARD' EXCLUDING pt_extab."GUI
ENDFORM. "FRM_SET_PF_STATUS
*用户事件
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*--------------------------------------------------------------------*
* User Command1.
*--------------------------------------------------------------------*
*ALV响应单元格单击事件
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
CLEAR gw_alv.
READ TABLE gt_alv INTO gw_alv INDEX rs_selfield-tabindex. "单击单元格的表索引号,也就是行号
IF rs_selfield-fieldname = 'AWREF' AND gw_alv-awtyp = 'MKPF'. ."单元格的列字段
*显示物料凭证
CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
EXPORTING
i_ebeln = gw_alv-awref
EXCEPTIONS
not_found = 1
no_authority = 2
invalid_call = 3
preview_not_possible = 4
OTHERS = 5.
CALL FUNCTION 'MIGO_DIALOG'
EXPORTING
i_action = 'A04'
i_refdoc = 'R02'
i_notree = 'X'
i_skip_first_screen = 'X'
i_okcode = 'OK_GO'
i_mblnr = gw_alv-awref
i_mjahr = gw_alv-gjahr
EXCEPTIONS
illegal_combination = 1
OTHERS = 2.
ENDIF.
*显示发票
IF rs_selfield-fieldname = 'AWREF' AND gw_alv-awtyp = 'VBRK'.
SET PARAMETER ID 'VF' FIELD gw_alv-awref.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN .
ENDIF.
*显示会计凭证
IF rs_selfield-fieldname = 'BELNR'.
SET PARAMETER ID 'BLN' FIELD gw_alv-belnr.
SET PARAMETER ID 'BUK' FIELD gw_alv-rbukrs.
SET PARAMETER ID 'GJR' FIELD gw_alv-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN .
ENDIF.
*显示交货单
IF rs_selfield-fieldname = 'VGBEL'.
SET PARAMETER ID 'VL' FIELD gw_alv-vgbel.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN .
ENDIF.
*显示销售订单
IF rs_selfield-fieldname = 'AUBEL'.
SET PARAMETER ID 'AUN' FIELD gw_alv-aubel.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN .
ENDIF.
ENDCASE.
ENDFORM.
版权声明:本文标题:sap abap 发出商品明细程序 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1703399143a449560.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论