1、根据采购订单合同和行项目和类型(合同是M)在A016表中取值条件号,

2、根据A016的条件号在KONP中取得价格

ME35K、ME3M的增强点在子程序LMEREPI02下的  METHOD if_reader_mm~read_table.  里面

代码如下:

  1. METHOD if_reader_mm~read_table. "
  2.  
  3. DATA: l_ref_ekko TYPE REF TO data,
  4. l_ref_ekkn TYPE REF TO data,
  5. lt_ekpo TYPE lty_t_sorted_ekpo,
  6. lt_outtab_acc TYPE lty_t_outtab_accounting,
  7. lt_outtab_schedlines TYPE lty_t_outtab_schedlines,
  8. ls_ekko TYPE ekko,
  9. ls_ekpo TYPE ekpo,
  10. ls_ekko_add TYPE lty_s_ekko_add,
  11. ls_outtab_purchdoc TYPE merep_outtab_purchdoc,
  12. ls_outtab_downpay TYPE merep_outtab_downpay, "EhP4
  13. lt_outtab_scrap TYPE lty_t_outtab_scrap, "EhP4
  14. ls_outtab_purchdoc_rel TYPE merep_outtab_purchdoc_rel.
  15.  
  16. FIELD-SYMBOLS: <ekko> TYPE lty_t_sorted_ekko,
  17. <ekkn> TYPE lty_t_sorted_ekkn,
  18. <outtab> TYPE STANDARD TABLE.
  19.  
  20. CALL METHOD super->if_reader_mm~read_table
  21. EXPORTING
  22. im_name = im_name
  23. IMPORTING
  24. ex_structname = ex_structname
  25. ex_fieldcatalog = ex_fieldcatalog
  26. ex_table_ref = ex_table_ref
  27. EXCEPTIONS
  28. OTHERS = .
  29. IF NOT sy-subrc IS INITIAL.
  30. RAISE not_found.
  31. ENDIF.
  32.  
  33. * assign output table
  34. ASSIGN ex_table_ref->* TO <outtab>.
  35.  
  36. * get table objects
  37. my_any_ekko = my_table_manager->lookup( 'EKKO' ).
  38. CHECK my_any_ekko IS BOUND.
  39. my_any_ekpo = my_table_manager->lookup( 'EKPO' ).
  40. CHECK my_any_ekpo IS BOUND.
  41. my_any_eket = my_table_manager->lookup( 'EKET' ).
  42. CHECK my_any_eket IS BOUND.
  43. my_any_ekkn = my_table_manager->lookup( 'EKKN' ).
  44. CHECK my_any_ekkn IS BOUND.
  45. my_any_lfa1 = my_table_manager->lookup( 'LFA1' ).
  46. CHECK my_any_lfa1 IS BOUND.
  47. my_any_authority = my_table_manager->lookup( 'MEREP_AUTHORITY' ).
  48. CHECK my_any_authority IS BOUND.
  49. my_any_ekbes = my_table_manager->lookup( 'EKBES' ).
  50. CHECK my_any_ekbes IS BOUND.
  51. * sub-contracting component consumption
  52. my_any_ekbe_sc = my_table_manager->lookup( 'EKBE_SC' ). "Comp. Consumption
  53. CHECK my_any_ekbe_sc IS BOUND.
  54. * down payments
  55. my_any_downpay = my_table_manager->lookup( 'DOWNPAY' ).
  56. CHECK my_any_downpay IS BOUND.
  57.  
  58. * get header info
  59. l_ref_ekko = my_any_ekko->get_table( ).
  60. ASSIGN l_ref_ekko->* TO <ekko>.
  61.  
  62. * get accounting info
  63. l_ref_ekkn = my_any_ekkn->get_table( ).
  64. ASSIGN l_ref_ekkn->* TO <ekkn>.
  65.  
  66. IF my_struct_name EQ 'MEREP_OUTTAB_ACCOUNTING'. "
  67. * usually we did not read the accounting info up to now so we have
  68. * to do this here:
  69. IF <ekkn> IS INITIAL.
  70. <ekkn> = me->prefetch_accounting( my_any_ekpo ).
  71. ENDIF.
  72. ENDIF. "
  73.  
  74. LOOP AT <ekko> INTO ls_ekko.
  75.  
  76. * determine field 'super'
  77. ls_ekko_add-superfield = build_superfield( ls_ekko ).
  78. * get released value for release docu
  79. IF ls_ekko-bstyp EQ cl_mmpur_constants=>bstyp_k. "bstyp-kont.
  80. ls_ekko_add-ktwtr = fetch_ekab_tot_ktwtr( ls_ekko ).
  81. ENDIF.
  82.  
  83. * get item info
  84. CLEAR lt_ekpo[].
  85. my_any_ekpo->read_lines( EXPORTING im_key = ls_ekko-ebeln
  86. IMPORTING ex_table = lt_ekpo ).
  87.  
  88. LOOP AT lt_ekpo INTO ls_ekpo.
  89.  
  90. CASE my_struct_name.
  91.  
  92. WHEN 'MEREP_OUTTAB_PURCHDOC'.
  93. * basic list
  94. ls_outtab_purchdoc = build_base_list( im_ekko = ls_ekko
  95. im_ekpo = ls_ekpo
  96. im_ekko_add = ls_ekko_add ).
  97. APPEND ls_outtab_purchdoc TO <outtab>.
  98.  
  99. WHEN 'MEREP_OUTTAB_PURCHDOC_REL'.
  100. * release
  101. ls_outtab_purchdoc = build_base_list( im_ekko = ls_ekko
  102. im_ekpo = ls_ekpo
  103. im_ekko_add = ls_ekko_add ).
  104. CLEAR ls_outtab_purchdoc_rel.
  105. MOVE-CORRESPONDING ls_outtab_purchdoc TO ls_outtab_purchdoc_rel.
  106. APPEND ls_outtab_purchdoc_rel TO <outtab>.
  107.  
  108. WHEN 'MEREP_OUTTAB_SCHEDLINES'.
  109. * schedule lines
  110. build_schedlines_list( EXPORTING im_ekko = ls_ekko
  111. im_ekpo = ls_ekpo
  112. im_ekko_add = ls_ekko_add
  113. IMPORTING ex_outtab_shedl = lt_outtab_schedlines ).
  114. APPEND LINES OF lt_outtab_schedlines TO <outtab>.
  115.  
  116. WHEN 'MEREP_OUTTAB_ACCOUNTING'.
  117. * accounting data
  118. build_acc_list( EXPORTING im_ekko = ls_ekko
  119. im_ekpo = ls_ekpo
  120. im_ekko_add = ls_ekko_add
  121. im_t_ekkn = <ekkn> "
  122. IMPORTING ex_outtab_acc = lt_outtab_acc ).
  123. APPEND LINES OF lt_outtab_acc TO <outtab>.
  124.  
  125. WHEN 'MEREP_OUTTAB_DOWNPAY'.
  126. BREAK-POINT ID mmpur_downpay.
  127. * down payment (extended view on basic list)
  128. ls_outtab_downpay = build_downpay_list( im_ekko = ls_ekko
  129. im_ekpo = ls_ekpo
  130. im_ekko_add = ls_ekko_add ).
  131. APPEND ls_outtab_downpay TO <outtab>.
  132.  
  133. WHEN 'MEREP_OUTTAB_COMPCONSUMP'.
  134. * component consumption
  135. IF cl_ops_switch_check=>mm_om1_sfws_sc( ) EQ cl_mmpur_constants=>yes.
  136. ls_outtab_purchdoc = build_base_list( im_ekko = ls_ekko
  137. im_ekpo = ls_ekpo
  138. im_ekko_add = ls_ekko_add ).
  139. INSERT ls_outtab_purchdoc INTO TABLE <outtab>. "#EC *
  140. ENDIF.
  141.  
  142. WHEN 'MEREP_OUTTAB_SCRAP'. "EhP 4
  143. * build scrap overview
  144. IF cl_ops_switch_check=>mm_om1_sfws_sc( ) EQ cl_mmpur_constants=>yes.
  145. CLEAR lt_outtab_scrap.
  146. build_scrap_list( EXPORTING is_ekko = ls_ekko
  147. is_ekpo = ls_ekpo
  148. is_ekko_add = ls_ekko_add
  149. IMPORTING et_outtab = lt_outtab_scrap ).
  150. INSERT LINES OF lt_outtab_scrap INTO TABLE <outtab>. "#EC *
  151. ENDIF.
  152. ENDCASE.
  153.  
  154. ENDLOOP. " at lt_ekpo
  155. ENDLOOP. " at <ekko>
  156.  
  157. * long procurement number
  158. TRY.
  159. /sappspro/cl_numbers=>lookup_many( CHANGING ct_table = <outtab> ).
  160. CATCH /sappspro/cx_number_wrong_strc. "#EC NO_HANDLER
  161. EXIT.
  162. ENDTRY.
  163.  
  164. * call BAdIs (customer- and industry-specific) for modifying the output table
  165. CALL FUNCTION 'MEPOBADI_CHANGE_OUTTAB'
  166. EXPORTING
  167. im_struct_name = my_struct_name
  168. im_id = me->if_datablade_mm~class_id
  169. im_handle = my_handle
  170. im_loggroup = my_log_group
  171. CHANGING
  172. ch_outtab = <outtab>.
  173.  
  174. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1)\PR:SAPLMEREP\TY:LCL_DATABLADE_PURCHDOC\IN:IF_READER_MM\ME:READ_TABLE\SE:END\EI A
  175. *$*$-Start: (1)---------------------------------------------------------------------------------$*$*
  176. ENHANCEMENT ZEXPORT_CHARG. "active version
  177. *
  178. * *增加展示合同所有区间条件价格 at 20150901 by hp_gongzg
  179. DATA: lt_outtab_purchdoc TYPE STANDARD TABLE OF merep_outtab_purchdoc.
  180. DATA:LT_KONP TYPE STANDARD TABLE OF KONP,
  181. LW_KONP TYPE KONP,
  182. LT_A016 TYPE STANDARD TABLE OF A016,
  183. LW_A016 TYPE A016,
  184. lv_tabix TYPE sy-tabix.
  185. * FIELD-SYMBOLS:<fs_outtab_purchdoc_rel> TYPE merep_outtab_purchdoc_rel.
  186. DATA:lt_outtab_purchdoc_rel TYPE STANDARD TABLE OF merep_outtab_purchdoc_rel.
  187. DATA:lw_outtab_purchdoc_rel TYPE merep_outtab_purchdoc_rel.
  188. IF my_struct_name = 'MEREP_OUTTAB_PURCHDOC' or my_struct_name = 'MEREP_OUTTAB_PURCHDOC_REL' . "++ 2017-2-27
  189.  
  190. LOOP AT <outtab> INTO ls_outtab_purchdoc .
  191. CHECK ls_outtab_purchdoc-BSTYP = 'K'.
  192. * CHECK ls_outtab_purchdoc-LOEKZ = ''.
  193. lv_tabix = sy-tabix.
  194. refresh: LT_A016,LT_KONP.
  195.  
  196. SELECT * INTO TABLE LT_A016 FROM A016
  197. WHERE A016~KAPPL = 'M'
  198. AND A016~EVRTN = ls_outtab_purchdoc-ebeln
  199. AND A016~EVRTP = ls_outtab_purchdoc-ebelp.
  200.  
  201. IF SY-SUBRC = and LT_A016[] is NOT INITIAL.
  202. SELECT * INTO TABLE LT_KONP FROM KONP
  203. FOR ALL ENTRIES IN LT_A016
  204. WHERE KONP~KNUMH = LT_A016-KNUMH
  205. AND LOEVM_KO = ''.
  206. LOOP at LT_A016 INTO LW_A016.
  207. CLEAR:ls_outtab_purchdoc-DATBI01,
  208. ls_outtab_purchdoc-DATAB01,
  209. ls_outtab_purchdoc-ZKBETR01,
  210. ls_outtab_purchdoc-ZKBETR02,
  211. ls_outtab_purchdoc-ZKBETR03,
  212. ls_outtab_purchdoc-ZKBETR04,
  213. ls_outtab_purchdoc-ZKBETR05,
  214. ls_outtab_purchdoc-NETPR.
  215. ls_outtab_purchdoc-DATBI01 = LW_A016-DATBI.
  216. ls_outtab_purchdoc-DATAB01 = LW_A016-DATAB.
  217. LOOP AT LT_KONP INTO LW_KONP WHERE KNUMH = LW_A016-KNUMH.
  218. ls_outtab_purchdoc-NETPR = ls_outtab_purchdoc-NETPR
  219. + LW_KONP-KBETR.
  220. CASE LW_KONP-KSCHL.
  221. WHEN 'ZLGP' OR 'PB00'.
  222. ls_outtab_purchdoc-ZKBETR01 = LW_KONP-KBETR.
  223. WHEN 'ZMP2'.
  224. ls_outtab_purchdoc-ZKBETR02 = LW_KONP-KBETR.
  225. WHEN 'ZTP2'.
  226. ls_outtab_purchdoc-ZKBETR03 = LW_KONP-KBETR.
  227. WHEN 'ZPK2'.
  228. ls_outtab_purchdoc-ZKBETR04 = LW_KONP-KBETR.
  229. WHEN 'ZTS2'.
  230. ls_outtab_purchdoc-ZKBETR05 = LW_KONP-KBETR.
  231. WHEN OTHERS.
  232. ENDCASE.
  233.  
  234. ENDLOOP.
  235. APPEND ls_outtab_purchdoc to lt_outtab_purchdoc.
  236.  
  237. ENDLOOP.
  238. ENDIF.
  239. delete <outtab> INDEX lv_tabix.
  240. ENDLOOP.
  241.  
  242. SORT lt_outtab_purchdoc by EBELN EBELP DATBI01.
  243. APPEND LINES OF lt_outtab_purchdoc TO <outtab>.
  244. * REFRESH GT_OUTTAB_PURCHDOC_TMP.
  245. * APPEND LINES OF lt_outtab_purchdoc TO GT_OUTTAB_PURCHDOC_TMP.
  246.  
  247. * ELSEIF my_struct_name = 'MEREP_OUTTAB_PURCHDOC_REL'.
  248.  
  249. ** 合同审批的时候,处理
  250. * LOOP AT <outtab> INTO lw_outtab_purchdoc_rel.
  251. * CHECK lw_outtab_purchdoc_rel-BSTYP = 'K'.
  252. ** CHECK ls_outtab_purchdoc-LOEKZ = ''.
  253. * lv_tabix = sy-tabix.
  254. * REFRESH: LT_A016,LT_KONP.
  255. *
  256. ** IF ls_outtab_purchdoc-LOEKZ <> ''.
  257. ** delete <outtab> INDEX lv_tabix.
  258. ** CONTINUE.
  259. ** ENDIF.
  260. *
  261. * SELECT * INTO TABLE LT_A016 FROM A016
  262. * WHERE A016~KAPPL = 'M'
  263. * AND A016~EVRTN = lw_outtab_purchdoc_rel-ebeln
  264. * AND A016~EVRTP = lw_outtab_purchdoc_rel-ebelp
  265. * AND A016~DATBI >= SY-DATUM
  266. * AND A016~DATAB <= SY-DATUM."显示当前期间条件价格
  267. *
  268. * IF SY-SUBRC = 0 and LT_A016[] is NOT INITIAL.
  269. * SELECT * INTO TABLE LT_KONP FROM KONP
  270. * FOR ALL ENTRIES IN LT_A016
  271. * WHERE KONP~KNUMH = LT_A016-KNUMH
  272. * AND LOEVM_KO = ''.
  273. ** CLEAR <fs_outtab_purchdoc_rel>-NETPR.
  274. * LOOP at LT_A016 INTO LW_A016.
  275. * CLEAR:lw_outtab_purchdoc_rel-DATBI01,
  276. * lw_outtab_purchdoc_rel-DATAB01,
  277. * lw_outtab_purchdoc_rel-ZKBETR01,
  278. * lw_outtab_purchdoc_rel-ZKBETR02,
  279. * lw_outtab_purchdoc_rel-ZKBETR03,
  280. * lw_outtab_purchdoc_rel-ZKBETR04,
  281. * lw_outtab_purchdoc_rel-ZKBETR05,
  282. * lw_outtab_purchdoc_rel-NETPR.
  283. * lw_outtab_purchdoc_rel-DATBI01 = LW_A016-DATBI.
  284. * lw_outtab_purchdoc_rel-DATAB01 = LW_A016-DATAB.
  285. * LOOP AT LT_KONP INTO LW_KONP WHERE KNUMH = LW_A016-KNUMH.
  286. * lw_outtab_purchdoc_rel-NETPR = lw_outtab_purchdoc_rel-NETPR
  287. * + LW_KONP-KBETR.
  288. * CASE LW_KONP-KSCHL.
  289. * WHEN 'ZLGP' OR 'PB00'.
  290. * lw_outtab_purchdoc_rel-ZKBETR01 = LW_KONP-KBETR.
  291. * WHEN 'ZMP2'.
  292. * lw_outtab_purchdoc_rel-ZKBETR02 = LW_KONP-KBETR.
  293. * WHEN 'ZTP2'.
  294. * lw_outtab_purchdoc_rel-ZKBETR03 = LW_KONP-KBETR.
  295. * WHEN 'ZPK2'.
  296. * lw_outtab_purchdoc_rel-ZKBETR04 = LW_KONP-KBETR.
  297. * WHEN 'ZTS2'.
  298. * lw_outtab_purchdoc_rel-ZKBETR05 = LW_KONP-KBETR.
  299. * WHEN OTHERS.
  300. * ENDCASE.
  301. *
  302. * ENDLOOP.
  303. * APPEND lw_outtab_purchdoc_rel to lT_outtab_purchdoc_rel.
  304. *
  305. * ENDLOOP.
  306. * ELSE.
  307. * CLEAR lw_outtab_purchdoc_rel-NETPR.
  308. * ENDIF.
  309. ** delete <outtab> INDEX lv_tabix.
  310. * ENDLOOP.
  311. * <outtab> = lt_outtab_purchdoc_rel.
  312. ENDIF.
  313. *增加展示合同所有区间条件价格 at 20150901 by hp_gongzg
  314. ENDENHANCEMENT.
  315. *$*$-End: (1)---------------------------------------------------------------------------------$*$*
  316. ENDMETHOD. "if_reader_mm~read_table

采购合同的条件价格取值逻辑(如ME35K/ME3M显示报表的多个日期范围的条件价格)的更多相关文章

  1. 页面通过Jquery取值然后传值到后台显示underfined是怎么回事?

    页面通过Jquery取值然后传值到后台显示underfined是怎么回事? 一般情况下第一个如果用jQuery取值的,末尾要用val(),如果用$符号取值的,末尾要加上val. eg: busines ...

  2. 动态sql中的条件判断取值来源于map 或者 model

  3. jsp页面通过ajax取值/展示数据及分页显示

    jsp页面通过ajax从后台获取数据,在页面展示,并实现分页效果代码: [JavaScript部分代码] 1 <script> function getComposition(pageno ...

  4. 后端model传入前端JSP页面中的值判断后再取值

    所遇到的问题后端model传入前端JSP页面中的值通过foreach循环内要满足条件才能取值给Div中,我们知道jsp页面中可以直接用EL表达式取值,格式就是${"model中传来的数据&q ...

  5. 输入三个double型的数据,放入到a,b,c三个变量中去,使用条件结构与交换逻辑将这三个变量中的值从小到大排列。

    import java.util.Scanner; public class C8{ public static void main(String []args){ /* 8.输入三个double型的 ...

  6. sql-case when 条件1 then 取值1 when 条件2 then 取值2 else 取值3 end

    遇到 XXX情况 就 XXX 遇不到就 XXX 结束case when …… then …… else …… end 例如一个3条件取值的字段: case when 条件1 then 取值1 when ...

  7. switch条件变量的取值类型

    switch条件变量的取值类型主要有以下六种: 1)JDK1.5(不含JDK1.5)之前只能是byte.short.int.char类型,不能是float.double.long.boolean类型. ...

  8. mybatis if else if 条件判断SQL片段表达式取值和拼接

    前言 最近在开发项目的时候涉及到复杂的动态条件查询,但是mybaits本身不支持if elseif类似的判断但是我们可以间接通过 chose when otherwise 去实现其中choose为一个 ...

  9. Java基础:8种基本数据类型,取值范围和储存字节说明。

    Java中,一共有8种基本数据类型: 4种整数型:int,short,long,byte. 2种浮点型:float,double. 1种字符类型:char. 1种表示真值的类型:boolean. [S ...

随机推荐

  1. Uep的静态下拉和动态下拉建立

    uep的静态下拉和动态下拉的建立极其省事,下面介绍静态下拉的建立 静态下拉 第一步:点击增加,输入信息 第二步: 第三步:保存 第四部: 静态下拉就建立完毕了 下面介绍动态下啦建立,动态下拉更简单 动 ...

  2. 浏览器端-W3School-HTML:HTML DOM Anchor 对象

    ylbtech-浏览器端-W3School-HTML:HTML DOM Anchor 对象 1.返回顶部 1. HTML DOM Anchor 对象 Anchor 对象 Anchor 对象表示 HTM ...

  3. python接口测试之mock(三)

    前面介绍了moco的详细的使用,它主要是基于moco-runner-0.11.0-standalone.jar,通过编写json的文件来实现,mock翻译过来就是模拟的意思,也就是说,它是将测试对象所 ...

  4. LoadRunner参数化使用mysql数据源

    因为默认是没有mysql驱动的,因此需要在网上下载一个mysql驱动 1. 在网上下载一个是MYSQL数据库的ODBC驱动程序:mysql-connector-odbc-3.51.20-win32.e ...

  5. 创建策略(Creation Policy )和生命周期(Life Cycle)

    前言 在前面的介绍中我们已经知道:导入和导出的匹配成功需要ContractType,ContractName,Metadata都匹配,这里我们还要介绍一个新的东西:创建策略(creation poli ...

  6. Python基本语法_运算符详解

    目录 目录 前言 软件环境 身份运算符 算术运算符 比较运算符 位移运算符 自变运算符 位运算符 逻辑运算符 成员关系运算符 Python真值表 最后 前言 在前面的博文介绍了Python的数据结构之 ...

  7. 三十六:数据库之SQLAlchemy外建之一对一关系

    relationship()的uselist参数默认为True,即一对多,如果要一对一,则需让uselist=False 准备工作 from sqlalchemy import create_engi ...

  8. 【汇总】Windows linux 敏感目录 路径汇总

    日期:2019-08-02 10:53:52 更新:2019-08-19 15:48:01 作者:Bay0net 介绍:中间件.套件等等敏感信息,做个记录. 0x01. 基本信息 遇到文件包含.任意文 ...

  9. 汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

    实验一 查看CPU和内存,用机器指令和汇编指令编程   实验目的 了解什么是Debug,以及Debug中需要用的一些功能 R:查看.改变CPU寄存器的内容 D:查看内存中的内容 E:改写内存中的内容 ...

  10. lua基础学习(六)

    一.lua协同程序coroutine 1.什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共 ...