ABAP开发案例3.docx
《ABAP开发案例3.docx》由会员分享,可在线阅读,更多相关《ABAP开发案例3.docx(30页珍藏版)》请在冰豆网上搜索。
ABAP开发案例3
*&---------------------------------------------------------------------*
*& Report ZSD_KHZSJ
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSD_KHZSJ.
TABLES:
KNA1,TSKDT,KNB1,KNVK,KNVV,knkk,s067,TVkbt,t691t.
DATA:
BEGIN OF GT_SDFT OCCURS 0,
KUNNR LIKE KNA1-KUNNR,KTOKD LIKE KNA1-KTOKD,
VKORG LIKE KNVV-VKORG,VTWEG LIKE KNVV-VTWEG,
SPART LIKE KNVV-SPART,NAME1 LIKE KNA1-NAME1,
KNURL LIKE KNA1-KNURL,SORTL LIKE KNA1-SORTL,
LAND1 LIKE KNA1-LAND1,REGIO LIKE KNA1-REGIO,
ORT01 LIKE KNA1-ORT01,STRAS LIKE KNA1-STRAS,
ADRNR like kna1-adrnr,
EMAIL like adr6-addrnumber,NAME2 LIKE KNVK-NAME1,
TELF1 LIKE KNA1-TELF1,TELF2 LIKE KNA1-TELF2,
TELFX LIKE KNA1-TELFX,STCD5 LIKE KNA1-STCD5,
VTEXT LIKE TSKDT-VTEXT,WAERS LIKE KNVV-WAERS,
BUKRS LIKE KNB1-BUKRS,FDGRV LIKE KNB1-FDGRV,
AKONT LIKE KNB1-AKONT,VKBUR LIKE KNVV-VKBUR,
BEZEI LIKE TVKBT-BEZEI,
NAME3 LIKE KNVK-NAME1,KALKS LIKE KNVV-KALKS,
ZTERM LIKE KNVV-ZTERM,INCO1 LIKE KNVV-INCO1,
INCO2 LIKE KNVV-INCO2,KTGRD LIKE KNVV-KTGRD,
klimk LIKE KNKK-KLIMK,SKFOR LIKE KNKK-SKFOR,
SAUFT TYPE I,OBLIG TYPE I,KLPRZ TYPE I,
CTLPC like knkk-CTLPC, rtext like t691t-rtext,
aufsd like kna1-aufsd,zuawa like knb1-zuawa,
SLBOX TYPE CHAR1,
END OF GT_SDFT.
DATA LT_TVkbt LIKE TVkbt OCCURS 0 WITH HEADER LINE.
DATA:
lt_knvk1 LIKE KNVK OCCURS 0 WITH HEADER LINE.
DATA:
lt_ADR61 LIKE ADR6 OCCURS 0 WITH HEADER LINE.
*data:
so0671 like s067 OCCURS 0 WITH HEADER LINE.
DATA:
BEGIN OF GT_TSKDT OCCURS 0,
KUNNR LIKE KNVI-KUNNR,
VTEXT LIKE TSKDT-VTEXT,
END OF GT_TSKDT.
data:
begin of lt_knkk1 OCCURS 0,
kunnr like knkk-kunnr,
olikw like s067-olikw,
ofakw like s067-ofakw,
skfor like knkk-skfor,
sauft like s067-olikw,
oblig like s067-olikw,
end of lt_knkk1.
DATA WK_ALV LIKE LINE OF GT_SDFT.
data gt_t691t like t691t OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK yy WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S1 FOR LIKP-LFART,"交货单类型
S2 FOR LIKP-VKORG,"销售组织
S3 FOR LIPS-VTWEG,"销售渠道
S4 FOR LIPS-SPART,"产品组
S5 FOR LIKP-VKBUR,"销售区域
S6 FOR LIPS-VGBEL,"销售订单号
S7 FOR RF02D-KUNNR,"客户编号
NO-EXTENSION NO INTERVALS ."
公司代码
SELECTION-SCREEN END OF BLOCK yy.
START-OF-SELECTION.
PERFORM ZSD_KHB.
PERFORM FRM_ALV_GRID.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form ZSD_KHB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ZSD_KHB .
SELECT KNA1~KUNNR KNA1~KTOKD KNVV~VKORG KNVV~VTWEG KNVV~SPART
KNA1~NAME1 KNA1~KNURL KNA1~SORTL KNA1~LAND1 KNA1~REGIO KNA1~ORT01
KNA1~STRAS KNA1~ADRNR KNA1~TELF1 KNA1~TELF2 KNA1~TELFX KNA1~STCD5 KNVI~TATYP
KNVI~TAXKD KNVV~WAERS KNB1~BUKRS KNB1~FDGRV KNB1~AKONT KNVV~BZIRK
KNVV~KALKS KNVV~ZTERM KNVV~INCO1 KNVV~INCO2 KNVV~KTGRD KNKK~KLIMK
KNKK~SKFOR knvv~vkbur knkk~CTLPC kna1~aufsd knb1~zuawa
INTO CORRESPONDING FIELDS OF TABLE GT_SDFT
FROM KNA1 INNER JOIN KNVV ON KNVV~KUNNR = KNA1~KUNNR
INNER JOIN KNVI ON KNVI~KUNNR = KNA1~KUNNR
INNER JOIN KNB1 ON KNB1~KUNNR = KNA1~KUNNR
LEFT JOIN KNKK ON KNKK~KUNNR = KNA1~KUNNR
WHERE KNA1~KUNNR IN S_KUNNR AND KNVV~VKORG IN S_VKORG
AND KNA1~NAME1 IN S_NAME1 AND KNA1~SORTL IN S_SORTL
AND KNA1~LAND1 IN S_LAND1 AND KNA1~REGIO IN S_REGIO
AND KNA1~ORT01 IN S_ORT01 AND KNB1~BUKRS IN S_BUKRS.
SELECT * INTO TABLE lt_knvk1 FROM KNVK.
SELECT * INTO TABLE lt_ADR61 FROM ADR6.
SELECT * INTO TABLE LT_TVKBT FROM TVKBT.
SELECT KNVI~KUNNR TSKDT~VTEXT
INTO TABLE GT_TSKDT FROM KNA1 INNER JOIN KNVI ON KNVI~KUNNR = KNA1~KUNNR
INNER JOIN TSKDT ON KNVI~TATYP = TSKDT~TATYP AND
KNVI~TAXKD = TSKDT~TAXKD.
select knkk~kunnr s067~olikw s067~ofakw
knkk~skfor into
table lt_knkk1 from knkk inner join s067 on knkk~knkli = s067~knkli.
select * into table gt_t691t from t691t .
loop at lt_knkk1.
lt_knkk1-sauft = lt_knkk1-olikw + lt_knkk1-ofakw.
lt_knkk1-oblig = lt_knkk1-skfor + lt_knkk1-olikw + lt_knkk1-ofakw.
modify lt_knkk1 TRANSPORTING sauft oblig.
endloop.
LOOP AT GT_SDFT.
READ TABLE lt_knvk1 WITH KEY KUNNR = GT_SDFT-KUNNR ABTNR = '0001' .
if sy-subrc = 0.
MOVE lt_knvk1-NAME1 TO GT_SDFT-NAME2.
endif.
READ TABLE lt_knvk1 WITH KEY KUNNR = GT_SDFT-KUNNR ABTNR = '0004'.
if sy-subrc = 0.
MOVE lt_knvk1-NAME1 TO GT_SDFT-NAME3.
endif.
* MODIFY GT_SDFT TRANSPORTING NAME2 NAME3.
READ TABLE lt_ADR61 WITH KEY ADDRNUMBER = GT_SDFT-ADRNR.
if sy-subrc = 0.
MOVE lt_ADR61-SMTP_ADDR TO GT_SDFT-EMAIL.
endif.
* MODIFY GT_SDFT TRANSPORTING EMAIL.
read TABLE gt_t691t with key ctlpc = gt_sdft-ctlpc."读取风险类别
if sy-subrc = 0.
move gt_t691t-rtext to gt_sdft-rtext.
endif.
if gt_sdft-aufsd is not INITIAL.
GT_SDFT-aufsd = '是'.
else.
gt_sdft-aufsd = '否'.
endif.
READ TABLE GT_TSKDT WITH KEY KUNNR = GT_SDFT.
if sy-subrc = 0.
MOVE GT_TSKDT-VTEXT TO GT_SDFT-VTEXT.
endif.
* MODIFY GT_SDFT TRANSPORTING VTEXT.
read table lt_knkk1 with key kunnr = gt_sdft-kunnr.
IF SY-SUBRC = 0.
move lt_knkk1-sauft to gt_sdft-sauft.
move lt_knkk1-oblig to gt_sdft-oblig.
ENDIF.
* modify gt_sdft TRANSPORTING sauft oblig.
IF GT_SDFT-KLIMK = 0.
GT_SDFT-KLPRZ = 0.
ELSE .
gt_sdft-klprz = gt_sdft-oblig / gt_sdft-klimk * 100.
ENDIF.
* modify gt_sdft TRANSPORTING klprz.
READ TABLE LT_TVKBT WITH KEY VKBUR = GT_SDFT-VKBUR SPRAS = 1.
IF SY-SUBRC = 0.
MOVE LT_TVKBT-BEZEI TO GT_SDFT-BEZEI.
ENDIF.
* MODIFY GT_SDFT TRANSPORTING bezei.
modify gt_sdft.
clear gt_sdft.
ENDLOOP.
ENDFORM. " ZSD_KHB
*&---------------------------------------------------------------------*
*& Form FRM_ALV_GRID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FRM_ALV_GRID .
DATA:
WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA:
L_I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA:
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-BOX_FIELDNAME = 'SLBOX'.
*设置ALV FIELD
DEFINE FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = &1.
WA_FIELDCAT-SELTEXT_L = &2.
WA_FIELDCAT-KEY = &3.
WA_FIELDCAT-REF_TABNAME = &4.
WA_FIELDCAT-DECIMALS_OUT = &5.
* WA_FIELDCAT-EMPHASIZE = &5.
APPEND WA_FIELDCAT TO L_I_FIELDCAT.
END-OF-DEFINITION.
FIELDCAT 'KUNNR' '客户编号' '' 'KNA1' '0'.
FIELDCAT 'KTOKD' '科目组' '' '' '0'.
FIELDCAT 'VKORG' '销售组织' '' '' '0'.
FIELDCAT 'VTWEG' '分销渠道' '' '' '0'.
FIELDCAT 'SPART' '产品组' '' '' '0'.
FIELDCAT 'NAME1' '客户名称' '' '' '0'.
FIELDCAT 'ZUAWA' '排序码' '' '' '0'.
FIELDCAT 'KNURL' '网址' '' '' '0'.
FIELDCAT 'SORTL' '搜索项' '' '' '0'.
FIELDCAT 'LAND1' '国家' '' '' '0'.
FIELDCAT 'REGIO' '省' '' '' '0'.
FIELDCAT 'ORT01' '市' '' '' '0'.
FIELDCAT 'STRAS' '街道' '' '' '0'.
FIELDCAT 'EMAIL' '邮箱' '' '' '0'.
FIELDCAT 'NAME2' '联系人' '' '' '0'.
FIELDCAT 'TELF1' '电话' '' '' '0'.
FIELDCAT 'TELF2' '手机' '' '' '0'.
FIELDCAT 'TELFX' '传真' '' '' '0'.
FIELDCAT 'STCD5' '纳税人登记号' '' '' '0'.
FIELDCAT 'VTEXT' '税分类' '' '' '0'.
FIELDCAT 'WAERS' '结算货币' '' '' '0'.
FIELDCAT 'BUKRS' '公司代码' '' '' '0'.
FIELDCAT 'FDGRV' '现金管理组' '' '' '0'.
FIELDCAT 'AKONT' '统驭科目' '' '' '0'.
FIELDCAT 'BEZEI' '销售区域' '' '' '0'.
FIELDCAT 'NAME3' '销售员' '' '' '0'.
FIELDCAT 'KALKS' '客户定价过程' '' '' '0'.
FIELDCAT 'ZTERM' '付款条件' '' '' '0'.
FIELDCAT 'INCO1' '国际贸易条款' '' '' '0'.
FIELDCAT 'INCO2' '国际贸易条款描述' '' '' '0'.
FIELDCAT 'KTGRD' '账户分配组' '' '' '0'.
FIELDCAT 'KLIMK' '信贷限额' '' '' '3'.
FIELDCAT 'SKFOR' '应收总额' '' '' '3'.
FIELDCAT 'SAUFT' '销售值' '' '' '3'.
FIELDCAT 'AUFSD' '是否冻结' '' '' '3'.
FIELDCAT 'RTEXT' '风险类别' '' '' '3'.
FIELDCAT 'OBLIG' '信贷风险总额' '' '' '3'.
FIELDCAT 'KLPRZ' '已使用的信贷限额' '' '' '2'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_HTML_TOP_OF_PAGE = 'ALV_TOP_OF_PAGE'"ALV输出表头设置
IT_FIELDCAT = L_I_FIELDCAT[]
IS_LAYOUT = WA_LAYOUT
i_save = 'A'
* I_CALLBACK_PF_STATUS_SET = 'FRM_SET_STATUS'
I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND'
TABLES
T_OUTTAB = GT_SDFT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " FRM_ALV_GRID
FORM FRM_USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD. "#EC
DATA L_KUNNR TYPE KUNNR.
DATA G_GRID TYPE REF TO CL_GUI_ALV_GRID.
CASE RF_UCOMM.
WHEN '&IC1'. "双击事件或是F2事件
IF RS_SELFIELD-FIELDNAME EQ 'KUNNR'.
CLEAR L_KUNNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = RS_SELFIELD-VALUE
IMPORTING