二维码

求老师们指导

XZ_P_0515发表于 2016-10-17 22:45XZ_P_0515 最后回复于 2016-10-21 10:19 [复制链接] 2651 6

因为我是第一次接触开发说明书,不知道该怎么根据开发说明书去写程序,现有一份关于查询客户主数据报表的开发说明书,需要去写代码,没有头绪,虽然知道fmALV创建流程,但是理论和实际结合不上,比如说宏定义不知道怎么更具开发说明书去定义数据,现想寻求一份关于查询客户主数据方面的开发说明书以及开发代码,想作为对比,希望得到各位恩师的帮助,感激不尽。附录中是我的开发说明书,希望得到老师们的指点。

ABP_SD_客户主数据查询报表.rar

5.15 KB, 下载次数: 15, 下载积分: 雨露 -1 滴

回复

使用道具 举报

XZ_P_0515

RE: 求老师们指导

Twilight 发表于 2016-10-18 23:11
表与表直接直接join,表与内表关联for all entries in,注意内表排序排重非空,还有注意索引等,否则数据多 ...

恩恩,谢谢您,这个我做出来了,嘿嘿,处女作,谢谢您指导
回复 支持 1 反对 0

使用道具 举报

XZ_P_0515
具体思路我有,主要是一些细节处理上转不过来弯,所以希望老师指点
回复 支持 反对

使用道具 举报

Twilight

RE: 求老师们指导

XZ_P_0515 发表于 2016-10-17 22:49
具体思路我有,主要是一些细节处理上转不过来弯,所以希望老师指点


需求都这么明确了,字段都给你找出来啦,还不简单!

这都是套路呀,从“ALV报表”板块这个案例抄一下即可
  • 定义选择屏幕
  • select取数,合并数据到内表
  • ALV报表展示

T-code  XD03
相关表KNA1、KNB1、KNVV、KNVP
客户名称,加一个search help
回复 支持 反对

使用道具 举报

XZ_P_0515

RE: 求老师们指导

Twilight 发表于 2016-10-18 19:45
需求都这么明确了,字段都给你找出来啦,还不简单!

这都是套路呀,从“ALV报表”板块这个案例抄一 ...

恩恩,老师 ,感谢您的帮助,这个今天我自己写出来了,嘿嘿,挺开心的,写出来的第一个程序。老师,但是我 遇到了一个问题:在做表连接时,两个表之间,没有相同的主键键子,我知道该去寻找个第三方键子,但是弄了 半天也没找出来,老师 您可以指点指点我吗?谢谢您
回复 支持 反对

使用道具 举报

Twilight
表与表直接直接join,表与内表关联for all entries in,注意内表排序排重非空,还有注意索引等,否则数据多一点取数就会很慢,这需要积累,实战调试,多看,先把论坛中基础部分看看吧
回复 支持 反对

使用道具 举报

XZ_P_0515
*&---------------------------------------------------------------------*
*& Report Z_XZP_ALV_SD_0012
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_xzp_alv_sd_0012.
TYPE-POOLS : abap,slis,icon.
TABLES: knvv,kna1,adrc,knvk.

DATA: BEGIN OF itab OCCURS 0,
        vkorg      LIKE knvv-vkorg, "销售组织
        vtweg      LIKE knvv-vtweg, "分销渠道
        spart      LIKE knvv-spart, "产品线
        kunnr      LIKE kna1-kunnr, "客户编码
        name1      LIKE kna1-name1, "客户名称1
        name2      LIKE kna1-name2, "客户名称2
        zterm      LIKE knvv-zterm, "客户帐期
        kdgrp      LIKE knvv-kdgrp, "客户组
        vwerk      LIKE knvv-vwerk, "工厂
        telf1      LIKE kna1-TELF1, "电话
        telfx      LIKE kna1-telfx, "传真
        str_suppl3 LIKE adrc-str_suppl3, "客户地址二
        stras      LIKE kna1-stras, "客户地址一
        regio      LIKE kna1-regio, "地区 (州、省、县)
        namev      LIKE knvk-namev, "联系人
        bzirk      LIKE knvv-bzirk, "销售地区
        sort2      LIKE adrc-sort2, "在途帐期
        datum      LIKE sy-datum, "客户账期-在途账期
      END OF itab.

TYPES:BEGIN OF ty_itab ,
        kunnr TYPE kna1-kunnr,
        name1 TYPE kna1-name1,
        name2 TYPE kna1-name2,
        telf1 TYPE kna1-telf1,
        telfx TYPE kna1-telfx,
        stras TYPE kna1-stras,
        regio TYPE kna1-regio,
      END OF ty_itab.

DATA:w_repid          LIKE sy-repid,
     wa_variant       LIKE disvariant,        "显示变式结构
     wa_layout        TYPE slis_layout_alv,   "alv的格式
     wa_fieldcat      TYPE slis_fieldcat_alv,
     it_fieldcat      TYPE TABLE OF slis_fieldcat_alv,
     gt_events        TYPE slis_t_event,
     gs_event         LIKE LINE OF gt_events,
     gt_fieldcat_list TYPE lvc_t_fcat,
     gw_fieldcat      TYPE lvc_s_fcat,
     gt_sort          TYPE lvc_t_sort,
     gs_sort          TYPE lvc_s_sort,
     gt_event_exit    TYPE slis_t_event_exit,
     gs_layout        TYPE lvc_s_layo.
DATA: l_repid LIKE sy-repid.
DEFINE fill_field_list.

  gw_fieldcat-fieldname       = &1.
  gw_fieldcat-coltext         = &2.
  gw_fieldcat-ref_table       = &3.
  gw_fieldcat-ref_field       = &4.
  gw_fieldcat-key             = &5.
  gw_fieldcat-checkbox        = &6.
  gw_fieldcat-edit            = &7.
  gw_fieldcat-emphasize       = &8.
  gw_fieldcat-outputlen       = &9.

  APPEND gw_fieldcat TO gt_fieldcat_list.
  CLEAR gw_fieldcat.

END-OF-DEFINITION.


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: so_vkorg FOR knvv-vkorg."销售组织
SELECT-OPTIONS: so_vtweg FOR knvv-vtweg."分销渠道
SELECT-OPTIONS: so_spart FOR knvv-spart."产品线
SELECT-OPTIONS: so_kunnr FOR kna1-kunnr."客户编码
SELECT-OPTIONS: so_name1 FOR kna1-name1."客户名称
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
  PERFORM frm_get_data."获取数据
*  PERFORM frm_data_process."数据处理

END-OF-SELECTION.
  IF itab[] IS NOT INITIAL.
     PERFORM frm_display_data.
  ELSE.
     MESSAGE'NO SUITABLE DATA WAS SELECTED,PLEASE CHECK YOUR   INPUT'TYPE'I'.
  ENDIF.


FORM frm_get_data.
*  SELECT kunnr name1 name2 telf1 telfx stras regio
*     INTO CORRESPONDING FIELDS OF TABLE itab
*     FROM kna1
*     WHERE  kunnr IN  so_kunnr
*     AND    name1 IN  so_name1.

   SELECT
    knvv~vkorg
    knvv~vtweg
    knvv~spart
    kna1~kunnr
    kna1~name1
    kna1~name2
    knvv~zterm
    knvv~kdgrp
    knvv~vwerk
    kna1~TELF1
    kna1~telfx
    adrc~str_suppl3
    kna1~stras
    kna1~regio
    knvk~namev
    knvv~bzirk
    adrc~sort2
  INTO CORRESPONDING FIELDS OF TABLE itab
  FROM kna1  INNER JOIN knvv ON kna1~kunnr = knvv~kunnr
             INNER JOIN adrc ON kna1~adrnr = adrc~ADDRNUMBER
             INNER JOIN knvk ON kna1~adrnr = knvk~adrnd
  WHERE  knvv~vkorg in so_vkorg and
         knvv~vtweg in so_vtweg and
         knvv~spart in so_spart and
         kna1~kunnr in so_kunnr and
         kna1~name1 in so_name1.
ENDFORM.

*FORM FRM_DATA_PROCESS.
*  LOOP AT itab.
*    itab_ROWCOLOR = 'C710'.
*    ENDLOOP.
*  ENDFORM.



FORM frm_display_data.
  PERFORM frm_layout.
  PERFORM frm_fill_field.
  PERFORM frm_build_event.
  PERFORM frm_alv_display.
ENDFORM.


FORM frm_layout.
  CLEAR wa_layout.
  gs_layout-cwidth_opt = 'X'.
  gs_layout-no_rowmark = 'X'.
  gs_layout-no_merging = ' '.
*  gs_layout-excp_fname = 'LIGHT'.
*  gs_layout-box_fname = 'SEL'.
*  gs_layout-excp_led = 'X'.

ENDFORM.

FORM: frm_fill_field.
* REFRESH:FIELDCAT.
  fill_field_list 'VKORG' '销售组织' 'KNVV' 'VKORG' '' '' '' '' ''.
  fill_field_list 'VTWEG' '分销渠道' 'KNVV' 'VTWEG' '' '' '' '' ''.
  fill_field_list 'SPART' '产品线'   'KNVV' 'SPART' '' '' '' '' ''.
  fill_field_list 'KUNNR' '客户编码' 'KNA1' 'KUNNR' '' '' '' '' ''.
  fill_field_list 'NAME1' '客户名称1' 'KNA1' 'KNA1' '' '' '' '' ''.
  fill_field_list 'NAME2' '客户名称2' 'KNA1' 'KNA1' '' '' '' '' ''.
  fill_field_list 'ZTERM' '客户账期' 'KNVV' 'ZTERM' '' '' '' '' ''.
  fill_field_list 'KDGRP' '客户组'   'KNVV' 'KDGRP' '' '' '' '' ''.
  fill_field_list 'VWERK' '工厂'     'KNVV' 'VWERK' '' '' '' '' ''.
  fill_field_list 'TELF1' '电话'     'KNA1' 'TELF1' '' '' '' '' ''.
  fill_field_list 'TELFX' '传真'     'KNA1' 'TELFX' '' '' '' '' ''.
  fill_field_list 'STR_SUPP13' '客户地址二' 'ADRC' 'STR_SUPP13' '' '' '' '' ''.
  fill_field_list 'STRAS' '客户地址一' 'KNA1' 'STRAS' '' '' '' '' ''.
  fill_field_list 'REGIO' '地区 (州、省、县)' 'KNA1' 'REGIO' '' '' '' '' ''.
  fill_field_list 'NAMEV' '联系人' 'KNVK' 'NAMEV' '' '' '' '' ''.
  fill_field_list 'BZIRK' '销售地区' 'KNVV' 'BZIRK' '' '' '' '' ''.
  fill_field_list 'SORT2' '在途账期' 'ADRC' 'SORT2' '' '' '' '' ''.
  fill_field_list 'DATUM' '客户账期-在途账期' '' '' '' '' '' '' ''.

ENDFORM.


FORM frm_build_event.
  REFRESH :gt_events.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET '
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = gt_events.
  gs_event-name = slis_ev_pf_status_set.
  gs_event-form = 'PF_STAYUS'.
  APPEND gs_event TO gt_events.
  CLEAR  gs_event.
ENDFORM.

FORM frm_alv_display.
  CLEAR: l_repid.
  l_repid = sy-repid.

  PERFORM frm_fill_field.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = l_repid
      it_fieldcat_lvc          = gt_fieldcat_list[]
*      i_callback_pf_status_set = 'F_SET_PF_STATUS'
*      i_callback_user_command  = 'F_ALV_UCOMMD'
      is_layout_lvc            = gs_layout
      it_sort_lvc              = gt_sort[]
      i_default                = 'X'
      i_save                   = 'A'
*     it_events                = gt_events[]
*     it_event_exit            = gt_event_exit[]
    TABLES
      t_outtab                 = itab
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

ENDFORM.

感觉自己的取数逻辑没加对,所有数据读不出来
回复 支持 反对

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表