SAP 采购价差扣款清单

*&---------------------------------------------------------------------*
*& Report ZMMR00096  采购价差扣款清单
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmmr00096.


*----------------------------------------------------------------------*
*              INCLUDE 、 TYPES_POOLS 、 TABLES  引 用 区              *
*----------------------------------------------------------------------*
TABLES : ztmm0096_head, ztmm0096_item ,ztmm0066_item .


*----------------------------------------------------------------------*
*                 T Y P E S -  结 构 定 义                             *
*----------------------------------------------------------------------*
TYPES: BEGIN OF ty_report,
         mandt     TYPE ztmm0096_head-mandt,              ""集团
         zkknum    TYPE ztmm0096_head-zkknum,             ""价差扣款单号
         bukrs     TYPE ztmm0096_head-bukrs,              ""公司代码
         name1     TYPE ztmm0096_head-name1,              ""公司名称
         zhjdat    TYPE ztmm0096_head-zhjdat,             ""核价基准日
         zyear     TYPE ztmm0096_head-zyear,              ""物料凭证的年份
         zmonth    TYPE ztmm0096_head-zmonth,             ""月份
         status    TYPE ztmm0096_head-status,             ""价差扣款状态
         zconf_man TYPE ztmm0096_head-zconf_man,          ""确认人
         del_flag  TYPE ztmm0096_head-del_flag,           ""删除标记
         del_man   TYPE ztmm0096_head-del_man,            ""删除人
         del_date  TYPE ztmm0096_head-del_date,           ""删除日期
         del_time  TYPE ztmm0096_head-del_time,           ""删除时间
         cuser     TYPE ztmm0096_head-cuser,              ""创建者
         cdate     TYPE ztmm0096_head-cdate,              ""创建日期
         ctime     TYPE ztmm0096_head-ctime,              ""创建时间
         uuser     TYPE ztmm0096_head-uuser,              ""变更者
         udate     TYPE ztmm0096_head-udate,              ""变更日期
         utime     TYPE ztmm0096_head-utime,              ""变更时间
         zmark     TYPE ztmm0096_head-zmark,              ""备注
         zkkline   TYPE ztmm0096_item-zkkline,            ""项次
         zzgrid    TYPE ztmm0096_item-zzgrid,             ""对账单号码
         zzline    TYPE ztmm0096_item-zzline,             ""对账行号
         zdtyp     TYPE ztmm0096_item-zdtyp,              ""对账类型
         ebeln     TYPE ztmm0096_item-ebeln,              ""采购凭证编号
         ebelp     TYPE ztmm0096_item-ebelp,              ""采购凭证的项目编号
         ekorg     TYPE ztmm0096_item-ekorg,              ""采购组织
         lifnr     TYPE ztmm0096_item-lifnr,              ""供应商或债权人的帐号
         zflg_js   TYPE ztmm0096_item-zflg_js,            ""寄售标识
         ernam     TYPE ztmm0096_item-ernam,              ""对账单创建人
         erdat     TYPE ztmm0096_item-erdat,              ""对账单创建日
         kpdate    TYPE ztmm0096_item-kpdate,             ""SAP凭证过账日期
         fpdate    TYPE ztmm0096_item-fpdate,             ""发票日期
         matnr     TYPE ztmm0096_item-matnr,              ""物料编号
         maktx     TYPE ztmm0096_item-maktx,              ""物料描述
         mengest   TYPE ztmm0096_item-mengest,            ""送/退货数量
         menge     TYPE ztmm0096_item-menge,              ""可对账数量
         mengehas  TYPE ztmm0096_item-mengehas,           ""已对账数量
         mengeyt   TYPE ztmm0096_item-mengeyt,            ""验退数量
         meins     TYPE ztmm0096_item-meins,              ""基本计量单位
         mwskz     TYPE ztmm0096_item-mwskz,              ""销售/购买税代码
         sqwrbtr   TYPE ztmm0096_item-sqwrbtr,            ""税前单价
         wrbtr     TYPE ztmm0096_item-wrbtr,              ""税前金额
         hswrbtr   TYPE ztmm0096_item-hswrbtr,            ""含税单价
         hsje      TYPE ztmm0096_item-hsje,               ""含税金额
         waers     TYPE ztmm0096_item-waers,              ""货币码
         budat     TYPE ztmm0096_item-budat,              ""凭证中的过账日期
         belnr     TYPE ztmm0096_item-belnr,              ""物料凭证编号
         buzei     TYPE ztmm0096_item-buzei,              ""物料凭证中的项目
         xblnr     TYPE ztmm0096_item-xblnr,              ""IDN号码
         lfbnr     TYPE ztmm0096_item-lfbnr,              ""参考凭证的凭证号
         lfpos     TYPE ztmm0096_item-lfpos,              ""参考凭证项目
         zzbelnr   TYPE ztmm0096_item-zzbelnr,            ""SAP发票号码
         zhj       TYPE ztmm0096_item-zhj,                ""核价单价
         zprc_dif  TYPE ztmm0096_item-zprc_dif,           ""采购价差
         zjecy     TYPE ztmm0096_item-zjecy,              ""价差金额
         zebeln    TYPE ztmm0096_item-zebeln,             ""扣款采购单号
         zebelp    TYPE ztmm0096_item-zebelp,             ""扣款采购项次
         remark    TYPE ztmm0096_item-remark,             ""备注
         message   TYPE ztmm0096_item-message,            ""消息文本"

       END OF ty_report.


*----------------------------------------------------------------------*
*                  DATA 定义                                           *
*----------------------------------------------------------------------*
DATA : gt_head   TYPE TABLE OF ztmm0096_head,
       gs_head   TYPE ztmm0096_head,
       gt_item   TYPE TABLE OF ztmm0096_item,
       gs_item   TYPE ztmm0096_item,

       gt_report TYPE TABLE OF ty_report,
       gs_report TYPE ty_report,

       counts    TYPE i,
       i         TYPE i.

*----------------------------------------------------------------------*
*                  ALV 定义
*----------------------------------------------------------------------*
DATA: wa_layout   TYPE lvc_s_layo, "layout 布局控制 参考结构 lvc_s_layo
      it_fieldcat TYPE lvc_t_fcat, "fieldcat 字段目录 参考结构 LVC_T_FCAT
      wa_fieldcat LIKE LINE OF it_fieldcat.



*----------------------------------------------------------------------*
*                  OO  ALV 定义
*----------------------------------------------------------------------*

DATA : gv_container_head TYPE REF TO cl_gui_custom_container, "存放ALV的容器
       gv_alv_head       TYPE REF TO cl_gui_alv_grid, "ALV的网络
       gt_fieldcat_head  TYPE lvc_t_fcat, "存放字段目录
       gs_layout_head    TYPE lvc_s_layo. "布局结构

DATA : gv_container_item TYPE REF TO cl_gui_custom_container, "存放ALV的容器
       gv_alv_item       TYPE REF TO cl_gui_alv_grid, "ALV的网络
       gt_fieldcat_item  TYPE lvc_t_fcat, "存放字段目录
       gs_layout_item    TYPE lvc_s_layo. "布局结构




*----------------------------------------------------------------------*
*                  选 择 屏 幕 定 义 块
*----------------------------------------------------------------------*

"STOP 直接跳转到END-OF-SELECTION. (不常用)
"Exit 退出一次,子程序、或者循环
"Return 退出程序块

"复杂选择 SELECT-OPTIONS ,需要TABLES提前声明
"OBLIGATORY 必输
"NO-EXTENSION 隐藏扩展输入
"no INTERVALS 没有范围
"MODIF ID  触发标识
"MATCHCODE OBJECT user_comp 使用SU01自带的搜索帮助
"复选框 "PARAMETERS p_p1 TYPE char1 AS CHECKBOX
"可变长输入文本 ,显示五个长度  PARAMETERS p_pr TYPE string VISIBLE LENGTH 5.
"下拉框 PARAMETERS p_p5 TYPE char5 as LISTBOX VISIBLE LENGTH 10 .
"解释文本 SELECTION-SCREEN COMMENT /1(20) text-001.

*  p_cuser-low = sy-uname
*  APPEND p_cuser.
*相当于 p_cuser FOR ztmm0096_head-cuser DEFAULT sy-uname 里的 DEFAULT sy-uname

SELECTION-SCREEN BEGIN OF BLOCK text1 WITH FRAME TITLE TEXT-001 .

PARAMETERS:
  p_p1 TYPE char1 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND flag,
  p_p2 TYPE char1 RADIOBUTTON GROUP g1,
  p_p3 TYPE char1 RADIOBUTTON GROUP g1.

SELECTION-SCREEN END OF BLOCK text1.


SELECTION-SCREEN BEGIN OF BLOCK text2 WITH FRAME TITLE TEXT-002 . "with FRAME TITLE text-t01



PARAMETERS p_bukrs TYPE ztmm0096_head-bukrs  MODIF ID f1 OBLIGATORY.   ""公司代码


SELECT-OPTIONS  s_zzgrid FOR ztmm0066_item-zzgrid  MODIF ID f1 OBLIGATORY. ""对账单号

PARAMETERS p_ekorg TYPE ztmm0096_item-ekorg  MODIF ID f1 OBLIGATORY. ""采购组织

SELECT-OPTIONS :
s_zkknum FOR ztmm0096_head-zkknum MODIF ID f2,   ""价差扣款单号
s_cuser FOR ztmm0096_head-cuser MODIF ID f2 DEFAULT sy-uname MATCHCODE OBJECT user_comp, "创建者
s_cdate FOR ztmm0096_head-cdate MODIF ID f2 DEFAULT sy-datum. "创建日期
**s_name1 FOR ztmm0096_head-name1,   ""名称
*s_zhjdat FOR ztmm0096_head-zhjdat,   ""核价基准日
*s_zyear FOR ztmm0096_head-zyear,   ""物料凭证的年份
*s_zmonth FOR ztmm0096_head-zmonth,   ""月份
*s_status FOR ztmm0096_head-status,   ""价差扣款状态
*s_zmark FOR ztmm0096_head-zmark ,   ""备注
*s_matnr for ztmm0066_item-matnr."物料

SELECTION-SCREEN END OF BLOCK text2.



*----------------------------------------------------------------------*
*                  初 始 化 块                                         *
*----------------------------------------------------------------------*
*该事件在屏幕未显示之前执行,对程式设置值及屏幕元素进行初始化赋值*
INITIALIZATION.


*----------------------------------------------------------------------*
*                  选 择 屏 幕 字 段 处 理 块
*----------------------------------------------------------------------*
  "screen-name 屏幕名称
  "screen-length 长度
  "screen-input 是否输入数据
  "screen-output 是否只显示
  "screen-required 是否要输入 选1是强制输入

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN .
    IF p_p1 = 'X'.
      IF screen-group1 = 'F2' .
        screen-active = 0 . "不活动,相当于隐藏
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

*在字段处添加帮助*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zzgrid-low.
  PERFORM frm_search_help_fors_zzgrid USING s_zzgrid-low.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zzgrid-high.
  PERFORM frm_search_help_fors_zzgrid USING s_zzgrid-high.

*  "用于响应“BACK”“CANCEL”“EXIT”等事件(不常用)
*AT SELECTION-SCREEN ON EXIT-COMMAND.
*  PERFORM frm_exit.


*  "框架的触发事件(不常用)
*AT SELECTION-SCREEN ON BLOCK text1.
*  IF p_p1 IS NOT INITIAL.
*    MESSAGE '你点了p_p1' TYPE 'I'.
*  ENDIF.


*----------------------------------------------------------------------*
*                  逻 辑 处 理 块                                      *
*----------------------------------------------------------------------*
START-OF-SELECTION. "开始执行选择,执行按钮后触发
  IF p_p1 = 'X' .
    PERFORM frm_createdata.
    PERFORM frm_layout. "布局
    PERFORM frm_fieldcat. "列
    PERFORM frm_output. "输出
  ENDIF.
  IF p_p3 = 'X' .
    PERFORM frm_getdata. "取数
    PERFORM frm_layout. "布局
    PERFORM frm_fieldcat. "列
    PERFORM frm_output. "输出
  ENDIF.

END-OF-SELECTION. "事件执行完成后,但输出屏幕还未显示之前,一般用于执行结果校验或者ALV显示等等



*----------------------------------------------------------------------*
*                  定义宏
*----------------------------------------------------------------------*
  DEFINE init_fieldcat.
    CLEAR wa_fieldcat.
wa_fieldcat-fieldname = &1. "字段
wa_fieldcat-coltext = &2.
wa_fieldcat-fix_column = &3.
wa_fieldcat-hotspot = &4.
wa_fieldcat-key = &5. ""X"
wa_fieldcat-col_pos = &6. "1
*  wa_fieldcat-EDIT = &3.
*  wa_fieldcat-REF_TABLE = &4.
*  wa_fieldcat-REF_FIELD = &5.
*  wa_fieldcat-CHECKBOX = &6 .
*  wa_fieldcat-DO_SUM = &7 .
*  wa_fieldcat-rollname = &8 .
* wa_fieldcat-hotspot = &7 .

APPEND wa_fieldcat TO it_fieldcat.

  END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*& Form FRM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_getdata .

  SELECT

      a~mandt            ""集团
      a~bukrs            ""公司代码
      a~zzgrid           ""对账单号码
      a~ekorg            ""采购组织
      a~lifnr            ""供应商或债权人的帐号
      a~zflg_js          ""寄售标识
      a~ernam            ""对账单创建人
      a~erdat            ""对账单创建日
      a~kpdate           ""SAP凭证过账日期
      a~fpdate           ""发票日期
      a~mwskz            ""销售/购买税代码
      a~waers            ""货币码
      a~xblnr            ""IDN号码"

      b~zzline            ""对账行号
      b~zdtyp             ""对账类型
      b~ebeln             ""采购凭证编号
      b~ebelp             ""采购凭证的项目编号
      b~matnr             ""物料编号
      b~maktx             ""物料描述
      b~mengest           ""送/退货数量
      b~menge             ""可对账数量
      b~mengehas          ""已对账数量
      b~mengeyt           ""验退数量
      b~meins             ""基本计量单位
      b~sqwrbtr           ""税前单价
      b~wrbtr             ""税前金额
      b~hswrbtr           ""含税单价
      b~hsje              ""含税金额
      b~budat             ""凭证中的过账日期
      b~belnr             ""物料凭证编号
      b~buzei             ""物料凭证中的项目
      b~lfbnr             ""参考凭证的凭证号
      b~lfpos             ""参考凭证项目
      b~zzbelnr           ""SAP发票号码"

    FROM  ztmm0066_head AS a
    INNER JOIN   ztmm0066_item AS b
    ON a~zzgrid = b~zzgrid
    INTO CORRESPONDING FIELDS OF TABLE gt_report
  WHERE a~zzgrid IN s_zzgrid AND a~bukrs = p_bukrs .

  "if gt_report is NOT INITIAL .
  " SELECT * from makt into it_makt for ALL ENTRIES IN gt_report WHERE matnr = itvbak-matnr.
  "ENDIF.

* SELECT mandt zzline zdtyp ebeln ebelp matnr zzgrid maktx mengest menge mengehas mengeyt meins sqwrbtr wrbtr hswrbtr hsje budat belnr buzei lfbnr lfpos zzbelnr
* FROM ztmm0066_item   INTO CORRESPONDING FIELDS OF TABLE gt_report  WHERE zzgrid IN s_zzgrid .


*LOOP AT gt_report.
*read TABLE lt_tab1 with KEY.

ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_LAYOUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_layout .
  wa_layout-cwidth_opt = 'X'. "最适列宽
  wa_layout-zebra = 'X'. "隔行显示斑马纹   使ALV表格按斑马线间隔条码方式显示

  "wa_layout-grid_title = 'test'.
  wa_layout-sel_mode = 'D'.
* wa_layout-excp_fname = 'light'.
  wa_layout-stylefname = 'CELLBTN'.
*  wa_layout-edit = 'X'.
*  wa_layout-box_fname = 'BOX'.
*  wa_layout-confirmation_prompt = 'X'.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_fieldcat .

  init_fieldcat:

    'MANDT' '集团'(t01) 'X' '' '' '',
    'ZKKNUM' '价差扣款单号'(t02) 'X' '' '' '',
    'BUKRS' '公司代码'(t03) 'X' '' '' '',
    'NAME1' '公司名称'(t04) 'X' '' '' '',
    'ZHJDAT' '核价基准日 '(t05) 'X' '' '' '',
    'ZYEAR' '物料凭证的年份 '(t06) 'X' '' '' '',
    'ZMONTH' '月份'(t07) 'X' '' '' '',
    'STATUS' '价差扣款状态 '(t08) 'X' '' '' '',
    'ZCONF_MAN' '确认人 '(t09) 'X' '' '' '',
    'DEL_FLAG' '删除标记'(t10) 'X' '' '' '',
    'DEL_MAN' '删除人 '(t11) 'X' '' '' '',
    'DEL_DATE' '删除日期'(t12) 'X' '' '' '',
    'DEL_TIME' '删除时间'(t13) 'X' '' '' '',
    'CUSER' '创建者 '(t14) 'X' '' '' '',
    'CDATE' '创建日期'(t15) 'X' '' '' '',
    'CTIME' '创建时间'(t16) 'X' '' '' '',
    'UUSER' '变更者 '(t17) 'X' '' '' '',
    'UDATE' '变更日期'(t18) 'X' '' '' '',
    'UTIME' '变更时间'(t19) 'X' '' '' '',
    'ZMARK' '备注'(t20) 'X' '' '' '',
    'ZKKLINE' '项次'(t21) 'X' '' '' '',
    'ZZGRID' '对账单号码 '(t22) 'X' '' '' '',
    'ZZLINE' '对账行号'(t23) 'X' '' '' '',
    'ZDTYP' '对账类型'(t24) 'X' '' '' '',
    'EBELN' '采购凭证编号'(t25) 'X' '' '' '',
    'EBELP' '采购凭证的项目编号 '(t26) 'X' '' '' '',
    'EKORG' '采购组织'(t27) 'X' '' '' '',
    'LIFNR' '供应商或债权人的帐号'(t28) 'X' '' '' '',
    'ZFLG_JS' '寄售标识'(t29) 'X' '' '' '',
    'ERNAM' '对账单创建人'(t30) 'X' '' '' '',
    'ERDAT' '对账单创建日'(t31) 'X' '' '' '',
    'KPDATE' 'SAP凭证过账日期'(t32) 'X' '' '' '',
    'FPDATE' '发票日期'(t33) 'X' '' '' '',
    'MATNR' '物料编号'(t34) 'X' '' '' '',
    'MAKTX' '物料描述'(t35) 'X' '' '' '',
    'MENGEST' '送/退货数量 '(t36) 'X' '' '' '',
    'MENGE' '可对账数量 '(t37) 'X' '' '' '',
    'MENGEHAS' '已对账数量 '(t38) 'X' '' '' '',
    'MENGEYT' '验退数量'(t39) 'X' '' '' '',
    'MEINS' '基本计量单位'(t40) 'X' '' '' '',
    'MWSKZ' '销售/购买税代码 '(t41) 'X' '' '' '',
    'SQWRBTR' '税前单价'(t42) 'X' '' '' '',
    'WRBTR' '税前金额'(t43) 'X' '' '' '',
    'HSWRBTR' '含税单价'(t44) 'X' '' '' '',
    'HSJE' '含税金额'(t45) 'X' '' '' '',
    'WAERS' '货币码 '(t46) 'X' '' '' '',
    'BUDAT' '凭证中的过账日期'(t47) 'X' '' '' '',
    'BELNR' '物料凭证编号'(t48) 'X' '' '' '',
    'BUZEI' '物料凭证中的项目'(t49) 'X' '' '' '',
    'XBLNR' 'IDN号码'(t50) 'X' '' '' '',
    'LFBNR' '参考凭证的凭证号 '(t51) 'X' '' '' '',
    'LFPOS' '参考凭证项目 '(t52) 'X' '' '' '',
    'ZZBELNR' 'SAP发票号码'(t53) 'X' '' '' '',
    'ZHJ' '核价单价'(t54) 'X' '' '' '',
    'ZPRC_DIF' '采购价差'(t55) 'X' '' '' '',
    'ZJECY' '价差金额'(t56) 'X' '' '' '',
    'ZEBELN' '扣款采购单号'(t57) 'X' '' '' '',
    'ZEBELP' '扣款采购项次'(t58) 'X' '' '' '',
    'REMARK' '备注'(t59) 'X' '' '' '',
    'MESSAGE' '消息文本'(t60) 'X' '' '' ''."

ENDFORM.

*&---------------------------------------------------------------------*
*& Form FRM_OUTPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_output .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
*     I_INTERFACE_CHECK  = ' '
*     I_BYPASSING_BUFFER =
*     I_BUFFER_ACTIVE    =
*     I_CALLBACK_PROGRAM = ' '
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME   =
*     I_BACKGROUND_ID    = ' '
*     I_GRID_TITLE       =
*     I_GRID_SETTINGS    =
      is_layout_lvc      = wa_layout
      it_fieldcat_lvc    = it_fieldcat
*     IT_EXCLUDING       =
*     IT_SPECIAL_GROUPS_LVC             =
*     IT_SORT_LVC        =
*     IT_FILTER_LVC      =
*     IT_HYPERLINK       =
*     IS_SEL_HIDE        =
*     I_DEFAULT          = 'X'
      i_save             = 'U'
*     IS_VARIANT         =
*     IT_EVENTS          =
*     IT_EVENT_EXIT      =
*     IS_PRINT_LVC       =
*     IS_REPREP_ID_LVC   =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE  = 0
*     I_HTML_HEIGHT_TOP  =
*     I_HTML_HEIGHT_END  =
*     IT_ALV_GRAPHICS    =
*     IT_EXCEPT_QINFO_LVC               =
*     IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab           = gt_report
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SEARCH_HELP_FORS_ZZGRID
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_search_help_fors_zzgrid USING p_fieldname.
  TYPES : BEGIN OF ty_value,
            zzgrid TYPE ztmm0066_head-zzgrid,
            ernam  TYPE ztmm0066_head-ernam,
            erdat  TYPE ztmm0066_head-erdat,
          END OF ty_value.
  DATA:
    lt_value_tab TYPE TABLE OF ty_value,
    lt_return    TYPE TABLE OF ddshretval,
    wa_return    TYPE ddshretval.

  SELECT zzgrid ernam erdat FROM ztmm0066_head INTO CORRESPONDING FIELDS OF TABLE lt_value_tab UP TO 10 ROWS.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
*     DDIC_STRUCTURE  = ' '
      retfield        = 'ZZGRID'
*     PVALKEY         = ' '
      dynpprog        = sy-repid "获取程式
      dynpnr          = sy-dynnr
*     DYNPROFIELD     = ' '
*     STEPL           = 0
*     WINDOW_TITLE    =
*     VALUE           = ' '
      value_org       = 'S' " 'C'只有一列
*     MULTIPLE_CHOICE = ' '
*     DISPLAY         = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM   = ' '
*     CALLBACK_METHOD =
*     MARK_TAB        =
* IMPORTING
*     USER_RESET      =
    TABLES
      value_tab       = lt_value_tab
*     FIELD_TAB       =
      return_tab      = lt_return "不指定的话没有返回值
*     DYNPFLD_MAPPING =
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  READ TABLE lt_return INTO wa_return INDEX 1.
  IF sy-subrc = 0 .
    p_fieldname = wa_return-fieldval. "把工作区的值赋值给
  ENDIF.

ENDFORM.


*&---------------------------------------------------------------------*
*& Form FRM_CREATEDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_createdata .

  "先看ZTMM0066_HEAD有没有数据
  SELECT SINGLE zzgrid bukrs ekorg FROM ztmm0066_head INTO CORRESPONDING FIELDS OF gs_report  WHERE zzgrid IN s_zzgrid AND bukrs = p_bukrs AND ekorg = p_ekorg."

  IF  NOT sy-subrc = 0.
    MESSAGE TEXT-m01 TYPE 'E' .
  ENDIF.

  "查看笔数ztmm0096_head
  SELECT COUNT(*) INTO ( counts ) FROM ztmm0096_head.
  counts = counts + 1.

  "插入透明表ztmm0096_head
  CLEAR gs_head.
  gs_head-mandt = sy-mandt.              ""集团
  gs_head-zkknum =  counts   .             ""价差扣款单号
  gs_head-bukrs =  p_bukrs.              ""公司代码
  gs_head-name1 =  ''.              ""名称
  gs_head-zhjdat =  sy-datum.             ""核价基准日
  gs_head-zyear =  ''.              ""物料凭证的年份
  gs_head-zmonth =  ''.             ""月份
  gs_head-status = 'N'.             ""价差扣款状态
  gs_head-zconf_man = ''.          ""确认人
  gs_head-del_flag =  ''.           ""删除标记
  gs_head-del_man =  ''.            ""删除人
  gs_head-del_date =  ''.           ""删除日期
  gs_head-del_time =  ''.           ""删除时间
  gs_head-cuser = sy-uname.              ""创建者
  gs_head-cdate = sy-datum.              ""创建日期
  gs_head-ctime = sy-uzeit.              ""创建时间
  gs_head-uuser = sy-uname.              ""变更者
  gs_head-udate = sy-datum.              ""变更日期
  gs_head-utime = sy-uzeit.              ""变更时间
  gs_head-zmark = ''.              ""备注"

  INSERT ztmm0096_head FROM gs_head.


  SELECT

      a~mandt          ""集团
      a~zzgrid          ""对账单号码
      a~ekorg          ""采购组织
      a~lifnr          ""供应商或债权人的帐号
      a~zflg_js          ""寄售标识
      a~ernam          ""对账单创建人
      a~erdat          ""对账单创建日
      a~kpdate          ""SAP凭证过账日期
      a~fpdate          ""发票日期
      a~mwskz          ""销售/购买税代码
      a~waers          ""货币码
      a~xblnr          ""IDN号码"

      b~zzline          ""对账行号
      b~zdtyp          ""对账类型
      b~ebeln          ""采购凭证编号
      b~ebelp          ""采购凭证的项目编号
      b~matnr          ""物料编号
      b~maktx          ""物料描述
      b~mengest          ""送/退货数量
      b~menge          ""可对账数量
      b~mengehas          ""已对账数量
      b~mengeyt          ""验退数量
      b~meins          ""基本计量单位
      b~sqwrbtr          ""税前单价
      b~wrbtr          ""税前金额
      b~hswrbtr          ""含税单价
      b~hsje          ""含税金额
      b~budat          ""凭证中的过账日期
      b~belnr          ""物料凭证编号
      b~buzei          ""物料凭证中的项目
      b~lfbnr          ""参考凭证的凭证号
      b~lfpos          ""参考凭证项目
      b~zzbelnr          ""SAP发票号码"

    FROM  ztmm0066_head AS a
    INNER JOIN   ztmm0066_item AS b
    ON a~zzgrid = b~zzgrid
    INTO CORRESPONDING FIELDS OF TABLE gt_report
  WHERE a~zzgrid IN s_zzgrid AND a~bukrs = p_bukrs .

  i = 0.
  gs_report-zkknum = counts .
  LOOP AT gt_report INTO gs_report .
    i = i + 1.
    gs_report-zkkline = i .
    MODIFY gt_report FROM gs_report INDEX i TRANSPORTING zkkline zkknum.
  ENDLOOP .







  " BREAK-POINT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_EXIT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_exit .
  DATA lv_answer  TYPE c.

  "选是“J” ,选否“N” ,选取消“A”
  CALL FUNCTION 'POPUP_TO_CONFIRM_DATA_LOSS'
    EXPORTING
*     DEFAULTOPTION       = 'J'
      titel  = '是否保存?'
*     START_COLUMN        = 25
*     START_ROW           = 6
* IMPORTING
      answer = lv_answer.

  IF lv_answer = 'J'.

  ENDIF.

ENDFORM.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值