ICYMI: Huawei, a leading global ICT solutions provider, received two prestigious awards, “Delivering Excellence in Customer Experience” and “Best Innovation in Broadcast – Broadband Convergence” at the just wrapped up AfricaCom 2017 in Cape Town, South Africa. http://bit.ly/2jDJ9GH #Huawei #BigData #AI
Ride Hard Breathe Easy Concludes in San Francisco
On Saturday, October 14, I completed my bike ride from Newtown Square to the Golden Gate Bridge. Family and friends were there to greet me, and this amazing journey was complete!
I officially began Ride Hard Breathe Easy on August 24, but the idea of doing something for all lung cancer patients started in December of 2011. Mom was dying of lung cancer, and our family knew she only had one or two more weeks with us. I promised Mom I would do something in her honor, and for all lung cancer patents, and that something would become this bike ride.
Mom was always amazing, loving and caring for her husband of 51 years, their six “wonderful kids” (her words) and their 19 grandchildren every minute of every day. She asked her kids to be pallbearers, gave her jewelry to her daughters and grandchildren, and joked with Dad about “his next wife.” Even while dying, Mom continued to be selfless, kept her sense of humor, and Mom was doing what she could to ease our pain. That simply was Mom – always loving, always caring and always protecting.
Our family had learned the facts about lung cancer and we committed to honoring Mom and helping all lung cancer patients. Lung cancer is the No. 1 cancer killer in the world, and in the United States it is the top killer of men and women in every state. Even worse, the five-year survival rate of lung cancer patients is 19%. So, we started “Kathleen’s Krew” and have raised over $85,000 since 2011 for the Bonnie J. Addario Lung Cancer Foundation.
But I yearned to do something bigger for Mom and after doing a 67-mile charity bike ride in 2016, I decided I could do a much longer ride. And this ride would focus on raising money and awareness for lung cancer.
For me to complete this ride, I knew I needed plenty of help. Mom had a saying that “many hands make light work.” Indeed, many hands were helped from the very beginning and throughout the entire ride. Over 30 SAP colleagues and former SAP colleagues were part of a team of 100 people that planned every element of the ride, including the route, the bike, the videos, and much more. There was also a dedicated SAP team that built a site that tracked my progress, biking statistics, and connected to the daily blog and Twitter (@ride4lungs).
There were more than 150 people at the SAP office in Newtown Square for the start of the ride, and three SAP colleagues joined me for the initial day of riding. Ride Hard Breathe Easy officially started, and over the more than seven weeks it took, we would cover 3,553 miles, climb over 136,000 feet, and pedal over 1.1 million times. There were some very tough times going up hills in Pennsylvania, Missouri, Colorado, Utah, and Nevada, and yet I can honestly say that every day was great.
Different drivers came in for three to six days to ride the van, support me, and to simply care for me as I made the way west. Many hands do indeed make light work and we had loads of fun. We saw amazing scenery — especially in Colorado, Utah and California — and shared laughs every single day. I thought of Mom and Dad daily, felt their presence and magic, and I am convinced they made sure the weather cooperated since I rode my bike for over 252 hours, and we had less than six hours of rain.
We also experienced kindness in every state, from people donating to the cause, a bike shop doing a tune-up of the bike for free, and total strangers cheering me when they heard about the ride. Everyone we met was impacted by cancer, many of them by lung cancer, and they were very grateful for what we were doing.
Growing up, Mom and Dad stressed the importance of family, and the toughest part of these 52 days was being away from my wife, my son, and everyone in the family. Our family is very close, and they frequently sent texts, cards, and even cookies. Now I am excited to be home, to spend time with family and friends, and I am deeply proud that we made a difference for lung cancer patients.
I am very grateful to SAP for giving me a chance to make the world a better place, and I ask that you consider being a part of Ride Hard Breathe Easy by donating at www.rhbe.org. My family, friends, and I took care of the costs for the ride, so the money raised goes to two established organizations — Bonnie J. Addario Lung Cancer Foundation and Lung Cancer Alliance — so they can help patients and their families, research this disease and work to erase the stigma associated with lung cancer.
Thank you, SAP! And now, it’s time for me to get back to work. http://bit.ly/2jFLQHK #SAP #SAPCloud #AI
ABAP FM Create Material Price Condition With Reference to Another Material (RV_CONDITION_COPY)
Sometimes you may need to copy (create) price conditions from one material to another. Below you can find the Function Module doing this. The FM takes the reference material price condition and create a new condition for the new material.
Import Parameters:
P_MATCFG
TYPE
MARA-MATNR
Reference Material
F_MATNR
TYPE
MARA-MATNR
The Material to Create Condition
P_WERKS
TYPE
WERKS-WERKS
Plant
P_KSCHL
TYPE
T685-KSCHL
Condition Type
P_PLTYP
TYPE
T189-PLTYP
Price List
We will be using
* PR00 and PR01 as KSCHL (Condition Type)
* A699 (Condition Table for Pricing A699) table
* A650 (Condition Table for Pricing A650) table
I create other FM’s to get the reference material price and dates. I also included this FM’s below.
Here is the source code:
ZMA_F_CREATE_PRICE_COND_WR function ZMA_F_CREATE_PRICE_COND_WR. *“———————————————————————- *”*“Local Interface: *” IMPORTING *“ REFERENCE(P_MATCFG) TYPE MARA-MATNR *” REFERENCE(F_MATNR) TYPE MARA-MATNR *“ REFERENCE(P_WERKS) TYPE WERKS-WERKS *” REFERENCE(P_KSCHL) TYPE T685-KSCHL *“ REFERENCE(P_PLTYP) TYPE T189-PLTYP *”———————————————————————- data: cr like table of komv with header line, “ copy_records nr, key_fields like table of komg with header line, wa_komk like komk, komk like table of komk, wa_komp like komp, komp like table of komp, lv_datab like sy-datum, lv_datbi like sy-datum. cr-mandt = sy-mandt. cr-kappl = ‘V’. cr-kschl = p_kschl. data: lv_price type konp-kbetr. if p_kschl = ‘PR00’. clear: lv_price. call function ‘ZMA_F_GET_PRICE_BYMATNR’ exporting i_kappl = ‘V’ i_kschl = p_kschl i_pltyp = p_pltyp i_matnr = p_matcfg i_date = sy-datum importing e_kbetr = lv_price. elseif p_kschl = ‘PR01’. clear: lv_price. ” Is PR01 condition exist for this material? if p_pltyp = ’01’. “ Does not exist call function ‘ZMA_F_GET_PRICE_BYMATNR_PR01’ exporting i_kappl = ‘V’ i_kschl = p_kschl i_matnr = p_matcfg i_date = sy-datum importing e_kbetr = lv_price. else. exit. endif. endif. check lv_price > 0. if p_kschl = ‘PR00’. call function ‘ZMA_F_GET_PRICE_BYMATNR_DATES’ exporting i_kappl = cr-kappl i_kschl = cr-kschl i_pltyp = p_pltyp i_matnr = p_matcfg i_date = sy-datum importing e_kbetr = cr-kbetr e_konwa = cr-waers e_datab = lv_datab e_datbi = lv_datbi. elseif p_kschl = ‘PR01’. call function ‘ZMA_F_GET_PRICE_BYMATNR_DATES2’ exporting i_kappl = cr-kappl i_kschl = cr-kschl i_pltyp = p_pltyp i_matnr = p_matcfg i_date = sy-datum importing e_kbetr = cr-kbetr e_konwa = cr-waers e_datab = lv_datab e_datbi = lv_datbi. endif. cr-kpein = ‘1’. cr-kmein = ‘ST’. key_fields-mandt = sy-mandt. key_fields-werks = p_werks. key_fields-matnr = f_matnr. key_fields-pltyp = p_pltyp. key_fields-pltyp_d = p_pltyp. append cr. data wa_pispr like table of pispr with header line. wa_pispr-matnr = p_matcfg. wa_pispr-werks = p_werks. wa_pispr-waerk = cr-waers. append wa_pispr. call function ‘SPR_KOMK_KOMP_FILL’ exporting pi_i_spr = wa_pispr importing pe_i_komk = wa_komk pe_i_komp = wa_komp. wa_komk-mandt = sy-mandt. wa_komk-pltyp = p_pltyp. wa_komp-matnr = f_matnr. wa_komp-pmatn = f_matnr. wa_komp-pltyp_p = p_pltyp. select single mtart from mara into wa_komp-mtart where matnr = f_matnr. data: condition_table like t681-kotabnr. if p_kschl = ‘PR00’. condition_table = ‘699’. elseif p_kschl = ‘PR01’. condition_table = ‘650’. endif. call function ‘RV_CONDITION_COPY’ exporting application = ‘V’ condition_table = condition_table condition_type = p_kschl date_from = lv_datab date_to = lv_datbi * enqueue = ‘X’ i_komk = wa_komk i_komp = wa_komp key_fields = key_fields maintain_mode = ‘A’ no_authority_check = ‘X’ keep_old_records = ‘X’ overlap_confirmed = ‘X’ importing e_komk = wa_komk e_komp = wa_komp new_record = nr tables copy_records = cr exceptions enqueue_on_record = 01 invalid_application = 02 invalid_condition_number = 03 invalid_condition_type = 04 no_authority_ekorg = 05 no_authority_kschl = 06 no_authority_vkorg = 07 no_selection = 08 table_not_valid = 09. call function ‘RV_CONDITION_SAVE’. commit work. call function ‘RV_CONDITION_RESET’. endfunction.
ZMA_F_GET_PRICE_BYMATNR
Import Parameters:
I_KAPPL
TYPE
KONH-KAPPL
Application
I_KSCHL
TYPE
KONH-KSCHL
Condition type
I_PLTYP
TYPE
A699-PLTYP
Price list type
I_MATNR
TYPE
MARA-MATNR
Material Number
I_DATE
TYPE
KONH-DATAB
Valid-From Date
Export Parameters:
E_KBETR
TYPE
KONP-KBETR
Rate (condition amount or percentage) where no scale exists
E_KONWA
TYPE
KONP-KONWA
Rate unit (currency or percentage)
Source Code: FUNCTION ZMA_F_GET_PRICE_BYMATNR. *”———————————————————————- *“*"Local Interface: *” IMPORTING *“ REFERENCE(I_KAPPL) TYPE KONH-KAPPL *” REFERENCE(I_KSCHL) TYPE KONH-KSCHL *“ REFERENCE(I_PLTYP) TYPE A699-PLTYP *” REFERENCE(I_MATNR) TYPE MARA-MATNR *“ REFERENCE(I_DATE) TYPE KONH-DATAB *” EXPORTING *“ REFERENCE(E_KBETR) TYPE KONP-KBETR *” REFERENCE(E_KONWA) TYPE KONP-KONWA *“———————————————————————- TYPES: BEGIN OF ty_itab, knumh LIKE konp-knumh, kappl LIKE konp-kappl, END OF ty_itab. DATA: st_itab TYPE ty_itab. TYPES: BEGIN OF ty_itab_konp, kbetr LIKE konp-kbetr, konwa LIKE konp-konwa, END OF ty_itab_konp. DATA: st_itab_konp TYPE ty_itab_konp. TYPES: tt_itab TYPE STANDARD TABLE OF ty_itab. DATA: itab TYPE tt_itab. SELECT SINGLE a~knumh a~kappl FROM A699 AS a INTO st_itab WHERE a~kappl = I_KAPPL AND a~kschl = I_KSCHL AND a~pltyp = I_PLTYP AND a~matnr = I_MATNR AND a~datab = I_DATE. SELECT SINGLE p~kbetr p~konwa FROM konp AS p INTO st_itab_konp WHERE p~knumh = st_itab-knumh AND p~kappl = st_itab-kappl. IF sy-subrc = 0. e_kbetr = st_itab_konp-kbetr. e_konwa = st_itab_konp-konwa. ENDIF. ENDFUNCTION.
ZMA_F_GET_PRICE_BYMATNR_PR01
Import Parameters:
I_KAPPL
TYPE
KONH-KAPPL
Application
I_KSCHL
TYPE
KONH-KSCHL
Condition type
I_MATNR
TYPE
MARA-MATNR
Material Number
I_DATE
TYPE
KONH-DATAB
Valid-From Date
Export Parameters:
E_KBETR
TYPE
KONP-KBETR
Rate (condition amount or percentage) where no scale exists
E_KONWA
TYPE
KONP-KONWA
Rate unit (currency or percentage)
FUNCTION ZMA_F_GET_PRICE_BYMATNR_PR01. *”———————————————————————- *“*"Local Interface: *” IMPORTING *“ REFERENCE(I_KAPPL) TYPE KONH-KAPPL *” REFERENCE(I_KSCHL) TYPE KONH-KSCHL *“ REFERENCE(I_MATNR) TYPE MARA-MATNR *” REFERENCE(I_DATE) TYPE KONH-DATAB *“ EXPORTING *” REFERENCE(E_KBETR) TYPE KONP-KBETR *“ REFERENCE(E_KONWA) TYPE KONP-KONWA *”———————————————————————- TYPES: BEGIN OF ty_itab, knumh LIKE konp-knumh, kappl LIKE konp-kappl, END OF ty_itab. DATA: st_itab TYPE ty_itab. TYPES: BEGIN OF ty_itab_konp, kbetr LIKE konp-kbetr, konwa LIKE konp-konwa, END OF ty_itab_konp. DATA: st_itab_konp TYPE ty_itab_konp. TYPES: tt_itab TYPE STANDARD TABLE OF ty_itab. DATA: itab TYPE tt_itab. SELECT SINGLE a~knumh a~kappl FROM A650 AS a INTO st_itab WHERE a~kappl = I_KAPPL AND a~kschl = I_KSCHL AND a~matnr = I_MATNR AND a~datab = I_DATE. SELECT SINGLE p~kbetr p~konwa FROM konp AS p INTO st_itab_konp WHERE p~knumh = st_itab-knumh AND p~kappl = st_itab-kappl. IF sy-subrc = 0. e_kbetr = st_itab_konp-kbetr. e_konwa = st_itab_konp-konwa. ENDIF. ENDFUNCTION.
ZMA_F_GET_PRICE_BYMATNR_DATES
Import Parameters:
I_KAPPL
TYPE
KONH-KAPPL
Application
I_KSCHL
TYPE
KONH-KSCHL
Condition type
I_PLTYP
TYPE
A699-PLTYP
Price list type
I_MATNR
TYPE
MARA-MATNR
Material Number
I_DATE
TYPE
KONH-DATAB
Valid-From Date
Export Parameters:
E_KBETR
TYPE
KONP-KBETR
Rate (condition amount or percentage) where no scale exists
E_KONWA
TYPE
KONP-KONWA
Rate unit (currency or percentage)
E_DATAB
TYPE
SY-DATUM
Valid-From Date
E_DATBI
TYPE
SY-DATUM
Valid-To Date
FUNCTION zma_f_get_price_bymatnr_dates. *“———————————————————————- *”*“Local Interface: *” IMPORTING *“ REFERENCE(I_KAPPL) TYPE KONH-KAPPL *” REFERENCE(I_KSCHL) TYPE KONH-KSCHL *“ REFERENCE(I_PLTYP) TYPE A699-PLTYP *” REFERENCE(I_MATNR) TYPE MARA-MATNR *“ REFERENCE(I_DATE) TYPE KONH-DATAB *” EXPORTING *“ REFERENCE(E_KBETR) TYPE KONP-KBETR *” REFERENCE(E_KONWA) TYPE KONP-KONWA *“ REFERENCE(E_DATAB) TYPE SY-DATUM *” REFERENCE(E_DATBI) TYPE SY-DATUM *“———————————————————————- TYPES: BEGIN OF ty_itab, knumh LIKE konp-knumh, kappl LIKE konp-kappl, datab LIKE sy-datum, datbi LIKE sy-datum, END OF ty_itab. DATA: st_itab TYPE ty_itab. TYPES: BEGIN OF ty_itab_konp, kbetr LIKE konp-kbetr, konwa LIKE konp-konwa, END OF ty_itab_konp. DATA: st_itab_konp TYPE ty_itab_konp. TYPES: tt_itab TYPE STANDARD TABLE OF ty_itab. DATA: itab TYPE tt_itab. SELECT SINGLE a~knumh a~kappl a~datab a~datbi FROM a699 AS a INTO st_itab WHERE a~kappl = i_kappl AND a~kschl = i_kschl AND a~pltyp = i_pltyp AND a~matnr = i_matnr AND a~datab = i_date. SELECT SINGLE p~kbetr p~konwa FROM konp AS p INTO st_itab_konp WHERE p~knumh = st_itab-knumh AND p~kappl = st_itab-kappl. IF sy-subrc = 0. e_kbetr = st_itab_konp-kbetr. e_konwa = st_itab_konp-konwa. e_datab = st_itab-datab. e_datbi = st_itab-datbi. ENDIF. ENDFUNCTION.
ZMA_F_GET_PRICE_BYMATNR_DATES2
Import Parameters:
I_KAPPL
TYPE
KONH-KAPPL
Application
I_KSCHL
TYPE
KONH-KSCHL
Condition type
I_PLTYP
TYPE
A699-PLTYP
Price list type
I_MATNR
TYPE
MARA-MATNR
Material Number
I_DATE
TYPE
KONH-DATAB
Valid-From Date
Export Parameters:
E_KBETR
TYPE
KONP-KBETR
Rate (condition amount or percentage) where no scale exists
E_KONWA
TYPE
KONP-KONWA
Rate unit (currency or percentage)
E_DATAB
TYPE
SY-DATUM
Valid-From Date
E_DATBI
TYPE
SY-DATUM
Valid-To Date
FUNCTION ZMA_F_GET_PRICE_BYMATNR_DATES2. *”———————————————————————- *“*"Local Interface: *” IMPORTING *“ REFERENCE(I_KAPPL) TYPE KONH-KAPPL *” REFERENCE(I_KSCHL) TYPE KONH-KSCHL *“ REFERENCE(I_PLTYP) TYPE A699-PLTYP *” REFERENCE(I_MATNR) TYPE MARA-MATNR *“ REFERENCE(I_DATE) TYPE KONH-DATAB *” EXPORTING *“ REFERENCE(E_KBETR) TYPE KONP-KBETR *” REFERENCE(E_KONWA) TYPE KONP-KONWA *“ REFERENCE(E_DATAB) TYPE SY-DATUM *” REFERENCE(E_DATBI) TYPE SY-DATUM *“———————————————————————- TYPES: BEGIN OF ty_itab, knumh LIKE konp-knumh, kappl LIKE konp-kappl, datab LIKE sy-datum, datbi LIKE sy-datum, END OF ty_itab. DATA: st_itab TYPE ty_itab. TYPES: BEGIN OF ty_itab_konp, kbetr LIKE konp-kbetr, konwa LIKE konp-konwa, END OF ty_itab_konp. DATA: st_itab_konp TYPE ty_itab_konp. TYPES: tt_itab TYPE STANDARD TABLE OF ty_itab. DATA: itab TYPE tt_itab. SELECT SINGLE a~knumh a~kappl a~datab a~datbi FROM a650 AS a INTO st_itab WHERE a~kappl = i_kappl AND a~kschl = i_kschl "AND a~pltyp = i_pltyp AND a~matnr = i_matnr AND a~datab = i_date. SELECT SINGLE p~kbetr p~konwa FROM konp AS p INTO st_itab_konp WHERE p~knumh = st_itab-knumh AND p~kappl = st_itab-kappl. IF sy-subrc = 0. e_kbetr = st_itab_konp-kbetr. e_konwa = st_itab_konp-konwa. e_datab = st_itab-datab. e_datbi = st_itab-datbi. ENDIF. ENDFUNCTION.
I hope it can help you in your projects. If you have any questions or comments, please do not hesitate to write http://bit.ly/2jEq47u #SAP #SAPCloud #AI
SAP Community: Microservices on SAP Cloud Platform
The SAP Community team is also coming to SAP TechEd 2017 Bangalore to share some knowledge about its microservices architecture:
CPL219SAP
Community: Real-World Microservice Architectures on SAP Cloud Platform
The lecture presents the microservices architecture that consists of multiple individual applications of different size and technology. The architecture focuses on a separation of the functionality into independent applications. Therefore, the SAP Community Platform is a collaboration of many smaller applications. Even such complex scenarios as the SAP Community with thousands of users are supported by the SAP Cloud Platform.
Over the past few years, we have seen the benefits of this approach when it comes to constant grow, scalability and resilience. Let’s look at these benefits in more detail:
Constant grow
The SAP Community avoids large monoliths that grow constantly over time and get slower and harder to maintain when new features are added. Instead, we add new applications for major new features that do not naturally fit into existing applications. The new applications provide their own user interface or an HTTP API to connect it to the other applications. The SAP Cloud Platform helps us adding and managing new applications including persistence and security.
Scalability
The SAP Cloud Platform runs applications on compute units, which are virtualized hardware resources with certain central processing units, main memory, and disk space. Depending on the need of the application, we have chosen the appropriate configuration. If the need changes, the configuration can be easily changed. The number of processes can also be chosen depending on the application’s needs.
Resilience
The applications of the SAP Community Platform are independent deployment units. If one of the application fails, the fault is isolated in the failing application. If necessary, a bug fix could then be deployed without shutting down the whole SAP Community Platform. In fact, small issues in the past have been fixed almost unnoticed since only a part of the whole system was affected. There is one crucial component in the architecture to support resilience: the messaging system. The default integration is based on lightweight messaging since the messaging system decouples message producers and message consumers. If a message consumer is temporarily unavailable, the messages will be stored by the messaging system until all consumers received the data.
If you’re interested in the topics or simply want to meet one of the architects, check out the session or contact me directly. http://bit.ly/2jEgBgq #SAP #SAPCloud #AI